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))