From e121267298b9147df9f9a8d411ee446c24011d15 Mon Sep 17 00:00:00 2001 From: megamage Date: Thu, 19 Mar 2009 15:18:49 -0600 Subject: [PATCH] [7497] Remove auras from GO owner at remove connected owned th this spell GO. Author: VladimirMangos --HG-- branch : trunk --- src/game/Unit.cpp | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index e037c17bea..e745aec5d6 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -4632,17 +4632,25 @@ void Unit::RemoveGameObject(GameObject* gameObj, bool del) { assert(gameObj && gameObj->GetOwnerGUID()==GetGUID()); - // GO created by some spell - if ( GetTypeId()==TYPEID_PLAYER && gameObj->GetSpellId() ) - { - SpellEntry const* createBySpell = sSpellStore.LookupEntry(gameObj->GetSpellId()); - // Need activate spell use for owner - if (createBySpell && createBySpell->Attributes & SPELL_ATTR_DISABLED_WHILE_ACTIVE) - // note: item based cooldowns and cooldown spell mods with charges ignored (unknown existed cases) - ((Player*)this)->SendCooldownEvent(createBySpell); - } gameObj->SetOwnerGUID(0); + + // GO created by some spell + if (uint32 spellid = gameObj->GetSpellId()) + { + RemoveAurasDueToSpell(spellid); + + if (GetTypeId()==TYPEID_PLAYER) + { + SpellEntry const* createBySpell = sSpellStore.LookupEntry(spellid ); + // Need activate spell use for owner + if (createBySpell && createBySpell->Attributes & SPELL_ATTR_DISABLED_WHILE_ACTIVE) + // note: item based cooldowns and cooldown spell mods with charges ignored (unknown existed cases) + ((Player*)this)->SendCooldownEvent(createBySpell); + } + } + m_gameObj.remove(gameObj); + if(del) { gameObj->SetRespawnTime(0);