فهرست منبع

New functions isMortal() and setIsMortal(). If NPC has isMortal = false then he will not die if HP decreased to 0.
Required for some Hellbound NPCs.

_DS_ 15 سال پیش
والد
کامیت
e7cc3be39b

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

@@ -169,6 +169,7 @@ public abstract class L2Character extends L2Object
 	protected boolean _isTeleporting                        = false;
 	private L2Character _lastBuffer							= null;
 	protected boolean _isInvul                              = false;
+	private boolean _isMortal                               = true; // Char will die when HP decreased to 0 
 	private int _lastHealAmount								= 0;
 	private CharStat _stat;
 	private CharStatus _status;
@@ -2346,6 +2347,8 @@ public abstract class L2Character extends L2Object
 	public void setIsTeleporting(boolean value) { _isTeleporting = value; }
 	public void setIsInvul(boolean b){_isInvul = b;}
 	public boolean isInvul(){return _isInvul  || _isTeleporting;}
+	public void setIsMortal(boolean b) { _isMortal = b; }
+	public boolean isMortal(){ return _isMortal; }
 	public boolean isUndead() { return _template.isUndead; }
 	
 	public final boolean isFlying() { return _isFlying; }

+ 2 - 1
L2_GameServer/java/com/l2jserver/gameserver/model/actor/status/CharStatus.java

@@ -185,7 +185,8 @@ public class CharStatus
 		if (value > 0) // Reduce Hp if any, and Hp can't be negative
 			setCurrentHp(Math.max(getCurrentHp() - value, 0));
 
-		if (getActiveChar().getCurrentHp() < 0.5) // Die
+		if (getActiveChar().getCurrentHp() < 0.5
+				&& getActiveChar().isMortal()) // Die
 		{
 			getActiveChar().abortAttack();
 			getActiveChar().abortCast();