Просмотр исходного кода

BETA: Fixed speed calculation and few bugs with pets:
* Fixed Speed calculation too much cast to INT in some cases change the stats
* Fixed admin command for feed the pet send wrong packet and pet don't restore instant
* Fixed pet speed don't get reduced properly when is hungry
* Fixed pet Uncontrollable animation don't despair
* Patch by: Zealar

Rumen Nikiforov 10 лет назад
Родитель
Сommit
7bc5da2c29
20 измененных файлов с 252 добавлено и 236 удалено
  1. 6 6
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/NpcData.java
  2. 13 13
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2PetLevelData.java
  3. 39 34
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Character.java
  4. 36 7
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PetInstance.java
  5. 61 58
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/stat/CharStat.java
  6. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/stat/ControllableAirShipStat.java
  7. 5 5
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/stat/PcStat.java
  8. 0 7
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/stat/PetStat.java
  9. 14 10
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/stat/PlayableStat.java
  10. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/stat/VehicleStat.java
  11. 9 9
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/templates/L2CharTemplate.java
  12. 9 9
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/transform/TransformTemplate.java
  13. 4 4
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2SwampZone.java
  14. 13 17
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/AbstractNpcInfo.java
  15. 9 11
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/CharInfo.java
  16. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExAirShipInfo.java
  17. 9 13
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/GMViewCharacterInfo.java
  18. 10 14
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/PetInfo.java
  19. 9 13
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/UserInfo.java
  20. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/VehicleDeparture.java

+ 6 - 6
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/NpcData.java

@@ -271,16 +271,16 @@ public class NpcData extends DocumentParser
 													{
 														case "walk":
 														{
-															set.set("baseWalkSpd", parseFloat(attrs, "ground"));
-															set.set("baseSwimWalkSpd", parseFloat(attrs, "swim"));
-															set.set("baseFlyWalkSpd", parseFloat(attrs, "fly"));
+															set.set("baseWalkSpd", parseDouble(attrs, "ground"));
+															set.set("baseSwimWalkSpd", parseDouble(attrs, "swim"));
+															set.set("baseFlyWalkSpd", parseDouble(attrs, "fly"));
 															break;
 														}
 														case "run":
 														{
-															set.set("baseRunSpd", parseFloat(attrs, "ground"));
-															set.set("baseSwimRunSpd", parseFloat(attrs, "swim"));
-															set.set("baseFlyRunSpd", parseFloat(attrs, "fly"));
+															set.set("baseRunSpd", parseDouble(attrs, "ground"));
+															set.set("baseSwimRunSpd", parseDouble(attrs, "swim"));
+															set.set("baseFlyRunSpd", parseDouble(attrs, "fly"));
 															break;
 														}
 													}

+ 13 - 13
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2PetLevelData.java

@@ -41,12 +41,12 @@ public class L2PetLevelData
 	private final float _petRegenMP;
 	private final short _petSoulShot;
 	private final short _petSpiritShot;
-	private final int _walkSpeedOnRide;
-	private final int _runSpeedOnRide;
-	private final int _slowSwimSpeedOnRide;
-	private final int _fastSwimSpeedOnRide;
-	private final int _slowFlySpeedOnRide;
-	private final int _fastFlySpeedOnRide;
+	private final double _walkSpeedOnRide;
+	private final double _runSpeedOnRide;
+	private final double _slowSwimSpeedOnRide;
+	private final double _fastSwimSpeedOnRide;
+	private final double _slowFlySpeedOnRide;
+	private final double _fastFlySpeedOnRide;
 	
 	public L2PetLevelData(StatsSet set)
 	{
@@ -65,12 +65,12 @@ public class L2PetLevelData
 		_petRegenMP = set.getFloat("org_mp_regen");
 		_petSoulShot = set.getShort("soulshot_count");
 		_petSpiritShot = set.getShort("spiritshot_count");
-		_walkSpeedOnRide = set.getInt("walkSpeedOnRide", 0);
-		_runSpeedOnRide = set.getInt("runSpeedOnRide", 0);
-		_slowSwimSpeedOnRide = set.getInt("slowSwimSpeedOnRide", 0);
-		_fastSwimSpeedOnRide = set.getInt("fastSwimSpeedOnRide", 0);
-		_slowFlySpeedOnRide = set.getInt("slowFlySpeedOnRide", 0);
-		_fastFlySpeedOnRide = set.getInt("fastFlySpeedOnRide", 0);
+		_walkSpeedOnRide = set.getDouble("walkSpeedOnRide", 0);
+		_runSpeedOnRide = set.getDouble("runSpeedOnRide", 0);
+		_slowSwimSpeedOnRide = set.getDouble("slowSwimSpeedOnRide", 0);
+		_fastSwimSpeedOnRide = set.getDouble("fastSwimSpeedOnRide", 0);
+		_slowFlySpeedOnRide = set.getDouble("slowFlySpeedOnRide", 0);
+		_fastFlySpeedOnRide = set.getDouble("fastFlySpeedOnRide", 0);
 	}
 	
 	/**
@@ -197,7 +197,7 @@ public class L2PetLevelData
 	 * @param mt movement type
 	 * @return the base riding speed of given movement type.
 	 */
