Ver Fonte

After altered state end L2pc does not need act. Fix #4751.
Moved reduce dmg from fall calcFunc.

JIV há 15 anos atrás
pai
commit
c96758ded0

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

@@ -2961,7 +2961,8 @@ public abstract class L2Character extends L2Object
 			removeEffect(effect);
 
 		setIsConfused(false);
-		getAI().notifyEvent(CtrlEvent.EVT_THINK);
+        if (!(this instanceof L2PcInstance))
+        	getAI().notifyEvent(CtrlEvent.EVT_THINK);
 		updateAbnormalEffect();
 	}
 
@@ -3057,7 +3058,6 @@ public abstract class L2Character extends L2Object
 		//TODO: Temp hack: players see FD on ppl that are moving: Teleport to someone who uses FD - if he gets up he will fall down again for that client -
 		// even tho he is actually standing... Probably bad info in CharInfo packet?
 		broadcastPacket(new Revive(this));
-		getAI().notifyEvent(CtrlEvent.EVT_THINK);
 	}
 
 	/**
@@ -3131,7 +3131,8 @@ public abstract class L2Character extends L2Object
 			removeEffect(effect);
 
 		setIsRooted(false);
-		getAI().notifyEvent(CtrlEvent.EVT_THINK);
+        if (!(this instanceof L2PcInstance))
+        	getAI().notifyEvent(CtrlEvent.EVT_THINK);
 		updateAbnormalEffect();
 	}
 	
@@ -3163,7 +3164,8 @@ public abstract class L2Character extends L2Object
         }
 		 	
         setIsImmobileUntilAttacked(false);
-        getAI().notifyEvent(CtrlEvent.EVT_THINK);
+        if (!(this instanceof L2PcInstance))
+        	getAI().notifyEvent(CtrlEvent.EVT_THINK);
         updateAbnormalEffect();
     }
 
@@ -3185,7 +3187,8 @@ public abstract class L2Character extends L2Object
 			removeEffect(effect);
 
 		setIsSleeping(false);
-		getAI().notifyEvent(CtrlEvent.EVT_THINK);
+        if (!(this instanceof L2PcInstance))
+        	getAI().notifyEvent(CtrlEvent.EVT_THINK);
 		updateAbnormalEffect();
 	}
 
@@ -3207,7 +3210,8 @@ public abstract class L2Character extends L2Object
 			removeEffect(effect);
 
 		setIsStunned(false);
-		getAI().notifyEvent(CtrlEvent.EVT_THINK);
+        if (!(this instanceof L2PcInstance))
+        	getAI().notifyEvent(CtrlEvent.EVT_THINK);
 		updateAbnormalEffect();
 	}
 
@@ -3219,7 +3223,8 @@ public abstract class L2Character extends L2Object
 			removeEffect(effect);
 
 		setIsParalyzed(false);
-		getAI().notifyEvent(CtrlEvent.EVT_THINK);
+        if (!(this instanceof L2PcInstance))
+        	getAI().notifyEvent(CtrlEvent.EVT_THINK);
 		updateAbnormalEffect();
 	}
 
@@ -3252,7 +3257,8 @@ public abstract class L2Character extends L2Object
             }
         }
         
-        getAI().notifyEvent(CtrlEvent.EVT_THINK);
+        if (!(this instanceof L2PcInstance))
+        	getAI().notifyEvent(CtrlEvent.EVT_THINK);
         updateAbnormalEffect();
     }
 

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

@@ -420,7 +420,7 @@ public class L2CubicInstance
 				if ((_owner.getPvpFlag() > 0 && !_owner.isInsideZone(L2Character.ZONE_PEACE))
 				        || _owner.isInsideZone(L2Character.ZONE_PVP))
 				{
-					if (ownerTarget instanceof L2Character && !((L2Character) ownerTarget).isDead())
+					if (!((L2Character) ownerTarget).isDead())
 						enemy = ownerTarget.getActingPlayer();
 					
 					if (enemy != null)

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

@@ -14680,7 +14680,10 @@ public final class L2PcInstance extends L2Playable
 
 		final int damage = (int)Formulas.calcFallDam(this, deltaZ);
 		if (damage > 0)
+		{
+			reduceCurrentHp(Math.min(damage, getCurrentHp() - 1), null, false, true, null);
 			sendPacket(new SystemMessage(SystemMessageId.FALL_DAMAGE_S1).addNumber(damage));
+		}
 
 		setFalling();
 

+ 2 - 5
L2_GameServer/java/com/l2jserver/gameserver/skills/Formulas.java

@@ -2881,19 +2881,16 @@ public final class Formulas
 	}
 
     /**
-     * Calculate and apply damage caused by falling, character will not die
+     * Calculate damage caused by falling
      * @param cha
      * @param fallHeight
-     * @return
+     * @return damage
      */
     public static double calcFallDam(L2Character cha, int fallHeight)
     {
     	if (!Config.ENABLE_FALLING_DAMAGE || fallHeight < 0)
     		return 0;
-
     	final double damage = cha.calcStat(Stats.FALL, fallHeight * cha.getMaxHp() / 1000, null, null);
-		cha.reduceCurrentHp(Math.min(damage, cha.getCurrentHp() - 1), null, false, true, null);
-
 		return damage;
     }
 }