Addition of PhysicalSkillCriticalRate effect.

Contributed by nasseka.
This commit is contained in:
MobiusDevelopment 2022-02-13 10:11:44 +00:00
parent 711dca327a
commit a1fd559b39
433 changed files with 1580 additions and 1183 deletions

View File

@ -251,6 +251,7 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("PhysicalEvasion", PhysicalEvasion::new);
EffectHandler.getInstance().registerHandler("PhysicalMute", PhysicalMute::new);
EffectHandler.getInstance().registerHandler("PhysicalShieldAngleAll", PhysicalShieldAngleAll::new);
EffectHandler.getInstance().registerHandler("PhysicalSkillCriticalRate", PhysicalSkillCriticalRate::new);
EffectHandler.getInstance().registerHandler("PhysicalSkillPower", PhysicalSkillPower::new);
EffectHandler.getInstance().registerHandler("PhysicalSoulAttack", PhysicalSoulAttack::new);
EffectHandler.getInstance().registerHandler("PkCount", PkCount::new);

View File

@ -47,7 +47,7 @@ public class EnergyAttack extends AbstractEffect
public EnergyAttack(StatSet params)
{
_power = params.getDouble("power", 0);
_criticalChance = params.getInt("criticalChance", 0);
_criticalChance = params.getInt("criticalChance", 10);
_ignoreShieldDefence = params.getBoolean("ignoreShieldDefence", false);
_overHit = params.getBoolean("overHit", false);
_chargeConsume = params.getInt("chargeConsume", 0);

View File

@ -57,7 +57,7 @@ public class PhysicalAttack extends AbstractEffect
_power = params.getDouble("power", 0);
_pAtkMod = params.getDouble("pAtkMod", 1.0);
_pDefMod = params.getDouble("pDefMod", 1.0);
_criticalChance = params.getDouble("criticalChance", 0);
_criticalChance = params.getDouble("criticalChance", 10);
_ignoreShieldDefence = params.getBoolean("ignoreShieldDefence", false);
_overHit = params.getBoolean("overHit", false);
final String abnormals = params.getString("abnormalType", null);
@ -134,7 +134,7 @@ public class PhysicalAttack extends AbstractEffect
}
double damage = 1;
final boolean critical = Formulas.calcCrit(_criticalChance, effected, effector, skill);
final boolean critical = Formulas.calcCrit(_criticalChance, effector, effected, skill);
if (defence != -1)
{

View File

@ -50,7 +50,7 @@ public class PhysicalAttackWeaponBonus extends AbstractEffect
public PhysicalAttackWeaponBonus(StatSet params)
{
_power = params.getDouble("power", 0);
_criticalChance = params.getDouble("criticalChance", 0);
_criticalChance = params.getDouble("criticalChance", 10);
_ignoreShieldDefence = params.getBoolean("ignoreShieldDefence", false);
_overHit = params.getBoolean("overHit", false);
_pDefMod = params.getDouble("pDefMod", 1.0);

View File

@ -0,0 +1,31 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author NasSeKa
*/
public class PhysicalSkillCriticalRate extends AbstractStatPercentEffect
{
public PhysicalSkillCriticalRate(StatSet params)
{
super(params, Stat.CRITICAL_RATE_SKILL);
}
}

View File

@ -25,7 +25,7 @@
<amount>100</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>30</amount>
<mode>PER</mode>
</effect>
@ -75,7 +75,7 @@
<amount>500</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>50</amount>
<mode>PER</mode>
</effect>

View File

@ -645,7 +645,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + (base / 100 * subIndex)}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
<effect name="Speed">
<amount>-70</amount>
@ -749,7 +748,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + (base / 100 * subIndex)}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
<effect name="BlockSkill">
<magicTypes>1</magicTypes>
@ -844,7 +842,6 @@
<value level="8">20253</value>
<value fromLevel="4" toLevel="8" fromSubLevel="1001" toSubLevel="1030">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>5</criticalChance>
</effect>
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912</allowedSkills>
@ -940,7 +937,6 @@
<value level="10">16349</value>
<value fromLevel="6" toLevel="10" fromSubLevel="1001" toSubLevel="1030">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>5</criticalChance>
</effect>
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912</allowedSkills>
@ -1039,7 +1035,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + (base / 100 * subIndex)}</value>
</criticalChance>
<pDefMod>
@ -1129,7 +1125,6 @@
<value level="11">25756</value>
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>5</criticalChance>
</effect>
<effect name="HealEffect">
<amount>-90</amount>
@ -5157,7 +5152,7 @@
<value level="6">21799</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="6">15</value>
<value fromLevel="1" toLevel="6">10</value>
</criticalChance>
<overHit>true</overHit>
</effect>

View File

@ -718,7 +718,6 @@
<value level="11">22603</value>
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>5</criticalChance>
<overHit>true</overHit>
</effect>
<effect name="PhysicalDefence">
@ -820,7 +819,7 @@
<ignoreShieldDefence>true</ignoreShieldDefence>
<chargeConsume>3</chargeConsume>
<criticalChance>
<value fromLevel="1" toLevel="11">3</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -915,7 +914,6 @@
</power>
<ignoreShieldDefence>true</ignoreShieldDefence>
<chargeConsume>3</chargeConsume>
<criticalChance>3</criticalChance>
<overHit>true</overHit>
</effect>
<effect name="KnockBack">
@ -1133,7 +1131,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
<BLUNT>0.9</BLUNT>
<SWORD>0.9</SWORD>
<POLE>1.5</POLE>
@ -1471,7 +1468,6 @@
<value level="10">17055</value>
</power>
<overHit>true</overHit>
<criticalChance>3</criticalChance>
<chargeConsume>3</chargeConsume>
</effect>
<effect name="Speed">
@ -1834,7 +1830,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="4">5</value>
<value fromLevel="1" toLevel="4">10</value>
<value fromLevel="1" toLevel="4" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -2205,7 +2201,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="5">5</value>
<value fromLevel="1" toLevel="5">10</value>
<value fromLevel="1" toLevel="5" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>
@ -2561,7 +2557,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>

View File

@ -785,7 +785,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="7">15</value>
<value fromLevel="1" toLevel="7">10</value>
</criticalChance>
<chargeConsume>3</chargeConsume>
</effect>
@ -938,7 +938,6 @@
<value level="7">39060</value>
</power>
<ignoreShieldDefence>true</ignoreShieldDefence>
<criticalChance>15</criticalChance>
<overHit>true</overHit>
</effect>
<effect name="BlockActions">
@ -1182,7 +1181,6 @@
<value level="7">29911</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
</effects>
</skill>
@ -1324,7 +1322,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="7">15</value>
<value fromLevel="1" toLevel="7">10</value>
</criticalChance>
<pDefMod>0.7</pDefMod>
</effect>
@ -1371,7 +1369,7 @@
<item>DUAL</item>
</weaponType>
</effect>
<effect name="CriticalRate">
<effect name="PhysicalSkillCriticalRate">
<amount>20</amount>
<mode>PER</mode>
</effect>

View File

@ -400,7 +400,7 @@
<amount>100</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>10</amount>
<mode>PER</mode>
</effect>

View File

@ -76,7 +76,7 @@
<amount>30</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">10</value>
<value level="2">11</value>
@ -1077,7 +1077,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -1177,7 +1177,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
<effect name="KnockBack">
<speed>500</speed>
@ -1271,7 +1270,7 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -1587,7 +1586,7 @@
<value fromLevel="4" toLevel="9" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="9">5</value>
<value fromLevel="1" toLevel="9">10</value>
<value fromLevel="4" toLevel="9" fromSubLevel="3001" toSubLevel="3030">{base + base / 100 * subIndex}</value>
</criticalChance>
<overHit>true</overHit>
@ -1688,7 +1687,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3030">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>
@ -1784,7 +1783,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -1876,7 +1875,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -2325,7 +2324,7 @@
<value fromLevel="5" toLevel="9" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3030">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>
@ -2379,7 +2378,7 @@
<value fromLevel="1" toLevel="4" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="4">5</value>
<value fromLevel="1" toLevel="4">10</value>
</criticalChance>
</effect>
</effects>

View File

@ -557,7 +557,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
<pDefMod>
<value fromLevel="1" toLevel="11">1</value>
<value fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3030">{0.99 - 0.006 * (subIndex - 1)}</value>
@ -665,7 +664,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
<pDefMod>
<value fromLevel="1" toLevel="11">1</value>
<value fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3030">{0.99 - 0.006 * (subIndex - 1)}</value>
@ -2982,7 +2980,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="4">5</value>
<value fromLevel="1" toLevel="4">10</value>
<value fromLevel="1" toLevel="4" fromSubLevel="3001" toSubLevel="3030">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>

View File

@ -540,7 +540,7 @@
<icon>icon.skill0193</icon>
<operateType>P</operateType>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">5</value>
<value level="2">10</value>

