Calculate magic success by target level and skill magic level configuration.

This commit is contained in:
MobiusDevelopment 2022-05-05 08:35:30 +00:00
parent c286ac8a4b
commit 0b80d2b80a
78 changed files with 182 additions and 32 deletions

View File

@ -157,6 +157,10 @@ VampiricAttackWorkWithSkills = True
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = True
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -189,6 +189,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1705,6 +1706,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -806,7 +806,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -157,6 +157,10 @@ VampiricAttackWorkWithSkills = True
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = True
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -196,6 +196,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1725,6 +1726,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -806,7 +806,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -157,6 +157,10 @@ VampiricAttackWorkWithSkills = True
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = True
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -196,6 +196,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1738,6 +1739,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -806,7 +806,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -157,6 +157,10 @@ VampiricAttackWorkWithSkills = True
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = True
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -196,6 +196,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1725,6 +1726,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -806,7 +806,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -157,6 +157,10 @@ VampiricAttackWorkWithSkills = True
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = True
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -203,6 +203,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1734,6 +1735,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -806,7 +806,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -157,6 +157,10 @@ VampiricAttackWorkWithSkills = True
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = True
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -203,6 +203,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1741,6 +1742,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -806,7 +806,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -161,6 +161,10 @@ VampiricAttackWorkWithSkills = True
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = True
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -204,6 +204,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1776,6 +1777,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -806,7 +806,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -161,6 +161,10 @@ VampiricAttackWorkWithSkills = True
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = True
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -204,6 +204,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1784,6 +1785,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -806,7 +806,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -161,6 +161,10 @@ VampiricAttackWorkWithSkills = True
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = True
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = False
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -197,6 +197,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1757,6 +1758,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", false);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -806,7 +806,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -161,6 +161,10 @@ VampiricAttackWorkWithSkills = True
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = True
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = False
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -197,6 +197,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1759,6 +1760,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", false);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -806,7 +806,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -161,6 +161,10 @@ VampiricAttackWorkWithSkills = True
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = True
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = False
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -197,6 +197,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1759,6 +1760,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", false);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -806,7 +806,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -161,6 +161,10 @@ VampiricAttackWorkWithSkills = True
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = True
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = False
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -197,6 +197,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1759,6 +1760,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", false);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -812,7 +812,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -169,6 +169,10 @@ FakeDeathUntarget = False
# Stand when fake death is active and taking damage.
FakeDeathDamageStand = True
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -181,6 +181,7 @@ public class Config
public static long EFFECT_TICK_RATIO;
public static boolean FAKE_DEATH_UNTARGET;
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean ALLOW_CLASS_MASTERS;
public static ClassMasterSettings CLASS_MASTER_SETTINGS;
public static boolean ALLOW_ENTIRE_TREE;
@ -1690,6 +1691,7 @@ public class Config
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", false);
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", true);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
ALLOW_CLASS_MASTERS = characterConfig.getBoolean("AllowClassMasters", false);
ALLOW_ENTIRE_TREE = characterConfig.getBoolean("AllowEntireTree", false);
ALTERNATE_CLASS_MASTER = characterConfig.getBoolean("AlternateClassMaster", false);

View File

