aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/SpellEffects.cpp3
-rw-r--r--src/game/Unit.cpp20
2 files changed, 13 insertions, 10 deletions
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index ab35c5f3d76..c04b08d80f0 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;
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 6d2eb1ec4cc..ed921d85fa5 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 )
@@ -4662,13 +4663,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 +4678,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();