Additional weakness calculations.
This commit is contained in:
@@ -23,6 +23,7 @@ import java.util.Map.Entry;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.stats.TraitType;
|
||||
|
||||
@@ -49,11 +50,20 @@ public final class AttackTrait extends AbstractEffect
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pump(Creature effected, Skill skill)
|
||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||
{
|
||||
for (Entry<TraitType, Float> trait : _attackTraits.entrySet())
|
||||
{
|
||||
effected.getStat().mergeAttackTrait(trait.getKey(), trait.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||
{
|
||||
for (Entry<TraitType, Float> trait : _attackTraits.entrySet())
|
||||
{
|
||||
effected.getStat().removeAttackTrait(trait.getKey(), trait.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -23,6 +23,7 @@ import java.util.Map.Entry;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.stats.TraitType;
|
||||
|
||||
@@ -49,7 +50,7 @@ public final class DefenceTrait extends AbstractEffect
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pump(Creature effected, Skill skill)
|
||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||
{
|
||||
for (Entry<TraitType, Float> trait : _defenceTraits.entrySet())
|
||||
{
|
||||
@@ -63,4 +64,20 @@ public final class DefenceTrait extends AbstractEffect
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||
{
|
||||
for (Entry<TraitType, Float> trait : _defenceTraits.entrySet())
|
||||
{
|
||||
if (trait.getValue() < 2.0f)
|
||||
{
|
||||
effected.getStat().removeDefenceTrait(trait.getKey(), trait.getValue());
|
||||
}
|
||||
else
|
||||
{
|
||||
effected.getStat().removeInvulnerableTrait(trait.getKey());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -125,6 +125,7 @@ public final class EnergyAttack extends AbstractEffect
|
||||
// Trait, elements
|
||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
||||
final double weaknessMod = Formulas.calcWeaknessBonus(attacker, effected, skill.getTraitType());
|
||||
final double attributeMod = Formulas.calcAttributeBonus(attacker, effected, skill);
|
||||
final double pvpPveMod = Formulas.calculatePvpPveBonus(attacker, effected, skill, true);
|
||||
|
||||
@@ -148,7 +149,7 @@ public final class EnergyAttack extends AbstractEffect
|
||||
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power + effector.getStat().getValue(Stats.SKILL_POWER_ADD, 0))) / defence;
|
||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||
}
|
||||
|
||||
damage = Math.max(0, damage * effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 1));
|
||||
|
@@ -141,6 +141,7 @@ public final class PhysicalAttack extends AbstractEffect
|
||||
// Trait, elements
|
||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||
final double weaknessMod = Formulas.calcWeaknessBonus(effector, effected, skill.getTraitType());
|
||||
final double attributeMod = Formulas.calcAttributeBonus(effector, effected, skill);
|
||||
final double pvpPveMod = Formulas.calculatePvpPveBonus(effector, effected, skill, true);
|
||||
final double randomMod = effector.getRandomDamageMultiplier();
|
||||
@@ -168,7 +169,7 @@ public final class PhysicalAttack extends AbstractEffect
|
||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
final double baseMod = (weaponMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence;
|
||||
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * pvpPveMod * randomMod;
|
||||
damage *= effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 1);
|
||||
}
|
||||
|
||||
|
@@ -101,6 +101,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
||||
// Trait, elements
|
||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||
final double weaknessMod = Formulas.calcWeaknessBonus(effector, effected, skill.getTraitType());
|
||||
final double attributeMod = Formulas.calcAttributeBonus(effector, effected, skill);
|
||||
final double pvpPveMod = Formulas.calculatePvpPveBonus(effector, effected, skill, true);
|
||||
final double randomMod = effector.getRandomDamageMultiplier();
|
||||
@@ -127,7 +128,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
final double baseMod = (weaponMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence;
|
||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * pvpPveMod * randomMod;
|
||||
damage *= effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 1);
|
||||
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
||||
}
|
||||
|
@@ -114,6 +114,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
||||
// Trait, elements
|
||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||
final double weaknessMod = Formulas.calcWeaknessBonus(effector, effected, skill.getTraitType());
|
||||
final double attributeMod = Formulas.calcAttributeBonus(effector, effected, skill);
|
||||
final double pvpPveMod = Formulas.calculatePvpPveBonus(effector, effected, skill, true);
|
||||
final double randomMod = effector.getRandomDamageMultiplier();
|
||||
@@ -140,7 +141,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
final double baseMod = (weaponMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence;
|
||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * pvpPveMod * randomMod;
|
||||
damage *= effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 1);
|
||||
}
|
||||
|
||||
|
@@ -134,6 +134,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
||||
// Trait, elements
|
||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||
final double weaknessMod = Formulas.calcWeaknessBonus(effector, effected, skill.getTraitType());
|
||||
final double attributeMod = Formulas.calcAttributeBonus(effector, effected, skill);
|
||||
final double pvpPveMod = Formulas.calculatePvpPveBonus(effector, effected, skill, true);
|
||||
final double randomMod = effector.getRandomDamageMultiplier();
|
||||
@@ -161,7 +162,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
final double baseMod = (weaponMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence;
|
||||
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * pvpPveMod * randomMod;
|
||||
damage *= effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 1);
|
||||
}
|
||||
|
||||
|
@@ -128,6 +128,7 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
||||
// Trait, elements
|
||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||
final double weaknessMod = Formulas.calcWeaknessBonus(effector, effected, skill.getTraitType());
|
||||
final double attributeMod = Formulas.calcAttributeBonus(effector, effected, skill);
|
||||
final double pvpPveMod = Formulas.calculatePvpPveBonus(effector, effected, skill, true);
|
||||
final double randomMod = effector.getRandomDamageMultiplier();
|
||||
@@ -155,7 +156,7 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
final double baseMod = (weaponMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence;
|
||||
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * pvpPveMod * randomMod;
|
||||
damage *= effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 1);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user