Alternate tempfix for defence calculations.
This commit is contained in:
@@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
||||||
@@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
||||||
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod());
|
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
||||||
|
@@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -92,6 +92,8 @@ public final class Formulas
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = target.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Critical
|
// Critical
|
||||||
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
||||||
@@ -114,16 +116,16 @@ public final class Formulas
|
|||||||
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
||||||
|
|
||||||
// Mobius: Manage level difference.
|
// Mobius: Manage level difference.
|
||||||
if (attacker.getLevel() < target.getLevel())
|
// if (attacker.getLevel() < target.getLevel())
|
||||||
{
|
// {
|
||||||
power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
// power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
||||||
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
||||||
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
||||||
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence);
|
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence);
|
||||||
final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
||||||
|
|
||||||
return damage;
|
return damage;
|
||||||
}
|
}
|
||||||
@@ -141,7 +143,9 @@ public final class Formulas
|
|||||||
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
||||||
|
|
||||||
// MDAM Formula.
|
// MDAM Formula.
|
||||||
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus;
|
// TODO: Find proper mDefence formula.
|
||||||
|
mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef;
|
||||||
|
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus;
|
||||||
|
|
||||||
// Failure calculation
|
// Failure calculation
|
||||||
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
||||||
|
@@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
||||||
@@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
||||||
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod());
|
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
||||||
|
@@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -92,6 +92,8 @@ public final class Formulas
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = target.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Critical
|
// Critical
|
||||||
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
||||||
@@ -114,16 +116,16 @@ public final class Formulas
|
|||||||
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
||||||
|
|
||||||
// Mobius: Manage level difference.
|
// Mobius: Manage level difference.
|
||||||
if (attacker.getLevel() < target.getLevel())
|
// if (attacker.getLevel() < target.getLevel())
|
||||||
{
|
// {
|
||||||
power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
// power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
||||||
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
||||||
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
||||||
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence);
|
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence);
|
||||||
final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
||||||
|
|
||||||
return damage;
|
return damage;
|
||||||
}
|
}
|
||||||
@@ -141,7 +143,9 @@ public final class Formulas
|
|||||||
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
||||||
|
|
||||||
// MDAM Formula.
|
// MDAM Formula.
|
||||||
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus;
|
// TODO: Find proper mDefence formula.
|
||||||
|
mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef;
|
||||||
|
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus;
|
||||||
|
|
||||||
// Failure calculation
|
// Failure calculation
|
||||||
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
||||||
|
@@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
||||||
@@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
||||||
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod());
|
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
||||||
|
@@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -92,6 +92,8 @@ public final class Formulas
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = target.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Critical
|
// Critical
|
||||||
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
||||||
@@ -114,16 +116,16 @@ public final class Formulas
|
|||||||
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
||||||
|
|
||||||
// Mobius: Manage level difference.
|
// Mobius: Manage level difference.
|
||||||
if (attacker.getLevel() < target.getLevel())
|
// if (attacker.getLevel() < target.getLevel())
|
||||||
{
|
// {
|
||||||
power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
// power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
||||||
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
||||||
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
||||||
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence);
|
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence);
|
||||||
final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
||||||
|
|
||||||
return damage;
|
return damage;
|
||||||
}
|
}
|
||||||
@@ -141,7 +143,9 @@ public final class Formulas
|
|||||||
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
||||||
|
|
||||||
// MDAM Formula.
|
// MDAM Formula.
|
||||||
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus;
|
// TODO: Find proper mDefence formula.
|
||||||
|
mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef;
|
||||||
|
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus;
|
||||||
|
|
||||||
// Failure calculation
|
// Failure calculation
|
||||||
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
||||||
|
@@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
||||||
@@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
||||||
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod());
|
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
||||||
|
@@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -92,6 +92,8 @@ public final class Formulas
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = target.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Critical
|
// Critical
|
||||||
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
||||||
@@ -114,16 +116,16 @@ public final class Formulas
|
|||||||
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
||||||
|
|
||||||
// Mobius: Manage level difference.
|
// Mobius: Manage level difference.
|
||||||
if (attacker.getLevel() < target.getLevel())
|
// if (attacker.getLevel() < target.getLevel())
|
||||||
{
|
// {
|
||||||
power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
// power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
||||||
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
||||||
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
||||||
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence);
|
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence);
|
||||||
final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
||||||
|
|
||||||
return damage;
|
return damage;
|
||||||
}
|
}
|
||||||
@@ -141,7 +143,9 @@ public final class Formulas
|
|||||||
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
||||||
|
|
||||||
// MDAM Formula.
|
// MDAM Formula.
|
||||||
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus;
|
// TODO: Find proper mDefence formula.
|
||||||
|
mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef;
|
||||||
|
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus;
|
||||||
|
|
||||||
// Failure calculation
|
// Failure calculation
|
||||||
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
||||||
|
@@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
||||||
@@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
||||||
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod());
|
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
||||||
|
@@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -92,6 +92,8 @@ public final class Formulas
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = target.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Critical
|
// Critical
|
||||||
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
||||||
@@ -114,16 +116,16 @@ public final class Formulas
|
|||||||
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
||||||
|
|
||||||
// Mobius: Manage level difference.
|
// Mobius: Manage level difference.
|
||||||
if (attacker.getLevel() < target.getLevel())
|
// if (attacker.getLevel() < target.getLevel())
|
||||||
{
|
// {
|
||||||
power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
// power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
||||||
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
||||||
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
||||||
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence);
|
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence);
|
||||||
final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
||||||
|
|
||||||
return damage;
|
return damage;
|
||||||
}
|
}
|
||||||
@@ -141,7 +143,9 @@ public final class Formulas
|
|||||||
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
||||||
|
|
||||||
// MDAM Formula.
|
// MDAM Formula.
|
||||||
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus;
|
// TODO: Find proper mDefence formula.
|
||||||
|
mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef;
|
||||||
|
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus;
|
||||||
|
|
||||||
// Failure calculation
|
// Failure calculation
|
||||||
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
||||||
|
@@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
||||||
@@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
||||||
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod());
|
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
||||||
|
@@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -92,6 +92,8 @@ public final class Formulas
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = target.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Critical
|
// Critical
|
||||||
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
||||||
@@ -114,16 +116,16 @@ public final class Formulas
|
|||||||
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
||||||
|
|
||||||
// Mobius: Manage level difference.
|
// Mobius: Manage level difference.
|
||||||
if (attacker.getLevel() < target.getLevel())
|
// if (attacker.getLevel() < target.getLevel())
|
||||||
{
|
// {
|
||||||
power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
// power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
||||||
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
||||||
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
||||||
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence);
|
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence);
|
||||||
final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
||||||
|
|
||||||
return damage;
|
return damage;
|
||||||
}
|
}
|
||||||
@@ -141,7 +143,9 @@ public final class Formulas
|
|||||||
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
||||||
|
|
||||||
// MDAM Formula.
|
// MDAM Formula.
|
||||||
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus;
|
// TODO: Find proper mDefence formula.
|
||||||
|
mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef;
|
||||||
|
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus;
|
||||||
|
|
||||||
// Failure calculation
|
// Failure calculation
|
||||||
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
||||||
|
@@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
||||||
@@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
||||||
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod());
|
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
||||||
|
@@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -92,6 +92,8 @@ public final class Formulas
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = target.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Critical
|
// Critical
|
||||||
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
||||||
@@ -114,16 +116,16 @@ public final class Formulas
|
|||||||
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
||||||
|
|
||||||
// Mobius: Manage level difference.
|
// Mobius: Manage level difference.
|
||||||
if (attacker.getLevel() < target.getLevel())
|
// if (attacker.getLevel() < target.getLevel())
|
||||||
{
|
// {
|
||||||
power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
// power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
||||||
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
||||||
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
||||||
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence);
|
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence);
|
||||||
final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
||||||
|
|
||||||
return damage;
|
return damage;
|
||||||
}
|
}
|
||||||
@@ -141,7 +143,9 @@ public final class Formulas
|
|||||||
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
||||||
|
|
||||||
// MDAM Formula.
|
// MDAM Formula.
|
||||||
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus;
|
// TODO: Find proper mDefence formula.
|
||||||
|
mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef;
|
||||||
|
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus;
|
||||||
|
|
||||||
// Failure calculation
|
// Failure calculation
|
||||||
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
||||||
|
@@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
||||||
@@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
||||||
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod());
|
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
||||||
|
@@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -92,6 +92,8 @@ public final class Formulas
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = target.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Critical
|
// Critical
|
||||||
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
||||||
@@ -114,16 +116,16 @@ public final class Formulas
|
|||||||
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
||||||
|
|
||||||
// Mobius: Manage level difference.
|
// Mobius: Manage level difference.
|
||||||
if (attacker.getLevel() < target.getLevel())
|
// if (attacker.getLevel() < target.getLevel())
|
||||||
{
|
// {
|
||||||
power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
// power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
||||||
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
||||||
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
||||||
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence);
|
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence);
|
||||||
final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
||||||
|
|
||||||
return damage;
|
return damage;
|
||||||
}
|
}
|
||||||
@@ -141,7 +143,9 @@ public final class Formulas
|
|||||||
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
||||||
|
|
||||||
// MDAM Formula.
|
// MDAM Formula.
|
||||||
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus;
|
// TODO: Find proper mDefence formula.
|
||||||
|
mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef;
|
||||||
|
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus;
|
||||||
|
|
||||||
// Failure calculation
|
// Failure calculation
|
||||||
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
||||||
|
@@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
||||||
@@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
||||||
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod());
|
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
||||||
|
@@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -92,6 +92,8 @@ public final class Formulas
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = target.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Critical
|
// Critical
|
||||||
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
||||||
@@ -114,16 +116,16 @@ public final class Formulas
|
|||||||
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
||||||
|
|
||||||
// Mobius: Manage level difference.
|
// Mobius: Manage level difference.
|
||||||
if (attacker.getLevel() < target.getLevel())
|
// if (attacker.getLevel() < target.getLevel())
|
||||||
{
|
// {
|
||||||
power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
// power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
||||||
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
||||||
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
||||||
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence);
|
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence);
|
||||||
final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
||||||
|
|
||||||
return damage;
|
return damage;
|
||||||
}
|
}
|
||||||
@@ -141,7 +143,9 @@ public final class Formulas
|
|||||||
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
||||||
|
|
||||||
// MDAM Formula.
|
// MDAM Formula.
|
||||||
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus;
|
// TODO: Find proper mDefence formula.
|
||||||
|
mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef;
|
||||||
|
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus;
|
||||||
|
|
||||||
// Failure calculation
|
// Failure calculation
|
||||||
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
||||||
|
@@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
||||||
@@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
||||||
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod());
|
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
||||||
|
@@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -92,6 +92,8 @@ public final class Formulas
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = target.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Critical
|
// Critical
|
||||||
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
||||||
@@ -114,16 +116,16 @@ public final class Formulas
|
|||||||
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
||||||
|
|
||||||
// Mobius: Manage level difference.
|
// Mobius: Manage level difference.
|
||||||
if (attacker.getLevel() < target.getLevel())
|
// if (attacker.getLevel() < target.getLevel())
|
||||||
{
|
// {
|
||||||
power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
// power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
||||||
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
||||||
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
||||||
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence);
|
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence);
|
||||||
final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
||||||
|
|
||||||
return damage;
|
return damage;
|
||||||
}
|
}
|
||||||
@@ -141,7 +143,9 @@ public final class Formulas
|
|||||||
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
||||||
|
|
||||||
// MDAM Formula.
|
// MDAM Formula.
|
||||||
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus;
|
// TODO: Find proper mDefence formula.
|
||||||
|
mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef;
|
||||||
|
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus;
|
||||||
|
|
||||||
// Failure calculation
|
// Failure calculation
|
||||||
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
||||||
|
@@ -122,6 +122,9 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(attacker, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(attacker, effected, skill.getTraitType(), true);
|
||||||
@@ -147,7 +150,7 @@ public final class EnergyAttack extends AbstractEffect
|
|||||||
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
||||||
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / (defence / effector.getLevelMod());
|
final double baseMod = (77 * ((attacker.getPAtk() * attacker.getLevelMod()) + _power)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += attacker.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -137,6 +137,9 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -165,7 +168,7 @@ public final class PhysicalAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * abnormalMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -99,6 +99,9 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -126,7 +129,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
damage *= -((effector.getCurrentHp() * 2) / effector.getMaxHp()) + 2;
|
||||||
|
@@ -110,6 +110,9 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -137,7 +140,7 @@ public final class PhysicalAttackSaveHp extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -130,6 +130,9 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -158,7 +161,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * ssmod * critMod * weaponBonus * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -124,6 +124,9 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
|
|
||||||
if (defence != -1)
|
if (defence != -1)
|
||||||
{
|
{
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = effected.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Trait, elements
|
// Trait, elements
|
||||||
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
final double weaponTraitMod = Formulas.calcWeaponTraitBonus(effector, effected);
|
||||||
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
final double generalTraitMod = Formulas.calcGeneralTraitBonus(effector, effected, skill.getTraitType(), true);
|
||||||
@@ -152,7 +155,7 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
|||||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||||
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
// ATTACK CALCULATION 77 * ((pAtk * lvlMod) + power) / pdef RANGED ATTACK CALCULATION 70 * ((pAtk * lvlMod) + power + patk + power) / pdef
|
||||||
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
// ```````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^``````````````````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / (defence / effector.getLevelMod());
|
final double baseMod = (wpnMod * ((attack * effector.getLevelMod()) + _power + rangedBonus)) / defence;
|
||||||
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
damage = baseMod * soulsMod * ssmod * critMod * weaponTraitMod * generalTraitMod * attributeMod * pvpPveMod * randomMod;
|
||||||
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
damage += effector.getStat().getValue(Stats.PHYSICAL_SKILL_POWER, 0);
|
||||||
}
|
}
|
||||||
|
@@ -92,6 +92,8 @@ public final class Formulas
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// TODO: Find proper defence formula.
|
||||||
|
defence = target.getLevel() > 99 ? defence / 10 : defence;
|
||||||
|
|
||||||
// Critical
|
// Critical
|
||||||
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
final double criticalMod = (attacker.getStat().getValue(Stats.CRITICAL_DAMAGE, 1));
|
||||||
@@ -114,16 +116,16 @@ public final class Formulas
|
|||||||
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
final double isPosition = position == Position.BACK ? 0.2 : position == Position.SIDE ? 0.05 : 0;
|
||||||
|
|
||||||
// Mobius: Manage level difference.
|
// Mobius: Manage level difference.
|
||||||
if (attacker.getLevel() < target.getLevel())
|
// if (attacker.getLevel() < target.getLevel())
|
||||||
{
|
// {
|
||||||
power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
// power *= 1 - (Math.min(target.getLevel() - attacker.getLevel(), 9) / 10);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
// ........................_____________________________Initial Damage____________________________...___________Position Additional Damage___________..._CriticalAdd_
|
||||||
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
// ATTACK CALCULATION 77 * [(skillpower+patk) * 0.666 * cdbonus * cdPosBonusHalf * cdVulnHalf * ss + isBack0.2Side0.05 * (skillpower+patk*ss) * random + 6 * cd_patk] / pdef
|
||||||
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
// ````````````````````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```^^^^^^^^^^^^
|
||||||
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666 * ssmod * cdMult) + (isPosition * (power + (attacker.getPAtk() * ssmod)) * randomMod) + (6 * cdPatk))) / defence);
|
final double baseMod = ((77 * (((power + attacker.getPAtk()) * 0.666) + (isPosition * (power + attacker.getPAtk()) * randomMod) + (6 * cdPatk))) / defence);
|
||||||
final double damage = baseMod * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
final double damage = baseMod * ssmod * cdMult * weaponTraitMod * generalTraitMod * attributeMod * randomMod * pvpPveMod;
|
||||||
|
|
||||||
return damage;
|
return damage;
|
||||||
}
|
}
|
||||||
@@ -141,7 +143,9 @@ public final class Formulas
|
|||||||
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
final double pvpPveMod = calculatePvpPveBonus(attacker, target, skill, mcrit);
|
||||||
|
|
||||||
// MDAM Formula.
|
// MDAM Formula.
|
||||||
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / (mDef / attacker.getLevelMod())) * shotsBonus;
|
// TODO: Find proper mDefence formula.
|
||||||
|
mDef = target.getLevel() > 99 ? mDef / 3.33 : mDef;
|
||||||
|
double damage = ((attacker.getINT() * power * Math.sqrt(mAtk)) / mDef) * shotsBonus;
|
||||||
|
|
||||||
// Failure calculation
|
// Failure calculation
|
||||||
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
if (Config.ALT_GAME_MAGICFAILURES && !calcMagicSuccess(attacker, target, skill))
|
||||||
|
Reference in New Issue
Block a user