VampiricDefence formula adjustments.

Contributed by nasseka.
This commit is contained in:
MobiusDevelopment 2022-08-20 21:44:57 +00:00
parent fdb7fdbe3b
commit 394d9d9a4e
50 changed files with 125 additions and 375 deletions

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4664,11 +4664,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4664,11 +4664,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4664,11 +4664,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4664,11 +4664,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4664,11 +4664,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4664,11 +4664,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4664,11 +4664,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4663,11 +4663,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4663,11 +4663,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4663,11 +4663,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4662,11 +4662,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4662,11 +4662,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4654,11 +4654,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4654,11 +4654,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4654,11 +4654,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4654,11 +4654,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4654,11 +4654,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4667,11 +4667,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4667,11 +4667,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4666,11 +4666,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4654,11 +4654,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4679,11 +4679,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4686,11 +4686,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4685,11 +4685,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);

View File

@ -17,26 +17,15 @@
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author Sdw
* @author NasSeKa
*/
public class VampiricDefence extends AbstractEffect
public class VampiricDefence extends AbstractStatPercentEffect
{
private final int _amount;
public VampiricDefence(StatSet params)
{
_amount = params.getInt("amount", 0);
}
@Override
public void pump(Creature effected, Skill skill)
{
effected.getStat().mergeAdd(Stat.ABSORB_DAMAGE_DEFENCE, 1 - (_amount / 100));
super(params, Stat.ABSORB_DAMAGE_DEFENCE);
}
}

View File

@ -4695,11 +4695,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
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);
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0);
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());
absorbDamage *= target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
if (absorbDamage > 0)
{
setCurrentHp(_status.getCurrentHp() + absorbDamage);