diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 13 |
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 |