mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 04:37:00 +00:00
[0146] Cleanup deprecated item mods and combat ratings
Signed-off-by: Yaki Khadafi <ElSolDolLo@gmail.com>
This commit is contained in:
parent
826c15da12
commit
3153bd2129
9 changed files with 149 additions and 279 deletions
|
|
@ -23,36 +23,36 @@
|
|||
|
||||
enum ItemModType
|
||||
{
|
||||
ITEM_MOD_MANA = 0,
|
||||
ITEM_MOD_HEALTH = 1,
|
||||
ITEM_MOD_NONE = 0,
|
||||
ITEM_MOD_HEALTH = 1, // deprecated
|
||||
ITEM_MOD_AGILITY = 3,
|
||||
ITEM_MOD_STRENGTH = 4,
|
||||
ITEM_MOD_INTELLECT = 5,
|
||||
ITEM_MOD_SPIRIT = 6,
|
||||
ITEM_MOD_STAMINA = 7,
|
||||
ITEM_MOD_DEFENSE_SKILL_RATING = 12,
|
||||
ITEM_MOD_DEFENSE_SKILL_RATING = 12, // deprecated
|
||||
ITEM_MOD_DODGE_RATING = 13,
|
||||
ITEM_MOD_PARRY_RATING = 14,
|
||||
ITEM_MOD_BLOCK_RATING = 15,
|
||||
ITEM_MOD_HIT_MELEE_RATING = 16,
|
||||
ITEM_MOD_HIT_RANGED_RATING = 17,
|
||||
ITEM_MOD_HIT_SPELL_RATING = 18,
|
||||
ITEM_MOD_CRIT_MELEE_RATING = 19,
|
||||
ITEM_MOD_BLOCK_RATING = 15, // deprecated
|
||||
ITEM_MOD_HIT_MELEE_RATING = 16, // deprecated
|
||||
ITEM_MOD_HIT_RANGED_RATING = 17, // deprecated
|
||||
ITEM_MOD_HIT_SPELL_RATING = 18, // deprecated
|
||||
ITEM_MOD_CRIT_MELEE_RATING = 19, // deprecated
|
||||
ITEM_MOD_CRIT_RANGED_RATING = 20,
|
||||
ITEM_MOD_CRIT_SPELL_RATING = 21,
|
||||
ITEM_MOD_HIT_TAKEN_MELEE_RATING = 22,
|
||||
ITEM_MOD_HIT_TAKEN_RANGED_RATING = 23,
|
||||
ITEM_MOD_HIT_TAKEN_SPELL_RATING = 24,
|
||||
ITEM_MOD_CRIT_TAKEN_MELEE_RATING = 25,
|
||||
ITEM_MOD_CRIT_TAKEN_RANGED_RATING = 26,
|
||||
ITEM_MOD_CRIT_TAKEN_SPELL_RATING = 27,
|
||||
ITEM_MOD_HASTE_MELEE_RATING = 28,
|
||||
ITEM_MOD_HASTE_RANGED_RATING = 29,
|
||||
ITEM_MOD_HASTE_SPELL_RATING = 30,
|
||||
ITEM_MOD_CRIT_SPELL_RATING = 21, // deprecated
|
||||
ITEM_MOD_HIT_TAKEN_MELEE_RATING = 22, // deprecated
|
||||
ITEM_MOD_HIT_TAKEN_RANGED_RATING = 23, // deprecated
|
||||
ITEM_MOD_HIT_TAKEN_SPELL_RATING = 24, // deprecated
|
||||
ITEM_MOD_CRIT_TAKEN_MELEE_RATING = 25, // deprecated
|
||||
ITEM_MOD_CRIT_TAKEN_RANGED_RATING = 26, // deprecated
|
||||
ITEM_MOD_CRIT_TAKEN_SPELL_RATING = 27, // deprecated
|
||||
ITEM_MOD_HASTE_MELEE_RATING = 28, // deprecated
|
||||
ITEM_MOD_HASTE_RANGED_RATING = 29, // deprecated
|
||||
ITEM_MOD_HASTE_SPELL_RATING = 30, // deprecated
|
||||
ITEM_MOD_HIT_RATING = 31,
|
||||
ITEM_MOD_CRIT_RATING = 32,
|
||||
ITEM_MOD_HIT_TAKEN_RATING = 33,
|
||||
ITEM_MOD_CRIT_TAKEN_RATING = 34,
|
||||
ITEM_MOD_HIT_TAKEN_RATING = 33, // deprecated
|
||||
ITEM_MOD_CRIT_TAKEN_RATING = 34, // deprecated
|
||||
ITEM_MOD_RESILIENCE_RATING = 35,
|
||||
ITEM_MOD_HASTE_RATING = 36,
|
||||
ITEM_MOD_EXPERTISE_RATING = 37,
|
||||
|
|
@ -61,12 +61,12 @@ enum ItemModType
|
|||
ITEM_MOD_FERAL_ATTACK_POWER = 40, // deprecated
|
||||
ITEM_MOD_SPELL_HEALING_DONE = 41, // deprecated
|
||||
ITEM_MOD_SPELL_DAMAGE_DONE = 42, // deprecated
|
||||
ITEM_MOD_MANA_REGENERATION = 43,
|
||||
ITEM_MOD_ARMOR_PENETRATION_RATING = 44,
|
||||
ITEM_MOD_MANA_REGENERATION = 43, // deprecated
|
||||
ITEM_MOD_ARMOR_PENETRATION_RATING = 44, // deprecated
|
||||
ITEM_MOD_SPELL_POWER = 45,
|
||||
ITEM_MOD_HEALTH_REGEN = 46,
|
||||
ITEM_MOD_SPELL_PENETRATION = 47,
|
||||
ITEM_MOD_BLOCK_VALUE = 48,
|
||||
ITEM_MOD_BLOCK_VALUE = 48, // deprecated
|
||||
ITEM_MOD_MASTERY_RATING = 49,
|
||||
ITEM_MOD_EXTRA_ARMOR = 50,
|
||||
ITEM_MOD_FIRE_RESISTANCE = 51,
|
||||
|
|
|
|||
|
|
@ -2029,8 +2029,31 @@ void ObjectMgr::LoadItemPrototypes()
|
|||
|
||||
switch (proto->ItemStat[j].ItemStatType)
|
||||
{
|
||||
case ITEM_MOD_HEALTH:
|
||||
case ITEM_MOD_DEFENSE_SKILL_RATING:
|
||||
case ITEM_MOD_BLOCK_RATING:
|
||||
case ITEM_MOD_HIT_MELEE_RATING:
|
||||
case ITEM_MOD_HIT_RANGED_RATING:
|
||||
case ITEM_MOD_HIT_SPELL_RATING:
|
||||
case ITEM_MOD_CRIT_MELEE_RATING:
|
||||
case ITEM_MOD_CRIT_SPELL_RATING:
|
||||
case ITEM_MOD_HIT_TAKEN_MELEE_RATING:
|
||||
case ITEM_MOD_HIT_TAKEN_RANGED_RATING:
|
||||
case ITEM_MOD_HIT_TAKEN_SPELL_RATING:
|
||||
case ITEM_MOD_CRIT_TAKEN_MELEE_RATING:
|
||||
case ITEM_MOD_CRIT_TAKEN_RANGED_RATING:
|
||||
case ITEM_MOD_CRIT_TAKEN_SPELL_RATING:
|
||||
case ITEM_MOD_HASTE_MELEE_RATING:
|
||||
case ITEM_MOD_HASTE_RANGED_RATING:
|
||||
case ITEM_MOD_HASTE_SPELL_RATING:
|
||||
case ITEM_MOD_HIT_TAKEN_RATING:
|
||||
case ITEM_MOD_CRIT_TAKEN_RATING:
|
||||
case ITEM_MOD_FERAL_ATTACK_POWER:
|
||||
case ITEM_MOD_SPELL_HEALING_DONE:
|
||||
case ITEM_MOD_SPELL_DAMAGE_DONE:
|
||||
case ITEM_MOD_MANA_REGENERATION:
|
||||
case ITEM_MOD_ARMOR_PENETRATION_RATING:
|
||||
case ITEM_MOD_BLOCK_VALUE:
|
||||
sLog.outErrorDb("Item (Entry: %u) has deprecated stat_type%d (%u)", i, j + 1, proto->ItemStat[j].ItemStatType);
|
||||
break;
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -5368,24 +5368,12 @@ void Player::UpdateRating(CombatRating cr)
|
|||
if (affectStats)
|
||||
UpdateAllSpellCritChances();
|
||||
break;
|
||||
case CR_HIT_TAKEN_MELEE: // Implemented in Unit::MeleeMissChanceCalc
|
||||
case CR_HIT_TAKEN_RANGED:
|
||||
break;
|
||||
case CR_HIT_TAKEN_SPELL: // Implemented in Unit::MagicSpellHitResult
|
||||
break;
|
||||
case CR_CRIT_TAKEN_MELEE: // Implemented in Unit::RollMeleeOutcomeAgainst (only for chance to crit)
|
||||
case CR_CRIT_TAKEN_RANGED:
|
||||
break;
|
||||
case CR_CRIT_TAKEN_SPELL: // Implemented in Unit::SpellCriticalBonus (only for chance to crit)
|
||||
case CR_RESILIENCE_DAMAGE_TAKEN:
|
||||
break;
|
||||
case CR_HASTE_MELEE: // Implemented in Player::ApplyRatingMod
|
||||
case CR_HASTE_RANGED:
|
||||
case CR_HASTE_SPELL:
|
||||
break;
|
||||
case CR_WEAPON_SKILL_MAINHAND: // Implemented in Unit::RollMeleeOutcomeAgainst
|
||||
case CR_WEAPON_SKILL_OFFHAND:
|
||||
case CR_WEAPON_SKILL_RANGED:
|
||||
break;
|
||||
case CR_EXPERTISE:
|
||||
if (affectStats)
|
||||
{
|
||||
|
|
@ -5397,6 +5385,16 @@ void Player::UpdateRating(CombatRating cr)
|
|||
if (affectStats)
|
||||
UpdateArmorPenetration();
|
||||
break;
|
||||
// deprecated
|
||||
case CR_HIT_TAKEN_MELEE:
|
||||
case CR_HIT_TAKEN_RANGED:
|
||||
case CR_HIT_TAKEN_SPELL:
|
||||
case CR_CRIT_TAKEN_SPELL:
|
||||
case CR_CRIT_TAKEN_MELEE:
|
||||
case CR_WEAPON_SKILL_MAINHAND:
|
||||
case CR_WEAPON_SKILL_OFFHAND:
|
||||
case CR_WEAPON_SKILL_RANGED:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -7171,12 +7169,9 @@ void Player::_ApplyItemBonuses(ItemPrototype const* proto, uint8 slot, bool appl
|
|||
|
||||
switch (statType)
|
||||
{
|
||||
case ITEM_MOD_MANA:
|
||||
/*case ITEM_MOD_MANA:
|
||||
HandleStatModifier(UNIT_MOD_MANA, BASE_VALUE, float(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_HEALTH: // modify HP
|
||||
HandleStatModifier(UNIT_MOD_HEALTH, BASE_VALUE, float(val), apply);
|
||||
break;
|
||||
break;*/
|
||||
case ITEM_MOD_AGILITY: // modify agility
|
||||
HandleStatModifier(UNIT_MOD_STAT_AGILITY, BASE_VALUE, float(val), apply);
|
||||
ApplyStatBuffMod(STAT_AGILITY, float(val), apply);
|
||||
|
|
@ -7197,63 +7192,15 @@ void Player::_ApplyItemBonuses(ItemPrototype const* proto, uint8 slot, bool appl
|
|||
HandleStatModifier(UNIT_MOD_STAT_STAMINA, BASE_VALUE, float(val), apply);
|
||||
ApplyStatBuffMod(STAT_STAMINA, float(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_DEFENSE_SKILL_RATING:
|
||||
ApplyRatingMod(CR_DEFENSE_SKILL, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_DODGE_RATING:
|
||||
ApplyRatingMod(CR_DODGE, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_PARRY_RATING:
|
||||
ApplyRatingMod(CR_PARRY, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_BLOCK_RATING:
|
||||
ApplyRatingMod(CR_BLOCK, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_HIT_MELEE_RATING:
|
||||
ApplyRatingMod(CR_HIT_MELEE, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_HIT_RANGED_RATING:
|
||||
ApplyRatingMod(CR_HIT_RANGED, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_HIT_SPELL_RATING:
|
||||
ApplyRatingMod(CR_HIT_SPELL, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_CRIT_MELEE_RATING:
|
||||
ApplyRatingMod(CR_CRIT_MELEE, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_CRIT_RANGED_RATING:
|
||||
ApplyRatingMod(CR_CRIT_RANGED, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_CRIT_SPELL_RATING:
|
||||
ApplyRatingMod(CR_CRIT_SPELL, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_HIT_TAKEN_MELEE_RATING:
|
||||
ApplyRatingMod(CR_HIT_TAKEN_MELEE, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_HIT_TAKEN_RANGED_RATING:
|
||||
ApplyRatingMod(CR_HIT_TAKEN_RANGED, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_HIT_TAKEN_SPELL_RATING:
|
||||
ApplyRatingMod(CR_HIT_TAKEN_SPELL, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_CRIT_TAKEN_MELEE_RATING:
|
||||
ApplyRatingMod(CR_CRIT_TAKEN_MELEE, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_CRIT_TAKEN_RANGED_RATING:
|
||||
ApplyRatingMod(CR_CRIT_TAKEN_RANGED, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_CRIT_TAKEN_SPELL_RATING:
|
||||
ApplyRatingMod(CR_CRIT_TAKEN_SPELL, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_HASTE_MELEE_RATING:
|
||||
ApplyRatingMod(CR_HASTE_MELEE, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_HASTE_RANGED_RATING:
|
||||
ApplyRatingMod(CR_HASTE_RANGED, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_HASTE_SPELL_RATING:
|
||||
ApplyRatingMod(CR_HASTE_SPELL, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_HIT_RATING:
|
||||
ApplyRatingMod(CR_HIT_MELEE, int32(val), apply);
|
||||
ApplyRatingMod(CR_HIT_RANGED, int32(val), apply);
|
||||
|
|
@ -7264,20 +7211,8 @@ void Player::_ApplyItemBonuses(ItemPrototype const* proto, uint8 slot, bool appl
|
|||
ApplyRatingMod(CR_CRIT_RANGED, int32(val), apply);
|
||||
ApplyRatingMod(CR_CRIT_SPELL, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_HIT_TAKEN_RATING:
|
||||
ApplyRatingMod(CR_HIT_TAKEN_MELEE, int32(val), apply);
|
||||
ApplyRatingMod(CR_HIT_TAKEN_RANGED, int32(val), apply);
|
||||
ApplyRatingMod(CR_HIT_TAKEN_SPELL, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_CRIT_TAKEN_RATING:
|
||||
ApplyRatingMod(CR_CRIT_TAKEN_MELEE, int32(val), apply);
|
||||
ApplyRatingMod(CR_CRIT_TAKEN_RANGED, int32(val), apply);
|
||||
ApplyRatingMod(CR_CRIT_TAKEN_SPELL, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_RESILIENCE_RATING:
|
||||
ApplyRatingMod(CR_CRIT_TAKEN_MELEE, int32(val), apply);
|
||||
ApplyRatingMod(CR_CRIT_TAKEN_RANGED, int32(val), apply);
|
||||
ApplyRatingMod(CR_CRIT_TAKEN_SPELL, int32(val), apply);
|
||||
ApplyRatingMod(CR_RESILIENCE_DAMAGE_TAKEN, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_HASTE_RATING:
|
||||
ApplyRatingMod(CR_HASTE_MELEE, int32(val), apply);
|
||||
|
|
@ -7294,12 +7229,6 @@ void Player::_ApplyItemBonuses(ItemPrototype const* proto, uint8 slot, bool appl
|
|||
case ITEM_MOD_RANGED_ATTACK_POWER:
|
||||
HandleStatModifier(UNIT_MOD_ATTACK_POWER_RANGED, TOTAL_VALUE, float(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_MANA_REGENERATION:
|
||||
ApplyManaRegenBonus(int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_ARMOR_PENETRATION_RATING:
|
||||
ApplyRatingMod(CR_ARMOR_PENETRATION, int32(val), apply);
|
||||
break;
|
||||
case ITEM_MOD_SPELL_POWER:
|
||||
ApplySpellPowerBonus(int32(val), apply);
|
||||
break;
|
||||
|
|
@ -7307,13 +7236,35 @@ void Player::_ApplyItemBonuses(ItemPrototype const* proto, uint8 slot, bool appl
|
|||
ApplyModInt32Value(PLAYER_FIELD_MOD_TARGET_RESISTANCE, -int32(val), apply);
|
||||
m_spellPenetrationItemMod += apply ? val : -val;
|
||||
break;
|
||||
case ITEM_MOD_BLOCK_VALUE:
|
||||
HandleBaseModValue(SHIELD_BLOCK_VALUE, FLAT_MOD, float(val), apply);
|
||||
case ITEM_MOD_MASTERY_RATING:
|
||||
ApplyRatingMod(CR_MASTERY, int32(val), apply);
|
||||
break;
|
||||
// deprecated item mods
|
||||
case ITEM_MOD_HEALTH:
|
||||
case ITEM_MOD_DEFENSE_SKILL_RATING:
|
||||
case ITEM_MOD_BLOCK_RATING:
|
||||
case ITEM_MOD_HIT_MELEE_RATING:
|
||||
case ITEM_MOD_HIT_RANGED_RATING:
|
||||
case ITEM_MOD_HIT_SPELL_RATING:
|
||||
case ITEM_MOD_CRIT_MELEE_RATING:
|
||||
case ITEM_MOD_CRIT_SPELL_RATING:
|
||||
case ITEM_MOD_HIT_TAKEN_MELEE_RATING:
|
||||
case ITEM_MOD_HIT_TAKEN_RANGED_RATING:
|
||||
case ITEM_MOD_HIT_TAKEN_SPELL_RATING:
|
||||
case ITEM_MOD_CRIT_TAKEN_MELEE_RATING:
|
||||
case ITEM_MOD_CRIT_TAKEN_RANGED_RATING:
|
||||
case ITEM_MOD_CRIT_TAKEN_SPELL_RATING:
|
||||
case ITEM_MOD_HASTE_MELEE_RATING:
|
||||
case ITEM_MOD_HASTE_RANGED_RATING:
|
||||
case ITEM_MOD_HASTE_SPELL_RATING:
|
||||
case ITEM_MOD_HIT_TAKEN_RATING:
|
||||
case ITEM_MOD_CRIT_TAKEN_RATING:
|
||||
case ITEM_MOD_FERAL_ATTACK_POWER:
|
||||
case ITEM_MOD_SPELL_HEALING_DONE:
|
||||
case ITEM_MOD_SPELL_DAMAGE_DONE:
|
||||
case ITEM_MOD_MANA_REGENERATION:
|
||||
case ITEM_MOD_ARMOR_PENETRATION_RATING:
|
||||
case ITEM_MOD_BLOCK_VALUE:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -12979,10 +12930,10 @@ void Player::ApplyEnchantment(Item* item, EnchantmentSlot slot, bool apply, bool
|
|||
DEBUG_LOG("Adding %u to stat nb %u", enchant_amount, enchant_spell_id);
|
||||
switch (enchant_spell_id)
|
||||
{
|
||||
case ITEM_MOD_MANA:
|
||||
/*case ITEM_MOD_MANA:
|
||||
DEBUG_LOG("+ %u MANA", enchant_amount);
|
||||
HandleStatModifier(UNIT_MOD_MANA, BASE_VALUE, float(enchant_amount), apply);
|
||||
break;
|
||||
break;*/
|
||||
case ITEM_MOD_HEALTH:
|
||||
DEBUG_LOG("+ %u HEALTH", enchant_amount);
|
||||
HandleStatModifier(UNIT_MOD_HEALTH, BASE_VALUE, float(enchant_amount), apply);
|
||||
|
|
@ -13012,10 +12963,6 @@ void Player::ApplyEnchantment(Item* item, EnchantmentSlot slot, bool apply, bool
|
|||
HandleStatModifier(UNIT_MOD_STAT_STAMINA, TOTAL_VALUE, float(enchant_amount), apply);
|
||||
ApplyStatBuffMod(STAT_STAMINA, float(enchant_amount), apply);
|
||||
break;
|
||||
case ITEM_MOD_DEFENSE_SKILL_RATING:
|
||||
ApplyRatingMod(CR_DEFENSE_SKILL, enchant_amount, apply);
|
||||
DEBUG_LOG("+ %u DEFENCE", enchant_amount);
|
||||
break;
|
||||
case ITEM_MOD_DODGE_RATING:
|
||||
ApplyRatingMod(CR_DODGE, enchant_amount, apply);
|
||||
DEBUG_LOG("+ %u DODGE", enchant_amount);
|
||||
|
|
@ -13024,63 +12971,10 @@ void Player::ApplyEnchantment(Item* item, EnchantmentSlot slot, bool apply, bool
|
|||
ApplyRatingMod(CR_PARRY, enchant_amount, apply);
|
||||
DEBUG_LOG("+ %u PARRY", enchant_amount);
|
||||
break;
|
||||
case ITEM_MOD_BLOCK_RATING:
|
||||
ApplyRatingMod(CR_BLOCK, enchant_amount, apply);
|
||||
DEBUG_LOG("+ %u SHIELD_BLOCK", enchant_amount);
|
||||
break;
|
||||
case ITEM_MOD_HIT_MELEE_RATING:
|
||||
ApplyRatingMod(CR_HIT_MELEE, enchant_amount, apply);
|
||||
DEBUG_LOG("+ %u MELEE_HIT", enchant_amount);
|
||||
break;
|
||||
case ITEM_MOD_HIT_RANGED_RATING:
|
||||
ApplyRatingMod(CR_HIT_RANGED, enchant_amount, apply);
|
||||
DEBUG_LOG("+ %u RANGED_HIT", enchant_amount);
|
||||
break;
|
||||
case ITEM_MOD_HIT_SPELL_RATING:
|
||||
ApplyRatingMod(CR_HIT_SPELL, enchant_amount, apply);
|
||||
DEBUG_LOG("+ %u SPELL_HIT", enchant_amount);
|
||||
break;
|
||||
case ITEM_MOD_CRIT_MELEE_RATING:
|
||||
ApplyRatingMod(CR_CRIT_MELEE, enchant_amount, apply);
|
||||
DEBUG_LOG("+ %u MELEE_CRIT", enchant_amount);
|
||||
break;
|
||||
case ITEM_MOD_CRIT_RANGED_RATING:
|
||||
ApplyRatingMod(CR_CRIT_RANGED, enchant_amount, apply);
|
||||
DEBUG_LOG("+ %u RANGED_CRIT", enchant_amount);
|
||||
break;
|
||||
case ITEM_MOD_CRIT_SPELL_RATING:
|
||||
ApplyRatingMod(CR_CRIT_SPELL, enchant_amount, apply);
|
||||
DEBUG_LOG("+ %u SPELL_CRIT", enchant_amount);
|
||||
break;
|
||||
// Values from ITEM_STAT_MELEE_HA_RATING to ITEM_MOD_HASTE_RANGED_RATING are never used
|
||||
// in Enchantments
|
||||
// case ITEM_MOD_HIT_TAKEN_MELEE_RATING:
|
||||
// ApplyRatingMod(CR_HIT_TAKEN_MELEE, enchant_amount, apply);
|
||||
// break;
|
||||
// case ITEM_MOD_HIT_TAKEN_RANGED_RATING:
|
||||
// ApplyRatingMod(CR_HIT_TAKEN_RANGED, enchant_amount, apply);
|
||||
// break;
|
||||
// case ITEM_MOD_HIT_TAKEN_SPELL_RATING:
|
||||
// ApplyRatingMod(CR_HIT_TAKEN_SPELL, enchant_amount, apply);
|
||||
// break;
|
||||
// case ITEM_MOD_CRIT_TAKEN_MELEE_RATING:
|
||||
// ApplyRatingMod(CR_CRIT_TAKEN_MELEE, enchant_amount, apply);
|
||||
// break;
|
||||
// case ITEM_MOD_CRIT_TAKEN_RANGED_RATING:
|
||||
// ApplyRatingMod(CR_CRIT_TAKEN_RANGED, enchant_amount, apply);
|
||||
// break;
|
||||
// case ITEM_MOD_CRIT_TAKEN_SPELL_RATING:
|
||||
// ApplyRatingMod(CR_CRIT_TAKEN_SPELL, enchant_amount, apply);
|
||||
// break;
|
||||
// case ITEM_MOD_HASTE_MELEE_RATING:
|
||||
// ApplyRatingMod(CR_HASTE_MELEE, enchant_amount, apply);
|
||||
// break;
|
||||
// case ITEM_MOD_HASTE_RANGED_RATING:
|
||||
// ApplyRatingMod(CR_HASTE_RANGED, enchant_amount, apply);
|
||||
// break;
|
||||
case ITEM_MOD_HASTE_SPELL_RATING:
|
||||
ApplyRatingMod(CR_HASTE_SPELL, enchant_amount, apply);
|
||||
break;
|
||||
case ITEM_MOD_HIT_RATING:
|
||||
ApplyRatingMod(CR_HIT_MELEE, enchant_amount, apply);
|
||||
ApplyRatingMod(CR_HIT_RANGED, enchant_amount, apply);
|
||||
|
|
@ -13093,21 +12987,8 @@ void Player::ApplyEnchantment(Item* item, EnchantmentSlot slot, bool apply, bool
|
|||
ApplyRatingMod(CR_CRIT_SPELL, enchant_amount, apply);
|
||||
DEBUG_LOG("+ %u CRITICAL", enchant_amount);
|
||||
break;
|
||||
// Values ITEM_MOD_HIT_TAKEN_RATING and ITEM_MOD_CRIT_TAKEN_RATING are never used in Enchantment
|
||||
// case ITEM_MOD_HIT_TAKEN_RATING:
|
||||
// ApplyRatingMod(CR_HIT_TAKEN_MELEE, enchant_amount, apply);
|
||||
// ApplyRatingMod(CR_HIT_TAKEN_RANGED, enchant_amount, apply);
|
||||
// ApplyRatingMod(CR_HIT_TAKEN_SPELL, enchant_amount, apply);
|
||||
// break;
|
||||
// case ITEM_MOD_CRIT_TAKEN_RATING:
|
||||
// ApplyRatingMod(CR_CRIT_TAKEN_MELEE, enchant_amount, apply);
|
||||
// ApplyRatingMod(CR_CRIT_TAKEN_RANGED, enchant_amount, apply);
|
||||
// ApplyRatingMod(CR_CRIT_TAKEN_SPELL, enchant_amount, apply);
|
||||
// break;
|
||||
case ITEM_MOD_RESILIENCE_RATING:
|
||||
ApplyRatingMod(CR_CRIT_TAKEN_MELEE, enchant_amount, apply);
|
||||
ApplyRatingMod(CR_CRIT_TAKEN_RANGED, enchant_amount, apply);
|
||||
ApplyRatingMod(CR_CRIT_TAKEN_SPELL, enchant_amount, apply);
|
||||
ApplyRatingMod(CR_RESILIENCE_DAMAGE_TAKEN, enchant_amount, apply);
|
||||
DEBUG_LOG("+ %u RESILIENCE", enchant_amount);
|
||||
break;
|
||||
case ITEM_MOD_HASTE_RATING:
|
||||
|
|
@ -13129,24 +13010,44 @@ void Player::ApplyEnchantment(Item* item, EnchantmentSlot slot, bool apply, bool
|
|||
HandleStatModifier(UNIT_MOD_ATTACK_POWER_RANGED, TOTAL_VALUE, float(enchant_amount), apply);
|
||||
DEBUG_LOG("+ %u RANGED_ATTACK_POWER", enchant_amount);
|
||||
break;
|
||||
case ITEM_MOD_MANA_REGENERATION:
|
||||
ApplyManaRegenBonus(enchant_amount, apply);
|
||||
DEBUG_LOG("+ %u MANA_REGENERATION", enchant_amount);
|
||||
break;
|
||||
case ITEM_MOD_ARMOR_PENETRATION_RATING:
|
||||
ApplyRatingMod(CR_ARMOR_PENETRATION, enchant_amount, apply);
|
||||
DEBUG_LOG("+ %u ARMOR PENETRATION", enchant_amount);
|
||||
break;
|
||||
case ITEM_MOD_SPELL_POWER:
|
||||
ApplySpellPowerBonus(enchant_amount, apply);
|
||||
DEBUG_LOG("+ %u SPELL_POWER", enchant_amount);
|
||||
break;
|
||||
case ITEM_MOD_BLOCK_VALUE:
|
||||
HandleBaseModValue(SHIELD_BLOCK_VALUE, FLAT_MOD, float(enchant_amount), apply);
|
||||
case ITEM_MOD_SPELL_PENETRATION:
|
||||
ApplyModInt32Value(PLAYER_FIELD_MOD_TARGET_RESISTANCE, -int32(enchant_amount), apply);
|
||||
m_spellPenetrationItemMod += apply ? enchant_amount : -int32(enchant_amount);
|
||||
DEBUG_LOG("+ %u SPELL_PENETRATION", -int32(enchant_amount));
|
||||
break;
|
||||
case ITEM_MOD_MASTERY_RATING:
|
||||
ApplyRatingMod(CR_MASTERY, enchant_amount, apply);
|
||||
DEBUG_LOG("+ %u MASTERY_RATING", enchant_amount);
|
||||
break;
|
||||
// deprecated
|
||||
case ITEM_MOD_DEFENSE_SKILL_RATING:
|
||||
case ITEM_MOD_BLOCK_RATING:
|
||||
case ITEM_MOD_HIT_MELEE_RATING:
|
||||
case ITEM_MOD_HIT_RANGED_RATING:
|
||||
case ITEM_MOD_HIT_SPELL_RATING:
|
||||
case ITEM_MOD_CRIT_MELEE_RATING:
|
||||
case ITEM_MOD_CRIT_SPELL_RATING:
|
||||
case ITEM_MOD_HIT_TAKEN_MELEE_RATING:
|
||||
case ITEM_MOD_HIT_TAKEN_RANGED_RATING:
|
||||
case ITEM_MOD_HIT_TAKEN_SPELL_RATING:
|
||||
case ITEM_MOD_CRIT_TAKEN_MELEE_RATING:
|
||||
case ITEM_MOD_CRIT_TAKEN_RANGED_RATING:
|
||||
case ITEM_MOD_CRIT_TAKEN_SPELL_RATING:
|
||||
case ITEM_MOD_HASTE_MELEE_RATING:
|
||||
case ITEM_MOD_HASTE_RANGED_RATING:
|
||||
case ITEM_MOD_HASTE_SPELL_RATING:
|
||||
case ITEM_MOD_HIT_TAKEN_RATING:
|
||||
case ITEM_MOD_CRIT_TAKEN_RATING:
|
||||
case ITEM_MOD_FERAL_ATTACK_POWER:
|
||||
case ITEM_MOD_SPELL_HEALING_DONE: // deprecated
|
||||
case ITEM_MOD_SPELL_DAMAGE_DONE: // deprecated
|
||||
case ITEM_MOD_SPELL_HEALING_DONE:
|
||||
case ITEM_MOD_SPELL_DAMAGE_DONE:
|
||||
case ITEM_MOD_MANA_REGENERATION:
|
||||
case ITEM_MOD_ARMOR_PENETRATION_RATING:
|
||||
case ITEM_MOD_BLOCK_VALUE:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1414,7 +1414,7 @@ void Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask)
|
|||
if (m_applyMultiplierMask & (1 << effectNumber))
|
||||
{
|
||||
// Get multiplier
|
||||
float multiplier = spellEffect ? spellEffect->DmgMultiplier : 0.0f;
|
||||
float multiplier = spellEffect ? spellEffect->DmgMultiplier : 1.0f;
|
||||
// Apply multiplier mods
|
||||
if (realCaster)
|
||||
if (Player* modOwner = realCaster->GetSpellModOwner())
|
||||
|
|
@ -1537,7 +1537,7 @@ void Spell::HandleDelayedSpellLaunch(TargetInfo* target)
|
|||
if (m_applyMultiplierMask & (1 << effectNumber))
|
||||
{
|
||||
// Get multiplier
|
||||
float multiplier = spellEffect ? spellEffect->DmgMultiplier : 0.0f;
|
||||
float multiplier = spellEffect ? spellEffect->DmgMultiplier : 1.0f;
|
||||
// Apply multiplier mods
|
||||
if (real_caster)
|
||||
if (Player* modOwner = real_caster->GetSpellModOwner())
|
||||
|
|
|
|||
|
|
@ -7342,13 +7342,13 @@ void Aura::PeriodicTick()
|
|||
{
|
||||
cleanDamage.hitOutCome = MELEE_HIT_CRIT;
|
||||
// Resilience - reduce crit damage
|
||||
pdamage -= target->GetSpellCritDamageReduction(pdamage);
|
||||
pdamage -= target->GetCritDamageReduction(pdamage);
|
||||
}
|
||||
|
||||
// only from players
|
||||
// FIXME: need use SpellDamageBonus instead?
|
||||
if (pCaster->GetTypeId() == TYPEID_PLAYER)
|
||||
pdamage -= target->GetSpellDamageReduction(pdamage);
|
||||
pdamage -= target->GetDamageReduction(pdamage);
|
||||
|
||||
target->CalculateDamageAbsorbAndResist(pCaster, GetSpellSchoolMask(spellProto), DOT, pdamage, &absorb, &resist, !GetSpellProto()->HasAttribute(SPELL_ATTR_EX2_CANT_REFLECTED));
|
||||
|
||||
|
|
@ -7434,13 +7434,13 @@ void Aura::PeriodicTick()
|
|||
{
|
||||
cleanDamage.hitOutCome = MELEE_HIT_CRIT;
|
||||
// Resilience - reduce crit damage
|
||||
pdamage -= target->GetSpellCritDamageReduction(pdamage);
|
||||
pdamage -= target->GetCritDamageReduction(pdamage);
|
||||
}
|
||||
|
||||
// only from players
|
||||
// FIXME: need use SpellDamageBonus instead?
|
||||
if (GetCasterGuid().IsPlayer())
|
||||
pdamage -= target->GetSpellDamageReduction(pdamage);
|
||||
pdamage -= target->GetDamageReduction(pdamage);
|
||||
|
||||
target->CalculateDamageAbsorbAndResist(pCaster, GetSpellSchoolMask(spellProto), DOT, pdamage, &absorb, &resist, !spellProto->HasAttribute(SPELL_ATTR_EX2_CANT_REFLECTED));
|
||||
|
||||
|
|
@ -7636,7 +7636,7 @@ void Aura::PeriodicTick()
|
|||
|
||||
// resilience reduce mana draining effect at spell crit damage reduction (added in 2.4)
|
||||
if (power == POWER_MANA)
|
||||
drain_amount -= target->GetSpellCritDamageReduction(drain_amount);
|
||||
drain_amount -= target->GetCritDamageReduction(drain_amount);
|
||||
|
||||
target->ModifyPower(power, -drain_amount);
|
||||
|
||||
|
|
@ -7780,7 +7780,7 @@ void Aura::PeriodicTick()
|
|||
|
||||
// resilience reduce mana draining effect at spell crit damage reduction (added in 2.4)
|
||||
if (powerType == POWER_MANA)
|
||||
pdamage -= target->GetSpellCritDamageReduction(pdamage);
|
||||
pdamage -= target->GetCritDamageReduction(pdamage);
|
||||
|
||||
uint32 gain = uint32(-target->ModifyPower(powerType, -pdamage));
|
||||
|
||||
|
|
|
|||
|
|
@ -4064,7 +4064,7 @@ void Spell::EffectPowerDrain(SpellEffectEntry const* effect)
|
|||
// resilience reduce mana draining effect at spell crit damage reduction (added in 2.4)
|
||||
uint32 power = damage;
|
||||
if (drain_power == POWER_MANA)
|
||||
power -= unitTarget->GetSpellCritDamageReduction(power);
|
||||
power -= unitTarget->GetCritDamageReduction(power);
|
||||
|
||||
int32 new_damage;
|
||||
if (curPower < power)
|
||||
|
|
@ -4131,7 +4131,7 @@ void Spell::EffectPowerBurn(SpellEffectEntry const* effect)
|
|||
// resilience reduce mana draining effect at spell crit damage reduction (added in 2.4)
|
||||
int32 power = damage;
|
||||
if (powertype == POWER_MANA)
|
||||
power -= unitTarget->GetSpellCritDamageReduction(power);
|
||||
power -= unitTarget->GetCritDamageReduction(power);
|
||||
|
||||
int32 new_damage = (curPower < power) ? curPower : power;
|
||||
|
||||
|
|
|
|||
|
|
@ -1605,10 +1605,7 @@ void Unit::CalculateSpellDamage(SpellNonMeleeDamage* damageInfo, int32 damage, S
|
|||
damage = SpellCriticalDamageBonus(spellInfo, damage, pVictim);
|
||||
// Resilience - reduce crit damage
|
||||
uint32 reduction_affected_damage = CalcNotIgnoreDamageReduction(damage, damageSchoolMask);
|
||||
if (attackType != RANGED_ATTACK)
|
||||
damage -= pVictim->GetMeleeCritDamageReduction(reduction_affected_damage);
|
||||
else
|
||||
damage -= pVictim->GetRangedCritDamageReduction(reduction_affected_damage);
|
||||
damage -= pVictim->GetCritDamageReduction(reduction_affected_damage);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -1627,7 +1624,7 @@ void Unit::CalculateSpellDamage(SpellNonMeleeDamage* damageInfo, int32 damage, S
|
|||
damage = SpellCriticalDamageBonus(spellInfo, damage, pVictim);
|
||||
// Resilience - reduce crit damage
|
||||
uint32 reduction_affected_damage = CalcNotIgnoreDamageReduction(damage, damageSchoolMask);
|
||||
damage -= pVictim->GetSpellCritDamageReduction(reduction_affected_damage);
|
||||
damage -= pVictim->GetCritDamageReduction(reduction_affected_damage);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -1637,7 +1634,7 @@ void Unit::CalculateSpellDamage(SpellNonMeleeDamage* damageInfo, int32 damage, S
|
|||
if (GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
uint32 reduction_affected_damage = CalcNotIgnoreDamageReduction(damage, damageSchoolMask);
|
||||
damage -= pVictim->GetSpellDamageReduction(reduction_affected_damage);
|
||||
damage -= pVictim->GetDamageReduction(reduction_affected_damage);
|
||||
}
|
||||
|
||||
// damage mitigation
|
||||
|
|
@ -1814,11 +1811,7 @@ void Unit::CalculateMeleeDamage(Unit* pVictim, uint32 damage, CalcDamageInfo* da
|
|||
|
||||
// Resilience - reduce crit damage
|
||||
uint32 reduction_affected_damage = CalcNotIgnoreDamageReduction(damageInfo->damage, damageInfo->damageSchoolMask);
|
||||
uint32 resilienceReduction;
|
||||
if (attackType != RANGED_ATTACK)
|
||||
resilienceReduction = pVictim->GetMeleeCritDamageReduction(reduction_affected_damage);
|
||||
else
|
||||
resilienceReduction = pVictim->GetRangedCritDamageReduction(reduction_affected_damage);
|
||||
uint32 resilienceReduction = pVictim->GetCritDamageReduction(reduction_affected_damage);
|
||||
|
||||
damageInfo->damage -= resilienceReduction;
|
||||
damageInfo->cleanDamage += resilienceReduction;
|
||||
|
|
@ -1933,11 +1926,7 @@ void Unit::CalculateMeleeDamage(Unit* pVictim, uint32 damage, CalcDamageInfo* da
|
|||
if (GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
uint32 reduction_affected_damage = CalcNotIgnoreDamageReduction(damageInfo->damage, damageInfo->damageSchoolMask);
|
||||
uint32 resilienceReduction;
|
||||
if (attackType != RANGED_ATTACK)
|
||||
resilienceReduction = pVictim->GetMeleeDamageReduction(reduction_affected_damage);
|
||||
else
|
||||
resilienceReduction = pVictim->GetRangedDamageReduction(reduction_affected_damage);
|
||||
uint32 resilienceReduction = pVictim->GetDamageReduction(reduction_affected_damage);
|
||||
damageInfo->damage -= resilienceReduction;
|
||||
damageInfo->cleanDamage += resilienceReduction;
|
||||
}
|
||||
|
|
@ -3442,9 +3431,6 @@ SpellMissInfo Unit::MagicSpellHitResult(Unit* pVictim, SpellEntry const* spell)
|
|||
// Increase hit chance from attacker SPELL_AURA_MOD_SPELL_HIT_CHANCE and attacker ratings
|
||||
HitChance += int32(m_modSpellHitChance * 100.0f);
|
||||
|
||||
// Decrease hit chance from victim rating bonus
|
||||
if (pVictim->GetTypeId() == TYPEID_PLAYER)
|
||||
HitChance -= int32(((Player*)pVictim)->GetRatingBonusValue(CR_HIT_TAKEN_SPELL) * 100.0f);
|
||||
|
||||
if (HitChance < 100) HitChance = 100;
|
||||
if (HitChance > 10000) HitChance = 10000;
|
||||
|
|
@ -3572,15 +3558,6 @@ float Unit::MeleeMissChanceCalc(const Unit* pVictim, WeaponAttackType attType) c
|
|||
else
|
||||
missChance -= m_modMeleeHitChance;
|
||||
|
||||
// Hit chance for victim based on ratings
|
||||
if (pVictim->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
if (attType == RANGED_ATTACK)
|
||||
missChance += ((Player*)pVictim)->GetRatingBonusValue(CR_HIT_TAKEN_RANGED);
|
||||
else
|
||||
missChance += ((Player*)pVictim)->GetRatingBonusValue(CR_HIT_TAKEN_MELEE);
|
||||
}
|
||||
|
||||
// Modify miss chance by victim auras
|
||||
if (attType == RANGED_ATTACK)
|
||||
missChance -= pVictim->GetTotalAuraModifier(SPELL_AURA_MOD_ATTACKER_RANGED_HIT_CHANCE);
|
||||
|
|
@ -3729,11 +3706,6 @@ float Unit::GetUnitCriticalChance(WeaponAttackType attackType, const Unit* pVict
|
|||
|
||||
crit += pVictim->GetTotalAuraModifier(SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE);
|
||||
|
||||
// reduce crit chance from Rating for players
|
||||
if (attackType != RANGED_ATTACK)
|
||||
crit -= pVictim->GetMeleeCritChanceReduction();
|
||||
else
|
||||
crit -= pVictim->GetRangedCritChanceReduction();
|
||||
|
||||
// Apply crit chance from defence skill
|
||||
crit += (int32(GetMaxSkillValueForLevel(pVictim)) - int32(pVictim->GetDefenseSkillValue(this))) * 0.04f;
|
||||
|
|
@ -3766,12 +3738,6 @@ uint32 Unit::GetWeaponSkillValue(WeaponAttackType attType, Unit const* target) c
|
|||
: ((Player*)this)->GetSkillValue(skill);
|
||||
// Modify value from ratings
|
||||
value += uint32(((Player*)this)->GetRatingBonusValue(CR_WEAPON_SKILL));
|
||||
switch (attType)
|
||||
{
|
||||
case BASE_ATTACK: value += uint32(((Player*)this)->GetRatingBonusValue(CR_WEAPON_SKILL_MAINHAND)); break;
|
||||
case OFF_ATTACK: value += uint32(((Player*)this)->GetRatingBonusValue(CR_WEAPON_SKILL_OFFHAND)); break;
|
||||
case RANGED_ATTACK: value += uint32(((Player*)this)->GetRatingBonusValue(CR_WEAPON_SKILL_RANGED)); break;
|
||||
}
|
||||
}
|
||||
else
|
||||
value = GetUnitMeleeSkill(target);
|
||||
|
|
@ -6953,11 +6919,7 @@ uint32 Unit::SpellDamageBonusTaken(Unit* pCaster, SpellEntry const* spellProto,
|
|||
if (GetTypeId() != TYPEID_PLAYER)
|
||||
continue;
|
||||
|
||||
float mod = ((Player*)this)->GetRatingBonusValue(CR_CRIT_TAKEN_MELEE) * (-8.0f);
|
||||
if (mod < float((*i)->GetModifier()->m_amount))
|
||||
mod = float((*i)->GetModifier()->m_amount);
|
||||
|
||||
TakenTotalMod *= (mod + 100.0f) / 100.0f;
|
||||
TakenTotalMod *= ((*i)->GetModifier()->m_amount + 100.0f) / 100.0f;
|
||||
}
|
||||
break;
|
||||
case 20911: // Blessing of Sanctuary
|
||||
|
|
@ -7094,8 +7056,6 @@ bool Unit::IsSpellCrit(Unit* pVictim, SpellEntry const* spellProto, SpellSchoolM
|
|||
crit_chance += pVictim->GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE, schoolMask);
|
||||
// Modify critical chance by victim SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE
|
||||
crit_chance += pVictim->GetTotalAuraModifier(SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE);
|
||||
// Modify by player victim resilience
|
||||
crit_chance -= pVictim->GetSpellCritChanceReduction();
|
||||
}
|
||||
|
||||
// scripted (increase crit chance ... against ... target by x%)
|
||||
|
|
@ -7968,11 +7928,7 @@ uint32 Unit::MeleeDamageBonusTaken(Unit* pCaster, uint32 pdamage, WeaponAttackTy
|
|||
if (GetTypeId() != TYPEID_PLAYER)
|
||||
continue;
|
||||
|
||||
float mod = ((Player*)this)->GetRatingBonusValue(CR_CRIT_TAKEN_MELEE) * (-8.0f);
|
||||
if (mod < float((*i)->GetModifier()->m_amount))
|
||||
mod = float((*i)->GetModifier()->m_amount);
|
||||
|
||||
TakenPercent *= (mod + 100.0f) / 100.0f;
|
||||
TakenPercent *= ((*i)->GetModifier()->m_amount + 100.0f) / 100.0f;
|
||||
}
|
||||
break;
|
||||
case 20911: // Blessing of Sanctuary
|
||||
|
|
|
|||
|
|
@ -489,18 +489,18 @@ enum CombatRating
|
|||
CR_CRIT_MELEE = 8,
|
||||
CR_CRIT_RANGED = 9,
|
||||
CR_CRIT_SPELL = 10,
|
||||
CR_HIT_TAKEN_MELEE = 11,
|
||||
CR_HIT_TAKEN_RANGED = 12,
|
||||
CR_HIT_TAKEN_SPELL = 13,
|
||||
CR_CRIT_TAKEN_MELEE = 14, // COMBAT_RATING_RESILIENCE_CRIT_TAKEN
|
||||
CR_CRIT_TAKEN_RANGED = 15, // COMBAT_RATING_RESILIENCE_PLAYER_DAMAGE_TAKEN
|
||||
CR_CRIT_TAKEN_SPELL = 16,
|
||||
CR_HIT_TAKEN_MELEE = 11, // obsolete
|
||||
CR_HIT_TAKEN_RANGED = 12, // obsolete
|
||||
CR_HIT_TAKEN_SPELL = 13, // obsolete
|
||||
CR_CRIT_TAKEN_MELEE = 14, // COMBAT_RATING_RESILIENCE_CRIT_TAKEN obsolete
|
||||
CR_RESILIENCE_DAMAGE_TAKEN = 15, // old CR_CRIT_TAKEN_RANGED
|
||||
CR_CRIT_TAKEN_SPELL = 16, // obsolete
|
||||
CR_HASTE_MELEE = 17,
|
||||
CR_HASTE_RANGED = 18,
|
||||
CR_HASTE_SPELL = 19,
|
||||
CR_WEAPON_SKILL_MAINHAND = 20,
|
||||
CR_WEAPON_SKILL_OFFHAND = 21,
|
||||
CR_WEAPON_SKILL_RANGED = 22,
|
||||
CR_WEAPON_SKILL_MAINHAND = 20, // obsolete
|
||||
CR_WEAPON_SKILL_OFFHAND = 21, // obsolete
|
||||
CR_WEAPON_SKILL_RANGED = 22, // obsolete
|
||||
CR_EXPERTISE = 23,
|
||||
CR_ARMOR_PENETRATION = 24,
|
||||
CR_MASTERY = 25
|
||||
|
|
@ -1342,19 +1342,9 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
void DealSpellDamage(SpellNonMeleeDamage* damageInfo, bool durabilityLoss);
|
||||
|
||||
// player or player's pet resilience (-1%)
|
||||
float GetMeleeCritChanceReduction() const { return GetCombatRatingReduction(CR_CRIT_TAKEN_MELEE); }
|
||||
float GetRangedCritChanceReduction() const { return GetCombatRatingReduction(CR_CRIT_TAKEN_RANGED); }
|
||||
float GetSpellCritChanceReduction() const { return GetCombatRatingReduction(CR_CRIT_TAKEN_SPELL); }
|
||||
|
||||
// player or player's pet resilience (-1%)
|
||||
uint32 GetMeleeCritDamageReduction(uint32 damage) const { return GetCombatRatingDamageReduction(CR_CRIT_TAKEN_MELEE, 2.2f, 33.0f, damage); }
|
||||
uint32 GetRangedCritDamageReduction(uint32 damage) const { return GetCombatRatingDamageReduction(CR_CRIT_TAKEN_RANGED, 2.2f, 33.0f, damage); }
|
||||
uint32 GetSpellCritDamageReduction(uint32 damage) const { return GetCombatRatingDamageReduction(CR_CRIT_TAKEN_SPELL, 2.2f, 33.0f, damage); }
|
||||
|
||||
uint32 GetCritDamageReduction(uint32 damage) const { return GetCombatRatingDamageReduction(CR_RESILIENCE_DAMAGE_TAKEN, 2.2f, 33.0f, damage); }
|
||||
// player or player's pet resilience (-1%), cap 100%
|
||||
uint32 GetMeleeDamageReduction(uint32 damage) const { return GetCombatRatingDamageReduction(CR_CRIT_TAKEN_MELEE, 2.0f, 100.0f, damage); }
|
||||
uint32 GetRangedDamageReduction(uint32 damage) const { return GetCombatRatingDamageReduction(CR_CRIT_TAKEN_MELEE, 2.0f, 100.0f, damage); }
|
||||
uint32 GetSpellDamageReduction(uint32 damage) const { return GetCombatRatingDamageReduction(CR_CRIT_TAKEN_MELEE, 2.0f, 100.0f, damage); }
|
||||
uint32 GetDamageReduction(uint32 damage) const { return GetCombatRatingDamageReduction(CR_RESILIENCE_DAMAGE_TAKEN, 2.0f, 100.0f, damage); }
|
||||
|
||||
float MeleeSpellMissChance(Unit* pVictim, WeaponAttackType attType, int32 skillDiff, SpellEntry const* spell);
|
||||
SpellMissInfo MeleeSpellHitResult(Unit* pVictim, SpellEntry const* spell);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "12107"
|
||||
#define REVISION_NR "0146"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue