Separated RebalanceHP effect for summons.
This commit is contained in:
@@ -257,6 +257,7 @@ public final class EffectMasterHandler
|
||||
EffectHandler.getInstance().registerHandler("RandomizeHate", RandomizeHate::new);
|
||||
EffectHandler.getInstance().registerHandler("RealDamage", RealDamage::new);
|
||||
EffectHandler.getInstance().registerHandler("RebalanceHP", RebalanceHP::new);
|
||||
EffectHandler.getInstance().registerHandler("RebalanceHPSummon", RebalanceHPSummon::new);
|
||||
EffectHandler.getInstance().registerHandler("Recovery", Recovery::new);
|
||||
EffectHandler.getInstance().registerHandler("ReduceDamage", ReduceDamage::new);
|
||||
EffectHandler.getInstance().registerHandler("ReduceCancel", ReduceCancel::new);
|
||||
|
@@ -60,11 +60,6 @@ public final class RebalanceHP extends AbstractEffect
|
||||
double fullHP = 0;
|
||||
double currentHPs = 0;
|
||||
final L2Party party = effector.getParty();
|
||||
|
||||
switch (skill.getTargetType())
|
||||
{
|
||||
case MY_PARTY:
|
||||
{
|
||||
if (party != null)
|
||||
{
|
||||
for (L2PcInstance member : party.getMembers())
|
||||
@@ -83,13 +78,16 @@ public final class RebalanceHP extends AbstractEffect
|
||||
}
|
||||
|
||||
for (L2Summon servitors : member.getServitors().values())
|
||||
{
|
||||
if (!servitors.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, servitors, true))
|
||||
{
|
||||
fullHP += servitors.getMaxHp();
|
||||
currentHPs += servitors.getCurrentHp();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final double percentHP = currentHPs / fullHP;
|
||||
double percentHP = currentHPs / fullHP;
|
||||
for (L2PcInstance member : party.getMembers())
|
||||
{
|
||||
if (!member.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, member, true))
|
||||
@@ -132,7 +130,7 @@ public final class RebalanceHP extends AbstractEffect
|
||||
|
||||
for (L2Summon servitors : member.getServitors().values())
|
||||
{
|
||||
if (!servitors.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
if (!servitors.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, servitors, true))
|
||||
{
|
||||
double newHP = servitors.getMaxHp() * percentHP;
|
||||
if (newHP > servitors.getCurrentHp()) // The target gets healed
|
||||
@@ -152,59 +150,5 @@ public final class RebalanceHP extends AbstractEffect
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SUMMON:
|
||||
{
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
fullHP += summon.getMaxHp();
|
||||
currentHPs += summon.getCurrentHp();
|
||||
}
|
||||
}
|
||||
|
||||
fullHP += effector.getMaxHp();
|
||||
fullHP += effector.getCurrentHp();
|
||||
|
||||
final double percentHP = currentHPs / fullHP;
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
double newHP = summon.getMaxHp() * percentHP;
|
||||
if (newHP > summon.getCurrentHp()) // The target gets healed
|
||||
{
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
double newHP = effector.getMaxHp() * percentHP;
|
||||
if (newHP > effector.getCurrentHp())
|
||||
{
|
||||
if (effector.getCurrentHp() > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getCurrentHp();
|
||||
}
|
||||
else if (newHP > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getMaxRecoverableHp();
|
||||
}
|
||||
}
|
||||
effector.setCurrentHp(newHP);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
111
L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/RebalanceHPSummon.java
vendored
Normal file
111
L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/RebalanceHPSummon.java
vendored
Normal file
@@ -0,0 +1,111 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Summon;
|
||||
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jmobius.gameserver.model.effects.L2EffectType;
|
||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
* Rebalance HP effect implementation.
|
||||
* @author Adry_85, earendil
|
||||
*/
|
||||
public class RebalanceHPSummon extends AbstractEffect
|
||||
{
|
||||
public RebalanceHPSummon(StatsSet params)
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public L2EffectType getEffectType()
|
||||
{
|
||||
return L2EffectType.REBALANCE_HP;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInstant()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
|
||||
{
|
||||
if (!effector.isPlayer())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
double fullHP = 0;
|
||||
double currentHPs = 0;
|
||||
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
fullHP += summon.getMaxHp();
|
||||
currentHPs += summon.getCurrentHp();
|
||||
}
|
||||
}
|
||||
|
||||
fullHP += effector.getMaxHp();
|
||||
currentHPs += effector.getCurrentHp();
|
||||
|
||||
double percentHP = currentHPs / fullHP;
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
double newHP = summon.getMaxHp() * percentHP;
|
||||
if (newHP > summon.getCurrentHp()) // The target gets healed
|
||||
{
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
double newHP = effector.getMaxHp() * percentHP;
|
||||
if (newHP > effector.getCurrentHp()) // The target gets healed
|
||||
{
|
||||
// The heal will be blocked if the current hp passes the limit
|
||||
if (effector.getCurrentHp() > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getCurrentHp();
|
||||
}
|
||||
else if (newHP > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getMaxRecoverableHp();
|
||||
}
|
||||
}
|
||||
effector.setCurrentHp(newHP);
|
||||
}
|
||||
}
|
@@ -226,6 +226,7 @@ PvpPhysicalSkillDefenceBonus: Physical skill defence stat when taking damage fro
|
||||
RandomizeHate: Target NPC stops hating you and starts hating random target with your hate.
|
||||
RealDamage: Static damage.
|
||||
RebalanceHP: Balances targets' current HP.
|
||||
RebalanceHPSummon: Balances targets' current HP for summons.
|
||||
Recovery: Decreases death penalty level.
|
||||
ReduceCancel: Magic skill casting interruption stat.
|
||||
ReduceDropPenalty: Reduces EXP lost and death penalty chance.
|
||||
|
@@ -257,6 +257,7 @@ public final class EffectMasterHandler
|
||||
EffectHandler.getInstance().registerHandler("RandomizeHate", RandomizeHate::new);
|
||||
EffectHandler.getInstance().registerHandler("RealDamage", RealDamage::new);
|
||||
EffectHandler.getInstance().registerHandler("RebalanceHP", RebalanceHP::new);
|
||||
EffectHandler.getInstance().registerHandler("RebalanceHPSummon", RebalanceHPSummon::new);
|
||||
EffectHandler.getInstance().registerHandler("Recovery", Recovery::new);
|
||||
EffectHandler.getInstance().registerHandler("ReduceDamage", ReduceDamage::new);
|
||||
EffectHandler.getInstance().registerHandler("ReduceCancel", ReduceCancel::new);
|
||||
|
@@ -60,11 +60,6 @@ public final class RebalanceHP extends AbstractEffect
|
||||
double fullHP = 0;
|
||||
double currentHPs = 0;
|
||||
final L2Party party = effector.getParty();
|
||||
|
||||
switch (skill.getTargetType())
|
||||
{
|
||||
case MY_PARTY:
|
||||
{
|
||||
if (party != null)
|
||||
{
|
||||
for (L2PcInstance member : party.getMembers())
|
||||
@@ -83,13 +78,16 @@ public final class RebalanceHP extends AbstractEffect
|
||||
}
|
||||
|
||||
for (L2Summon servitors : member.getServitors().values())
|
||||
{
|
||||
if (!servitors.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, servitors, true))
|
||||
{
|
||||
fullHP += servitors.getMaxHp();
|
||||
currentHPs += servitors.getCurrentHp();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final double percentHP = currentHPs / fullHP;
|
||||
double percentHP = currentHPs / fullHP;
|
||||
for (L2PcInstance member : party.getMembers())
|
||||
{
|
||||
if (!member.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, member, true))
|
||||
@@ -132,7 +130,7 @@ public final class RebalanceHP extends AbstractEffect
|
||||
|
||||
for (L2Summon servitors : member.getServitors().values())
|
||||
{
|
||||
if (!servitors.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
if (!servitors.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, servitors, true))
|
||||
{
|
||||
double newHP = servitors.getMaxHp() * percentHP;
|
||||
if (newHP > servitors.getCurrentHp()) // The target gets healed
|
||||
@@ -152,59 +150,5 @@ public final class RebalanceHP extends AbstractEffect
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SUMMON:
|
||||
{
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
fullHP += summon.getMaxHp();
|
||||
currentHPs += summon.getCurrentHp();
|
||||
}
|
||||
}
|
||||
|
||||
fullHP += effector.getMaxHp();
|
||||
fullHP += effector.getCurrentHp();
|
||||
|
||||
final double percentHP = currentHPs / fullHP;
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
double newHP = summon.getMaxHp() * percentHP;
|
||||
if (newHP > summon.getCurrentHp()) // The target gets healed
|
||||
{
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
double newHP = effector.getMaxHp() * percentHP;
|
||||
if (newHP > effector.getCurrentHp())
|
||||
{
|
||||
if (effector.getCurrentHp() > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getCurrentHp();
|
||||
}
|
||||
else if (newHP > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getMaxRecoverableHp();
|
||||
}
|
||||
}
|
||||
effector.setCurrentHp(newHP);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
111
L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/RebalanceHPSummon.java
vendored
Normal file
111
L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/RebalanceHPSummon.java
vendored
Normal file
@@ -0,0 +1,111 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Summon;
|
||||
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jmobius.gameserver.model.effects.L2EffectType;
|
||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
* Rebalance HP effect implementation.
|
||||
* @author Adry_85, earendil
|
||||
*/
|
||||
public class RebalanceHPSummon extends AbstractEffect
|
||||
{
|
||||
public RebalanceHPSummon(StatsSet params)
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public L2EffectType getEffectType()
|
||||
{
|
||||
return L2EffectType.REBALANCE_HP;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInstant()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
|
||||
{
|
||||
if (!effector.isPlayer())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
double fullHP = 0;
|
||||
double currentHPs = 0;
|
||||
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
fullHP += summon.getMaxHp();
|
||||
currentHPs += summon.getCurrentHp();
|
||||
}
|
||||
}
|
||||
|
||||
fullHP += effector.getMaxHp();
|
||||
currentHPs += effector.getCurrentHp();
|
||||
|
||||
double percentHP = currentHPs / fullHP;
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
double newHP = summon.getMaxHp() * percentHP;
|
||||
if (newHP > summon.getCurrentHp()) // The target gets healed
|
||||
{
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
double newHP = effector.getMaxHp() * percentHP;
|
||||
if (newHP > effector.getCurrentHp()) // The target gets healed
|
||||
{
|
||||
// The heal will be blocked if the current hp passes the limit
|
||||
if (effector.getCurrentHp() > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getCurrentHp();
|
||||
}
|
||||
else if (newHP > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getMaxRecoverableHp();
|
||||
}
|
||||
}
|
||||
effector.setCurrentHp(newHP);
|
||||
}
|
||||
}
|
@@ -226,6 +226,7 @@ PvpPhysicalSkillDefenceBonus: Physical skill defence stat when taking damage fro
|
||||
RandomizeHate: Target NPC stops hating you and starts hating random target with your hate.
|
||||
RealDamage: Static damage.
|
||||
RebalanceHP: Balances targets' current HP.
|
||||
RebalanceHPSummon: Balances targets' current HP for summons.
|
||||
Recovery: Decreases death penalty level.
|
||||
ReduceCancel: Magic skill casting interruption stat.
|
||||
ReduceDropPenalty: Reduces EXP lost and death penalty chance.
|
||||
|
@@ -257,6 +257,7 @@ public final class EffectMasterHandler
|
||||
EffectHandler.getInstance().registerHandler("RandomizeHate", RandomizeHate::new);
|
||||
EffectHandler.getInstance().registerHandler("RealDamage", RealDamage::new);
|
||||
EffectHandler.getInstance().registerHandler("RebalanceHP", RebalanceHP::new);
|
||||
EffectHandler.getInstance().registerHandler("RebalanceHPSummon", RebalanceHPSummon::new);
|
||||
EffectHandler.getInstance().registerHandler("Recovery", Recovery::new);
|
||||
EffectHandler.getInstance().registerHandler("ReduceDamage", ReduceDamage::new);
|
||||
EffectHandler.getInstance().registerHandler("ReduceCancel", ReduceCancel::new);
|
||||
|
@@ -60,11 +60,6 @@ public final class RebalanceHP extends AbstractEffect
|
||||
double fullHP = 0;
|
||||
double currentHPs = 0;
|
||||
final L2Party party = effector.getParty();
|
||||
|
||||
switch (skill.getTargetType())
|
||||
{
|
||||
case MY_PARTY:
|
||||
{
|
||||
if (party != null)
|
||||
{
|
||||
for (L2PcInstance member : party.getMembers())
|
||||
@@ -83,13 +78,16 @@ public final class RebalanceHP extends AbstractEffect
|
||||
}
|
||||
|
||||
for (L2Summon servitors : member.getServitors().values())
|
||||
{
|
||||
if (!servitors.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, servitors, true))
|
||||
{
|
||||
fullHP += servitors.getMaxHp();
|
||||
currentHPs += servitors.getCurrentHp();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final double percentHP = currentHPs / fullHP;
|
||||
double percentHP = currentHPs / fullHP;
|
||||
for (L2PcInstance member : party.getMembers())
|
||||
{
|
||||
if (!member.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, member, true))
|
||||
@@ -132,7 +130,7 @@ public final class RebalanceHP extends AbstractEffect
|
||||
|
||||
for (L2Summon servitors : member.getServitors().values())
|
||||
{
|
||||
if (!servitors.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
if (!servitors.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, servitors, true))
|
||||
{
|
||||
double newHP = servitors.getMaxHp() * percentHP;
|
||||
if (newHP > servitors.getCurrentHp()) // The target gets healed
|
||||
@@ -152,59 +150,5 @@ public final class RebalanceHP extends AbstractEffect
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SUMMON:
|
||||
{
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
fullHP += summon.getMaxHp();
|
||||
currentHPs += summon.getCurrentHp();
|
||||
}
|
||||
}
|
||||
|
||||
fullHP += effector.getMaxHp();
|
||||
fullHP += effector.getCurrentHp();
|
||||
|
||||
final double percentHP = currentHPs / fullHP;
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
double newHP = summon.getMaxHp() * percentHP;
|
||||
if (newHP > summon.getCurrentHp()) // The target gets healed
|
||||
{
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
double newHP = effector.getMaxHp() * percentHP;
|
||||
if (newHP > effector.getCurrentHp())
|
||||
{
|
||||
if (effector.getCurrentHp() > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getCurrentHp();
|
||||
}
|
||||
else if (newHP > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getMaxRecoverableHp();
|
||||
}
|
||||
}
|
||||
effector.setCurrentHp(newHP);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
111
L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/RebalanceHPSummon.java
vendored
Normal file
111
L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/RebalanceHPSummon.java
vendored
Normal file
@@ -0,0 +1,111 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Summon;
|
||||
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jmobius.gameserver.model.effects.L2EffectType;
|
||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
* Rebalance HP effect implementation.
|
||||
* @author Adry_85, earendil
|
||||
*/
|
||||
public class RebalanceHPSummon extends AbstractEffect
|
||||
{
|
||||
public RebalanceHPSummon(StatsSet params)
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public L2EffectType getEffectType()
|
||||
{
|
||||
return L2EffectType.REBALANCE_HP;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInstant()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
|
||||
{
|
||||
if (!effector.isPlayer())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
double fullHP = 0;
|
||||
double currentHPs = 0;
|
||||
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
fullHP += summon.getMaxHp();
|
||||
currentHPs += summon.getCurrentHp();
|
||||
}
|
||||
}
|
||||
|
||||
fullHP += effector.getMaxHp();
|
||||
currentHPs += effector.getCurrentHp();
|
||||
|
||||
double percentHP = currentHPs / fullHP;
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
double newHP = summon.getMaxHp() * percentHP;
|
||||
if (newHP > summon.getCurrentHp()) // The target gets healed
|
||||
{
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
double newHP = effector.getMaxHp() * percentHP;
|
||||
if (newHP > effector.getCurrentHp()) // The target gets healed
|
||||
{
|
||||
// The heal will be blocked if the current hp passes the limit
|
||||
if (effector.getCurrentHp() > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getCurrentHp();
|
||||
}
|
||||
else if (newHP > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getMaxRecoverableHp();
|
||||
}
|
||||
}
|
||||
effector.setCurrentHp(newHP);
|
||||
}
|
||||
}
|
@@ -226,6 +226,7 @@ PvpPhysicalSkillDefenceBonus: Physical skill defence stat when taking damage fro
|
||||
RandomizeHate: Target NPC stops hating you and starts hating random target with your hate.
|
||||
RealDamage: Static damage.
|
||||
RebalanceHP: Balances targets' current HP.
|
||||
RebalanceHPSummon: Balances targets' current HP for summons.
|
||||
Recovery: Decreases death penalty level.
|
||||
ReduceCancel: Magic skill casting interruption stat.
|
||||
ReduceDropPenalty: Reduces EXP lost and death penalty chance.
|
||||
|
@@ -261,6 +261,7 @@ public final class EffectMasterHandler
|
||||
EffectHandler.getInstance().registerHandler("RandomizeHate", RandomizeHate::new);
|
||||
EffectHandler.getInstance().registerHandler("RealDamage", RealDamage::new);
|
||||
EffectHandler.getInstance().registerHandler("RebalanceHP", RebalanceHP::new);
|
||||
EffectHandler.getInstance().registerHandler("RebalanceHPSummon", RebalanceHPSummon::new);
|
||||
EffectHandler.getInstance().registerHandler("Recovery", Recovery::new);
|
||||
EffectHandler.getInstance().registerHandler("ReduceDamage", ReduceDamage::new);
|
||||
EffectHandler.getInstance().registerHandler("ReduceCancel", ReduceCancel::new);
|
||||
|
@@ -60,11 +60,6 @@ public final class RebalanceHP extends AbstractEffect
|
||||
double fullHP = 0;
|
||||
double currentHPs = 0;
|
||||
final L2Party party = effector.getParty();
|
||||
|
||||
switch (skill.getTargetType())
|
||||
{
|
||||
case MY_PARTY:
|
||||
{
|
||||
if (party != null)
|
||||
{
|
||||
for (L2PcInstance member : party.getMembers())
|
||||
@@ -83,13 +78,16 @@ public final class RebalanceHP extends AbstractEffect
|
||||
}
|
||||
|
||||
for (L2Summon servitors : member.getServitors().values())
|
||||
{
|
||||
if (!servitors.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, servitors, true))
|
||||
{
|
||||
fullHP += servitors.getMaxHp();
|
||||
currentHPs += servitors.getCurrentHp();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final double percentHP = currentHPs / fullHP;
|
||||
double percentHP = currentHPs / fullHP;
|
||||
for (L2PcInstance member : party.getMembers())
|
||||
{
|
||||
if (!member.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, member, true))
|
||||
@@ -132,7 +130,7 @@ public final class RebalanceHP extends AbstractEffect
|
||||
|
||||
for (L2Summon servitors : member.getServitors().values())
|
||||
{
|
||||
if (!servitors.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
if (!servitors.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, servitors, true))
|
||||
{
|
||||
double newHP = servitors.getMaxHp() * percentHP;
|
||||
if (newHP > servitors.getCurrentHp()) // The target gets healed
|
||||
@@ -152,59 +150,5 @@ public final class RebalanceHP extends AbstractEffect
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SUMMON:
|
||||
{
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
fullHP += summon.getMaxHp();
|
||||
currentHPs += summon.getCurrentHp();
|
||||
}
|
||||
}
|
||||
|
||||
fullHP += effector.getMaxHp();
|
||||
fullHP += effector.getCurrentHp();
|
||||
|
||||
final double percentHP = currentHPs / fullHP;
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
double newHP = summon.getMaxHp() * percentHP;
|
||||
if (newHP > summon.getCurrentHp()) // The target gets healed
|
||||
{
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
double newHP = effector.getMaxHp() * percentHP;
|
||||
if (newHP > effector.getCurrentHp())
|
||||
{
|
||||
if (effector.getCurrentHp() > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getCurrentHp();
|
||||
}
|
||||
else if (newHP > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getMaxRecoverableHp();
|
||||
}
|
||||
}
|
||||
effector.setCurrentHp(newHP);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
111
L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/RebalanceHPSummon.java
vendored
Normal file
111
L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/RebalanceHPSummon.java
vendored
Normal file
@@ -0,0 +1,111 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Summon;
|
||||
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jmobius.gameserver.model.effects.L2EffectType;
|
||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
* Rebalance HP effect implementation.
|
||||
* @author Adry_85, earendil
|
||||
*/
|
||||
public class RebalanceHPSummon extends AbstractEffect
|
||||
{
|
||||
public RebalanceHPSummon(StatsSet params)
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public L2EffectType getEffectType()
|
||||
{
|
||||
return L2EffectType.REBALANCE_HP;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInstant()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
|
||||
{
|
||||
if (!effector.isPlayer())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
double fullHP = 0;
|
||||
double currentHPs = 0;
|
||||
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
fullHP += summon.getMaxHp();
|
||||
currentHPs += summon.getCurrentHp();
|
||||
}
|
||||
}
|
||||
|
||||
fullHP += effector.getMaxHp();
|
||||
currentHPs += effector.getCurrentHp();
|
||||
|
||||
double percentHP = currentHPs / fullHP;
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
double newHP = summon.getMaxHp() * percentHP;
|
||||
if (newHP > summon.getCurrentHp()) // The target gets healed
|
||||
{
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
double newHP = effector.getMaxHp() * percentHP;
|
||||
if (newHP > effector.getCurrentHp()) // The target gets healed
|
||||
{
|
||||
// The heal will be blocked if the current hp passes the limit
|
||||
if (effector.getCurrentHp() > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getCurrentHp();
|
||||
}
|
||||
else if (newHP > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getMaxRecoverableHp();
|
||||
}
|
||||
}
|
||||
effector.setCurrentHp(newHP);
|
||||
}
|
||||
}
|
@@ -230,6 +230,7 @@ PvpPhysicalSkillDefenceBonus: Physical skill defence stat when taking damage fro
|
||||
RandomizeHate: Target NPC stops hating you and starts hating random target with your hate.
|
||||
RealDamage: Static damage.
|
||||
RebalanceHP: Balances targets' current HP.
|
||||
RebalanceHPSummon: Balances targets' current HP for summons.
|
||||
Recovery: Decreases death penalty level.
|
||||
ReduceCancel: Magic skill casting interruption stat.
|
||||
ReduceDropPenalty: Reduces EXP lost and death penalty chance.
|
||||
|
@@ -256,6 +256,7 @@ public final class EffectMasterHandler
|
||||
EffectHandler.getInstance().registerHandler("RandomizeHate", RandomizeHate::new);
|
||||
EffectHandler.getInstance().registerHandler("RealDamage", RealDamage::new);
|
||||
EffectHandler.getInstance().registerHandler("RebalanceHP", RebalanceHP::new);
|
||||
EffectHandler.getInstance().registerHandler("RebalanceHPSummon", RebalanceHPSummon::new);
|
||||
EffectHandler.getInstance().registerHandler("Recovery", Recovery::new);
|
||||
EffectHandler.getInstance().registerHandler("ReduceDamage", ReduceDamage::new);
|
||||
EffectHandler.getInstance().registerHandler("ReduceCancel", ReduceCancel::new);
|
||||
|
@@ -60,11 +60,6 @@ public final class RebalanceHP extends AbstractEffect
|
||||
double fullHP = 0;
|
||||
double currentHPs = 0;
|
||||
final L2Party party = effector.getParty();
|
||||
|
||||
switch (skill.getTargetType())
|
||||
{
|
||||
case MY_PARTY:
|
||||
{
|
||||
if (party != null)
|
||||
{
|
||||
for (L2PcInstance member : party.getMembers())
|
||||
@@ -83,13 +78,16 @@ public final class RebalanceHP extends AbstractEffect
|
||||
}
|
||||
|
||||
for (L2Summon servitors : member.getServitors().values())
|
||||
{
|
||||
if (!servitors.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, servitors, true))
|
||||
{
|
||||
fullHP += servitors.getMaxHp();
|
||||
currentHPs += servitors.getCurrentHp();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final double percentHP = currentHPs / fullHP;
|
||||
double percentHP = currentHPs / fullHP;
|
||||
for (L2PcInstance member : party.getMembers())
|
||||
{
|
||||
if (!member.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, member, true))
|
||||
@@ -132,7 +130,7 @@ public final class RebalanceHP extends AbstractEffect
|
||||
|
||||
for (L2Summon servitors : member.getServitors().values())
|
||||
{
|
||||
if (!servitors.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
if (!servitors.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, servitors, true))
|
||||
{
|
||||
double newHP = servitors.getMaxHp() * percentHP;
|
||||
if (newHP > servitors.getCurrentHp()) // The target gets healed
|
||||
@@ -152,59 +150,5 @@ public final class RebalanceHP extends AbstractEffect
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SUMMON:
|
||||
{
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
fullHP += summon.getMaxHp();
|
||||
currentHPs += summon.getCurrentHp();
|
||||
}
|
||||
}
|
||||
|
||||
fullHP += effector.getMaxHp();
|
||||
fullHP += effector.getCurrentHp();
|
||||
|
||||
final double percentHP = currentHPs / fullHP;
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
double newHP = summon.getMaxHp() * percentHP;
|
||||
if (newHP > summon.getCurrentHp()) // The target gets healed
|
||||
{
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
double newHP = effector.getMaxHp() * percentHP;
|
||||
if (newHP > effector.getCurrentHp())
|
||||
{
|
||||
if (effector.getCurrentHp() > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getCurrentHp();
|
||||
}
|
||||
else if (newHP > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getMaxRecoverableHp();
|
||||
}
|
||||
}
|
||||
effector.setCurrentHp(newHP);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
111
L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/RebalanceHPSummon.java
vendored
Normal file
111
L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/RebalanceHPSummon.java
vendored
Normal file
@@ -0,0 +1,111 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Summon;
|
||||
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jmobius.gameserver.model.effects.L2EffectType;
|
||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
* Rebalance HP effect implementation.
|
||||
* @author Adry_85, earendil
|
||||
*/
|
||||
public class RebalanceHPSummon extends AbstractEffect
|
||||
{
|
||||
public RebalanceHPSummon(StatsSet params)
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public L2EffectType getEffectType()
|
||||
{
|
||||
return L2EffectType.REBALANCE_HP;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInstant()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
|
||||
{
|
||||
if (!effector.isPlayer())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
double fullHP = 0;
|
||||
double currentHPs = 0;
|
||||
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
fullHP += summon.getMaxHp();
|
||||
currentHPs += summon.getCurrentHp();
|
||||
}
|
||||
}
|
||||
|
||||
fullHP += effector.getMaxHp();
|
||||
currentHPs += effector.getCurrentHp();
|
||||
|
||||
double percentHP = currentHPs / fullHP;
|
||||
for (L2Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
{
|
||||
double newHP = summon.getMaxHp() * percentHP;
|
||||
if (newHP > summon.getCurrentHp()) // The target gets healed
|
||||
{
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
double newHP = effector.getMaxHp() * percentHP;
|
||||
if (newHP > effector.getCurrentHp()) // The target gets healed
|
||||
{
|
||||
// The heal will be blocked if the current hp passes the limit
|
||||
if (effector.getCurrentHp() > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getCurrentHp();
|
||||
}
|
||||
else if (newHP > effector.getMaxRecoverableHp())
|
||||
{
|
||||
newHP = effector.getMaxRecoverableHp();
|
||||
}
|
||||
}
|
||||
effector.setCurrentHp(newHP);
|
||||
}
|
||||
}
|
@@ -225,6 +225,7 @@ PvpPhysicalSkillDefenceBonus: Physical skill defence stat when taking damage fro
|
||||
RandomizeHate: Target NPC stops hating you and starts hating random target with your hate.
|
||||
RealDamage: Static damage.
|
||||
RebalanceHP: Balances targets' current HP.
|
||||
RebalanceHPSummon: Balances targets' current HP for summons.
|
||||
Recovery: Decreases death penalty level.
|
||||
ReduceCancel: Magic skill casting interruption stat.
|
||||
ReduceDropPenalty: Reduces EXP lost and death penalty chance.
|
||||
|
Reference in New Issue
Block a user