diff options
| author | ariel- <ariel-@users.noreply.github.com> | 2018-03-18 15:36:37 -0300 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-09-19 22:19:22 +0200 |
| commit | c8d7289245c0d60f25f355452574c1258baa7380 (patch) | |
| tree | de8c159f4de5859e9c60c0e07903ae95994b012a /src | |
| parent | 3b4d8de96cf177cdcf20bc468d54e8c4d9683dd0 (diff) | |
Core/Spells: fix delayed hit aura crash
Closes #21664
(cherry picked from commit 437c5c7b9d2122f7b1f46fd4e0f502c8be1e3091)
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 7 | ||||
| -rw-r--r-- | src/server/game/Spells/Spell.h | 1 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index c6a22ef199c..8e31536655f 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2646,9 +2646,9 @@ void Spell::TargetInfo::DoDamageAndTriggers(Spell* spell) else if (spell->m_caster->GetTypeId() == TYPEID_GAMEOBJECT && spell->m_caster->ToGameObject()->AI()) spell->m_caster->ToGameObject()->AI()->SpellHitTarget(_spellHitTarget, spell->m_spellInfo); - if (spell->_spellAura) + if (HitAura) { - if (AuraApplication* aurApp = spell->_spellAura->GetApplicationOfTarget(_spellHitTarget->GetGUID())) + if (AuraApplication* aurApp = HitAura->GetApplicationOfTarget(_spellHitTarget->GetGUID())) { // only apply unapplied effects (for reapply case) uint32 effMask = EffectMask & aurApp->GetEffectsToApply(); @@ -2907,7 +2907,10 @@ void Spell::DoSpellEffectHit(Unit* unit, SpellEffectInfo const& spellEffectInfo, } } else + { + hitInfo.HitAura = _spellAura; _spellAura->AddStaticApplication(unit, aura_effmask); + } } } diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index faeaa0e8101..50b20f2f0b8 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -849,6 +849,7 @@ class TC_GAME_API Spell int32 AuraDuration = 0; int32 AuraBasePoints[MAX_SPELL_EFFECTS] = { }; bool Positive = true; + UnitAura* HitAura = nullptr; private: Unit* _spellHitTarget = nullptr; // changed for example by reflect |
