Added configurable limits for PAtk and MAtk.

This commit is contained in:
MobiusDev 2017-09-08 23:42:16 +00:00
parent f99b5d89cb
commit 7f1a6f6fee
24 changed files with 113 additions and 15 deletions

View File

@ -223,6 +223,14 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
# Maximum character Magic Attack.
# Default: 999999
MaxMAtk = 999999
# Maximum character Physical Critical Rate. (10 = 1%)
# Default: 500
MaxPCritRate = 500

View File

@ -350,7 +350,7 @@
<value level="1">0</value>
<value level="2">0</value>
<value level="3">999900</value>
<value level="4">999900</value> <!-- Retail value: 0 -->
<value level="4">999999</value> <!-- Retail value: 0 -->
</amount>
<mode>PER</mode>
</effect>
@ -428,6 +428,15 @@
<mode>PER</mode>
<magicType>1</magicType>
</effect>
<effect name="MAtk"> <!-- custom -->
<amount>
<value level="1">0</value>
<value level="2">0</value>
<value level="3">999900</value>
<value level="4">999999</value>
</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="7030" toLevel="1" name="Summon King Bugbear">

View File

@ -181,6 +181,8 @@ public final class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
public static int MAX_MCRIT_RATE;
public static int MAX_PATK_SPEED;
@ -1444,6 +1446,8 @@ public final class Config
MAX_BONUS_EXP = Character.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = Character.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = Character.getInt("MaxRunSpeed", 300);
MAX_PATK = Character.getInt("MaxPAtk", 999999);
MAX_MATK = Character.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = Character.getInt("MaxPCritRate", 500);
MAX_MCRIT_RATE = Character.getInt("MaxMCritRate", 200);
MAX_PATK_SPEED = Character.getInt("MaxPAtkSpeed", 1500);

View File

@ -56,7 +56,7 @@ public class MAttackFinalizer implements IStatsFunction
final double chaMod = creature.isPlayer() ? BaseStats.CHA.calcBonus(creature) : 1.;
final double intBonus = BaseStats.INT.calcBonus(creature);
baseValue *= Math.pow(intBonus, 2) * Math.pow(creature.getLevelMod(), 2) * chaMod;
return Stats.defaultValue(creature, stat, baseValue);
return Math.min(Stats.defaultValue(creature, stat, baseValue), Config.MAX_MATK);
}
@Override

View File

@ -55,7 +55,7 @@ public class PAttackFinalizer implements IStatsFunction
final double chaBonus = creature.isPlayer() ? BaseStats.CHA.calcBonus(creature) : 1.;
final double strBonus = creature.getSTR() > 0 ? BaseStats.STR.calcBonus(creature) : 1.;
baseValue *= strBonus * creature.getLevelMod() * chaBonus;
return Stats.defaultValue(creature, stat, baseValue);
return Math.min(Stats.defaultValue(creature, stat, baseValue), Config.MAX_PATK);
}
@Override

View File

@ -223,6 +223,14 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
# Maximum character Magic Attack.
# Default: 999999
MaxMAtk = 999999
# Maximum character Physical Critical Rate. (10 = 1%)
# Default: 500
MaxPCritRate = 500

View File

@ -350,7 +350,7 @@
<value level="1">0</value>
<value level="2">0</value>
<value level="3">999900</value>
<value level="4">999900</value> <!-- Retail value: 0 -->
<value level="4">999999</value> <!-- Retail value: 0 -->
</amount>
<mode>PER</mode>
</effect>
@ -428,6 +428,15 @@
<mode>PER</mode>
<magicType>1</magicType>
</effect>
<effect name="MAtk"> <!-- custom -->
<amount>
<value level="1">0</value>
<value level="2">0</value>
<value level="3">999900</value>
<value level="4">999999</value>
</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="7030" toLevel="1" name="Summon King Bugbear">

View File

@ -181,6 +181,8 @@ public final class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
public static int MAX_MCRIT_RATE;
public static int MAX_PATK_SPEED;
@ -1446,6 +1448,8 @@ public final class Config
MAX_BONUS_EXP = Character.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = Character.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = Character.getInt("MaxRunSpeed", 300);
MAX_PATK = Character.getInt("MaxPAtk", 999999);
MAX_MATK = Character.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = Character.getInt("MaxPCritRate", 500);
MAX_MCRIT_RATE = Character.getInt("MaxMCritRate", 200);
MAX_PATK_SPEED = Character.getInt("MaxPAtkSpeed", 1500);

View File

