From fc0dcd221e58784b25d56917377d777d33065db0 Mon Sep 17 00:00:00 2001 From: Rogiel Date: Thu, 26 May 2011 12:01:00 -0300 Subject: [PATCH] Calculator Javadoc Signed-off-by: Rogiel --- config/database.properties | 4 + .../net/packet/server/CharacterOpenMap.java | 2 +- .../model/world/character/CharacterStats.java | 241 +++++++++++++++++- .../BaseAttackAccuracyCalculator.java | 13 +- .../BaseAttackEvasionCalculator.java | 13 +- .../calculator/BaseCPCalculator.java | 15 +- .../BaseConcentrationCalculator.java | 6 + .../calculator/BaseDexterityCalculator.java | 6 + .../calculator/BaseHPCalculator.java | 15 +- .../BaseHPRegenerationCalculator.java | 7 +- .../BaseIntelligenceCalculator.java | 6 + .../calculator/BaseMPCalculator.java | 15 +- .../BaseMagicalAttackCalculator.java | 8 +- .../BaseMagicalAttackSpeedCalculator.java | 8 +- .../BaseMagicalCriticalRateCalculator.java | 7 + .../BaseMagicalDefenseCalculator.java | 17 ++ .../calculator/BaseMentalityCalculator.java | 6 + .../BasePhysicalAttackCalculator.java | 9 +- .../BasePhysicalAttackSpeedCalculator.java | 8 +- .../BasePhysicalCriticalRateCalculator.java | 8 + .../BasePhysicalDefenseCalculator.java | 19 ++ .../calculator/BaseRunSpeedCalculator.java | 8 +- .../calculator/BaseStrengthCalculator.java | 6 + .../calculator/BaseWalkSpeedCalculator.java | 8 +- .../calculator/BaseWitnessCalculator.java | 6 + .../calculator/CharacterCalculator.java | 6 +- .../CharacterCalculatorContext.java | 3 +- .../ProxyConfigurationService.java | 1 - 28 files changed, 450 insertions(+), 21 deletions(-) create mode 100644 config/database.properties diff --git a/config/database.properties b/config/database.properties new file mode 100644 index 000000000..040f4b19e --- /dev/null +++ b/config/database.properties @@ -0,0 +1,4 @@ +jdbc.mysql.url = jdbc:mysql://localhost/l2jserver2 +jdbc.mysql.driver = com.mysql.jdbc.Driver +jdbc.mysql.username = l2j123 +jdbc.mysql.password = changeme \ No newline at end of file diff --git a/src/main/java/com/l2jserver/game/net/packet/server/CharacterOpenMap.java b/src/main/java/com/l2jserver/game/net/packet/server/CharacterOpenMap.java index 22ab00bd3..418b324f6 100644 --- a/src/main/java/com/l2jserver/game/net/packet/server/CharacterOpenMap.java +++ b/src/main/java/com/l2jserver/game/net/packet/server/CharacterOpenMap.java @@ -22,7 +22,7 @@ import com.l2jserver.game.net.Lineage2Connection; import com.l2jserver.game.net.packet.AbstractServerPacket; /** - * An packet informing that the character was created with success. + * An packet authorizing the client to open the map * * @author Rogiel */ diff --git a/src/main/java/com/l2jserver/model/world/character/CharacterStats.java b/src/main/java/com/l2jserver/model/world/character/CharacterStats.java index 24cd0cc9f..6674d42ed 100644 --- a/src/main/java/com/l2jserver/model/world/character/CharacterStats.java +++ b/src/main/java/com/l2jserver/model/world/character/CharacterStats.java @@ -44,49 +44,206 @@ import com.l2jserver.model.world.character.calculator.CharacterCalculatorContext import com.l2jserver.util.calculator.Calculator; /** - * @author Rogiel + * This class is responsible for calculating the real character stats. The real + * stats vary from the values from the templates, also, skills and items + * equipped can change those values. Once an buff is applied, a new calculator + * is {@link Calculator#importFunctions(Calculator) imported} and their + * functions are added to this class calculator. Once the skill effect has past + * away, all the functions that were imported are now + * {@link Calculator#removeFunctions(Calculator) removed} and the calculator + * return to its original state. + *

