mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 02:25:38 +01:00
Core/Spells: rework part 3: spells only handle at most one UnitAura and one DynObjAura during its lifetime
Closes #15088
This commit is contained in:
@@ -576,18 +576,22 @@ void SpellScript::SetHitHeal(int32 heal)
|
||||
m_spell->m_healing = heal;
|
||||
}
|
||||
|
||||
Aura* SpellScript::GetHitAura() const
|
||||
Aura* SpellScript::GetHitAura(bool dynObjAura /*= false*/) const
|
||||
{
|
||||
if (!IsInTargetHook())
|
||||
{
|
||||
TC_LOG_ERROR("scripts", "Script: `%s` Spell: `%u`: function SpellScript::GetHitAura was called, but function has no effect in current hook!", m_scriptName->c_str(), m_scriptSpellId);
|
||||
return nullptr;
|
||||
}
|
||||
if (!m_spell->m_spellAura)
|
||||
|
||||
Aura* aura = m_spell->_spellAura;
|
||||
if (dynObjAura)
|
||||
aura = m_spell->_dynObjAura;
|
||||
|
||||
if (!aura || aura->IsRemoved())
|
||||
return nullptr;
|
||||
if (m_spell->m_spellAura->IsRemoved())
|
||||
return nullptr;
|
||||
return m_spell->m_spellAura;
|
||||
|
||||
return aura;
|
||||
}
|
||||
|
||||
void SpellScript::PreventHitAura()
|
||||
@@ -597,8 +601,10 @@ void SpellScript::PreventHitAura()
|
||||
TC_LOG_ERROR("scripts", "Script: `%s` Spell: `%u`: function SpellScript::PreventHitAura was called, but function has no effect in current hook!", m_scriptName->c_str(), m_scriptSpellId);
|
||||
return;
|
||||
}
|
||||
if (m_spell->m_spellAura)
|
||||
m_spell->m_spellAura->Remove();
|
||||
if (UnitAura* aura = m_spell->_spellAura)
|
||||
aura->Remove();
|
||||
if (DynObjAura* aura = m_spell->_dynObjAura)
|
||||
aura->Remove();
|
||||
}
|
||||
|
||||
void SpellScript::PreventHitEffect(SpellEffIndex effIndex)
|
||||
|
||||
Reference in New Issue
Block a user