aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAqua Deus <95978183+aquadeus@users.noreply.github.com>2022-09-07 14:50:50 +0200
committerGitHub <noreply@github.com>2022-09-07 14:50:50 +0200
commit6e9a6700d83f0ad07c7c56becfc3a62434707208 (patch)
tree9c6eb575fd1c4b9c9ed25ddc07246523e1130537 /src
parent8660655de03541e64fd1b2d8290dcb53e6ff4ec8 (diff)
Core/Auras: Implement SPELL_AURA_MOD_BONUS_ARMOR_PCT and rename HandleModStatBonusArmor (#28226)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Unit/StatSystem.cpp1
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp14
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.h3
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;