-	public int getSpeedOnRide(MoveType mt)
+	public double getSpeedOnRide(MoveType mt)
 	{
 		switch (mt)
 		{

+ 39 - 34
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Character.java

@@ -4278,7 +4278,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
 		double distFraction = Double.MAX_VALUE;
 		if (delta > 1)
 		{
-			final double distPassed = (getStat().getMoveSpeed() * (gameTicks - m._moveTimestamp)) / GameTimeController.TICKS_PER_SECOND;
+			final double distPassed = (getMoveSpeed() * (gameTicks - m._moveTimestamp)) / GameTimeController.TICKS_PER_SECOND;
 			distFraction = distPassed / delta;
 		}
 		
@@ -4468,7 +4468,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
 	protected void moveToLocation(int x, int y, int z, int offset)
 	{
 		// Get the Move Speed of the L2Charcater
-		float speed = getStat().getMoveSpeed();
+		double speed = getMoveSpeed();
 		if ((speed <= 0) || isMovementDisabled())
 		{
 			return;
@@ -4761,7 +4761,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
 		}
 		
 		// Get the Move Speed of the L2Charcater
-		float speed = getStat().getMoveSpeed();
+		double speed = getMoveSpeed();
 		if ((speed <= 0) || isMovementDisabled())
 		{
 			// Cancel the move action
@@ -6452,16 +6452,6 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
 		return getStat().getAttackSpeedMultiplier();
 	}
 	
-	public int getCON()
-	{
-		return getStat().getCON();
-	}
-	
-	public int getDEX()
-	{
-		return getStat().getDEX();
-	}
-	
 	public final double getCriticalDmg(L2Character target, double init)
 	{
 		return getStat().getCriticalDmg(target, init);
@@ -6477,11 +6467,6 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
 		return getStat().getEvasionRate(target);
 	}
 	
-	public int getINT()
-	{
-		return getStat().getINT();
-	}
-	
 	public final int getMagicalAttackRange(Skill skill)
 	{
 		return getStat().getMagicalAttackRange(skill);
@@ -6537,21 +6522,11 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
 		return getStat().getMDef(target, skill);
 	}
 	
-	public int getMEN()
-	{
-		return getStat().getMEN();
-	}
-	
 	public double getMReuseRate(Skill skill)
 	{
 		return getStat().getMReuseRate(skill);
 	}
 	
-	public float getMovementSpeedMultiplier()
-	{
-		return getStat().getMovementSpeedMultiplier();
-	}
-	
 	public int getPAtk(L2Character target)
 	{
 		return getStat().getPAtk(target);
@@ -6572,16 +6547,36 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
 		return getStat().getPhysicalAttackRange();
 	}
 	
-	public int getRunSpeed()
+	public double getMovementSpeedMultiplier()
+	{
+		return getStat().getMovementSpeedMultiplier();
+	}
+	
+	public double getRunSpeed()
 	{
 		return getStat().getRunSpeed();
 	}
 	
-	public int getSwimRunSpeed()
+	public double getWalkSpeed()
+	{
+		return getStat().getWalkSpeed();
+	}
+	
+	public final double getSwimRunSpeed()
 	{
 		return getStat().getSwimRunSpeed();
 	}
 	
+	public final double getSwimWalkSpeed()
+	{
+		return getStat().getSwimWalkSpeed();
+	}
+	
+	public double getMoveSpeed()
+	{
+		return getStat().getMoveSpeed();
+	}
+	
 	public final int getShldDef()
 	{
 		return getStat().getShldDef();
@@ -6592,14 +6587,19 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
 		return getStat().getSTR();
 	}
 	
-	public final int getWalkSpeed()
+	public int getDEX()
 	{
-		return getStat().getWalkSpeed();
+		return getStat().getDEX();
 	}
 	
-	public final int getSwimWalkSpeed()
+	public int getCON()
 	{
-		return getStat().getSwimWalkSpeed();
+		return getStat().getCON();
+	}
+	
+	public int getINT()
+	{
+		return getStat().getINT();
 	}
 	
 	public int getWIT()
@@ -6607,6 +6607,11 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
 		return getStat().getWIT();
 	}
 	
+	public int getMEN()
+	{
+		return getStat().getMEN();
+	}
+	
 	// Status - NEED TO REMOVE ONCE L2CHARTATUS IS COMPLETE
 	public void addStatusListener(L2Character object)
 	{

+ 36 - 7
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PetInstance.java

@@ -190,14 +190,12 @@ public class L2PetInstance extends L2Summon
 						sm.addItemName(food.getId());
 						sendPacket(sm);
 						handler.useItem(L2PetInstance.this, food, false);
-						broadcastPacket(new ExChangeNpcState(getObjectId(), 0x65));
 					}
 				}
 				
 				if (isUncontrollable())
 				{
 					sendPacket(SystemMessageId.YOUR_PET_IS_STARVING_AND_WILL_NOT_OBEY_UNTIL_IT_GETS_ITS_FOOD_FEED_YOUR_PET);
-					broadcastPacket(new ExChangeNpcState(getObjectId(), 0x64));
 				}
 			}
 			catch (Exception e)
@@ -236,11 +234,6 @@ public class L2PetInstance extends L2Summon
 				pet.getStat().setExp(pet.getStat().getExpForLevel(owner.getLevel()));
 			}
 			L2World.getInstance().addPet(owner.getObjectId(), pet);
-			
-			if (pet.isUncontrollable())
-			{
-				owner.sendPacket(new ExChangeNpcState(pet.getObjectId(), 0x64));
-			}
 		}
 		return pet;
 	}
@@ -324,6 +317,14 @@ public class L2PetInstance extends L2Summon
 	
 	public void setCurrentFed(int num)
 	{
+		if (num <= 0)
+		{
+			sendPacket(new ExChangeNpcState(this.getObjectId(), 0x64));
+		}
+		else if ((_curFed <= 0) && (num > 0))
+		{
+			sendPacket(new ExChangeNpcState(this.getObjectId(), 0x65));
+		}
 		_curFed = num > getMaxFed() ? getMaxFed() : num;
 	}
 	
