Index: /java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java =================================================================== --- /java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java (revisione 1599) +++ /java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java (copia locale) @@ -120,7 +120,7 @@ return; } - int chance = blessedScroll ? 75 : Config.ENCHANT_CHANCE;; + int chance = Config.ENCHANT_CHANCE;; if (item.getEnchantLevel() < 3 || (item.getItem().getBodyPart() == L2Item.SLOT_FULL_ARMOR && item.getEnchantLevel() < 4)) chance = 100; @@ -168,53 +168,61 @@ sm.addItemName(item.getItemId()); activeChar.sendPacket(sm); - L2ItemInstance[] unequiped = activeChar.getInventory().unEquipItemInSlotAndRecord(item.getEquipSlot()); - if (item.isEquipped()) - { + if (!blessedScroll){ + L2ItemInstance[] unequiped = activeChar.getInventory().unEquipItemInSlotAndRecord(item.getEquipSlot()); + if (item.isEquipped()) + { + InventoryUpdate iu = new InventoryUpdate(); + for (int i = 0; i < unequiped.length; i++) + { + iu.addModifiedItem(unequiped[i]); + } + activeChar.sendPacket(iu); + + activeChar.broadcastUserInfo(); + } + + L2ItemInstance destroyItem = activeChar.getInventory().destroyItem("Enchant", item, activeChar, null); + InventoryUpdate iu = new InventoryUpdate(); - for (int i = 0; i < unequiped.length; i++) - { - iu.addModifiedItem(unequiped[i]); - } - activeChar.sendPacket(iu); + if (destroyItem.getCount() == 0) + { + iu.addRemovedItem(destroyItem); + } + else + { + iu.addModifiedItem(destroyItem); + } + activeChar.sendPacket(iu); + + // Add 10% to crystal count for each enchant level (starting at 67% for enchant lvl 3) + int count = item.getItem().getCrystalCount() * (37 + 10*item.getEnchantLevel()) / 100; + if (count < 1) count = 1; + + L2ItemInstance crystals = activeChar.getInventory().addItem("Enchant", crystalId, count, activeChar, destroyItem); + SystemMessage sm2 = new SystemMessage(SystemMessage.EARNED_S2_S1_s); + sm2.addItemName(crystals.getItemId()); + sm2.addNumber(count); + activeChar.sendPacket(sm2); - activeChar.broadcastUserInfo(); - } + ItemList il = new ItemList(activeChar, true); + sendPacket(il); - L2ItemInstance destroyItem = activeChar.getInventory().destroyItem("Enchant", item, activeChar, null); + StatusUpdate su = new StatusUpdate(activeChar.getObjectId()); + su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad()); + activeChar.sendPacket(su); - InventoryUpdate iu = new InventoryUpdate(); - if (destroyItem.getCount() == 0) - { - iu.addRemovedItem(destroyItem); + activeChar.broadcastUserInfo(); + + L2World world = L2World.getInstance(); + world.removeObject(destroyItem); } else { - iu.addModifiedItem(destroyItem); + activeChar.sendMessage("Enchant failed. Enchant level resetted to 0."); + item.setEnchantLevel(0); + item.updateDatabase(); } - activeChar.sendPacket(iu); - - // Add 10% to crystal count for each enchant level (starting at 67% for enchant lvl 3) - int count = item.getItem().getCrystalCount() * (37 + 10*item.getEnchantLevel()) / 100; - if (count < 1) count = 1; - - L2ItemInstance crystals = activeChar.getInventory().addItem("Enchant", crystalId, count, activeChar, destroyItem); - SystemMessage sm2 = new SystemMessage(SystemMessage.EARNED_S2_S1_s); - sm2.addItemName(crystals.getItemId()); - sm2.addNumber(count); - activeChar.sendPacket(sm2); - - ItemList il = new ItemList(activeChar, true); - sendPacket(il); - - StatusUpdate su = new StatusUpdate(activeChar.getObjectId()); - su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad()); - activeChar.sendPacket(su); - - activeChar.broadcastUserInfo(); - - L2World world = L2World.getInstance(); - world.removeObject(destroyItem); } StatusUpdate su = new StatusUpdate(activeChar.getObjectId()); su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());