Core/Spells: fix delayed hit aura crash

Closes #21664
This commit is contained in:
ariel-
2018-03-18 15:36:37 -03:00
parent 4fe960b9e8
commit 437c5c7b9d
2 changed files with 6 additions and 2 deletions

View File

@@ -2556,9 +2556,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)
uint8 effMask = EffectMask & aurApp->GetEffectsToApply();
@@ -2820,7 +2820,10 @@ void Spell::DoSpellEffectHit(Unit* unit, uint8 effIndex, TargetInfo& hitInfo)
}
}
else
{
hitInfo.HitAura = _spellAura;
_spellAura->AddStaticApplication(unit, aura_effmask);
}
}
}

View File

@@ -676,6 +676,7 @@ class TC_GAME_API Spell
SpellInfo const* AuraSpellInfo = nullptr;
int32 AuraBasePoints[MAX_SPELL_EFFECTS] = { };
bool Positive = true;
UnitAura* HitAura = nullptr;
private:
Unit* _spellHitTarget = nullptr; // changed for example by reflect