View File

@ -1104,7 +1104,7 @@
</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">15</value>
<value level="2">16</value>

View File

@ -115,7 +115,6 @@
<value level="27">49514</value>
<value level="28">51032</value>
</power>
<criticalChance>15</criticalChance> <!-- Unconfirmed -->
<abnormalType>STUN</abnormalType>
<damageModifier>1.2</damageModifier>
<overHit>true</overHit>
@ -246,7 +245,6 @@
</power>
<pDefMod>0.7</pDefMod>
<overHit>true</overHit>
<criticalChance>15</criticalChance>
</effect>
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912</allowedSkills>
@ -403,7 +401,6 @@
<value level="11">94517</value>
</power>
<ignoreShieldDefence>true</ignoreShieldDefence>
<criticalChance>15</criticalChance> <!-- Unconfirmed -->
<overHit>true</overHit>
</effect>
</effects>
@ -485,7 +482,6 @@
<value level="16">94517</value>
</power>
<pDefMod>0.5</pDefMod>
<criticalChance>15</criticalChance>
<overHit>true</overHit>
</effect>
</effects>
@ -554,7 +550,6 @@
<value level="9">41083</value>
<value level="10">42343</value>
</power>
<criticalChance>15</criticalChance>
</effect>
<effect name="PullBack">
<type>THROW_UP</type>
@ -646,7 +641,6 @@
<value level="13">51343</value>
<value level="14">52917</value>
</power>
<criticalChance>15</criticalChance> <!-- Unconfirmed -->
</effect>
<effect name="KnockBack">
<speed>400</speed>
@ -1568,7 +1562,7 @@
</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">10</value>
<value level="2">20</value>

View File

@ -52,7 +52,7 @@
<effectPoint>2</effectPoint>
<isMagic>3</isMagic>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>1</amount>
<mode>PER</mode>
</effect>

View File

@ -221,6 +221,7 @@ PhysicalDefence: P. Def stat.
PhysicalEvasion: P. Evasion stat.
PhysicalMute: Prevents the usage of physical skills. Shield Slam.
PhysicalShieldAngleAll: Causes the shield to block at 360 degree angle.
PhysicalSkillCriticalRate: Physical skill critical rate stat. (l2jmobius)
PhysicalSkillPower: Physical Skill Power stat (use only MUL).
PhysicalSoulAttack: Physical attack depending on souls.
PkCount: Increases PK kills.
@ -287,7 +288,7 @@ SilentMove: Prevents aggressive mobs from attacking you when entering aggression
SkillCriticalDamage: Skill critical damage stat.
SkillEvasion: Skill evasion stat.
SkillMastery: Activates double debuff or cooldown reset critical based on the specified stat.
SkillMasteryRate: Skill critical rate stat.
SkillMasteryRate: Bonus chance for skill mastery stat.
SkillPowerAdd: Adds set ammount of power to skills (use only DIFF). (l2jmobius)
SkillTurning: Stops target's casting.
SkillTurningOverTime: Stops target's casting at a fixed rate.

View File

@ -261,7 +261,7 @@ public class Formulas
statBonus = BaseStat.STR.calcBonus(creature);
}
final double rateBonus = creature.getStat().getValue(Stat.CRITICAL_RATE_SKILL, 1);
final double rateBonus = creature.getStat().getMul(Stat.CRITICAL_RATE_SKILL, 1);
double balanceMod = 1;
if (creature.isPlayable())
@ -269,7 +269,7 @@ public class Formulas
balanceMod = target.isPlayable() ? Config.PVP_PHYSICAL_SKILL_CRITICAL_CHANCE_MULTIPLIERS[creature.getActingPlayer().getClassId().getId()] : Config.PVE_PHYSICAL_SKILL_CRITICAL_CHANCE_MULTIPLIERS[creature.getActingPlayer().getClassId().getId()];
}
return (rate * statBonus * rateBonus * balanceMod) > Rnd.get(100);
return CommonUtil.constrain(rate * statBonus * rateBonus * balanceMod, 5, 90) > Rnd.get(100);
}
// Autoattack critical rate.

View File

@ -126,7 +126,7 @@ public enum Stat
MAGIC_CRITICAL_DAMAGE_ADD("mCritPowerAdd"),
SHIELD_DEFENCE_RATE("rShld", new ShieldDefenceRateFinalizer()),
CRITICAL_RATE("rCrit", new PCriticalRateFinalizer(), MathUtil::add, MathUtil::add, 0, 1),
CRITICAL_RATE_SKILL("rCritSkill", Stat::defaultValue, MathUtil::add, MathUtil::add, 0, 1),
CRITICAL_RATE_SKILL("physicalSkillCriticalRate"),
MAX_MAGIC_CRITICAL_RATE("maxMagicCritRate"),
MAGIC_CRITICAL_RATE("mCritRate", new MCritRateFinalizer()),
BLOW_RATE("blowRate"),

View File

@ -251,6 +251,7 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("PhysicalEvasion", PhysicalEvasion::new);
EffectHandler.getInstance().registerHandler("PhysicalMute", PhysicalMute::new);
EffectHandler.getInstance().registerHandler("PhysicalShieldAngleAll", PhysicalShieldAngleAll::new);
EffectHandler.getInstance().registerHandler("PhysicalSkillCriticalRate", PhysicalSkillCriticalRate::new);
EffectHandler.getInstance().registerHandler("PhysicalSkillPower", PhysicalSkillPower::new);
EffectHandler.getInstance().registerHandler("PhysicalSoulAttack", PhysicalSoulAttack::new);
EffectHandler.getInstance().registerHandler("PkCount", PkCount::new);

View File

@ -47,7 +47,7 @@ public class EnergyAttack extends AbstractEffect
public EnergyAttack(StatSet params)
{
_power = params.getDouble("power", 0);
_criticalChance = params.getInt("criticalChance", 0);
_criticalChance = params.getInt("criticalChance", 10);
_ignoreShieldDefence = params.getBoolean("ignoreShieldDefence", false);
_overHit = params.getBoolean("overHit", false);
_chargeConsume = params.getInt("chargeConsume", 0);

View File

@ -57,7 +57,7 @@ public class PhysicalAttack extends AbstractEffect
_power = params.getDouble("power", 0);
_pAtkMod = params.getDouble("pAtkMod", 1.0);
_pDefMod = params.getDouble("pDefMod", 1.0);
_criticalChance = params.getDouble("criticalChance", 0);
_criticalChance = params.getDouble("criticalChance", 10);
_ignoreShieldDefence = params.getBoolean("ignoreShieldDefence", false);
_overHit = params.getBoolean("overHit", false);
final String abnormals = params.getString("abnormalType", null);
@ -134,7 +134,7 @@ public class PhysicalAttack extends AbstractEffect
}
double damage = 1;
final boolean critical = Formulas.calcCrit(_criticalChance, effected, effector, skill);
final boolean critical = Formulas.calcCrit(_criticalChance, effector, effected, skill);
if (defence != -1)
{

View File

@ -50,7 +50,7 @@ public class PhysicalAttackWeaponBonus extends AbstractEffect
public PhysicalAttackWeaponBonus(StatSet params)
{
_power = params.getDouble("power", 0);
_criticalChance = params.getDouble("criticalChance", 0);
_criticalChance = params.getDouble("criticalChance", 10);
_ignoreShieldDefence = params.getBoolean("ignoreShieldDefence", false);
_overHit = params.getBoolean("overHit", false);
_pDefMod = params.getDouble("pDefMod", 1.0);

View File

@ -0,0 +1,31 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author NasSeKa
*/
public class PhysicalSkillCriticalRate extends AbstractStatPercentEffect
{
public PhysicalSkillCriticalRate(StatSet params)
{
super(params, Stat.CRITICAL_RATE_SKILL);
}
}

View File

@ -25,7 +25,7 @@
<amount>100</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>30</amount>
<mode>PER</mode>
</effect>
@ -75,7 +75,7 @@
<amount>500</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>50</amount>
<mode>PER</mode>
</effect>

View File

@ -645,7 +645,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + (base / 100 * subIndex)}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
<effect name="Speed">
<amount>-70</amount>
@ -749,7 +748,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + (base / 100 * subIndex)}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
<effect name="BlockSkill">
<magicTypes>1</magicTypes>
@ -844,7 +842,6 @@
<value level="8">20253</value>
<value fromLevel="4" toLevel="8" fromSubLevel="1001" toSubLevel="1030">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>5</criticalChance>
</effect>
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912</allowedSkills>
@ -940,7 +937,6 @@
<value level="10">16349</value>
<value fromLevel="6" toLevel="10" fromSubLevel="1001" toSubLevel="1030">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>5</criticalChance>
</effect>
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912</allowedSkills>
@ -1039,7 +1035,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + (base / 100 * subIndex)}</value>
</criticalChance>
<pDefMod>
@ -1129,7 +1125,6 @@
<value level="11">25756</value>
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>5</criticalChance>
</effect>
<effect name="HealEffect">
<amount>-90</amount>
@ -5275,7 +5270,7 @@
<value fromLevel="2" toLevel="6" fromSubLevel="1001" toSubLevel="1030">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="6">15</value>
<value fromLevel="1" toLevel="6">10</value>
<value fromLevel="2" toLevel="6" fromSubLevel="2001" toSubLevel="2030">{base + (base / 100 * subIndex)}</value>
</criticalChance>
<pDefMod>