@@ -1443,4 +1444,32 @@ public class L2PetInstance extends L2Summon
 	{
 		return true;
 	}
+	
+	@Override
+	public final double getRunSpeed()
+	{
+		return super.getRunSpeed() * (isUncontrollable() ? 0.5d : 1.0d);
+	}
+	
+	@Override
+	public final double getWalkSpeed()
+	{
+		return super.getWalkSpeed() * (isUncontrollable() ? 0.5d : 1.0d);
+	}
+	
+	@Override
+	public final double getMovementSpeedMultiplier()
+	{
+		return super.getMovementSpeedMultiplier() * (isUncontrollable() ? 0.5d : 1.0d);
+	}
+	
+	@Override
+	public final double getMoveSpeed()
+	{
+		if (isInsideZone(ZoneId.WATER))
+		{
+			return isRunning() ? getSwimRunSpeed() : getSwimWalkSpeed();
+		}
+		return isRunning() ? getRunSpeed() : getWalkSpeed();
+	}
 }

+ 61 - 58
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/stat/CharStat.java

@@ -380,9 +380,9 @@ public class CharStat
 		return (int) calcStat(Stats.STAT_MEN, _activeChar.getTemplate().getBaseMEN());
 	}
 	
-	public float getMovementSpeedMultiplier()
+	public double getMovementSpeedMultiplier()
 	{
-		float baseSpeed;
+		double baseSpeed;
 		if (_activeChar.isInsideZone(ZoneId.WATER))
 		{
 			baseSpeed = getBaseMoveSpeed(_activeChar.isRunning() ? MoveType.FAST_SWIM : MoveType.SLOW_SWIM);
@@ -391,14 +391,70 @@ public class CharStat
 		{
 			baseSpeed = getBaseMoveSpeed(_activeChar.isRunning() ? MoveType.RUN : MoveType.WALK);
 		}
-		return (float) (getMoveSpeed() * (1. / baseSpeed));
+		return getMoveSpeed() * (1. / baseSpeed);
+	}
+	
+	/**
+	 * @return the RunSpeed (base+modifier) of the L2Character in function of the Armour Expertise Penalty.
+	 */
+	public double getRunSpeed()
+	{
+		final double baseRunSpd = _activeChar.isInsideZone(ZoneId.WATER) ? getSwimRunSpeed() : getBaseMoveSpeed(MoveType.RUN);
+		if (baseRunSpd <= 0)
+		{
+			return 0;
+		}
+		
+		return calcStat(Stats.MOVE_SPEED, baseRunSpd, null, null);
+	}
+	
+	/**
+	 * @return the WalkSpeed (base+modifier) of the L2Character.
+	 */
+	public double getWalkSpeed()
+	{
+		final double baseWalkSpd = _activeChar.isInsideZone(ZoneId.WATER) ? getSwimWalkSpeed() : getBaseMoveSpeed(MoveType.WALK);
+		if (baseWalkSpd <= 0)
+		{
+			return 0;
+		}
+		
+		return calcStat(Stats.MOVE_SPEED, baseWalkSpd);
+	}
+	
+	/**
+	 * @return the SwimRunSpeed (base+modifier) of the L2Character.
+	 */
+	public double getSwimRunSpeed()
+	{
+		final double baseRunSpd = getBaseMoveSpeed(MoveType.FAST_SWIM);
+		if (baseRunSpd <= 0)
+		{
+			return 0;
+		}
+		
+		return calcStat(Stats.MOVE_SPEED, baseRunSpd, null, null);
+	}
+	
+	/**
+	 * @return the SwimWalkSpeed (base+modifier) of the L2Character.
+	 */
+	public double getSwimWalkSpeed()
+	{
+		final double baseWalkSpd = getBaseMoveSpeed(MoveType.SLOW_SWIM);
+		if (baseWalkSpd <= 0)
+		{
+			return 0;
+		}
+		
+		return calcStat(Stats.MOVE_SPEED, baseWalkSpd);
 	}
 	
 	/**
 	 * @param type movement type
 	 * @return the base move speed of given movement type.
 	 */
-	public float getBaseMoveSpeed(MoveType type)
+	public double getBaseMoveSpeed(MoveType type)
 	{
 		return _activeChar.getTemplate().getBaseMoveSpeed(type);
 	}
@@ -406,7 +462,7 @@ public class CharStat
 	/**
 	 * @return the RunSpeed (base+modifier) or WalkSpeed (base+modifier) of the L2Character in function of the movement type.
 	 */
-	public float getMoveSpeed()
+	public double getMoveSpeed()
 	{
 		if (_activeChar.isInsideZone(ZoneId.WATER))
 		{
@@ -512,31 +568,6 @@ public class CharStat
 		return calcStat(Stats.ATK_REUSE, 1, target, null);
 	}
 	
-	/**
-	 * @return the RunSpeed (base+modifier) of the L2Character in function of the Armour Expertise Penalty.
-	 */
-	public int getRunSpeed()
-	{
-		final float baseRunSpd = _activeChar.isInsideZone(ZoneId.WATER) ? getSwimRunSpeed() : getBaseMoveSpeed(MoveType.RUN);
-		if (baseRunSpd == 0)
-		{
-			return 0;
-		}
-		
-		return (int) Math.round(calcStat(Stats.MOVE_SPEED, baseRunSpd, null, null));
-	}
-	
-	public int getSwimRunSpeed()
-	{
-		final float baseRunSpd = getBaseMoveSpeed(MoveType.FAST_SWIM);
-		if (baseRunSpd == 0)
-		{
-			return 0;
-		}
-		
-		return (int) Math.round(calcStat(Stats.MOVE_SPEED, baseRunSpd, null, null));
-	}
-	
 	/**
 	 * @return the ShieldDef rate (base+modifier) of the L2Character.
 	 */
@@ -563,34 +594,6 @@ public class CharStat
 		return (int) calcStat(Stats.STAT_STR, _activeChar.getTemplate().getBaseSTR());
 	}
 	
-	/**
-	 * @return the WalkSpeed (base+modifier) of the L2Character.
-	 */
-	public int getWalkSpeed()
-	{
-		final float baseWalkSpd = _activeChar.isInsideZone(ZoneId.WATER) ? getSwimWalkSpeed() : getBaseMoveSpeed(MoveType.WALK);
-		if (baseWalkSpd == 0)
-		{
-			return 0;
-		}
-		
-		return (int) Math.round(calcStat(Stats.MOVE_SPEED, baseWalkSpd));
-	}
-	
-	/**
-	 * @return the WalkSpeed (base+modifier) of the L2Character.
-	 */
-	public int getSwimWalkSpeed()
-	{
-		final float baseWalkSpd = getBaseMoveSpeed(MoveType.SLOW_SWIM);
-		if (baseWalkSpd == 0)
-		{
-			return 0;
-		}
-		
-		return (int) Math.round(calcStat(Stats.MOVE_SPEED, baseWalkSpd));
-	}
-	
 	/**
 	 * @return the WIT of the L2Character (base+modifier).
 	 */

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/stat/ControllableAirShipStat.java

@@ -34,7 +34,7 @@ public class ControllableAirShipStat extends VehicleStat
 	}
 	
 	@Override
