277 lines
8.0 KiB
Java
277 lines
8.0 KiB
Java
/*
|
|
* 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 com.l2jserver.gameserver.skills;
|
|
|
|
import java.util.NoSuchElementException;
|
|
|
|
/**
|
|
* Enum of basic stats.
|
|
* @author mkizub
|
|
*/
|
|
public enum Stats
|
|
{
|
|
// Base stats, for each in Calculator a slot is allocated
|
|
|
|
// 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"),
|
|
HEAL_STATIC_BONUS("bonusHp"),
|
|
LIMIT_HP("limitHp"), // non-displayed hp limit
|
|
|
|
// ATTACK & DEFENCE
|
|
POWER_DEFENCE("pDef"),
|
|
MAGIC_DEFENCE("mDef"),
|
|
POWER_ATTACK("pAtk"),
|
|
MAGIC_ATTACK("mAtk"),
|
|
PHYSICAL_SKILL_POWER("physicalSkillPower"),
|
|
POWER_ATTACK_SPEED("pAtkSpd"),
|
|
MAGIC_ATTACK_SPEED("mAtkSpd"), // how fast a magic spell is casted (including animation)
|
|
ATK_REUSE("atkReuse"), // make bows hit simple hits way slower and will not affect skills
|
|
P_REUSE("pReuse"),
|
|
MAGIC_REUSE_RATE("mReuse"), // how fast a magic spell becomes ready to reuse
|
|
SHIELD_DEFENCE("sDef"),
|
|
CRITICAL_DAMAGE("cAtk"),
|
|
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, crit power and crit damage SA
|
|
// it was totally bad since now...
|
|
MAGIC_CRIT_DMG("mCritPower"),
|
|
|
|
// PVP BONUS
|
|
PVP_PHYSICAL_DMG("pvpPhysDmg"),
|
|
PVP_MAGICAL_DMG("pvpMagicalDmg"),
|
|
PVP_PHYS_SKILL_DMG("pvpPhysSkillsDmg"),
|
|
PVP_PHYSICAL_DEF("pvpPhysDef"),
|
|
PVP_MAGICAL_DEF("pvpMagicalDef"),
|
|
PVP_PHYS_SKILL_DEF("pvpPhysSkillsDef"),
|
|
|
|
// PVE BONUS
|
|
PVE_PHYSICAL_DMG("pvePhysDmg"),
|
|
PVE_PHYS_SKILL_DMG("pvePhysSkillsDmg"),
|
|
PVE_BOW_DMG("pveBowDmg"),
|
|
PVE_BOW_SKILL_DMG("pveBowSkillsDmg"),
|
|
PVE_MAGICAL_DMG("pveMagicalDmg"),
|
|
|
|
// ATTACK & DEFENCE RATES
|
|
EVASION_RATE("rEvas"),
|
|
P_SKILL_EVASION("pSkillEvas"),
|
|
CRIT_DAMAGE_EVASION("critDamEvas"),
|
|
SHIELD_RATE("rShld"),
|
|
CRITICAL_RATE("rCrit"),
|
|
BLOW_RATE("blowRate"),
|
|
LETHAL_RATE("lethalRate"),
|
|
MCRITICAL_RATE("mCritRate"),
|
|
EXPSP_RATE("rExp"),
|
|
ATTACK_CANCEL("cancel"),
|
|
MAGIC_FAILURE_RATE("magicFailureRate"),
|
|
|
|
// ACCURACY & RANGE
|
|
ACCURACY_COMBAT("accCombat"),
|
|
POWER_ATTACK_RANGE("pAtkRange"),
|
|
MAGIC_ATTACK_RANGE("mAtkRange"),
|
|
POWER_ATTACK_ANGLE("pAtkAngle"),
|
|
ATTACK_COUNT_MAX("atkCountMax"),
|
|
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
|
|
RUN_SPEED("runSpd"),
|
|
WALK_SPEED("walkSpd"),
|
|
|
|
// BASIC STATS
|
|
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
|
|
|
|
// VARIOUS
|
|
BREATH("breath"),
|
|
FALL("fall"),
|
|
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
|
|
VALAKAS("valakas"),
|
|
|
|
// VULNERABILITIES
|
|
AGGRESSION_VULN("aggressionVuln"),
|
|
BLEED_VULN("bleedVuln"),
|
|
POISON_VULN("poisonVuln"),
|
|
STUN_VULN("stunVuln"),
|
|
PARALYZE_VULN("paralyzeVuln"),
|
|
ROOT_VULN("rootVuln"),
|
|
SLEEP_VULN("sleepVuln"),
|
|
DAMAGE_ZONE_VULN("damageZoneVuln"),
|
|
MOVEMENT_VULN("movementVuln"),
|
|
CANCEL_VULN("cancelVuln"), // Resistance for cancel type skills
|
|
DERANGEMENT_VULN("derangementVuln"),
|
|
DEBUFF_VULN("debuffVuln"),
|
|
BUFF_VULN("buffVuln"),
|
|
CRIT_VULN("critVuln"), // Resistence to Crit DMG in percent.
|
|
CRIT_ADD_VULN("critAddVuln"), // Resistence to Crit DMG in value (ex: +100 will be 100 more crit dmg, NOT 100% more).
|
|
MAGIC_DAMAGE_VULN("magicDamVul"),
|
|
|
|
// RESISTANCES
|
|
FIRE_RES("fireRes"),
|
|
WIND_RES("windRes"),
|
|
WATER_RES("waterRes"),
|
|
EARTH_RES("earthRes"),
|
|
HOLY_RES("holyRes"),
|
|
DARK_RES("darkRes"),
|
|
VALAKAS_RES("valakasRes"),
|
|
MAGIC_SUCCESS_RES("magicSuccRes"),
|
|
// BUFF_IMMUNITY("buffImmunity"), //TODO: Implement me
|
|
DEBUFF_IMMUNITY("debuffImmunity"),
|
|
|
|
// ELEMENT POWER
|
|
FIRE_POWER("firePower"),
|
|
WATER_POWER("waterPower"),
|
|
WIND_POWER("windPower"),
|
|
EARTH_POWER("earthPower"),
|
|
HOLY_POWER("holyPower"),
|
|
DARK_POWER("darkPower"),
|
|
|
|
// PROFICIENCY
|
|
AGGRESSION_PROF("aggressionProf"),
|
|
BLEED_PROF("bleedProf"),
|
|
POISON_PROF("poisonProf"),
|
|
STUN_PROF("stunProf"),
|
|
PARALYZE_PROF("paralyzeProf"),
|
|
ROOT_PROF("rootProf"),
|
|
SLEEP_PROF("sleepProf"),
|
|
PROF("movementProf"),
|
|
CANCEL_PROF("cancelProf"),
|
|
DERANGEMENT_PROF("derangementProf"),
|
|
DEBUFF_PROF("debuffProf"),
|
|
CRIT_PROF("critProf"),
|
|
|
|
// WEAPONS VULNERABILITIES
|
|
NONE_WPN_VULN("noneWpnVuln"), // Shields!!!
|
|
SWORD_WPN_VULN("swordWpnVuln"),
|
|
BLUNT_WPN_VULN("bluntWpnVuln"),
|
|
DAGGER_WPN_VULN("daggerWpnVuln"),
|
|
BOW_WPN_VULN("bowWpnVuln"),
|
|
CROSSBOW_WPN_VULN("crossbowWpnVuln"),
|
|
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"),
|
|
DUALDAGGER_WPN_VULN("dualDaggerWpnVuln"),
|
|
RAPIER_WPN_VULN("rapierWpnVuln"),
|
|
ANCIENT_WPN_VULN("ancientWpnVuln"),
|
|
PET_WPN_VULN("petWpnVuln"),
|
|
|
|
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"),
|
|
ABSORB_MANA_DAMAGE_PERCENT("absorbDamMana"),
|
|
|
|
MAX_LOAD("maxLoad"),
|
|
WEIGHT_LIMIT("weightLimit"),
|
|
|
|
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
|
|
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"),
|
|
|
|
// T1 stats
|
|
transformId("transformId"),
|
|
TALISMAN_SLOTS("talisman"),
|
|
CLOAK_SLOT("cloak"),
|
|
|
|
// Shield Stats
|
|
SHIELD_DEFENCE_ANGLE("shieldDefAngle"),
|
|
|
|
// Skill mastery
|
|
SKILL_MASTERY("skillMastery"),
|
|
|
|
// Vitality
|
|
VITALITY_CONSUME_RATE("vitalityConsumeRate");
|
|
|
|
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");
|
|
}
|
|
}
|