View File

@ -718,7 +718,6 @@
<value level="11">22603</value>
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>5</criticalChance>
<overHit>true</overHit>
</effect>
<effect name="PhysicalDefence">
@ -820,7 +819,7 @@
<ignoreShieldDefence>true</ignoreShieldDefence>
<chargeConsume>3</chargeConsume>
<criticalChance>
<value fromLevel="1" toLevel="11">3</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -915,7 +914,6 @@
</power>
<ignoreShieldDefence>true</ignoreShieldDefence>
<chargeConsume>3</chargeConsume>
<criticalChance>3</criticalChance>
<overHit>true</overHit>
</effect>
<effect name="KnockBack">
@ -1133,7 +1131,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
<BLUNT>0.9</BLUNT>
<SWORD>0.9</SWORD>
<POLE>1.5</POLE>
@ -1477,7 +1474,6 @@
<value level="10">17055</value>
</power>
<overHit>true</overHit>
<criticalChance>3</criticalChance>
<chargeConsume>3</chargeConsume>
</effect>
<effect name="Speed">
@ -1852,7 +1848,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="4">5</value>
<value fromLevel="1" toLevel="4">10</value>
<value fromLevel="1" toLevel="4" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -2224,7 +2220,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="5">5</value>
<value fromLevel="1" toLevel="5">10</value>
<value fromLevel="1" toLevel="5" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -2595,7 +2591,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>

View File

@ -793,7 +793,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="7">15</value>
<value fromLevel="1" toLevel="7">10</value>
<value fromLevel="3" toLevel="7" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -953,7 +953,6 @@
<value fromLevel="3" toLevel="7" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<ignoreShieldDefence>true</ignoreShieldDefence>
<criticalChance>15</criticalChance>
<overHit>true</overHit>
</effect>
<effect name="BlockActions">
@ -1210,7 +1209,6 @@
<value level="7">29911</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
</effects>
</skill>
@ -1354,7 +1352,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="7">15</value>
<value fromLevel="1" toLevel="7">10</value>
<value fromLevel="3" toLevel="7" fromSubLevel="3001" toSubLevel="3030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>0.7</pDefMod>
@ -1403,7 +1401,7 @@
<item>DUAL</item>
</weaponType>
</effect>
<effect name="CriticalRate">
<effect name="PhysicalSkillCriticalRate">
<amount>20</amount>
<mode>PER</mode>
</effect>

View File

@ -400,7 +400,7 @@
<amount>100</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>10</amount>
<mode>PER</mode>
</effect>

View File

@ -81,7 +81,7 @@
<amount>30</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">10</value>
<value level="2">11</value>
@ -1142,7 +1142,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -1242,7 +1242,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
<effect name="KnockBack">
<speed>500</speed>
@ -1336,7 +1335,7 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -1652,7 +1651,7 @@
<value fromLevel="4" toLevel="9" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="9">5</value>
<value fromLevel="1" toLevel="9">10</value>
<value fromLevel="4" toLevel="9" fromSubLevel="3001" toSubLevel="3030">{base + base / 100 * subIndex}</value>
</criticalChance>
<overHit>true</overHit>
@ -1753,7 +1752,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3030">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>
@ -1849,7 +1848,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -1941,7 +1940,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -2409,7 +2408,7 @@
<value fromLevel="5" toLevel="9" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="9">5</value>
<value fromLevel="1" toLevel="9">10</value>
<value fromLevel="7" toLevel="9" fromSubLevel="3001" toSubLevel="3030">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>
@ -2463,7 +2462,7 @@
<value fromLevel="1" toLevel="4" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="4">5</value>
<value fromLevel="1" toLevel="4">10</value>
<value fromLevel="1" toLevel="4" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>

View File

@ -559,7 +559,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
<pDefMod>
<value fromLevel="1" toLevel="11">1</value>
<value fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3030">{0.99 - 0.006 * (subIndex - 1)}</value>
@ -667,7 +666,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
<pDefMod>
<value fromLevel="1" toLevel="11">1</value>
<value fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3030">{0.99 - 0.006 * (subIndex - 1)}</value>
@ -3121,7 +3119,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="4">5</value>
<value fromLevel="1" toLevel="4">10</value>
<value fromLevel="1" toLevel="4" fromSubLevel="3001" toSubLevel="3030">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>

View File

@ -3004,7 +3004,7 @@
<icon>icon.skill3238</icon>
<operateType>P</operateType>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">0.55</value>
<value level="2">0.65</value>

View File

@ -1545,7 +1545,7 @@
<icon>icon.ensoul_big_p</icon>
<operateType>P</operateType>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value fromLevel="1" toLevel="15">{5+index}</value>
</amount>
@ -1841,7 +1841,7 @@
</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">3</value>
<value fromLevel="2" toLevel="3">4</value>
@ -2007,7 +2007,7 @@
</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">3</value>
<value fromLevel="2" toLevel="3">4</value>
@ -2675,7 +2675,7 @@
</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">3</value>
<value fromLevel="2" toLevel="3">4</value>

View File

@ -540,7 +540,7 @@
<icon>icon.skill0193</icon>
<operateType>P</operateType>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">5</value>
<value level="2">10</value>

View File

@ -1102,7 +1102,7 @@
</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">15</value>
<value level="2">16</value>

View File

@ -122,7 +122,7 @@
<value fromLevel="24" toLevel="28" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="28">15</value>
<value fromLevel="1" toLevel="28">10</value>
<value fromLevel="24" toLevel="28" fromSubLevel="3001" toSubLevel="3030">{base + base / 100 * subIndex}</value>
</criticalChance> <!-- Unconfirmed -->
<abnormalType>STUN</abnormalType>
@ -257,7 +257,7 @@
<pDefMod>0.7</pDefMod>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="27">15</value>
<value fromLevel="1" toLevel="27">10</value>
<value fromLevel="23" toLevel="27" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>
@ -427,7 +427,7 @@
</power>
<ignoreShieldDefence>true</ignoreShieldDefence>
<criticalChance>
<value fromLevel="1" toLevel="11">15</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<overHit>true</overHit>
@ -513,7 +513,7 @@
</power>
<pDefMod>0.5</pDefMod>
<criticalChance>
<value fromLevel="1" toLevel="16">15</value>
<value fromLevel="1" toLevel="16">10</value>
<value fromLevel="12" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<overHit>true</overHit>
@ -588,7 +588,6 @@
<value level="10">42343</value>
<value fromLevel="6" toLevel="10" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>15</criticalChance>
</effect>
<effect name="PullBack">
<type>THROW_UP</type>
@ -687,7 +686,6 @@
<value level="14">52917</value>
<value fromLevel="10" toLevel="14" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>15</criticalChance> <!-- Unconfirmed -->
</effect>
<effect name="KnockBack">
<speed>400</speed>
@ -1717,7 +1715,7 @@
</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">10</value>
<value level="2">20</value>
@ -2442,7 +2440,7 @@
</power>
<pDefMod>0.5</pDefMod>
<criticalChance>
<value fromLevel="1" toLevel="4">15</value> <!-- Guessed -->
<value fromLevel="1" toLevel="4">10</value>
<value fromLevel="1" toLevel="4" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>

View File

@ -52,7 +52,7 @@
<effectPoint>2</effectPoint>
<isMagic>3</isMagic>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>1</amount>
<mode>PER</mode>
</effect>

View File

@ -221,6 +221,7 @@ PhysicalDefence: P. Def stat.
PhysicalEvasion: P. Evasion stat.
PhysicalMute: Prevents the usage of physical skills. Shield Slam.
PhysicalShieldAngleAll: Causes the shield to block at 360 degree angle.
PhysicalSkillCriticalRate: Physical skill critical rate stat. (l2jmobius)
PhysicalSkillPower: Physical Skill Power stat (use only MUL).
PhysicalSoulAttack: Physical attack depending on souls.
PkCount: Increases PK kills.
@ -287,7 +288,7 @@ SilentMove: Prevents aggressive mobs from attacking you when entering aggression
SkillCriticalDamage: Skill critical damage stat.
SkillEvasion: Skill evasion stat.
SkillMastery: Activates double debuff or cooldown reset critical based on the specified stat.
SkillMasteryRate: Skill critical rate stat.
SkillMasteryRate: Bonus chance for skill mastery stat.
SkillPowerAdd: Adds set ammount of power to skills (use only DIFF). (l2jmobius)
SkillTurning: Stops target's casting.
SkillTurningOverTime: Stops target's casting at a fixed rate.