-	public float getMoveSpeed()
+	public double getMoveSpeed()
 	{
 		if (getActiveChar().isInDock() || (getActiveChar().getFuel() > 0))
 		{

+ 5 - 5
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/stat/PcStat.java

@@ -560,7 +560,7 @@ public class PcStat extends PlayableStat
 	 * @return the base move speed of given movement type.
 	 */
 	@Override
-	public float getBaseMoveSpeed(MoveType type)
+	public double getBaseMoveSpeed(MoveType type)
 	{
 		final L2PcInstance player = getActiveChar();
 		if (player.isTransformed())
@@ -583,9 +583,9 @@ public class PcStat extends PlayableStat
 	}
 	
 	@Override
-	public int getRunSpeed()
+	public double getRunSpeed()
 	{
-		int val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+		double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
 		
 		// Apply max run speed cap.
 		if ((val > Config.MAX_RUN_SPEED) && !getActiveChar().canOverrideCond(PcCondOverride.MAX_STATS_VALUE))
@@ -612,9 +612,9 @@ public class PcStat extends PlayableStat
 	}
 	
 	@Override
-	public int getWalkSpeed()
+	public double getWalkSpeed()
 	{
-		int val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+		double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
 		
 		// Apply max run speed cap.
 		if ((val > Config.MAX_RUN_SPEED) && !getActiveChar().canOverrideCond(PcCondOverride.MAX_STATS_VALUE))

+ 0 - 7
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/stat/PetStat.java

@@ -217,11 +217,4 @@ public class PetStat extends SummonStat
 	{
 		return ExperienceTable.getInstance().getMaxPetLevel();
 	}
-	
-	@Override
-	public float getMovementSpeedMultiplier()
-	{
-		// If the pet is starving, the moving speed is drastically reduced.
-		return super.getMovementSpeedMultiplier() * (getActiveChar().isUncontrollable() ? 0.5f : 1f);
-	}
 }

+ 14 - 10
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/stat/PlayableStat.java

@@ -222,29 +222,33 @@ public class PlayableStat extends CharStat
 	}
 	
 	@Override
-	public int getRunSpeed()
+	public double getRunSpeed()
 	{
-		int val = super.getRunSpeed();
 		if (getActiveChar().isInsideZone(ZoneId.SWAMP))
 		{
 			final L2SwampZone zone = ZoneManager.getInstance().getZone(getActiveChar(), L2SwampZone.class);
-			int bonus = zone == null ? 0 : zone.getMoveBonus();
-			val += val * (bonus / 100.0f);
+			if (zone == null)
+			{
+				return super.getRunSpeed();
+			}
+			return super.getRunSpeed() * zone.getMoveBonus();
 		}
-		return val;
+		return super.getRunSpeed();
 	}
 	
 	@Override
-	public int getWalkSpeed()
+	public double getWalkSpeed()
 	{
-		int val = super.getWalkSpeed();
 		if (getActiveChar().isInsideZone(ZoneId.SWAMP))
 		{
 			final L2SwampZone zone = ZoneManager.getInstance().getZone(getActiveChar(), L2SwampZone.class);
-			int bonus = zone == null ? 0 : zone.getMoveBonus();
-			val += val * (bonus / 100.0f);
+			if (zone == null)
+			{
+				return super.getWalkSpeed();
+			}
+			return super.getWalkSpeed() * zone.getMoveBonus();
 		}
-		return val;
+		return super.getRunSpeed();
 	}
 	
 	@Override

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/stat/VehicleStat.java

@@ -31,7 +31,7 @@ public class VehicleStat extends CharStat
 	}
 	
 	@Override
-	public float getMoveSpeed()
+	public double getMoveSpeed()
 	{
 		return _moveSpeed;
 	}
@@ -41,7 +41,7 @@ public class VehicleStat extends CharStat
 		_moveSpeed = speed;
 	}
 	