+ * Another important note is that calculators should perform calculations as + * fast as possible. + *

+ * IMPORTANT: NEVER TOUCH THE STATIC CALCULATORS! * + * @author Rogiel */ public class CharacterStats { + /** + * The calculator for base maximum HP + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_HP_CALCULATOR = new BaseHPCalculator(); + /** + * The calculator for base maximum MP + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_MP_CALCULATOR = new BaseMPCalculator(); + /** + * The calculator for base maximum CP + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_CP_CALCULATOR = new BaseCPCalculator(); + /** + * The calculator for base intelligence + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_INT_CALCULATOR = new BaseIntelligenceCalculator(); + /** + * The calculator for base strength + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_STR_CALCULATOR = new BaseStrengthCalculator(); + /** + * The calculator for base concentration + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_CON_CALCULATOR = new BaseConcentrationCalculator(); + /** + * The calculator for base mentality + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_MEN_CALCULATOR = new BaseMentalityCalculator(); + /** + * The calculator for base dexterity + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_DEX_CALCULATOR = new BaseDexterityCalculator(); + /** + * The calculator for base witness + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_WIT_CALCULATOR = new BaseWitnessCalculator(); + /** + * The calculator for base run speed + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_RUN_SPEED_CALCULATOR = new BaseRunSpeedCalculator(); + /** + * The calculator for base walk speed + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_WALK_SPEED_CALCULATOR = new BaseWalkSpeedCalculator(); + /** + * The calculator base physical attack + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_PHYSICAL_ATTACK_CALCULATOR = new BasePhysicalAttackCalculator(); + /** + * The calculator base physical attack speed + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_PHYSICAL_ATTACK_SPEED_CALCULATOR = new BasePhysicalAttackSpeedCalculator(); + /** + * The calculator base physical attack critical rate + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_PHYSICAL_CRITICAL_RATE_CALCULATOR = new BasePhysicalCriticalRateCalculator(); + /** + * The calculator base physical defense + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_PHYSICAL_DEFENSE_CALCULATOR = new BasePhysicalDefenseCalculator(); + /** + * The calculator base magical attack + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_MAGICAL_ATTACK_CALCULATOR = new BaseMagicalAttackCalculator(); + /** + * The calculator base magical attack speed + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_MAGICAL_ATTACK_SPEED_CALCULATOR = new BaseMagicalAttackSpeedCalculator(); + /** + * The calculator base magical attack critical rate + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_MAGICAL_CRITICAL_RATE_CALCULATOR = new BaseMagicalCriticalRateCalculator(); + /** + * The calculator base magical defense + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_MAGICAL_DEFENSE_CALCULATOR = new BaseMagicalDefenseCalculator(); + /** + * The calculator base attack accuracy + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_ATTACK_ACCURACY_CALCULATOR = new BaseAttackAccuracyCalculator(); + /** + * The calculator base evasion + *

+ * This calculator does not store any state and thus is safe to be + * shared. + */ private static final CharacterCalculator BASE_ATTACK_EVASION_CALCULATOR = new BaseAttackEvasionCalculator(); + /** + * The character + */ private final L2Character character; + /** + * The list of calculators for this character + *

+ * It is safe to use an array since this number cannot be changed in + * runtime, it would be required to be able to change the {@link StatType} + * enum. Also, an full-sized array is created because this way we don't need + * to change the array size very often. A bit of memory is "lost", but the + * speed gain is much higher. + */ @SuppressWarnings("unchecked") private final Calculator[] calculators = new Calculator[StatType .values().length]; + /** + * Creates a new {@link CharacterStats} and adds default calculators + * + * @param character + * the character + */ public CharacterStats(L2Character character) { this.character = character; for (int i = 0; i < calculators.length; i++) { calculators[i] = new Calculator(); } - // bind default functions + // import default functions getCalculator(StatType.MAX_HP).importFunctions(BASE_HP_CALCULATOR); getCalculator(StatType.MAX_MP).importFunctions(BASE_MP_CALCULATOR); getCalculator(StatType.MAX_CP).importFunctions(BASE_CP_CALCULATOR); @@ -129,90 +286,156 @@ public class CharacterStats { // TODO henna stats calculators } + /** + * @return the calculated maximum HP + */ public int getMaxHP() { return (int) calc(StatType.MAX_HP); } + /** + * @return the calculated maximum MP + */ public int getMaxMP() { return (int) calc(StatType.MAX_MP); } + /** + * @return the calculated maximum CP + */ public int getMaxCP() { return (int) calc(StatType.MAX_CP); } + /** + * @return the calculated intelligence + */ public int getIntelligence() { return (int) calc(StatType.STAT_INT); } + /** + * @return the calculated strength + */ public int getStrength() { return (int) calc(StatType.STAT_STR); } + /** + * @return the calculated concentration + */ public int getConcentration() { return (int) calc(StatType.STAT_CON); } + /** + * @return the calculated mentality + */ public int getMentality() { return (int) calc(StatType.STAT_MEN); } + /** + * @return the calculated dexterity + */ public int getDexterity() { return (int) calc(StatType.STAT_DEX); } + /** + * @return the calculated witness + */ public int getWitness() { return (int) calc(StatType.STAT_WIT); } + /** + * @return the calculated run speed + */ public int getRunSpeed() { return (int) calc(StatType.RUN_SPEED); } + /** + * @return the calculated walk speed + */ public int getWalkSpeed() { return (int) calc(StatType.WALK_SPEED); } + /** + * @return the calculated physical attack + */ public int getPhysicalAttack() { return (int) calc(StatType.POWER_ATTACK); } + /** + * @return the calculated physical attack speed + */ public int getPhysicalAttackSpeed() { return (int) calc(StatType.POWER_ATTACK_SPEED); } + /** + * @return the calculated physical attack critical rate + */ public int getPhysicalCriticalRate() { return (int) calc(StatType.CRITICAL_RATE); } + /** + * @return the calculated physical defense + */ public int getPhysicalDefense() { return (int) calc(StatType.POWER_DEFENSE); } + /** + * @return the calculated magical attack + */ public int getMagicalAttack() { return (int) calc(StatType.MAGIC_ATTACK); } + /** + * @return the calculated magical attack speed + */ public int getMagicalAttackSpeed() { return (int) calc(StatType.MAGIC_ATTACK_SPEED); } + /** + * @return the calculated magical attack critical rate + */ public int getMagicalCriticalRate() { return (int) calc(StatType.MCRITICAL_RATE); } + /** + * @return the calculated magical defense + */ public int getMagicalDefense() { return (int) calc(StatType.MAGIC_DEFENSE); } + /** + * @return the calculated accuracy + */ public int getAccuracy() { return (int) calc(StatType.ACCURACY_COMBAT); } + /** + * @return the calculated evasion rate + */ public int getEvasionRate() { return (int) calc(StatType.EVASION_RATE); } - + + /** + * @return the calculated maximum load + */ public int getMaximumLoad() { return (int) calc(StatType.MAX_LOAD); } @@ -221,10 +444,22 @@ public class CharacterStats { // getCalculator(type).importFunctions(calculator); // } + /** + * @param the + * calculator {@link StatType} + * @return the calculator object associated with the given type + */ protected Calculator getCalculator(StatType type) { return calculators[type.ordinal()]; } + /** + * Does the calculation of an given {@link StatType} + * + * @param type + * the type + * @return the value calculated + */ public double calc(StatType type) { final CharacterCalculatorContext ctx = new CharacterCalculatorContext( character); diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseAttackAccuracyCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseAttackAccuracyCalculator.java index 40e525fa8..fc5b97204 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseAttackAccuracyCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseAttackAccuracyCalculator.java @@ -23,8 +23,19 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** - * @author Rogiel + * Calculates the character base accuracy. * + *

+ * ctx.result = c.getTemplate().getBaseAccuracy();
+ * ctx.result += sqrt(DEX) * 6
+ * ctx.result += level;
+ * if (level > 77)
+ * 	ctx.result += (level - 77) + 1;
+ * if (level > 69)
+ * 	ctx.result += (level - 69);
+ * 
+ * + * @author Rogiel */ public class BaseAttackAccuracyCalculator extends CharacterCalculator { @SuppressWarnings("unchecked") diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseAttackEvasionCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseAttackEvasionCalculator.java index 14bb73aa6..e6304b2ab 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseAttackEvasionCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseAttackEvasionCalculator.java @@ -23,8 +23,19 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** - * @author Rogiel + * Calculates the character evasion * + *
+ * ctx.result = c.getTemplate().getBaseEvasion();
+ * ctx.result += sqrt(DEX) * 6;
+ * ctx.result += level;
+ * if (level > 77)
+ * 	ctx.result += (level - 77) + 1;
+ * if (level > 69)
+ * 	ctx.result += (level - 69);
+ * 
+ * + * @author Rogiel */ public class BaseAttackEvasionCalculator extends CharacterCalculator { @SuppressWarnings("unchecked") diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseCPCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseCPCalculator.java index cdc9b4ce5..8aba3fe01 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseCPCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseCPCalculator.java @@ -23,8 +23,21 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** - * @author Rogiel + * Calculates the character maximum CP * + *
+ * ctx.result = c.getTemplate().getBaseCP();
+ * 
+ * int lvl = c.getLevel() - template.getMinimumLevel();
+ * double mod = template.getBaseCPModifier() * lvl;
+ * double max = (template.getBaseCPAdd() + mod) * lvl;
+ * double min = (template.getBaseCPAdd() * lvl) + mod;
+ * ctx.result += (max + min) / 2;
+ * 
+ * ctx.result *= BaseStats.CON.calculateBonus(c.getStats().getConcentration());
+ * 
+ * + * @author Rogiel */ public class BaseCPCalculator extends CharacterCalculator { @SuppressWarnings("unchecked") diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseConcentrationCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseConcentrationCalculator.java index 7da0939ae..cd95006c8 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseConcentrationCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseConcentrationCalculator.java @@ -21,6 +21,12 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** + * Calculates the character concentration + * + *
+ * ctx.result = c.getTemplate().getBaseConcentration();
+ * 
+ * * @author Rogiel */ public class BaseConcentrationCalculator extends CharacterCalculator { diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseDexterityCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseDexterityCalculator.java index b87b947f8..ae1c35e94 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseDexterityCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseDexterityCalculator.java @@ -21,6 +21,12 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** + * Calculates the character base dexterity + * + *
+ * ctx.result = c.getTemplate().getBaseDexterity();
+ * 
+ * * @author Rogiel */ public class BaseDexterityCalculator extends CharacterCalculator { diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseHPCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseHPCalculator.java index 7d0e7360b..bbe23e5f6 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseHPCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseHPCalculator.java @@ -23,8 +23,21 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** - * @author Rogiel + * Calculates the character maximum HP * + *
+ * ctx.result = c.getTemplate().getBaseHP();
+ * 
+ * int lvl = c.getLevel() - template.getMinimumLevel();
+ * double mod = template.getBaseHP() * lvl;
+ * double max = (template.getBaseHPAdd() + mod) * lvl;
+ * double min = (template.getBaseHPAdd() * lvl) + mod;
+ * ctx.result += (max + min) / 2;
+ * 
+ * ctx.result *= BaseStats.CON.calculateBonus(c.getStats().getConcentration());
+ * 
+ * + * @author Rogiel */ public class BaseHPCalculator extends CharacterCalculator { @SuppressWarnings("unchecked") diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseHPRegenerationCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseHPRegenerationCalculator.java index 4319ea814..7052d94d8 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseHPRegenerationCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseHPRegenerationCalculator.java @@ -23,8 +23,13 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** - * @author Rogiel + * Calculates the character base HP regeneration * + *
+ * TODO base hp regen
+ * 
+ * + * @author Rogiel */ public class BaseHPRegenerationCalculator extends CharacterCalculator { /** diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseIntelligenceCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseIntelligenceCalculator.java index a778675ee..b900f1b45 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseIntelligenceCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseIntelligenceCalculator.java @@ -21,6 +21,12 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** + * Calculates the character base intelligence + * + *
+ * ctx.result = c.getTemplate().getBaseIntelligence();
+ * 
+ * * @author Rogiel */ public class BaseIntelligenceCalculator extends CharacterCalculator { diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseMPCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseMPCalculator.java index be0e2d7b2..61e105655 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseMPCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseMPCalculator.java @@ -23,8 +23,21 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** - * @author Rogiel + * Calculates the character base MP * + *
+ * ctx.result = c.getTemplate().getBaseBaseMP();
+ * 
+ * int lvl = c.getLevel() - template.getMinimumLevel();
+ * double mod = template.getBaseMPModifier() * lvl;
+ * double max = (template.getBaseMPAdd() + mod) * lvl;
+ * double min = (template.getBaseMPAdd() * lvl) + mod;
+ * ctx.result += (max + min) / 2;
+ * 
+ * ctx.result *= BaseStats.MEN.calculateBonus(c.getStats().getMentality());
+ * 
+ * + * @author Rogiel */ public class BaseMPCalculator extends CharacterCalculator { @SuppressWarnings("unchecked") diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseMagicalAttackCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseMagicalAttackCalculator.java index 7f66b2b03..0839b80c4 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseMagicalAttackCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseMagicalAttackCalculator.java @@ -22,8 +22,14 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** - * @author Rogiel + * Calculates the character base magical attack * + *
+ * ctx.result *= (((100.0 - 11 + c.getLevel()) / 100.0) ˆ 2)
+ * 		* (BaseStats.INT.calculateBonus(c.getStats().getIntelligence()) ˆ 2);
+ * 
+ * + * @author Rogiel */ public class BaseMagicalAttackCalculator extends CharacterCalculator { @SuppressWarnings("unchecked") diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseMagicalAttackSpeedCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseMagicalAttackSpeedCalculator.java index 21c1f5fc8..4d587a56a 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseMagicalAttackSpeedCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseMagicalAttackSpeedCalculator.java @@ -22,8 +22,14 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** - * @author Rogiel + * Calculates the base magical attack speed * + *
+ * ctx.result = c.getTemplate().getBaseMagicalAttackSpeed();
+ * ctx.result *= BaseStats.WIT.calculateBonus(c.getStats().getWitness());
+ * 
+ * + * @author Rogiel */ public class BaseMagicalAttackSpeedCalculator extends CharacterCalculator { @SuppressWarnings("unchecked") diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseMagicalCriticalRateCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseMagicalCriticalRateCalculator.java index 17f7fc3ed..2d418507e 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseMagicalCriticalRateCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseMagicalCriticalRateCalculator.java @@ -22,6 +22,13 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** + * Calculates the base magical attack critical rate + * + *
+ * ctx.result = c.getTemplate().getBaseCritical(); // must be checked
+ * ctx.result *= BaseStats.WIT.calculateBonus(c.getStats().getWitness());
+ * 
+ * * @author Rogiel */ public class BaseMagicalCriticalRateCalculator extends CharacterCalculator { diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseMagicalDefenseCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseMagicalDefenseCalculator.java index 6a207f0ba..5c4670efb 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseMagicalDefenseCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseMagicalDefenseCalculator.java @@ -29,6 +29,23 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** + * Calculates the character base magical defense. + * + *
+ * if (inv.has(LEFT_FINGER))
+ * 	ctx.result -= 5;
+ * if (inv.has(RIGHT_FINGER))
+ * 	ctx.result -= 5;
+ * if (inv.has(LEFT_EAR))
+ * 	ctx.result -= 9;
+ * if (inv.has(RIGHT_EAR))
+ * 	ctx.result -= 9;
+ * if (inv.has(NECK))
+ * 	ctx.result -= 13;
+ * ctx.result *= BaseStats.MEN.calculateBonus(c.getStats().getMentality())
+ * 		* ((100.0 - 11 + c.getLevel()) / 100.0);
+ * 
+ * * @author Rogiel */ public class BaseMagicalDefenseCalculator extends CharacterCalculator { diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseMentalityCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseMentalityCalculator.java index 1fe917ffc..2179ba8e0 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseMentalityCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseMentalityCalculator.java @@ -21,6 +21,12 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** + * Calculates the character base mentality + * + *
+ * ctx.result = c.getTemplate().getBaseMentality();
+ * 
+ * * @author Rogiel */ public class BaseMentalityCalculator extends CharacterCalculator { diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BasePhysicalAttackCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BasePhysicalAttackCalculator.java index db380426a..a2933e402 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BasePhysicalAttackCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BasePhysicalAttackCalculator.java @@ -22,8 +22,15 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** - * @author Rogiel + * Calculates the character base physical attack * + *
+ * ctx.result = c.getTemplate().getBasePhysicalAttack();
+ * ctx.result *= BaseStats.STR.calculateBonus(c.getStats().getStrength())
+ * 		* ((100.0 - 11 + c.getLevel()) / 100.0);
+ * 
+ * + * @author Rogiel */ public class BasePhysicalAttackCalculator extends CharacterCalculator { @SuppressWarnings("unchecked") diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BasePhysicalAttackSpeedCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BasePhysicalAttackSpeedCalculator.java index 96fbef299..a565a060e 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BasePhysicalAttackSpeedCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BasePhysicalAttackSpeedCalculator.java @@ -22,8 +22,14 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** - * @author Rogiel + * Calculates the character base physical attack speed * + *
+ * ctx.result = c.getTemplate().getBasePhysicalAttackSpeed();
+ * ctx.result *= BaseStats.DEX.calculateBonus(c.getStats().getDexterity());
+ * 
+ * + * @author Rogiel */ public class BasePhysicalAttackSpeedCalculator extends CharacterCalculator { @SuppressWarnings("unchecked") diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BasePhysicalCriticalRateCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BasePhysicalCriticalRateCalculator.java index 2ad8ce953..923955265 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BasePhysicalCriticalRateCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BasePhysicalCriticalRateCalculator.java @@ -22,6 +22,14 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** + * Calculates the character base critical rate + * + *
+ * ctx.result = c.getTemplate().getBaseCritical();
+ * ctx.result *= BaseStats.DEX.calculateBonus(c.getStats().getDexterity());
+ * ctx.result *= 10;
+ * 
+ * * @author Rogiel */ public class BasePhysicalCriticalRateCalculator extends CharacterCalculator { diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BasePhysicalDefenseCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BasePhysicalDefenseCalculator.java index 2f4108306..246ce5ff8 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BasePhysicalDefenseCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BasePhysicalDefenseCalculator.java @@ -31,6 +31,25 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** + * Calculates the character base physical defense + * + *
+ * ctx.result = c.getTemplate().getBasePhysicalDefense();
+ * 
+ * if (inv.has(HEAD))
+ * 	ctx.result -= 12;
+ * final Item chest = inv.getItem(CHEST);
+ * if (chest != null)
+ * 	ctx.result -= hasMagePDef ? 15 : 31;
+ * if (inv.has(LEGS))
+ * 	ctx.result -= hasMagePDef ? 8 : 18;
+ * if (inv.has(GLOVES))
+ * 	ctx.result -= 8;
+ * if (inv.has(FEET))
+ * 	ctx.result -= 7;
+ * ctx.result *= ((100.0 - 11 + c.getLevel()) / 100.0);
+ * 
+ * * @author Rogiel */ public class BasePhysicalDefenseCalculator extends CharacterCalculator { diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseRunSpeedCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseRunSpeedCalculator.java index 86e059942..aacd974cd 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseRunSpeedCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseRunSpeedCalculator.java @@ -22,8 +22,14 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** - * @author Rogiel + * Calculates the character base run speed * + *
+ * ctx.result = c.getTemplate().getBaseRunSpeed();
+ * ctx.result *= BaseStats.DEX.calculateBonus(c.getStats().getDexterity());
+ * 
+ * + * @author Rogiel */ public class BaseRunSpeedCalculator extends CharacterCalculator { @SuppressWarnings("unchecked") diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseStrengthCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseStrengthCalculator.java index c27b89470..a9098c8f9 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseStrengthCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseStrengthCalculator.java @@ -21,6 +21,12 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** + * Calculates the character base strength + * + *
+ * ctx.result = c.getTemplate().getBaseStrength();
+ * 
+ * * @author Rogiel */ public class BaseStrengthCalculator extends CharacterCalculator { diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseWalkSpeedCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseWalkSpeedCalculator.java index 9d7b63e28..0dfbef68c 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseWalkSpeedCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseWalkSpeedCalculator.java @@ -22,8 +22,14 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** - * @author Rogiel + * Calculates the character base walk speed * + *
+ * ctx.result = c.getTemplate().getBaseWalkSpeed();
+ * ctx.result *= BaseStats.DEX.calculateBonus(c.getStats().getDexterity());
+ * 
+ * + * @author Rogiel */ public class BaseWalkSpeedCalculator extends CharacterCalculator { @SuppressWarnings("unchecked") diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/BaseWitnessCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/BaseWitnessCalculator.java index 950244289..084ef0042 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/BaseWitnessCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/BaseWitnessCalculator.java @@ -21,6 +21,12 @@ import com.l2jserver.util.calculator.AbstractFunction; import com.l2jserver.util.calculator.CalculatorContext; /** + * Calculates the character base witness + * + *
+ * ctx.result = c.getTemplate().getBaseWitness();
+ * 
+ * * @author Rogiel */ public class BaseWitnessCalculator extends CharacterCalculator { diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculator.java b/src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculator.java index 4ab6d5387..8d6220a5f 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculator.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculator.java @@ -21,12 +21,12 @@ import com.l2jserver.util.calculator.Calculator; import com.l2jserver.util.calculator.Function; /** - * @author Rogiel + * An calculator for character formulas. * + * @author Rogiel */ public class CharacterCalculator extends Calculator { - public CharacterCalculator( - Function... functions) { + public CharacterCalculator(Function... functions) { super(functions); } } diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculatorContext.java b/src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculatorContext.java index 946fc56c6..558e67dcb 100644 --- a/src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculatorContext.java +++ b/src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculatorContext.java @@ -20,8 +20,9 @@ import com.l2jserver.model.world.L2Character; import com.l2jserver.model.world.actor.calculator.ActorCalculatorContext; /** - * @author Rogiel + * Calculator context for character formulas * + * @author Rogiel */ public class CharacterCalculatorContext extends ActorCalculatorContext { /** diff --git a/src/main/java/com/l2jserver/service/configuration/ProxyConfigurationService.java b/src/main/java/com/l2jserver/service/configuration/ProxyConfigurationService.java index abb3182f8..b9860b740 100644 --- a/src/main/java/com/l2jserver/service/configuration/ProxyConfigurationService.java +++ b/src/main/java/com/l2jserver/service/configuration/ProxyConfigurationService.java @@ -85,7 +85,6 @@ public class ProxyConfigurationService extends AbstractService implements Properties properties; try { properties = findProperties(config); - System.out.println(properties); } catch (IOException e) { properties = new Properties(); logger.info(