View File

@ -261,7 +261,7 @@ public class Formulas
statBonus = BaseStat.STR.calcBonus(creature);
}
final double rateBonus = creature.getStat().getValue(Stat.CRITICAL_RATE_SKILL, 1);
final double rateBonus = creature.getStat().getMul(Stat.CRITICAL_RATE_SKILL, 1);
double balanceMod = 1;
if (creature.isPlayable())
@ -269,7 +269,7 @@ public class Formulas
balanceMod = target.isPlayable() ? Config.PVP_PHYSICAL_SKILL_CRITICAL_CHANCE_MULTIPLIERS[creature.getActingPlayer().getClassId().getId()] : Config.PVE_PHYSICAL_SKILL_CRITICAL_CHANCE_MULTIPLIERS[creature.getActingPlayer().getClassId().getId()];
}
return (rate * statBonus * rateBonus * balanceMod) > Rnd.get(100);
return CommonUtil.constrain(rate * statBonus * rateBonus * balanceMod, 5, 90) > Rnd.get(100);
}
// Autoattack critical rate.

View File

@ -126,7 +126,7 @@ public enum Stat
MAGIC_CRITICAL_DAMAGE_ADD("mCritPowerAdd"),
SHIELD_DEFENCE_RATE("rShld", new ShieldDefenceRateFinalizer()),
CRITICAL_RATE("rCrit", new PCriticalRateFinalizer(), MathUtil::add, MathUtil::add, 0, 1),
CRITICAL_RATE_SKILL("rCritSkill", Stat::defaultValue, MathUtil::add, MathUtil::add, 0, 1),
CRITICAL_RATE_SKILL("physicalSkillCriticalRate"),
MAX_MAGIC_CRITICAL_RATE("maxMagicCritRate"),
MAGIC_CRITICAL_RATE("mCritRate", new MCritRateFinalizer()),
BLOW_RATE("blowRate"),

View File

@ -251,6 +251,7 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("PhysicalEvasion", PhysicalEvasion::new);
EffectHandler.getInstance().registerHandler("PhysicalMute", PhysicalMute::new);
EffectHandler.getInstance().registerHandler("PhysicalShieldAngleAll", PhysicalShieldAngleAll::new);
EffectHandler.getInstance().registerHandler("PhysicalSkillCriticalRate", PhysicalSkillCriticalRate::new);
EffectHandler.getInstance().registerHandler("PhysicalSkillPower", PhysicalSkillPower::new);
EffectHandler.getInstance().registerHandler("PhysicalSoulAttack", PhysicalSoulAttack::new);
EffectHandler.getInstance().registerHandler("PkCount", PkCount::new);

View File

@ -47,7 +47,7 @@ public class EnergyAttack extends AbstractEffect
public EnergyAttack(StatSet params)
{
_power = params.getDouble("power", 0);
_criticalChance = params.getInt("criticalChance", 0);
_criticalChance = params.getInt("criticalChance", 10);
_ignoreShieldDefence = params.getBoolean("ignoreShieldDefence", false);
_overHit = params.getBoolean("overHit", false);
_chargeConsume = params.getInt("chargeConsume", 0);

View File

@ -57,7 +57,7 @@ public class PhysicalAttack extends AbstractEffect
_power = params.getDouble("power", 0);
_pAtkMod = params.getDouble("pAtkMod", 1.0);
_pDefMod = params.getDouble("pDefMod", 1.0);
_criticalChance = params.getDouble("criticalChance", 0);
_criticalChance = params.getDouble("criticalChance", 10);
_ignoreShieldDefence = params.getBoolean("ignoreShieldDefence", false);
_overHit = params.getBoolean("overHit", false);
final String abnormals = params.getString("abnormalType", null);
@ -134,7 +134,7 @@ public class PhysicalAttack extends AbstractEffect
}
double damage = 1;
final boolean critical = Formulas.calcCrit(_criticalChance, effected, effector, skill);
final boolean critical = Formulas.calcCrit(_criticalChance, effector, effected, skill);
if (defence != -1)
{

View File

@ -50,7 +50,7 @@ public class PhysicalAttackWeaponBonus extends AbstractEffect
public PhysicalAttackWeaponBonus(StatSet params)
{
_power = params.getDouble("power", 0);
_criticalChance = params.getDouble("criticalChance", 0);
_criticalChance = params.getDouble("criticalChance", 10);
_ignoreShieldDefence = params.getBoolean("ignoreShieldDefence", false);
_overHit = params.getBoolean("overHit", false);
_pDefMod = params.getDouble("pDefMod", 1.0);

View File

@ -0,0 +1,31 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author NasSeKa
*/
public class PhysicalSkillCriticalRate extends AbstractStatPercentEffect
{
public PhysicalSkillCriticalRate(StatSet params)
{
super(params, Stat.CRITICAL_RATE_SKILL);
}
}

View File

@ -25,7 +25,7 @@
<amount>100</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>30</amount>
<mode>PER</mode>
</effect>
@ -75,7 +75,7 @@
<amount>500</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>50</amount>
<mode>PER</mode>
</effect>

View File

@ -644,7 +644,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + (base / 100 * subIndex)}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
<effect name="Speed">
<amount>-70</amount>
@ -748,7 +747,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + (base / 100 * subIndex)}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
<effect name="BlockSkill">
<magicTypes>1</magicTypes>
@ -843,7 +841,6 @@
<value level="8">20253</value>
<value fromLevel="4" toLevel="8" fromSubLevel="1001" toSubLevel="1030">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>5</criticalChance>
</effect>
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912</allowedSkills>
@ -939,7 +936,6 @@
<value level="10">16349</value>
<value fromLevel="6" toLevel="10" fromSubLevel="1001" toSubLevel="1030">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>5</criticalChance>
</effect>
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912</allowedSkills>
@ -1038,7 +1034,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + (base / 100 * subIndex)}</value>
</criticalChance>
<pDefMod>
@ -1128,7 +1124,6 @@
<value level="11">25756</value>
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>5</criticalChance>
</effect>
<effect name="HealEffect">
<amount>-90</amount>
@ -5457,7 +5452,7 @@
<value fromLevel="2" toLevel="6" fromSubLevel="1001" toSubLevel="1030">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="6">15</value>
<value fromLevel="1" toLevel="6">10</value>
<value fromLevel="2" toLevel="6" fromSubLevel="2001" toSubLevel="2030">{base + (base / 100 * subIndex)}</value>
</criticalChance>
<pDefMod>

View File

@ -718,7 +718,6 @@
<value level="11">22603</value>
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>5</criticalChance>
<overHit>true</overHit>
</effect>
<effect name="PhysicalDefence">
@ -820,7 +819,7 @@
<ignoreShieldDefence>true</ignoreShieldDefence>
<chargeConsume>3</chargeConsume>
<criticalChance>
<value fromLevel="1" toLevel="11">3</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -915,7 +914,6 @@
</power>
<ignoreShieldDefence>true</ignoreShieldDefence>
<chargeConsume>3</chargeConsume>
<criticalChance>3</criticalChance>
<overHit>true</overHit>
</effect>
<effect name="KnockBack">
@ -1133,7 +1131,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
<BLUNT>0.9</BLUNT>
<SWORD>0.9</SWORD>
<POLE>1.5</POLE>
@ -1477,7 +1474,6 @@
<value level="10">17055</value>
</power>
<overHit>true</overHit>
<criticalChance>3</criticalChance>
<chargeConsume>3</chargeConsume>
</effect>
<effect name="Speed">
@ -1857,7 +1853,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="4">5</value>
<value fromLevel="1" toLevel="4">10</value>
<value fromLevel="1" toLevel="4" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -2229,7 +2225,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="5">5</value>
<value fromLevel="1" toLevel="5">10</value>
<value fromLevel="1" toLevel="5" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -2600,7 +2596,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>

View File

@ -796,7 +796,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="7">15</value>
<value fromLevel="1" toLevel="7">10</value>
<value fromLevel="3" toLevel="7" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -956,7 +956,6 @@
<value fromLevel="3" toLevel="7" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<ignoreShieldDefence>true</ignoreShieldDefence>
<criticalChance>15</criticalChance>
<overHit>true</overHit>
</effect>
<effect name="BlockActions">
@ -1213,7 +1212,6 @@
<value level="7">29911</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
</effects>
</skill>
@ -1357,7 +1355,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="7">15</value>
<value fromLevel="1" toLevel="7">10</value>
<value fromLevel="3" toLevel="7" fromSubLevel="3001" toSubLevel="3030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>0.7</pDefMod>
@ -1406,7 +1404,7 @@
<item>DUAL</item>
</weaponType>
</effect>
<effect name="CriticalRate">
<effect name="PhysicalSkillCriticalRate">
<amount>20</amount>
<mode>PER</mode>
</effect>

