aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMeji <alvaro.megias@outlook.com>2023-03-12 17:23:05 +0100
committerGitHub <noreply@github.com>2023-03-12 17:23:05 +0100
commit5787c0173b738302f996f11a70db634253fb18c1 (patch)
tree7575e7f3c382f1d9f92917192af77808d38f7270
parent5d5ca30b232586ad378671bf0ac8407495dea188 (diff)
Core/Auras: Implement caster selection of SPELL_AURA_TRIGGER_SPELL_ON_EXPIRE (stored in MiscValue) (#28860)
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index c07ada4cfff..316f2082317 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -5138,7 +5138,18 @@ void AuraEffect::HandleTriggerSpellOnExpire(AuraApplication const* aurApp, uint8
if (!(mode & AURA_EFFECT_HANDLE_REAL) || apply || aurApp->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE)
return;
- aurApp->GetTarget()->CastSpell(aurApp->GetTarget(), GetSpellEffectInfo().TriggerSpell, this);
+ Unit* caster = aurApp->GetTarget();
+
+ // MiscValue (Caster):
+ // 0 - Aura target
+ // 1 - Aura caster
+ // 2 - ? Aura target is always TARGET_UNIT_CASTER so we consider the same behavior as MiscValue 1
+ uint32 casterType = uint32(GetMiscValue());
+ if (casterType > 0)
+ caster = GetCaster();
+
+ if (caster)
+ caster->CastSpell(aurApp->GetTarget(), GetSpellEffectInfo().TriggerSpell, this);
}
void AuraEffect::HandleAuraOpenStable(AuraApplication const* aurApp, uint8 mode, bool apply) const