diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java index 59fe4fe71f..9d6f367b0e 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4638,6 +4638,43 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4664,43 +4701,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java index 59fe4fe71f..9d6f367b0e 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4638,6 +4638,43 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4664,43 +4701,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java index 59fe4fe71f..9d6f367b0e 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4638,6 +4638,43 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4664,43 +4701,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java index 59fe4fe71f..9d6f367b0e 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4638,6 +4638,43 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4664,43 +4701,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java index d4c1fc060d..796b81fd47 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4638,6 +4638,43 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4664,43 +4701,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java index d4c1fc060d..796b81fd47 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4638,6 +4638,43 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4664,43 +4701,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java index d4c1fc060d..796b81fd47 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4638,6 +4638,43 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4664,43 +4701,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java index d0a80666f1..e4d3e31542 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4637,6 +4637,43 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4663,43 +4700,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java index 049debed9f..d4acce1021 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4637,6 +4637,43 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4663,43 +4700,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java index 049debed9f..d4acce1021 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4637,6 +4637,43 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4663,43 +4700,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java index 8e96f3ffbe..ba9a79dcda 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4636,6 +4636,43 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4662,43 +4699,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java index 8e96f3ffbe..ba9a79dcda 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4636,6 +4636,43 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4662,43 +4699,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Creature.java index b37fa13836..1476ab2ef2 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4628,6 +4628,46 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + if (Rnd.get(10) < 3) // Classic: Static 30% change. + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4654,46 +4694,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - if (Rnd.get(10) < 3) // Classic: Static 30% change. - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Creature.java index b37fa13836..1476ab2ef2 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4628,6 +4628,46 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + if (Rnd.get(10) < 3) // Classic: Static 30% change. + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4654,46 +4694,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - if (Rnd.get(10) < 3) // Classic: Static 30% change. - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java index b37fa13836..1476ab2ef2 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4628,6 +4628,46 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + if (Rnd.get(10) < 3) // Classic: Static 30% change. + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4654,46 +4694,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - if (Rnd.get(10) < 3) // Classic: Static 30% change. - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java index b37fa13836..1476ab2ef2 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4628,6 +4628,46 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + if (Rnd.get(10) < 3) // Classic: Static 30% change. + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4654,46 +4694,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - if (Rnd.get(10) < 3) // Classic: Static 30% change. - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java index 09489f08c8..5c8633b7b8 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4628,6 +4628,46 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + if (Rnd.get(10) < 3) // Classic: Static 30% change. + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4654,46 +4694,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - if (Rnd.get(10) < 3) // Classic: Static 30% change. - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java index 78c49a7deb..44ac16c8df 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4641,6 +4641,46 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + if (Rnd.get(10) < 3) // Classic: Static 30% change. + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4667,46 +4707,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - if (Rnd.get(10) < 3) // Classic: Static 30% change. - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java index 78c49a7deb..44ac16c8df 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4641,6 +4641,46 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + if (Rnd.get(10) < 3) // Classic: Static 30% change. + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4667,46 +4707,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - if (Rnd.get(10) < 3) // Classic: Static 30% change. - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java index 1b4ae127d1..cc6adc391a 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4640,6 +4640,46 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + if (Rnd.get(10) < 3) // Classic: Static 30% change. + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4666,46 +4706,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - if (Rnd.get(10) < 3) // Classic: Static 30% change. - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java index b37fa13836..1476ab2ef2 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4628,6 +4628,46 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + if (Rnd.get(10) < 3) // Classic: Static 30% change. + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4654,46 +4694,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - if (Rnd.get(10) < 3) // Classic: Static 30% change. - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java index 8300f461a2..d23a1b8840 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4653,6 +4653,46 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + if (Rnd.get(10) < 3) // Classic: Static 30% change. + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4679,46 +4719,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - if (Rnd.get(10) < 3) // Classic: Static 30% change. - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java index 642df1a0db..0bb567e86e 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4660,6 +4660,46 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + if (Rnd.get(10) < 3) // Classic: Static 30% change. + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4686,46 +4726,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - if (Rnd.get(10) < 3) // Classic: Static 30% change. - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Creature.java index 8d74df94b8..cda0c0d8f6 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4659,6 +4659,46 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + if (Rnd.get(10) < 3) // Classic: Static 30% change. + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4685,46 +4725,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - if (Rnd.get(10) < 3) // Classic: Static 30% change. - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true); diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java index 707f12cec9..331373fa01 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4669,6 +4669,46 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } + // Absorb HP from the damage inflicted + final boolean isPvP = isPlayable() && target.isPlayable(); + if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) + { + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + { + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } + } + } + } + + // Absorb MP from the damage inflicted. + if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) + { + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) + { + if (Rnd.get(10) < 3) // Classic: Static 30% change. + { + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) + { + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } + } + } + } + } + // Target receives the damage. target.reduceCurrentHp(damage, this, skill, isDOT, directlyToHp, critical, reflect); @@ -4695,46 +4735,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } } - // Absorb HP from the damage inflicted - final boolean isPvP = isPlayable() && target.isPlayable(); - if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) - { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) - { - setCurrentHp(_status.getCurrentHp() + absorbDamage); - } - } - } - } - - // Absorb MP from the damage inflicted. - if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) - { - if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) - { - if (Rnd.get(10) < 3) // Classic: Static 30% change. - { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) - { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) - { - setCurrentMp(_status.getCurrentMp() + absorbDamage); - } - } - } - } - } - if (reflectedDamage > 0) { target.doAttack(reflectedDamage, this, skill, isDOT, directlyToHp, critical, true);