public static void InteractItem(PlayerSocket socket, Packet packet)
        {
            byte    interactionType = packet.ReadByte();
            IMobile player          = socket.Mobile;

            switch (interactionType)
            {
            case 0x42:    //Drop Item
                byte dropInvID = packet.ReadByte();
                player.DropItem(dropInvID);
                break;

            case 0x43:    //Use Inventory Item from location
                byte useInvID = packet.ReadByte();
                player.UseItem(useInvID);
                break;

            case 0x44:    //Unequip Item
                byte equipSlotID = packet.ReadByte();
                player.UnequipItem(equipSlotID);
                break;

            case 0x45:    //Drop Item x Amount
                byte dropInvID2      = (byte)packet.ReadByte();
                int  largeDropAmount = (byte)packet.ReadByte();

                int dropInvIDAmount = packet.ReadInt16();
                dropInvIDAmount += largeDropAmount * 32768;
                player.DropItem(dropInvID2, dropInvIDAmount);
                break;

            case 0x59:    //move Item
                byte equipFromSlotID = (byte)packet.ReadByte();
                byte equipToSlotID   = (byte)packet.ReadByte();
                player.MoveItem(equipFromSlotID, equipToSlotID);
                break;

            case 0x5A:    //Pickup Item from ground
                int x = packet.ReadInt16();
                int y = packet.ReadInt16();
                player.PickupItem(new Point3D(x, y, socket.Mobile.Z));
                break;

            default:    //Unhandled
                Console.WriteLine("Client: {0}: Unhandled packet 0x{1:X2}", socket, interactionType);
                break;
            }
        }