@ -56,7 +56,7 @@ public class MAttackFinalizer implements IStatsFunction
final double chaMod = creature.isPlayer() ? BaseStats.CHA.calcBonus(creature) : 1.;
final double intBonus = BaseStats.INT.calcBonus(creature);
baseValue *= Math.pow(intBonus, 2) * Math.pow(creature.getLevelMod(), 2) * chaMod;
return Stats.defaultValue(creature, stat, baseValue);
return Math.min(Stats.defaultValue(creature, stat, baseValue), Config.MAX_MATK);
}
@Override

View File

@ -55,7 +55,7 @@ public class PAttackFinalizer implements IStatsFunction
final double chaBonus = creature.isPlayer() ? BaseStats.CHA.calcBonus(creature) : 1.;
final double strBonus = creature.getSTR() > 0 ? BaseStats.STR.calcBonus(creature) : 1.;
baseValue *= strBonus * creature.getLevelMod() * chaBonus;
return Stats.defaultValue(creature, stat, baseValue);
return Math.min(Stats.defaultValue(creature, stat, baseValue), Config.MAX_PATK);
}
@Override

View File

@ -223,6 +223,14 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
# Maximum character Magic Attack.
# Default: 999999
MaxMAtk = 999999
# Maximum character Physical Critical Rate. (10 = 1%)
# Default: 500
MaxPCritRate = 500

View File

@ -350,7 +350,7 @@
<value level="1">0</value>
<value level="2">0</value>
<value level="3">999900</value>
<value level="4">999900</value> <!-- Retail value: 0 -->
<value level="4">999999</value> <!-- Retail value: 0 -->
</amount>
<mode>PER</mode>
</effect>
@ -428,6 +428,15 @@
<mode>PER</mode>
<magicType>1</magicType>
</effect>
<effect name="MAtk"> <!-- custom -->
<amount>
<value level="1">0</value>
<value level="2">0</value>
<value level="3">999900</value>
<value level="4">999999</value>
</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="7030" toLevel="1" name="Summon King Bugbear">

View File

@ -181,6 +181,8 @@ public final class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
public static int MAX_MCRIT_RATE;
public static int MAX_PATK_SPEED;
@ -1446,6 +1448,8 @@ public final class Config
MAX_BONUS_EXP = Character.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = Character.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = Character.getInt("MaxRunSpeed", 300);
MAX_PATK = Character.getInt("MaxPAtk", 999999);
MAX_MATK = Character.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = Character.getInt("MaxPCritRate", 500);
MAX_MCRIT_RATE = Character.getInt("MaxMCritRate", 200);
MAX_PATK_SPEED = Character.getInt("MaxPAtkSpeed", 1500);

View File

@ -56,7 +56,7 @@ public class MAttackFinalizer implements IStatsFunction
final double chaMod = creature.isPlayer() ? BaseStats.CHA.calcBonus(creature) : 1.;
final double intBonus = BaseStats.INT.calcBonus(creature);
baseValue *= Math.pow(intBonus, 2) * Math.pow(creature.getLevelMod(), 2) * chaMod;
return Stats.defaultValue(creature, stat, baseValue);
return Math.min(Stats.defaultValue(creature, stat, baseValue), Config.MAX_MATK);
}
@Override

View File

@ -55,7 +55,7 @@ public class PAttackFinalizer implements IStatsFunction
final double chaBonus = creature.isPlayer() ? BaseStats.CHA.calcBonus(creature) : 1.;
final double strBonus = creature.getSTR() > 0 ? BaseStats.STR.calcBonus(creature) : 1.;
baseValue *= strBonus * creature.getLevelMod() * chaBonus;
return Stats.defaultValue(creature, stat, baseValue);
return Math.min(Stats.defaultValue(creature, stat, baseValue), Config.MAX_PATK);
}
@Override

View File

@ -314,6 +314,14 @@ MaxSpBonus = 3.5
# Default: 250
MaxRunSpeed = 250
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
# Maximum character Magic Attack.
# Default: 999999
MaxMAtk = 999999
# Maximum character Physical Critical Rate. (10 = 1%)
# Default: 500
MaxPCritRate = 500

View File

@ -262,7 +262,8 @@
<!-- GM Skill -->
<table name="#amount"> 1 1 1 1 </table>
<table name="#mAtkSpd"> 2 3 4 5 </table>
<table name="#pAtk"> 2500 5000 7500 10000 </table>
<table name="#pAtk"> 250 500 750 1500 </table>
<table name="#mAtk"> 250 500 750 1500 </table>
<table name="#pAtkSpd"> 2 3 4 5 </table>
<table name="#reuse"> 0.01 0.01 0.01 0.01 </table>
<table name="#runSpd"> 2 3 4 5 </table>
@ -278,6 +279,7 @@
<mul stat="runSpd" val="#runSpd" />
<mul stat="mAtkSpd" val="#mAtkSpd" />
<mul stat="pAtk" val="#pAtk" />
<mul stat="mAtk" val="#mAtk" /> <!-- custom -->
<mul stat="pReuse" val="#reuse" />
<mul stat="mReuse" val="#reuse" />
<mul stat="regHp" val="#amount" />

