l2j_mobius/trunk/java/com/l2jserver/gameserver/model/stats/Stats.java
2015-01-01 20:02:50 +00:00

228 lines
6.4 KiB
Java

/*
* Copyright (C) 2004-2014 L2J Server
*
* This file is part of L2J Server.
*
* L2J Server 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.
*
* L2J Server 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.model.stats;
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 & CP
MAX_HP("maxHp"),
MAX_MP("maxMp"),
MAX_CP("maxCp"),
MAX_RECOVERABLE_HP("maxRecoverableHp"), // The maximum HP that is able to be recovered trough heals
MAX_RECOVERABLE_MP("maxRecoverableMp"),
MAX_RECOVERABLE_CP("maxRecoverableCp"),
REGENERATE_HP_RATE("regHp"),
REGENERATE_CP_RATE("regCp"),
REGENERATE_MP_RATE("regMp"),
MANA_CHARGE("manaCharge"),
HEAL_EFFECT("healEffect"),
// 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"), // Magic Skill Casting Time Rate
ATK_REUSE("atkReuse"), // Bows Hits Reuse Rate
P_REUSE("pReuse"), // Physical Skill Reuse Rate
MAGIC_REUSE_RATE("mReuse"), // Magic Skill Reuse Rate
DANCE_REUSE("dReuse"), // Dance Skill Reuse Rate
SHIELD_DEFENCE("sDef"),
CRITICAL_DAMAGE("cAtk"),
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
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"),
MAGIC_EVASION_RATE("mEvas"),
P_SKILL_EVASION("pSkillEvas"),
DEFENCE_CRITICAL_RATE("defCritRate"),
DEFENCE_CRITICAL_RATE_ADD("defCritRateAdd"),
DEFENCE_CRITICAL_DAMAGE("defCritDamage"),
DEFENCE_CRITICAL_DAMAGE_ADD("defCritDamageAdd"), // Resistance to critical damage in value (Example: +100 will be 100 more critical damage, NOT 100% more).
SHIELD_RATE("rShld"),
CRITICAL_RATE("rCrit"),
BLOW_RATE("blowRate"),
MCRITICAL_RATE("mCritRate"),
EXPSP_RATE("rExp"),
BONUS_EXP("bonusExp"),
BONUS_SP("bonusSp"),
ATTACK_CANCEL("cancel"),
// ACCURACY & RANGE
ACCURACY_COMBAT("accCombat"),
ACCURACY_MAGIC("accMagic"),
POWER_ATTACK_RANGE("pAtkRange"),
MAGIC_ATTACK_RANGE("mAtkRange"),
ATTACK_COUNT_MAX("atkCountMax"),
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("runSpd"),
// BASIC STATS
STAT_STR("STR"),
STAT_CON("CON"),
STAT_DEX("DEX"),
STAT_INT("INT"),
STAT_WIT("WIT"),
STAT_MEN("MEN"),
STAT_LUC("LUC"),
STAT_CHA("CHA"),
// Special stats, share one slot in Calculator
// VARIOUS
BREATH("breath"),
FALL("fall"),
// VULNERABILITIES
DAMAGE_ZONE_VULN("damageZoneVuln"),
MOVEMENT_VULN("movementVuln"),
CANCEL_VULN("cancelVuln"), // Resistance for cancel type skills
DEBUFF_VULN("debuffVuln"),
BUFF_VULN("buffVuln"),
// RESISTANCES
FIRE_RES("fireRes"),
WIND_RES("windRes"),
WATER_RES("waterRes"),
EARTH_RES("earthRes"),
HOLY_RES("holyRes"),
DARK_RES("darkRes"),
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
CANCEL_PROF("cancelProf"),
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"),
MANA_SHIELD_PERCENT("manaShield"),
TRANSFER_DAMAGE_TO_PLAYER("transDamToPlayer"),
ABSORB_MANA_DAMAGE_PERCENT("absorbDamMana"),
WEIGHT_LIMIT("weightLimit"),
WEIGHT_PENALTY("weightPenalty"),
// 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"),
MP_CONSUME("MpConsume"),
// Shield Stats
SHIELD_DEFENCE_ANGLE("shieldDefAngle"),
// Skill mastery
SKILL_MASTERY("skillMastery"),
// Vitality
VITALITY_CONSUME_RATE("vitalityConsumeRate"),
// Souls
MAX_SOULS("maxSouls"),
REDUCE_EXP_LOST_BY_PVP("reduceExpLostByPvp"),
REDUCE_EXP_LOST_BY_MOB("reduceExpLostByMob"),
REDUCE_EXP_LOST_BY_RAID("reduceExpLostByRaid"),
REDUCE_DEATH_PENALTY_BY_PVP("reduceDeathPenaltyByPvp"),
REDUCE_DEATH_PENALTY_BY_MOB("reduceDeathPenaltyByMob"),
REDUCE_DEATH_PENALTY_BY_RAID("reduceDeathPenaltyByRaid"),
// Fishing
FISHING_EXPERTISE("fishingExpertise");
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 " + Stats.class.getSimpleName());
}
}