Свернуть ↑
if ((skill.getSkillType() == L2SkillType.MDAM) || (skill.getSkillType() == L2SkillType.DEATHLINK))
{
// Absorb HP from the damage inflicted
double absorbPercent = getStat().calcStat(Stats.ABSORB_DAMAGE_PERCENT, 0, null, null);
if (absorbPercent > 0)
{
int maxCanAbsorb = (int) (getMaxRecoverableHp() - getCurrentHp());
int absorbDamage = (int) ((absorbPercent / 100.) * damage);
if (absorbDamage > maxCanAbsorb)
{
absorbDamage = maxCanAbsorb; // Can't absord more than max hp
}
if (absorbDamage > 0)
{
setCurrentHp(getCurrentHp() + absorbDamage);
}
}
// Absorb MP from the damage inflicted
absorbPercent = getStat().calcStat(Stats.ABSORB_MANA_DAMAGE_PERCEN T, 0, null, null);
if (absorbPercent > 0)
{
int maxCanAbsorb = (int) (getMaxRecoverableMp() - getCurrentMp());
int absorbDamage = (int) ((absorbPercent / 100.) * damage);
if (absorbDamage > maxCanAbsorb)
{
absorbDamage = maxCanAbsorb; // Can't absord more than max hp
}
if (absorbDamage > 0)
{
setCurrentMp(getCurrentMp() + absorbDamage);
}
}
}