浏览代码

BETA: Avoid status update when amount of heal (cp, hp and mp) is 0.
Reviewed by: UnAfraid

Adry_85 12 年之前
父节点
当前提交
7ee3d49f00

+ 7 - 6
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CpHeal.java

@@ -52,19 +52,20 @@ public class CpHeal extends L2Effect
 			return false;
 		}
 		
-		StatusUpdate su = new StatusUpdate(target);
 		double amount = calc();
 		
 		// Prevents overheal and negative amount
 		amount = Math.max(Math.min(amount, target.getMaxRecoverableCp() - target.getCurrentCp()), 0);
-		
-		target.setCurrentCp(amount + target.getCurrentCp());
-		
+		if (amount != 0)
+		{
+			target.setCurrentCp(amount + target.getCurrentCp());
+			StatusUpdate su = new StatusUpdate(target);
+			su.addAttribute(StatusUpdate.CUR_CP, (int) target.getCurrentCp());
+			target.sendPacket(su);
+		}
 		SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_CP_WILL_BE_RESTORED);
 		sm.addNumber((int) amount);
 		target.sendPacket(sm);
-		su.addAttribute(StatusUpdate.CUR_CP, (int) target.getCurrentCp());
-		target.sendPacket(su);
 		return true;
 	}
 	

+ 8 - 7
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CpHealPercent.java

@@ -51,23 +51,24 @@ public class CpHealPercent extends L2Effect
 		{
 			return false;
 		}
-		StatusUpdate su = new StatusUpdate(target);
+		
 		double amount = 0;
 		double power = calc();
 		boolean full = (power == 100.0);
 		
 		amount = full ? target.getMaxCp() : (target.getMaxCp() * power) / 100.0;
-		
 		// Prevents overheal and negative amount
 		amount = Math.max(Math.min(amount, target.getMaxRecoverableCp() - target.getCurrentCp()), 0);
-		
-		target.setCurrentCp(amount + target.getCurrentCp());
-		
+		if (amount != 0)
+		{
+			target.setCurrentCp(amount + target.getCurrentCp());
+			StatusUpdate su = new StatusUpdate(target);
+			su.addAttribute(StatusUpdate.CUR_CP, (int) target.getCurrentCp());
+			target.sendPacket(su);
+		}
 		SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_CP_WILL_BE_RESTORED);
 		sm.addNumber((int) amount);
 		target.sendPacket(sm);
-		su.addAttribute(StatusUpdate.CUR_CP, (int) target.getCurrentCp());
-		target.sendPacket(su);
 		return true;
 	}
 	

+ 7 - 4
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Heal.java

@@ -101,10 +101,13 @@ public class Heal extends L2Effect
 		
 		// Prevents overheal and negative amount
 		amount = Math.max(Math.min(amount, target.getMaxRecoverableHp() - target.getCurrentHp()), 0);
-		target.setCurrentHp(amount + target.getCurrentHp());
-		StatusUpdate su = new StatusUpdate(target);
-		su.addAttribute(StatusUpdate.CUR_HP, (int) target.getCurrentHp());
-		target.sendPacket(su);
+		if (amount != 0)
+		{
+			target.setCurrentHp(amount + target.getCurrentHp());
+			StatusUpdate su = new StatusUpdate(target);
+			su.addAttribute(StatusUpdate.CUR_HP, (int) target.getCurrentHp());
+			target.sendPacket(su);
+		}
 		
 		if (target.isPlayer())
 		{

+ 1 - 5
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/HealOverTime.java

@@ -63,11 +63,7 @@ public class HealOverTime extends L2Effect
 	@Override
 	public boolean onActionTime()
 	{
-		if (getEffected().isDead())
-		{
-			return false;
-		}
-		else if (getEffected().isDoor())
+		if (getEffected().isDead() || getEffected().isDoor())
 		{
 			return false;
 		}

+ 7 - 8
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/HealPercent.java

@@ -52,18 +52,20 @@ public class HealPercent extends L2Effect
 			return false;
 		}
 		
-		StatusUpdate su = new StatusUpdate(target);
 		double amount = 0;
 		double power = calc();
 		boolean full = (power == 100.0);
 		
 		amount = full ? target.getMaxHp() : (target.getMaxHp() * power) / 100.0;
-		
 		// Prevents overheal and negative amount
 		amount = Math.max(Math.min(amount, target.getMaxRecoverableHp() - target.getCurrentHp()), 0);
-		
-		target.setCurrentHp(amount + target.getCurrentHp());
-		
+		if (amount != 0)
+		{
+			target.setCurrentHp(amount + target.getCurrentHp());
+			StatusUpdate su = new StatusUpdate(target);
+			su.addAttribute(StatusUpdate.CUR_HP, (int) target.getCurrentHp());
+			target.sendPacket(su);
+		}
 		SystemMessage sm;
 		if (getEffector().getObjectId() != target.getObjectId())
 		{
@@ -74,11 +76,8 @@ public class HealPercent extends L2Effect
 		{
 			sm = SystemMessage.getSystemMessage(SystemMessageId.S1_HP_RESTORED);
 		}
-		
 		sm.addNumber((int) amount);
 		target.sendPacket(sm);
-		su.addAttribute(StatusUpdate.CUR_HP, (int) target.getCurrentHp());
-		target.sendPacket(su);
 		return true;
 	}
 	

+ 7 - 7
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHeal.java

@@ -53,8 +53,6 @@ public class ManaHeal extends L2Effect
 			return false;
 		}
 		
