瀏覽代碼

More OOP by Erb

nBd 16 年之前
父節點
當前提交
36a076fbfc

+ 2 - 28
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/stat/CharStat.java

@@ -17,10 +17,8 @@ package net.sf.l2j.gameserver.model.actor.stat;
 import net.sf.l2j.Config;
 import net.sf.l2j.gameserver.model.Elementals;
 import net.sf.l2j.gameserver.model.L2ItemInstance;
-import net.sf.l2j.gameserver.model.L2PetDataTable;
 import net.sf.l2j.gameserver.model.L2Skill;
 import net.sf.l2j.gameserver.model.actor.L2Character;
-import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 import net.sf.l2j.gameserver.skills.Calculator;
 import net.sf.l2j.gameserver.skills.Env;
 import net.sf.l2j.gameserver.skills.Stats;
@@ -422,10 +420,6 @@ public class CharStat
 	{
     	if (_activeChar == null)
     		return 1;
-    	
-    	if (_activeChar instanceof L2PcInstance && ((L2PcInstance)_activeChar).isMounted())
-    		return getRunSpeed() * 1f / L2PetDataTable.getInstance().getPetData(
-    				((L2PcInstance)_activeChar).getMountNpcId(), ((L2PcInstance)_activeChar).getMountLevel()).getPetSpeed();
 
 		return getRunSpeed() * 1f / _activeChar.getTemplate().baseRunSpd;
 	}
@@ -604,18 +598,7 @@ public class CharStat
 		// err we should be adding TO the persons run speed
 		// not making it a constant
 		double baseRunSpd = _activeChar.getTemplate().baseRunSpd;
-		if (_activeChar instanceof L2PcInstance)
-		{
-			L2PcInstance player = (L2PcInstance)_activeChar;
-			if (player.isMounted())
-				baseRunSpd = L2PetDataTable.getInstance().getPetData(player.getMountNpcId(), player.getMountLevel()).getPetSpeed();
-		}
 		int val = (int) calcStat(Stats.RUN_SPEED, baseRunSpd, null, null);
-		if (_activeChar instanceof L2PcInstance)
-		{
-			val += Config.RUN_SPD_BOOST;
-			val /= _activeChar.getArmourExpertisePenalty();
-		}
 		
 		return val;
 	}
@@ -647,20 +630,11 @@ public class CharStat
 
 	/** Return the WalkSpeed (base+modifier) of the L2Character. */
 	public int getWalkSpeed()
-	{
-    	
+	{    	
 		if (_activeChar == null)
     		return 1;
 
-		if(_activeChar instanceof L2PcInstance )
-		{
-			return (getRunSpeed() * 70) / 100;	
-		}
-		else
-		{	
-			return (int) calcStat(Stats.WALK_SPEED, _activeChar.getTemplate().baseWalkSpd, null, null);
-		}
-		
+		return (int) calcStat(Stats.WALK_SPEED, _activeChar.getTemplate().baseWalkSpd, null, null);		
 	}
 
 	/** Return the WIT of the L2Character (base+modifier). */

+ 44 - 7
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/stat/PcStat.java

@@ -15,6 +15,7 @@
 package net.sf.l2j.gameserver.model.actor.stat;
 
 import net.sf.l2j.Config;
+import net.sf.l2j.gameserver.model.L2PetDataTable;
 import net.sf.l2j.gameserver.model.actor.L2Character;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 import net.sf.l2j.gameserver.model.actor.instance.L2PetInstance;
@@ -27,6 +28,7 @@ import net.sf.l2j.gameserver.network.serverpackets.SocialAction;
 import net.sf.l2j.gameserver.network.serverpackets.StatusUpdate;
 import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
 import net.sf.l2j.gameserver.network.serverpackets.UserInfo;
+import net.sf.l2j.gameserver.skills.Stats;
 
 public class PcStat extends PlayableStat
 {
@@ -323,16 +325,29 @@ public class PcStat extends PlayableStat
     }
     
     @Override
-    public final int getRunSpeed()
-    {
-    	int val = super.getRunSpeed();
-    	
+	public int getRunSpeed()
+	{
+		if (getActiveChar() == null)
+			return 1;
+		
+		int val = super.getRunSpeed();
+		
+		L2PcInstance player = getActiveChar();
+		if (player.isMounted())
+		{
+			int baseRunSpd = L2PetDataTable.getInstance().getPetData(player.getMountNpcId(), player.getMountLevel()).getPetSpeed();
+			val = (int) calcStat(Stats.RUN_SPEED, baseRunSpd, null, null);
+		}
+		
+		val += Config.RUN_SPD_BOOST;
+		val /= player.getArmourExpertisePenalty();
+		
     	// Apply max run speed cap.
 		if (val > Config.MAX_RUN_SPEED && !getActiveChar().isGM())
 			return Config.MAX_RUN_SPEED;
-    	
-    	return val;
-    }
+		
+		return val;
+	}
     
     @Override
     public int getPAtkSpd()
@@ -366,4 +381,26 @@ public class PcStat extends PlayableStat
 		
     	return val;
 	}
+    
+    @Override
+    public float getMovementSpeedMultiplier()
+	{
+    	if (getActiveChar() == null)
+    		return 1;
+    	
+    	if (getActiveChar().isMounted())
+    		return getRunSpeed() * 1f / L2PetDataTable.getInstance().getPetData(
+    				getActiveChar().getMountNpcId(), getActiveChar().getMountLevel()).getPetSpeed();
+
+		return super.getMovementSpeedMultiplier();
+	}
+    
+    @Override
+	public int getWalkSpeed()
+	{    	
+		if (getActiveChar() == null)
+    		return 1;
+
+		return (getRunSpeed() * 70) / 100;			
+	}
 }