View File

@ -400,7 +400,7 @@
<amount>100</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>10</amount>
<mode>PER</mode>
</effect>

View File

@ -81,7 +81,7 @@
<amount>30</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">10</value>
<value level="2">11</value>
@ -1142,7 +1142,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -1242,7 +1242,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
<effect name="KnockBack">
<speed>500</speed>
@ -1336,7 +1335,7 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -1652,7 +1651,7 @@
<value fromLevel="4" toLevel="9" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="9">5</value>
<value fromLevel="1" toLevel="9">10</value>
<value fromLevel="4" toLevel="9" fromSubLevel="3001" toSubLevel="3030">{base + base / 100 * subIndex}</value>
</criticalChance>
<overHit>true</overHit>
@ -1753,7 +1752,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3030">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>
@ -1849,7 +1848,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -1941,7 +1940,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -2409,7 +2408,7 @@
<value fromLevel="5" toLevel="9" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="9">5</value>
<value fromLevel="1" toLevel="9">10</value>
<value fromLevel="7" toLevel="9" fromSubLevel="3001" toSubLevel="3030">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>
@ -2463,7 +2462,7 @@
<value fromLevel="1" toLevel="4" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="4">5</value>
<value fromLevel="1" toLevel="4">10</value>
<value fromLevel="1" toLevel="4" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>

View File

@ -411,7 +411,7 @@
<amount>15</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>15</amount>
<mode>PER</mode>
</effect>

View File

@ -559,7 +559,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
<pDefMod>
<value fromLevel="1" toLevel="11">1</value>
<value fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3030">{0.99 - 0.006 * (subIndex - 1)}</value>
@ -667,7 +666,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
<pDefMod>
<value fromLevel="1" toLevel="11">1</value>
<value fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3030">{0.99 - 0.006 * (subIndex - 1)}</value>
@ -3122,7 +3120,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="4">5</value>
<value fromLevel="1" toLevel="4">10</value>
<value fromLevel="1" toLevel="4" fromSubLevel="3001" toSubLevel="3030">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>

View File

@ -3004,7 +3004,7 @@
<icon>icon.skill3238</icon>
<operateType>P</operateType>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">0.55</value>
<value level="2">0.65</value>

View File

@ -1545,7 +1545,7 @@
<icon>icon.ensoul_big_p</icon>
<operateType>P</operateType>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value fromLevel="1" toLevel="15">{5+index}</value>
</amount>
@ -1841,7 +1841,7 @@
</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">3</value>
<value fromLevel="2" toLevel="3">4</value>
@ -2007,7 +2007,7 @@
</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">3</value>
<value fromLevel="2" toLevel="3">4</value>
@ -2675,7 +2675,7 @@
</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">3</value>
<value fromLevel="2" toLevel="3">4</value>

View File

@ -540,7 +540,7 @@
<icon>icon.skill0193</icon>
<operateType>P</operateType>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">5</value>
<value level="2">10</value>

View File

@ -1103,7 +1103,7 @@
</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">15</value>
<value level="2">16</value>

View File

@ -122,7 +122,7 @@
<value fromLevel="24" toLevel="28" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="28">15</value>
<value fromLevel="1" toLevel="28">10</value>
<value fromLevel="24" toLevel="28" fromSubLevel="3001" toSubLevel="3030">{base + base / 100 * subIndex}</value>
</criticalChance> <!-- Unconfirmed -->
<abnormalType>STUN</abnormalType>
@ -257,7 +257,7 @@
<pDefMod>0.7</pDefMod>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="27">15</value>
<value fromLevel="1" toLevel="27">10</value>
<value fromLevel="23" toLevel="27" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>
@ -427,7 +427,7 @@
</power>
<ignoreShieldDefence>true</ignoreShieldDefence>
<criticalChance>
<value fromLevel="1" toLevel="11">15</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<overHit>true</overHit>
@ -513,7 +513,7 @@
</power>
<pDefMod>0.5</pDefMod>
<criticalChance>
<value fromLevel="1" toLevel="16">15</value>
<value fromLevel="1" toLevel="16">10</value>
<value fromLevel="12" toLevel="11" fromSubLevel="2001" toSubLevel="2030">{base + base / 100 * subIndex}</value>
</criticalChance>
<overHit>true</overHit>
@ -588,7 +588,6 @@
<value level="10">42343</value>
<value fromLevel="6" toLevel="10" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>15</criticalChance>
</effect>
<effect name="PullBack">
<type>THROW_UP</type>
@ -687,7 +686,6 @@
<value level="14">52917</value>
<value fromLevel="10" toLevel="14" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>15</criticalChance> <!-- Unconfirmed -->
</effect>
<effect name="KnockBack">
<speed>400</speed>
@ -1733,7 +1731,7 @@
</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">10</value>
<value level="2">20</value>
@ -2458,7 +2456,7 @@
</power>
<pDefMod>0.5</pDefMod>
<criticalChance>
<value fromLevel="1" toLevel="4">15</value> <!-- Guessed -->
<value fromLevel="1" toLevel="4">10</value>
<value fromLevel="1" toLevel="4" fromSubLevel="1001" toSubLevel="1030">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>

View File

@ -52,7 +52,7 @@
<effectPoint>2</effectPoint>
<isMagic>3</isMagic>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>1</amount>
<mode>PER</mode>
</effect>

View File

@ -221,6 +221,7 @@ PhysicalDefence: P. Def stat.
PhysicalEvasion: P. Evasion stat.
PhysicalMute: Prevents the usage of physical skills. Shield Slam.
PhysicalShieldAngleAll: Causes the shield to block at 360 degree angle.
PhysicalSkillCriticalRate: Physical skill critical rate stat. (l2jmobius)
PhysicalSkillPower: Physical Skill Power stat (use only MUL).
PhysicalSoulAttack: Physical attack depending on souls.
PkCount: Increases PK kills.
@ -287,7 +288,7 @@ SilentMove: Prevents aggressive mobs from attacking you when entering aggression
SkillCriticalDamage: Skill critical damage stat.
SkillEvasion: Skill evasion stat.
SkillMastery: Activates double debuff or cooldown reset critical based on the specified stat.
SkillMasteryRate: Skill critical rate stat.
SkillMasteryRate: Bonus chance for skill mastery stat.
SkillPowerAdd: Adds set ammount of power to skills (use only DIFF). (l2jmobius)
SkillTurning: Stops target's casting.
SkillTurningOverTime: Stops target's casting at a fixed rate.

View File

@ -261,7 +261,7 @@ public class Formulas
statBonus = BaseStat.STR.calcBonus(creature);
}
final double rateBonus = creature.getStat().getValue(Stat.CRITICAL_RATE_SKILL, 1);
final double rateBonus = creature.getStat().getMul(Stat.CRITICAL_RATE_SKILL, 1);
double balanceMod = 1;
if (creature.isPlayable())
@ -269,7 +269,7 @@ public class Formulas
balanceMod = target.isPlayable() ? Config.PVP_PHYSICAL_SKILL_CRITICAL_CHANCE_MULTIPLIERS[creature.getActingPlayer().getClassId().getId()] : Config.PVE_PHYSICAL_SKILL_CRITICAL_CHANCE_MULTIPLIERS[creature.getActingPlayer().getClassId().getId()];
}
return (rate * statBonus * rateBonus * balanceMod) > Rnd.get(100);
return CommonUtil.constrain(rate * statBonus * rateBonus * balanceMod, 5, 90) > Rnd.get(100);
}
// Autoattack critical rate.

View File

@ -126,7 +126,7 @@ public enum Stat
MAGIC_CRITICAL_DAMAGE_ADD("mCritPowerAdd"),
SHIELD_DEFENCE_RATE("rShld", new ShieldDefenceRateFinalizer()),
CRITICAL_RATE("rCrit", new PCriticalRateFinalizer(), MathUtil::add, MathUtil::add, 0, 1),
CRITICAL_RATE_SKILL("rCritSkill", Stat::defaultValue, MathUtil::add, MathUtil::add, 0, 1),
CRITICAL_RATE_SKILL("physicalSkillCriticalRate"),
MAX_MAGIC_CRITICAL_RATE("maxMagicCritRate"),
MAGIC_CRITICAL_RATE("mCritRate", new MCritRateFinalizer()),
BLOW_RATE("blowRate"),

View File

