Index: C:/l2j_dev/workspace/L2_GameServer_C5/java/net/sf/l2j/gameserver/skills/Stats.java =================================================================== --- C:/l2j_dev/workspace/L2_GameServer_C5/java/net/sf/l2j/gameserver/skills/Stats.java (revision 524) +++ C:/l2j_dev/workspace/L2_GameServer_C5/java/net/sf/l2j/gameserver/skills/Stats.java (working copy) @@ -25,253 +25,163 @@ * * @author mkizub */ -public enum Stats { +public enum Stats +{ // // Base stats, for each in Calculator a slot is allocated // // HP & MP - MAX_HP, - MAX_MP, - MAX_CP, - REGENERATE_HP_RATE, - REGENERATE_CP_RATE, - REGENERATE_MP_RATE, - RECHARGE_MP_RATE, - HEAL_EFFECTIVNESS, + MAX_HP ("maxHp"), + MAX_MP ("maxMp"), + MAX_CP ("maxCp"), + REGENERATE_HP_RATE ("regHp"), + REGENERATE_CP_RATE ("regCp"), + REGENERATE_MP_RATE ("regMp"), + RECHARGE_MP_RATE ("gainMp"), + HEAL_EFFECTIVNESS ("gainHp"), // Atk & Def - POWER_DEFENCE, - MAGIC_DEFENCE, - POWER_ATTACK, - MAGIC_ATTACK, - POWER_ATTACK_SPEED, - MAGIC_ATTACK_SPEED, // how fast a spell is casted (including animation) - MAGIC_REUSE_RATE, // how fast spells becomes ready to reuse - SHIELD_DEFENCE, - CRITICAL_DAMAGE, + POWER_DEFENCE ("pDef"), + MAGIC_DEFENCE ("mDef"), + POWER_ATTACK ("pAtk"), + MAGIC_ATTACK ("mAtk"), + POWER_ATTACK_SPEED ("pAtkSpd"), + MAGIC_ATTACK_SPEED ("mAtkSpd"), // how fast a spell is casted (including animation) + MAGIC_REUSE_RATE ("mReuse"), // how fast spells becomes ready to reuse + SHIELD_DEFENCE ("sDef"), + CRITICAL_DAMAGE ("cAtk"), // Atk & Def rates - EVASION_RATE, - SHIELD_RATE, - CRITICAL_RATE, - MCRITICAL_RATE, - EXPSP_RATE, - ATTACK_CANCEL, + EVASION_RATE ("rEvas"), + SHIELD_RATE ("rShld"), + CRITICAL_RATE ("rCrit" ), + MCRITICAL_RATE ("mCritRate"), + EXPSP_RATE ("rExp"), + ATTACK_CANCEL ("cancel"), // Accuracy and range - ACCURACY_COMBAT, - POWER_ATTACK_RANGE, - MAGIC_ATTACK_RANGE, - POWER_ATTACK_ANGLE, + ACCURACY_COMBAT ("accCombat"), + POWER_ATTACK_RANGE ("pAtkRange"), + MAGIC_ATTACK_RANGE ("mAtkRange"), + POWER_ATTACK_ANGLE ("pAtkAngle"), // Run speed, // walk & escape speed are calculated proportionally, // magic speed is a buff - RUN_SPEED, + RUN_SPEED ("runSpd"), // // Player-only stats // - STAT_STR, - STAT_CON, - STAT_DEX, - STAT_INT, - STAT_WIT, - STAT_MEN, + STAT_STR ("STR"), + STAT_CON ("CON"), + STAT_DEX ("DEX"), + STAT_INT ("INT"), + STAT_WIT ("WIT"), + STAT_MEN ("MEN"), // // Special stats, share one slot in Calculator // // stats of various abilities - BREATH, + BREATH ("breath"), // - AGGRESSION, // locks a mob on tank caster - BLEED, // by daggers, like poison - POISON, // by magic, hp dmg over time - STUN, // disable move/ATTACK for a period of time - ROOT, // disable movement, but not ATTACK - MOVEMENT, // slowdown movement, debuff - CONFUSION, // mob changes target, opposite to aggression/hate - SLEEP, // sleep (don't move/ATTACK) until attacked - FIRE, - WIND, - WATER, - EARTH, - HOLY, - DARK, + AGGRESSION ("aggression"), // locks a mob on tank caster + BLEED ("bleed"), // by daggers, like poison + POISON ("poison"), // by magic, hp dmg over time + STUN ("stun"), // disable move/ATTACK for a period of time + ROOT ("root"), // disable movement, but not ATTACK + MOVEMENT ("movement"), // slowdown movement, debuff + CONFUSION ("confusion"), // mob changes target, opposite to aggression/hate + SLEEP ("sleep"), // sleep (don't move/ATTACK) until attacked + FIRE ("fire"), + WIND ("wind"), + WATER ("water"), + EARTH ("earth"), + HOLY ("holy"), + DARK ("dark"), // - AGGRESSION_RES, - BLEED_RES, - POISON_RES, - STUN_RES, - PARALYZE_RES, - ROOT_RES, - SLEEP_RES, - CONFUSION_RES, - MUTE_RES, - MOVEMENT_RES, - FIRE_RES, - WIND_RES, - WATER_RES, - EARTH_RES, - HOLY_RES, - DARK_RES, + AGGRESSION_RES ("aggressionRes"), + BLEED_RES ("bleedRes"), + POISON_RES ("poisonRes"), + STUN_RES ("stunRes"), + PARALYZE_RES ("paralyzeRes"), + ROOT_RES ("rootRes"), + SLEEP_RES ("sleepRes"), + CONFUSION_RES ("confusionRes"), + MUTE_RES ("muteRes"), + MOVEMENT_RES ("movementRes"), + FIRE_RES ("fireRes"), + WIND_RES ("windRes"), + WATER_RES ("waterRes"), + EARTH_RES ("earthRes"), + HOLY_RES ("holyRes"), + DARK_RES ("darkRes"), - NONE_WPN_RES, // Shields!!! - SWORD_WPN_RES, - BLUNT_WPN_RES, - DAGGER_WPN_RES, - BOW_WPN_RES, - POLE_WPN_RES, - ETC_WPN_RES, - FIST_WPN_RES, - DUAL_WPN_RES, - DUALFIST_WPN_RES, + NONE_WPN_RES ("noneWpnRes"), // Shields!!! + SWORD_WPN_RES ("swordWpnRes"), + BLUNT_WPN_RES ("bluntWpnRes"), + DAGGER_WPN_RES ("daggerWpnRes"), + BOW_WPN_RES ("bowWpnRes"), + POLE_WPN_RES ("poleWpnRes"), + ETC_WPN_RES ("etcWpnRes"), + FIST_WPN_RES ("fistWpnRes"), + DUAL_WPN_RES ("dualWpnRes"), + DUALFIST_WPN_RES("dualFistWpnRes"), - REFLECT_DAMAGE_PERCENT, - ABSORB_DAMAGE_PERCENT, - TRANSFER_DAMAGE_PERCENT, + REFLECT_DAMAGE_PERCENT ("reflectDam"), + ABSORB_DAMAGE_PERCENT ("absorbDam"), + TRANSFER_DAMAGE_PERCENT ("transDam"), - MAX_LOAD, + MAX_LOAD ("maxLoad"), - PATK_PLANTS, - PATK_INSECTS, - PATK_ANIMALS, - PATK_MONSTERS, - PATK_DRAGONS, - PATK_UNDEAD, + PATK_PLANTS ("pAtk-plants"), + PATK_INSECTS ("pAtk-insects"), + PATK_ANIMALS ("pAtk-animals"), + PATK_MONSTERS ("pAtk-monsters"), + PATK_DRAGONS ("pAtk-dragons"), + PATK_UNDEAD ("pAtk-undead"), - PDEF_UNDEAD, + PDEF_UNDEAD ("pDef-undead"), - ATK_REUSE, + ATK_REUSE ("atkReuse"), //ExSkill :) - INV_LIM, - WH_LIM, - FREIGHT_LIM, - P_SELL_LIM, - P_BUY_LIM, - REC_D_LIM, - REC_C_LIM, + INV_LIM ("inventoryLimit"), + WH_LIM ("whLimit"), + FREIGHT_LIM ("FreightLimit"), + P_SELL_LIM ("PrivateSellLimit"), + P_BUY_LIM ("PrivateBuyLimit"), + REC_D_LIM ("DwarfRecipeLimit"), + REC_C_LIM ("CommonRecipeLimit"), //C4 Stats - MP_CONSUME_RATE, - HP_CONSUME_RATE, - MP_CONSUME, - SOULSHOT_COUNT + MP_CONSUME_RATE ("MpConsumeRate"), + HP_CONSUME_RATE ("HpConsumeRate"), + MP_CONSUME ("MpConsume"), + SOULSHOT_COUNT ("soulShotCount") ; public static final int NUM_STATS = values().length; - + + private String _value; + + public String getValue() + { + return _value; + } + private Stats(String s) + { + _value = s; + } public static Stats valueOfXml(String name) { name = name.intern(); - if (name == "maxHp" ) return MAX_HP; - if (name == "maxCp" ) return MAX_CP; - if (name == "maxMp" ) return MAX_MP; - if (name == "regHp" ) return REGENERATE_HP_RATE; - if (name == "regCp" ) return REGENERATE_CP_RATE; - if (name == "regMp" ) return REGENERATE_MP_RATE; - if (name == "gainMp" ) return RECHARGE_MP_RATE; - if (name == "gainHp" ) return HEAL_EFFECTIVNESS; - if (name == "pDef" ) return POWER_DEFENCE; - if (name == "mDef" ) return MAGIC_DEFENCE; - if (name == "pAtk" ) return POWER_ATTACK; - if (name == "mAtk" ) return MAGIC_ATTACK; - if (name == "pAtkSpd" ) return POWER_ATTACK_SPEED; - if (name == "mAtkSpd" ) return MAGIC_ATTACK_SPEED; - if (name == "mReuse" ) return MAGIC_REUSE_RATE; - if (name == "sDef" ) return SHIELD_DEFENCE; - if (name == "cAtk" ) return CRITICAL_DAMAGE; - if (name == "rEvas" ) return EVASION_RATE; - if (name == "rShld" ) return SHIELD_RATE; - if (name == "rCrit" ) return CRITICAL_RATE; - if (name == "rExp" ) return EXPSP_RATE; - if (name == "cancel" ) return ATTACK_CANCEL; - if (name == "accCombat") return ACCURACY_COMBAT; - if (name == "pAtkRange" ) return POWER_ATTACK_RANGE; - if (name == "mAtkRange" ) return MAGIC_ATTACK_RANGE; - if (name == "pAtkAngle" ) return POWER_ATTACK_ANGLE; - if (name == "runSpd" ) return RUN_SPEED; - if (name == "breath" ) return BREATH; - if (name == "aggression" ) return AGGRESSION; - if (name == "bleed" ) return BLEED; - if (name == "poison" ) return POISON; - if (name == "stun" ) return STUN; - if (name == "root" ) return ROOT; - if (name == "movement" ) return MOVEMENT; - if (name == "confusion" ) return CONFUSION; - if (name == "sleep" ) return SLEEP; - if (name == "fire" ) return FIRE; - if (name == "wind" ) return WIND; - if (name == "water" ) return WATER; - if (name == "earth" ) return EARTH; - if (name == "holy" ) return HOLY; - if (name == "dark" ) return DARK; - if (name == "aggressionRes") return AGGRESSION_RES; - if (name == "bleedRes" ) return BLEED_RES; - if (name == "poisonRes" ) return POISON_RES; - if (name == "stunRes" ) return STUN_RES; - if (name == "paralyzeRes" ) return PARALYZE_RES; - if (name == "rootRes" ) return ROOT_RES; - if (name == "sleepRes" ) return SLEEP_RES; - if (name == "confusionRes" ) return CONFUSION_RES; - if (name == "muteRes" ) return MUTE_RES; - if (name == "movementRes" ) return MOVEMENT_RES; - if (name == "fireRes" ) return FIRE_RES; - if (name == "windRes" ) return WIND_RES; - if (name == "waterRes" ) return WATER_RES; - if (name == "earthRes" ) return EARTH_RES; - if (name == "holyRes" ) return HOLY_RES; - if (name == "darkRes" ) return DARK_RES; - - if (name == "noneWpnRes" ) return NONE_WPN_RES; - if (name == "swordWpnRes" ) return SWORD_WPN_RES; - if (name == "bluntWpnRes" ) return BLUNT_WPN_RES; - if (name == "daggerWpnRes" ) return DAGGER_WPN_RES; - if (name == "bowWpnRes" ) return BOW_WPN_RES; - if (name == "poleWpnRes" ) return POLE_WPN_RES; - if (name == "etcWpnRes" ) return ETC_WPN_RES; - if (name == "fistWpnRes" ) return FIST_WPN_RES; - if (name == "dualWpnRes" ) return DUAL_WPN_RES; - if (name == "dualFistWpnRes")return DUALFIST_WPN_RES; + for(Stats s: values()) + { + if(s.getValue().equals(name)) + return s; + } - if (name == "STR" ) return STAT_STR; - if (name == "CON" ) return STAT_CON; - if (name == "DEX" ) return STAT_DEX; - if (name == "INT" ) return STAT_INT; - if (name == "WIT" ) return STAT_WIT; - if (name == "MEN" ) return STAT_MEN; - - if (name == "reflectDam" ) return REFLECT_DAMAGE_PERCENT; - if (name == "absorbDam" ) return ABSORB_DAMAGE_PERCENT; - if (name == "transDam" ) return TRANSFER_DAMAGE_PERCENT; - if (name == "mCritRate" ) return MCRITICAL_RATE; - - if (name == "maxLoad" ) return MAX_LOAD; - - if (name == "pAtk-undead" ) return PATK_UNDEAD; - if (name == "pDef-undead" ) return PDEF_UNDEAD; - if (name == "pAtk-plants" ) return PATK_PLANTS; - if (name == "pAtk-insects" ) return PATK_INSECTS; - if (name == "pAtk-animals" ) return PATK_ANIMALS; - if (name == "pAtk-monsters" ) return PATK_MONSTERS; - if (name == "pAtk-dragons" ) return PATK_DRAGONS; - - if (name == "atkReuse" ) return ATK_REUSE; - //Nowe xD - if (name == "inventoryLimit" ) return INV_LIM; - if (name == "whLimit" ) return WH_LIM; - if (name == "FreightLimit" ) return FREIGHT_LIM; - if (name == "PrivateSellLimit" ) return P_SELL_LIM; - if (name == "PrivateBuyLimit" ) return P_BUY_LIM; - if (name == "DwarfRecipeLimit" ) return REC_D_LIM; - if (name == "CommonRecipeLimit" ) return REC_C_LIM; - - //C4 Stats - if (name == "MpConsumeRate" ) return MP_CONSUME_RATE; - if (name == "HpConsumeRate" ) return HP_CONSUME_RATE; - if (name == "MpConsume" ) return MP_CONSUME; - if (name == "soulShotCount" ) return SOULSHOT_COUNT; throw new NoSuchElementException("Unknown name '"+name+"' for enum BaseStats"); } }