diff options
Diffstat (limited to 'src/game/Spell.cpp')
-rw-r--r-- | src/game/Spell.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 707f1819968..442df24239a 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -2116,8 +2116,11 @@ void Spell::cancel() if(m_spellState == SPELL_STATE_FINISHED) return; + uint32 oldState = m_spellState; + m_spellState = SPELL_STATE_FINISHED; + m_autoRepeat = false; - switch (m_spellState) + switch (oldState) { case SPELL_STATE_PREPARING: case SPELL_STATE_DELAYED: @@ -2149,10 +2152,13 @@ void Spell::cancel() } break; } - finish(false); - m_caster->RemoveDynObject(m_spellInfo->Id); m_caster->RemoveGameObject(m_spellInfo->Id,true); + + //set state back so finish will be processed + m_spellState = oldState; + + finish(false); } void Spell::cast(bool skipCheck) |