فهرست منبع

Holding references pointing to frequently used hardcoded skills in an enumeration. Decreases CPU usage

DrHouse 15 سال پیش
والد
کامیت
13e07fec8d

+ 4 - 4
L2_GameServer/java/com/l2jserver/gameserver/SevenSigns.java

@@ -1559,10 +1559,10 @@ public class SevenSigns
 		{
 			if (getPlayerCabal(character) != SevenSigns.CABAL_NULL)
 				if (getPlayerCabal(character) == StrifeOwner)
-					character.addSkill(SkillTable.getInstance().getInfo(5074, 1));
+					character.addSkill(SkillTable.FrequentSkill.THE_VICTOR_OF_WAR.getSkill());
 				else
 					//Gives "The Vanquished of War" passive skill to all online characters with Cabal, which does not control Seal of Strife
-					character.addSkill(SkillTable.getInstance().getInfo(5075, 1));
+					character.addSkill(SkillTable.FrequentSkill.THE_VANQUISHED_OF_WAR.getSkill());
 		}
 	}
 	
@@ -1571,8 +1571,8 @@ public class SevenSigns
 		for (L2PcInstance character : L2World.getInstance().getAllPlayers().values())
 		{
 			//Remove SevenSigns' buffs/debuffs.
-			character.removeSkill(SkillTable.getInstance().getInfo(5074, 1));
-			character.removeSkill(SkillTable.getInstance().getInfo(5075, 1));
+			character.removeSkill(SkillTable.FrequentSkill.THE_VICTOR_OF_WAR.getSkill());
+			character.removeSkill(SkillTable.FrequentSkill.THE_VANQUISHED_OF_WAR.getSkill());
 		}
 	}
 	

+ 3 - 6
L2_GameServer/java/com/l2jserver/gameserver/datatables/HeroSkillTable.java

