All pastes #991107 Raw Edit

Ahmed

public java v1 · immutable
#991107 ·published 2008-04-20 18:49 UTC
rendered paste body
Index: 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;+	} }