View File

@ -155,6 +155,8 @@ public final class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
public static int MAX_MCRIT_RATE;
public static int MAX_PATK_SPEED;
@ -1547,6 +1549,8 @@ public final class Config
MAX_BONUS_EXP = character.getDouble("MaxExpBonus", 3.5);
MAX_BONUS_SP = character.getDouble("MaxSpBonus", 3.5);
MAX_RUN_SPEED = character.getInt("MaxRunSpeed", 250);
MAX_PATK = character.getInt("MaxPAtk", 999999);
MAX_MATK = character.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = character.getInt("MaxPCritRate", 500);
MAX_MCRIT_RATE = character.getInt("MaxMCritRate", 200);
MAX_PATK_SPEED = character.getInt("MaxPAtkSpeed", 1500);

View File

@ -287,7 +287,7 @@ public class CharStat
}
// Calculate modifiers Magic Attack
return calcStat(Stats.MAGIC_ATTACK, _activeChar.getTemplate().getBaseMAtk() * bonusAtk, target, skill);
return Math.min(calcStat(Stats.MAGIC_ATTACK, _activeChar.getTemplate().getBaseMAtk() * bonusAtk, target, skill), Config.MAX_MATK);
}
/**
@ -512,7 +512,7 @@ public class CharStat
{
bonusAtk *= Config.RAID_PATTACK_MULTIPLIER;
}
return calcStat(Stats.POWER_ATTACK, _activeChar.getTemplate().getBasePAtk() * bonusAtk, target, null);
return Math.min(calcStat(Stats.POWER_ATTACK, _activeChar.getTemplate().getBasePAtk() * bonusAtk, target, null), Config.MAX_PATK);
}
/**

View File

@ -227,6 +227,14 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
# Maximum character Magic Attack.
# Default: 999999
MaxMAtk = 999999
# Maximum character Physical Critical Rate. (10 = 1%)
# Default: 500
MaxPCritRate = 500

View File

@ -350,7 +350,7 @@
<value level="1">0</value>
<value level="2">0</value>
<value level="3">999900</value>
<value level="4">999900</value> <!-- Retail value: 0 -->
<value level="4">999999</value> <!-- Retail value: 0 -->
</amount>
<mode>PER</mode>
</effect>
@ -428,6 +428,15 @@
<mode>PER</mode>
<magicType>1</magicType>
</effect>
<effect name="MAtk"> <!-- custom -->
<amount>
<value level="1">0</value>
<value level="2">0</value>
<value level="3">999900</value>
<value level="4">999999</value>
</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="7030" toLevel="1" name="Summon King Bugbear">

View File

@ -182,6 +182,8 @@ public final class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
public static int MAX_MCRIT_RATE;
public static int MAX_PATK_SPEED;
@ -1448,6 +1450,8 @@ public final class Config
MAX_BONUS_EXP = Character.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = Character.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = Character.getInt("MaxRunSpeed", 300);
MAX_PATK = Character.getInt("MaxPAtk", 999999);
MAX_MATK = Character.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = Character.getInt("MaxPCritRate", 500);
MAX_MCRIT_RATE = Character.getInt("MaxMCritRate", 200);
MAX_PATK_SPEED = Character.getInt("MaxPAtkSpeed", 1500);

View File

@ -56,7 +56,7 @@ public class MAttackFinalizer implements IStatsFunction
final double chaMod = creature.isPlayer() ? BaseStats.CHA.calcBonus(creature) : 1.;
final double intBonus = BaseStats.INT.calcBonus(creature);
baseValue *= Math.pow(intBonus, 2) * Math.pow(creature.getLevelMod(), 2) * chaMod;
return Stats.defaultValue(creature, stat, baseValue);
return Math.min(Stats.defaultValue(creature, stat, baseValue), Config.MAX_MATK);
}
@Override

View File

@ -55,7 +55,7 @@ public class PAttackFinalizer implements IStatsFunction
final double chaBonus = creature.isPlayer() ? BaseStats.CHA.calcBonus(creature) : 1.;
final double strBonus = creature.getSTR() > 0 ? BaseStats.STR.calcBonus(creature) : 1.;
baseValue *= strBonus * creature.getLevelMod() * chaBonus;
return Stats.defaultValue(creature, stat, baseValue);
return Math.min(Stats.defaultValue(creature, stat, baseValue), Config.MAX_PATK);
}
@Override