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

BETA: Fixes for [9497].

Reported by: Arantir
MELERIX 12 лет назад
Родитель
Сommit
d2d2ae623d

+ 3 - 9
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CpHeal.java

@@ -55,16 +55,10 @@ public class CpHeal extends L2Effect
 		
 		double amount = calc();
 		
-		amount = Math.min(amount, target.getMaxRecoverableCp() - target.getCurrentCp());
+		// Prevents overheal and negative amount
+		amount = Math.max(Math.min(amount, target.getMaxRecoverableCp() - target.getCurrentCp()), 0);
 		
-		// Prevent negative amounts
-		amount = Math.max(amount, 0);
-		
-		// To prevent -value heals, set the value only if current Cp is less than max recoverable.
-		if (target.getCurrentCp() < target.getMaxRecoverableCp())
-		{
-			target.setCurrentCp(amount + target.getCurrentCp());
-		}
+		target.setCurrentCp(amount + target.getCurrentCp());
 		
 		SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_CP_WILL_BE_RESTORED);
 		sm.addNumber((int) amount);

+ 4 - 17
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CpHealPercent.java

@@ -56,25 +56,12 @@ public class CpHealPercent extends L2Effect
 		double power = calc();
 		boolean full = (power == 100.0);
 		
-		if (full)
-		{
-			amount = target.getMaxCp();
-		}
-		else
-		{
-			amount = (target.getMaxCp() * power) / 100.0;
-		}
+		amount = full ? target.getMaxCp() : (target.getMaxCp() * power) / 100.0;
 		
-		amount = Math.min(amount, target.getMaxRecoverableCp() - target.getCurrentCp());
+		// Prevents overheal and negative amount
+		amount = Math.max(Math.min(amount, target.getMaxRecoverableCp() - target.getCurrentCp()), 0);
 		
-		// Prevent negative amounts
-		amount = Math.max(amount, 0);
-		
-		// To prevent -value heals, set the value only if current Cp is less than max recoverable.
-		if (target.getCurrentCp() < target.getMaxRecoverableCp())
-		{
-			target.setCurrentCp(amount + target.getCurrentCp());
-		}
+		target.setCurrentCp(amount + target.getCurrentCp());
 		
 		SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_CP_WILL_BE_RESTORED);
 		sm.addNumber((int) amount);

+ 2 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/HealPercent.java

@@ -62,6 +62,8 @@ public class HealPercent extends L2Effect
 		// Prevents overheal and negative amount
 		amount = Math.max(Math.min(amount, target.getMaxRecoverableHp() - target.getCurrentHp()), 0);
 		
+		target.setCurrentHp(amount + target.getCurrentHp());
+		
 		SystemMessage sm;
 		if (getEffector().getObjectId() != target.getObjectId())
 		{

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

@@ -65,6 +65,8 @@ 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());
+		
 		SystemMessage sm;
 		if (getEffector().getObjectId() != target.getObjectId())
 		{

+ 2 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHealByLevel.java

@@ -109,6 +109,8 @@ 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());
+		
 		SystemMessage sm;
 		if (getEffector().getObjectId() != target.getObjectId())
 		{

+ 2 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHealPercent.java

@@ -61,6 +61,8 @@ public class ManaHealPercent extends L2Effect
 		// Prevents overheal and negative amount
 		amount = Math.max(Math.min(amount, target.getMaxRecoverableMp() - target.getCurrentMp()), 0);
 		
+		target.setCurrentMp(amount + target.getCurrentMp());
+		
 		SystemMessage sm;
 		if (getEffector().getObjectId() != target.getObjectId())
 		{