public Item GetEquip(MsgItemPosition position) { Item found; Equipment.TryGetValue(position, out found); return(found); }
public void AddArmorProf(MsgItemPosition position, uint exp) { var item = GetEquip(position); if (item != null) { Prof prof; if (Profs.TryGetValue((int)(item.ItemId / 1000), out prof)) { prof.Experience += exp; } } }
public unsafe bool Unequip(MsgItemPosition position) { if (_owner.Inventory.Count == 40) { return(false); } if (TryRemove(position, out var item)) { _owner.Inventory.AddOrUpdate(item.UniqueId, item); (_owner as Player)?.ForceSend(new MsgItemInformation(item, MsgItemPosition.Inventory), (ushort)sizeof(MsgItemInformation)); ScreenSystem.Send(_owner, MsgSpawn.Create(_owner as Player)); EntityLogic.Recalculate(_owner); } return(true); }
public void AddDura(MsgItemPosition position) { if (!Items.TryGetValue(position, out var found)) { return; } if (found.CurrentDurability < found.MaximumDurability) { found.CurrentDurability += 1; } else { found.CurrentDurability = found.MaximumDurability; } var packet = new MsgItemInformation(found, MsgItemInfoAction.Update); (_owner as Player)?.ForceSend(packet, packet.Size); }
public void RemoveDura(MsgItemPosition position, bool arrows = false) { if (!arrows && !YiCore.Success(25)) { return; } if (!Items.TryGetValue(position, out var found)) { return; } if (found.CurrentDurability > 0) { found.CurrentDurability -= 1; } if (found.CurrentDurability < 10 && !arrows) { Message.SendTo(_owner, "Your " + Enum.GetName(typeof(MsgItemPosition), position) + " is about to break. (" + found.CurrentDurability + " uses left)", MsgTextType.Center); } var packet = new MsgItemInformation(found, MsgItemInfoAction.Update); (_owner as Player)?.ForceSend(packet, packet.Size); if (found.CurrentDurability == 0) { if (position == MsgItemPosition.RightWeapon) { Unequip(MsgItemPosition.LeftWeapon); (_owner as Player)?.ForceSend(MsgItem.Create(found.UniqueId, 0, (int)MsgItemPosition.LeftWeapon, MsgItemType.RemoveEquipment), 24); } Unequip(position); (_owner as Player)?.ForceSend(MsgItem.Create(found.UniqueId, 0, (int)position, MsgItemType.RemoveEquipment), 24); (_owner as Player)?.Inventory.RemoveItem(found); if (!arrows) { Message.SendTo(_owner, "Your " + Enum.GetName(typeof(MsgItemPosition), position) + " broke.", MsgTextType.Center); } } }
public MsgItemInformation(Item item, MsgItemInfoAction action = MsgItemInfoAction.AddItem, MsgItemPosition position = MsgItemPosition.Inventory) : this() { Size = (ushort)sizeof(MsgItemInformation); Id = 1008; UniqueId = item.UniqueId; ItemId = item.ItemId; CurrentDurability = item.CurrentDurability; MaxiumumDurability = item.MaximumDurability; Action = action; Ident = 0; Position = position; Gem1 = item.Gem1; Gem2 = item.Gem2; RebornEffect = item.RebornEffect; Magic2 = 0; Bless = item.Bless; Plus = item.Plus; Enchant = item.Enchant; Restrain = item.CustomTextId; }
public MsgItemInfoEx(Product product, MsgItemPosition position = MsgItemPosition.Inventory, ItemExType type = ItemExType.None) : this() { Size = (ushort)sizeof(MsgItemInfoEx); Id = 1108; OwnerUID = product.Owner; UniqueId = product.Item.UniqueId; ItemId = product.Item.ItemId; Price = product.Price; CurrentDurability = product.Item.CurrentDurability; MaxiumumDurability = product.Item.MaximumDurability; ItemExType = type; Position = position; Gem1 = product.Item.Gem1; Gem2 = product.Item.Gem2; RebornEffect = product.Item.RebornEffect; Plus = product.Item.Plus; Bless = product.Item.Bless; Enchant = product.Item.Enchant; Restrain = product.Item.CustomTextId; }
public unsafe bool Equip(Item item, MsgItemPosition position) { if (!_owner.Inventory.TryRemove(item.UniqueId, out item)) { return(false); } if (item.ItemId / 10000 == 105) { position = MsgItemPosition.LeftWeapon; } (_owner as Player)?.Send(MsgItem.Create(item.UniqueId, 0, 0, MsgItemType.RemoveInventory)); if (Unequip(position)) { (_owner as Player)?.ForceSend(new MsgItemInformation(item, position), (ushort)sizeof(MsgItemInformation)); AddOrUpdate(position, item); ScreenSystem.Send(_owner, MsgSpawn.Create(_owner as Player)); EntityLogic.Recalculate(_owner); } return(true); }
public void RemoveDura(MsgItemPosition boots) { }
public bool TryRemove(MsgItemPosition position, out Item item) => Items.TryRemove(position, out item);
public void AddOrUpdate(MsgItemPosition position, Item item) => Items.AddOrUpdate(position, item);
public bool TryGetValue(MsgItemPosition position, out Item found) => Items.TryGetValue(position, out found);