-	public final int getRotationSpeed()
+	public final double getRotationSpeed()
 	{
 		return _rotationSpeed;
 	}

+ 9 - 9
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/templates/L2CharTemplate.java

@@ -83,7 +83,7 @@ public class L2CharTemplate extends ListenersContainer
 	private double _fCollisionRadius;
 	private double _fCollisionHeight;
 	
-	private final float[] _moveType = new float[MoveType.values().length];
+	private final double[] _moveType = new double[MoveType.values().length];
 	/** The creature's race. */
 	private Race _race;
 	
@@ -144,12 +144,12 @@ public class L2CharTemplate extends ListenersContainer
 		
 		// speed.
 		Arrays.fill(_moveType, 1);
-		setBaseMoveSpeed(MoveType.RUN, set.getFloat("baseRunSpd", 120));
-		setBaseMoveSpeed(MoveType.WALK, set.getFloat("baseWalkSpd", 50));
-		setBaseMoveSpeed(MoveType.FAST_SWIM, set.getFloat("baseSwimRunSpd", getBaseMoveSpeed(MoveType.RUN)));
-		setBaseMoveSpeed(MoveType.SLOW_SWIM, set.getFloat("baseSwimWalkSpd", getBaseMoveSpeed(MoveType.WALK)));
-		setBaseMoveSpeed(MoveType.FAST_FLY, set.getFloat("baseFlyRunSpd", getBaseMoveSpeed(MoveType.RUN)));
-		setBaseMoveSpeed(MoveType.SLOW_FLY, set.getFloat("baseFlyWalkSpd", getBaseMoveSpeed(MoveType.WALK)));
+		setBaseMoveSpeed(MoveType.RUN, set.getDouble("baseRunSpd", 120));
+		setBaseMoveSpeed(MoveType.WALK, set.getDouble("baseWalkSpd", 50));
+		setBaseMoveSpeed(MoveType.FAST_SWIM, set.getDouble("baseSwimRunSpd", getBaseMoveSpeed(MoveType.RUN)));
+		setBaseMoveSpeed(MoveType.SLOW_SWIM, set.getDouble("baseSwimWalkSpd", getBaseMoveSpeed(MoveType.WALK)));
+		setBaseMoveSpeed(MoveType.FAST_FLY, set.getDouble("baseFlyRunSpd", getBaseMoveSpeed(MoveType.RUN)));
+		setBaseMoveSpeed(MoveType.SLOW_FLY, set.getDouble("baseFlyWalkSpd", getBaseMoveSpeed(MoveType.WALK)));
 	}
 	
 	/**
@@ -432,12 +432,12 @@ public class L2CharTemplate extends ListenersContainer
 		return _baseMCritRate;
 	}
 	
-	public void setBaseMoveSpeed(MoveType type, float val)
+	public void setBaseMoveSpeed(MoveType type, double val)
 	{
 		_moveType[type.ordinal()] = val;
 	}
 	
-	public float getBaseMoveSpeed(MoveType mt)
+	public double getBaseMoveSpeed(MoveType mt)
 	{
 		return _moveType[mt.ordinal()];
 	}

+ 9 - 9
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/transform/TransformTemplate.java

@@ -50,7 +50,7 @@ public final class TransformTemplate
 	private List<AdditionalItemHolder> _additionalItems;
 	private Map<Integer, Integer> _baseDefense;
 	private Map<Integer, Double> _baseStats;
-	private Map<Integer, Float> _baseSpeed;
+	private Map<Integer, Double> _baseSpeed;
 	
 	private ExBasicActionList _list;
 	private final Map<Integer, TransformLevelData> _data = new LinkedHashMap<>(100);
@@ -63,12 +63,12 @@ public final class TransformTemplate
 		_baseAttackRange = set.getInt("range", 40);
 		_baseRandomDamage = set.getDouble("randomDamage", 0);
 		
-		addSpeed(MoveType.WALK, set.getFloat("walk", 0));
-		addSpeed(MoveType.RUN, set.getFloat("run", 0));
-		addSpeed(MoveType.SLOW_SWIM, set.getFloat("waterWalk", 0));
-		addSpeed(MoveType.FAST_SWIM, set.getFloat("waterRun", 0));
-		addSpeed(MoveType.SLOW_FLY, set.getFloat("flyWalk", 0));
-		addSpeed(MoveType.FAST_FLY, set.getFloat("flyRun", 0));
+		addSpeed(MoveType.WALK, set.getDouble("walk", 0));
+		addSpeed(MoveType.RUN, set.getDouble("run", 0));
+		addSpeed(MoveType.SLOW_SWIM, set.getDouble("waterWalk", 0));
+		addSpeed(MoveType.FAST_SWIM, set.getDouble("waterRun", 0));
+		addSpeed(MoveType.SLOW_FLY, set.getDouble("flyWalk", 0));
+		addSpeed(MoveType.FAST_FLY, set.getDouble("flyRun", 0));
 		
 		addStats(Stats.POWER_ATTACK, set.getDouble("pAtk", 0));
 		addStats(Stats.MAGIC_ATTACK, set.getDouble("mAtk", 0));
@@ -96,7 +96,7 @@ public final class TransformTemplate
 		addDefense(Inventory.PAPERDOLL_NECK, set.getInt("neck", 0));
 	}
 	
-	private void addSpeed(MoveType type, float val)
+	private void addSpeed(MoveType type, double val)
 	{
 		if (_baseSpeed == null)
 		{
@@ -105,7 +105,7 @@ public final class TransformTemplate
 		_baseSpeed.put(type.ordinal(), val);
 	}
 	
-	public float getBaseMoveSpeed(MoveType type)
+	public double getBaseMoveSpeed(MoveType type)
 	{
 		if ((_baseSpeed == null) || !_baseSpeed.containsKey(type.ordinal()))
 		{

+ 4 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2SwampZone.java

@@ -31,7 +31,7 @@ import com.l2jserver.gameserver.model.zone.ZoneId;
  */
 public class L2SwampZone extends L2ZoneType
 {
-	private int _move_bonus;
+	private double _move_bonus;
 	
 	private int _castleId;
 	private Castle _castle;
@@ -41,7 +41,7 @@ public class L2SwampZone extends L2ZoneType
 		super(id);
 		
 		// Setup default speed reduce (in %)
-		_move_bonus = -50;
+		_move_bonus = 0.5;
 		
 		// no castle by default
 		_castleId = 0;
@@ -53,7 +53,7 @@ public class L2SwampZone extends L2ZoneType
 	{
 		if (name.equals("move_bonus"))
 		{
-			_move_bonus = Integer.parseInt(value);
+			_move_bonus = Double.parseDouble(value);
 		}
 		else if (name.equals("castleId"))
 		{
@@ -115,7 +115,7 @@ public class L2SwampZone extends L2ZoneType
 		}
 	}
 	
-	public int getMoveBonus()
+	public double getMoveBonus()
 	{
 		return _move_bonus;
 	}

+ 13 - 17
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/AbstractNpcInfo.java

@@ -40,13 +40,9 @@ public abstract class AbstractNpcInfo extends L2GameServerPacket
 	protected boolean _isAttackable, _isSummoned;
 	protected int _mAtkSpd, _pAtkSpd;
 	protected final int _runSpd, _walkSpd;
-	protected final int _swimRunSpd;
-	protected final int _swimWalkSpd;
-	protected final int _flRunSpd = 0;
-	protected final int _flWalkSpd = 0;
-	protected final int _flyRunSpd;
-	protected final int _flyWalkSpd;
-	protected float _moveMultiplier;
+	protected final int _swimRunSpd, _swimWalkSpd;
+	protected final int _flyRunSpd, _flyWalkSpd;
+	protected double _moveMultiplier;
 	
 	protected int _rhand, _lhand, _chest, _enchantEffect;
 	protected double _collisionHeight, _collisionRadius;
@@ -63,10 +59,10 @@ public abstract class AbstractNpcInfo extends L2GameServerPacket
 		_mAtkSpd = cha.getMAtkSpd();
 		_pAtkSpd = cha.getPAtkSpd();
 		_moveMultiplier = cha.getMovementSpeedMultiplier();
-		_runSpd = Math.round(cha.getRunSpeed() / _moveMultiplier);
-		_walkSpd = Math.round(cha.getWalkSpeed() / _moveMultiplier);
-		_swimRunSpd = Math.round(cha.getSwimRunSpeed() / _moveMultiplier);
-		_swimWalkSpd = Math.round(cha.getSwimWalkSpeed() / _moveMultiplier);
+		_runSpd = (int) Math.round(cha.getRunSpeed() / _moveMultiplier);
+		_walkSpd = (int) Math.round(cha.getWalkSpeed() / _moveMultiplier);
+		_swimRunSpd = (int) Math.round(cha.getSwimRunSpeed() / _moveMultiplier);
+		_swimWalkSpd = (int) Math.round(cha.getSwimWalkSpeed() / _moveMultiplier);
 		_flyRunSpd = cha.isFlying() ? _runSpd : 0;
 		_flyWalkSpd = cha.isFlying() ? _walkSpd : 0;
 	}
