diff options
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 222 |
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)) |