diff options
-rw-r--r-- | src/server/game/Entities/Unit/StatSystem.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 14 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.h | 3 |
3 files changed, 14 insertions, 4 deletions
diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index 8d3420874ca..38fec84894d 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -254,6 +254,7 @@ void Player::UpdateArmor() value += GetFlatModifierValue(unitMod, TOTAL_VALUE); // bonus armor from auras and items value *= GetPctModifierValue(unitMod, TOTAL_PCT); + value *= GetTotalAuraMultiplier(SPELL_AURA_MOD_BONUS_ARMOR_PCT); SetArmor(int32(value), int32(value - baseValue)); diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 52fb6ea128b..f80309dcfc6 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -531,8 +531,8 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //462 SPELL_AURA_MOD_HEALING_AND_ABSORB_FROM_CASTER &AuraEffect::HandleNULL, //463 SPELL_AURA_CONVERT_CRIT_RATING_PCT_TO_PARRY_RATING used by Riposte &AuraEffect::HandleNULL, //464 SPELL_AURA_MOD_ATTACK_POWER_OF_BONUS_ARMOR - &AuraEffect::HandleModStatBonusArmor, //465 SPELL_AURA_MOD_BONUS_ARMOR - &AuraEffect::HandleNULL, //466 SPELL_AURA_MOD_BONUS_ARMOR_PCT + &AuraEffect::HandleModBonusArmor, //465 SPELL_AURA_MOD_BONUS_ARMOR + &AuraEffect::HandleModBonusArmorPercent, //466 SPELL_AURA_MOD_BONUS_ARMOR_PCT &AuraEffect::HandleModStatBonusPercent, //467 SPELL_AURA_MOD_STAT_BONUS_PCT &AuraEffect::HandleTriggerSpellOnHealthPercent, //468 SPELL_AURA_TRIGGER_SPELL_ON_HEALTH_PCT &AuraEffect::HandleShowConfirmationPrompt, //469 SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY @@ -3593,7 +3593,7 @@ void AuraEffect::HandleModArmorPctFromStat(AuraApplication const* aurApp, uint8 player->UpdateArmor(); } -void AuraEffect::HandleModStatBonusArmor(AuraApplication const* aurApp, uint8 mode, bool apply) const +void AuraEffect::HandleModBonusArmor(AuraApplication const* aurApp, uint8 mode, bool apply) const { if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) return; @@ -3601,6 +3601,14 @@ void AuraEffect::HandleModStatBonusArmor(AuraApplication const* aurApp, uint8 mo aurApp->GetTarget()->HandleStatFlatModifier(UNIT_MOD_ARMOR, BASE_VALUE, float(GetAmount()), apply); } +void AuraEffect::HandleModBonusArmorPercent(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const +{ + if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) + return; + + aurApp->GetTarget()->UpdateArmor(); +} + void AuraEffect::HandleModStatBonusPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const { if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index 8e8bc66f59c..50b8ec77412 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -234,7 +234,8 @@ class TC_GAME_API AuraEffect void HandleModHealingDonePct(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleModTotalPercentStat(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleAuraModExpertise(AuraApplication const* aurApp, uint8 mode, bool apply) const; - void HandleModStatBonusArmor(AuraApplication const* aurApp, uint8 mode, bool apply) const; + void HandleModBonusArmor(AuraApplication const* aurApp, uint8 mode, bool apply) const; + void HandleModBonusArmorPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleModArmorPctFromStat(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleModStatBonusPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleOverrideSpellPowerByAttackPower(AuraApplication const* aurApp, uint8 mode, bool apply) const; |