Changed magic success calculation formula.

This commit is contained in:
MobiusDev
2018-12-19 07:56:43 +00:00
parent 2b1f12f935
commit 027cd3cc12
10 changed files with 210 additions and 50 deletions

View File

@@ -148,7 +148,7 @@ public final class Formulas
{ {
if (attacker.isPlayer()) if (attacker.isPlayer())
{ {
if (calcMagicSuccess(attacker, target, skill) && ((target.getLevel() - attacker.getLevel()) <= 9)) if (calcMagicSuccess(attacker, target, skill))
{ {
if (skill.hasEffectType(L2EffectType.HP_DRAIN)) if (skill.hasEffectType(L2EffectType.HP_DRAIN))
{ {
@@ -755,9 +755,25 @@ public final class Formulas
public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill) public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill)
{ {
// FIXME: Fix this LevelMod Formula. final int mAccDiff = attacker.getMagicAccuracy() - target.getMagicEvasionRate();
final int lvlDifference = (target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel())); int mAccModifier = 100;
final double lvlModifier = Math.pow(1.3, lvlDifference); if (mAccDiff > -20)
{
mAccModifier = 2;
}
else if (mAccDiff > -25)
{
mAccModifier = 30;
}
else if (mAccDiff > -30)
{
mAccModifier = 60;
}
else if (mAccDiff > -35)
{
mAccModifier = 90;
}
float targetModifier = 1; float targetModifier = 1;
if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3)) if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{ {
@@ -773,7 +789,7 @@ public final class Formulas
} }
// general magic resist // general magic resist
final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1); final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1);
final int rate = 100 - Math.round((float) (lvlModifier * targetModifier * resModifier)); final int rate = 100 - Math.round((float) (mAccModifier * targetModifier * resModifier));
return (Rnd.get(100) < rate); return (Rnd.get(100) < rate);
} }

View File

@@ -148,7 +148,7 @@ public final class Formulas
{ {
if (attacker.isPlayer()) if (attacker.isPlayer())
{ {
if (calcMagicSuccess(attacker, target, skill) && ((target.getLevel() - attacker.getLevel()) <= 9)) if (calcMagicSuccess(attacker, target, skill))
{ {
if (skill.hasEffectType(L2EffectType.HP_DRAIN)) if (skill.hasEffectType(L2EffectType.HP_DRAIN))
{ {
@@ -755,9 +755,25 @@ public final class Formulas
public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill) public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill)
{ {
// FIXME: Fix this LevelMod Formula. final int mAccDiff = attacker.getMagicAccuracy() - target.getMagicEvasionRate();
final int lvlDifference = (target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel())); int mAccModifier = 100;
final double lvlModifier = Math.pow(1.3, lvlDifference); if (mAccDiff > -20)
{
mAccModifier = 2;
}
else if (mAccDiff > -25)
{
mAccModifier = 30;
}
else if (mAccDiff > -30)
{
mAccModifier = 60;
}
else if (mAccDiff > -35)
{
mAccModifier = 90;
}
float targetModifier = 1; float targetModifier = 1;
if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3)) if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{ {
@@ -773,7 +789,7 @@ public final class Formulas
} }
// general magic resist // general magic resist
final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1); final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1);
final int rate = 100 - Math.round((float) (lvlModifier * targetModifier * resModifier)); final int rate = 100 - Math.round((float) (mAccModifier * targetModifier * resModifier));
return (Rnd.get(100) < rate); return (Rnd.get(100) < rate);
} }

View File

@@ -148,7 +148,7 @@ public final class Formulas
{ {
if (attacker.isPlayer()) if (attacker.isPlayer())
{ {
if (calcMagicSuccess(attacker, target, skill) && ((target.getLevel() - attacker.getLevel()) <= 9)) if (calcMagicSuccess(attacker, target, skill))
{ {
if (skill.hasEffectType(L2EffectType.HP_DRAIN)) if (skill.hasEffectType(L2EffectType.HP_DRAIN))
{ {
@@ -755,9 +755,25 @@ public final class Formulas
public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill) public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill)
{ {
// FIXME: Fix this LevelMod Formula. final int mAccDiff = attacker.getMagicAccuracy() - target.getMagicEvasionRate();
final int lvlDifference = (target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel())); int mAccModifier = 100;
final double lvlModifier = Math.pow(1.3, lvlDifference); if (mAccDiff > -20)
{
mAccModifier = 2;
}
else if (mAccDiff > -25)
{
mAccModifier = 30;
}
else if (mAccDiff > -30)
{
mAccModifier = 60;
}
else if (mAccDiff > -35)
{
mAccModifier = 90;
}
float targetModifier = 1; float targetModifier = 1;
if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3)) if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{ {
@@ -773,7 +789,7 @@ public final class Formulas
} }
// general magic resist // general magic resist
final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1); final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1);
final int rate = 100 - Math.round((float) (lvlModifier * targetModifier * resModifier)); final int rate = 100 - Math.round((float) (mAccModifier * targetModifier * resModifier));
return (Rnd.get(100) < rate); return (Rnd.get(100) < rate);
} }

View File

@@ -148,7 +148,7 @@ public final class Formulas
{ {
if (attacker.isPlayer()) if (attacker.isPlayer())
{ {
if (calcMagicSuccess(attacker, target, skill) && ((target.getLevel() - attacker.getLevel()) <= 9)) if (calcMagicSuccess(attacker, target, skill))
{ {
if (skill.hasEffectType(L2EffectType.HP_DRAIN)) if (skill.hasEffectType(L2EffectType.HP_DRAIN))
{ {
@@ -755,9 +755,25 @@ public final class Formulas
public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill) public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill)
{ {
// FIXME: Fix this LevelMod Formula. final int mAccDiff = attacker.getMagicAccuracy() - target.getMagicEvasionRate();
final int lvlDifference = (target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel())); int mAccModifier = 100;
final double lvlModifier = Math.pow(1.3, lvlDifference); if (mAccDiff > -20)
{
mAccModifier = 2;
}
else if (mAccDiff > -25)
{
mAccModifier = 30;
}
else if (mAccDiff > -30)
{
mAccModifier = 60;
}
else if (mAccDiff > -35)
{
mAccModifier = 90;
}
float targetModifier = 1; float targetModifier = 1;
if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3)) if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{ {
@@ -773,7 +789,7 @@ public final class Formulas
} }
// general magic resist // general magic resist
final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1); final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1);
final int rate = 100 - Math.round((float) (lvlModifier * targetModifier * resModifier)); final int rate = 100 - Math.round((float) (mAccModifier * targetModifier * resModifier));
return (Rnd.get(100) < rate); return (Rnd.get(100) < rate);
} }

View File

@@ -148,7 +148,7 @@ public final class Formulas
{ {
if (attacker.isPlayer()) if (attacker.isPlayer())
{ {
if (calcMagicSuccess(attacker, target, skill) && ((target.getLevel() - attacker.getLevel()) <= 9)) if (calcMagicSuccess(attacker, target, skill))
{ {
if (skill.hasEffectType(L2EffectType.HP_DRAIN)) if (skill.hasEffectType(L2EffectType.HP_DRAIN))
{ {
@@ -755,9 +755,25 @@ public final class Formulas
public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill) public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill)
{ {
// FIXME: Fix this LevelMod Formula. final int mAccDiff = attacker.getMagicAccuracy() - target.getMagicEvasionRate();
final int lvlDifference = (target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel())); int mAccModifier = 100;
final double lvlModifier = Math.pow(1.3, lvlDifference); if (mAccDiff > -20)
{
mAccModifier = 2;
}
else if (mAccDiff > -25)
{
mAccModifier = 30;
}
else if (mAccDiff > -30)
{
mAccModifier = 60;
}
else if (mAccDiff > -35)
{
mAccModifier = 90;
}
float targetModifier = 1; float targetModifier = 1;
if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3)) if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{ {
@@ -773,7 +789,7 @@ public final class Formulas
} }
// general magic resist // general magic resist
final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1); final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1);
final int rate = 100 - Math.round((float) (lvlModifier * targetModifier * resModifier)); final int rate = 100 - Math.round((float) (mAccModifier * targetModifier * resModifier));
return (Rnd.get(100) < rate); return (Rnd.get(100) < rate);
} }

View File

@@ -148,7 +148,7 @@ public final class Formulas
{ {
if (attacker.isPlayer()) if (attacker.isPlayer())
{ {
if (calcMagicSuccess(attacker, target, skill) && ((target.getLevel() - attacker.getLevel()) <= 9)) if (calcMagicSuccess(attacker, target, skill))
{ {
if (skill.hasEffectType(L2EffectType.HP_DRAIN)) if (skill.hasEffectType(L2EffectType.HP_DRAIN))
{ {
@@ -755,9 +755,25 @@ public final class Formulas
public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill) public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill)
{ {
// FIXME: Fix this LevelMod Formula. final int mAccDiff = attacker.getMagicAccuracy() - target.getMagicEvasionRate();
final int lvlDifference = (target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel())); int mAccModifier = 100;
final double lvlModifier = Math.pow(1.3, lvlDifference); if (mAccDiff > -20)
{
mAccModifier = 2;
}
else if (mAccDiff > -25)
{
mAccModifier = 30;
}
else if (mAccDiff > -30)
{
mAccModifier = 60;
}
else if (mAccDiff > -35)
{
mAccModifier = 90;
}
float targetModifier = 1; float targetModifier = 1;
if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3)) if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{ {
@@ -773,7 +789,7 @@ public final class Formulas
} }
// general magic resist // general magic resist
final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1); final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1);
final int rate = 100 - Math.round((float) (lvlModifier * targetModifier * resModifier)); final int rate = 100 - Math.round((float) (mAccModifier * targetModifier * resModifier));
return (Rnd.get(100) < rate); return (Rnd.get(100) < rate);
} }

View File

@@ -148,7 +148,7 @@ public final class Formulas
{ {
if (attacker.isPlayer()) if (attacker.isPlayer())
{ {
if (calcMagicSuccess(attacker, target, skill) && ((target.getLevel() - attacker.getLevel()) <= 9)) if (calcMagicSuccess(attacker, target, skill))
{ {
if (skill.hasEffectType(L2EffectType.HP_DRAIN)) if (skill.hasEffectType(L2EffectType.HP_DRAIN))
{ {
@@ -755,9 +755,25 @@ public final class Formulas
public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill) public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill)
{ {
// FIXME: Fix this LevelMod Formula. final int mAccDiff = attacker.getMagicAccuracy() - target.getMagicEvasionRate();
final int lvlDifference = (target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel())); int mAccModifier = 100;
final double lvlModifier = Math.pow(1.3, lvlDifference); if (mAccDiff > -20)
{
mAccModifier = 2;
}
else if (mAccDiff > -25)
{
mAccModifier = 30;
}
else if (mAccDiff > -30)
{
mAccModifier = 60;
}
else if (mAccDiff > -35)
{
mAccModifier = 90;
}
float targetModifier = 1; float targetModifier = 1;
if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3)) if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{ {
@@ -773,7 +789,7 @@ public final class Formulas
} }
// general magic resist // general magic resist
final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1); final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1);
final int rate = 100 - Math.round((float) (lvlModifier * targetModifier * resModifier)); final int rate = 100 - Math.round((float) (mAccModifier * targetModifier * resModifier));
return (Rnd.get(100) < rate); return (Rnd.get(100) < rate);
} }

View File

@@ -148,7 +148,7 @@ public final class Formulas
{ {
if (attacker.isPlayer()) if (attacker.isPlayer())
{ {
if (calcMagicSuccess(attacker, target, skill) && ((target.getLevel() - attacker.getLevel()) <= 9)) if (calcMagicSuccess(attacker, target, skill))
{ {
if (skill.hasEffectType(L2EffectType.HP_DRAIN)) if (skill.hasEffectType(L2EffectType.HP_DRAIN))
{ {
@@ -755,9 +755,25 @@ public final class Formulas
public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill) public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill)
{ {
// FIXME: Fix this LevelMod Formula. final int mAccDiff = attacker.getMagicAccuracy() - target.getMagicEvasionRate();
final int lvlDifference = (target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel())); int mAccModifier = 100;
final double lvlModifier = Math.pow(1.3, lvlDifference); if (mAccDiff > -20)
{
mAccModifier = 2;
}
else if (mAccDiff > -25)
{
mAccModifier = 30;
}
else if (mAccDiff > -30)
{
mAccModifier = 60;
}
else if (mAccDiff > -35)
{
mAccModifier = 90;
}
float targetModifier = 1; float targetModifier = 1;
if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3)) if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{ {
@@ -773,7 +789,7 @@ public final class Formulas
} }
// general magic resist // general magic resist
final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1); final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1);
final int rate = 100 - Math.round((float) (lvlModifier * targetModifier * resModifier)); final int rate = 100 - Math.round((float) (mAccModifier * targetModifier * resModifier));
return (Rnd.get(100) < rate); return (Rnd.get(100) < rate);
} }

View File

@@ -148,7 +148,7 @@ public final class Formulas
{ {
if (attacker.isPlayer()) if (attacker.isPlayer())
{ {
if (calcMagicSuccess(attacker, target, skill) && ((target.getLevel() - attacker.getLevel()) <= 9)) if (calcMagicSuccess(attacker, target, skill))
{ {
if (skill.hasEffectType(L2EffectType.HP_DRAIN)) if (skill.hasEffectType(L2EffectType.HP_DRAIN))
{ {
@@ -755,9 +755,25 @@ public final class Formulas
public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill) public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill)
{ {
// FIXME: Fix this LevelMod Formula. final int mAccDiff = attacker.getMagicAccuracy() - target.getMagicEvasionRate();
final int lvlDifference = (target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel())); int mAccModifier = 100;
final double lvlModifier = Math.pow(1.3, lvlDifference); if (mAccDiff > -20)
{
mAccModifier = 2;
}
else if (mAccDiff > -25)
{
mAccModifier = 30;
}
else if (mAccDiff > -30)
{
mAccModifier = 60;
}
else if (mAccDiff > -35)
{
mAccModifier = 90;
}
float targetModifier = 1; float targetModifier = 1;
if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3)) if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{ {
@@ -773,7 +789,7 @@ public final class Formulas
} }
// general magic resist // general magic resist
final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1); final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1);
final int rate = 100 - Math.round((float) (lvlModifier * targetModifier * resModifier)); final int rate = 100 - Math.round((float) (mAccModifier * targetModifier * resModifier));
return (Rnd.get(100) < rate); return (Rnd.get(100) < rate);
} }

View File

@@ -148,7 +148,7 @@ public final class Formulas
{ {
if (attacker.isPlayer()) if (attacker.isPlayer())
{ {
if (calcMagicSuccess(attacker, target, skill) && ((target.getLevel() - attacker.getLevel()) <= 9)) if (calcMagicSuccess(attacker, target, skill))
{ {
if (skill.hasEffectType(L2EffectType.HP_DRAIN)) if (skill.hasEffectType(L2EffectType.HP_DRAIN))
{ {
@@ -755,9 +755,25 @@ public final class Formulas
public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill) public static boolean calcMagicSuccess(L2Character attacker, L2Character target, Skill skill)
{ {
// FIXME: Fix this LevelMod Formula. final int mAccDiff = attacker.getMagicAccuracy() - target.getMagicEvasionRate();
final int lvlDifference = (target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel())); int mAccModifier = 100;
final double lvlModifier = Math.pow(1.3, lvlDifference); if (mAccDiff > -20)
{
mAccModifier = 2;
}
else if (mAccDiff > -25)
{
mAccModifier = 30;
}
else if (mAccDiff > -30)
{
mAccModifier = 60;
}
else if (mAccDiff > -35)
{
mAccModifier = 90;
}
float targetModifier = 1; float targetModifier = 1;
if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3)) if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{ {
@@ -773,7 +789,7 @@ public final class Formulas
} }
// general magic resist // general magic resist
final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1); final double resModifier = target.getStat().getValue(Stats.MAGIC_SUCCESS_RES, 1);
final int rate = 100 - Math.round((float) (lvlModifier * targetModifier * resModifier)); final int rate = 100 - Math.round((float) (mAccModifier * targetModifier * resModifier));
return (Rnd.get(100) < rate); return (Rnd.get(100) < rate);
} }