@@ -162,8 +158,8 @@ public abstract class AbstractNpcInfo extends L2GameServerPacket
 			writeD(_walkSpd);
 			writeD(_swimRunSpd);
 			writeD(_swimWalkSpd);
-			writeD(_flRunSpd);
-			writeD(_flWalkSpd);
+			writeD(_flyRunSpd);
+			writeD(_flyWalkSpd);
 			writeD(_flyRunSpd);
 			writeD(_flyWalkSpd);
 			writeF(_moveMultiplier);
@@ -248,8 +244,8 @@ public abstract class AbstractNpcInfo extends L2GameServerPacket
 			writeD(_walkSpd);
 			writeD(_swimRunSpd);
 			writeD(_swimWalkSpd);
-			writeD(_flRunSpd);
-			writeD(_flWalkSpd);
+			writeD(_flyRunSpd);
+			writeD(_flyWalkSpd);
 			writeD(_flyRunSpd);
 			writeD(_flyWalkSpd);
 			writeF(_moveMultiplier);
@@ -351,8 +347,8 @@ public abstract class AbstractNpcInfo extends L2GameServerPacket
 			writeD(_walkSpd);
 			writeD(_swimRunSpd);
 			writeD(_swimWalkSpd);
-			writeD(_flRunSpd);
-			writeD(_flWalkSpd);
+			writeD(_flyRunSpd);
+			writeD(_flyWalkSpd);
 			writeD(_flyRunSpd);
 			writeD(_flyWalkSpd);
 			writeF(_moveMultiplier);

+ 9 - 11
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/CharInfo.java

@@ -39,11 +39,9 @@ public class CharInfo extends L2GameServerPacket
 	private final int _runSpd, _walkSpd;
 	private final int _swimRunSpd;
 	private final int _swimWalkSpd;
-	private final int _flRunSpd = 0;
-	private final int _flWalkSpd = 0;
 	private final int _flyRunSpd;
 	private final int _flyWalkSpd;
