Browse Source

NPC's slow movment fix by kerberos

DrHouse 16 years ago
parent
commit
483ec2d282

+ 1 - 1
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/L2Character.java

@@ -2226,7 +2226,7 @@ public abstract class L2Character extends L2Object
 	public final void setIsRooted(boolean value) { _isRooted = value; }
 
 	/** Return True if the L2Character is running. */
-	public final boolean isRunning() { return _isRunning; }
+	public boolean isRunning() { return _isRunning; }
 	public final void setIsRunning(boolean value)
 	{
 		_isRunning = value;

+ 6 - 0
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/L2Summon.java

@@ -907,4 +907,10 @@ public abstract class L2Summon extends L2Playable
 	{
 		return getTemplate().baseRunSpd;
 	}
+	
+	@Override
+	public boolean isRunning()
+	{
+		return true; // summons always run
+	}
 }

+ 5 - 5
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/stat/NpcStat.java

@@ -46,16 +46,16 @@ public class NpcStat extends CharStat
 	public final int getMaxHp() { return (int)calcStat(Stats.MAX_HP, getActiveChar().getTemplate().baseHpMax , null, null); }
     
     @Override
-	public int getWalkSpeed() { return  getRunSpeed()/2; }
+	public int getWalkSpeed(){ return (int) calcStat(Stats.WALK_SPEED, getActiveChar().getTemplate().baseWalkSpd, null, null);}
     
     @Override
 	public float getMovementSpeedMultiplier()
 	{
     	if (getActiveChar() == null)
     		return 1;
-    	float val = getRunSpeed() * 1f / getActiveChar().getTemplate().baseRunSpd;
-		if (!getActiveChar().isRunning())
-			val = val/2;
-		return val;
+    	if (getActiveChar().isRunning())
+    		return getRunSpeed() * 1f / getActiveChar().getTemplate().baseRunSpd;
+    	else
+    		return getWalkSpeed() * 1f / getActiveChar().getTemplate().baseWalkSpd;
 	}
 }

+ 1 - 1
L2_GameServer/java/net/sf/l2j/gameserver/network/serverpackets/NpcInfo.java

@@ -416,7 +416,7 @@ public final class NpcInfo extends L2GameServerPacket
 		writeD(_chest);
 		writeD(_lhand); // left hand weapon
 		writeC(1);	// name above char 1=true ... ??
-		writeC(1); // char always running
+		writeC(_activeChar.isRunning() ? 1 : 0);
 		writeC(_activeChar.isInCombat() ? 1 : 0);
 		writeC(_activeChar.isAlikeDead() ? 1 : 0);
 		writeC(_isSummoned ? 2 : _val); //  0=teleported  1=default   2=summoned