From fc54ae79a95bc162bd0ceec199561af873576a23 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 5 Feb 2025 20:35:13 +0100 Subject: Core/Auras: Ensure aura target of SPELL_AURA_TRIGGER_SPELL_ON_POWER_PCT has required power type Closes #30669 --- src/server/game/Entities/Unit/Unit.cpp | 3 +++ src/server/game/Spells/Auras/SpellAuraEffects.cpp | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 00c9b9dde4e..4b3e7921046 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -9876,6 +9876,9 @@ void Unit::TriggerOnPowerChangeAuras(Powers power, int32 oldVal, int32 newVal) if (effect->GetAuraType() == SPELL_AURA_TRIGGER_SPELL_ON_POWER_PCT) { int32 maxPower = GetMaxPower(power); + if (!maxPower) + continue; + oldValueCheck = GetPctOf(oldVal, maxPower); newValueCheck = GetPctOf(newVal, maxPower); } diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index bc414da722f..90a5d78cee3 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -5327,7 +5327,11 @@ void AuraEffect::HandleTriggerSpellOnPowerPercent(AuraApplication const* aurApp, int32 effectAmount = GetAmount(); uint32 triggerSpell = GetSpellEffectInfo().TriggerSpell; - float powerAmountPct = GetPctOf(target->GetPower(Powers(GetMiscValue())), target->GetMaxPower(Powers(GetMiscValue()))); + int32 maxPower = target->GetMaxPower(Powers(GetMiscValue())); + if (!maxPower) + return; + + float powerAmountPct = GetPctOf(target->GetPower(Powers(GetMiscValue())), maxPower); switch (AuraTriggerOnPowerChangeDirection(GetMiscValueB())) { -- cgit v1.2.3