diff options
author | Aqua Deus <95978183+aquadeus@users.noreply.github.com> | 2022-09-07 14:50:50 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-07 14:50:50 +0200 |
commit | 6e9a6700d83f0ad07c7c56becfc3a62434707208 (patch) | |
tree | 9c6eb575fd1c4b9c9ed25ddc07246523e1130537 | |
parent | 8660655de03541e64fd1b2d8290dcb53e6ff4ec8 (diff) |
Core/Auras: Implement SPELL_AURA_MOD_BONUS_ARMOR_PCT and rename HandleModStatBonusArmor (#28226)
-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; |