Fixed reflecting elemental damage.

Author: JoeAlisson
Source: https://github.com/JoeAlisson/L2jOrg/commit/452465723b19417302bd7677a007320081815814
This commit is contained in:
MobiusDevelopment
2020-04-27 11:26:47 +00:00
parent 8fd9611c92
commit b639c7a98c
6 changed files with 24 additions and 15 deletions
@@ -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; value *= (100 + Math.max(_stat.getValue(Stat.PVE_DAMAGE_TAKEN_MONSTER), -80)) / 100;
} }
elementalDamage = Formulas.calcSpiritElementalDamage(attacker, this, value); if (!reflect)
value += elementalDamage; {
elementalDamage = Formulas.calcSpiritElementalDamage(attacker, this, value);
value += elementalDamage;
}
} }
final double damageCap = _stat.getValue(Stat.DAMAGE_LIMIT); final double damageCap = _stat.getValue(Stat.DAMAGE_LIMIT);
@@ -1684,12 +1684,12 @@ public class Formulas
private static double calcSpiritElementalPvPDamage(double attack, double critDamage, boolean isCrit, double baseDamage) 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) 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) private static double calcSpiritElementalPvEDamage(ElementalType attackerType, ElementalType targetType, double attack, double critDamage, boolean isCrit, double baseDamage)
@@ -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; value *= (100 + Math.max(_stat.getValue(Stat.PVE_DAMAGE_TAKEN_MONSTER), -80)) / 100;
} }
elementalDamage = Formulas.calcSpiritElementalDamage(attacker, this, value); if (!reflect)
value += elementalDamage; {
elementalDamage = Formulas.calcSpiritElementalDamage(attacker, this, value);
value += elementalDamage;
}
} }
final double damageCap = _stat.getValue(Stat.DAMAGE_LIMIT); final double damageCap = _stat.getValue(Stat.DAMAGE_LIMIT);
@@ -1684,12 +1684,12 @@ public class Formulas
private static double calcSpiritElementalPvPDamage(double attack, double critDamage, boolean isCrit, double baseDamage) 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) 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) private static double calcSpiritElementalPvEDamage(ElementalType attackerType, ElementalType targetType, double attack, double critDamage, boolean isCrit, double baseDamage)
@@ -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; value *= (100 + Math.max(_stat.getValue(Stat.PVE_DAMAGE_TAKEN_MONSTER), -80)) / 100;
} }
elementalDamage = Formulas.calcSpiritElementalDamage(attacker, this, value); if (!reflect)
value += elementalDamage; {
elementalDamage = Formulas.calcSpiritElementalDamage(attacker, this, value);
value += elementalDamage;
}
} }
final double damageCap = _stat.getValue(Stat.DAMAGE_LIMIT); final double damageCap = _stat.getValue(Stat.DAMAGE_LIMIT);
@@ -1684,12 +1684,12 @@ public class Formulas
private static double calcSpiritElementalPvPDamage(double attack, double critDamage, boolean isCrit, double baseDamage) 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) 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) private static double calcSpiritElementalPvEDamage(ElementalType attackerType, ElementalType targetType, double attack, double critDamage, boolean isCrit, double baseDamage)