Stats.java 5.5 KB

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