aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Player/Player.cpp222
1 files changed, 2 insertions, 220 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 64332b434ff..83aaf6d35d9 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -7727,7 +7727,7 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply)
return;
uint32 itemLevel = item->GetItemLevel(this);
- float combatRatingMultiplier = 1.0f;
+ //float combatRatingMultiplier = 1.0f;
//if (GtCombatRatingsMultByILvl const* ratingMult = sCombatRatingsMultByILvlGameTable.GetRow(itemLevel))
// combatRatingMultiplier = GetIlvlStatMultiplier(ratingMult, proto->GetInventoryType());
@@ -7741,225 +7741,7 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply)
if (val == 0)
continue;
- switch (statType)
- {
- case ITEM_MOD_MANA:
- HandleStatFlatModifier(UNIT_MOD_MANA, BASE_VALUE, float(val), apply);
- break;
- case ITEM_MOD_HEALTH: // modify HP
- HandleStatFlatModifier(UNIT_MOD_HEALTH, BASE_VALUE, float(val), apply);
- break;
- case ITEM_MOD_AGILITY: // modify agility
- HandleStatFlatModifier(UNIT_MOD_STAT_AGILITY, BASE_VALUE, float(val), apply);
- UpdateStatBuffMod(STAT_AGILITY);
- break;
- case ITEM_MOD_STRENGTH: //modify strength
- HandleStatFlatModifier(UNIT_MOD_STAT_STRENGTH, BASE_VALUE, float(val), apply);
- UpdateStatBuffMod(STAT_STRENGTH);
- break;
- case ITEM_MOD_INTELLECT: //modify intellect
- HandleStatFlatModifier(UNIT_MOD_STAT_INTELLECT, BASE_VALUE, float(val), apply);
- UpdateStatBuffMod(STAT_INTELLECT);
- break;
- case ITEM_MOD_SPIRIT: //modify spirit
- HandleStatFlatModifier(UNIT_MOD_STAT_SPIRIT, BASE_VALUE, float(val), apply);
- UpdateStatBuffMod(STAT_SPIRIT);
- break;
- case ITEM_MOD_STAMINA: //modify stamina
- {
- //if (GtStaminaMultByILvl const* staminaMult = sStaminaMultByILvlGameTable.GetRow(itemLevel))
- // val = int32(val * GetIlvlStatMultiplier(staminaMult, proto->GetInventoryType()));
- HandleStatFlatModifier(UNIT_MOD_STAT_STAMINA, BASE_VALUE, float(val), apply);
- UpdateStatBuffMod(STAT_STAMINA);
- break;
- }
- case ITEM_MOD_DEFENSE_SKILL_RATING:
- ApplyRatingMod(CR_DEFENSE_SKILL, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_DODGE_RATING:
- ApplyRatingMod(CR_DODGE, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_PARRY_RATING:
- ApplyRatingMod(CR_PARRY, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_BLOCK_RATING:
- ApplyRatingMod(CR_BLOCK, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_HIT_MELEE_RATING:
- ApplyRatingMod(CR_HIT_MELEE, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_HIT_RANGED_RATING:
- ApplyRatingMod(CR_HIT_RANGED, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_HIT_SPELL_RATING:
- ApplyRatingMod(CR_HIT_SPELL, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_CRIT_MELEE_RATING:
- ApplyRatingMod(CR_CRIT_MELEE, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_CRIT_RANGED_RATING:
- ApplyRatingMod(CR_CRIT_RANGED, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_CRIT_SPELL_RATING:
- ApplyRatingMod(CR_CRIT_SPELL, int32(val * combatRatingMultiplier), 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_RESILIENCE_PLAYER_DAMAGE, 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 * combatRatingMultiplier), apply);
- ApplyRatingMod(CR_HIT_RANGED, int32(val * combatRatingMultiplier), apply);
- ApplyRatingMod(CR_HIT_SPELL, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_CRIT_RATING:
- ApplyRatingMod(CR_CRIT_MELEE, int32(val * combatRatingMultiplier), apply);
- ApplyRatingMod(CR_CRIT_RANGED, int32(val * combatRatingMultiplier), apply);
- ApplyRatingMod(CR_CRIT_SPELL, int32(val * combatRatingMultiplier), apply);
- break;
- // case ITEM_MOD_HIT_TAKEN_RATING: // Unused since 3.3.5
- // 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: // Unused since 3.3.5
- // 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_RESILIENCE_PLAYER_DAMAGE, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_HASTE_RATING:
- ApplyRatingMod(CR_HASTE_MELEE, int32(val * combatRatingMultiplier), apply);
- ApplyRatingMod(CR_HASTE_RANGED, int32(val * combatRatingMultiplier), apply);
- ApplyRatingMod(CR_HASTE_SPELL, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_EXPERTISE_RATING:
- ApplyRatingMod(CR_EXPERTISE, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_ATTACK_POWER:
- HandleStatFlatModifier(UNIT_MOD_ATTACK_POWER, TOTAL_VALUE, float(val), apply);
- HandleStatFlatModifier(UNIT_MOD_ATTACK_POWER_RANGED, TOTAL_VALUE, float(val), apply);
- break;
- case ITEM_MOD_RANGED_ATTACK_POWER:
- HandleStatFlatModifier(UNIT_MOD_ATTACK_POWER_RANGED, TOTAL_VALUE, float(val), apply);
- break;
- case ITEM_MOD_VERSATILITY:
- ApplyRatingMod(CR_VERSATILITY_DAMAGE_DONE, int32(val * combatRatingMultiplier), apply);
- ApplyRatingMod(CR_VERSATILITY_DAMAGE_TAKEN, int32(val * combatRatingMultiplier), apply);
- ApplyRatingMod(CR_VERSATILITY_HEALING_DONE, int32(val * combatRatingMultiplier), 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;
- case ITEM_MOD_HEALTH_REGEN:
- ApplyHealthRegenBonus(int32(val), apply);
- break;
- case ITEM_MOD_SPELL_PENETRATION:
- ApplySpellPenetrationBonus(val, apply);
- break;
- case ITEM_MOD_MASTERY_RATING:
- ApplyRatingMod(CR_MASTERY, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_EXTRA_ARMOR:
- HandleStatFlatModifier(UNIT_MOD_ARMOR, TOTAL_VALUE, float(val), apply);
- break;
- case ITEM_MOD_FIRE_RESISTANCE:
- HandleStatFlatModifier(UNIT_MOD_RESISTANCE_FIRE, BASE_VALUE, float(val), apply);
- break;
- case ITEM_MOD_FROST_RESISTANCE:
- HandleStatFlatModifier(UNIT_MOD_RESISTANCE_FROST, BASE_VALUE, float(val), apply);
- break;
- case ITEM_MOD_HOLY_RESISTANCE:
- HandleStatFlatModifier(UNIT_MOD_RESISTANCE_HOLY, BASE_VALUE, float(val), apply);
- break;
- case ITEM_MOD_SHADOW_RESISTANCE:
- HandleStatFlatModifier(UNIT_MOD_RESISTANCE_SHADOW, BASE_VALUE, float(val), apply);
- break;
- case ITEM_MOD_NATURE_RESISTANCE:
- HandleStatFlatModifier(UNIT_MOD_RESISTANCE_NATURE, BASE_VALUE, float(val), apply);
- break;
- case ITEM_MOD_ARCANE_RESISTANCE:
- HandleStatFlatModifier(UNIT_MOD_RESISTANCE_ARCANE, BASE_VALUE, float(val), apply);
- break;
- case ITEM_MOD_PVP_POWER:
- ApplyRatingMod(CR_PVP_POWER, int32(val), apply);
- break;
- case ITEM_MOD_CORRUPTION:
- ApplyRatingMod(CR_CORRUPTION, int32(val), apply);
- break;
- case ITEM_MOD_CORRUPTION_RESISTANCE:
- ApplyRatingMod(CR_CORRUPTION_RESISTANCE, int32(val), apply);
- break;
- case ITEM_MOD_CR_SPEED:
- ApplyRatingMod(CR_SPEED, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_CR_LIFESTEAL:
- ApplyRatingMod(CR_LIFESTEAL, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_CR_AVOIDANCE:
- ApplyRatingMod(CR_AVOIDANCE, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_CR_STURDINESS:
- ApplyRatingMod(CR_STURDINESS, int32(val * combatRatingMultiplier), apply);
- break;
- case ITEM_MOD_AGI_STR_INT:
- HandleStatFlatModifier(UNIT_MOD_STAT_AGILITY, BASE_VALUE, float(val), apply);
- HandleStatFlatModifier(UNIT_MOD_STAT_STRENGTH, BASE_VALUE, float(val), apply);
- HandleStatFlatModifier(UNIT_MOD_STAT_INTELLECT, BASE_VALUE, float(val), apply);
- UpdateStatBuffMod(STAT_AGILITY);
- UpdateStatBuffMod(STAT_STRENGTH);
- UpdateStatBuffMod(STAT_INTELLECT);
- break;
- case ITEM_MOD_AGI_STR:
- HandleStatFlatModifier(UNIT_MOD_STAT_AGILITY, BASE_VALUE, float(val), apply);
- HandleStatFlatModifier(UNIT_MOD_STAT_STRENGTH, BASE_VALUE, float(val), apply);
- UpdateStatBuffMod(STAT_AGILITY);
- UpdateStatBuffMod(STAT_STRENGTH);
- break;
- case ITEM_MOD_AGI_INT:
- HandleStatFlatModifier(UNIT_MOD_STAT_AGILITY, BASE_VALUE, float(val), apply);
- HandleStatFlatModifier(UNIT_MOD_STAT_INTELLECT, BASE_VALUE, float(val), apply);
- UpdateStatBuffMod(STAT_AGILITY);
- UpdateStatBuffMod(STAT_INTELLECT);
- break;
- case ITEM_MOD_STR_INT:
- HandleStatFlatModifier(UNIT_MOD_STAT_STRENGTH, BASE_VALUE, float(val), apply);
- HandleStatFlatModifier(UNIT_MOD_STAT_INTELLECT, BASE_VALUE, float(val), apply);
- UpdateStatBuffMod(STAT_STRENGTH);
- UpdateStatBuffMod(STAT_INTELLECT);
- break;
- }
+ ApplyItemModModifier(static_cast<ItemModType>(statType), val, apply);
}
if (uint32 armor = proto->GetArmor(itemLevel))