@ -255,6 +255,7 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("PhysicalEvasion", PhysicalEvasion::new);
EffectHandler.getInstance().registerHandler("PhysicalMute", PhysicalMute::new);
EffectHandler.getInstance().registerHandler("PhysicalShieldAngleAll", PhysicalShieldAngleAll::new);
EffectHandler.getInstance().registerHandler("PhysicalSkillCriticalRate", PhysicalSkillCriticalRate::new);
EffectHandler.getInstance().registerHandler("PhysicalSkillPower", PhysicalSkillPower::new);
EffectHandler.getInstance().registerHandler("PhysicalSoulAttack", PhysicalSoulAttack::new);
EffectHandler.getInstance().registerHandler("PkCount", PkCount::new);

View File

@ -47,7 +47,7 @@ public class EnergyAttack extends AbstractEffect
public EnergyAttack(StatSet params)
{
_power = params.getDouble("power", 0);
_criticalChance = params.getInt("criticalChance", 0);
_criticalChance = params.getInt("criticalChance", 10);
_ignoreShieldDefence = params.getBoolean("ignoreShieldDefence", false);
_overHit = params.getBoolean("overHit", false);
_chargeConsume = params.getInt("chargeConsume", 0);

View File

@ -57,7 +57,7 @@ public class PhysicalAttack extends AbstractEffect
_power = params.getDouble("power", 0);
_pAtkMod = params.getDouble("pAtkMod", 1.0);
_pDefMod = params.getDouble("pDefMod", 1.0);
_criticalChance = params.getDouble("criticalChance", 0);
_criticalChance = params.getDouble("criticalChance", 10);
_ignoreShieldDefence = params.getBoolean("ignoreShieldDefence", false);
_overHit = params.getBoolean("overHit", false);
final String abnormals = params.getString("abnormalType", null);
@ -134,7 +134,7 @@ public class PhysicalAttack extends AbstractEffect
}
double damage = 1;
final boolean critical = Formulas.calcCrit(_criticalChance, effected, effector, skill);
final boolean critical = Formulas.calcCrit(_criticalChance, effector, effected, skill);
if (defence != -1)
{

View File

@ -50,7 +50,7 @@ public class PhysicalAttackWeaponBonus extends AbstractEffect
public PhysicalAttackWeaponBonus(StatSet params)
{
_power = params.getDouble("power", 0);
_criticalChance = params.getDouble("criticalChance", 0);
_criticalChance = params.getDouble("criticalChance", 10);
_ignoreShieldDefence = params.getBoolean("ignoreShieldDefence", false);
_overHit = params.getBoolean("overHit", false);
_pDefMod = params.getDouble("pDefMod", 1.0);

View File

@ -0,0 +1,31 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author NasSeKa
*/
public class PhysicalSkillCriticalRate extends AbstractStatPercentEffect
{
public PhysicalSkillCriticalRate(StatSet params)
{
super(params, Stat.CRITICAL_RATE_SKILL);
}
}

View File

@ -25,7 +25,7 @@
<amount>100</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>30</amount>
<mode>PER</mode>
</effect>
@ -75,7 +75,7 @@
<amount>500</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>50</amount>
<mode>PER</mode>
</effect>

View File

@ -644,7 +644,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + (base / 100 * subIndex)}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
<effect name="Speed">
<amount>-70</amount>
@ -748,7 +747,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + (base / 100 * subIndex)}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
<effect name="BlockSkill">
<magicTypes>1</magicTypes>
@ -843,7 +841,6 @@
<value level="8">20253</value>
<value fromLevel="4" toLevel="8" fromSubLevel="1001" toSubLevel="1020">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>5</criticalChance>
</effect>
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912</allowedSkills>
@ -939,7 +936,6 @@
<value level="10">16349</value>
<value fromLevel="6" toLevel="10" fromSubLevel="1001" toSubLevel="1020">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>5</criticalChance>
</effect>
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912</allowedSkills>
@ -1038,7 +1034,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2020">{base + (base / 100 * subIndex)}</value>
</criticalChance>
<pDefMod>
@ -1128,7 +1124,6 @@
<value level="11">25756</value>
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>5</criticalChance>
</effect>
<effect name="HealEffect">
<amount>-90</amount>
@ -5428,7 +5423,7 @@
<value fromLevel="2" toLevel="6" fromSubLevel="1001" toSubLevel="1020">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="6">15</value>
<value fromLevel="1" toLevel="6">10</value>
<value fromLevel="2" toLevel="6" fromSubLevel="2001" toSubLevel="2020">{base + (base / 100 * subIndex)}</value>
</criticalChance>
<pDefMod>

View File

@ -718,7 +718,6 @@
<value level="11">22603</value>
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>5</criticalChance>
<overHit>true</overHit>
</effect>
<effect name="PhysicalDefence">
@ -820,7 +819,7 @@
<ignoreShieldDefence>true</ignoreShieldDefence>
<chargeConsume>3</chargeConsume>
<criticalChance>
<value fromLevel="1" toLevel="11">3</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -915,7 +914,6 @@
</power>
<ignoreShieldDefence>true</ignoreShieldDefence>
<chargeConsume>3</chargeConsume>
<criticalChance>3</criticalChance>
<overHit>true</overHit>
</effect>
<effect name="KnockBack">
@ -1133,7 +1131,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
<BLUNT>0.9</BLUNT>
<SWORD>0.9</SWORD>
<POLE>1.5</POLE>
@ -1477,7 +1474,6 @@
<value level="10">17055</value>
</power>
<overHit>true</overHit>
<criticalChance>3</criticalChance>
<chargeConsume>3</chargeConsume>
</effect>
<effect name="Speed">
@ -1851,7 +1847,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="4">5</value>
<value fromLevel="1" toLevel="4">10</value>
<value fromLevel="1" toLevel="4" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -2197,7 +2193,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="5">5</value>
<value fromLevel="1" toLevel="5">10</value>
<value fromLevel="1" toLevel="5" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -2568,7 +2564,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>

View File

@ -809,7 +809,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="7">15</value>
<value fromLevel="1" toLevel="7">10</value>
<value fromLevel="3" toLevel="7" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -969,7 +969,6 @@
<value fromLevel="3" toLevel="7" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<ignoreShieldDefence>true</ignoreShieldDefence>
<criticalChance>15</criticalChance>
<overHit>true</overHit>
</effect>
<effect name="BlockActions">
@ -1226,7 +1225,6 @@
<value level="7">29911</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
</effects>
</skill>
@ -1369,7 +1367,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="7">15</value>
<value fromLevel="1" toLevel="7">10</value>
<value fromLevel="3" toLevel="7" fromSubLevel="3001" toSubLevel="3020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>0.7</pDefMod>
@ -1418,7 +1416,7 @@
<item>DUAL</item>
</weaponType>
</effect>
<effect name="CriticalRate">
<effect name="PhysicalSkillCriticalRate">
<amount>20</amount>
<mode>PER</mode>
</effect>

View File

@ -400,7 +400,7 @@
<amount>100</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>10</amount>
<mode>PER</mode>
</effect>

View File

@ -80,7 +80,7 @@
<amount>30</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">10</value>
<value level="2">11</value>
@ -1167,7 +1167,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -1267,7 +1267,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
<effect name="KnockBack">
<speed>500</speed>
@ -1361,7 +1360,7 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -1677,7 +1676,7 @@
<value fromLevel="4" toLevel="9" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="9">5</value>
<value fromLevel="1" toLevel="9">10</value>
<value fromLevel="4" toLevel="9" fromSubLevel="3001" toSubLevel="3020">{base + base / 100 * subIndex}</value>
</criticalChance>
<overHit>true</overHit>
@ -1778,7 +1777,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3020">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>
@ -1874,7 +1873,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -1966,7 +1965,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -2414,7 +2413,7 @@
<value fromLevel="5" toLevel="9" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="9">5</value>
<value fromLevel="1" toLevel="9">10</value>
<value fromLevel="7" toLevel="9" fromSubLevel="3001" toSubLevel="3020">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>
@ -2467,7 +2466,7 @@
<value fromLevel="1" toLevel="4" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="4">5</value>
<value fromLevel="1" toLevel="4">10</value>
<value fromLevel="1" toLevel="4" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>

View File

@ -411,7 +411,7 @@
<amount>15</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>15</amount>
<mode>PER</mode>
</effect>

View File

@ -559,7 +559,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
<pDefMod>
<value fromLevel="1" toLevel="11">1</value>
<value fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3020">{0.99 - 0.006 * (subIndex - 1)}</value>
@ -667,7 +666,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
<pDefMod>
<value fromLevel="1" toLevel="11">1</value>
<value fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3020">{0.99 - 0.006 * (subIndex - 1)}</value>
@ -3112,7 +3110,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="4">5</value>
<value fromLevel="1" toLevel="4">10</value>
<value fromLevel="1" toLevel="4" fromSubLevel="3001" toSubLevel="3020">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>

View File

@ -3004,7 +3004,7 @@
<icon>icon.skill3238</icon>
<operateType>P</operateType>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">0.55</value>
<value level="2">0.65</value>

View File

