From a081a47f160900b0633e00a965a108702de41910 Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sat, 9 Dec 2017 02:48:40 +0000 Subject: [PATCH] Removed AttackDamagePosition effect. --- .../scripts/handlers/EffectMasterHandler.java | 1 - .../effecthandlers/AttackDamagePosition.java | 53 ------------------- .../handlers/effecthandlers/Backstab.java | 17 +----- .../handlers/effecthandlers/DamOverTime.java | 2 +- .../effecthandlers/DamOverTimePercent.java | 2 +- .../handlers/effecthandlers/DeathLink.java | 24 +-------- .../handlers/effecthandlers/EnergyAttack.java | 6 +-- .../handlers/effecthandlers/FatalBlow.java | 14 +---- .../handlers/effecthandlers/HpDrain.java | 12 +---- .../handlers/effecthandlers/HpToOwner.java | 2 +- .../MagicalAbnormalDispelAttack.java | 23 +------- .../effecthandlers/MagicalAttack.java | 32 +---------- .../MagicalAttackByAbnormal.java | 32 +---------- .../MagicalAttackByAbnormalSlot.java | 32 +---------- .../effecthandlers/MagicalAttackRange.java | 32 +---------- .../effecthandlers/MagicalDamOverTime.java | 2 +- .../effecthandlers/MagicalSoulAttack.java | 23 +------- .../effecthandlers/PhysicalAttack.java | 6 +-- .../effecthandlers/PhysicalAttackHpLink.java | 6 +-- .../effecthandlers/PhysicalAttackSaveHp.java | 6 +-- .../PhysicalAttackWeaponBonus.java | 6 +-- .../effecthandlers/PhysicalSoulAttack.java | 6 +-- .../handlers/effecthandlers/SoulBlow.java | 18 +------ .../game/data/stats/skills/19100-19199.xml | 10 +--- .../game/data/stats/skills/documentation.txt | 1 - .../gameserver/model/actor/L2Character.java | 4 +- .../scripts/handlers/EffectMasterHandler.java | 1 - .../effecthandlers/AttackDamagePosition.java | 53 ------------------- .../handlers/effecthandlers/Backstab.java | 17 +----- .../handlers/effecthandlers/DamOverTime.java | 2 +- .../effecthandlers/DamOverTimePercent.java | 2 +- .../handlers/effecthandlers/DeathLink.java | 24 +-------- .../handlers/effecthandlers/EnergyAttack.java | 6 +-- .../handlers/effecthandlers/FatalBlow.java | 14 +---- .../handlers/effecthandlers/HpDrain.java | 12 +---- .../handlers/effecthandlers/HpToOwner.java | 2 +- .../MagicalAbnormalDispelAttack.java | 23 +------- .../effecthandlers/MagicalAttack.java | 32 +---------- .../MagicalAttackByAbnormal.java | 32 +---------- .../MagicalAttackByAbnormalSlot.java | 32 +---------- .../effecthandlers/MagicalAttackRange.java | 32 +---------- .../effecthandlers/MagicalDamOverTime.java | 2 +- .../effecthandlers/MagicalSoulAttack.java | 23 +------- .../effecthandlers/PhysicalAttack.java | 6 +-- .../effecthandlers/PhysicalAttackHpLink.java | 6 +-- .../effecthandlers/PhysicalAttackSaveHp.java | 6 +-- .../PhysicalAttackWeaponBonus.java | 6 +-- .../effecthandlers/PhysicalSoulAttack.java | 6 +-- .../handlers/effecthandlers/SoulBlow.java | 18 +------ .../game/data/stats/skills/19100-19199.xml | 10 +--- .../game/data/stats/skills/documentation.txt | 1 - .../gameserver/model/actor/L2Character.java | 4 +- .../scripts/handlers/EffectMasterHandler.java | 1 - .../effecthandlers/AttackDamagePosition.java | 53 ------------------- .../handlers/effecthandlers/Backstab.java | 17 +----- .../handlers/effecthandlers/DamOverTime.java | 2 +- .../effecthandlers/DamOverTimePercent.java | 2 +- .../handlers/effecthandlers/DeathLink.java | 24 +-------- .../handlers/effecthandlers/EnergyAttack.java | 6 +-- .../handlers/effecthandlers/FatalBlow.java | 14 +---- .../handlers/effecthandlers/HpDrain.java | 12 +---- .../handlers/effecthandlers/HpToOwner.java | 2 +- .../MagicalAbnormalDispelAttack.java | 23 +------- .../effecthandlers/MagicalAttack.java | 32 +---------- .../MagicalAttackByAbnormal.java | 32 +---------- .../MagicalAttackByAbnormalSlot.java | 32 +---------- .../effecthandlers/MagicalAttackRange.java | 32 +---------- .../effecthandlers/MagicalDamOverTime.java | 2 +- .../effecthandlers/MagicalSoulAttack.java | 23 +------- .../effecthandlers/PhysicalAttack.java | 6 +-- .../effecthandlers/PhysicalAttackHpLink.java | 6 +-- .../effecthandlers/PhysicalAttackSaveHp.java | 6 +-- .../PhysicalAttackWeaponBonus.java | 6 +-- .../effecthandlers/PhysicalSoulAttack.java | 6 +-- .../handlers/effecthandlers/SoulBlow.java | 18 +------ .../game/data/stats/skills/19100-19199.xml | 10 +--- .../game/data/stats/skills/documentation.txt | 1 - .../gameserver/model/actor/L2Character.java | 4 +- .../scripts/handlers/EffectMasterHandler.java | 1 - .../effecthandlers/AttackDamagePosition.java | 53 ------------------- .../handlers/effecthandlers/Backstab.java | 17 +----- .../handlers/effecthandlers/DamOverTime.java | 2 +- .../effecthandlers/DamOverTimePercent.java | 2 +- .../handlers/effecthandlers/DeathLink.java | 24 +-------- .../handlers/effecthandlers/EnergyAttack.java | 6 +-- .../handlers/effecthandlers/FatalBlow.java | 14 +---- .../handlers/effecthandlers/HpDrain.java | 12 +---- .../handlers/effecthandlers/HpToOwner.java | 2 +- .../MagicalAbnormalDispelAttack.java | 23 +------- .../effecthandlers/MagicalAttack.java | 32 +---------- .../MagicalAttackByAbnormal.java | 32 +---------- .../MagicalAttackByAbnormalSlot.java | 32 +---------- .../effecthandlers/MagicalAttackRange.java | 32 +---------- .../effecthandlers/MagicalDamOverTime.java | 2 +- .../effecthandlers/MagicalSoulAttack.java | 23 +------- .../effecthandlers/PhysicalAttack.java | 6 +-- .../effecthandlers/PhysicalAttackHpLink.java | 6 +-- .../effecthandlers/PhysicalAttackSaveHp.java | 6 +-- .../PhysicalAttackWeaponBonus.java | 6 +-- .../effecthandlers/PhysicalSoulAttack.java | 6 +-- .../handlers/effecthandlers/SoulBlow.java | 18 +------ .../game/data/stats/skills/19100-19199.xml | 10 +--- .../game/data/stats/skills/19200-19299.xml | 7 ++- .../game/data/stats/skills/documentation.txt | 1 - .../gameserver/model/actor/L2Character.java | 4 +- .../scripts/handlers/EffectMasterHandler.java | 1 - .../effecthandlers/AttackDamagePosition.java | 53 ------------------- .../handlers/effecthandlers/Backstab.java | 17 +----- .../handlers/effecthandlers/DamOverTime.java | 2 +- .../effecthandlers/DamOverTimePercent.java | 2 +- .../handlers/effecthandlers/DeathLink.java | 24 +-------- .../handlers/effecthandlers/EnergyAttack.java | 6 +-- .../handlers/effecthandlers/FatalBlow.java | 14 +---- .../handlers/effecthandlers/HpDrain.java | 12 +---- .../handlers/effecthandlers/HpToOwner.java | 2 +- .../MagicalAbnormalDispelAttack.java | 23 +------- .../effecthandlers/MagicalAttack.java | 32 +---------- .../MagicalAttackByAbnormal.java | 32 +---------- .../MagicalAttackByAbnormalSlot.java | 32 +---------- .../effecthandlers/MagicalAttackRange.java | 32 +---------- .../effecthandlers/MagicalDamOverTime.java | 2 +- .../effecthandlers/MagicalSoulAttack.java | 23 +------- .../effecthandlers/PhysicalAttack.java | 6 +-- .../effecthandlers/PhysicalAttackHpLink.java | 6 +-- .../effecthandlers/PhysicalAttackSaveHp.java | 6 +-- .../PhysicalAttackWeaponBonus.java | 6 +-- .../effecthandlers/PhysicalSoulAttack.java | 6 +-- .../handlers/effecthandlers/SoulBlow.java | 18 +------ .../game/data/stats/skills/documentation.txt | 1 - .../gameserver/model/actor/L2Character.java | 4 +- 130 files changed, 122 insertions(+), 1735 deletions(-) delete mode 100644 L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java delete mode 100644 L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java delete mode 100644 L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java delete mode 100644 L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java delete mode 100644 L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/EffectMasterHandler.java index 083746616b..30fff039b3 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/EffectMasterHandler.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/EffectMasterHandler.java @@ -44,7 +44,6 @@ public final class EffectMasterHandler EffectHandler.getInstance().registerHandler("AttackAttribute", AttackAttribute::new); EffectHandler.getInstance().registerHandler("AttackAttributeAdd", AttackAttributeAdd::new); EffectHandler.getInstance().registerHandler("AttackBehind", AttackBehind::new); - EffectHandler.getInstance().registerHandler("AttackDamagePosition", AttackDamagePosition::new); EffectHandler.getInstance().registerHandler("AttackTrait", AttackTrait::new); EffectHandler.getInstance().registerHandler("Backstab", Backstab::new); EffectHandler.getInstance().registerHandler("Betray", Betray::new); diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java deleted file mode 100644 index 8eea732d3a..0000000000 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.effecthandlers; - -import com.l2jmobius.commons.util.MathUtil; -import com.l2jmobius.gameserver.enums.Position; -import com.l2jmobius.gameserver.model.StatsSet; -import com.l2jmobius.gameserver.model.actor.L2Character; -import com.l2jmobius.gameserver.model.effects.AbstractEffect; -import com.l2jmobius.gameserver.model.skills.BuffInfo; -import com.l2jmobius.gameserver.model.skills.Skill; -import com.l2jmobius.gameserver.model.stats.Stats; - -/** - * @author Nik - */ -public class AttackDamagePosition extends AbstractEffect -{ - protected final double _amount; - protected final Position _position; - - public AttackDamagePosition(StatsSet params) - { - _amount = params.getDouble("amount"); - _position = params.getEnum("position", Position.class); - } - - @Override - public void pump(L2Character effected, Skill skill) - { - effected.getStat().mergePositionTypeValue(Stats.ATTACK_DAMAGE, _position, (_amount / 100) + 1, MathUtil::mul); - } - - @Override - public void onExit(BuffInfo info) - { - info.getEffected().getStat().mergePositionTypeValue(Stats.ATTACK_DAMAGE, _position, (_amount / 100) + 1, MathUtil::div); - } -} diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/Backstab.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/Backstab.java index 95e7eb384c..407c15af47 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/Backstab.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/Backstab.java @@ -85,21 +85,6 @@ public final class Backstab extends AbstractEffect damage *= 2; } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, true); - - effected.reduceCurrentHp(damage, effector, skill, false, true, true, false); - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // if (effector.isPlayer()) - // { - // final L2PcInstance activePlayer = effector.getActingPlayer(); - // activePlayer.sendDamageMessage(effected, skill, (int) damage, true, false); - // } + effector.doAttack(damage, effected, skill, false, true, true, false); } } \ No newline at end of file diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java index d4f6eb757c..ffd0364a12 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java @@ -94,7 +94,7 @@ public final class DamOverTime extends AbstractEffect } } - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); return info.getSkill().isToggle(); } } diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java index e6b5f3074e..ef87a82dfa 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java @@ -74,7 +74,7 @@ public final class DamOverTimePercent extends AbstractEffect } } - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); return info.getSkill().isToggle(); } diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java index 79f48439d7..45ccf84198 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Death Link effect implementation. @@ -70,26 +68,6 @@ public final class DeathLink extends AbstractEffect final boolean mcrit = Formulas.calcCrit(skill.getMagicCriticalRate(), effector, effected, skill); final double damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power * (-((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2), effected.getMDef(), sps, bss, mcrit); - - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java index d5278cebda..f8ab8aa773 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java @@ -162,10 +162,6 @@ public final class EnergyAttack extends AbstractEffect damage = Math.max(0, damage); - // Check if damage should be reflected - Formulas.calcCounterAttack(attacker, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // attacker.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } \ No newline at end of file diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java index 7a20bcfb31..08c1164d08 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java @@ -117,18 +117,6 @@ public final class FatalBlow extends AbstractEffect damage *= 2; } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, true); - - effected.reduceCurrentHp(damage, effector, skill, false, false, true, false); - - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // effector.sendDamageMessage(effected, skill, (int) damage, true, false); + effector.doAttack(damage, effected, skill, false, false, true, false); } } \ No newline at end of file diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java index 2cfc9a4f7e..c2c36a280b 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java @@ -87,16 +87,6 @@ public final class HpDrain extends AbstractEffect final double hpFinal = ((effector.getCurrentHp() + hpAdd) > effector.getMaxHp() ? effector.getMaxHp() : (effector.getCurrentHp() + hpAdd)); effector.setCurrentHp(hpFinal); - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java index bce364cf33..1ad15ccdde 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java @@ -69,7 +69,7 @@ public final class HpToOwner extends AbstractEffect final double damage = _power * getTicksMultiplier(); - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); if (_stealAmount > 0) { final double amount = (damage * _stealAmount) / 100; diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java index cdf8d20089..63d4ed873c 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -26,7 +25,6 @@ import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.AbnormalType; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Abnormal-depending dispel Attack effect implementation. @@ -74,25 +72,6 @@ public final class MagicalAbnormalDispelAttack extends AbstractEffect final boolean mcrit = Formulas.calcCrit(skill.getMagicCriticalRate(), effector, effected, skill); final double damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power, effected.getMDef(), sps, bss, mcrit); - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java index 49f75486e4..eaaf892c7f 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Attackable; @@ -26,7 +25,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack effect implementation. @@ -86,34 +84,6 @@ public final class MagicalAttack extends AbstractEffect damage *= _debuffModifier; } - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java index 3747a88da4..fb70e9391e 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack By Abnormal effect implementation. @@ -73,34 +71,6 @@ public final class MagicalAttackByAbnormal extends AbstractEffect // each buff increase +30% damage *= (((effected.getBuffCount() * 0.3) + 1.3) / 4); - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java index 0c64d9cc3c..0f2a1f683c 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java @@ -20,7 +20,6 @@ import java.util.Collections; import java.util.HashSet; import java.util.Set; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -30,7 +29,6 @@ import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.AbnormalType; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack By Abnormal Slot effect implementation. @@ -90,34 +88,6 @@ public final class MagicalAttackByAbnormalSlot extends AbstractEffect final boolean mcrit = Formulas.calcCrit(skill.getMagicCriticalRate(), effector, effected, skill); final double damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power, effected.getMDef(), sps, bss, mcrit); - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java index 28448c925a..6845814d03 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack effect implementation. @@ -88,34 +86,6 @@ public final class MagicalAttackRange extends AbstractEffect damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power, mDef, sps, bss, mcrit); } - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java index 9135ac18af..0f41184d19 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java @@ -80,7 +80,7 @@ public final class MagicalDamOverTime extends AbstractEffect } } - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); return info.getSkill().isToggle(); } } diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java index a6c13d909f..82c1e643bd 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; import com.l2jmobius.gameserver.network.SystemMessageId; import com.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -82,25 +80,6 @@ public final class MagicalSoulAttack extends AbstractEffect final double mAtk = effector.getMAtk() * (chargedSouls > 0 ? (1.3 + (chargedSouls * 0.05)) : 1); final double damage = Formulas.calcMagicDam(effector, effected, skill, mAtk, _power, effected.getMDef(), sps, bss, mcrit); - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java index 43eb65d382..ee26388cd5 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java @@ -172,10 +172,6 @@ public final class PhysicalAttack extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java index a92be012e1..5058c0934e 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java @@ -134,10 +134,6 @@ public final class PhysicalAttackHpLink extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected. - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java index 3e3dc2ed94..a2c1c39d1a 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java @@ -144,9 +144,6 @@ public final class PhysicalAttackSaveHp extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - final double minHp = (effected.getMaxHp() * _saveHp) / 100; if ((effected.getCurrentHp() - damage) < minHp) @@ -154,7 +151,6 @@ public final class PhysicalAttackSaveHp extends AbstractEffect damage = effected.getCurrentHp() - minHp; } - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java index 52f4ef07cc..4f9565f0fe 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java @@ -165,10 +165,6 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java index b8fe23abc8..b591dab322 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java @@ -159,10 +159,6 @@ public final class PhysicalSoulAttack extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java index 5dd50a27ed..53d8257d8d 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java @@ -90,22 +90,6 @@ public final class SoulBlow extends AbstractEffect damage *= 1 + (chargedSouls * 0.04); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, true); - - effected.reduceCurrentHp(damage, effector, skill, false, false, true, false); - - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // if (effector.isPlayer()) - // { - // final L2PcInstance activePlayer = effector.getActingPlayer(); - // activePlayer.sendDamageMessage(effected, skill, (int) damage, true, false); - // } + effector.doAttack(damage, effected, skill, false, false, true, false); } } \ No newline at end of file diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/19100-19199.xml b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/19100-19199.xml index 20bfd570d0..dfa0515d42 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/19100-19199.xml +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/19100-19199.xml @@ -890,15 +890,7 @@ P icon.skill0030 - - - - 3 - 6 - - BACK - - + diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/documentation.txt index 0ed1c87ddf..9a6c720053 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/documentation.txt +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/stats/skills/documentation.txt @@ -13,7 +13,6 @@ AreaDamage: Topography (Danger Zone) resistance stat. AttackAttribute: Stat that increases specific attack attribute. AttackAttributeAdd: Stat that increases all attack attribute. AttackBehind: Enables all attacks regardless of position to land towards the back. -AttackDamagePosition: Bonus damage depending on player position towards the target. AttackTrait: Stat that manages all attack traits. Backstab: Inflicts physical damage according to the backstab formula. Betray: Causes the target summon to attack its owner. diff --git a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Character.java b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Character.java index b678f99e09..e030558301 100644 --- a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Character.java +++ b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Character.java @@ -55,7 +55,6 @@ import com.l2jmobius.gameserver.enums.BasicProperty; import com.l2jmobius.gameserver.enums.CategoryType; import com.l2jmobius.gameserver.enums.InstanceType; import com.l2jmobius.gameserver.enums.ItemSkillType; -import com.l2jmobius.gameserver.enums.Position; import com.l2jmobius.gameserver.enums.Race; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.enums.StatusUpdateType; @@ -4397,7 +4396,8 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe if (!reflect && !isDOT) { - damage *= getStat().getPositionTypeValue(Stats.ATTACK_DAMAGE, Position.getPosition(this, target)); + // TODO: Implement AttackDamagePosition effect + // damage *= getStat().getPositionTypeValue(Stats.ATTACK_DAMAGE, Position.getPosition(this, target)); // Counterattacks happen before damage received. if (!target.isDead() && (skill != null)) diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/EffectMasterHandler.java index 083746616b..30fff039b3 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/EffectMasterHandler.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/EffectMasterHandler.java @@ -44,7 +44,6 @@ public final class EffectMasterHandler EffectHandler.getInstance().registerHandler("AttackAttribute", AttackAttribute::new); EffectHandler.getInstance().registerHandler("AttackAttributeAdd", AttackAttributeAdd::new); EffectHandler.getInstance().registerHandler("AttackBehind", AttackBehind::new); - EffectHandler.getInstance().registerHandler("AttackDamagePosition", AttackDamagePosition::new); EffectHandler.getInstance().registerHandler("AttackTrait", AttackTrait::new); EffectHandler.getInstance().registerHandler("Backstab", Backstab::new); EffectHandler.getInstance().registerHandler("Betray", Betray::new); diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java deleted file mode 100644 index 8eea732d3a..0000000000 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.effecthandlers; - -import com.l2jmobius.commons.util.MathUtil; -import com.l2jmobius.gameserver.enums.Position; -import com.l2jmobius.gameserver.model.StatsSet; -import com.l2jmobius.gameserver.model.actor.L2Character; -import com.l2jmobius.gameserver.model.effects.AbstractEffect; -import com.l2jmobius.gameserver.model.skills.BuffInfo; -import com.l2jmobius.gameserver.model.skills.Skill; -import com.l2jmobius.gameserver.model.stats.Stats; - -/** - * @author Nik - */ -public class AttackDamagePosition extends AbstractEffect -{ - protected final double _amount; - protected final Position _position; - - public AttackDamagePosition(StatsSet params) - { - _amount = params.getDouble("amount"); - _position = params.getEnum("position", Position.class); - } - - @Override - public void pump(L2Character effected, Skill skill) - { - effected.getStat().mergePositionTypeValue(Stats.ATTACK_DAMAGE, _position, (_amount / 100) + 1, MathUtil::mul); - } - - @Override - public void onExit(BuffInfo info) - { - info.getEffected().getStat().mergePositionTypeValue(Stats.ATTACK_DAMAGE, _position, (_amount / 100) + 1, MathUtil::div); - } -} diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/Backstab.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/Backstab.java index 95e7eb384c..407c15af47 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/Backstab.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/Backstab.java @@ -85,21 +85,6 @@ public final class Backstab extends AbstractEffect damage *= 2; } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, true); - - effected.reduceCurrentHp(damage, effector, skill, false, true, true, false); - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // if (effector.isPlayer()) - // { - // final L2PcInstance activePlayer = effector.getActingPlayer(); - // activePlayer.sendDamageMessage(effected, skill, (int) damage, true, false); - // } + effector.doAttack(damage, effected, skill, false, true, true, false); } } \ No newline at end of file diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java index d4f6eb757c..ffd0364a12 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java @@ -94,7 +94,7 @@ public final class DamOverTime extends AbstractEffect } } - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); return info.getSkill().isToggle(); } } diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java index e6b5f3074e..ef87a82dfa 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java @@ -74,7 +74,7 @@ public final class DamOverTimePercent extends AbstractEffect } } - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); return info.getSkill().isToggle(); } diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java index 79f48439d7..45ccf84198 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Death Link effect implementation. @@ -70,26 +68,6 @@ public final class DeathLink extends AbstractEffect final boolean mcrit = Formulas.calcCrit(skill.getMagicCriticalRate(), effector, effected, skill); final double damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power * (-((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2), effected.getMDef(), sps, bss, mcrit); - - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java index d5278cebda..f8ab8aa773 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java @@ -162,10 +162,6 @@ public final class EnergyAttack extends AbstractEffect damage = Math.max(0, damage); - // Check if damage should be reflected - Formulas.calcCounterAttack(attacker, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // attacker.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } \ No newline at end of file diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java index 7a20bcfb31..08c1164d08 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java @@ -117,18 +117,6 @@ public final class FatalBlow extends AbstractEffect damage *= 2; } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, true); - - effected.reduceCurrentHp(damage, effector, skill, false, false, true, false); - - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // effector.sendDamageMessage(effected, skill, (int) damage, true, false); + effector.doAttack(damage, effected, skill, false, false, true, false); } } \ No newline at end of file diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java index 2cfc9a4f7e..c2c36a280b 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java @@ -87,16 +87,6 @@ public final class HpDrain extends AbstractEffect final double hpFinal = ((effector.getCurrentHp() + hpAdd) > effector.getMaxHp() ? effector.getMaxHp() : (effector.getCurrentHp() + hpAdd)); effector.setCurrentHp(hpFinal); - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java index bce364cf33..1ad15ccdde 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java @@ -69,7 +69,7 @@ public final class HpToOwner extends AbstractEffect final double damage = _power * getTicksMultiplier(); - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); if (_stealAmount > 0) { final double amount = (damage * _stealAmount) / 100; diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java index cdf8d20089..63d4ed873c 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -26,7 +25,6 @@ import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.AbnormalType; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Abnormal-depending dispel Attack effect implementation. @@ -74,25 +72,6 @@ public final class MagicalAbnormalDispelAttack extends AbstractEffect final boolean mcrit = Formulas.calcCrit(skill.getMagicCriticalRate(), effector, effected, skill); final double damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power, effected.getMDef(), sps, bss, mcrit); - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java index 49f75486e4..eaaf892c7f 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Attackable; @@ -26,7 +25,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack effect implementation. @@ -86,34 +84,6 @@ public final class MagicalAttack extends AbstractEffect damage *= _debuffModifier; } - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java index 3747a88da4..fb70e9391e 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack By Abnormal effect implementation. @@ -73,34 +71,6 @@ public final class MagicalAttackByAbnormal extends AbstractEffect // each buff increase +30% damage *= (((effected.getBuffCount() * 0.3) + 1.3) / 4); - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java index 0c64d9cc3c..0f2a1f683c 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java @@ -20,7 +20,6 @@ import java.util.Collections; import java.util.HashSet; import java.util.Set; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -30,7 +29,6 @@ import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.AbnormalType; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack By Abnormal Slot effect implementation. @@ -90,34 +88,6 @@ public final class MagicalAttackByAbnormalSlot extends AbstractEffect final boolean mcrit = Formulas.calcCrit(skill.getMagicCriticalRate(), effector, effected, skill); final double damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power, effected.getMDef(), sps, bss, mcrit); - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java index 28448c925a..6845814d03 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack effect implementation. @@ -88,34 +86,6 @@ public final class MagicalAttackRange extends AbstractEffect damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power, mDef, sps, bss, mcrit); } - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java index 9135ac18af..0f41184d19 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java @@ -80,7 +80,7 @@ public final class MagicalDamOverTime extends AbstractEffect } } - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); return info.getSkill().isToggle(); } } diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java index a6c13d909f..82c1e643bd 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; import com.l2jmobius.gameserver.network.SystemMessageId; import com.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -82,25 +80,6 @@ public final class MagicalSoulAttack extends AbstractEffect final double mAtk = effector.getMAtk() * (chargedSouls > 0 ? (1.3 + (chargedSouls * 0.05)) : 1); final double damage = Formulas.calcMagicDam(effector, effected, skill, mAtk, _power, effected.getMDef(), sps, bss, mcrit); - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java index 43eb65d382..ee26388cd5 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java @@ -172,10 +172,6 @@ public final class PhysicalAttack extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java index a92be012e1..5058c0934e 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java @@ -134,10 +134,6 @@ public final class PhysicalAttackHpLink extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected. - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java index 3e3dc2ed94..a2c1c39d1a 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java @@ -144,9 +144,6 @@ public final class PhysicalAttackSaveHp extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - final double minHp = (effected.getMaxHp() * _saveHp) / 100; if ((effected.getCurrentHp() - damage) < minHp) @@ -154,7 +151,6 @@ public final class PhysicalAttackSaveHp extends AbstractEffect damage = effected.getCurrentHp() - minHp; } - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java index 52f4ef07cc..4f9565f0fe 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java @@ -165,10 +165,6 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java index b8fe23abc8..b591dab322 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java @@ -159,10 +159,6 @@ public final class PhysicalSoulAttack extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java index 5dd50a27ed..53d8257d8d 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java @@ -90,22 +90,6 @@ public final class SoulBlow extends AbstractEffect damage *= 1 + (chargedSouls * 0.04); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, true); - - effected.reduceCurrentHp(damage, effector, skill, false, false, true, false); - - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // if (effector.isPlayer()) - // { - // final L2PcInstance activePlayer = effector.getActingPlayer(); - // activePlayer.sendDamageMessage(effected, skill, (int) damage, true, false); - // } + effector.doAttack(damage, effected, skill, false, false, true, false); } } \ No newline at end of file diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/19100-19199.xml b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/19100-19199.xml index e580a09b72..53aae7e583 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/19100-19199.xml +++ b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/19100-19199.xml @@ -890,15 +890,7 @@ P icon.skill0030 - - - - 3 - 6 - - BACK - - + diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/documentation.txt index 0ed1c87ddf..9a6c720053 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/documentation.txt +++ b/L2J_Mobius_2.5_Underground/dist/game/data/stats/skills/documentation.txt @@ -13,7 +13,6 @@ AreaDamage: Topography (Danger Zone) resistance stat. AttackAttribute: Stat that increases specific attack attribute. AttackAttributeAdd: Stat that increases all attack attribute. AttackBehind: Enables all attacks regardless of position to land towards the back. -AttackDamagePosition: Bonus damage depending on player position towards the target. AttackTrait: Stat that manages all attack traits. Backstab: Inflicts physical damage according to the backstab formula. Betray: Causes the target summon to attack its owner. diff --git a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/actor/L2Character.java b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/actor/L2Character.java index b678f99e09..e030558301 100644 --- a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/actor/L2Character.java +++ b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/actor/L2Character.java @@ -55,7 +55,6 @@ import com.l2jmobius.gameserver.enums.BasicProperty; import com.l2jmobius.gameserver.enums.CategoryType; import com.l2jmobius.gameserver.enums.InstanceType; import com.l2jmobius.gameserver.enums.ItemSkillType; -import com.l2jmobius.gameserver.enums.Position; import com.l2jmobius.gameserver.enums.Race; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.enums.StatusUpdateType; @@ -4397,7 +4396,8 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe if (!reflect && !isDOT) { - damage *= getStat().getPositionTypeValue(Stats.ATTACK_DAMAGE, Position.getPosition(this, target)); + // TODO: Implement AttackDamagePosition effect + // damage *= getStat().getPositionTypeValue(Stats.ATTACK_DAMAGE, Position.getPosition(this, target)); // Counterattacks happen before damage received. if (!target.isDead() && (skill != null)) diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/EffectMasterHandler.java index 083746616b..30fff039b3 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/EffectMasterHandler.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/EffectMasterHandler.java @@ -44,7 +44,6 @@ public final class EffectMasterHandler EffectHandler.getInstance().registerHandler("AttackAttribute", AttackAttribute::new); EffectHandler.getInstance().registerHandler("AttackAttributeAdd", AttackAttributeAdd::new); EffectHandler.getInstance().registerHandler("AttackBehind", AttackBehind::new); - EffectHandler.getInstance().registerHandler("AttackDamagePosition", AttackDamagePosition::new); EffectHandler.getInstance().registerHandler("AttackTrait", AttackTrait::new); EffectHandler.getInstance().registerHandler("Backstab", Backstab::new); EffectHandler.getInstance().registerHandler("Betray", Betray::new); diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java deleted file mode 100644 index 8eea732d3a..0000000000 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.effecthandlers; - -import com.l2jmobius.commons.util.MathUtil; -import com.l2jmobius.gameserver.enums.Position; -import com.l2jmobius.gameserver.model.StatsSet; -import com.l2jmobius.gameserver.model.actor.L2Character; -import com.l2jmobius.gameserver.model.effects.AbstractEffect; -import com.l2jmobius.gameserver.model.skills.BuffInfo; -import com.l2jmobius.gameserver.model.skills.Skill; -import com.l2jmobius.gameserver.model.stats.Stats; - -/** - * @author Nik - */ -public class AttackDamagePosition extends AbstractEffect -{ - protected final double _amount; - protected final Position _position; - - public AttackDamagePosition(StatsSet params) - { - _amount = params.getDouble("amount"); - _position = params.getEnum("position", Position.class); - } - - @Override - public void pump(L2Character effected, Skill skill) - { - effected.getStat().mergePositionTypeValue(Stats.ATTACK_DAMAGE, _position, (_amount / 100) + 1, MathUtil::mul); - } - - @Override - public void onExit(BuffInfo info) - { - info.getEffected().getStat().mergePositionTypeValue(Stats.ATTACK_DAMAGE, _position, (_amount / 100) + 1, MathUtil::div); - } -} diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/Backstab.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/Backstab.java index 95e7eb384c..407c15af47 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/Backstab.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/Backstab.java @@ -85,21 +85,6 @@ public final class Backstab extends AbstractEffect damage *= 2; } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, true); - - effected.reduceCurrentHp(damage, effector, skill, false, true, true, false); - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // if (effector.isPlayer()) - // { - // final L2PcInstance activePlayer = effector.getActingPlayer(); - // activePlayer.sendDamageMessage(effected, skill, (int) damage, true, false); - // } + effector.doAttack(damage, effected, skill, false, true, true, false); } } \ No newline at end of file diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java index d4f6eb757c..ffd0364a12 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java @@ -94,7 +94,7 @@ public final class DamOverTime extends AbstractEffect } } - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); return info.getSkill().isToggle(); } } diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java index e6b5f3074e..ef87a82dfa 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java @@ -74,7 +74,7 @@ public final class DamOverTimePercent extends AbstractEffect } } - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); return info.getSkill().isToggle(); } diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java index 79f48439d7..45ccf84198 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Death Link effect implementation. @@ -70,26 +68,6 @@ public final class DeathLink extends AbstractEffect final boolean mcrit = Formulas.calcCrit(skill.getMagicCriticalRate(), effector, effected, skill); final double damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power * (-((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2), effected.getMDef(), sps, bss, mcrit); - - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java index d5278cebda..f8ab8aa773 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java @@ -162,10 +162,6 @@ public final class EnergyAttack extends AbstractEffect damage = Math.max(0, damage); - // Check if damage should be reflected - Formulas.calcCounterAttack(attacker, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // attacker.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } \ No newline at end of file diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java index 7a20bcfb31..08c1164d08 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java @@ -117,18 +117,6 @@ public final class FatalBlow extends AbstractEffect damage *= 2; } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, true); - - effected.reduceCurrentHp(damage, effector, skill, false, false, true, false); - - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // effector.sendDamageMessage(effected, skill, (int) damage, true, false); + effector.doAttack(damage, effected, skill, false, false, true, false); } } \ No newline at end of file diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java index 2cfc9a4f7e..c2c36a280b 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java @@ -87,16 +87,6 @@ public final class HpDrain extends AbstractEffect final double hpFinal = ((effector.getCurrentHp() + hpAdd) > effector.getMaxHp() ? effector.getMaxHp() : (effector.getCurrentHp() + hpAdd)); effector.setCurrentHp(hpFinal); - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java index bce364cf33..1ad15ccdde 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java @@ -69,7 +69,7 @@ public final class HpToOwner extends AbstractEffect final double damage = _power * getTicksMultiplier(); - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); if (_stealAmount > 0) { final double amount = (damage * _stealAmount) / 100; diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java index cdf8d20089..63d4ed873c 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -26,7 +25,6 @@ import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.AbnormalType; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Abnormal-depending dispel Attack effect implementation. @@ -74,25 +72,6 @@ public final class MagicalAbnormalDispelAttack extends AbstractEffect final boolean mcrit = Formulas.calcCrit(skill.getMagicCriticalRate(), effector, effected, skill); final double damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power, effected.getMDef(), sps, bss, mcrit); - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java index 49f75486e4..eaaf892c7f 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Attackable; @@ -26,7 +25,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack effect implementation. @@ -86,34 +84,6 @@ public final class MagicalAttack extends AbstractEffect damage *= _debuffModifier; } - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java index 3747a88da4..fb70e9391e 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack By Abnormal effect implementation. @@ -73,34 +71,6 @@ public final class MagicalAttackByAbnormal extends AbstractEffect // each buff increase +30% damage *= (((effected.getBuffCount() * 0.3) + 1.3) / 4); - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java index 0c64d9cc3c..0f2a1f683c 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java @@ -20,7 +20,6 @@ import java.util.Collections; import java.util.HashSet; import java.util.Set; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -30,7 +29,6 @@ import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.AbnormalType; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack By Abnormal Slot effect implementation. @@ -90,34 +88,6 @@ public final class MagicalAttackByAbnormalSlot extends AbstractEffect final boolean mcrit = Formulas.calcCrit(skill.getMagicCriticalRate(), effector, effected, skill); final double damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power, effected.getMDef(), sps, bss, mcrit); - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java index 28448c925a..6845814d03 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack effect implementation. @@ -88,34 +86,6 @@ public final class MagicalAttackRange extends AbstractEffect damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power, mDef, sps, bss, mcrit); } - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java index 9135ac18af..0f41184d19 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java @@ -80,7 +80,7 @@ public final class MagicalDamOverTime extends AbstractEffect } } - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); return info.getSkill().isToggle(); } } diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java index a6c13d909f..82c1e643bd 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; import com.l2jmobius.gameserver.network.SystemMessageId; import com.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -82,25 +80,6 @@ public final class MagicalSoulAttack extends AbstractEffect final double mAtk = effector.getMAtk() * (chargedSouls > 0 ? (1.3 + (chargedSouls * 0.05)) : 1); final double damage = Formulas.calcMagicDam(effector, effected, skill, mAtk, _power, effected.getMDef(), sps, bss, mcrit); - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java index 43eb65d382..ee26388cd5 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java @@ -172,10 +172,6 @@ public final class PhysicalAttack extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java index a92be012e1..5058c0934e 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java @@ -134,10 +134,6 @@ public final class PhysicalAttackHpLink extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected. - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java index 3e3dc2ed94..a2c1c39d1a 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java @@ -144,9 +144,6 @@ public final class PhysicalAttackSaveHp extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - final double minHp = (effected.getMaxHp() * _saveHp) / 100; if ((effected.getCurrentHp() - damage) < minHp) @@ -154,7 +151,6 @@ public final class PhysicalAttackSaveHp extends AbstractEffect damage = effected.getCurrentHp() - minHp; } - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java index 52f4ef07cc..4f9565f0fe 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java @@ -165,10 +165,6 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java index b8fe23abc8..b591dab322 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java @@ -159,10 +159,6 @@ public final class PhysicalSoulAttack extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java index 5dd50a27ed..53d8257d8d 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java @@ -90,22 +90,6 @@ public final class SoulBlow extends AbstractEffect damage *= 1 + (chargedSouls * 0.04); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, true); - - effected.reduceCurrentHp(damage, effector, skill, false, false, true, false); - - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // if (effector.isPlayer()) - // { - // final L2PcInstance activePlayer = effector.getActingPlayer(); - // activePlayer.sendDamageMessage(effected, skill, (int) damage, true, false); - // } + effector.doAttack(damage, effected, skill, false, false, true, false); } } \ No newline at end of file diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/19100-19199.xml b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/19100-19199.xml index 2b9ca343a9..bfcd719bfa 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/19100-19199.xml +++ b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/19100-19199.xml @@ -890,15 +890,7 @@ P icon.skill0030 - - - - 3 - 6 - - BACK - - + diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/documentation.txt index 0ed1c87ddf..9a6c720053 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/documentation.txt +++ b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/documentation.txt @@ -13,7 +13,6 @@ AreaDamage: Topography (Danger Zone) resistance stat. AttackAttribute: Stat that increases specific attack attribute. AttackAttributeAdd: Stat that increases all attack attribute. AttackBehind: Enables all attacks regardless of position to land towards the back. -AttackDamagePosition: Bonus damage depending on player position towards the target. AttackTrait: Stat that manages all attack traits. Backstab: Inflicts physical damage according to the backstab formula. Betray: Causes the target summon to attack its owner. diff --git a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/actor/L2Character.java b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/actor/L2Character.java index b678f99e09..e030558301 100644 --- a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/actor/L2Character.java +++ b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/actor/L2Character.java @@ -55,7 +55,6 @@ import com.l2jmobius.gameserver.enums.BasicProperty; import com.l2jmobius.gameserver.enums.CategoryType; import com.l2jmobius.gameserver.enums.InstanceType; import com.l2jmobius.gameserver.enums.ItemSkillType; -import com.l2jmobius.gameserver.enums.Position; import com.l2jmobius.gameserver.enums.Race; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.enums.StatusUpdateType; @@ -4397,7 +4396,8 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe if (!reflect && !isDOT) { - damage *= getStat().getPositionTypeValue(Stats.ATTACK_DAMAGE, Position.getPosition(this, target)); + // TODO: Implement AttackDamagePosition effect + // damage *= getStat().getPositionTypeValue(Stats.ATTACK_DAMAGE, Position.getPosition(this, target)); // Counterattacks happen before damage received. if (!target.isDead() && (skill != null)) diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/EffectMasterHandler.java index aca4f296d8..ee5e22dacc 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/EffectMasterHandler.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/EffectMasterHandler.java @@ -44,7 +44,6 @@ public final class EffectMasterHandler EffectHandler.getInstance().registerHandler("AttackAttribute", AttackAttribute::new); EffectHandler.getInstance().registerHandler("AttackAttributeAdd", AttackAttributeAdd::new); EffectHandler.getInstance().registerHandler("AttackBehind", AttackBehind::new); - EffectHandler.getInstance().registerHandler("AttackDamagePosition", AttackDamagePosition::new); EffectHandler.getInstance().registerHandler("AttackTrait", AttackTrait::new); EffectHandler.getInstance().registerHandler("Backstab", Backstab::new); EffectHandler.getInstance().registerHandler("Betray", Betray::new); diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java deleted file mode 100644 index 989328c9e1..0000000000 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.effecthandlers; - -import com.l2jmobius.commons.util.MathUtil; -import com.l2jmobius.gameserver.enums.Position; -import com.l2jmobius.gameserver.model.StatsSet; -import com.l2jmobius.gameserver.model.actor.L2Character; -import com.l2jmobius.gameserver.model.effects.AbstractEffect; -import com.l2jmobius.gameserver.model.skills.BuffInfo; -import com.l2jmobius.gameserver.model.skills.Skill; -import com.l2jmobius.gameserver.model.stats.Stats; - -/** - * @author Nik - */ -public class AttackDamagePosition extends AbstractEffect -{ - protected final double _amount; - protected final Position _position; - - public AttackDamagePosition(StatsSet params) - { - _amount = params.getDouble("amount"); - _position = params.getEnum("position", Position.class); - } - - @Override - public void pump(L2Character effected, Skill skill) - { - effected.getStat().mergePositionTypeValue(Stats.ATTACK_DAMAGE, _position, (_amount / 100) + 1, MathUtil::mul); - } - - @Override - public void onExit(BuffInfo info) - { - info.getEffected().getStat().mergePositionTypeValue(Stats.ATTACK_DAMAGE, _position, (_amount / 100) + 1, MathUtil::div); - } -} diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/Backstab.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/Backstab.java index 95e7eb384c..407c15af47 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/Backstab.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/Backstab.java @@ -85,21 +85,6 @@ public final class Backstab extends AbstractEffect damage *= 2; } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, true); - - effected.reduceCurrentHp(damage, effector, skill, false, true, true, false); - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // if (effector.isPlayer()) - // { - // final L2PcInstance activePlayer = effector.getActingPlayer(); - // activePlayer.sendDamageMessage(effected, skill, (int) damage, true, false); - // } + effector.doAttack(damage, effected, skill, false, true, true, false); } } \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java index d4f6eb757c..ffd0364a12 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java @@ -94,7 +94,7 @@ public final class DamOverTime extends AbstractEffect } } - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); return info.getSkill().isToggle(); } } diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java index e6b5f3074e..ef87a82dfa 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java @@ -74,7 +74,7 @@ public final class DamOverTimePercent extends AbstractEffect } } - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); return info.getSkill().isToggle(); } diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java index 79f48439d7..45ccf84198 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Death Link effect implementation. @@ -70,26 +68,6 @@ public final class DeathLink extends AbstractEffect final boolean mcrit = Formulas.calcCrit(skill.getMagicCriticalRate(), effector, effected, skill); final double damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power * (-((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2), effected.getMDef(), sps, bss, mcrit); - - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java index d5278cebda..f8ab8aa773 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java @@ -162,10 +162,6 @@ public final class EnergyAttack extends AbstractEffect damage = Math.max(0, damage); - // Check if damage should be reflected - Formulas.calcCounterAttack(attacker, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // attacker.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java index 7a20bcfb31..08c1164d08 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java @@ -117,18 +117,6 @@ public final class FatalBlow extends AbstractEffect damage *= 2; } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, true); - - effected.reduceCurrentHp(damage, effector, skill, false, false, true, false); - - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // effector.sendDamageMessage(effected, skill, (int) damage, true, false); + effector.doAttack(damage, effected, skill, false, false, true, false); } } \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java index 2cfc9a4f7e..c2c36a280b 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java @@ -87,16 +87,6 @@ public final class HpDrain extends AbstractEffect final double hpFinal = ((effector.getCurrentHp() + hpAdd) > effector.getMaxHp() ? effector.getMaxHp() : (effector.getCurrentHp() + hpAdd)); effector.setCurrentHp(hpFinal); - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java index bce364cf33..1ad15ccdde 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java @@ -69,7 +69,7 @@ public final class HpToOwner extends AbstractEffect final double damage = _power * getTicksMultiplier(); - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); if (_stealAmount > 0) { final double amount = (damage * _stealAmount) / 100; diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java index cdf8d20089..63d4ed873c 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -26,7 +25,6 @@ import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.AbnormalType; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Abnormal-depending dispel Attack effect implementation. @@ -74,25 +72,6 @@ public final class MagicalAbnormalDispelAttack extends AbstractEffect final boolean mcrit = Formulas.calcCrit(skill.getMagicCriticalRate(), effector, effected, skill); final double damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power, effected.getMDef(), sps, bss, mcrit); - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java index 49f75486e4..eaaf892c7f 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Attackable; @@ -26,7 +25,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack effect implementation. @@ -86,34 +84,6 @@ public final class MagicalAttack extends AbstractEffect damage *= _debuffModifier; } - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java index 3747a88da4..fb70e9391e 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack By Abnormal effect implementation. @@ -73,34 +71,6 @@ public final class MagicalAttackByAbnormal extends AbstractEffect // each buff increase +30% damage *= (((effected.getBuffCount() * 0.3) + 1.3) / 4); - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java index 0c64d9cc3c..0f2a1f683c 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java @@ -20,7 +20,6 @@ import java.util.Collections; import java.util.HashSet; import java.util.Set; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -30,7 +29,6 @@ import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.AbnormalType; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack By Abnormal Slot effect implementation. @@ -90,34 +88,6 @@ public final class MagicalAttackByAbnormalSlot extends AbstractEffect final boolean mcrit = Formulas.calcCrit(skill.getMagicCriticalRate(), effector, effected, skill); final double damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power, effected.getMDef(), sps, bss, mcrit); - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java index 28448c925a..6845814d03 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack effect implementation. @@ -88,34 +86,6 @@ public final class MagicalAttackRange extends AbstractEffect damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power, mDef, sps, bss, mcrit); } - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java index 9135ac18af..0f41184d19 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java @@ -80,7 +80,7 @@ public final class MagicalDamOverTime extends AbstractEffect } } - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); return info.getSkill().isToggle(); } } diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java index a6c13d909f..82c1e643bd 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; import com.l2jmobius.gameserver.network.SystemMessageId; import com.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -82,25 +80,6 @@ public final class MagicalSoulAttack extends AbstractEffect final double mAtk = effector.getMAtk() * (chargedSouls > 0 ? (1.3 + (chargedSouls * 0.05)) : 1); final double damage = Formulas.calcMagicDam(effector, effected, skill, mAtk, _power, effected.getMDef(), sps, bss, mcrit); - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java index 43eb65d382..ee26388cd5 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java @@ -172,10 +172,6 @@ public final class PhysicalAttack extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java index a92be012e1..5058c0934e 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java @@ -134,10 +134,6 @@ public final class PhysicalAttackHpLink extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected. - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java index 3e3dc2ed94..a2c1c39d1a 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java @@ -144,9 +144,6 @@ public final class PhysicalAttackSaveHp extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - final double minHp = (effected.getMaxHp() * _saveHp) / 100; if ((effected.getCurrentHp() - damage) < minHp) @@ -154,7 +151,6 @@ public final class PhysicalAttackSaveHp extends AbstractEffect damage = effected.getCurrentHp() - minHp; } - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java index 52f4ef07cc..4f9565f0fe 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java @@ -165,10 +165,6 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java index b8fe23abc8..b591dab322 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java @@ -159,10 +159,6 @@ public final class PhysicalSoulAttack extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java index 5dd50a27ed..53d8257d8d 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java @@ -90,22 +90,6 @@ public final class SoulBlow extends AbstractEffect damage *= 1 + (chargedSouls * 0.04); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, true); - - effected.reduceCurrentHp(damage, effector, skill, false, false, true, false); - - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // if (effector.isPlayer()) - // { - // final L2PcInstance activePlayer = effector.getActingPlayer(); - // activePlayer.sendDamageMessage(effected, skill, (int) damage, true, false); - // } + effector.doAttack(damage, effected, skill, false, false, true, false); } } \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/19100-19199.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/19100-19199.xml index 2b9ca343a9..bfcd719bfa 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/19100-19199.xml +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/19100-19199.xml @@ -890,15 +890,7 @@ P icon.skill0030 - - - - 3 - 6 - - BACK - - + diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/19200-19299.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/19200-19299.xml index cc8784623b..0384170dbe 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/19200-19299.xml +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/19200-19299.xml @@ -1584,16 +1584,15 @@ - icon.skill0030 + icon.skill0000 P - 5 - 85 - + 2 5 + PER BACK diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/documentation.txt index de302442c6..7c468ade24 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/documentation.txt +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/documentation.txt @@ -13,7 +13,6 @@ AreaDamage: Topography (Danger Zone) resistance stat. AttackAttribute: Stat that increases specific attack attribute. AttackAttributeAdd: Stat that increases all attack attribute. AttackBehind: Enables all attacks regardless of position to land towards the back. -AttackDamagePosition: Bonus damage depending on player position towards the target. AttackTrait: Stat that manages all attack traits. Backstab: Inflicts physical damage according to the backstab formula. Betray: Causes the target summon to attack its owner. diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/actor/L2Character.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/actor/L2Character.java index b678f99e09..e030558301 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/actor/L2Character.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/actor/L2Character.java @@ -55,7 +55,6 @@ import com.l2jmobius.gameserver.enums.BasicProperty; import com.l2jmobius.gameserver.enums.CategoryType; import com.l2jmobius.gameserver.enums.InstanceType; import com.l2jmobius.gameserver.enums.ItemSkillType; -import com.l2jmobius.gameserver.enums.Position; import com.l2jmobius.gameserver.enums.Race; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.enums.StatusUpdateType; @@ -4397,7 +4396,8 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe if (!reflect && !isDOT) { - damage *= getStat().getPositionTypeValue(Stats.ATTACK_DAMAGE, Position.getPosition(this, target)); + // TODO: Implement AttackDamagePosition effect + // damage *= getStat().getPositionTypeValue(Stats.ATTACK_DAMAGE, Position.getPosition(this, target)); // Counterattacks happen before damage received. if (!target.isDead() && (skill != null)) diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/EffectMasterHandler.java index 0e8d2a7cf5..e1fc3d2594 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/EffectMasterHandler.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/EffectMasterHandler.java @@ -43,7 +43,6 @@ public final class EffectMasterHandler EffectHandler.getInstance().registerHandler("AttackAttribute", AttackAttribute::new); EffectHandler.getInstance().registerHandler("AttackAttributeAdd", AttackAttributeAdd::new); EffectHandler.getInstance().registerHandler("AttackBehind", AttackBehind::new); - EffectHandler.getInstance().registerHandler("AttackDamagePosition", AttackDamagePosition::new); EffectHandler.getInstance().registerHandler("AttackTrait", AttackTrait::new); EffectHandler.getInstance().registerHandler("Backstab", Backstab::new); EffectHandler.getInstance().registerHandler("Betray", Betray::new); diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java deleted file mode 100644 index 8eea732d3a..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/AttackDamagePosition.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.effecthandlers; - -import com.l2jmobius.commons.util.MathUtil; -import com.l2jmobius.gameserver.enums.Position; -import com.l2jmobius.gameserver.model.StatsSet; -import com.l2jmobius.gameserver.model.actor.L2Character; -import com.l2jmobius.gameserver.model.effects.AbstractEffect; -import com.l2jmobius.gameserver.model.skills.BuffInfo; -import com.l2jmobius.gameserver.model.skills.Skill; -import com.l2jmobius.gameserver.model.stats.Stats; - -/** - * @author Nik - */ -public class AttackDamagePosition extends AbstractEffect -{ - protected final double _amount; - protected final Position _position; - - public AttackDamagePosition(StatsSet params) - { - _amount = params.getDouble("amount"); - _position = params.getEnum("position", Position.class); - } - - @Override - public void pump(L2Character effected, Skill skill) - { - effected.getStat().mergePositionTypeValue(Stats.ATTACK_DAMAGE, _position, (_amount / 100) + 1, MathUtil::mul); - } - - @Override - public void onExit(BuffInfo info) - { - info.getEffected().getStat().mergePositionTypeValue(Stats.ATTACK_DAMAGE, _position, (_amount / 100) + 1, MathUtil::div); - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/Backstab.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/Backstab.java index 95e7eb384c..407c15af47 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/Backstab.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/Backstab.java @@ -85,21 +85,6 @@ public final class Backstab extends AbstractEffect damage *= 2; } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, true); - - effected.reduceCurrentHp(damage, effector, skill, false, true, true, false); - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // if (effector.isPlayer()) - // { - // final L2PcInstance activePlayer = effector.getActingPlayer(); - // activePlayer.sendDamageMessage(effected, skill, (int) damage, true, false); - // } + effector.doAttack(damage, effected, skill, false, true, true, false); } } \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java index d4f6eb757c..ffd0364a12 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java @@ -94,7 +94,7 @@ public final class DamOverTime extends AbstractEffect } } - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); return info.getSkill().isToggle(); } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java index e6b5f3074e..ef87a82dfa 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java @@ -74,7 +74,7 @@ public final class DamOverTimePercent extends AbstractEffect } } - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); return info.getSkill().isToggle(); } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java index 79f48439d7..45ccf84198 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Death Link effect implementation. @@ -70,26 +68,6 @@ public final class DeathLink extends AbstractEffect final boolean mcrit = Formulas.calcCrit(skill.getMagicCriticalRate(), effector, effected, skill); final double damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power * (-((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2), effected.getMDef(), sps, bss, mcrit); - - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java index d5278cebda..f8ab8aa773 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java @@ -162,10 +162,6 @@ public final class EnergyAttack extends AbstractEffect damage = Math.max(0, damage); - // Check if damage should be reflected - Formulas.calcCounterAttack(attacker, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // attacker.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java index 7a20bcfb31..08c1164d08 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java @@ -117,18 +117,6 @@ public final class FatalBlow extends AbstractEffect damage *= 2; } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, true); - - effected.reduceCurrentHp(damage, effector, skill, false, false, true, false); - - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // effector.sendDamageMessage(effected, skill, (int) damage, true, false); + effector.doAttack(damage, effected, skill, false, false, true, false); } } \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java index 2cfc9a4f7e..c2c36a280b 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java @@ -87,16 +87,6 @@ public final class HpDrain extends AbstractEffect final double hpFinal = ((effector.getCurrentHp() + hpAdd) > effector.getMaxHp() ? effector.getMaxHp() : (effector.getCurrentHp() + hpAdd)); effector.setCurrentHp(hpFinal); - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java index bce364cf33..1ad15ccdde 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/HpToOwner.java @@ -69,7 +69,7 @@ public final class HpToOwner extends AbstractEffect final double damage = _power * getTicksMultiplier(); - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); if (_stealAmount > 0) { final double amount = (damage * _stealAmount) / 100; diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java index cdf8d20089..63d4ed873c 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAbnormalDispelAttack.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -26,7 +25,6 @@ import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.AbnormalType; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Abnormal-depending dispel Attack effect implementation. @@ -74,25 +72,6 @@ public final class MagicalAbnormalDispelAttack extends AbstractEffect final boolean mcrit = Formulas.calcCrit(skill.getMagicCriticalRate(), effector, effected, skill); final double damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power, effected.getMDef(), sps, bss, mcrit); - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java index 49f75486e4..eaaf892c7f 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Attackable; @@ -26,7 +25,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack effect implementation. @@ -86,34 +84,6 @@ public final class MagicalAttack extends AbstractEffect damage *= _debuffModifier; } - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java index 3747a88da4..fb70e9391e 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack By Abnormal effect implementation. @@ -73,34 +71,6 @@ public final class MagicalAttackByAbnormal extends AbstractEffect // each buff increase +30% damage *= (((effected.getBuffCount() * 0.3) + 1.3) / 4); - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java index 0c64d9cc3c..0f2a1f683c 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormalSlot.java @@ -20,7 +20,6 @@ import java.util.Collections; import java.util.HashSet; import java.util.Set; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -30,7 +29,6 @@ import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.AbnormalType; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack By Abnormal Slot effect implementation. @@ -90,34 +88,6 @@ public final class MagicalAttackByAbnormalSlot extends AbstractEffect final boolean mcrit = Formulas.calcCrit(skill.getMagicCriticalRate(), effector, effected, skill); final double damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power, effected.getMDef(), sps, bss, mcrit); - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java index 28448c925a..6845814d03 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackRange.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; /** * Magical Attack effect implementation. @@ -88,34 +86,6 @@ public final class MagicalAttackRange extends AbstractEffect damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power, mDef, sps, bss, mcrit); } - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - - // Absorb HP from the damage inflicted - double absorbPercent = effector.getStat().getValue(Stats.ABSORB_DAMAGE_PERCENT, 0) * effector.getStat().getValue(Stats.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbPercent > 0) && (Rnd.nextDouble() < effector.getStat().getValue(Stats.ABSORB_DAMAGE_CHANCE))) - { - int absorbDamage = (int) Math.min(absorbPercent * damage, effector.getMaxRecoverableHp() - effector.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) effected.getCurrentHp()); - if (absorbDamage > 0) - { - effector.setCurrentHp(effector.getCurrentHp() + absorbDamage); - } - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java index 9135ac18af..0f41184d19 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalDamOverTime.java @@ -80,7 +80,7 @@ public final class MagicalDamOverTime extends AbstractEffect } } - info.getEffected().reduceCurrentHp(damage, info.getEffector(), info.getSkill(), true, false, false, false); + info.getEffector().doAttack(damage, info.getEffected(), info.getSkill(), true, false, false, false); return info.getSkill().isToggle(); } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java index a6c13d909f..82c1e643bd 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java @@ -16,7 +16,6 @@ */ package handlers.effecthandlers; -import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.model.StatsSet; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -25,7 +24,6 @@ import com.l2jmobius.gameserver.model.effects.L2EffectType; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.stats.Formulas; -import com.l2jmobius.gameserver.model.stats.Stats; import com.l2jmobius.gameserver.network.SystemMessageId; import com.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -82,25 +80,6 @@ public final class MagicalSoulAttack extends AbstractEffect final double mAtk = effector.getMAtk() * (chargedSouls > 0 ? (1.3 + (chargedSouls * 0.05)) : 1); final double damage = Formulas.calcMagicDam(effector, effected, skill, mAtk, _power, effected.getMDef(), sps, bss, mcrit); - if (damage > 0) - { - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // Shield Deflect Magic: Reflect all damage on caster. - if (effected.getStat().getValue(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0) > Rnd.get(100)) - { - effector.reduceCurrentHp(damage, effected, skill, false, false, mcrit, true); - } - else - { - effected.reduceCurrentHp(damage, effector, skill, false, false, mcrit, false); - // effector.sendDamageMessage(effected, skill, (int) damage, mcrit, false); - } - } + effector.doAttack(damage, effected, skill, false, false, mcrit, false); } } \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java index 43eb65d382..ee26388cd5 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java @@ -172,10 +172,6 @@ public final class PhysicalAttack extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java index a92be012e1..5058c0934e 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java @@ -134,10 +134,6 @@ public final class PhysicalAttackHpLink extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected. - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java index 3e3dc2ed94..a2c1c39d1a 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java @@ -144,9 +144,6 @@ public final class PhysicalAttackSaveHp extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - final double minHp = (effected.getMaxHp() * _saveHp) / 100; if ((effected.getCurrentHp() - damage) < minHp) @@ -154,7 +151,6 @@ public final class PhysicalAttackSaveHp extends AbstractEffect damage = effected.getCurrentHp() - minHp; } - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java index 52f4ef07cc..4f9565f0fe 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java @@ -165,10 +165,6 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java index b8fe23abc8..b591dab322 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java @@ -159,10 +159,6 @@ public final class PhysicalSoulAttack extends AbstractEffect damage = effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, damage); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, critical); - - effected.reduceCurrentHp(damage, effector, skill, false, false, critical, false); - // effector.sendDamageMessage(effected, skill, (int) damage, critical, false); + effector.doAttack(damage, effected, skill, false, false, critical, false); } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java index 5dd50a27ed..53d8257d8d 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java @@ -90,22 +90,6 @@ public final class SoulBlow extends AbstractEffect damage *= 1 + (chargedSouls * 0.04); } - // Check if damage should be reflected - Formulas.calcCounterAttack(effector, effected, skill, true); - - effected.reduceCurrentHp(damage, effector, skill, false, false, true, false); - - // Manage attack or cast break of the target (calculating rate, sending message...) - if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage)) - { - effected.breakAttack(); - effected.breakCast(); - } - - // if (effector.isPlayer()) - // { - // final L2PcInstance activePlayer = effector.getActingPlayer(); - // activePlayer.sendDamageMessage(effected, skill, (int) damage, true, false); - // } + effector.doAttack(damage, effected, skill, false, false, true, false); } } \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/skills/documentation.txt index 21450d8575..c48ec30be0 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/skills/documentation.txt +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/skills/documentation.txt @@ -12,7 +12,6 @@ AreaDamage: Topography (Danger Zone) resistance stat. AttackAttribute: Stat that increases specific attack attribute. AttackAttributeAdd: Stat that increases all attack attribute. AttackBehind: Enables all attacks regardless of position to land towards the back. -AttackDamagePosition: Bonus damage depending on player position towards the target. AttackTrait: Stat that manages all attack traits. Backstab: Inflicts physical damage according to the backstab formula. Betray: Causes the target summon to attack its owner. diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/actor/L2Character.java b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/actor/L2Character.java index b678f99e09..e030558301 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/actor/L2Character.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/actor/L2Character.java @@ -55,7 +55,6 @@ import com.l2jmobius.gameserver.enums.BasicProperty; import com.l2jmobius.gameserver.enums.CategoryType; import com.l2jmobius.gameserver.enums.InstanceType; import com.l2jmobius.gameserver.enums.ItemSkillType; -import com.l2jmobius.gameserver.enums.Position; import com.l2jmobius.gameserver.enums.Race; import com.l2jmobius.gameserver.enums.ShotType; import com.l2jmobius.gameserver.enums.StatusUpdateType; @@ -4397,7 +4396,8 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe if (!reflect && !isDOT) { - damage *= getStat().getPositionTypeValue(Stats.ATTACK_DAMAGE, Position.getPosition(this, target)); + // TODO: Implement AttackDamagePosition effect + // damage *= getStat().getPositionTypeValue(Stats.ATTACK_DAMAGE, Position.getPosition(this, target)); // Counterattacks happen before damage received. if (!target.isDead() && (skill != null))