From e50d4480849d7574342cddfcd06cf07efba8a060 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sat, 26 Dec 2020 18:53:43 +0000 Subject: [PATCH] Calculate blow damage formula adjustments. --- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 7 +++++-- .../org/l2jmobius/gameserver/model/stats/Formulas.java | 7 +++++-- 17 files changed, 85 insertions(+), 34 deletions(-) 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 4ba05aa2a2..54ff0ded1f 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 @@ -100,6 +100,7 @@ public class Formulas final double criticalVulnMod = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE, 1); final double criticalAddMod = attacker.getStat().getValue(Stat.CRITICAL_DAMAGE_ADD, 0); final double criticalAddVuln = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE_ADD, 0); + final double criticalSkillMod = calcCritDamage(attacker, target, skill) / 2; // Trait, elements final double weaponTraitMod = calcWeaponTraitBonus(attacker, target); final double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), true); @@ -111,7 +112,7 @@ public class Formulas // Initial damage final double ssmod = ss ? (2 * attacker.getStat().getValue(Stat.SHOTS_BONUS)) : 1; // 2.04 for dual weapon? final double cdMult = criticalMod * (((criticalPositionMod - 1) / 2) + 1) * (((criticalVulnMod - 1) / 2) + 1); - final double cdPatk = criticalAddMod + criticalAddVuln; + final double cdPatk = (criticalAddMod + criticalAddVuln) * criticalSkillMod; final Position position = Position.getPosition(attacker, target); final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; @@ -131,10 +132,12 @@ public class Formulas defence *= attacker.isPlayable() ? Config.PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()] : Config.PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()]; } + final double skillPower = power + attacker.getStat().getValue(Stat.SKILL_POWER_ADD, 0); + // ........................_____________________________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) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; + final double baseMod = (77 * (((skillPower + attacker.getPAtk()) * 0.666) + (isPosition * (skillPower + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * randomMod * pvpPveMod * balanceMod; return damage; 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 4ba05aa2a2..54ff0ded1f 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 @@ -100,6 +100,7 @@ public class Formulas final double criticalVulnMod = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE, 1); final double criticalAddMod = attacker.getStat().getValue(Stat.CRITICAL_DAMAGE_ADD, 0); final double criticalAddVuln = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE_ADD, 0); + final double criticalSkillMod = calcCritDamage(attacker, target, skill) / 2; // Trait, elements final double weaponTraitMod = calcWeaponTraitBonus(attacker, target); final double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), true); @@ -111,7 +112,7 @@ public class Formulas // Initial damage final double ssmod = ss ? (2 * attacker.getStat().getValue(Stat.SHOTS_BONUS)) : 1; // 2.04 for dual weapon? final double cdMult = criticalMod * (((criticalPositionMod - 1) / 2) + 1) * (((criticalVulnMod - 1) / 2) + 1); - final double cdPatk = criticalAddMod + criticalAddVuln; + final double cdPatk = (criticalAddMod + criticalAddVuln) * criticalSkillMod; final Position position = Position.getPosition(attacker, target); final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; @@ -131,10 +132,12 @@ public class Formulas defence *= attacker.isPlayable() ? Config.PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()] : Config.PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()]; } + final double skillPower = power + attacker.getStat().getValue(Stat.SKILL_POWER_ADD, 0); + // ........................_____________________________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) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; + final double baseMod = (77 * (((skillPower + attacker.getPAtk()) * 0.666) + (isPosition * (skillPower + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * randomMod * pvpPveMod * balanceMod; return damage; 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 4ba05aa2a2..54ff0ded1f 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 @@ -100,6 +100,7 @@ public class Formulas final double criticalVulnMod = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE, 1); final double criticalAddMod = attacker.getStat().getValue(Stat.CRITICAL_DAMAGE_ADD, 0); final double criticalAddVuln = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE_ADD, 0); + final double criticalSkillMod = calcCritDamage(attacker, target, skill) / 2; // Trait, elements final double weaponTraitMod = calcWeaponTraitBonus(attacker, target); final double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), true); @@ -111,7 +112,7 @@ public class Formulas // Initial damage final double ssmod = ss ? (2 * attacker.getStat().getValue(Stat.SHOTS_BONUS)) : 1; // 2.04 for dual weapon? final double cdMult = criticalMod * (((criticalPositionMod - 1) / 2) + 1) * (((criticalVulnMod - 1) / 2) + 1); - final double cdPatk = criticalAddMod + criticalAddVuln; + final double cdPatk = (criticalAddMod + criticalAddVuln) * criticalSkillMod; final Position position = Position.getPosition(attacker, target); final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; @@ -131,10 +132,12 @@ public class Formulas defence *= attacker.isPlayable() ? Config.PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()] : Config.PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()]; } + final double skillPower = power + attacker.getStat().getValue(Stat.SKILL_POWER_ADD, 0); + // ........................_____________________________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) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; + final double baseMod = (77 * (((skillPower + attacker.getPAtk()) * 0.666) + (isPosition * (skillPower + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * randomMod * pvpPveMod * balanceMod; return damage; 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 4ba05aa2a2..54ff0ded1f 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 @@ -100,6 +100,7 @@ public class Formulas final double criticalVulnMod = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE, 1); final double criticalAddMod = attacker.getStat().getValue(Stat.CRITICAL_DAMAGE_ADD, 0); final double criticalAddVuln = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE_ADD, 0); + final double criticalSkillMod = calcCritDamage(attacker, target, skill) / 2; // Trait, elements final double weaponTraitMod = calcWeaponTraitBonus(attacker, target); final double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), true); @@ -111,7 +112,7 @@ public class Formulas // Initial damage final double ssmod = ss ? (2 * attacker.getStat().getValue(Stat.SHOTS_BONUS)) : 1; // 2.04 for dual weapon? final double cdMult = criticalMod * (((criticalPositionMod - 1) / 2) + 1) * (((criticalVulnMod - 1) / 2) + 1); - final double cdPatk = criticalAddMod + criticalAddVuln; + final double cdPatk = (criticalAddMod + criticalAddVuln) * criticalSkillMod; final Position position = Position.getPosition(attacker, target); final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; @@ -131,10 +132,12 @@ public class Formulas defence *= attacker.isPlayable() ? Config.PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()] : Config.PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()]; } + final double skillPower = power + attacker.getStat().getValue(Stat.SKILL_POWER_ADD, 0); + // ........................_____________________________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) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; + final double baseMod = (77 * (((skillPower + attacker.getPAtk()) * 0.666) + (isPosition * (skillPower + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * randomMod * pvpPveMod * balanceMod; return damage; 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 4ba05aa2a2..54ff0ded1f 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 @@ -100,6 +100,7 @@ public class Formulas final double criticalVulnMod = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE, 1); final double criticalAddMod = attacker.getStat().getValue(Stat.CRITICAL_DAMAGE_ADD, 0); final double criticalAddVuln = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE_ADD, 0); + final double criticalSkillMod = calcCritDamage(attacker, target, skill) / 2; // Trait, elements final double weaponTraitMod = calcWeaponTraitBonus(attacker, target); final double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), true); @@ -111,7 +112,7 @@ public class Formulas // Initial damage final double ssmod = ss ? (2 * attacker.getStat().getValue(Stat.SHOTS_BONUS)) : 1; // 2.04 for dual weapon? final double cdMult = criticalMod * (((criticalPositionMod - 1) / 2) + 1) * (((criticalVulnMod - 1) / 2) + 1); - final double cdPatk = criticalAddMod + criticalAddVuln; + final double cdPatk = (criticalAddMod + criticalAddVuln) * criticalSkillMod; final Position position = Position.getPosition(attacker, target); final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; @@ -131,10 +132,12 @@ public class Formulas defence *= attacker.isPlayable() ? Config.PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()] : Config.PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()]; } + final double skillPower = power + attacker.getStat().getValue(Stat.SKILL_POWER_ADD, 0); + // ........................_____________________________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) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; + final double baseMod = (77 * (((skillPower + attacker.getPAtk()) * 0.666) + (isPosition * (skillPower + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * randomMod * pvpPveMod * balanceMod; return damage; 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 4ba05aa2a2..54ff0ded1f 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 @@ -100,6 +100,7 @@ public class Formulas final double criticalVulnMod = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE, 1); final double criticalAddMod = attacker.getStat().getValue(Stat.CRITICAL_DAMAGE_ADD, 0); final double criticalAddVuln = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE_ADD, 0); + final double criticalSkillMod = calcCritDamage(attacker, target, skill) / 2; // Trait, elements final double weaponTraitMod = calcWeaponTraitBonus(attacker, target); final double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), true); @@ -111,7 +112,7 @@ public class Formulas // Initial damage final double ssmod = ss ? (2 * attacker.getStat().getValue(Stat.SHOTS_BONUS)) : 1; // 2.04 for dual weapon? final double cdMult = criticalMod * (((criticalPositionMod - 1) / 2) + 1) * (((criticalVulnMod - 1) / 2) + 1); - final double cdPatk = criticalAddMod + criticalAddVuln; + final double cdPatk = (criticalAddMod + criticalAddVuln) * criticalSkillMod; final Position position = Position.getPosition(attacker, target); final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; @@ -131,10 +132,12 @@ public class Formulas defence *= attacker.isPlayable() ? Config.PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()] : Config.PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()]; } + final double skillPower = power + attacker.getStat().getValue(Stat.SKILL_POWER_ADD, 0); + // ........................_____________________________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) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; + final double baseMod = (77 * (((skillPower + attacker.getPAtk()) * 0.666) + (isPosition * (skillPower + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * randomMod * pvpPveMod * balanceMod; return damage; 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 4ba05aa2a2..54ff0ded1f 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 @@ -100,6 +100,7 @@ public class Formulas final double criticalVulnMod = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE, 1); final double criticalAddMod = attacker.getStat().getValue(Stat.CRITICAL_DAMAGE_ADD, 0); final double criticalAddVuln = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE_ADD, 0); + final double criticalSkillMod = calcCritDamage(attacker, target, skill) / 2; // Trait, elements final double weaponTraitMod = calcWeaponTraitBonus(attacker, target); final double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), true); @@ -111,7 +112,7 @@ public class Formulas // Initial damage final double ssmod = ss ? (2 * attacker.getStat().getValue(Stat.SHOTS_BONUS)) : 1; // 2.04 for dual weapon? final double cdMult = criticalMod * (((criticalPositionMod - 1) / 2) + 1) * (((criticalVulnMod - 1) / 2) + 1); - final double cdPatk = criticalAddMod + criticalAddVuln; + final double cdPatk = (criticalAddMod + criticalAddVuln) * criticalSkillMod; final Position position = Position.getPosition(attacker, target); final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; @@ -131,10 +132,12 @@ public class Formulas defence *= attacker.isPlayable() ? Config.PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()] : Config.PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()]; } + final double skillPower = power + attacker.getStat().getValue(Stat.SKILL_POWER_ADD, 0); + // ........................_____________________________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) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; + final double baseMod = (77 * (((skillPower + attacker.getPAtk()) * 0.666) + (isPosition * (skillPower + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * randomMod * pvpPveMod * balanceMod; return damage; diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/stats/Formulas.java index 42484eb483..025a830d5b 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -100,6 +100,7 @@ public class Formulas final double criticalVulnMod = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE, 1); final double criticalAddMod = attacker.getStat().getValue(Stat.CRITICAL_DAMAGE_ADD, 0); final double criticalAddVuln = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE_ADD, 0); + final double criticalSkillMod = calcCritDamage(attacker, target, skill) / 2; // Trait, elements final double weaponTraitMod = calcWeaponTraitBonus(attacker, target); final double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), true); @@ -111,7 +112,7 @@ public class Formulas // Initial damage final double ssmod = ss ? (2 * attacker.getStat().getValue(Stat.SHOTS_BONUS)) : 1; // 2.04 for dual weapon? final double cdMult = criticalMod * (((criticalPositionMod - 1) / 2) + 1) * (((criticalVulnMod - 1) / 2) + 1); - final double cdPatk = criticalAddMod + criticalAddVuln; + final double cdPatk = (criticalAddMod + criticalAddVuln) * criticalSkillMod; final Position position = Position.getPosition(attacker, target); final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; @@ -131,10 +132,12 @@ public class Formulas defence *= attacker.isPlayable() ? Config.PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()] : Config.PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()]; } + final double skillPower = power + attacker.getStat().getValue(Stat.SKILL_POWER_ADD, 0); + // ........................_____________________________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) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; + final double baseMod = (77 * (((skillPower + attacker.getPAtk()) * 0.666) + (isPosition * (skillPower + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * randomMod * pvpPveMod * balanceMod; return damage; diff --git a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/stats/Formulas.java index 42484eb483..025a830d5b 100644 --- a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -100,6 +100,7 @@ public class Formulas final double criticalVulnMod = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE, 1); final double criticalAddMod = attacker.getStat().getValue(Stat.CRITICAL_DAMAGE_ADD, 0); final double criticalAddVuln = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE_ADD, 0); + final double criticalSkillMod = calcCritDamage(attacker, target, skill) / 2; // Trait, elements final double weaponTraitMod = calcWeaponTraitBonus(attacker, target); final double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), true); @@ -111,7 +112,7 @@ public class Formulas // Initial damage final double ssmod = ss ? (2 * attacker.getStat().getValue(Stat.SHOTS_BONUS)) : 1; // 2.04 for dual weapon? final double cdMult = criticalMod * (((criticalPositionMod - 1) / 2) + 1) * (((criticalVulnMod - 1) / 2) + 1); - final double cdPatk = criticalAddMod + criticalAddVuln; + final double cdPatk = (criticalAddMod + criticalAddVuln) * criticalSkillMod; final Position position = Position.getPosition(attacker, target); final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; @@ -131,10 +132,12 @@ public class Formulas defence *= attacker.isPlayable() ? Config.PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()] : Config.PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()]; } + final double skillPower = power + attacker.getStat().getValue(Stat.SKILL_POWER_ADD, 0); + // ........................_____________________________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) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; + final double baseMod = (77 * (((skillPower + attacker.getPAtk()) * 0.666) + (isPosition * (skillPower + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * randomMod * pvpPveMod * balanceMod; return damage; 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 15cb112641..6843cb5d54 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 @@ -100,6 +100,7 @@ public class Formulas final double criticalVulnMod = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE, 1); final double criticalAddMod = attacker.getStat().getValue(Stat.CRITICAL_DAMAGE_ADD, 0); final double criticalAddVuln = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE_ADD, 0); + final double criticalSkillMod = calcCritDamage(attacker, target, skill) / 2; // Trait, elements final double weaponTraitMod = calcWeaponTraitBonus(attacker, target); final double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), true); @@ -111,7 +112,7 @@ public class Formulas // Initial damage final double ssmod = ss ? (2 * attacker.getStat().getValue(Stat.SHOTS_BONUS)) : 1; // 2.04 for dual weapon? final double cdMult = criticalMod * (((criticalPositionMod - 1) / 2) + 1) * (((criticalVulnMod - 1) / 2) + 1); - final double cdPatk = criticalAddMod + criticalAddVuln; + final double cdPatk = (criticalAddMod + criticalAddVuln) * criticalSkillMod; final Position position = Position.getPosition(attacker, target); final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; @@ -131,10 +132,12 @@ public class Formulas defence *= attacker.isPlayable() ? Config.PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()] : Config.PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()]; } + final double skillPower = power + attacker.getStat().getValue(Stat.SKILL_POWER_ADD, 0); + // ........................_____________________________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) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; + final double baseMod = (77 * (((skillPower + attacker.getPAtk()) * 0.666) + (isPosition * (skillPower + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * randomMod * pvpPveMod * balanceMod; return damage; 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 15cb112641..6843cb5d54 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 @@ -100,6 +100,7 @@ public class Formulas final double criticalVulnMod = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE, 1); final double criticalAddMod = attacker.getStat().getValue(Stat.CRITICAL_DAMAGE_ADD, 0); final double criticalAddVuln = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE_ADD, 0); + final double criticalSkillMod = calcCritDamage(attacker, target, skill) / 2; // Trait, elements final double weaponTraitMod = calcWeaponTraitBonus(attacker, target); final double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), true); @@ -111,7 +112,7 @@ public class Formulas // Initial damage final double ssmod = ss ? (2 * attacker.getStat().getValue(Stat.SHOTS_BONUS)) : 1; // 2.04 for dual weapon? final double cdMult = criticalMod * (((criticalPositionMod - 1) / 2) + 1) * (((criticalVulnMod - 1) / 2) + 1); - final double cdPatk = criticalAddMod + criticalAddVuln; + final double cdPatk = (criticalAddMod + criticalAddVuln) * criticalSkillMod; final Position position = Position.getPosition(attacker, target); final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; @@ -131,10 +132,12 @@ public class Formulas defence *= attacker.isPlayable() ? Config.PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()] : Config.PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()]; } + final double skillPower = power + attacker.getStat().getValue(Stat.SKILL_POWER_ADD, 0); + // ........................_____________________________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) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; + final double baseMod = (77 * (((skillPower + attacker.getPAtk()) * 0.666) + (isPosition * (skillPower + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * randomMod * pvpPveMod * balanceMod; return damage; 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 15cb112641..6843cb5d54 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 @@ -100,6 +100,7 @@ public class Formulas final double criticalVulnMod = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE, 1); final double criticalAddMod = attacker.getStat().getValue(Stat.CRITICAL_DAMAGE_ADD, 0); final double criticalAddVuln = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE_ADD, 0); + final double criticalSkillMod = calcCritDamage(attacker, target, skill) / 2; // Trait, elements final double weaponTraitMod = calcWeaponTraitBonus(attacker, target); final double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), true); @@ -111,7 +112,7 @@ public class Formulas // Initial damage final double ssmod = ss ? (2 * attacker.getStat().getValue(Stat.SHOTS_BONUS)) : 1; // 2.04 for dual weapon? final double cdMult = criticalMod * (((criticalPositionMod - 1) / 2) + 1) * (((criticalVulnMod - 1) / 2) + 1); - final double cdPatk = criticalAddMod + criticalAddVuln; + final double cdPatk = (criticalAddMod + criticalAddVuln) * criticalSkillMod; final Position position = Position.getPosition(attacker, target); final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; @@ -131,10 +132,12 @@ public class Formulas defence *= attacker.isPlayable() ? Config.PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()] : Config.PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()]; } + final double skillPower = power + attacker.getStat().getValue(Stat.SKILL_POWER_ADD, 0); + // ........................_____________________________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) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; + final double baseMod = (77 * (((skillPower + attacker.getPAtk()) * 0.666) + (isPosition * (skillPower + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * randomMod * pvpPveMod * balanceMod; return damage; 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 71c04976dc..ab7fc530ab 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 @@ -101,6 +101,7 @@ public class Formulas final double criticalVulnMod = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE, 1); final double criticalAddMod = attacker.getStat().getValue(Stat.CRITICAL_DAMAGE_ADD, 0); final double criticalAddVuln = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE_ADD, 0); + final double criticalSkillMod = calcCritDamage(attacker, target, skill) / 2; // Trait, elements final double weaponTraitMod = calcWeaponTraitBonus(attacker, target); final double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), true); @@ -112,7 +113,7 @@ public class Formulas // Initial damage final double ssmod = ss ? (2 * attacker.getStat().getValue(Stat.SHOTS_BONUS)) : 1; // 2.04 for dual weapon? final double cdMult = criticalMod * (((criticalPositionMod - 1) / 2) + 1) * (((criticalVulnMod - 1) / 2) + 1); - final double cdPatk = criticalAddMod + criticalAddVuln; + final double cdPatk = (criticalAddMod + criticalAddVuln) * criticalSkillMod; final Position position = Position.getPosition(attacker, target); final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; @@ -132,10 +133,12 @@ public class Formulas defence *= attacker.isPlayable() ? Config.PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()] : Config.PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()]; } + final double skillPower = power + attacker.getStat().getValue(Stat.SKILL_POWER_ADD, 0); + // ........................_____________________________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) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; + final double baseMod = (77 * (((skillPower + attacker.getPAtk()) * 0.666) + (isPosition * (skillPower + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * randomMod * pvpPveMod * balanceMod; return damage; diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/stats/Formulas.java index 71c04976dc..ab7fc530ab 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -101,6 +101,7 @@ public class Formulas final double criticalVulnMod = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE, 1); final double criticalAddMod = attacker.getStat().getValue(Stat.CRITICAL_DAMAGE_ADD, 0); final double criticalAddVuln = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE_ADD, 0); + final double criticalSkillMod = calcCritDamage(attacker, target, skill) / 2; // Trait, elements final double weaponTraitMod = calcWeaponTraitBonus(attacker, target); final double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), true); @@ -112,7 +113,7 @@ public class Formulas // Initial damage final double ssmod = ss ? (2 * attacker.getStat().getValue(Stat.SHOTS_BONUS)) : 1; // 2.04 for dual weapon? final double cdMult = criticalMod * (((criticalPositionMod - 1) / 2) + 1) * (((criticalVulnMod - 1) / 2) + 1); - final double cdPatk = criticalAddMod + criticalAddVuln; + final double cdPatk = (criticalAddMod + criticalAddVuln) * criticalSkillMod; final Position position = Position.getPosition(attacker, target); final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; @@ -132,10 +133,12 @@ public class Formulas defence *= attacker.isPlayable() ? Config.PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()] : Config.PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()]; } + final double skillPower = power + attacker.getStat().getValue(Stat.SKILL_POWER_ADD, 0); + // ........................_____________________________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) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; + final double baseMod = (77 * (((skillPower + attacker.getPAtk()) * 0.666) + (isPosition * (skillPower + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * randomMod * pvpPveMod * balanceMod; return damage; diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/stats/Formulas.java index 71c04976dc..ab7fc530ab 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -101,6 +101,7 @@ public class Formulas final double criticalVulnMod = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE, 1); final double criticalAddMod = attacker.getStat().getValue(Stat.CRITICAL_DAMAGE_ADD, 0); final double criticalAddVuln = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE_ADD, 0); + final double criticalSkillMod = calcCritDamage(attacker, target, skill) / 2; // Trait, elements final double weaponTraitMod = calcWeaponTraitBonus(attacker, target); final double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), true); @@ -112,7 +113,7 @@ public class Formulas // Initial damage final double ssmod = ss ? (2 * attacker.getStat().getValue(Stat.SHOTS_BONUS)) : 1; // 2.04 for dual weapon? final double cdMult = criticalMod * (((criticalPositionMod - 1) / 2) + 1) * (((criticalVulnMod - 1) / 2) + 1); - final double cdPatk = criticalAddMod + criticalAddVuln; + final double cdPatk = (criticalAddMod + criticalAddVuln) * criticalSkillMod; final Position position = Position.getPosition(attacker, target); final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; @@ -132,10 +133,12 @@ public class Formulas defence *= attacker.isPlayable() ? Config.PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()] : Config.PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()]; } + final double skillPower = power + attacker.getStat().getValue(Stat.SKILL_POWER_ADD, 0); + // ........................_____________________________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) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; + final double baseMod = (77 * (((skillPower + attacker.getPAtk()) * 0.666) + (isPosition * (skillPower + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * randomMod * pvpPveMod * balanceMod; return damage; diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/stats/Formulas.java index 15cb112641..6843cb5d54 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -100,6 +100,7 @@ public class Formulas final double criticalVulnMod = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE, 1); final double criticalAddMod = attacker.getStat().getValue(Stat.CRITICAL_DAMAGE_ADD, 0); final double criticalAddVuln = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE_ADD, 0); + final double criticalSkillMod = calcCritDamage(attacker, target, skill) / 2; // Trait, elements final double weaponTraitMod = calcWeaponTraitBonus(attacker, target); final double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), true); @@ -111,7 +112,7 @@ public class Formulas // Initial damage final double ssmod = ss ? (2 * attacker.getStat().getValue(Stat.SHOTS_BONUS)) : 1; // 2.04 for dual weapon? final double cdMult = criticalMod * (((criticalPositionMod - 1) / 2) + 1) * (((criticalVulnMod - 1) / 2) + 1); - final double cdPatk = criticalAddMod + criticalAddVuln; + final double cdPatk = (criticalAddMod + criticalAddVuln) * criticalSkillMod; final Position position = Position.getPosition(attacker, target); final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; @@ -131,10 +132,12 @@ public class Formulas defence *= attacker.isPlayable() ? Config.PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()] : Config.PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()]; } + final double skillPower = power + attacker.getStat().getValue(Stat.SKILL_POWER_ADD, 0); + // ........................_____________________________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) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; + final double baseMod = (77 * (((skillPower + attacker.getPAtk()) * 0.666) + (isPosition * (skillPower + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * randomMod * pvpPveMod * balanceMod; return damage; diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/stats/Formulas.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/stats/Formulas.java index 71c04976dc..ab7fc530ab 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/stats/Formulas.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/stats/Formulas.java @@ -101,6 +101,7 @@ public class Formulas final double criticalVulnMod = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE, 1); final double criticalAddMod = attacker.getStat().getValue(Stat.CRITICAL_DAMAGE_ADD, 0); final double criticalAddVuln = target.getStat().getValue(Stat.DEFENCE_CRITICAL_DAMAGE_ADD, 0); + final double criticalSkillMod = calcCritDamage(attacker, target, skill) / 2; // Trait, elements final double weaponTraitMod = calcWeaponTraitBonus(attacker, target); final double generalTraitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), true); @@ -112,7 +113,7 @@ public class Formulas // Initial damage final double ssmod = ss ? (2 * attacker.getStat().getValue(Stat.SHOTS_BONUS)) : 1; // 2.04 for dual weapon? final double cdMult = criticalMod * (((criticalPositionMod - 1) / 2) + 1) * (((criticalVulnMod - 1) / 2) + 1); - final double cdPatk = criticalAddMod + criticalAddVuln; + final double cdPatk = (criticalAddMod + criticalAddVuln) * criticalSkillMod; final Position position = Position.getPosition(attacker, target); final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0; @@ -132,10 +133,12 @@ public class Formulas defence *= attacker.isPlayable() ? Config.PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()] : Config.PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS[target.getActingPlayer().getClassId().getId()]; } + final double skillPower = power + attacker.getStat().getValue(Stat.SKILL_POWER_ADD, 0); + // ........................_____________________________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) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; + final double baseMod = (77 * (((skillPower + attacker.getPAtk()) * 0.666) + (isPosition * (skillPower + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence; final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * randomMod * pvpPveMod * balanceMod; return damage;