-		StatusUpdate su = new StatusUpdate(target);
-		
 		double amount = calc();
 		
 		if (!getSkill().isStatic())
@@ -64,9 +62,13 @@ public class ManaHeal extends L2Effect
 		
 		// Prevents overheal and negative amount
 		amount = Math.max(Math.min(amount, target.getMaxRecoverableMp() - target.getCurrentMp()), 0);
-		
-		target.setCurrentMp(amount + target.getCurrentMp());
-		
+		if (amount != 0)
+		{
+			target.setCurrentMp(amount + target.getCurrentMp());
+			StatusUpdate su = new StatusUpdate(target);
+			su.addAttribute(StatusUpdate.CUR_MP, (int) target.getCurrentMp());
+			target.sendPacket(su);
+		}
 		SystemMessage sm;
 		if (getEffector().getObjectId() != target.getObjectId())
 		{
@@ -79,8 +81,6 @@ public class ManaHeal extends L2Effect
 		}
 		sm.addNumber((int) amount);
 		target.sendPacket(sm);
-		su.addAttribute(StatusUpdate.CUR_MP, (int) target.getCurrentMp());
-		target.sendPacket(su);
 		return true;
 	}
 	

+ 7 - 6
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHealByLevel.java

@@ -53,7 +53,6 @@ public class ManaHealByLevel extends L2Effect
 			return false;
 		}
 		
-		StatusUpdate su = new StatusUpdate(target);
 		double amount = calc();
 		
 		// recharged mp influenced by difference between target level and skill level
@@ -107,9 +106,13 @@ public class ManaHealByLevel extends L2Effect
 		
 		// Prevents overheal and negative amount
 		amount = Math.max(Math.min(amount, target.getMaxRecoverableMp() - target.getCurrentMp()), 0);
-		
-		target.setCurrentMp(amount + target.getCurrentMp());
-		
+		if (amount != 0)
+		{
+			target.setCurrentMp(amount + target.getCurrentMp());
+			StatusUpdate su = new StatusUpdate(target);
+			su.addAttribute(StatusUpdate.CUR_MP, (int) target.getCurrentMp());
+			target.sendPacket(su);
+		}
 		SystemMessage sm;
 		if (getEffector().getObjectId() != target.getObjectId())
 		{
@@ -122,8 +125,6 @@ public class ManaHealByLevel extends L2Effect
 		}
 		sm.addNumber((int) amount);
 		target.sendPacket(sm);
-		su.addAttribute(StatusUpdate.CUR_MP, (int) target.getCurrentMp());
-		target.sendPacket(su);
 		return true;
 	}
 	

+ 8 - 7
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHealPercent.java

@@ -51,18 +51,21 @@ public class ManaHealPercent extends L2Effect
 		{
 			return false;
 		}
-		StatusUpdate su = new StatusUpdate(target);
+		
 		double amount = 0;
 		double power = calc();
 		boolean full = (power == 100.0);
 		
 		amount = full ? target.getMaxMp() : (target.getMaxMp() * power) / 100.0;
-		
 		// Prevents overheal and negative amount
 		amount = Math.max(Math.min(amount, target.getMaxRecoverableMp() - target.getCurrentMp()), 0);
-		
-		target.setCurrentMp(amount + target.getCurrentMp());
-		
+		if (amount != 0)
+		{
+			target.setCurrentMp(amount + target.getCurrentMp());
+			StatusUpdate su = new StatusUpdate(target);
+			su.addAttribute(StatusUpdate.CUR_MP, (int) target.getCurrentMp());
+			target.sendPacket(su);
+		}
 		SystemMessage sm;
 		if (getEffector().getObjectId() != target.getObjectId())
 		{
@@ -75,8 +78,6 @@ public class ManaHealPercent extends L2Effect
 		}
 		sm.addNumber((int) amount);
 		target.sendPacket(sm);
-		su.addAttribute(StatusUpdate.CUR_MP, (int) target.getCurrentMp());
-		target.sendPacket(su);
 		return true;
 	}