Vampiric effects from killing blows.

Contributed by nasseka.
This commit is contained in:
MobiusDevelopment
2022-08-12 00:50:15 +00:00
parent 37ad247f65
commit 8f163c49f8
25 changed files with 964 additions and 964 deletions
@@ -4638,32 +4638,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4701,6 +4675,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4638,32 +4638,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4701,6 +4675,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4638,32 +4638,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4701,6 +4675,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4638,32 +4638,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4701,6 +4675,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4638,32 +4638,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4701,6 +4675,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4638,32 +4638,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4701,6 +4675,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4638,32 +4638,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4701,6 +4675,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4637,32 +4637,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4700,6 +4674,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4637,32 +4637,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4700,6 +4674,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4637,32 +4637,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4700,6 +4674,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4636,32 +4636,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4699,6 +4673,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4636,32 +4636,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4699,6 +4673,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4628,32 +4628,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4694,6 +4668,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4628,32 +4628,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4694,6 +4668,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4628,32 +4628,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4694,6 +4668,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4628,32 +4628,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4694,6 +4668,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4628,32 +4628,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4694,6 +4668,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4641,32 +4641,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4707,6 +4681,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4641,32 +4641,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4707,6 +4681,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4640,32 +4640,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4706,6 +4680,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4628,32 +4628,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4694,6 +4668,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4653,32 +4653,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4719,6 +4693,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4660,32 +4660,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4726,6 +4700,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4659,32 +4659,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4725,6 +4699,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);
@@ -4669,32 +4669,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
// Absorb HP from the damage inflicted // Absorb HP from the damage inflicted
final boolean isPvP = isPlayable() && target.isPlayable(); final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
@@ -4735,6 +4709,32 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
} }
// Target receives the damage.
target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect);
// Check if damage should be reflected or absorbed. When killing blow is made, the target doesn't reflect (vamp too?).
if (!reflect && !isDOT && !target.isDead())
{
int reflectedDamage = 0;
// Reduce HP of the target and calculate reflection damage to reduce HP of attacker if necessary
final double reflectPercent = target.getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT, 0) - getStat().getValue(Stat.REFLECT_DAMAGE_PERCENT_DEFENSE, 0);
if (reflectPercent > 0)
{
reflectedDamage = (int) ((reflectPercent / 100.) * damage);
reflectedDamage = Math.min(reflectedDamage, target.getMaxHp());
// Reflected damage is limited by P.Def/M.Def
if ((skill != null) && skill.isMagic())
{
reflectedDamage = (int) Math.min(reflectedDamage, target.getStat().getMDef() * 1.5);
}
else
{
reflectedDamage = Math.min(reflectedDamage, target.getStat().getPDef());
}
}
if (reflectedDamage > 0) if (reflectedDamage > 0)
{ {
target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);