-	private final float _moveMultiplier;
+	private final double _moveMultiplier;
 	private final float _attackSpeedMultiplier;
 	
 	private int _vehicleId = 0;
@@ -97,10 +95,10 @@ public class CharInfo extends L2GameServerPacket
 		_invisible = cha.isInvisible();
 		
 		_moveMultiplier = cha.getMovementSpeedMultiplier();
-		_runSpd = Math.round(cha.getRunSpeed() / _moveMultiplier);
-		_walkSpd = Math.round(cha.getWalkSpeed() / _moveMultiplier);
-		_swimRunSpd = Math.round(cha.getSwimRunSpeed() / _moveMultiplier);
-		_swimWalkSpd = Math.round(cha.getSwimWalkSpeed() / _moveMultiplier);
+		_runSpd = (int) Math.round(cha.getRunSpeed() / _moveMultiplier);
+		_walkSpd = (int) Math.round(cha.getWalkSpeed() / _moveMultiplier);
+		_swimRunSpd = (int) Math.round(cha.getSwimRunSpeed() / _moveMultiplier);
+		_swimWalkSpd = (int) Math.round(cha.getSwimWalkSpeed() / _moveMultiplier);
 		_flyRunSpd = cha.isFlying() ? _runSpd : 0;
 		_flyWalkSpd = cha.isFlying() ? _walkSpd : 0;
 	}
@@ -147,8 +145,8 @@ public class CharInfo extends L2GameServerPacket
 			writeD(_walkSpd);
 			writeD(_swimRunSpd);
 			writeD(_swimWalkSpd);
-			writeD(_flRunSpd);
-			writeD(_flWalkSpd);
+			writeD(_flyRunSpd);
+			writeD(_flyWalkSpd);
 			writeD(_flyRunSpd);
 			writeD(_flyWalkSpd);
 			writeF(_moveMultiplier);
@@ -235,8 +233,8 @@ public class CharInfo extends L2GameServerPacket
 			writeD(_walkSpd);
 			writeD(_swimRunSpd);
 			writeD(_swimWalkSpd);
-			writeD(_flRunSpd);
-			writeD(_flWalkSpd);
+			writeD(_flyRunSpd);
+			writeD(_flyWalkSpd);
 			writeD(_flyRunSpd);
 			writeD(_flyWalkSpd);
 			writeF(_moveMultiplier);

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExAirShipInfo.java

@@ -34,7 +34,7 @@ public class ExAirShipInfo extends L2GameServerPacket
 		_z = ship.getZ();
 		_heading = ship.getHeading();
 		_moveSpeed = (int) ship.getStat().getMoveSpeed();
-		_rotationSpeed = ship.getStat().getRotationSpeed();
+		_rotationSpeed = (int) ship.getStat().getRotationSpeed();
 		_captain = ship.getCaptainId();
 		_helm = ship.getHelmObjectId();
 	}

+ 9 - 13
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/GMViewCharacterInfo.java

