rendered paste bodyIndex: D:/Documents and Settings/Administrator/My Documents/workspace/L2_GameServer_Commit/java/config/Character.properties===================================================================--- D:/Documents and Settings/Administrator/My Documents/workspace/L2_GameServer_Commit/java/config/Character.properties (revision 1981)+++ D:/Documents and Settings/Administrator/My Documents/workspace/L2_GameServer_Commit/java/config/Character.properties (working copy)@@ -264,6 +264,10 @@ EnchantChanceArmor = 52 EnchantChanceJewelry = 54 +BlessedEnchantChanceWeapon = 68+BlessedEnchantChanceArmor = 52+BlessedEnchantChanceJewelry = 54+ # This is the enchant limit, if set to 0, there will be no limit. # If this is set to 10, the maximum enchant will be 10. # The limits are in the following order: Weapon, Armor, and Jewelry.Index: D:/Documents and Settings/Administrator/My Documents/workspace/L2_GameServer_Commit/java/net/sf/l2j/Config.java===================================================================--- D:/Documents and Settings/Administrator/My Documents/workspace/L2_GameServer_Commit/java/net/sf/l2j/Config.java (revision 1981)+++ D:/Documents and Settings/Administrator/My Documents/workspace/L2_GameServer_Commit/java/net/sf/l2j/Config.java (working copy)@@ -864,10 +864,15 @@ /** Type of set object */ public static ObjectSetType SET_TYPE; - /** Chance that an item will succesfully be enchanted */+ /** Chance that an item will successfully be enchanted */ public static int ENCHANT_CHANCE_WEAPON; public static int ENCHANT_CHANCE_ARMOR; public static int ENCHANT_CHANCE_JEWELRY;+ + public static int BLESSED_ENCHANT_CHANCE_WEAPON;+ public static int BLESSED_ENCHANT_CHANCE_ARMOR;+ public static int BLESSED_ENCHANT_CHANCE_JEWELRY;+ /** Maximum level of enchantment */ public static int ENCHANT_MAX_WEAPON; public static int ENCHANT_MAX_ARMOR;@@ -1166,6 +1171,9 @@ ENCHANT_CHANCE_WEAPON = Integer.parseInt(Character.getProperty("EnchantChanceWeapon", "68")); ENCHANT_CHANCE_ARMOR = Integer.parseInt(Character.getProperty("EnchantChanceArmor", "52")); ENCHANT_CHANCE_JEWELRY = Integer.parseInt(Character.getProperty("EnchantChanceJewelry", "54"));+ BLESSED_ENCHANT_CHANCE_WEAPON = Integer.parseInt(Character.getProperty("BlessedEnchantChanceWeapon", "68"));+ BLESSED_ENCHANT_CHANCE_ARMOR = Integer.parseInt(Character.getProperty("BlessedEnchantChanceArmor", "52"));+ BLESSED_ENCHANT_CHANCE_JEWELRY = Integer.parseInt(Character.getProperty("BlessedEnchantChanceJewelry", "54")); ENCHANT_MAX_WEAPON = Integer.parseInt(Character.getProperty("EnchantMaxWeapon", "255")); ENCHANT_MAX_ARMOR = Integer.parseInt(Character.getProperty("EnchantMaxArmor", "255")); ENCHANT_MAX_JEWELRY = Integer.parseInt(Character.getProperty("EnchantMaxJewelry", "255"));Index: D:/Documents and Settings/Administrator/My Documents/workspace/L2_GameServer_Commit/java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java===================================================================--- D:/Documents and Settings/Administrator/My Documents/workspace/L2_GameServer_Commit/java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java (revision 1981)+++ D:/Documents and Settings/Administrator/My Documents/workspace/L2_GameServer_Commit/java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java (working copy)@@ -35,351 +35,414 @@ public final class RequestEnchantItem extends L2GameClientPacket {- protected static final Logger _log = Logger.getLogger(Inventory.class.getName());- private static final String _C__58_REQUESTENCHANTITEM = "[C] 58 RequestEnchantItem";- private static final int[] CRYSTAL_SCROLLS = { 731, 732, 949, 950, 953, 954, 957, 958, 961, 962 };+ protected static final Logger _log = Logger.getLogger(Inventory.class.getName());+ + private static final String _C__58_REQUESTENCHANTITEM = "[C] 58 RequestEnchantItem"; - private int _objectId;-- @Override+ private static final int[] ENCHANT_SCROLLS = { 729, 730, 947, 948, 951, 952, 955, 956, 959, 960 };+ private static final int[] BLESSED_SCROLLS = { 6569, 6570, 6571, 6572, 6573, 6574, 6575, 6576, 6577, 6578 };+ + private int _objectId;+ + @Override protected void readImpl()- {- _objectId = readD();- }-- @Override+ {+ _objectId = readD();+ }+ + @Override protected void runImpl()- {- L2PcInstance activeChar = getClient().getActiveChar();- if (activeChar == null || _objectId == 0) return;-- L2ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId);- L2ItemInstance scroll = activeChar.getActiveEnchantItem();- if (item == null || scroll == null)- {- activeChar.setActiveEnchantItem(null);- return;- }-- // can't enchant rods, hero weapons, adventurers' and shadow items- if(item.getItem().getItemType() == L2WeaponType.ROD- || item.isHeroItem()- || item.getItemId() >= 7816 && item.getItemId() <= 7831- || item.isShadowItem())- {- activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));- activeChar.setActiveEnchantItem(null);- return;- }- if(item.isWear())- {- Util.handleIllegalPlayerAction(activeChar,"Player "+activeChar.getName()+" tried to enchant a weared Item", IllegalPlayerAction.PUNISH_KICK);- return;- }- - switch (item.getLocation())- {- case INVENTORY:- case PAPERDOLL:- {- if (item.getOwnerId() != activeChar.getObjectId())- {- activeChar.setActiveEnchantItem(null);- return;- }- break;- }- default:- {- Util.handleIllegalPlayerAction(activeChar,"Player "+activeChar.getName()+" tried to use enchant Exploit!", IllegalPlayerAction.PUNISH_KICKBAN);- return;- }- }- int itemType2 = item.getItem().getType2();- boolean enchantItem = false;- boolean blessedScroll = false;- int crystalId = 0;-- /** pretty code ;D */- switch (item.getItem().getCrystalType())- {- case L2Item.CRYSTAL_A:- crystalId = 1461;- switch(scroll.getItemId())- {- case 729: case 731: case 6569:- if(itemType2 == L2Item.TYPE2_WEAPON)- enchantItem = true;- break;- case 730: case 732: case 6570:- if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))- enchantItem = true;- break;- }- break;- case L2Item.CRYSTAL_B:- crystalId = 1460;- switch(scroll.getItemId())- {- case 947: case 949: case 6571:- if(itemType2 == L2Item.TYPE2_WEAPON)- enchantItem = true;- break;- case 948: case 950: case 6572:- if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))- enchantItem = true;- break;- }- break;- case L2Item.CRYSTAL_C:- crystalId = 1459;- switch(scroll.getItemId())- {- case 951: case 953: case 6573:- if(itemType2 == L2Item.TYPE2_WEAPON)- enchantItem = true;- break;- case 952: case 954: case 6574:- if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))- enchantItem = true;- break;- }- break;- case L2Item.CRYSTAL_D:- crystalId = 1458;- switch(scroll.getItemId())- {- case 955: case 957: case 6575:- if(itemType2 == L2Item.TYPE2_WEAPON)- enchantItem = true;- break;- case 956: case 958: case 6576:- if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))- enchantItem = true;- break;- }- break;- case L2Item.CRYSTAL_S:- case L2Item.CRYSTAL_S80:- crystalId = 1462;- switch(scroll.getItemId())- {- case 959: case 961: case 6577:- if(itemType2 == L2Item.TYPE2_WEAPON)- enchantItem = true;- break;- case 960: case 962: case 6578:- if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))- enchantItem = true;- break;- }- break;- }-- if (!enchantItem)- {- activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));- activeChar.setActiveEnchantItem(null);- return;- }-- // Get the scroll type - Yesod- if (scroll.getItemId() >= 6569 && scroll.getItemId() <= 6578)- blessedScroll = true;- else- for (int crystalscroll : CRYSTAL_SCROLLS)- if(scroll.getItemId() == crystalscroll)- {- blessedScroll = true; break;- }-- scroll = activeChar.getInventory().destroyItem("Enchant", scroll.getObjectId(), 1, activeChar, item);- if(scroll == null)- {- activeChar.sendPacket(new SystemMessage(SystemMessageId.NOT_ENOUGH_ITEMS));- Util.handleIllegalPlayerAction(activeChar,"Player "+activeChar.getName()+" tried to enchant with a scroll he doesnt have", Config.DEFAULT_PUNISH);- activeChar.setActiveEnchantItem(null);- return;- }-- // SystemMessage sm = new SystemMessage(SystemMessageId.ENCHANT_SCROLL_CANCELLED);- // activeChar.sendPacket(sm);-- SystemMessage sm;-- int chance = 0;- int maxEnchantLevel = 0;-- if (item.getItem().getType2() == L2Item.TYPE2_WEAPON)- {- chance = Config.ENCHANT_CHANCE_WEAPON;- maxEnchantLevel = Config.ENCHANT_MAX_WEAPON;- }- else if (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR)- {- chance = Config.ENCHANT_CHANCE_ARMOR;- maxEnchantLevel = Config.ENCHANT_MAX_ARMOR;- }- else if (item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)- {- chance = Config.ENCHANT_CHANCE_JEWELRY;- maxEnchantLevel = Config.ENCHANT_MAX_JEWELRY;- }-- if (item.getEnchantLevel() < Config.ENCHANT_SAFE_MAX- || (item.getItem().getBodyPart() == L2Item.SLOT_FULL_ARMOR- && item.getEnchantLevel() < Config.ENCHANT_SAFE_MAX_FULL))- chance = 100;-- if (Rnd.get(100) < chance)- {- synchronized(item)- {- if (item.getOwnerId() != activeChar.getObjectId() // has just lost the item- || (item.getEnchantLevel() >= maxEnchantLevel && maxEnchantLevel != 0))- {- activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));- activeChar.setActiveEnchantItem(null);- return;- }- if (item.getLocation() != L2ItemInstance.ItemLocation.INVENTORY && item.getLocation() != L2ItemInstance.ItemLocation.PAPERDOLL)- {- activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));- activeChar.setActiveEnchantItem(null);- return;- }- if (item.getEnchantLevel() == 0)- {- sm = new SystemMessage(SystemMessageId.S1_SUCCESSFULLY_ENCHANTED);- sm.addItemName(item.getItemId());- activeChar.sendPacket(sm);- }- else- {- sm = new SystemMessage(SystemMessageId.S1_S2_SUCCESSFULLY_ENCHANTED);- sm.addNumber(item.getEnchantLevel());- sm.addItemName(item.getItemId());- activeChar.sendPacket(sm);- }- item.setEnchantLevel(item.getEnchantLevel()+1);- item.updateDatabase();- }- }- else- {- if (!blessedScroll)- {- if (item.getEnchantLevel() > 0)- {- sm = new SystemMessage(SystemMessageId.ENCHANTMENT_FAILED_S1_S2_EVAPORATED);- sm.addNumber(item.getEnchantLevel());- sm.addItemName(item.getItemId());- activeChar.sendPacket(sm);- }- else- {- sm = new SystemMessage(SystemMessageId.ENCHANTMENT_FAILED_S1_EVAPORATED);- sm.addItemName(item.getItemId());- activeChar.sendPacket(sm);- }- }- else- {- sm = new SystemMessage(SystemMessageId.BLESSED_ENCHANT_FAILED);- activeChar.sendPacket(sm);- }- - if (!blessedScroll)- {- if (item.getEnchantLevel() > 0)- {- sm = new SystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED);- sm.addNumber(item.getEnchantLevel());- sm.addItemName(item.getItemId());- activeChar.sendPacket(sm);- }- else- {- sm = new SystemMessage(SystemMessageId.S1_DISARMED);- sm.addItemName(item.getItemId());- activeChar.sendPacket(sm);- }-- if (item.isEquipped())- {- L2ItemInstance[] unequiped = activeChar.getInventory().unEquipItemInSlotAndRecord(item.getLocationSlot());- InventoryUpdate iu = new InventoryUpdate();- for (int i = 0; i < unequiped.length; i++)- {- iu.addModifiedItem(unequiped[i]);- }- activeChar.sendPacket(iu);- - activeChar.broadcastUserInfo();- }- - int count = item.getCrystalCount() - (item.getItem().getCrystalCount() +1) / 2;- if (count < 1) count = 1;- - L2ItemInstance destroyItem = activeChar.getInventory().destroyItem("Enchant", item, activeChar, null);- if (destroyItem == null)- {- activeChar.setActiveEnchantItem(null);- return;- }- - L2ItemInstance crystals = activeChar.getInventory().addItem("Enchant", crystalId, count, activeChar, destroyItem);- - sm = new SystemMessage(SystemMessageId.EARNED_S2_S1_S);- sm.addItemName(crystals.getItemId());- sm.addNumber(count);- activeChar.sendPacket(sm);- - if (!Config.FORCE_INVENTORY_UPDATE)- {- InventoryUpdate iu = new InventoryUpdate();- if (destroyItem.getCount() == 0) iu.addRemovedItem(destroyItem);- else iu.addModifiedItem(destroyItem);- iu.addItem(crystals);- - activeChar.sendPacket(iu);- }- else activeChar.sendPacket(new ItemList(activeChar, true));- - 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);- }- else- {- item.setEnchantLevel(0);- item.updateDatabase();- }- }- sm = null;- - StatusUpdate su = new StatusUpdate(activeChar.getObjectId());- su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());- activeChar.sendPacket(su); - su = null;- - activeChar.sendPacket(new EnchantResult(item.getEnchantLevel())); //FIXME i'm really not sure about this...- activeChar.sendPacket(new ItemList(activeChar, false)); //TODO update only the enchanted item- activeChar.broadcastUserInfo();- activeChar.setActiveEnchantItem(null);- }- - /* (non-Javadoc)- * @see net.sf.l2j.gameserver.clientpackets.ClientBasePacket#getType()- */- @Override+ {+ L2PcInstance activeChar = getClient().getActiveChar();+ if (activeChar == null || _objectId == 0)+ return;+ + L2ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId);+ L2ItemInstance scroll = activeChar.getActiveEnchantItem();+ if (item == null || scroll == null)+ {+ activeChar.setActiveEnchantItem(null);+ return;+ }+ + // can't enchant rods, hero weapons, adventurers' and shadow items+ if (item.getItem().getItemType() == L2WeaponType.ROD || item.isHeroItem() || item.getItemId() >= 7816 && item.getItemId() <= 7831 || item.isShadowItem())+ {+ activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));+ activeChar.setActiveEnchantItem(null);+ return;+ }+ if (item.isWear())+ {+ Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " tried to enchant a weared Item", IllegalPlayerAction.PUNISH_KICK);+ return;+ }+ + switch (item.getLocation())+ {+ case INVENTORY:+ case PAPERDOLL:+ {+ if (item.getOwnerId() != activeChar.getObjectId())+ {+ activeChar.setActiveEnchantItem(null);+ return;+ }+ break;+ }+ default:+ {+ Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " tried to use enchant Exploit!", IllegalPlayerAction.PUNISH_KICKBAN);+ return;+ }+ }+ int itemType2 = item.getItem().getType2();+ boolean enchantItem = false;+ boolean blessedScroll = false;+ int crystalId = 0;+ + /** pretty code ;D */+ switch (item.getItem().getCrystalType())+ {+ case L2Item.CRYSTAL_A:+ crystalId = 1461;+ switch (scroll.getItemId())+ {+ case 729:+ case 731:+ case 6569:+ if (itemType2 == L2Item.TYPE2_WEAPON)+ enchantItem = true;+ break;+ case 730:+ case 732:+ case 6570:+ if (itemType2 == L2Item.TYPE2_SHIELD_ARMOR || itemType2 == L2Item.TYPE2_ACCESSORY)+ enchantItem = true;+ break;+ }+ break;+ case L2Item.CRYSTAL_B:+ crystalId = 1460;+ switch (scroll.getItemId())+ {+ case 947:+ case 949:+ case 6571:+ if (itemType2 == L2Item.TYPE2_WEAPON)+ enchantItem = true;+ break;+ case 948:+ case 950:+ case 6572:+ if (itemType2 == L2Item.TYPE2_SHIELD_ARMOR || itemType2 == L2Item.TYPE2_ACCESSORY)+ enchantItem = true;+ break;+ }+ break;+ case L2Item.CRYSTAL_C:+ crystalId = 1459;+ switch (scroll.getItemId())+ {+ case 951:+ case 953:+ case 6573:+ if (itemType2 == L2Item.TYPE2_WEAPON)+ enchantItem = true;+ break;+ case 952:+ case 954:+ case 6574:+ if (itemType2 == L2Item.TYPE2_SHIELD_ARMOR || itemType2 == L2Item.TYPE2_ACCESSORY)+ enchantItem = true;+ break;+ }+ break;+ case L2Item.CRYSTAL_D:+ crystalId = 1458;+ switch (scroll.getItemId())+ {+ case 955:+ case 957:+ case 6575:+ if (itemType2 == L2Item.TYPE2_WEAPON)+ enchantItem = true;+ break;+ case 956:+ case 958:+ case 6576:+ if (itemType2 == L2Item.TYPE2_SHIELD_ARMOR || itemType2 == L2Item.TYPE2_ACCESSORY)+ enchantItem = true;+ break;+ }+ break;+ case L2Item.CRYSTAL_S:+ case L2Item.CRYSTAL_S80:+ crystalId = 1462;+ switch (scroll.getItemId())+ {+ case 959:+ case 961:+ case 6577:+ if (itemType2 == L2Item.TYPE2_WEAPON)+ enchantItem = true;+ break;+ case 960:+ case 962:+ case 6578:+ if (itemType2 == L2Item.TYPE2_SHIELD_ARMOR+ || itemType2 == L2Item.TYPE2_ACCESSORY)+ enchantItem = true;+ break;+ }+ break;+ }+ + if (!enchantItem)+ {+ activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));+ activeChar.setActiveEnchantItem(null);+ return;+ }+ + // Check the scroll type, and if it functions like "blessed" set it to true for being "blessedScroll" - Yesod+ if (scroll.getItemId() >= 6569 && scroll.getItemId() <= 6578)+ blessedScroll = true;+ + scroll = activeChar.getInventory().destroyItem("Enchant", scroll.getObjectId(), 1, activeChar, item);+ if (scroll == null)+ {+ activeChar.sendPacket(new SystemMessage(SystemMessageId.NOT_ENOUGH_ITEMS));+ Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " tried to enchant with a scroll he doesn't have", Config.DEFAULT_PUNISH);+ activeChar.setActiveEnchantItem(null);+ return;+ }+ + SystemMessage sm;+ + int chance = 0;+ int maxEnchantLevel = 0;+ + if (item.getItem().getType2() == L2Item.TYPE2_WEAPON)+ {+ for (int scrollId : ENCHANT_SCROLLS)+ {+ if (scroll.getItemId() == scrollId)+ {+ chance = Config.ENCHANT_CHANCE_WEAPON;+ break;+ }+ }+ for (int scrollId : BLESSED_SCROLLS)+ {+ if (scroll.getItemId() == scrollId)+ {+ chance = Config.BLESSED_ENCHANT_CHANCE_WEAPON;+ break;+ }+ }+ maxEnchantLevel = Config.ENCHANT_MAX_WEAPON;+ }+ else if (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR)+ {+ for (int scrollId : ENCHANT_SCROLLS)+ {+ if (scroll.getItemId() == scrollId)+ {+ chance = Config.ENCHANT_CHANCE_ARMOR;+ break;+ }+ }+ for (int scrollId : BLESSED_SCROLLS)+ {+ if (scroll.getItemId() == scrollId)+ {+ chance = Config.BLESSED_ENCHANT_CHANCE_ARMOR;+ break;+ }+ }+ maxEnchantLevel = Config.ENCHANT_MAX_ARMOR;+ }+ else if (item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)+ {+ for (int scrollId : ENCHANT_SCROLLS)+ {+ if (scroll.getItemId() == scrollId)+ {+ chance = Config.ENCHANT_CHANCE_JEWELRY;+ break;+ }+ }+ for (int scrollId : BLESSED_SCROLLS)+ {+ if (scroll.getItemId() == scrollId)+ {+ chance = Config.BLESSED_ENCHANT_CHANCE_JEWELRY;+ break;+ }+ }+ maxEnchantLevel = Config.ENCHANT_MAX_JEWELRY;+ }+ + if (item.getEnchantLevel() < Config.ENCHANT_SAFE_MAX || item.getItem().getBodyPart() == L2Item.SLOT_FULL_ARMOR && item.getEnchantLevel() < Config.ENCHANT_SAFE_MAX_FULL)+ chance = 100;+ + if (Rnd.get(100) < chance)+ {+ synchronized (item)+ {+ if (item.getOwnerId() != activeChar.getObjectId() // has just lost the item+ || item.getEnchantLevel() >= maxEnchantLevel && maxEnchantLevel != 0)+ {+ activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));+ activeChar.setActiveEnchantItem(null);+ return;+ }+ if (item.getLocation() != L2ItemInstance.ItemLocation.INVENTORY+ && item.getLocation() != L2ItemInstance.ItemLocation.PAPERDOLL)+ {+ activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));+ activeChar.setActiveEnchantItem(null);+ return;+ }+ if (item.getEnchantLevel() == 0)+ {+ sm = new SystemMessage(SystemMessageId.S1_SUCCESSFULLY_ENCHANTED);+ sm.addItemName(item.getItemId());+ activeChar.sendPacket(sm);+ }+ else+ {+ sm = new SystemMessage(SystemMessageId.S1_S2_SUCCESSFULLY_ENCHANTED);+ sm.addNumber(item.getEnchantLevel());+ sm.addItemName(item.getItemId());+ activeChar.sendPacket(sm);+ }+ item.setEnchantLevel(item.getEnchantLevel() + 1);+ item.updateDatabase();+ }+ }+ else+ {+ if (!blessedScroll)+ {+ if (item.getEnchantLevel() > 0)+ {+ sm = new SystemMessage(SystemMessageId.ENCHANTMENT_FAILED_S1_S2_EVAPORATED);+ sm.addNumber(item.getEnchantLevel());+ sm.addItemName(item.getItemId());+ activeChar.sendPacket(sm);+ }+ else+ {+ sm = new SystemMessage(SystemMessageId.ENCHANTMENT_FAILED_S1_EVAPORATED);+ sm.addItemName(item.getItemId());+ activeChar.sendPacket(sm);+ }+ }+ else+ {+ sm = new SystemMessage(SystemMessageId.BLESSED_ENCHANT_FAILED);+ activeChar.sendPacket(sm);+ }+ + if (!blessedScroll)+ {+ if (item.getEnchantLevel() > 0)+ {+ sm = new SystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED);+ sm.addNumber(item.getEnchantLevel());+ sm.addItemName(item.getItemId());+ activeChar.sendPacket(sm);+ }+ else+ {+ sm = new SystemMessage(SystemMessageId.S1_DISARMED);+ sm.addItemName(item.getItemId());+ activeChar.sendPacket(sm);+ }+ + if (item.isEquipped())+ {+ L2ItemInstance[] unequiped = activeChar.getInventory().unEquipItemInSlotAndRecord(item.getLocationSlot());+ InventoryUpdate iu = new InventoryUpdate();+ for (int i = 0; i < unequiped.length; i++)+ {+ iu.addModifiedItem(unequiped[i]);+ }+ activeChar.sendPacket(iu);+ + activeChar.broadcastUserInfo();+ }+ + int count = item.getCrystalCount() - (item.getItem().getCrystalCount() + 1) / 2;+ if (count < 1)+ count = 1;+ + L2ItemInstance destroyItem = activeChar.getInventory().destroyItem("Enchant", item, activeChar, null);+ if (destroyItem == null)+ {+ activeChar.setActiveEnchantItem(null);+ return;+ }+ + L2ItemInstance crystals = activeChar.getInventory().addItem("Enchant", crystalId, count, activeChar, destroyItem);+ + sm = new SystemMessage(SystemMessageId.EARNED_S2_S1_S);+ sm.addItemName(crystals.getItemId());+ sm.addNumber(count);+ activeChar.sendPacket(sm);+ + if (!Config.FORCE_INVENTORY_UPDATE)+ {+ InventoryUpdate iu = new InventoryUpdate();+ if (destroyItem.getCount() == 0)+ iu.addRemovedItem(destroyItem);+ else+ iu.addModifiedItem(destroyItem);+ iu.addItem(crystals);+ + activeChar.sendPacket(iu);+ }+ else+ activeChar.sendPacket(new ItemList(activeChar, true));+ + 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);+ }+ else+ {+ item.setEnchantLevel(0);+ item.updateDatabase();+ }+ }+ sm = null;+ + StatusUpdate su = new StatusUpdate(activeChar.getObjectId());+ su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());+ activeChar.sendPacket(su);+ su = null;+ + activeChar.sendPacket(new EnchantResult(item.getEnchantLevel()));+ activeChar.sendPacket(new ItemList(activeChar, false));+ activeChar.broadcastUserInfo();+ activeChar.setActiveEnchantItem(null);+ }+ + /*+ * (non-Javadoc)+ * + * @see net.sf.l2j.gameserver.clientpackets.ClientBasePacket#getType()+ */+ @Override public String getType()- {- return _C__58_REQUESTENCHANTITEM;- }+ {+ return _C__58_REQUESTENCHANTITEM;+ } }