public async Task ModifyStats(Action <IModifyStatContext> action = null, bool exclRequest = false) { var context = new ModifyStatContext(Character); action?.Invoke(context); await UpdateStats(); if (!IsInstantiated) { return; } var statPacket = new UnstructuredOutgoingPacket(PacketSendOperations.StatChanged); statPacket.WriteBool(exclRequest); statPacket.Write(context); statPacket.WriteBool(false); statPacket.WriteBool(false); await Dispatch(statPacket); if (Party != null && (context.Flag.HasFlag(ModifyStatType.Job) || context.Flag.HasFlag(ModifyStatType.Level))) { _ = GameStage.PartyService.UpdateChangeLevelOrJob(new PartyUpdateChangeLevelOrJobRequest { Character = ID, Level = context.Level, Job = context.Job }); } }
public async Task ModifyStats(Action <ModifyStatContext> action = null, bool exclRequest = false) { var context = new ModifyStatContext(Character); action?.Invoke(context); ValidateStat(); if (!Socket.IsInstantiated) { return; } if (context.Flag.HasFlag(ModifyStatType.Skin) || context.Flag.HasFlag(ModifyStatType.Face) || context.Flag.HasFlag(ModifyStatType.Hair)) { AvatarModified(); } using (var p = new Packet(SendPacketOperations.StatChanged)) { p.Encode <bool>(exclRequest); context.Encode(p); p.Encode <bool>(false); p.Encode <bool>(false); await SendPacket(p); } }
public Task ModifyStats(Action <ModifyStatContext> action = null, bool exclRequest = false) { var context = new ModifyStatContext(Character); action?.Invoke(context); ValidateStat(); if (!Socket.IsInstantiated) { return(Task.CompletedTask); } using (var p = new OutPacket(GameSendOperations.StatChanged)) { p.Encode <bool>(exclRequest); context.Encode(p); p.Encode <bool>(false); p.Encode <bool>(false); return(SendPacket(p)); } }