Ejemplo n.º 1
0
        /// <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);
                }
            }
        }
Ejemplo n.º 2
0
        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);
        }