@@ -25,22 +25,18 @@ public class GMViewCharacterInfo extends L2GameServerPacket
 {
 	private final L2PcInstance _activeChar;
 	private final int _runSpd, _walkSpd;
-	private final int _swimRunSpd;
-	private final int _swimWalkSpd;
-	private final int _flRunSpd = 0;
-	private final int _flWalkSpd = 0;
-	private final int _flyRunSpd;
-	private final int _flyWalkSpd;
-	private final float _moveMultiplier;
+	private final int _swimRunSpd, _swimWalkSpd;
+	private final int _flyRunSpd, _flyWalkSpd;
+	private final double _moveMultiplier;
 	
 	public GMViewCharacterInfo(L2PcInstance cha)
 	{
 		_activeChar = cha;
 		_moveMultiplier = cha.getMovementSpeedMultiplier();
-		_runSpd = Math.round(cha.getRunSpeed() / _moveMultiplier);
-		_walkSpd = Math.round(cha.getWalkSpeed() / _moveMultiplier);
-		_swimRunSpd = cha.getSwimRunSpeed();
-		_swimWalkSpd = cha.getSwimWalkSpeed();
+		_runSpd = (int) Math.round(cha.getRunSpeed() / _moveMultiplier);
+		_walkSpd = (int) Math.round(cha.getWalkSpeed() / _moveMultiplier);
+		_swimRunSpd = (int) Math.round(cha.getSwimRunSpeed() / _moveMultiplier);
+		_swimWalkSpd = (int) Math.round(cha.getSwimWalkSpeed() / _moveMultiplier);
 		_flyRunSpd = cha.isFlying() ? _runSpd : 0;
 		_flyWalkSpd = cha.isFlying() ? _walkSpd : 0;
 	}
@@ -114,8 +110,8 @@ public class GMViewCharacterInfo extends L2GameServerPacket
 		writeD(_walkSpd);
 		writeD(_swimRunSpd);
 		writeD(_swimWalkSpd);
-		writeD(_flRunSpd);
-		writeD(_flWalkSpd);
+		writeD(_flyRunSpd);
+		writeD(_flyWalkSpd);
 		writeD(_flyRunSpd);
 		writeD(_flyWalkSpd);
 		writeF(_moveMultiplier);

+ 10 - 14
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/PetInfo.java

@@ -31,13 +31,9 @@ public class PetInfo extends L2GameServerPacket
 	private final int _val;
 	private final int _mAtkSpd, _pAtkSpd;
 	private final int _runSpd, _walkSpd;
-	private final int _swimRunSpd;
-	private final int _swimWalkSpd;
-	private final int _flRunSpd = 0;
-	private final int _flWalkSpd = 0;
-	private final int _flyRunSpd;
-	private final int _flyWalkSpd;
-	private final float _moveMultiplier;
+	private final int _swimRunSpd, _swimWalkSpd;
+	private final int _flyRunSpd, _flyWalkSpd;
+	private final double _moveMultiplier;
 	private final int _maxHp, _maxMp;
 	private int _maxFed, _curFed;
 	
@@ -52,10 +48,10 @@ public class PetInfo extends L2GameServerPacket
 		_mAtkSpd = summon.getMAtkSpd();
 		_pAtkSpd = summon.getPAtkSpd();
 		_moveMultiplier = summon.getMovementSpeedMultiplier();
-		_runSpd = Math.round(summon.getRunSpeed() / _moveMultiplier);
-		_walkSpd = Math.round(summon.getWalkSpeed() / _moveMultiplier);
-		_swimRunSpd = Math.round(summon.getSwimRunSpeed() / _moveMultiplier);
-		_swimWalkSpd = Math.round(summon.getSwimWalkSpeed() / _moveMultiplier);
+		_runSpd = (int) Math.round(summon.getRunSpeed() / _moveMultiplier);
+		_walkSpd = (int) Math.round(summon.getWalkSpeed() / _moveMultiplier);
+		_swimRunSpd = (int) Math.round(summon.getSwimRunSpeed() / _moveMultiplier);
+		_swimWalkSpd = (int) Math.round(summon.getSwimWalkSpeed() / _moveMultiplier);
 		_flyRunSpd = summon.isFlying() ? _runSpd : 0;
 		_flyWalkSpd = summon.isFlying() ? _walkSpd : 0;
 		_maxHp = summon.getMaxHp();
@@ -95,8 +91,8 @@ public class PetInfo extends L2GameServerPacket
 		writeD(_walkSpd);
 		writeD(_swimRunSpd);
 		writeD(_swimWalkSpd);
-		writeD(_flRunSpd);
-		writeD(_flWalkSpd);
+		writeD(_flyRunSpd);
+		writeD(_flyWalkSpd);
 		writeD(_flyRunSpd);
 		writeD(_flyWalkSpd);
 		writeF(_moveMultiplier);
@@ -154,7 +150,7 @@ public class PetInfo extends L2GameServerPacket
 		writeD(_summon.getAccuracy());// accuracy
 		writeD(_summon.getEvasionRate(null));// evasion
 		writeD(_summon.getCriticalHit(null, null));// critical
-		writeD((int) _summon.getStat().getMoveSpeed());// speed
+		writeD((int) _summon.getMoveSpeed());// speed
 		writeD(_summon.getPAtkSpd());// atkspeed
 		writeD(_summon.getMAtkSpd());// casting speed
 		

+ 9 - 13
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/UserInfo.java

@@ -36,13 +36,9 @@ public final class UserInfo extends L2GameServerPacket
 	private int _airShipHelm;
 	
 	private final int _runSpd, _walkSpd;
-	private final int _swimRunSpd;
-	private final int _swimWalkSpd;
-	private final int _flRunSpd = 0;
-	private final int _flWalkSpd = 0;
-	private final int _flyRunSpd;
-	private final int _flyWalkSpd;
-	private final float _moveMultiplier;
+	private final int _swimRunSpd, _swimWalkSpd;
+	private final int _flyRunSpd, _flyWalkSpd;
+	private final double _moveMultiplier;
 	
 	public UserInfo(L2PcInstance cha)
 	{
@@ -76,10 +72,10 @@ public final class UserInfo extends L2GameServerPacket
 		}
 		
 		_moveMultiplier = cha.getMovementSpeedMultiplier();
-		_runSpd = Math.round(cha.getRunSpeed() / _moveMultiplier);
-		_walkSpd = Math.round(cha.getWalkSpeed() / _moveMultiplier);
-		_swimRunSpd = Math.round(cha.getSwimRunSpeed() / _moveMultiplier);
-		_swimWalkSpd = Math.round(cha.getSwimWalkSpeed() / _moveMultiplier);
+		_runSpd = (int) Math.round(cha.getRunSpeed() / _moveMultiplier);
+		_walkSpd = (int) Math.round(cha.getWalkSpeed() / _moveMultiplier);
+		_swimRunSpd = (int) Math.round(cha.getSwimRunSpeed() / _moveMultiplier);
+		_swimWalkSpd = (int) Math.round(cha.getSwimWalkSpeed() / _moveMultiplier);
 		_flyRunSpd = cha.isFlying() ? _runSpd : 0;
 		_flyWalkSpd = cha.isFlying() ? _walkSpd : 0;
 	}
@@ -157,8 +153,8 @@ public final class UserInfo extends L2GameServerPacket
 		writeD(_walkSpd);
 		writeD(_swimRunSpd);
 		writeD(_swimWalkSpd);
-		writeD(_flRunSpd);
-		writeD(_flWalkSpd);
+		writeD(_flyRunSpd);
+		writeD(_flyWalkSpd);
 		writeD(_flyRunSpd);
 		writeD(_flyWalkSpd);
 		writeF(_moveMultiplier);

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/VehicleDeparture.java

@@ -36,8 +36,8 @@ public class VehicleDeparture extends L2GameServerPacket
 		_x = boat.getXdestination();
 		_y = boat.getYdestination();
 		_z = boat.getZdestination();
-		_moveSpeed = (int) boat.getStat().getMoveSpeed();
-		_rotationSpeed = boat.getStat().getRotationSpeed();
+		_moveSpeed = (int) boat.getMoveSpeed();
+		_rotationSpeed = (int) boat.getStat().getRotationSpeed();
 	}
 	
 	@Override