Use finalizer configurations only for players.

This commit is contained in:
MobiusDevelopment
2020-05-23 23:28:25 +00:00
parent 311feff855
commit 48fa46afea
135 changed files with 135 additions and 135 deletions

View File

@@ -55,7 +55,7 @@ public class MAttackFinalizer implements IStatFunction
// Calculate modifiers Magic Attack // Calculate modifiers Magic Attack
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod() * chaBonus, 2.2072); baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod() * chaBonus, 2.2072);
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_MATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_MATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -43,7 +43,7 @@ public class MAttackSpeedFinalizer implements IStatFunction
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
baseValue *= witBonus * chaBonus; baseValue *= witBonus * chaBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_MATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_MATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -43,7 +43,7 @@ public class MCritRateFinalizer implements IStatFunction
} }
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, Config.MAX_MCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, creature.isPlayer() ? Config.MAX_MCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -54,7 +54,7 @@ public class MEvasionRateFinalizer implements IStatFunction
baseValue += (level - 69) + 2; baseValue += (level - 69) + 2;
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -53,7 +53,7 @@ public class PAttackFinalizer implements IStatFunction
} }
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod() * chaBonus; baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod() * chaBonus;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_PATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_PATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -41,7 +41,7 @@ public class PAttackSpeedFinalizer implements IStatFunction
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
baseValue *= dexBonus * chaBonus; baseValue *= dexBonus * chaBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_PATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_PATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -42,7 +42,7 @@ public class PCriticalRateFinalizer implements IStatFunction
baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS); baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS);
} }
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, Config.MAX_PCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, creature.isPlayer() ? Config.MAX_PCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -79,7 +79,7 @@ public class PEvasionRateFinalizer implements IStatFunction
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -56,7 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex; baseValue += bonusDex;
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, Config.MAX_RUN_SPEED); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -55,7 +55,7 @@ public class MAttackFinalizer implements IStatFunction
// Calculate modifiers Magic Attack // Calculate modifiers Magic Attack
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod() * chaBonus, 2.2072); baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod() * chaBonus, 2.2072);
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_MATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_MATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -43,7 +43,7 @@ public class MAttackSpeedFinalizer implements IStatFunction
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
baseValue *= witBonus * chaBonus; baseValue *= witBonus * chaBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_MATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_MATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -43,7 +43,7 @@ public class MCritRateFinalizer implements IStatFunction
} }
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, Config.MAX_MCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, creature.isPlayer() ? Config.MAX_MCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -54,7 +54,7 @@ public class MEvasionRateFinalizer implements IStatFunction
baseValue += (level - 69) + 2; baseValue += (level - 69) + 2;
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -53,7 +53,7 @@ public class PAttackFinalizer implements IStatFunction
} }
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod() * chaBonus; baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod() * chaBonus;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_PATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_PATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -41,7 +41,7 @@ public class PAttackSpeedFinalizer implements IStatFunction
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
baseValue *= dexBonus * chaBonus; baseValue *= dexBonus * chaBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_PATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_PATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -42,7 +42,7 @@ public class PCriticalRateFinalizer implements IStatFunction
baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS); baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS);
} }
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, Config.MAX_PCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, creature.isPlayer() ? Config.MAX_PCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -79,7 +79,7 @@ public class PEvasionRateFinalizer implements IStatFunction
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -56,7 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex; baseValue += bonusDex;
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, Config.MAX_RUN_SPEED); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -55,7 +55,7 @@ public class MAttackFinalizer implements IStatFunction
// Calculate modifiers Magic Attack // Calculate modifiers Magic Attack
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod() * chaBonus, 2.2072); baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod() * chaBonus, 2.2072);
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_MATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_MATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -43,7 +43,7 @@ public class MAttackSpeedFinalizer implements IStatFunction
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
baseValue *= witBonus * chaBonus; baseValue *= witBonus * chaBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_MATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_MATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -43,7 +43,7 @@ public class MCritRateFinalizer implements IStatFunction
} }
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, Config.MAX_MCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, creature.isPlayer() ? Config.MAX_MCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -54,7 +54,7 @@ public class MEvasionRateFinalizer implements IStatFunction
baseValue += (level - 69) + 2; baseValue += (level - 69) + 2;
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -53,7 +53,7 @@ public class PAttackFinalizer implements IStatFunction
} }
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod() * chaBonus; baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod() * chaBonus;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_PATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_PATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -41,7 +41,7 @@ public class PAttackSpeedFinalizer implements IStatFunction
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
baseValue *= dexBonus * chaBonus; baseValue *= dexBonus * chaBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_PATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_PATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -42,7 +42,7 @@ public class PCriticalRateFinalizer implements IStatFunction
baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS); baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS);
} }
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, Config.MAX_PCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, creature.isPlayer() ? Config.MAX_PCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -79,7 +79,7 @@ public class PEvasionRateFinalizer implements IStatFunction
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -56,7 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex; baseValue += bonusDex;
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, Config.MAX_RUN_SPEED); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -55,7 +55,7 @@ public class MAttackFinalizer implements IStatFunction
// Calculate modifiers Magic Attack // Calculate modifiers Magic Attack
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod() * chaBonus, 2.2072); baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod() * chaBonus, 2.2072);
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_MATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_MATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -43,7 +43,7 @@ public class MAttackSpeedFinalizer implements IStatFunction
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
baseValue *= witBonus * chaBonus; baseValue *= witBonus * chaBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_MATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_MATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -43,7 +43,7 @@ public class MCritRateFinalizer implements IStatFunction
} }
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, Config.MAX_MCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, creature.isPlayer() ? Config.MAX_MCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -54,7 +54,7 @@ public class MEvasionRateFinalizer implements IStatFunction
baseValue += (level - 69) + 2; baseValue += (level - 69) + 2;
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -53,7 +53,7 @@ public class PAttackFinalizer implements IStatFunction
} }
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod() * chaBonus; baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod() * chaBonus;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_PATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_PATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -41,7 +41,7 @@ public class PAttackSpeedFinalizer implements IStatFunction
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
baseValue *= dexBonus * chaBonus; baseValue *= dexBonus * chaBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_PATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_PATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -42,7 +42,7 @@ public class PCriticalRateFinalizer implements IStatFunction
baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS); baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS);
} }
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, Config.MAX_PCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, creature.isPlayer() ? Config.MAX_PCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -79,7 +79,7 @@ public class PEvasionRateFinalizer implements IStatFunction
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -56,7 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex; baseValue += bonusDex;
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, Config.MAX_RUN_SPEED); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -55,7 +55,7 @@ public class MAttackFinalizer implements IStatFunction
// Calculate modifiers Magic Attack // Calculate modifiers Magic Attack
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod() * chaBonus, 2.2072); baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod() * chaBonus, 2.2072);
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_MATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_MATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -43,7 +43,7 @@ public class MAttackSpeedFinalizer implements IStatFunction
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
baseValue *= witBonus * chaBonus; baseValue *= witBonus * chaBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_MATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_MATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -43,7 +43,7 @@ public class MCritRateFinalizer implements IStatFunction
} }
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, Config.MAX_MCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, creature.isPlayer() ? Config.MAX_MCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -54,7 +54,7 @@ public class MEvasionRateFinalizer implements IStatFunction
baseValue += (level - 69) + 2; baseValue += (level - 69) + 2;
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -53,7 +53,7 @@ public class PAttackFinalizer implements IStatFunction
} }
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod() * chaBonus; baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod() * chaBonus;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_PATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_PATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -41,7 +41,7 @@ public class PAttackSpeedFinalizer implements IStatFunction
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
baseValue *= dexBonus * chaBonus; baseValue *= dexBonus * chaBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_PATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_PATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -42,7 +42,7 @@ public class PCriticalRateFinalizer implements IStatFunction
baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS); baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS);
} }
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, Config.MAX_PCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, creature.isPlayer() ? Config.MAX_PCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -79,7 +79,7 @@ public class PEvasionRateFinalizer implements IStatFunction
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -56,7 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex; baseValue += bonusDex;
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, Config.MAX_RUN_SPEED); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -55,7 +55,7 @@ public class MAttackFinalizer implements IStatFunction
// Calculate modifiers Magic Attack // Calculate modifiers Magic Attack
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod() * chaBonus, 2.2072); baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod() * chaBonus, 2.2072);
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_MATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_MATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -43,7 +43,7 @@ public class MAttackSpeedFinalizer implements IStatFunction
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
baseValue *= witBonus * chaBonus; baseValue *= witBonus * chaBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_MATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_MATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -43,7 +43,7 @@ public class MCritRateFinalizer implements IStatFunction
} }
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, Config.MAX_MCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, creature.isPlayer() ? Config.MAX_MCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -54,7 +54,7 @@ public class MEvasionRateFinalizer implements IStatFunction
baseValue += (level - 69) + 2; baseValue += (level - 69) + 2;
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -53,7 +53,7 @@ public class PAttackFinalizer implements IStatFunction
} }
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod() * chaBonus; baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod() * chaBonus;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_PATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_PATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -41,7 +41,7 @@ public class PAttackSpeedFinalizer implements IStatFunction
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
baseValue *= dexBonus * chaBonus; baseValue *= dexBonus * chaBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_PATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_PATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -42,7 +42,7 @@ public class PCriticalRateFinalizer implements IStatFunction
baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS); baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS);
} }
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, Config.MAX_PCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, creature.isPlayer() ? Config.MAX_PCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -79,7 +79,7 @@ public class PEvasionRateFinalizer implements IStatFunction
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -56,7 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex; baseValue += bonusDex;
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, Config.MAX_RUN_SPEED); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -55,7 +55,7 @@ public class MAttackFinalizer implements IStatFunction
// Calculate modifiers Magic Attack // Calculate modifiers Magic Attack
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod() * chaBonus, 2.2072); baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod() * chaBonus, 2.2072);
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_MATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_MATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -43,7 +43,7 @@ public class MAttackSpeedFinalizer implements IStatFunction
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
baseValue *= witBonus * chaBonus; baseValue *= witBonus * chaBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_MATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_MATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -43,7 +43,7 @@ public class MCritRateFinalizer implements IStatFunction
} }
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, Config.MAX_MCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, creature.isPlayer() ? Config.MAX_MCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -54,7 +54,7 @@ public class MEvasionRateFinalizer implements IStatFunction
baseValue += (level - 69) + 2; baseValue += (level - 69) + 2;
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -53,7 +53,7 @@ public class PAttackFinalizer implements IStatFunction
} }
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod() * chaBonus; baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod() * chaBonus;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_PATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_PATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -41,7 +41,7 @@ public class PAttackSpeedFinalizer implements IStatFunction
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
baseValue *= dexBonus * chaBonus; baseValue *= dexBonus * chaBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_PATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_PATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -42,7 +42,7 @@ public class PCriticalRateFinalizer implements IStatFunction
baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS); baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS);
} }
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, Config.MAX_PCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, creature.isPlayer() ? Config.MAX_PCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -79,7 +79,7 @@ public class PEvasionRateFinalizer implements IStatFunction
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -56,7 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex; baseValue += bonusDex;
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, Config.MAX_RUN_SPEED); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -55,7 +55,7 @@ public class MAttackFinalizer implements IStatFunction
// Calculate modifiers Magic Attack // Calculate modifiers Magic Attack
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod() * chaBonus, 2.2072); baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod() * chaBonus, 2.2072);
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_MATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_MATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -43,7 +43,7 @@ public class MAttackSpeedFinalizer implements IStatFunction
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
baseValue *= witBonus * chaBonus; baseValue *= witBonus * chaBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_MATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_MATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -43,7 +43,7 @@ public class MCritRateFinalizer implements IStatFunction
} }
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, Config.MAX_MCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, creature.isPlayer() ? Config.MAX_MCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -54,7 +54,7 @@ public class MEvasionRateFinalizer implements IStatFunction
baseValue += (level - 69) + 2; baseValue += (level - 69) + 2;
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -53,7 +53,7 @@ public class PAttackFinalizer implements IStatFunction
} }
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod() * chaBonus; baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod() * chaBonus;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_PATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_PATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -41,7 +41,7 @@ public class PAttackSpeedFinalizer implements IStatFunction
final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.; final double chaBonus = creature.isPlayer() ? BaseStat.CHA.calcBonus(creature) : 1.;
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
baseValue *= dexBonus * chaBonus; baseValue *= dexBonus * chaBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_PATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_PATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -42,7 +42,7 @@ public class PCriticalRateFinalizer implements IStatFunction
baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS); baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS);
} }
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, Config.MAX_PCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, creature.isPlayer() ? Config.MAX_PCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -79,7 +79,7 @@ public class PEvasionRateFinalizer implements IStatFunction
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -56,7 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex; baseValue += bonusDex;
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, Config.MAX_RUN_SPEED); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -54,7 +54,7 @@ public class MAttackFinalizer implements IStatFunction
// Calculate modifiers Magic Attack // Calculate modifiers Magic Attack
baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod(), 2.2072); baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod(), 2.2072);
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_MATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_MATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -42,7 +42,7 @@ public class MAttackSpeedFinalizer implements IStatFunction
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
baseValue *= witBonus; baseValue *= witBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_MATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_MATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -43,7 +43,7 @@ public class MCritRateFinalizer implements IStatFunction
} }
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, Config.MAX_MCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, creature.isPlayer() ? Config.MAX_MCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -54,7 +54,7 @@ public class MEvasionRateFinalizer implements IStatFunction
baseValue += (level - 69) + 2; baseValue += (level - 69) + 2;
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -52,7 +52,7 @@ public class PAttackFinalizer implements IStatFunction
baseValue *= Config.RAID_PATTACK_MULTIPLIER; baseValue *= Config.RAID_PATTACK_MULTIPLIER;
} }
baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod(); baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod();
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_PATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_PATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -40,7 +40,7 @@ public class PAttackSpeedFinalizer implements IStatFunction
} }
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
baseValue *= dexBonus; baseValue *= dexBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_PATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_PATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -42,7 +42,7 @@ public class PCriticalRateFinalizer implements IStatFunction
baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS); baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS);
} }
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, Config.MAX_PCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, creature.isPlayer() ? Config.MAX_PCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -79,7 +79,7 @@ public class PEvasionRateFinalizer implements IStatFunction
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -56,7 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex; baseValue += bonusDex;
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, Config.MAX_RUN_SPEED); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -54,7 +54,7 @@ public class MAttackFinalizer implements IStatFunction
// Calculate modifiers Magic Attack // Calculate modifiers Magic Attack
baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod(), 2.2072); baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod(), 2.2072);
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_MATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_MATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -42,7 +42,7 @@ public class MAttackSpeedFinalizer implements IStatFunction
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
baseValue *= witBonus; baseValue *= witBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_MATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_MATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -43,7 +43,7 @@ public class MCritRateFinalizer implements IStatFunction
} }
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, Config.MAX_MCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, creature.isPlayer() ? Config.MAX_MCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -54,7 +54,7 @@ public class MEvasionRateFinalizer implements IStatFunction
baseValue += (level - 69) + 2; baseValue += (level - 69) + 2;
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -52,7 +52,7 @@ public class PAttackFinalizer implements IStatFunction
baseValue *= Config.RAID_PATTACK_MULTIPLIER; baseValue *= Config.RAID_PATTACK_MULTIPLIER;
} }
baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod(); baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod();
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_PATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_PATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -40,7 +40,7 @@ public class PAttackSpeedFinalizer implements IStatFunction
} }
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
baseValue *= dexBonus; baseValue *= dexBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_PATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_PATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -42,7 +42,7 @@ public class PCriticalRateFinalizer implements IStatFunction
baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS); baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS);
} }
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, Config.MAX_PCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, creature.isPlayer() ? Config.MAX_PCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -79,7 +79,7 @@ public class PEvasionRateFinalizer implements IStatFunction
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -56,7 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex; baseValue += bonusDex;
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, Config.MAX_RUN_SPEED); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -54,7 +54,7 @@ public class MAttackFinalizer implements IStatFunction
// Calculate modifiers Magic Attack // Calculate modifiers Magic Attack
baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod(), 2.2072); baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod(), 2.2072);
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_MATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_MATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -42,7 +42,7 @@ public class MAttackSpeedFinalizer implements IStatFunction
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
baseValue *= witBonus; baseValue *= witBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_MATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_MATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -43,7 +43,7 @@ public class MCritRateFinalizer implements IStatFunction
} }
final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.; final double witBonus = creature.getWIT() > 0 ? BaseStat.WIT.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, Config.MAX_MCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * witBonus * 10), 0, creature.isPlayer() ? Config.MAX_MCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -54,7 +54,7 @@ public class MEvasionRateFinalizer implements IStatFunction
baseValue += (level - 69) + 2; baseValue += (level - 69) + 2;
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -52,7 +52,7 @@ public class PAttackFinalizer implements IStatFunction
baseValue *= Config.RAID_PATTACK_MULTIPLIER; baseValue *= Config.RAID_PATTACK_MULTIPLIER;
} }
baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod(); baseValue *= BaseStat.STR.calcBonus(creature) * creature.getLevelMod();
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_PATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_PATK : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -40,7 +40,7 @@ public class PAttackSpeedFinalizer implements IStatFunction
} }
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
baseValue *= dexBonus; baseValue *= dexBonus;
return validateValue(creature, defaultValue(creature, stat, baseValue), 1, Config.MAX_PATK_SPEED); return validateValue(creature, defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_PATK_SPEED : Double.MAX_VALUE);
} }
private double defaultValue(Creature creature, Stat stat, double baseValue) private double defaultValue(Creature creature, Stat stat, double baseValue)