@ -1818,7 +1818,7 @@
<icon>icon.ensoul_big_p</icon>
<operateType>P</operateType>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value fromLevel="1" toLevel="15">{5+index}</value>
</amount>
@ -2114,7 +2114,7 @@
</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">3</value>
<value fromLevel="2" toLevel="3">4</value>
@ -2280,7 +2280,7 @@
</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">3</value>
<value fromLevel="2" toLevel="3">4</value>
@ -2948,7 +2948,7 @@
</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">3</value>
<value fromLevel="2" toLevel="3">4</value>

View File

@ -540,7 +540,7 @@
<icon>icon.skill0193</icon>
<operateType>P</operateType>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">5</value>
<value level="2">10</value>

View File

@ -1580,7 +1580,7 @@
<icon>icon.skill1532</icon>
<operateType>P</operateType>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>10</amount>
<mode>PER</mode>
</effect>
@ -1669,7 +1669,7 @@
<icon>icon.skill0193</icon>
<operateType>P</operateType>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">3</value>
<value level="2">6</value>

View File

@ -1103,7 +1103,7 @@
</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">15</value>
<value level="2">16</value>

View File

@ -222,7 +222,7 @@
<icon>BranchIcon.icon.g_bm_cloak_mineral_normal</icon>
<operateType>P</operateType>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">0.9</value>
<value level="2">1</value>
@ -1272,7 +1272,7 @@
<icon>BranchIcon.icon.g_bm_cloak_mineral_normal</icon>
<operateType>P</operateType>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">0.9</value>
<value level="2">1</value>

View File

@ -122,7 +122,7 @@
<value fromLevel="24" toLevel="28" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="28">15</value>
<value fromLevel="1" toLevel="28">10</value>
<value fromLevel="24" toLevel="28" fromSubLevel="3001" toSubLevel="3020">{base + base / 100 * subIndex}</value>
</criticalChance> <!-- Unconfirmed -->
<abnormalType>STUN</abnormalType>
@ -257,7 +257,7 @@
<pDefMod>0.7</pDefMod>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="27">15</value>
<value fromLevel="1" toLevel="27">10</value>
<value fromLevel="23" toLevel="27" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>
@ -427,7 +427,7 @@
</power>
<ignoreShieldDefence>true</ignoreShieldDefence>
<criticalChance>
<value fromLevel="1" toLevel="11">15</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<overHit>true</overHit>
@ -513,7 +513,7 @@
</power>
<pDefMod>0.5</pDefMod>
<criticalChance>
<value fromLevel="1" toLevel="16">15</value>
<value fromLevel="1" toLevel="16">10</value>
<value fromLevel="12" toLevel="11" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<overHit>true</overHit>
@ -588,7 +588,6 @@
<value level="10">42343</value>
<value fromLevel="6" toLevel="10" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>15</criticalChance>
</effect>
<effect name="PullBack">
<type>THROW_UP</type>
@ -687,7 +686,6 @@
<value level="14">52917</value>
<value fromLevel="10" toLevel="14" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>15</criticalChance> <!-- Unconfirmed -->
</effect>
<effect name="KnockBack">
<speed>400</speed>
@ -1733,7 +1731,7 @@
</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">10</value>
<value level="2">20</value>
@ -2458,7 +2456,7 @@
</power>
<pDefMod>0.5</pDefMod>
<criticalChance>
<value fromLevel="1" toLevel="4">15</value> <!-- Guessed -->
<value fromLevel="1" toLevel="4">10</value>
<value fromLevel="1" toLevel="4" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>

View File

@ -52,7 +52,7 @@
<effectPoint>2</effectPoint>
<isMagic>3</isMagic>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>1</amount>
<mode>PER</mode>
</effect>

View File

@ -225,6 +225,7 @@ PhysicalDefence: P. Def stat.
PhysicalEvasion: P. Evasion stat.
PhysicalMute: Prevents the usage of physical skills. Shield Slam.
PhysicalShieldAngleAll: Causes the shield to block at 360 degree angle.
PhysicalSkillCriticalRate: Physical skill critical rate stat. (l2jmobius)
PhysicalSkillPower: Physical Skill Power stat (use only MUL).
PhysicalSoulAttack: Physical attack depending on souls.
PkCount: Increases PK kills.
@ -292,7 +293,7 @@ SilentMove: Prevents aggressive mobs from attacking you when entering aggression
SkillCriticalDamage: Skill critical damage stat.
SkillEvasion: Skill evasion stat.
SkillMastery: Activates double debuff or cooldown reset critical based on the specified stat.
SkillMasteryRate: Skill critical rate stat.
SkillMasteryRate: Bonus chance for skill mastery stat.
SkillPowerAdd: Adds set ammount of power to skills (use only DIFF). (l2jmobius)
SkillTurning: Stops target's casting.
SkillTurningOverTime: Stops target's casting at a fixed rate.

View File

@ -261,7 +261,7 @@ public class Formulas
statBonus = BaseStat.STR.calcBonus(creature);
}
final double rateBonus = creature.getStat().getValue(Stat.CRITICAL_RATE_SKILL, 1);
final double rateBonus = creature.getStat().getMul(Stat.CRITICAL_RATE_SKILL, 1);
double balanceMod = 1;
if (creature.isPlayable())
@ -269,7 +269,7 @@ public class Formulas
balanceMod = target.isPlayable() ? Config.PVP_PHYSICAL_SKILL_CRITICAL_CHANCE_MULTIPLIERS[creature.getActingPlayer().getClassId().getId()] : Config.PVE_PHYSICAL_SKILL_CRITICAL_CHANCE_MULTIPLIERS[creature.getActingPlayer().getClassId().getId()];
}
return (rate * statBonus * rateBonus * balanceMod) > Rnd.get(100);
return CommonUtil.constrain(rate * statBonus * rateBonus * balanceMod, 5, 90) > Rnd.get(100);
}
// Autoattack critical rate.

View File

@ -126,7 +126,7 @@ public enum Stat
MAGIC_CRITICAL_DAMAGE_ADD("mCritPowerAdd"),
SHIELD_DEFENCE_RATE("rShld", new ShieldDefenceRateFinalizer()),
CRITICAL_RATE("rCrit", new PCriticalRateFinalizer(), MathUtil::add, MathUtil::add, 0, 1),
CRITICAL_RATE_SKILL("rCritSkill", Stat::defaultValue, MathUtil::add, MathUtil::add, 0, 1),
CRITICAL_RATE_SKILL("physicalSkillCriticalRate"),
MAX_MAGIC_CRITICAL_RATE("maxMagicCritRate"),
MAGIC_CRITICAL_RATE("mCritRate", new MCritRateFinalizer()),
BLOW_RATE("blowRate"),

View File

@ -259,6 +259,7 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("PhysicalEvasion", PhysicalEvasion::new);
EffectHandler.getInstance().registerHandler("PhysicalMute", PhysicalMute::new);
EffectHandler.getInstance().registerHandler("PhysicalShieldAngleAll", PhysicalShieldAngleAll::new);
EffectHandler.getInstance().registerHandler("PhysicalSkillCriticalRate", PhysicalSkillCriticalRate::new);
EffectHandler.getInstance().registerHandler("PhysicalSkillPower", PhysicalSkillPower::new);
EffectHandler.getInstance().registerHandler("PhysicalSoulAttack", PhysicalSoulAttack::new);
EffectHandler.getInstance().registerHandler("PkCount", PkCount::new);

View File

