From c6fe6979cc819fe64d6ee27e0d83ac64c4d9937b Mon Sep 17 00:00:00 2001 From: Rumen Nikiforov <unafraid89@gmail.com> Date: Mon, 15 Sep 2014 21:16:15 +0000 Subject: [PATCH] BETA: Fixing minor issue in RebalnceHP effect not considering summons as targets to heal. * Reported by: nolek, Driad * Tested by: Driad --- .../handlers/effecthandlers/RebalanceHP.java | 60 ++++++++++++++----- 1 file changed, 44 insertions(+), 16 deletions(-) diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/RebalanceHP.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/RebalanceHP.java index f6f82ef3be..5464284040 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/RebalanceHP.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/RebalanceHP.java @@ -20,11 +20,14 @@ package handlers.effecthandlers; import com.l2jserver.gameserver.model.L2Party; import com.l2jserver.gameserver.model.StatsSet; +import com.l2jserver.gameserver.model.actor.L2Character; +import com.l2jserver.gameserver.model.actor.L2Summon; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.conditions.Condition; import com.l2jserver.gameserver.model.effects.AbstractEffect; import com.l2jserver.gameserver.model.effects.L2EffectType; import com.l2jserver.gameserver.model.skills.BuffInfo; +import com.l2jserver.gameserver.model.skills.Skill; import com.l2jserver.gameserver.util.Util; /** @@ -61,39 +64,64 @@ public final class RebalanceHP extends AbstractEffect double fullHP = 0; double currentHPs = 0; final L2Party party = info.getEffector().getParty(); + final Skill skill = info.getSkill(); + final L2Character effector = info.getEffector(); for (L2PcInstance member : party.getMembers()) { - if (member.isDead() || !Util.checkIfInRange(info.getSkill().getAffectRange(), info.getEffector(), member, true)) + if (!member.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, member, true)) { - continue; + fullHP += member.getMaxHp(); + currentHPs += member.getCurrentHp(); } - fullHP += member.getMaxHp(); - currentHPs += member.getCurrentHp(); + final L2Summon summon = member.getSummon(); + if ((summon != null) && (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))) + { + fullHP += summon.getMaxHp(); + currentHPs += summon.getCurrentHp(); + } } double percentHP = currentHPs / fullHP; for (L2PcInstance member : party.getMembers()) { - if (member.isDead() || !Util.checkIfInRange(info.getSkill().getAffectRange(), info.getEffector(), member, true)) + if (!member.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, member, true)) { - continue; + double newHP = member.getMaxHp() * percentHP; + if (newHP > member.getCurrentHp()) // The target gets healed + { + // The heal will be blocked if the current hp passes the limit + if (member.getCurrentHp() > member.getMaxRecoverableHp()) + { + newHP = member.getCurrentHp(); + } + else if (newHP > member.getMaxRecoverableHp()) + { + newHP = member.getMaxRecoverableHp(); + } + } + + member.setCurrentHp(newHP); } - double newHP = member.getMaxHp() * percentHP; - if (newHP > member.getCurrentHp()) // The target gets healed + final L2Summon summon = member.getSummon(); + if ((summon != null) && (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))) { - // The heal will be blocked if the current hp passes the limit - if (member.getCurrentHp() > member.getMaxRecoverableHp()) - { - newHP = member.getCurrentHp(); - } - else if (newHP > member.getMaxRecoverableHp()) + double newHP = summon.getMaxHp() * percentHP; + if (newHP > summon.getCurrentHp()) // The target gets healed { - newHP = member.getMaxRecoverableHp(); + // The heal will be blocked if the current hp passes the limit + if (summon.getCurrentHp() > summon.getMaxRecoverableHp()) + { + newHP = summon.getCurrentHp(); + } + else if (newHP > summon.getMaxRecoverableHp()) + { + newHP = summon.getMaxRecoverableHp(); + } } + summon.setCurrentHp(newHP); } - member.setCurrentHp(newHP); } } } -- GitLab