aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/Spell.cpp19
-rw-r--r--src/game/Unit.cpp18
2 files changed, 17 insertions, 20 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index f74bf664c5c..90a22d963e9 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -2148,25 +2148,6 @@ void Spell::cancel()
finish(false);
- // Unsummon summon as possessed creatures on spell cancel
- if(m_caster->GetTypeId() == TYPEID_PLAYER)
- {
- for(int i = 0; i < 3; ++i)
- {
- 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();
- }
- }
- }
-
m_caster->RemoveDynObject(m_spellInfo->Id);
m_caster->RemoveGameObject(m_spellInfo->Id,true);
}
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 2e4a552c8d0..21a489f188c 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -4673,7 +4673,7 @@ void Unit::RemoveAura(AuraMap::iterator &i, AuraRemoveMode mode)
// Statue unsummoned at aura remove
Totem* statue = NULL;
bool channeled = false;
- if(IsChanneledSpell(AurSpellInfo))
+ if(Aur->GetAuraDuration() && IsChanneledSpell(AurSpellInfo))
{
if(!caster) // can be already located for IsSingleTargetSpell case
caster = Aur->GetCaster();
@@ -4700,6 +4700,22 @@ void Unit::RemoveAura(AuraMap::iterator &i, AuraRemoveMode mode)
}
}
}
+
+ // Unsummon summon as possessed creatures on spell cancel
+ if(caster->GetTypeId() == TYPEID_PLAYER)
+ {
+ for(int i = 0; i < 3; ++i)
+ {
+ if(AurSpellInfo->Effect[i] == SPELL_EFFECT_SUMMON &&
+ (AurSpellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED ||
+ AurSpellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED2 ||
+ AurSpellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED3))
+ {
+ ((Player*)caster)->StopCastingCharm();
+ break;
+ }
+ }
+ }
}
}