Index: java/net/sf/l2j/gameserver/handler/itemhandlers/EnchantScrolls.java =================================================================== --- java/net/sf/l2j/gameserver/handler/itemhandlers/EnchantScrolls.java (revisione 1603) +++ java/net/sf/l2j/gameserver/handler/itemhandlers/EnchantScrolls.java (copia locale) @@ -10,11 +10,11 @@ public class EnchantScrolls implements IItemHandler { private static int[] _itemIds = { - 729, 730, 731, 732, // a grade - 947, 948, 949, 950, // b grade - 951, 952, 953, 954, // c grade - 955, 956, 957, 958, // d grade - 959, 960, 961, 962 // s grade + 729, 730, 6569, 6570, // a grade + 947, 948, 6571, 6572, // b grade + 951, 952, 6573, 6574, // c grade + 955, 956, 6575, 6576, // d grade + 959, 960, 6577, 6578 // s grade }; public void useItem(L2PlayableInstance playable, L2ItemInstance item) Index: java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java =================================================================== --- java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java (revisione 1603) +++ java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java (copia locale) @@ -80,36 +80,36 @@ crystalId = 1461; if (scroll.getItemId() == 729 && item.getItem().getType2() == L2Item.TYPE2_WEAPON){ enchantItem = true; } else if (scroll.getItemId() == 730 && (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR || item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)){ enchantItem = true; } - else if (scroll.getItemId() == 731 && item.getItem().getType2() == L2Item.TYPE2_WEAPON){ blessedScroll = true; enchantItem = true; } - else if (scroll.getItemId() == 732 && (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR || item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)){ blessedScroll = true; enchantItem = true; } + else if (scroll.getItemId() == 6569 && item.getItem().getType2() == L2Item.TYPE2_WEAPON){ blessedScroll = true; enchantItem = true; } + else if (scroll.getItemId() == 6570 && (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR || item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)){ blessedScroll = true; enchantItem = true; } break; case L2Item.CRYSTAL_B: crystalId = 1460; if (scroll.getItemId() == 947 && item.getItem().getType2() == L2Item.TYPE2_WEAPON){ enchantItem = true; } else if (scroll.getItemId() == 948 && (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR || item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)){ enchantItem = true; } - else if (scroll.getItemId() == 949 && item.getItem().getType2() == L2Item.TYPE2_WEAPON){ blessedScroll = true; enchantItem = true; } - else if (scroll.getItemId() == 950 && (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR || item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)){ blessedScroll = true; enchantItem = true; } + else if (scroll.getItemId() == 6571 && item.getItem().getType2() == L2Item.TYPE2_WEAPON){ blessedScroll = true; enchantItem = true; } + else if (scroll.getItemId() == 6572 && (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR || item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)){ blessedScroll = true; enchantItem = true; } break; case L2Item.CRYSTAL_C: crystalId = 1459; if (scroll.getItemId() == 951 && item.getItem().getType2() == L2Item.TYPE2_WEAPON){ enchantItem = true; } else if (scroll.getItemId() == 952 && (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR || item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)){ enchantItem = true; } - else if (scroll.getItemId() == 953 && item.getItem().getType2() == L2Item.TYPE2_WEAPON){ blessedScroll = true; enchantItem = true; } - else if (scroll.getItemId() == 954 && (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR || item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)){ blessedScroll = true; enchantItem = true; } + else if (scroll.getItemId() == 6573 && item.getItem().getType2() == L2Item.TYPE2_WEAPON){ blessedScroll = true; enchantItem = true; } + else if (scroll.getItemId() == 6574 && (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR || item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)){ blessedScroll = true; enchantItem = true; } break; case L2Item.CRYSTAL_D: crystalId = 1458; if (scroll.getItemId() == 955 && item.getItem().getType2() == L2Item.TYPE2_WEAPON){ enchantItem = true; } else if (scroll.getItemId() == 956 && (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR || item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)){ enchantItem = true; } - else if (scroll.getItemId() == 957 && item.getItem().getType2() == L2Item.TYPE2_WEAPON){ blessedScroll = true; enchantItem = true; } - else if (scroll.getItemId() == 958 && (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR || item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)){ blessedScroll = true; enchantItem = true; } + else if (scroll.getItemId() == 6575 && item.getItem().getType2() == L2Item.TYPE2_WEAPON){ blessedScroll = true; enchantItem = true; } + else if (scroll.getItemId() == 6576 && (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR || item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)){ blessedScroll = true; enchantItem = true; } break; case L2Item.CRYSTAL_S: crystalId = 1462; if (scroll.getItemId() == 959 && item.getItem().getType2() == L2Item.TYPE2_WEAPON){ enchantItem = true; } else if (scroll.getItemId() == 960 && (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR || item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)){ enchantItem = true; } - else if (scroll.getItemId() == 961 && item.getItem().getType2() == L2Item.TYPE2_WEAPON){ blessedScroll = true; enchantItem = true; } - else if (scroll.getItemId() == 962 && (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR || item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)){ blessedScroll = true; enchantItem = true; } + else if (scroll.getItemId() == 6577 && item.getItem().getType2() == L2Item.TYPE2_WEAPON){ blessedScroll = true; enchantItem = true; } + else if (scroll.getItemId() == 6578 && (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR || item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)){ blessedScroll = true; enchantItem = true; } break; } @@ -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());