From b639c7a98ce09ab07a5332f1bde224a057f65fb4 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Mon, 27 Apr 2020 11:26:47 +0000 Subject: [PATCH] Fixed reflecting elemental damage. Author: JoeAlisson Source: https://github.com/JoeAlisson/L2jOrg/commit/452465723b19417302bd7677a007320081815814 --- .../org/l2jmobius/gameserver/model/actor/Creature.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 6 +++--- .../org/l2jmobius/gameserver/model/actor/Creature.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 6 +++--- .../org/l2jmobius/gameserver/model/actor/Creature.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 6 +++--- 6 files changed, 24 insertions(+), 15 deletions(-) diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java index 2ce602f8f5..5d8a1dcf92 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4541,8 +4541,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe value *= (100 + Math.max(_stat.getValue(Stat.PVE_DAMAGE_TAKEN_MONSTER), -80)) / 100; } - elementalDamage = Formulas.calcSpiritElementalDamage(attacker, this, value); - value += elementalDamage; + if (!reflect) + { + elementalDamage = Formulas.calcSpiritElementalDamage(attacker, this, value); + value += elementalDamage; + } } final double damageCap = _stat.getValue(Stat.DAMAGE_LIMIT); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/stats/Formulas.java index 683d746592..4e8b960f1f 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -1684,12 +1684,12 @@ public class Formulas private static double calcSpiritElementalPvPDamage(double attack, double critDamage, boolean isCrit, double baseDamage) { - double base = Math.abs(attack * 1.3); + double damage = Math.min(Math.max(0, ((attack * 1.3) + (baseDamage * 0.03 * attack)) / Math.log(Math.max(attack, 5))), 2295); if (isCrit) { - base += Math.abs((attack * 1.223) + (((attack * 0.03) + 24) * critDamage) + Rnd.get(-5, 15)); + damage *= 1 + ((Rnd.get(13, 20) + critDamage) / 100); } - return ((base * attack) + (baseDamage * 0.3)) / Math.log(Math.max(baseDamage, 20)); + return damage; } private static double calcSpiritElementalPvEDamage(ElementalType attackerType, ElementalType targetType, double attack, double critDamage, boolean isCrit, double baseDamage) diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java index 2ce602f8f5..5d8a1dcf92 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4541,8 +4541,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe value *= (100 + Math.max(_stat.getValue(Stat.PVE_DAMAGE_TAKEN_MONSTER), -80)) / 100; } - elementalDamage = Formulas.calcSpiritElementalDamage(attacker, this, value); - value += elementalDamage; + if (!reflect) + { + elementalDamage = Formulas.calcSpiritElementalDamage(attacker, this, value); + value += elementalDamage; + } } final double damageCap = _stat.getValue(Stat.DAMAGE_LIMIT); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/stats/Formulas.java index 683d746592..4e8b960f1f 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -1684,12 +1684,12 @@ public class Formulas private static double calcSpiritElementalPvPDamage(double attack, double critDamage, boolean isCrit, double baseDamage) { - double base = Math.abs(attack * 1.3); + double damage = Math.min(Math.max(0, ((attack * 1.3) + (baseDamage * 0.03 * attack)) / Math.log(Math.max(attack, 5))), 2295); if (isCrit) { - base += Math.abs((attack * 1.223) + (((attack * 0.03) + 24) * critDamage) + Rnd.get(-5, 15)); + damage *= 1 + ((Rnd.get(13, 20) + critDamage) / 100); } - return ((base * attack) + (baseDamage * 0.3)) / Math.log(Math.max(baseDamage, 20)); + return damage; } private static double calcSpiritElementalPvEDamage(ElementalType attackerType, ElementalType targetType, double attack, double critDamage, boolean isCrit, double baseDamage) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java index fe9e577c47..fb6f0cedee 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4540,8 +4540,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe value *= (100 + Math.max(_stat.getValue(Stat.PVE_DAMAGE_TAKEN_MONSTER), -80)) / 100; } - elementalDamage = Formulas.calcSpiritElementalDamage(attacker, this, value); - value += elementalDamage; + if (!reflect) + { + elementalDamage = Formulas.calcSpiritElementalDamage(attacker, this, value); + value += elementalDamage; + } } final double damageCap = _stat.getValue(Stat.DAMAGE_LIMIT); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/stats/Formulas.java index 683d746592..4e8b960f1f 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -1684,12 +1684,12 @@ public class Formulas private static double calcSpiritElementalPvPDamage(double attack, double critDamage, boolean isCrit, double baseDamage) { - double base = Math.abs(attack * 1.3); + double damage = Math.min(Math.max(0, ((attack * 1.3) + (baseDamage * 0.03 * attack)) / Math.log(Math.max(attack, 5))), 2295); if (isCrit) { - base += Math.abs((attack * 1.223) + (((attack * 0.03) + 24) * critDamage) + Rnd.get(-5, 15)); + damage *= 1 + ((Rnd.get(13, 20) + critDamage) / 100); } - return ((base * attack) + (baseDamage * 0.3)) / Math.log(Math.max(baseDamage, 20)); + return damage; } private static double calcSpiritElementalPvEDamage(ElementalType attackerType, ElementalType targetType, double attack, double critDamage, boolean isCrit, double baseDamage)