Skip to content
Snippets Groups Projects
Commit 7ee3d49f authored by Adry_85's avatar Adry_85
Browse files

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

	Reviewed by: UnAfraid
parent 4774fd93
No related branches found
No related tags found
No related merge requests found
......@@ -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;
}
......
......@@ -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;
}
......
......@@ -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())
{
......
......@@ -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;
}
......
......@@ -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;
}
......
......@@ -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;
}
......
......@@ -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;
}
......
......@@ -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;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment