Index: C:/dev/workspace/L2_GameServer_CT1/src/main/java/net/sf/l2j/gameserver/network/clientpackets/UseItem.java =================================================================== --- C:/dev/workspace/L2_GameServer_CT1/src/main/java/net/sf/l2j/gameserver/network/clientpackets/UseItem.java (revision 2671) +++ C:/dev/workspace/L2_GameServer_CT1/src/main/java/net/sf/l2j/gameserver/network/clientpackets/UseItem.java (working copy) @@ -262,6 +262,14 @@ L2ItemInstance ae = activeChar.getInventory().getPaperdollItemByL2ItemId(bodyPart); if(ae != null) { + //Find Arrows if arrows are equipped in LHand: + if (activeChar.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LHAND) == + activeChar.getInventory().findArrowForBow(ae.getItem())) + { + //Remove arrows if they're equipped: + activeChar.getInventory().unEquipItemInBodySlotAndRecord(Inventory.PAPERDOLL_LHAND); + activeChar.getInventory().setPaperdollItem(Inventory.PAPERDOLL_LHAND, null); + } activeChar.getInventory().unEquipItemInBodySlotAndRecord(bodyPart); activeChar.checkSSMatch(item, ae); if (ae.getEnchantLevel() > 0) @@ -292,21 +300,28 @@ { if(item.isWear()) return; + + if (bodyPart == L2Item.SLOT_L_EAR || bodyPart == L2Item.SLOT_LR_EAR || + bodyPart == L2Item.SLOT_L_FINGER || bodyPart == L2Item.SLOT_LR_FINGER) + activeChar.getInventory().setPaperdollItem(item.getEquipSlot(), null); + activeChar.getInventory().unEquipItemInBodySlotAndRecord(bodyPart); if (item.getEnchantLevel() > 0) { - sm = new SystemMessage(SystemMessageId.S1_S2_EQUIPPED); + sm = new SystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED); sm.addNumber(item.getEnchantLevel()); sm.addItemName(item); } else { - sm = new SystemMessage(SystemMessageId.S1_EQUIPPED); + sm = new SystemMessage(SystemMessageId.S1_DISARMED); sm.addItemName(item); } if(item.isAugmented()) item.getAugmentation().removeBoni(activeChar); + + activeChar.sendPacket(sm); } item.decreaseMana(false);