*Fix the bug that some instant cast spells do not remove auras with cast interrupte flag.

--HG--
branch : trunk
This commit is contained in:
megamage
2009-02-02 16:04:17 -06:00
parent 49a9e26498
commit 5d943336c5
+8 -2
View File
@@ -2083,8 +2083,7 @@ void Spell::prepare(SpellCastTargets * targets, Aura* triggeredByAura)
// set timer base at cast time
ReSetTimer();
//item: first cast may destroy item and second cast causes crash
if(m_IsTriggeredSpell || !m_casttime && !m_spellInfo->StartRecoveryTime && !m_castItemGUID && GetCurrentContainer() == CURRENT_GENERIC_SPELL)
if(m_IsTriggeredSpell)
cast(true);
else
{
@@ -2093,11 +2092,18 @@ void Spell::prepare(SpellCastTargets * targets, Aura* triggeredByAura)
if(isSpellBreakStealth(m_spellInfo) )
m_caster->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_CAST);
if(!m_casttime && !m_spellInfo->StartRecoveryTime
&& !m_castItemGUID //item: first cast may destroy item and second cast causes crash
&& GetCurrentContainer() == CURRENT_GENERIC_SPELL)
cast(true);
else
{
m_caster->SetCurrentCastedSpell( this );
m_selfContainer = &(m_caster->m_currentSpells[GetCurrentContainer()]);
SendSpellStart();
}
}
}
void Spell::cancel(bool report)
{