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 1d6feeac78..d80092098a 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 @@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true); @@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect // ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________ // ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod()); + final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod; damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 fdae40e1b1..f8b56d78a3 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 @@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 8cf23e34ce..a19d80f517 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 @@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2; 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 cb46f5e38d..b82b68a6d1 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 @@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 2eed005de7..8bd126726c 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 @@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 37b591b8b7..b90fab3d55 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 @@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/stats/Formulas.java index d25cd5a944..2dbd2dd56e 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -92,6 +92,8 @@ public final class Formulas return 1; } } + // TODO: Find proper defence formula. + defence = target.getLevel() > 99 ? defence / 10 : defence; // Critical final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1)); @@ -114,16 +116,16 @@ public final class Formulas final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; // Mobius: Manage level difference. - if (attacker.getLevel() < target.getLevel()) - { - power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); - } + // if (attacker.getLevel() < target.getLevel()) + // { + // power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); + // } // ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_ // ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef // ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^ - final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence); - final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; + final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence); + final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; return damage; } @@ -141,7 +143,9 @@ public final class Formulas final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit); // MDAM Formula. - double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus; + // TODO: Find proper mDefence formula. + mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef; + double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus; // Failure calculation if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill)) 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 1d6feeac78..d80092098a 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 @@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true); @@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect // ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________ // ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod()); + final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod; damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 fdae40e1b1..f8b56d78a3 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 @@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 8cf23e34ce..a19d80f517 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 @@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2; 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 cb46f5e38d..b82b68a6d1 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 @@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 2eed005de7..8bd126726c 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 @@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 37b591b8b7..b90fab3d55 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 @@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/stats/Formulas.java index d25cd5a944..2dbd2dd56e 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -92,6 +92,8 @@ public final class Formulas return 1; } } + // TODO: Find proper defence formula. + defence = target.getLevel() > 99 ? defence / 10 : defence; // Critical final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1)); @@ -114,16 +116,16 @@ public final class Formulas final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; // Mobius: Manage level difference. - if (attacker.getLevel() < target.getLevel()) - { - power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); - } + // if (attacker.getLevel() < target.getLevel()) + // { + // power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); + // } // ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_ // ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef // ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^ - final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence); - final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; + final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence); + final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; return damage; } @@ -141,7 +143,9 @@ public final class Formulas final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit); // MDAM Formula. - double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus; + // TODO: Find proper mDefence formula. + mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef; + double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus; // Failure calculation if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill)) 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 1d6feeac78..d80092098a 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 @@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true); @@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect // ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________ // ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod()); + final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod; damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 fdae40e1b1..f8b56d78a3 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 @@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 8cf23e34ce..a19d80f517 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 @@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2; 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 cb46f5e38d..b82b68a6d1 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 @@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 2eed005de7..8bd126726c 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 @@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 37b591b8b7..b90fab3d55 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 @@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/stats/Formulas.java index d25cd5a944..2dbd2dd56e 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -92,6 +92,8 @@ public final class Formulas return 1; } } + // TODO: Find proper defence formula. + defence = target.getLevel() > 99 ? defence / 10 : defence; // Critical final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1)); @@ -114,16 +116,16 @@ public final class Formulas final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; // Mobius: Manage level difference. - if (attacker.getLevel() < target.getLevel()) - { - power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); - } + // if (attacker.getLevel() < target.getLevel()) + // { + // power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); + // } // ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_ // ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef // ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^ - final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence); - final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; + final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence); + final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; return damage; } @@ -141,7 +143,9 @@ public final class Formulas final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit); // MDAM Formula. - double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus; + // TODO: Find proper mDefence formula. + mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef; + double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus; // Failure calculation if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill)) 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 1d6feeac78..d80092098a 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 @@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true); @@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect // ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________ // ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod()); + final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod; damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 fdae40e1b1..f8b56d78a3 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 @@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 8cf23e34ce..a19d80f517 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 @@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2; 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 cb46f5e38d..b82b68a6d1 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 @@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 2eed005de7..8bd126726c 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 @@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 37b591b8b7..b90fab3d55 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 @@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/stats/Formulas.java index ff7c943336..b298678c08 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -92,6 +92,8 @@ public final class Formulas return 1; } } + // TODO: Find proper defence formula. + defence = target.getLevel() > 99 ? defence / 10 : defence; // Critical final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1)); @@ -114,16 +116,16 @@ public final class Formulas final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; // Mobius: Manage level difference. - if (attacker.getLevel() < target.getLevel()) - { - power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); - } + // if (attacker.getLevel() < target.getLevel()) + // { + // power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); + // } // ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_ // ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef // ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^ - final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence); - final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; + final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence); + final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; return damage; } @@ -141,7 +143,9 @@ public final class Formulas final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit); // MDAM Formula. - double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus; + // TODO: Find proper mDefence formula. + mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef; + double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus; // Failure calculation if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill)) diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java index 1d6feeac78..d80092098a 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java @@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true); @@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect // ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________ // ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod()); + final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod; damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java index fdae40e1b1..f8b56d78a3 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java @@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java index 8cf23e34ce..a19d80f517 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java @@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2; diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java index cb46f5e38d..b82b68a6d1 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java @@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java index 2eed005de7..8bd126726c 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java @@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java index 37b591b8b7..b90fab3d55 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java @@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/stats/Formulas.java index ff7c943336..b298678c08 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -92,6 +92,8 @@ public final class Formulas return 1; } } + // TODO: Find proper defence formula. + defence = target.getLevel() > 99 ? defence / 10 : defence; // Critical final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1)); @@ -114,16 +116,16 @@ public final class Formulas final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; // Mobius: Manage level difference. - if (attacker.getLevel() < target.getLevel()) - { - power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); - } + // if (attacker.getLevel() < target.getLevel()) + // { + // power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); + // } // ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_ // ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef // ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^ - final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence); - final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; + final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence); + final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; return damage; } @@ -141,7 +143,9 @@ public final class Formulas final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit); // MDAM Formula. - double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus; + // TODO: Find proper mDefence formula. + mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef; + double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus; // Failure calculation if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill)) diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java index 1d6feeac78..d80092098a 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java @@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true); @@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect // ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________ // ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod()); + final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod; damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java index fdae40e1b1..f8b56d78a3 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java @@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java index 8cf23e34ce..a19d80f517 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java @@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2; diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java index cb46f5e38d..b82b68a6d1 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java @@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java index 2eed005de7..8bd126726c 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java @@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java index 37b591b8b7..b90fab3d55 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java @@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/stats/Formulas.java index ff7c943336..b298678c08 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -92,6 +92,8 @@ public final class Formulas return 1; } } + // TODO: Find proper defence formula. + defence = target.getLevel() > 99 ? defence / 10 : defence; // Critical final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1)); @@ -114,16 +116,16 @@ public final class Formulas final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; // Mobius: Manage level difference. - if (attacker.getLevel() < target.getLevel()) - { - power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); - } + // if (attacker.getLevel() < target.getLevel()) + // { + // power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); + // } // ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_ // ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef // ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^ - final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence); - final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; + final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence); + final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; return damage; } @@ -141,7 +143,9 @@ public final class Formulas final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit); // MDAM Formula. - double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus; + // TODO: Find proper mDefence formula. + mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef; + double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus; // Failure calculation if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill)) diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java index 1d6feeac78..d80092098a 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java @@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true); @@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect // ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________ // ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod()); + final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod; damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java index fdae40e1b1..f8b56d78a3 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java @@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java index 8cf23e34ce..a19d80f517 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java @@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2; diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java index cb46f5e38d..b82b68a6d1 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java @@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java index 2eed005de7..8bd126726c 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java @@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java index 37b591b8b7..b90fab3d55 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java @@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/stats/Formulas.java index ff7c943336..b298678c08 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -92,6 +92,8 @@ public final class Formulas return 1; } } + // TODO: Find proper defence formula. + defence = target.getLevel() > 99 ? defence / 10 : defence; // Critical final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1)); @@ -114,16 +116,16 @@ public final class Formulas final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; // Mobius: Manage level difference. - if (attacker.getLevel() < target.getLevel()) - { - power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); - } + // if (attacker.getLevel() < target.getLevel()) + // { + // power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); + // } // ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_ // ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef // ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^ - final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence); - final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; + final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence); + final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; return damage; } @@ -141,7 +143,9 @@ public final class Formulas final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit); // MDAM Formula. - double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus; + // TODO: Find proper mDefence formula. + mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef; + double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus; // Failure calculation if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill)) 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 1d6feeac78..d80092098a 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 @@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true); @@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect // ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________ // ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod()); + final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod; damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 fdae40e1b1..f8b56d78a3 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 @@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 8cf23e34ce..a19d80f517 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 @@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2; 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 cb46f5e38d..b82b68a6d1 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 @@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 2eed005de7..8bd126726c 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 @@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 37b591b8b7..b90fab3d55 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 @@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/stats/Formulas.java index 3d0133fb93..29b27c9c0b 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -92,6 +92,8 @@ public final class Formulas return 1; } } + // TODO: Find proper defence formula. + defence = target.getLevel() > 99 ? defence / 10 : defence; // Critical final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1)); @@ -114,16 +116,16 @@ public final class Formulas final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; // Mobius: Manage level difference. - if (attacker.getLevel() < target.getLevel()) - { - power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); - } + // if (attacker.getLevel() < target.getLevel()) + // { + // power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); + // } // ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_ // ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef // ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^ - final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence); - final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; + final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence); + final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; return damage; } @@ -141,7 +143,9 @@ public final class Formulas final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit); // MDAM Formula. - double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus; + // TODO: Find proper mDefence formula. + mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef; + double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus; // Failure calculation if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill)) diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java index 1d6feeac78..d80092098a 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java @@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true); @@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect // ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________ // ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod()); + final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod; damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java index fdae40e1b1..f8b56d78a3 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java @@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java index 8cf23e34ce..a19d80f517 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java @@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2; diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java index cb46f5e38d..b82b68a6d1 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java @@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java index 2eed005de7..8bd126726c 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java @@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java index 37b591b8b7..b90fab3d55 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java @@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/stats/Formulas.java index 3d0133fb93..29b27c9c0b 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -92,6 +92,8 @@ public final class Formulas return 1; } } + // TODO: Find proper defence formula. + defence = target.getLevel() > 99 ? defence / 10 : defence; // Critical final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1)); @@ -114,16 +116,16 @@ public final class Formulas final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; // Mobius: Manage level difference. - if (attacker.getLevel() < target.getLevel()) - { - power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); - } + // if (attacker.getLevel() < target.getLevel()) + // { + // power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); + // } // ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_ // ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef // ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^ - final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence); - final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; + final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence); + final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; return damage; } @@ -141,7 +143,9 @@ public final class Formulas final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit); // MDAM Formula. - double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus; + // TODO: Find proper mDefence formula. + mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef; + double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus; // Failure calculation if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill)) diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java index 1d6feeac78..d80092098a 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java @@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true); @@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect // ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________ // ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod()); + final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod; damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java index fdae40e1b1..f8b56d78a3 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java @@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java index 8cf23e34ce..a19d80f517 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java @@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2; diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java index cb46f5e38d..b82b68a6d1 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java @@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java index 2eed005de7..8bd126726c 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java @@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java index 37b591b8b7..b90fab3d55 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java @@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/stats/Formulas.java index 3d0133fb93..29b27c9c0b 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -92,6 +92,8 @@ public final class Formulas return 1; } } + // TODO: Find proper defence formula. + defence = target.getLevel() > 99 ? defence / 10 : defence; // Critical final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1)); @@ -114,16 +116,16 @@ public final class Formulas final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; // Mobius: Manage level difference. - if (attacker.getLevel() < target.getLevel()) - { - power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); - } + // if (attacker.getLevel() < target.getLevel()) + // { + // power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); + // } // ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_ // ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef // ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^ - final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence); - final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; + final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence); + final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; return damage; } @@ -141,7 +143,9 @@ public final class Formulas final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit); // MDAM Formula. - double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus; + // TODO: Find proper mDefence formula. + mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef; + double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus; // Failure calculation if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill)) diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java index 1d6feeac78..d80092098a 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java @@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true); @@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect // ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________ // ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod()); + final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod; damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java index fdae40e1b1..f8b56d78a3 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java @@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java index 8cf23e34ce..a19d80f517 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java @@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2; diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java index cb46f5e38d..b82b68a6d1 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackSaveHp.java @@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java index 2eed005de7..8bd126726c 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackWeaponBonus.java @@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java index 37b591b8b7..b90fab3d55 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java @@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect if (defence != -1) { + // TODO: Find proper defence formula. + defence = effected.getLevel() > 99 ? defence / 10 : defence; + // Trait, elements final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected); final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true); @@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect // ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________ // ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef            RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef // ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod()); + final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence; damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod; damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0); } 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 3d0133fb93..29b27c9c0b 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 @@ -92,6 +92,8 @@ public final class Formulas return 1; } } + // TODO: Find proper defence formula. + defence = target.getLevel() > 99 ? defence / 10 : defence; // Critical final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1)); @@ -114,16 +116,16 @@ public final class Formulas final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; // Mobius: Manage level difference. - if (attacker.getLevel() < target.getLevel()) - { - power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); - } + // if (attacker.getLevel() < target.getLevel()) + // { + // power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10); + // } // ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_ // ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef // ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^ - final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence); - final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; + final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence); + final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod; return damage; } @@ -141,7 +143,9 @@ public final class Formulas final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit); // MDAM Formula. - double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus; + // TODO: Find proper mDefence formula. + mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef; + double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus; // Failure calculation if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))