public async Task ModifyInventory(Action <ModifyInventoryContext> action = null, bool exclRequest = false) { var context = new ModifyInventoryContext(Character); var equipped = Character.GetInventory(ItemInventoryType.Equip).Items .Where(i => i.Position < 0) .Select(i => i.TemplateID) .ToList(); action?.Invoke(context); using (var p = new Packet(SendPacketOperations.InventoryOperation)) { p.Encode <bool>(exclRequest); context.Encode(p); p.Encode <bool>(false); await SendPacket(p); } var newEquippedItems = Character.GetInventory(ItemInventoryType.Equip).Items .Where(i => i.Position < 0) .ToList(); var newEquipped = newEquippedItems .Select(i => i.TemplateID) .ToList(); if (equipped.Except(newEquipped).Any() || newEquipped.Except(equipped).Any()) { ValidateStat(); AvatarModified(); } }
public Task ModifyInventory(Action <ModifyInventoryContext> action = null, bool exclRequest = false) { var context = new ModifyInventoryContext(Character); var equipped = Character.GetInventory(ItemInventoryType.Equip).Items .Where(i => i.Position < 0) .Select(i => i.TemplateID) .ToList(); action?.Invoke(context); using (var p = new OutPacket(GameSendOperations.InventoryOperation)) { p.Encode <bool>(exclRequest); context.Encode(p); p.Encode <bool>(false); SendPacket(p); } var newEquipped = Character.GetInventory(ItemInventoryType.Equip).Items .Where(i => i.Position < 0) .Select(i => i.TemplateID) .ToList(); if (equipped.Except(newEquipped).Any() || newEquipped.Except(equipped).Any()) { ValidateStat(); using (var p = new OutPacket(GameSendOperations.UserAvatarModified)) { p.Encode <int>(ID); p.Encode <byte>(0x1); // Flag Character.EncodeLook(p); p.Encode <bool>(false); // bCouple p.Encode <bool>(false); // bFriendship p.Encode <bool>(false); // Marriage p.Encode <int>(CompletedSetItemID ?? 0); Field.BroadcastPacket(this, p); } } return(Task.CompletedTask); }