Should I assume this is for all non Classic clients? (Essence only?)
Try this.
Index: java/org/l2jmobius/gameserver/model/actor/Creature.java
===================================================================
--- java/org/l2jmobius/gameserver/model/actor/Creature.java (revision 9980)
+++ java/org/l2jmobius/gameserver/model/actor/Creature.java (working copy)
@@ -4642,17 +4642,14 @@
final boolean isPvP = isPlayable() && target.isPlayable();
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
{
- if (skill == null) // Classic: Skills counted with the Vampiric Rage effect was introduced on GoD chronicles.
+ 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)))
{
- 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)
{
- 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);
- }
+ setCurrentHp(_status.getCurrentHp() + absorbDamage);
}
}
}
@@ -4660,20 +4657,14 @@
// Absorb MP from the damage inflicted.
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
{
- if (skill != null) // Classic: Used to reduce skill MP consumption. See Orfen's Earring.
+ final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
+ if (absorbMpPercent > 0)
{
- if (Rnd.get(10) < 3) // Classic: Static 30% change.
+ int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp());
+ absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp());
+ if (absorbDamage > 0)
{
- 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);
- }
- }
+ setCurrentMp(_status.getCurrentMp() + absorbDamage);
}
}
}