Stats.java 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. /*
  2. * This program is free software: you can redistribute it and/or modify it under
  3. * the terms of the GNU General Public License as published by the Free Software
  4. * Foundation, either version 3 of the License, or (at your option) any later
  5. * version.
  6. *
  7. * This program is distributed in the hope that it will be useful, but WITHOUT
  8. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  9. * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  10. * details.
  11. *
  12. * You should have received a copy of the GNU General Public License along with
  13. * this program. If not, see <http://www.gnu.org/licenses/>.
  14. */
  15. package net.sf.l2j.gameserver.skills;
  16. import java.util.NoSuchElementException;
  17. /**
  18. * Enum of basic stats.
  19. *
  20. * @author mkizub
  21. */
  22. public enum Stats
  23. {
  24. //
  25. // Base stats, for each in Calculator a slot is allocated
  26. //
  27. // HP & MP
  28. MAX_HP ("maxHp"),
  29. MAX_MP ("maxMp"),
  30. MAX_CP ("maxCp"),
  31. REGENERATE_HP_RATE ("regHp"),
  32. REGENERATE_CP_RATE ("regCp"),
  33. REGENERATE_MP_RATE ("regMp"),
  34. RECHARGE_MP_RATE ("gainMp"),
  35. HEAL_EFFECTIVNESS ("gainHp"),
  36. HEAL_PROFICIENCY ("giveHp"),
  37. HEAL_STATIC_BONUS ("bonusHp"),
  38. // Atk & Def
  39. POWER_DEFENCE ("pDef"),
  40. MAGIC_DEFENCE ("mDef"),
  41. POWER_ATTACK ("pAtk"),
  42. MAGIC_ATTACK ("mAtk"),
  43. POWER_ATTACK_SPEED ("pAtkSpd"),
  44. MAGIC_ATTACK_SPEED ("mAtkSpd"), // how fast a spell is casted (including animation)
  45. MAGIC_REUSE_RATE ("mReuse"), // how fast spells becomes ready to reuse
  46. SHIELD_DEFENCE ("sDef"),
  47. CRITICAL_DAMAGE ("cAtk"),
  48. PVP_PHYSICAL_DMG ("pvpPhysDmg"),
  49. PVP_MAGICAL_DMG ("pvpMagicalDmg"),
  50. PVP_PHYS_SKILL_DMG ("pvpPhysSkillsDmg"),
  51. // Atk & Def rates
  52. EVASION_RATE ("rEvas"),
  53. SHIELD_RATE ("rShld"),
  54. CRITICAL_RATE ("rCrit" ),
  55. BLOW_RATE ("blowRate" ),
  56. LETHAL_RATE ("lethalRate" ),
  57. MCRITICAL_RATE ("mCritRate"),
  58. EXPSP_RATE ("rExp"),
  59. ATTACK_CANCEL ("cancel"),
  60. // Accuracy and range
  61. ACCURACY_COMBAT ("accCombat"),
  62. POWER_ATTACK_RANGE ("pAtkRange"),
  63. MAGIC_ATTACK_RANGE ("mAtkRange"),
  64. POWER_ATTACK_ANGLE ("pAtkAngle"),
  65. ATTACK_COUNT_MAX ("atkCountMax"),
  66. // Run speed,
  67. // walk & escape speed are calculated proportionally,
  68. // magic speed is a buff
  69. RUN_SPEED ("runSpd"),
  70. WALK_SPEED ("walkSpd"),
  71. //
  72. // Player-only stats
  73. //
  74. STAT_STR ("STR"),
  75. STAT_CON ("CON"),
  76. STAT_DEX ("DEX"),
  77. STAT_INT ("INT"),
  78. STAT_WIT ("WIT"),
  79. STAT_MEN ("MEN"),
  80. //
  81. // Special stats, share one slot in Calculator
  82. //
  83. // stats of various abilities
  84. BREATH ("breath"),
  85. //
  86. AGGRESSION ("aggression"), // locks a mob on tank caster
  87. BLEED ("bleed"), // by daggers, like poison
  88. POISON ("poison"), // by magic, hp dmg over time
  89. STUN ("stun"), // disable move/ATTACK for a period of time
  90. ROOT ("root"), // disable movement, but not ATTACK
  91. MOVEMENT ("movement"), // slowdown movement, debuff
  92. CONFUSION ("confusion"), // mob changes target, opposite to aggression/hate
  93. SLEEP ("sleep"), // sleep (don't move/ATTACK) until attacked
  94. FIRE ("fire"),
  95. WIND ("wind"),
  96. WATER ("water"),
  97. EARTH ("earth"),
  98. HOLY ("holy"),
  99. DARK ("dark"),
  100. //
  101. AGGRESSION_VULN ("aggressionVuln"),
  102. BLEED_VULN ("bleedVuln"),
  103. POISON_VULN ("poisonVuln"),
  104. STUN_VULN ("stunVuln"),
  105. PARALYZE_VULN ("paralyzeVuln"),
  106. ROOT_VULN ("rootVuln"),
  107. SLEEP_VULN ("sleepVuln"),
  108. CONFUSION_VULN ("confusionVuln"),
  109. MOVEMENT_VULN ("movementVuln"),
  110. FIRE_VULN ("fireVuln"),
  111. WIND_VULN ("windVuln"),
  112. WATER_VULN ("waterVuln"),
  113. EARTH_VULN ("earthVuln"),
  114. HOLY_VULN ("holyVuln"),
  115. DARK_VULN ("darkVuln"),
  116. CANCEL_VULN ("cancelVuln"), // Resistance for cancel type skills
  117. DERANGEMENT_VULN("derangementVuln"),
  118. DEBUFF_VULN ("debuffVuln"),
  119. CRIT_VULN ("critVuln"), // Resistence to Crit DMG.
  120. NONE_WPN_VULN ("noneWpnVuln"), // Shields!!!
  121. SWORD_WPN_VULN ("swordWpnVuln"),
  122. BLUNT_WPN_VULN ("bluntWpnVuln"),
  123. DAGGER_WPN_VULN ("daggerWpnVuln"),
  124. BOW_WPN_VULN ("bowWpnVuln"),
  125. CROSSBOW_WPN_VULN ("crossbowWpnVuln"),
  126. POLE_WPN_VULN ("poleWpnVuln"),
  127. ETC_WPN_VULN ("etcWpnVuln"),
  128. FIST_WPN_VULN ("fistWpnVuln"),
  129. DUAL_WPN_VULN ("dualWpnVuln"),
  130. DUALFIST_WPN_VULN("dualFistWpnVuln"),
  131. REFLECT_DAMAGE_PERCENT ("reflectDam"),
  132. REFLECT_SKILL_MAGIC ("reflectSkillMagic"),
  133. REFLECT_SKILL_PHYSIC ("reflectSkillPhysic"),
  134. ABSORB_DAMAGE_PERCENT ("absorbDam"),
  135. TRANSFER_DAMAGE_PERCENT ("transDam"),
  136. MAX_LOAD ("maxLoad"),
  137. PATK_PLANTS ("pAtk-plants"),
  138. PATK_INSECTS ("pAtk-insects"),
  139. PATK_ANIMALS ("pAtk-animals"),
  140. PATK_MONSTERS ("pAtk-monsters"),
  141. PATK_DRAGONS ("pAtk-dragons"),
  142. PATK_UNDEAD ("pAtk-undead"),
  143. PATK_GIANTS ("pAtk-giants"),
  144. PDEF_PLANTS ("pDef-plants"),
  145. PDEF_INSECTS ("pDef-insects"),
  146. PDEF_ANIMALS ("pDef-animals"),
  147. PDEF_MONSTERS ("pDef-monsters"),
  148. PDEF_DRAGONS ("pDef-dragons"),
  149. PDEF_UNDEAD ("pDef-undead"),
  150. PDEF_GIANTS ("pDef-giants"),
  151. ATK_REUSE ("atkReuse"),
  152. P_REUSE ("pReuse"),
  153. //ExSkill :)
  154. INV_LIM ("inventoryLimit"),
  155. WH_LIM ("whLimit"),
  156. FREIGHT_LIM ("FreightLimit"),
  157. P_SELL_LIM ("PrivateSellLimit"),
  158. P_BUY_LIM ("PrivateBuyLimit"),
  159. REC_D_LIM ("DwarfRecipeLimit"),
  160. REC_C_LIM ("CommonRecipeLimit"),
  161. //C4 Stats
  162. MP_CONSUME_RATE ("MpConsumeRate"),
  163. HP_CONSUME_RATE ("HpConsumeRate"),
  164. MP_CONSUME ("MpConsume"),
  165. SOULSHOT_COUNT ("soulShotCount"),
  166. //T1 stats
  167. transformId ("transformId"),
  168. //Shield Stats
  169. SHIELD_DEFENCE_ANGLE ("shieldDefAngle");
  170. public static final int NUM_STATS = values().length;
  171. private String _value;
  172. public String getValue()
  173. {
  174. return _value;
  175. }
  176. private Stats(String s)
  177. {
  178. _value = s;
  179. }
  180. public static Stats valueOfXml(String name)
  181. {
  182. name = name.intern();
  183. for(Stats s: values())
  184. {
  185. if(s.getValue().equals(name))
  186. return s;
  187. }
  188. throw new NoSuchElementException("Unknown name '"+name+"' for enum BaseStats");
  189. }
  190. }