diff --git a/dist/game/data/scripts/handlers/effecthandlers/Backstab.java b/dist/game/data/scripts/handlers/effecthandlers/Backstab.java index bb5c0491457fff50dda99bdbb58177a2e78e12f4..d98f5c9c0f8a8dbe2fc9d1c340dcbfa50494cc1a 100644 --- a/dist/game/data/scripts/handlers/effecthandlers/Backstab.java +++ b/dist/game/data/scripts/handlers/effecthandlers/Backstab.java @@ -74,9 +74,9 @@ public final class Backstab extends AbstractEffect return; } - L2Character target = info.getEffected(); - L2Character activeChar = info.getEffector(); - Skill skill = info.getSkill(); + final L2Character target = info.getEffected(); + final L2Character activeChar = info.getEffector(); + final Skill skill = info.getSkill(); boolean ss = skill.useSoulShot() && activeChar.isChargedShot(ShotType.SOULSHOTS); byte shld = Formulas.calcShldUse(activeChar, target, skill); double damage = Formulas.calcBackstabDamage(activeChar, target, skill, shld, ss, _power); diff --git a/dist/game/data/scripts/handlers/effecthandlers/CpDamPercent.java b/dist/game/data/scripts/handlers/effecthandlers/CpDamPercent.java index 757eb8097f455dcc69b12407c9790cccc44dba62..65bf202f5b221d8f33fa787514f066a09883bc90 100644 --- a/dist/game/data/scripts/handlers/effecthandlers/CpDamPercent.java +++ b/dist/game/data/scripts/handlers/effecthandlers/CpDamPercent.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import com.l2jserver.gameserver.model.StatsSet; +import com.l2jserver.gameserver.model.actor.L2Character; import com.l2jserver.gameserver.model.conditions.Condition; import com.l2jserver.gameserver.model.effects.AbstractEffect; import com.l2jserver.gameserver.model.skills.BuffInfo; @@ -53,22 +54,23 @@ public final class CpDamPercent extends AbstractEffect return; } - if (info.getEffected().isPlayer() && info.getEffected().getActingPlayer().isFakeDeath()) + final L2Character target = info.getEffected(); + if (target.isPlayer() && target.getActingPlayer().isFakeDeath()) { - info.getEffected().stopFakeDeath(true); + target.stopFakeDeath(true); } - int damage = (int) ((info.getEffected().getCurrentCp() * _power) / 100); + double damage = (target.getCurrentCp() * _power) / 100; // Manage attack or cast break of the target (calculating rate, sending message) - if (!info.getEffected().isRaid() && Formulas.calcAtkBreak(info.getEffected(), damage)) + if (!target.isRaid() && Formulas.calcAtkBreak(target, damage)) { - info.getEffected().breakAttack(); - info.getEffected().breakCast(); + target.breakAttack(); + target.breakCast(); } if (damage > 0) { - info.getEffected().setCurrentCp(info.getEffected().getCurrentCp() - damage); + target.setCurrentCp(target.getCurrentCp() - damage); } } } \ No newline at end of file diff --git a/dist/game/data/scripts/handlers/effecthandlers/Heal.java b/dist/game/data/scripts/handlers/effecthandlers/Heal.java index 040e2183154f60fdca020fdc921c37e9a839cc03..e184d9ae3bc4d40d4202ba53c82367ef0a61cf5d 100644 --- a/dist/game/data/scripts/handlers/effecthandlers/Heal.java +++ b/dist/game/data/scripts/handlers/effecthandlers/Heal.java @@ -27,6 +27,7 @@ import com.l2jserver.gameserver.model.effects.L2EffectType; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; import com.l2jserver.gameserver.model.items.type.CrystalType; import com.l2jserver.gameserver.model.skills.BuffInfo; +import com.l2jserver.gameserver.model.skills.Skill; import com.l2jserver.gameserver.model.stats.Formulas; import com.l2jserver.gameserver.model.stats.Stats; import com.l2jserver.gameserver.network.SystemMessageId; @@ -62,8 +63,9 @@ public final class Heal extends AbstractEffect @Override public void onStart(BuffInfo info) { - L2Character target = info.getEffected(); - L2Character activeChar = info.getEffector(); + final L2Character target = info.getEffected(); + final L2Character activeChar = info.getEffector(); + final Skill skill = info.getSkill(); if ((target == null) || target.isDead() || target.isDoor() || target.isInvul()) { return; @@ -72,18 +74,18 @@ public final class Heal extends AbstractEffect double amount = _power; double staticShotBonus = 0; int mAtkMul = 1; - boolean sps = info.getSkill().isMagic() && activeChar.isChargedShot(ShotType.SPIRITSHOTS); - boolean bss = info.getSkill().isMagic() && activeChar.isChargedShot(ShotType.BLESSED_SPIRITSHOTS); + boolean sps = skill.isMagic() && activeChar.isChargedShot(ShotType.SPIRITSHOTS); + boolean bss = skill.isMagic() && activeChar.isChargedShot(ShotType.BLESSED_SPIRITSHOTS); if (((sps || bss) && (activeChar.isPlayer() && activeChar.getActingPlayer().isMageClass())) || activeChar.isSummon()) { - staticShotBonus = info.getSkill().getMpConsume2(); // static bonus for spiritshots + staticShotBonus = skill.getMpConsume2(); // static bonus for spiritshots mAtkMul = bss ? 4 : 2; staticShotBonus *= bss ? 2.4 : 1.0; } else if ((sps || bss) && activeChar.isNpc()) { - staticShotBonus = 2.4 * info.getSkill().getMpConsume2(); // always blessed spiritshots + staticShotBonus = 2.4 * skill.getMpConsume2(); // always blessed spiritshots mAtkMul = 4; } else @@ -99,12 +101,12 @@ public final class Heal extends AbstractEffect mAtkMul = bss ? mAtkMul * 4 : mAtkMul + 1; } - if (!info.getSkill().isStatic()) + if (!skill.isStatic()) { amount += staticShotBonus + Math.sqrt(mAtkMul * activeChar.getMAtk(activeChar, null)); amount = target.calcStat(Stats.HEAL_EFFECT, amount, null, null); // Heal critic, since CT2.3 Gracia Final - if (info.getSkill().isMagic() && Formulas.calcMCrit(activeChar.getMCriticalHit(target, info.getSkill()))) + if (skill.isMagic() && Formulas.calcMCrit(activeChar.getMCriticalHit(target, skill))) { amount *= 3; } @@ -119,7 +121,7 @@ public final class Heal extends AbstractEffect if (target.isPlayer()) { - if (info.getSkill().getId() == 4051) + if (skill.getId() == 4051) { target.sendPacket(SystemMessageId.REJUVENATING_HP); } diff --git a/dist/game/data/scripts/handlers/effecthandlers/HpByLevel.java b/dist/game/data/scripts/handlers/effecthandlers/HpByLevel.java index 801b7eda2b027b892308211a3f19c42524c75186..ab29210597e685edc8480485475402d506282691 100644 --- a/dist/game/data/scripts/handlers/effecthandlers/HpByLevel.java +++ b/dist/game/data/scripts/handlers/effecthandlers/HpByLevel.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import com.l2jserver.gameserver.model.StatsSet; +import com.l2jserver.gameserver.model.actor.L2Character; import com.l2jserver.gameserver.model.conditions.Condition; import com.l2jserver.gameserver.model.effects.AbstractEffect; import com.l2jserver.gameserver.model.effects.L2EffectType; @@ -61,14 +62,16 @@ public final class HpByLevel extends AbstractEffect return; } + final L2Character activeChar = info.getEffector(); + // Calculation final double abs = _power; - final double absorb = ((info.getEffector().getCurrentHp() + abs) > info.getEffector().getMaxHp() ? info.getEffector().getMaxHp() : (info.getEffector().getCurrentHp() + abs)); - final int restored = (int) (absorb - info.getEffector().getCurrentHp()); - info.getEffector().setCurrentHp(absorb); + final double absorb = ((activeChar.getCurrentHp() + abs) > activeChar.getMaxHp() ? activeChar.getMaxHp() : (activeChar.getCurrentHp() + abs)); + final int restored = (int) (absorb - activeChar.getCurrentHp()); + activeChar.setCurrentHp(absorb); // System message final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_HP_RESTORED); sm.addInt(restored); - info.getEffector().sendPacket(sm); + activeChar.sendPacket(sm); } } diff --git a/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java b/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java index 0279136c07e253dadb64390fd3bf9832359207ea..6e6183c79d7c80776f977f22545f221ad5fd32ce 100644 --- a/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java +++ b/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java @@ -25,6 +25,7 @@ import com.l2jserver.gameserver.model.conditions.Condition; import com.l2jserver.gameserver.model.effects.AbstractEffect; import com.l2jserver.gameserver.model.effects.L2EffectType; import com.l2jserver.gameserver.model.skills.BuffInfo; +import com.l2jserver.gameserver.model.skills.Skill; import com.l2jserver.gameserver.model.stats.Formulas; /** @@ -59,20 +60,21 @@ public final class HpDrain extends AbstractEffect @Override public void onStart(BuffInfo info) { - L2Character target = info.getEffected(); - L2Character activeChar = info.getEffector(); + final L2Character target = info.getEffected(); + final L2Character activeChar = info.getEffector(); + final Skill skill = info.getSkill(); // TODO: Unhardcode Cubic Skill to avoid double damage - if (activeChar.isAlikeDead() || (info.getSkill().getId() == 4050)) + if (activeChar.isAlikeDead() || (skill.getId() == 4050)) { return; } - boolean sps = info.getSkill().useSpiritShot() && activeChar.isChargedShot(ShotType.SPIRITSHOTS); - boolean bss = info.getSkill().useSpiritShot() && activeChar.isChargedShot(ShotType.BLESSED_SPIRITSHOTS); - boolean mcrit = Formulas.calcMCrit(activeChar.getMCriticalHit(target, info.getSkill())); - byte shld = Formulas.calcShldUse(activeChar, target, info.getSkill()); - double damage = Formulas.calcMagicDam(activeChar, target, info.getSkill(), shld, sps, bss, mcrit, _power); + boolean sps = skill.useSpiritShot() && activeChar.isChargedShot(ShotType.SPIRITSHOTS); + boolean bss = skill.useSpiritShot() && activeChar.isChargedShot(ShotType.BLESSED_SPIRITSHOTS); + boolean mcrit = Formulas.calcMCrit(activeChar.getMCriticalHit(target, skill)); + byte shld = Formulas.calcShldUse(activeChar, target, skill); + double damage = Formulas.calcMagicDam(activeChar, target, skill, shld, sps, bss, mcrit, _power); double drain = 0; double cp = target.getCurrentCp(); @@ -104,8 +106,8 @@ public final class HpDrain extends AbstractEffect target.breakCast(); } activeChar.sendDamageMessage(target, (int) damage, mcrit, false, false); - target.reduceCurrentHp(damage, activeChar, info.getSkill()); - target.notifyDamageReceived(damage, activeChar, info.getSkill(), mcrit, false, false); + target.reduceCurrentHp(damage, activeChar, skill); + target.notifyDamageReceived(damage, activeChar, skill, mcrit, false, false); } } } \ No newline at end of file diff --git a/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java b/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java index 50e99eaa641e3a0d889ec504f63d7b3af57bc401..62804f88628723ea63f4c70d188ddb775b941ca3 100644 --- a/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java +++ b/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java @@ -60,15 +60,14 @@ public final class MagicalAttackByAbnormal extends AbstractEffect @Override public void onStart(BuffInfo info) { - final L2Character target = info.getEffected(); - final L2Character activeChar = info.getEffector(); - final Skill skill = info.getSkill(); - - if (activeChar.isAlikeDead()) + if (info.getEffector().isAlikeDead()) { return; } + final L2Character target = info.getEffected(); + final L2Character activeChar = info.getEffector(); + final Skill skill = info.getSkill(); if (target.isPlayer() && target.getActingPlayer().isFakeDeath()) { target.stopFakeDeath(true); diff --git a/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackMp.java b/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackMp.java index 310fff845b30d0db1f35922779e65924b3dd337c..cf1b90cb00669849cd401669e70265dcbd09f0c5 100644 --- a/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackMp.java +++ b/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackMp.java @@ -25,6 +25,7 @@ import com.l2jserver.gameserver.model.conditions.Condition; import com.l2jserver.gameserver.model.effects.AbstractEffect; import com.l2jserver.gameserver.model.effects.L2EffectType; import com.l2jserver.gameserver.model.skills.BuffInfo; +import com.l2jserver.gameserver.model.skills.Skill; import com.l2jserver.gameserver.model.stats.Formulas; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.SystemMessage; @@ -84,19 +85,20 @@ public final class MagicalAttackMp extends AbstractEffect @Override public void onStart(BuffInfo info) { - L2Character target = info.getEffected(); - L2Character activeChar = info.getEffector(); - - if (activeChar.isAlikeDead()) + if (info.getEffector().isAlikeDead()) { return; } - boolean sps = info.getSkill().useSpiritShot() && activeChar.isChargedShot(ShotType.SPIRITSHOTS); - boolean bss = info.getSkill().useSpiritShot() && activeChar.isChargedShot(ShotType.BLESSED_SPIRITSHOTS); - final byte shld = Formulas.calcShldUse(activeChar, target, info.getSkill()); - final boolean mcrit = Formulas.calcMCrit(activeChar.getMCriticalHit(target, info.getSkill())); - double damage = Formulas.calcManaDam(activeChar, target, info.getSkill(), shld, sps, bss, mcrit, _power); + final L2Character target = info.getEffected(); + final L2Character activeChar = info.getEffector(); + final Skill skill = info.getSkill(); + + boolean sps = skill.useSpiritShot() && activeChar.isChargedShot(ShotType.SPIRITSHOTS); + boolean bss = skill.useSpiritShot() && activeChar.isChargedShot(ShotType.BLESSED_SPIRITSHOTS); + final byte shld = Formulas.calcShldUse(activeChar, target, skill); + final boolean mcrit = Formulas.calcMCrit(activeChar.getMCriticalHit(target, skill)); + double damage = Formulas.calcManaDam(activeChar, target, skill, shld, sps, bss, mcrit, _power); double mp = (damage > target.getCurrentMp() ? target.getCurrentMp() : damage); if (damage > 0) diff --git a/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java b/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java index 035918dcce2a88a92473fc8bde76105814a0d459..3ef40aafac778895ffb86d19488c1ca18288106c 100644 --- a/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java +++ b/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java @@ -60,15 +60,15 @@ public final class MagicalSoulAttack extends AbstractEffect @Override public void onStart(BuffInfo info) { - final L2Character target = info.getEffected(); - final L2Character activeChar = info.getEffector(); - final Skill skill = info.getSkill(); - - if (activeChar.isAlikeDead()) + if (info.getEffector().isAlikeDead()) { return; } + final L2Character target = info.getEffected(); + final L2Character activeChar = info.getEffector(); + final Skill skill = info.getSkill(); + if (target.isPlayer() && target.getActingPlayer().isFakeDeath()) { target.stopFakeDeath(true);