2
0
Эх сурвалжийг харах

BETA: Shortcuts update:
* Code refactoring and cleanup.
* Typos fixed in JavaDocs.
* Removed duplicated code.
* Single method to update skill shortcuts.

Zoey76 13 жил өмнө
parent
commit
ec5f1a3bae

+ 1 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2ShortCut.java

@@ -36,8 +36,7 @@ public class L2ShortCut
 	private final int _characterType;
 	private int _sharedReuseGroup = -1;
 	
-	public L2ShortCut(int slotId, int pageId, int shortcutType,
-			int shortcutId, int shortcutLevel, int characterType)
+	public L2ShortCut(int slotId, int pageId, int shortcutType, int shortcutId, int shortcutLevel, int characterType)
 	{
 		_slot = slotId;
 		_page = pageId;

+ 52 - 29
L2J_Server_BETA/java/com/l2jserver/gameserver/model/ShortCuts.java

@@ -26,20 +26,19 @@ import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.network.serverpackets.ExAutoSoulShot;
 import com.l2jserver.gameserver.network.serverpackets.ShortCutInit;
+import com.l2jserver.gameserver.network.serverpackets.ShortCutRegister;
 import com.l2jserver.gameserver.templates.item.L2EtcItemType;
 
-
 /**
  * This class ...
- *
  * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:33 $
  */
 public class ShortCuts
 {
 	private static Logger _log = Logger.getLogger(ShortCuts.class.getName());
-	
-	private L2PcInstance _owner;
-	private Map<Integer, L2ShortCut> _shortCuts = new TreeMap<Integer, L2ShortCut>();
+	private static final int MAX_SHORTCUTS_PER_BAR = 12;
+	private final L2PcInstance _owner;
+	private final Map<Integer, L2ShortCut> _shortCuts = new TreeMap<Integer, L2ShortCut>();
 	
 	public ShortCuts(L2PcInstance owner)
 	{
@@ -53,10 +52,9 @@ public class ShortCuts
 	
 	public L2ShortCut getShortCut(int slot, int page)
 	{
-		L2ShortCut sc = _shortCuts.get(slot + page * 12);
-		
-		// verify shortcut
-		if (sc != null && sc.getType() == L2ShortCut.TYPE_ITEM)
+		L2ShortCut sc = _shortCuts.get(slot + (page * MAX_SHORTCUTS_PER_BAR));
+		// Verify shortcut
+		if ((sc != null) && (sc.getType() == L2ShortCut.TYPE_ITEM))
 		{
 			if (_owner.getInventory().getItemByObjectId(sc.getId()) == null)
 			{
@@ -64,32 +62,36 @@ public class ShortCuts
 				sc = null;
 			}
 		}
-		
 		return sc;
 	}
 	
 	public synchronized void registerShortCut(L2ShortCut shortcut)
 	{
-		// verify shortcut
+		// Verify shortcut
 		if (shortcut.getType() == L2ShortCut.TYPE_ITEM)
 		{
-			L2ItemInstance item = _owner.getInventory().getItemByObjectId(shortcut.getId());
+			final L2ItemInstance item = _owner.getInventory().getItemByObjectId(shortcut.getId());
 			if (item == null)
+			{
 				return;
+			}
 			if (item.isEtcItem())
+			{
 				shortcut.setSharedReuseGroup(item.getEtcItem().getSharedReuseGroup());
+			}
 		}
-		L2ShortCut oldShortCut = _shortCuts.put(shortcut.getSlot() + 12 * shortcut.getPage(), shortcut);
+		final L2ShortCut oldShortCut = _shortCuts.put(shortcut.getSlot() + (shortcut.getPage() * MAX_SHORTCUTS_PER_BAR), shortcut);
 		registerShortCutInDb(shortcut, oldShortCut);
 	}
 	
 	private void registerShortCutInDb(L2ShortCut shortcut, L2ShortCut oldShortCut)
 	{
 		if (oldShortCut != null)
+		{
 			deleteShortCutFromDb(oldShortCut);
+		}
 		
 		Connection con = null;
-		
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
@@ -117,14 +119,15 @@ public class ShortCuts
 	
 	/**
 	 * @param slot
-	 * @param page 
+	 * @param page
 	 */
 	public synchronized void deleteShortCut(int slot, int page)
 	{
-		L2ShortCut old = _shortCuts.remove(slot+page*12);
-		
-		if (old == null || _owner == null)
+		final L2ShortCut old = _shortCuts.remove(slot + (page * MAX_SHORTCUTS_PER_BAR));
+		if ((old == null) || (_owner == null))
+		{
 			return;
+		}
 		deleteShortCutFromDb(old);
 		if (old.getType() == L2ShortCut.TYPE_ITEM)
 		{
@@ -133,31 +136,30 @@ public class ShortCuts
 			if ((item != null) && (item.getItemType() == L2EtcItemType.SHOT))
 			{
 				if (_owner.removeAutoSoulShot(item.getItemId()))
+				{
 					_owner.sendPacket(new ExAutoSoulShot(item.getItemId(), 0));
+				}
 			}
 		}
 		
 		_owner.sendPacket(new ShortCutInit(_owner));
 		
 		for (int shotId : _owner.getAutoSoulShot())
+		{
 			_owner.sendPacket(new ExAutoSoulShot(shotId, 1));
+		}
 	}
 	
 	public synchronized void deleteShortCutByObjectId(int objectId)
 	{
-		L2ShortCut toRemove = null;
-		
 		for (L2ShortCut shortcut : _shortCuts.values())
 		{
-			if (shortcut.getType() == L2ShortCut.TYPE_ITEM && shortcut.getId() == objectId)
+			if ((shortcut.getType() == L2ShortCut.TYPE_ITEM) && (shortcut.getId() == objectId))
 			{
-				toRemove = shortcut;
+				deleteShortCut(shortcut.getSlot(), shortcut.getPage());
 				break;
 			}
 		}
-		
-		if (toRemove != null)
-			deleteShortCut(toRemove.getSlot(), toRemove.getPage());
 	}
 	
 	/**
@@ -166,7 +168,6 @@ public class ShortCuts
 	private void deleteShortCutFromDb(L2ShortCut shortcut)
 	{
 		Connection con = null;
-		
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
@@ -193,7 +194,6 @@ public class ShortCuts
 	{
 		_shortCuts.clear();
 		Connection con = null;
-		
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
@@ -212,7 +212,7 @@ public class ShortCuts
 				int level = rset.getInt("level");
 				
 				L2ShortCut sc = new L2ShortCut(slot, page, type, id, level, 1);
-				_shortCuts.put(slot+page*12, sc);
+				_shortCuts.put(slot + (page * MAX_SHORTCUTS_PER_BAR), sc);
 			}
 			
 			rset.close();
@@ -227,16 +227,39 @@ public class ShortCuts
 			L2DatabaseFactory.close(con);
 		}
 		
-		// verify shortcuts
+		// Verify shortcuts
 		for (L2ShortCut sc : getAllShortCuts())
 		{
 			if (sc.getType() == L2ShortCut.TYPE_ITEM)
 			{
 				L2ItemInstance item = _owner.getInventory().getItemByObjectId(sc.getId());
 				if (item == null)
+				{
 					deleteShortCut(sc.getSlot(), sc.getPage());
+				}
 				else if (item.isEtcItem())
+				{
 					sc.setSharedReuseGroup(item.getEtcItem().getSharedReuseGroup());
+				}
+			}
+		}
+	}
+	
+	/**
+	 * Updates the shortcut bars with the new skill.
+	 * @param skillId the skill Id to search and update.
+	 * @param skillLevel the skill level to update.
+	 */
+	public synchronized void updateShortCuts(int skillId, int skillLevel)
+	{
+		// Update all the shortcuts for this skill
+		for (L2ShortCut sc : _shortCuts.values())
+		{
+			if ((sc.getId() == skillId) && (sc.getType() == L2ShortCut.TYPE_SKILL))
+			{
+				L2ShortCut newsc = new L2ShortCut(sc.getSlot(), sc.getPage(), sc.getType(), sc.getId(), skillLevel, 1);
+				_owner.sendPacket(new ShortCutRegister(newsc));
+				_owner.registerShortCut(newsc);
 			}
 		}
 	}

+ 12 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

@@ -1855,7 +1855,7 @@ public final class L2PcInstance extends L2Playable
 	}
 	
 	/**
-	 * @param slot The slot in wich the shortCuts is equiped
+	 * @param slot The slot in which the shortCuts is equipped
 	 * @param page The page of shortCuts containing the slot
 	 * @return the L2ShortCut of the L2PcInstance corresponding to the position (page-slot).
 	 */
@@ -1865,7 +1865,7 @@ public final class L2PcInstance extends L2Playable
 	}
 	
 	/**
-	 * Add a L2shortCut to the L2PcInstance _shortCuts<BR><BR>
+	 * Add a L2shortCut to the L2PcInstance _shortCuts
 	 * @param shortcut 
 	 */
 	public void registerShortCut(L2ShortCut shortcut)
@@ -1873,6 +1873,16 @@ public final class L2PcInstance extends L2Playable
 		_shortCuts.registerShortCut(shortcut);
 	}
 	
+	/**
+	 * Updates the shortcut bars with the new skill.
+	 * @param skillId the skill Id to search and update.
+	 * @param skillLevel the skill level to update.
+	 */
+	public void updateShortCuts(int skillId, int skillLevel)
+	{
+		_shortCuts.updateShortCuts(skillId, skillLevel);
+	}
+	
 	/**
 	 * Delete the L2ShortCut corresponding to the position (page-slot) from the L2PcInstance _shortCuts.<BR><BR>
 	 * @param slot 

+ 1 - 26
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestAcquireSkill.java

@@ -22,7 +22,6 @@ import com.l2jserver.gameserver.datatables.SkillTreesData;
 import com.l2jserver.gameserver.instancemanager.QuestManager;
 import com.l2jserver.gameserver.model.L2Clan;
 import com.l2jserver.gameserver.model.L2ItemInstance;
-import com.l2jserver.gameserver.model.L2ShortCut;
 import com.l2jserver.gameserver.model.L2Skill;
 import com.l2jserver.gameserver.model.L2SkillLearn;
 import com.l2jserver.gameserver.model.L2SquadTrainer;
@@ -40,7 +39,6 @@ import com.l2jserver.gameserver.network.serverpackets.AcquireSkillDone;
 import com.l2jserver.gameserver.network.serverpackets.AcquireSkillList.SkillType;
 import com.l2jserver.gameserver.network.serverpackets.ExStorageMaxCount;
 import com.l2jserver.gameserver.network.serverpackets.PledgeSkillList;
-import com.l2jserver.gameserver.network.serverpackets.ShortCutRegister;
 import com.l2jserver.gameserver.network.serverpackets.StatusUpdate;
 import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 import com.l2jserver.gameserver.util.Util;
@@ -494,7 +492,7 @@ public final class RequestAcquireSkill extends L2GameClientPacket
 		player.addSkill(skill, true);
 		player.sendSkillList();
 		
-		updateShortCuts(player);
+		player.updateShortCuts(_id, _level);
 		showSkillList(trainer, player);
 		
 		//If skill is expand type then sends packet:
@@ -504,29 +502,6 @@ public final class RequestAcquireSkill extends L2GameClientPacket
 		}
 	}
 	
-	/**
-	 * Updates the shortcut bars with the new acquired skill.
-	 * @param player the player that needs a shortcut update.
-	 */
-	private void updateShortCuts(L2PcInstance player)
-	{
-		//Update all the shortcuts for this skill
-		if (_level > 1)
-		{
-			final L2ShortCut[] allShortCuts = player.getAllShortCuts();
-			
-			for (L2ShortCut sc : allShortCuts)
-			{
-				if ((sc.getId() == _id) && (sc.getType() == L2ShortCut.TYPE_SKILL))
-				{
-					L2ShortCut newsc = new L2ShortCut(sc.getSlot(), sc.getPage(), sc.getType(), sc.getId(), _level, 1);
-					player.sendPacket(new ShortCutRegister(newsc));
-					player.registerShortCut(newsc);
-				}
-			}
-		}
-	}
-	
 	/**
 	 * Wrapper for returning the skill list to the player after it's done with current skill.
 	 * @param trainer the Npc which the {@code player} is interacting.

+ 5 - 22
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkill.java

@@ -24,7 +24,6 @@ import com.l2jserver.gameserver.datatables.SkillTable;
 import com.l2jserver.gameserver.model.L2EnchantSkillGroup.EnchantSkillDetail;
 import com.l2jserver.gameserver.model.L2EnchantSkillLearn;
 import com.l2jserver.gameserver.model.L2ItemInstance;
-import com.l2jserver.gameserver.model.L2ShortCut;
 import com.l2jserver.gameserver.model.L2Skill;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.network.SystemMessageId;
@@ -32,7 +31,6 @@ import com.l2jserver.gameserver.network.serverpackets.ExBrExtraUserInfo;
 import com.l2jserver.gameserver.network.serverpackets.ExEnchantSkillInfo;
 import com.l2jserver.gameserver.network.serverpackets.ExEnchantSkillInfoDetail;
 import com.l2jserver.gameserver.network.serverpackets.ExEnchantSkillResult;
-import com.l2jserver.gameserver.network.serverpackets.ShortCutRegister;
 import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 import com.l2jserver.gameserver.network.serverpackets.UserInfo;
 import com.l2jserver.util.Rnd;
@@ -101,7 +99,8 @@ public final class RequestExEnchantSkill extends L2GameClientPacket
 			return;
 		}
 		final EnchantSkillDetail esd = s.getEnchantSkillDetail(_skillLvl);
-		if (player.getSkillLevel(_skillId) != s.getMinSkillLevel(_skillLvl))
+		final int currentSkillLevel = player.getSkillLevel(_skillId);
+		if (currentSkillLevel != s.getMinSkillLevel(_skillLvl))
 		{
 			return;
 		}
@@ -183,9 +182,9 @@ public final class RequestExEnchantSkill extends L2GameClientPacket
 			player.sendPacket(new UserInfo(player));
 			player.sendPacket(new ExBrExtraUserInfo(player));
 			player.sendSkillList();
-			player.sendPacket(new ExEnchantSkillInfo(_skillId, player.getSkillLevel(_skillId)));
-			player.sendPacket(new ExEnchantSkillInfoDetail(0, _skillId, player.getSkillLevel(_skillId)+1, player));
-			updateSkillShortcuts(player);
+			player.sendPacket(new ExEnchantSkillInfo(_skillId, currentSkillLevel));
+			player.sendPacket(new ExEnchantSkillInfoDetail(0, _skillId, currentSkillLevel + 1, player));
+			player.updateShortCuts(_skillId, currentSkillLevel);
 		}
 		else
 		{
@@ -193,22 +192,6 @@ public final class RequestExEnchantSkill extends L2GameClientPacket
 		}
 	}
 	
-	private void updateSkillShortcuts(L2PcInstance player)
-	{
-		// update all the shortcuts to this skill
-		L2ShortCut[] allShortCuts = player.getAllShortCuts();
-		
-		for (L2ShortCut sc : allShortCuts)
-		{
-			if (sc.getId() == _skillId && sc.getType() == L2ShortCut.TYPE_SKILL)
-			{
-				L2ShortCut newsc = new L2ShortCut(sc.getSlot(), sc.getPage(), sc.getType(), sc.getId(), player.getSkillLevel(_skillId), 1);
-				player.sendPacket(new ShortCutRegister(newsc));
-				player.registerShortCut(newsc);
-			}
-		}
-	}
-	
 	@Override
 	public String getType()
 	{

+ 6 - 26
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkillRouteChange.java

@@ -24,7 +24,6 @@ import com.l2jserver.gameserver.datatables.SkillTable;
 import com.l2jserver.gameserver.model.L2EnchantSkillGroup.EnchantSkillDetail;
 import com.l2jserver.gameserver.model.L2EnchantSkillLearn;
 import com.l2jserver.gameserver.model.L2ItemInstance;
-import com.l2jserver.gameserver.model.L2ShortCut;
 import com.l2jserver.gameserver.model.L2Skill;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.network.SystemMessageId;
@@ -32,7 +31,6 @@ import com.l2jserver.gameserver.network.serverpackets.ExBrExtraUserInfo;
 import com.l2jserver.gameserver.network.serverpackets.ExEnchantSkillInfo;
 import com.l2jserver.gameserver.network.serverpackets.ExEnchantSkillInfoDetail;
 import com.l2jserver.gameserver.network.serverpackets.ExEnchantSkillResult;
-import com.l2jserver.gameserver.network.serverpackets.ShortCutRegister;
 import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 import com.l2jserver.gameserver.network.serverpackets.UserInfo;
 import com.l2jserver.util.Rnd;
@@ -99,14 +97,14 @@ public final class RequestExEnchantSkillRouteChange extends L2GameClientPacket
 			return;
 		}
 		
-		int currentLevel = player.getSkillLevel(_skillId);
+		final int currentSkillLevel = player.getSkillLevel(_skillId);
 		// do u have this skill enchanted?
-		if (currentLevel <= 100)
+		if (currentSkillLevel <= 100)
 		{
 			return;
 		}
 		
-		int currentEnchantLevel = currentLevel % 100;
+		int currentEnchantLevel = currentSkillLevel % 100;
 		// is the requested level valid?
 		if (currentEnchantLevel != _skillLvl % 100)
 		{
@@ -199,11 +197,9 @@ public final class RequestExEnchantSkillRouteChange extends L2GameClientPacket
 				player.sendPacket(sm);
 			}
 			player.sendSkillList();
-			player.sendPacket(new ExEnchantSkillInfo(_skillId, player.getSkillLevel(_skillId)));
-			player.sendPacket(new ExEnchantSkillInfoDetail(3, _skillId, player.getSkillLevel(_skillId), player));
-			
-			this.updateSkillShortcuts(player);
-			
+			player.sendPacket(new ExEnchantSkillInfo(_skillId, currentSkillLevel));
+			player.sendPacket(new ExEnchantSkillInfoDetail(3, _skillId, currentSkillLevel, player));
+			player.updateShortCuts(_skillId, currentSkillLevel);
 		}
 		else
 		{
@@ -212,22 +208,6 @@ public final class RequestExEnchantSkillRouteChange extends L2GameClientPacket
 		}
 	}
 	
-	private void updateSkillShortcuts(L2PcInstance player)
-	{
-		// update all the shortcuts to this skill
-		L2ShortCut[] allShortCuts = player.getAllShortCuts();
-		
-		for (L2ShortCut sc : allShortCuts)
-		{
-			if (sc.getId() == _skillId && sc.getType() == L2ShortCut.TYPE_SKILL)
-			{
-				L2ShortCut newsc = new L2ShortCut(sc.getSlot(), sc.getPage(), sc.getType(), sc.getId(), player.getSkillLevel(_skillId), 1);
-				player.sendPacket(new ShortCutRegister(newsc));
-				player.registerShortCut(newsc);
-			}
-		}
-	}
-	
 	@Override
 	public String getType()
 	{

+ 6 - 24
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkillSafe.java

@@ -24,7 +24,6 @@ import com.l2jserver.gameserver.datatables.SkillTable;
 import com.l2jserver.gameserver.model.L2EnchantSkillGroup.EnchantSkillDetail;
 import com.l2jserver.gameserver.model.L2EnchantSkillLearn;
 import com.l2jserver.gameserver.model.L2ItemInstance;
-import com.l2jserver.gameserver.model.L2ShortCut;
 import com.l2jserver.gameserver.model.L2Skill;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.network.SystemMessageId;
@@ -32,7 +31,6 @@ import com.l2jserver.gameserver.network.serverpackets.ExBrExtraUserInfo;
 import com.l2jserver.gameserver.network.serverpackets.ExEnchantSkillInfo;
 import com.l2jserver.gameserver.network.serverpackets.ExEnchantSkillInfoDetail;
 import com.l2jserver.gameserver.network.serverpackets.ExEnchantSkillResult;
-import com.l2jserver.gameserver.network.serverpackets.ShortCutRegister;
 import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 import com.l2jserver.gameserver.network.serverpackets.UserInfo;
 import com.l2jserver.util.Rnd;
@@ -99,8 +97,9 @@ public final class RequestExEnchantSkillSafe extends L2GameClientPacket
 		{
 			return;
 		}
-		EnchantSkillDetail esd = s.getEnchantSkillDetail(_skillLvl);
-		if (player.getSkillLevel(_skillId) != s.getMinSkillLevel(_skillLvl))
+		final EnchantSkillDetail esd = s.getEnchantSkillDetail(_skillLvl);
+		final int currentSkillLevel = player.getSkillLevel(_skillId);
+		if (currentSkillLevel != s.getMinSkillLevel(_skillLvl))
 		{
 			return;
 		}
@@ -185,10 +184,9 @@ public final class RequestExEnchantSkillSafe extends L2GameClientPacket
 			player.sendPacket(new UserInfo(player));
 			player.sendPacket(new ExBrExtraUserInfo(player));
 			player.sendSkillList();
-			player.sendPacket(new ExEnchantSkillInfo(_skillId, player.getSkillLevel(_skillId)));
-			player.sendPacket(new ExEnchantSkillInfoDetail(1, _skillId, player.getSkillLevel(_skillId)+1, player));
-			
-			this.updateSkillShortcuts(player);
+			player.sendPacket(new ExEnchantSkillInfo(_skillId, currentSkillLevel));
+			player.sendPacket(new ExEnchantSkillInfoDetail(1, _skillId, currentSkillLevel + 1, player));
+			player.updateShortCuts(_skillId, currentSkillLevel);
 		}
 		else
 		{
@@ -197,22 +195,6 @@ public final class RequestExEnchantSkillSafe extends L2GameClientPacket
 		}
 	}
 	
-	private void updateSkillShortcuts(L2PcInstance player)
-	{
-		// update all the shortcuts to this skill
-		L2ShortCut[] allShortCuts = player.getAllShortCuts();
-		
-		for (L2ShortCut sc : allShortCuts)
-		{
-			if (sc.getId() == _skillId && sc.getType() == L2ShortCut.TYPE_SKILL)
-			{
-				L2ShortCut newsc = new L2ShortCut(sc.getSlot(), sc.getPage(), sc.getType(), sc.getId(), player.getSkillLevel(_skillId), 1);
-				player.sendPacket(new ShortCutRegister(newsc));
-				player.registerShortCut(newsc);
-			}
-		}
-	}
-	
 	@Override
 	public String getType()
 	{

+ 4 - 22
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkillUntrain.java

@@ -24,7 +24,6 @@ import com.l2jserver.gameserver.datatables.SkillTable;
 import com.l2jserver.gameserver.model.L2EnchantSkillGroup.EnchantSkillDetail;
 import com.l2jserver.gameserver.model.L2EnchantSkillLearn;
 import com.l2jserver.gameserver.model.L2ItemInstance;
-import com.l2jserver.gameserver.model.L2ShortCut;
 import com.l2jserver.gameserver.model.L2Skill;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.network.SystemMessageId;
@@ -32,7 +31,6 @@ import com.l2jserver.gameserver.network.serverpackets.ExBrExtraUserInfo;
 import com.l2jserver.gameserver.network.serverpackets.ExEnchantSkillInfo;
 import com.l2jserver.gameserver.network.serverpackets.ExEnchantSkillInfoDetail;
 import com.l2jserver.gameserver.network.serverpackets.ExEnchantSkillResult;
-import com.l2jserver.gameserver.network.serverpackets.ShortCutRegister;
 import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 import com.l2jserver.gameserver.network.serverpackets.UserInfo;
 
@@ -103,11 +101,11 @@ public final class RequestExEnchantSkillUntrain extends L2GameClientPacket
 		
 		int reqItemId = EnchantGroupsTable.UNTRAIN_ENCHANT_BOOK;
 		
-		int currentLevel = player.getSkillLevel(_skillId);
-		if (currentLevel - 1 != _skillLvl && (currentLevel % 100 != 1 || _skillLvl != s.getBaseLevel()))
+		final int currentSkillLevel = player.getSkillLevel(_skillId);
+		if (currentSkillLevel - 1 != _skillLvl && (currentSkillLevel % 100 != 1 || _skillLvl != s.getBaseLevel()))
 			return;
 		
-		EnchantSkillDetail esd = s.getEnchantSkillDetail(currentLevel);
+		EnchantSkillDetail esd = s.getEnchantSkillDetail(currentSkillLevel);
 		
 		int requiredSp = esd.getSpCost();
 		int requireditems = esd.getAdenaCost();
@@ -179,23 +177,7 @@ public final class RequestExEnchantSkillUntrain extends L2GameClientPacket
 		player.sendSkillList();
 		player.sendPacket(new ExEnchantSkillInfo(_skillId, player.getSkillLevel(_skillId)));
 		player.sendPacket(new ExEnchantSkillInfoDetail(2, _skillId, player.getSkillLevel(_skillId)-1, player));
-		this.updateSkillShortcuts(player);
-	}
-	
-	private void updateSkillShortcuts(L2PcInstance player)
-	{
-		// update all the shortcuts to this skill
-		L2ShortCut[] allShortCuts = player.getAllShortCuts();
-		
-		for (L2ShortCut sc : allShortCuts)
-		{
-			if (sc.getId() == _skillId && sc.getType() == L2ShortCut.TYPE_SKILL)
-			{
-				L2ShortCut newsc = new L2ShortCut(sc.getSlot(), sc.getPage(), sc.getType(), sc.getId(), player.getSkillLevel(_skillId), 1);
-				player.sendPacket(new ShortCutRegister(newsc));
-				player.registerShortCut(newsc);
-			}
-		}
+		player.updateShortCuts(_skillId, currentSkillLevel);
 	}
 	
 	@Override