@@ -22,11 +22,10 @@ import com.l2jserver.gameserver.model.L2Skill;
  */
 public class HeroSkillTable
 {
-	private static L2Skill[] _heroSkills;
+	private static final L2Skill[] _heroSkills = new L2Skill[5];
 	
 	private HeroSkillTable()
 	{
-		_heroSkills = new L2Skill[5];
 		_heroSkills[0] = SkillTable.getInstance().getInfo(395, 1);
 		_heroSkills[1] = SkillTable.getInstance().getInfo(396, 1);
 		_heroSkills[2] = SkillTable.getInstance().getInfo(1374, 1);
@@ -46,11 +45,9 @@ public class HeroSkillTable
 	
 	public static boolean isHeroSkill(int skillid)
 	{
-		Integer[] _HeroSkillsId = new Integer[] { 395, 396, 1374, 1375, 1376 };
-		
-		for (int id : _HeroSkillsId)
+		for (L2Skill sk : _heroSkills)
 		{
-			if (id == skillid)
+			if (sk.getId() == skillid)
 				return true;
 		}
 		

+ 1 - 2
L2_GameServer/java/com/l2jserver/gameserver/datatables/NobleSkillTable.java

@@ -22,11 +22,10 @@ import com.l2jserver.gameserver.model.L2Skill;
  */
 public class NobleSkillTable
 {
-	private static L2Skill[] _nobleSkills;
+	private static final L2Skill[] _nobleSkills = new L2Skill[8];
 	
 	private NobleSkillTable()
 	{
-		_nobleSkills = new L2Skill[8];
 		_nobleSkills[0] = SkillTable.getInstance().getInfo(1323, 1);
 		_nobleSkills[1] = SkillTable.getInstance().getInfo(325, 1);
 		_nobleSkills[2] = SkillTable.getInstance().getInfo(326, 1);

+ 58 - 0
L2_GameServer/java/com/l2jserver/gameserver/datatables/SkillTable.java

@@ -53,6 +53,8 @@ public class SkillTable
 			if (skillLvl > maxLvl)
 				_skillMaxLevel.put(skillId, skillLvl);
 		}
+		
+		FrequentSkill.onReload();
 	}
 	
 	/**
@@ -127,4 +129,60 @@ public class SkillTable
 	{
 		protected static final SkillTable _instance = new SkillTable();
 	}
+	
+	/**
+	 * Enum to hold some important references to frequently used (hardcoded) skills in core
+	 * 
+	 * @author DrHouse
+	 *
+	 */
+	public static enum FrequentSkill
+	{
+		RAID_CURSE(4215, 1),
+		RAID_CURSE2(4515, 1),
+		SEAL_OF_RULER(246, 1),
+		BUILD_HEADQUARTERS(247, 1),
+		LUCKY(194, 1),
+		DWARVEN_CRAFT(1321, 1),
+		COMMON_CRAFT(1322, 1),
+		WYVERN_BREATH(4289, 1),
+		STRIDER_SIEGE_ASSAULT(325, 1),
+		FAKE_PETRIFICATION(4616, 1),
+		FIREWORK(5965, 1),
+		LARGE_FIREWORK(2025, 1),
+		BLESSING_OF_PROTECTION(5182, 1),
+		ARENA_CP_RECOVERY(4380, 1),
+		VOID_BURST(3630, 1),
+		VOID_FLOW(3631, 1),
+		THE_VICTOR_OF_WAR(5074, 1),
+		THE_VANQUISHED_OF_WAR(5075, 1),
+		SPECIAL_TREE_RECOVERY_BONUS(2139, 1);
+		
+		private final int _id;
+		private final int _level;
+		private L2Skill _skill = null;
+		
+		private FrequentSkill(int id, int level)
+		{
+			_id = id;
+			_level = level;
+		}
+		
+		protected static void onReload()
+		{
+			for (FrequentSkill sk : FrequentSkill.values())
+				sk.reload();
+		}
+		
+		public L2Skill reload()
+		{
+			return (_skill = SkillTable.getInstance().getInfo(_id, _level));
+		}
+		
+		public L2Skill getSkill()
+		{
+			return _skill;
+		}
+		
+	}
 }

+ 4 - 4
L2_GameServer/java/com/l2jserver/gameserver/instancemanager/FortSiegeManager.java

@@ -78,8 +78,8 @@ public class FortSiegeManager
 	// Method - Public
 	public final void addSiegeSkills(L2PcInstance character)
 	{
-		character.addSkill(SkillTable.getInstance().getInfo(246, 1), false);
-		character.addSkill(SkillTable.getInstance().getInfo(247, 1), false);
+		character.addSkill(SkillTable.FrequentSkill.SEAL_OF_RULER.getSkill(), false);
+		character.addSkill(SkillTable.FrequentSkill.BUILD_HEADQUARTERS.getSkill(), false);
 	}
 	
 	/**
@@ -159,8 +159,8 @@ public class FortSiegeManager
 	
 	public final void removeSiegeSkills(L2PcInstance character)
 	{
-		character.removeSkill(SkillTable.getInstance().getInfo(246, 1));
-		character.removeSkill(SkillTable.getInstance().getInfo(247, 1));
+		character.removeSkill(SkillTable.FrequentSkill.SEAL_OF_RULER.getSkill());
+		character.removeSkill(SkillTable.FrequentSkill.BUILD_HEADQUARTERS.getSkill());
 	}
 	
 	// =========================================================

+ 8 - 6
L2_GameServer/java/com/l2jserver/gameserver/model/CursedWeapon.java

@@ -75,7 +75,9 @@ public class CursedWeapon
 	private L2ItemInstance _item = null;
 	private int _playerKarma = 0;
 	private int _playerPkKills = 0;
-    	protected int transformationId = 0;
+    protected int transformationId = 0;
+    
+    private static final int[] TRANSFORM_IDS = new int[]{3630,3631};
 
 	// =========================================================
 	// Constructor
@@ -321,11 +323,11 @@ public class CursedWeapon
 		_player.addSkill(skill, false);
 
 		// Void Burst, Void Flow
-		skill = SkillTable.getInstance().getInfo(3630, 1);
+		skill = SkillTable.FrequentSkill.VOID_BURST.getSkill();
 		_player.addSkill(skill, false);
-		skill = SkillTable.getInstance().getInfo(3631, 1);
+		skill = SkillTable.FrequentSkill.VOID_FLOW.getSkill();
 		_player.addSkill(skill, false);
-		_player.setTransformAllowedSkills(new int[]{3630,3631});
+		_player.setTransformAllowedSkills(TRANSFORM_IDS);
 		if (Config.DEBUG)
 			_log.info("Player "+_player.getName() +" has been awarded with skill "+skill);
 		_player.sendSkillList();
@@ -361,8 +363,8 @@ public class CursedWeapon
 	public void removeSkill()
 	{
 		_player.removeSkill(SkillTable.getInstance().getInfo(_skillId, _player.getSkillLevel(_skillId)), false);
-		_player.removeSkill(SkillTable.getInstance().getInfo(3630, 1), false);
-		_player.removeSkill(SkillTable.getInstance().getInfo(3631, 1), false);
+		_player.removeSkill(SkillTable.FrequentSkill.VOID_BURST.getSkill(), false);
+		_player.removeSkill(SkillTable.FrequentSkill.VOID_FLOW.getSkill(), false);
 		_player.untransform();
 		if (_player.transformId() > 0)
 		{

+ 7 - 7
L2_GameServer/java/com/l2jserver/gameserver/model/actor/L2Character.java

@@ -5142,7 +5142,7 @@ public abstract class L2Character extends L2Object
 			{
 				if (getLevel() > target.getLevel() + 8)
 				{
-					L2Skill skill = SkillTable.getInstance().getInfo(4515, 1);
+					L2Skill skill = SkillTable.FrequentSkill.RAID_CURSE2.getSkill();
 
 					if (skill != null)
 					{
@@ -6364,7 +6364,7 @@ public abstract class L2Character extends L2Object
 					{
 						if (skill.isMagic())
 						{
-							L2Skill tempSkill = SkillTable.getInstance().getInfo(4215, 1);
+							L2Skill tempSkill = SkillTable.FrequentSkill.RAID_CURSE.getSkill();
 							if(tempSkill != null)
 							{
 								abortAttack();
@@ -6372,12 +6372,12 @@ public abstract class L2Character extends L2Object
 								getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
 								tempSkill.getEffects(target, this);
 							}
-							else
-								_log.warning("Skill 4215 at level 1 is missing in DP.");
+							else if (_log.isLoggable(Level.WARNING))
+								_log.log(Level.WARNING, "Skill 4215 at level 1 is missing in DP.");
 						}
 						else
 						{
-							L2Skill tempSkill = SkillTable.getInstance().getInfo(4515, 1);
+							L2Skill tempSkill = SkillTable.FrequentSkill.RAID_CURSE.getSkill();
 							if(tempSkill != null)
 							{
 								abortAttack();
@@ -6385,8 +6385,8 @@ public abstract class L2Character extends L2Object
 								getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
 								tempSkill.getEffects(target, this);
 							}
-							else
-								_log.warning("Skill 4515 at level 1 is missing in DP.");
+							else if (_log.isLoggable(Level.WARNING))
+								_log.log(Level.WARNING, "Skill 4515 at level 1 is missing in DP.");
 						}
 						return;
 					}

+ 1 - 1
L2_GameServer/java/com/l2jserver/gameserver/model/actor/L2Npc.java

@@ -1731,7 +1731,7 @@ public class L2Npc extends L2Character
 			insertObjectIdAndShowChatWindow(player, content);
 			return;
 		}
-		L2Skill skill = SkillTable.getInstance().getInfo(5182, 1);
+		L2Skill skill = SkillTable.FrequentSkill.BLESSING_OF_PROTECTION.getSkill();
 		doCast(skill);
 	}
 

+ 5 - 5
L2_GameServer/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

@@ -2775,7 +2775,7 @@ public final class L2PcInstance extends L2Playable
 		// Remove beginner Lucky skill
 		if (lvl == 10)
 		{
-			L2Skill skill = SkillTable.getInstance().getInfo(194, 1);
+			L2Skill skill = SkillTable.FrequentSkill.LUCKY.getSkill();
 			skill = removeSkill(skill);
 
 			if (Config.DEBUG && skill != null) _log.fine("removed skill 'Lucky' from "+getName());
@@ -2806,14 +2806,14 @@ public final class L2PcInstance extends L2Playable
 
 		if (getSkillLevel(1321) < 1 && getRace() == Race.Dwarf)
 		{
-			L2Skill skill = SkillTable.getInstance().getInfo(1321,1);
+			L2Skill skill = SkillTable.FrequentSkill.DWARVEN_CRAFT.getSkill();
 			addSkill(skill, true);
 		}
 
 		//Active skill common craft
 		if (getSkillLevel(1322) < 1)
 		{
-			L2Skill skill = SkillTable.getInstance().getInfo(1322,1);
+			L2Skill skill = SkillTable.FrequentSkill.COMMON_CRAFT.getSkill();
 			addSkill(skill, true);
 		}
 
@@ -6860,7 +6860,7 @@ public final class L2PcInstance extends L2Playable
 	    	stopFeed();
 	    	clearPetData();
 	        if (wasFlying) 
-	            removeSkill(SkillTable.getInstance().getInfo(4289, 1));
+	            removeSkill(SkillTable.FrequentSkill.WYVERN_BREATH.getSkill());
 	        Ride dismount = new Ride(this, false, 0);
 	        broadcastPacket(dismount);
 	        setMountObjectID(0);
@@ -9461,7 +9461,7 @@ public final class L2PcInstance extends L2Playable
                 setIsRidingStrider(true);
                 if(isNoble())
                 {
-                	L2Skill striderAssaultSkill = SkillTable.getInstance().getInfo(325, 1);
+                	L2Skill striderAssaultSkill = SkillTable.FrequentSkill.STRIDER_SIEGE_ASSAULT.getSkill();
                 	addSkill(striderAssaultSkill, false); // not saved to DB
                 }
                 break;

+ 1 - 1
L2_GameServer/java/com/l2jserver/gameserver/model/actor/instance/L2SepulcherMonsterInstance.java

@@ -477,7 +477,7 @@ public class L2SepulcherMonsterInstance extends L2MonsterInstance
 
 		public void run()
 		{
-			L2Skill fp = SkillTable.getInstance().getInfo(4616, 1); // Invulnerable	by petrification
+			L2Skill fp = SkillTable.FrequentSkill.FAKE_PETRIFICATION.getSkill(); // Invulnerable	by petrification
 			fp.getEffects(activeChar, activeChar);
 		}
 	}

+ 1 - 1
L2_GameServer/java/com/l2jserver/gameserver/model/actor/instance/L2WeddingManagerInstance.java

@@ -112,7 +112,7 @@ public class L2WeddingManagerInstance extends L2Npc
                     ptarget.broadcastPacket(MSU);
 
                     // fireworks
-                    L2Skill skill = SkillTable.getInstance().getInfo(2025,1);
+                    L2Skill skill = SkillTable.FrequentSkill.LARGE_FIREWORK.getSkill();
                     if (skill != null)
                     {
                         MSU = new MagicSkillUse(player, player, 2025, 1, 1, 0);

+ 1 - 1
L2_GameServer/java/com/l2jserver/gameserver/model/actor/instance/L2WyvernManagerInstance.java

@@ -80,7 +80,7 @@ public class L2WyvernManagerInstance extends L2Npc
 						if (player.mount(12621, 0, true))
 						{
 							player.getInventory().destroyItemByItemId("Wyvern", 1460, 25, player, player.getTarget());
-							player.addSkill(SkillTable.getInstance().getInfo(4289, 1));
+							player.addSkill(SkillTable.FrequentSkill.WYVERN_BREATH.getSkill());
 							player.sendMessage("The Wyvern has been summoned successfully!");
 						}
 						return;

+ 4 - 4
L2_GameServer/java/com/l2jserver/gameserver/network/clientpackets/EnterWorld.java

@@ -265,15 +265,15 @@ public class EnterWorld extends L2GameClientPacket
 			if (SevenSigns.getInstance().getPlayerCabal(activeChar) != SevenSigns.CABAL_NULL)
 			{
 				if (SevenSigns.getInstance().getPlayerCabal(activeChar) == SevenSigns.getInstance().getSealOwner(SevenSigns.SEAL_STRIFE))
-					activeChar.addSkill(SkillTable.getInstance().getInfo(5074,1));
+					activeChar.addSkill(SkillTable.FrequentSkill.THE_VICTOR_OF_WAR.getSkill());
 				else
-					activeChar.addSkill(SkillTable.getInstance().getInfo(5075,1));
+					activeChar.addSkill(SkillTable.FrequentSkill.THE_VANQUISHED_OF_WAR.getSkill());
 			}
 		}
 		else
 		{
-			activeChar.removeSkill(SkillTable.getInstance().getInfo(5074,1));
-			activeChar.removeSkill(SkillTable.getInstance().getInfo(5075,1));
+			activeChar.removeSkill(SkillTable.FrequentSkill.THE_VICTOR_OF_WAR.getSkill());
+			activeChar.removeSkill(SkillTable.FrequentSkill.THE_VANQUISHED_OF_WAR.getSkill());
 		}
 
 		if (Config.ENABLE_VITALITY && Config.RECOVER_VITALITY_ON_RECONNECT)

+ 1 - 1
L2_GameServer/java/com/l2jserver/gameserver/network/clientpackets/RequestEnchantItem.java

@@ -181,7 +181,7 @@ public final class RequestEnchantItem extends AbstractEnchantPacket
 					sm.addItemName(item);
 					activeChar.broadcastPacket(sm);
 
-					L2Skill skill = SkillTable.getInstance().getInfo(5965, 1);
+					L2Skill skill = SkillTable.FrequentSkill.FIREWORK.getSkill();
 					if (skill != null)
 						activeChar.broadcastPacket(new MagicSkillUse(activeChar, activeChar, skill.getId(), skill.getLevel(), skill.getHitTime(), skill.getReuseDelay()));
 				}