From 73dd5925be1f0405acbc1f05bd3e13a19a2a5e8d Mon Sep 17 00:00:00 2001 From: thenecromancer Date: Sun, 24 Jan 2010 23:47:17 +0100 Subject: Do not allow units that are not in world to create dynamic objects from spell effect handlers --HG-- branch : trunk --- src/game/SpellEffects.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 283de99612c..6d16cba265b 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -3117,6 +3117,9 @@ void Spell::EffectPersistentAA(uint32 i) modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_RADIUS, radius); Unit *caster = m_caster->GetEntry() == WORLD_TRIGGER ? m_originalCaster : m_caster; + // Caster not in world, might be spell triggered from aura removal + if (!caster->IsInWorld()) + return; DynamicObject* dynObj = new DynamicObject; if(!dynObj->Create(objmgr.GenerateLowGuid(HIGHGUID_DYNAMICOBJECT), caster, m_spellInfo->Id, m_targets.m_dstPos, radius, false)) { @@ -3874,6 +3877,9 @@ void Spell::EffectAddFarsight(uint32 i) float radius = GetSpellRadiusForFriend(sSpellRadiusStore.LookupEntry(m_spellInfo->EffectRadiusIndex[i])); int32 duration = GetSpellDuration(m_spellInfo); + // Caster not in world, might be spell triggered from aura removal + if (!m_caster->IsInWorld()) + return; DynamicObject* dynObj = new DynamicObject; if(!dynObj->Create(objmgr.GenerateLowGuid(HIGHGUID_DYNAMICOBJECT), m_caster, m_spellInfo->Id, m_targets.m_dstPos, radius, true)) { -- cgit v1.2.3