From f4991543db423f246fb806f0af462d0a610f6b95 Mon Sep 17 00:00:00 2001 From: megamage Date: Sun, 18 Jan 2009 10:55:16 -0600 Subject: [PATCH 1/3] *Fix a crash bug. Do not use 880. --HG-- branch : trunk --- src/game/Unit.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 6d2eb1ec4c..ef2570ddc9 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -4662,13 +4662,6 @@ void Unit::RemoveAura(AuraMap::iterator &i, AuraRemoveMode mode) Aur->SetStackAmount(0); Aur->_RemoveAura(); - delete Aur; - - if(caster_channeled) - RemoveAurasAtChanneledTarget (AurSpellInfo); - - if(statue) - statue->UnSummon(); if(mode != AURA_REMOVE_BY_STACK) { @@ -4684,6 +4677,14 @@ void Unit::RemoveAura(AuraMap::iterator &i, AuraRemoveMode mode) } } + delete Aur; + + if(caster_channeled) + RemoveAurasAtChanneledTarget (AurSpellInfo); + + if(statue) + statue->UnSummon(); + // only way correctly remove all auras from list if( m_Auras.empty() ) i = m_Auras.end(); From eb21e69c3adf4f22366557a8a9b4c9db2a62408b Mon Sep 17 00:00:00 2001 From: megamage Date: Sun, 18 Jan 2009 11:06:54 -0600 Subject: [PATCH 2/3] *Fix the bug that shaman's elemental attack shaman himself. --HG-- branch : trunk --- src/game/SpellEffects.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index ab35c5f3d7..c04b08d80f 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -3579,7 +3579,8 @@ void Spell::EffectSummonGuardian(uint32 i) } // trigger - if(!m_originalCaster || m_originalCaster->GetTypeId() != TYPEID_PLAYER /*m_spellInfo->Id == 40276*/) + if(!m_originalCaster || m_originalCaster->GetTypeId() != TYPEID_PLAYER + && !((Creature*)m_originalCaster)->isTotem()/*m_spellInfo->Id == 40276*/) { EffectSummonWild(i); return; From a88ee15ef370afb1e53e064e872ddba056c71012 Mon Sep 17 00:00:00 2001 From: megamage Date: Sun, 18 Jan 2009 11:39:25 -0600 Subject: [PATCH 3/3] *Add some debug message to find crash bug. --HG-- branch : trunk --- src/game/Unit.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index ef2570ddc9..ed921d85fa 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -258,8 +258,9 @@ Unit::~Unit() if(m_charmInfo) delete m_charmInfo; - RemoveAllAuras(); - assert(m_Auras.begin() == m_Auras.end()); + sLog.outDetail("Deconstruct Unit Entry = %u", GetEntry()); + if(m_scAuras.size()) + sLog.outError("Unit %u has sc auras during deconstruction", GetEntry()); } void Unit::Update( uint32 p_time )