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
+ * 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