@ -47,7 +47,7 @@ public class EnergyAttack extends AbstractEffect
public EnergyAttack(StatSet params)
{
_power = params.getDouble("power", 0);
_criticalChance = params.getInt("criticalChance", 0);
_criticalChance = params.getInt("criticalChance", 10);
_ignoreShieldDefence = params.getBoolean("ignoreShieldDefence", false);
_overHit = params.getBoolean("overHit", false);
_chargeConsume = params.getInt("chargeConsume", 0);

View File

@ -57,7 +57,7 @@ public class PhysicalAttack extends AbstractEffect
_power = params.getDouble("power", 0);
_pAtkMod = params.getDouble("pAtkMod", 1.0);
_pDefMod = params.getDouble("pDefMod", 1.0);
_criticalChance = params.getDouble("criticalChance", 0);
_criticalChance = params.getDouble("criticalChance", 10);
_ignoreShieldDefence = params.getBoolean("ignoreShieldDefence", false);
_overHit = params.getBoolean("overHit", false);
final String abnormals = params.getString("abnormalType", null);
@ -134,7 +134,7 @@ public class PhysicalAttack extends AbstractEffect
}
double damage = 1;
final boolean critical = Formulas.calcCrit(_criticalChance, effected, effector, skill);
final boolean critical = Formulas.calcCrit(_criticalChance, effector, effected, skill);
if (defence != -1)
{

View File

@ -50,7 +50,7 @@ public class PhysicalAttackWeaponBonus extends AbstractEffect
public PhysicalAttackWeaponBonus(StatSet params)
{
_power = params.getDouble("power", 0);
_criticalChance = params.getDouble("criticalChance", 0);
_criticalChance = params.getDouble("criticalChance", 10);
_ignoreShieldDefence = params.getBoolean("ignoreShieldDefence", false);
_overHit = params.getBoolean("overHit", false);
_pDefMod = params.getDouble("pDefMod", 1.0);

View File

@ -0,0 +1,31 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.effecthandlers;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.stats.Stat;
/**
* @author NasSeKa
*/
public class PhysicalSkillCriticalRate extends AbstractStatPercentEffect
{
public PhysicalSkillCriticalRate(StatSet params)
{
super(params, Stat.CRITICAL_RATE_SKILL);
}
}

View File

@ -25,7 +25,7 @@
<amount>100</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>30</amount>
<mode>PER</mode>
</effect>
@ -75,7 +75,7 @@
<amount>500</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>50</amount>
<mode>PER</mode>
</effect>
@ -128,10 +128,6 @@
<amount>30</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<amount>30</amount>
<mode>PER</mode>
</effect>
<effect name="AttackTrait">
<DRAGON_WEAKNESS>100</DRAGON_WEAKNESS>
</effect>

View File

@ -659,7 +659,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + (base / 100 * subIndex)}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
<effect name="PhysicalDefence" fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3020">
<amount>
@ -755,7 +754,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + (base / 100 * subIndex)}</value>
</power>
<overHit>true</overHit>
<criticalChance>60</criticalChance>
</effect>
<effect name="PhysicalAttackSpeed">
<amount>-20</amount>
@ -849,7 +847,6 @@
<value level="8">20253</value>
<value fromLevel="4" toLevel="8" fromSubLevel="1001" toSubLevel="1020">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>5</criticalChance>
</effect>
<effect name="PhysicalDefence" fromLevel="4" toLevel="8" fromSubLevel="3001" toSubLevel="3020">
<amount>
@ -941,7 +938,6 @@
<value level="10">16349</value>
<value fromLevel="6" toLevel="10" fromSubLevel="1001" toSubLevel="1020">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>5</criticalChance>
</effect>
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912</allowedSkills>
@ -1041,7 +1037,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2020">{base + (base / 100 * subIndex)}</value>
</criticalChance>
<pDefMod>
@ -1134,7 +1130,6 @@
<value level="11">25756</value>
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>5</criticalChance>
</effect>
<effect name="PhysicalDefence" fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3020">
<amount>
@ -6023,7 +6018,7 @@
<value fromLevel="2" toLevel="6" fromSubLevel="1001" toSubLevel="1020">{base + (base / 100 * subIndex)}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="6">15</value>
<value fromLevel="1" toLevel="6">10</value>
<value fromLevel="2" toLevel="6" fromSubLevel="2001" toSubLevel="2020">{base + (base / 100 * subIndex)}</value>
</criticalChance>
<pDefMod>

View File

@ -723,7 +723,6 @@
<value level="11">22603</value>
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>5</criticalChance>
<overHit>true</overHit>
</effect>
<effect name="PhysicalDefence">
@ -825,7 +824,7 @@
<ignoreShieldDefence>true</ignoreShieldDefence>
<chargeConsume>3</chargeConsume>
<criticalChance>
<value fromLevel="1" toLevel="11">3</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -920,7 +919,6 @@
</power>
<ignoreShieldDefence>true</ignoreShieldDefence>
<chargeConsume>3</chargeConsume>
<criticalChance>3</criticalChance>
<overHit>true</overHit>
</effect>
<effect name="KnockBack">
@ -1138,7 +1136,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
<BLUNT>0.9</BLUNT>
<SWORD>0.9</SWORD>
<POLE>1.5</POLE>
@ -1482,7 +1479,6 @@
<value level="10">17055</value>
</power>
<overHit>true</overHit>
<criticalChance>3</criticalChance>
<chargeConsume>3</chargeConsume>
</effect>
<effect name="Speed">
@ -1856,7 +1852,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="4">5</value>
<value fromLevel="1" toLevel="4">10</value>
<value fromLevel="1" toLevel="4" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -2202,7 +2198,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="5">5</value>
<value fromLevel="1" toLevel="5">10</value>
<value fromLevel="1" toLevel="5" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -2573,7 +2569,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>

View File

@ -809,7 +809,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="7">15</value>
<value fromLevel="1" toLevel="7">10</value>
<value fromLevel="3" toLevel="7" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -969,7 +969,6 @@
<value fromLevel="3" toLevel="7" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<ignoreShieldDefence>true</ignoreShieldDefence>
<criticalChance>15</criticalChance>
<overHit>true</overHit>
</effect>
<effect name="BlockActions">
@ -1225,11 +1224,9 @@
<value level="7">29911</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
<effect name="EnergyAttack">
<chargeConsume>3</chargeConsume>
<criticalChance>15</criticalChance>
<power>
<value level="1">9180</value>
<value level="2">9710</value>
@ -1382,7 +1379,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="7">15</value>
<value fromLevel="1" toLevel="7">10</value>
<value fromLevel="3" toLevel="7" fromSubLevel="3001" toSubLevel="3020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>0.7</pDefMod>
@ -1431,7 +1428,7 @@
<item>DUAL</item>
</weaponType>
</effect>
<effect name="CriticalRate">
<effect name="PhysicalSkillCriticalRate">
<amount>20</amount>
<mode>PER</mode>
</effect>

View File

@ -400,7 +400,7 @@
<amount>100</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>10</amount>
<mode>PER</mode>
</effect>

View File

@ -80,7 +80,7 @@
<amount>30</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">10</value>
<value level="2">11</value>
@ -890,7 +890,7 @@
<amount>100</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>10</amount>
<mode>PER</mode>
</effect>
@ -1229,7 +1229,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -1332,7 +1332,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
</effect>
<effect name="KnockBack">
<speed>500</speed>
@ -1426,7 +1425,7 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -1742,7 +1741,7 @@
<value fromLevel="4" toLevel="9" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="9">5</value>
<value fromLevel="1" toLevel="9">10</value>
<value fromLevel="4" toLevel="9" fromSubLevel="3001" toSubLevel="3020">{base + base / 100 * subIndex}</value>
</criticalChance>
<overHit>true</overHit>
@ -1843,7 +1842,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3020">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>
@ -1939,7 +1938,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -2031,7 +2030,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="11">5</value>
<value fromLevel="1" toLevel="11">10</value>
<value fromLevel="7" toLevel="11" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>
@ -2479,7 +2478,7 @@
<value fromLevel="5" toLevel="9" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="9">5</value>
<value fromLevel="1" toLevel="9">10</value>
<value fromLevel="7" toLevel="9" fromSubLevel="3001" toSubLevel="3020">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>
@ -2532,7 +2531,7 @@
<value fromLevel="1" toLevel="4" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<criticalChance>
<value fromLevel="1" toLevel="4">5</value>
<value fromLevel="1" toLevel="4">10</value>
<value fromLevel="1" toLevel="4" fromSubLevel="2001" toSubLevel="2020">{base + base / 100 * subIndex}</value>
</criticalChance>
<pDefMod>

View File

@ -411,7 +411,7 @@
<amount>15</amount>
<mode>PER</mode>
</effect>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>15</amount>
<mode>PER</mode>
</effect>

View File

@ -570,7 +570,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
<pDefMod>
<value fromLevel="1" toLevel="11">1</value>
<value fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3020">{0.99 - 0.006 * (subIndex - 1)}</value>
@ -686,7 +685,6 @@
<value fromLevel="7" toLevel="11" fromSubLevel="1001" toSubLevel="1020">{base + base / 100 * subIndex}</value>
</power>
<overHit>true</overHit>
<criticalChance>5</criticalChance>
<pDefMod>
<value fromLevel="1" toLevel="11">1</value>
<value fromLevel="7" toLevel="11" fromSubLevel="3001" toSubLevel="3020">{0.99 - 0.006 * (subIndex - 1)}</value>
@ -3281,7 +3279,7 @@
</power>
<overHit>true</overHit>
<criticalChance>
<value fromLevel="1" toLevel="4">5</value>
<value fromLevel="1" toLevel="4">10</value>
<value fromLevel="1" toLevel="4" fromSubLevel="3001" toSubLevel="3020">{base + base / 100 * subIndex}</value>
</criticalChance>
</effect>

View File

@ -3004,7 +3004,7 @@
<icon>icon.skill3238</icon>
<operateType>P</operateType>
<effects>
<effect name="SkillMasteryRate">
<effect name="PhysicalSkillCriticalRate">
<amount>
<value level="1">0.55</value>
<value level="2">0.65</value>

Some files were not shown because too many files have changed in this diff Show More