/// <summary> /// Use an item from the player's inventory. /// </summary> /// <param name="player"></param> /// <param name="e"></param> private void ProcessUseItem(IPlayerEntity player, InventoryUseItemEventArgs e) { Item inventoryItem = player.Inventory.GetItem(e.UniqueItemId); if (inventoryItem == null) { this.Logger.LogWarning($"Cannot find item with unique Id: {e.UniqueItemId}"); return; } if (e.Part >= MaxHumanParts) { this.Logger.LogWarning($"Parts cannot be grather than {MaxHumanParts}."); return; } if (e.Part != -1) { if (!player.Battle.IsFighting) { this.EquipItem(player, inventoryItem); } } else { if (inventoryItem.Data.IsUseable && inventoryItem.Quantity > 0) { this._itemUsage.UseItem(player, inventoryItem); } } }
public static void OnUseItem(WorldClient client, INetPacketStream packet) { var useItemPacket = new DoUseItemPacket(packet); var inventoryEvent = new InventoryUseItemEventArgs(useItemPacket.UniqueItemId, useItemPacket.Part); client.Player.NotifySystem <InventorySystem>(inventoryEvent); }