@ -1398,9 +1398,7 @@ public class Formulas
return true;
}
// FIXME: Fix this LevelMod Formula.
final int levelDifference = (target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
final double lvlModifier = Math.pow(1.3, levelDifference);
final double lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
float targetModifier = 1;
if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -169,6 +169,10 @@ FakeDeathUntarget = False
# Stand when fake death is active and taking damage.
FakeDeathDamageStand = True
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -185,6 +185,7 @@ public class Config
public static long EFFECT_TICK_RATIO;
public static boolean FAKE_DEATH_UNTARGET;
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean ALLOW_CLASS_MASTERS;
public static ClassMasterSettings CLASS_MASTER_SETTINGS;
public static boolean ALLOW_ENTIRE_TREE;
@ -1747,6 +1748,7 @@ public class Config
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", false);
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", true);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
ALLOW_CLASS_MASTERS = characterConfig.getBoolean("AllowClassMasters", false);
ALLOW_ENTIRE_TREE = characterConfig.getBoolean("AllowEntireTree", false);
ALTERNATE_CLASS_MASTER = characterConfig.getBoolean("AlternateClassMaster", false);

View File

@ -1431,9 +1431,7 @@ public class Formulas
return true;
}
// FIXME: Fix this LevelMod Formula.
final int levelDifference = (target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
final double lvlModifier = Math.pow(1.3, levelDifference);
final double lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
float targetModifier = 1;
if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -170,6 +170,10 @@ FakeDeathUntarget = False
# Stand when fake death is active and taking damage.
FakeDeathDamageStand = True
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -186,6 +186,7 @@ public class Config
public static long EFFECT_TICK_RATIO;
public static boolean FAKE_DEATH_UNTARGET;
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean ALLOW_CLASS_MASTERS;
public static ClassMasterSettings CLASS_MASTER_SETTINGS;
public static boolean ALLOW_ENTIRE_TREE;
@ -1748,6 +1749,7 @@ public class Config
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", false);
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", true);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
ALLOW_CLASS_MASTERS = characterConfig.getBoolean("AllowClassMasters", false);
ALLOW_ENTIRE_TREE = characterConfig.getBoolean("AllowEntireTree", false);
ALTERNATE_CLASS_MASTER = characterConfig.getBoolean("AlternateClassMaster", false);

View File

@ -1431,9 +1431,7 @@ public class Formulas
return true;
}
// FIXME: Fix this LevelMod Formula.
final int levelDifference = (target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
final double lvlModifier = Math.pow(1.3, levelDifference);
final double lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
float targetModifier = 1;
if (target.isAttackable() && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && (attacker.getActingPlayer() != null) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -150,6 +150,10 @@ VampiricAttackWorkWithSkills = False
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = False
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -197,6 +197,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1693,6 +1694,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -806,7 +806,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -150,6 +150,10 @@ VampiricAttackWorkWithSkills = False
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = False
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -197,6 +197,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1697,6 +1698,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -806,7 +806,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -150,6 +150,10 @@ VampiricAttackWorkWithSkills = False
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = False
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -197,6 +197,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1697,6 +1698,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -806,7 +806,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -150,6 +150,10 @@ VampiricAttackWorkWithSkills = False
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = False
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -197,6 +197,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1697,6 +1698,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -807,7 +807,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -150,6 +150,10 @@ VampiricAttackWorkWithSkills = False
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = False
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -197,6 +197,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1702,6 +1703,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -807,7 +807,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -150,6 +150,10 @@ VampiricAttackWorkWithSkills = False
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = False
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -197,6 +197,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1708,6 +1709,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -807,7 +807,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -150,6 +150,10 @@ VampiricAttackWorkWithSkills = False
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = False
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = True
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -196,6 +196,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1700,6 +1701,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -806,7 +806,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -150,6 +150,10 @@ VampiricAttackWorkWithSkills = False
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = False
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = False
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -199,6 +199,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1729,6 +1730,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", false);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -807,7 +807,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -150,6 +150,10 @@ VampiricAttackWorkWithSkills = False
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = False
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = False
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -199,6 +199,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1733,6 +1734,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", false);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -807,7 +807,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -150,6 +150,10 @@ VampiricAttackWorkWithSkills = False
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = False
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = False
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -200,6 +200,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1740,6 +1741,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", false);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -807,7 +807,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{

View File

@ -150,6 +150,10 @@ VampiricAttackWorkWithSkills = False
# MP vampiric attacks work with melee.
MpVampiricAttackWorkWithMelee = False
# Calculate magic success by target level and skill magic level (when available).
# Otherwise target level and (alternatively) attacker level is used.
CalculateMagicSuccessBySkillMagicLevel = False
# ---------------------------------------------------------------------------
# Class, Sub-class and skill learning options

View File

@ -200,6 +200,7 @@ public class Config
public static boolean FAKE_DEATH_DAMAGE_STAND;
public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS;
public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE;
public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL;
public static boolean LIFE_CRYSTAL_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
@ -1740,6 +1741,7 @@ public class Config
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true);
MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false);
CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", false);
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);

View File

@ -813,7 +813,7 @@ public class Formulas
int mAccModifier = 1;
if (attacker.isAttackable() || target.isAttackable())
{
lvlModifier = Math.pow(1.3, target.getLevel() - (skill.getMagicLevel() > 0 ? skill.getMagicLevel() : attacker.getLevel()));
lvlModifier = Math.pow(1.3, target.getLevel() - (Config.CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL && (skill.getMagicLevel() > 0) ? skill.getMagicLevel() : attacker.getLevel()));
if ((attacker.getActingPlayer() != null) && !target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LEVEL_MAGIC_PENALTY) && ((target.getLevel() - attacker.getActingPlayer().getLevel()) >= 3))
{