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