View File

@@ -42,7 +42,7 @@ public class PCriticalRateFinalizer implements IStatFunction
baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS); baseValue += calcEnchantBodyPart(creature, Item.SLOT_LEGS);
} }
final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.; final double dexBonus = creature.getDEX() > 0 ? BaseStat.DEX.calcBonus(creature) : 1.;
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, Config.MAX_PCRIT_RATE); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue * dexBonus * 10), 0, creature.isPlayer() ? Config.MAX_PCRIT_RATE : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -79,7 +79,7 @@ public class PEvasionRateFinalizer implements IStatFunction
} }
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, Config.MAX_EVASION); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), Double.NEGATIVE_INFINITY, creature.isPlayer() ? Config.MAX_EVASION : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -56,7 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex; baseValue += bonusDex;
} }
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, Config.MAX_RUN_SPEED); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayer() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
} }
@Override @Override

View File

@@ -54,7 +54,7 @@ public class MAttackFinalizer implements IStatFunction
// Calculate modifiers Magic Attack // Calculate modifiers Magic Attack
baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod(), 2.2072); baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod(), 2.2072);
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, Config.MAX_MATK); return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, creature.isPlayer() ? Config.MAX_MATK : Double.MAX_VALUE);
} }
@Override @Override

Some files were not shown because too many files have changed in this diff Show More