/*
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If
* not, see <http://www.gnu.org/licenses/>.
*/
package silentium.gameserver.skills;
import java.util.NoSuchElementException;
/**
* Enum of basic stats.
*
* @author mkizub
*/
public enum Stats
{
// HP & MP
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"), HEAL_PROFICIENCY("giveHp"),
// Atk & Def
POWER_DEFENCE("pDef"), MAGIC_DEFENCE("mDef"), POWER_ATTACK("pAtk"), MAGIC_ATTACK("mAtk"), POWER_ATTACK_SPEED("pAtkSpd"), MAGIC_ATTACK_SPEED("mAtkSpd"), MAGIC_REUSE_RATE("mReuse"), ATK_REUSE("atkReuse"), P_REUSE("pReuse"), SHIELD_DEFENCE("sDef"),
CRITICAL_DAMAGE("cAtk"), CRITICAL_DAMAGE_ADD("cAtkAdd"),
PVP_PHYSICAL_DMG("pvpPhysDmg"), PVP_MAGICAL_DMG("pvpMagicalDmg"), PVP_PHYS_SKILL_DMG("pvpPhysSkillsDmg"), PVP_PHYS_SKILL_DEF("pvpPhysSkillsDef"),
// Atk & Def rates
EVASION_RATE("rEvas"), P_SKILL_EVASION("pSkillEvas"), SHIELD_RATE("rShld"), CRITICAL_RATE("rCrit"), BLOW_RATE("blowRate"), LETHAL_RATE("lethalRate"), MCRITICAL_RATE("mCritRate"), EXPSP_RATE("rExp"), ATTACK_CANCEL("cancel"),
// Accuracy and range
ACCURACY_COMBAT("accCombat"), POWER_ATTACK_RANGE("pAtkRange"), MAGIC_ATTACK_RANGE("mAtkRange"), POWER_ATTACK_ANGLE("pAtkAngle"), ATTACK_COUNT_MAX("atkCountMax"),
// Run & walk speed
RUN_SPEED("runSpd"), WALK_SPEED("walkSpd"),
// Player-only stats
STAT_STR("STR"), STAT_CON("CON"), STAT_DEX("DEX"), STAT_INT("INT"), STAT_WIT("WIT"), STAT_MEN("MEN"),
// stats of various abilities
BREATH("breath"), FALL("fall"),
// Abnormal effects
AGGRESSION("aggression"), BLEED("bleed"), POISON("poison"), STUN("stun"), ROOT("root"), MOVEMENT("movement"), CONFUSION("confusion"), SLEEP("sleep"),
VALAKAS("valakas"), VALAKAS_RES("valakasRes"),
// Elements
FIRE("fire"), WIND("wind"), WATER("water"), EARTH("earth"), HOLY("holy"), DARK("dark"),
// Elemental resistances/vulnerabilities
FIRE_RES("fireRes"), WIND_RES("windRes"), WATER_RES("waterRes"), EARTH_RES("earthRes"), HOLY_RES("holyRes"), DARK_RES("darkRes"),
// Elemental power (used for skills such as Holy blade)
FIRE_POWER("firePower"), WATER_POWER("waterPower"), WIND_POWER("windPower"), EARTH_POWER("earthPower"), HOLY_POWER("holyPower"), DARK_POWER("darkPower"),
// Vulnerabilities
BLEED_VULN("bleedVuln"), POISON_VULN("poisonVuln"), STUN_VULN("stunVuln"), PARALYZE_VULN("paralyzeVuln"), ROOT_VULN("rootVuln"), SLEEP_VULN("sleepVuln"), DAMAGE_ZONE_VULN("damageZoneVuln"), CRIT_VULN("critVuln"), // Resistance
// to
// Crit
// DMG.
CANCEL_VULN("cancelVuln"), DERANGEMENT_VULN("derangementVuln"), DEBUFF_VULN("debuffVuln"),
// Weapons vuln
NONE_WPN_VULN("noneWpnVuln"), // Shields
SWORD_WPN_VULN("swordWpnVuln"), BLUNT_WPN_VULN("bluntWpnVuln"), DAGGER_WPN_VULN("daggerWpnVuln"), BOW_WPN_VULN("bowWpnVuln"), POLE_WPN_VULN("poleWpnVuln"), ETC_WPN_VULN("etcWpnVuln"), FIST_WPN_VULN("fistWpnVuln"), DUAL_WPN_VULN("dualWpnVuln"), DUALFIST_WPN_VULN("dualFistWpnVuln"), BIGSWORD_WPN_VULN("bigSwordWpnVuln"), BIGBLUNT_WPN_VULN("bigBluntWpnVuln"),
REFLECT_DAMAGE_PERCENT("reflectDam"), REFLECT_SKILL_MAGIC("reflectSkillMagic"), REFLECT_SKILL_PHYSIC("reflectSkillPhysic"), VENGEANCE_SKILL_MAGIC_DAMAGE("vengeanceMdam"), VENGEANCE_SKILL_PHYSICAL_DAMAGE("vengeancePdam"), ABSORB_DAMAGE_PERCENT("absorbDam"), TRANSFER_DAMAGE_PERCENT("transDam"),
PATK_PLANTS("pAtk-plants"), PATK_INSECTS("pAtk-insects"), PATK_ANIMALS("pAtk-animals"), PATK_MONSTERS("pAtk-monsters"), PATK_DRAGONS("pAtk-dragons"), PATK_GIANTS("pAtk-giants"), PATK_MCREATURES("pAtk-magicCreature"),
PDEF_PLANTS("pDef-plants"), PDEF_INSECTS("pDef-insects"), PDEF_ANIMALS("pDef-animals"), PDEF_MONSTERS("pDef-monsters"), PDEF_DRAGONS("pDef-dragons"), PDEF_GIANTS("pDef-giants"), PDEF_MCREATURES("pDef-magicCreature"),
// ExSkill :)
MAX_LOAD("maxLoad"), 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
PHYSICAL_MP_CONSUME_RATE("PhysicalMpConsumeRate"), MAGICAL_MP_CONSUME_RATE("MagicalMpConsumeRate"), DANCE_MP_CONSUME_RATE("DanceMpConsumeRate"), BOW_MP_CONSUME_RATE("BowMpConsumeRate"), HP_CONSUME_RATE("HpConsumeRate"), MP_CONSUME("MpConsume"), SOULSHOT_COUNT("soulShotCount"),
// Shield Stats
SHIELD_DEFENCE_ANGLE("shieldDefAngle"),
// Skill mastery
SKILL_MASTERY("skillMastery");
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();
for (Stats s : values())
{
if (s.getValue().equals(name))
return s;
}
throw new NoSuchElementException("Unknown name '" + name + "' for enum BaseStats");
}
}