From eb3abf2556791842ddc816ad152e26ae6f923d23 Mon Sep 17 00:00:00 2001 From: megamage Date: Thu, 19 Feb 2009 18:30:03 -0600 Subject: *Fix a crash caused by summon_type_possess. --HG-- branch : trunk --- src/game/Spell.cpp | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to 'src/game/Spell.cpp') diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 450cd5e672b..f74bf664c5c 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -2146,21 +2146,27 @@ void Spell::cancel() } break; } + finish(false); + // Unsummon summon as possessed creatures on spell cancel - for (int i = 0; i < 3; i++) + if(m_caster->GetTypeId() == TYPEID_PLAYER) { - if (m_spellInfo->Effect[i] == SPELL_EFFECT_SUMMON && - (m_spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED || - m_spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED2 || - m_spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED3)) + for(int i = 0; i < 3; ++i) { - // Possession is removed in the UnSummon function - if (m_caster->GetCharm()) - ((TemporarySummon*)m_caster->GetCharm())->UnSummon(); + if(m_spellInfo->Effect[i] == SPELL_EFFECT_SUMMON && + (m_spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED || + m_spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED2 || + m_spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED3)) + { + ((Player*)m_caster)->StopCastingCharm(); + break; + // Possession is removed in the UnSummon function + //if (m_caster->GetCharm()) + // ((TemporarySummon*)m_caster->GetCharm())->UnSummon(); + } } } - finish(false); m_caster->RemoveDynObject(m_spellInfo->Id); m_caster->RemoveGameObject(m_spellInfo->Id,true); } -- cgit v1.2.3