diff options
| author | QAston <qaston@gmail.com> | 2011-02-04 00:27:43 +0100 |
|---|---|---|
| committer | QAston <qaston@gmail.com> | 2011-02-04 00:27:43 +0100 |
| commit | d18193e52dd0799927ac925158300ef4e5c88ba8 (patch) | |
| tree | 07f0d73d551d428d4b2a985e02d33d8e8a18465e /src/server/game/Spells/SpellEffects.cpp | |
| parent | 1740df0fac298ccb61dd35f4e1c08e76932be212 (diff) | |
Core/DynamicObjects: Change the way how dynamic objects are bound to their owners, fixes some crashes in Aura::GetOwner.
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
| -rwxr-xr-x | src/server/game/Spells/SpellEffects.cpp | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 3e8aea4fe63..86268cfbb32 100755 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -2556,17 +2556,15 @@ void Spell::EffectPersistentAA(SpellEffIndex effIndex) delete dynObj; return; } - caster->AddDynObject(dynObj); dynObj->GetMap()->Add(dynObj); if (Aura * aura = Aura::TryCreate(m_spellInfo, dynObj, caster, &m_spellValue->EffectBasePoints[0])) + { m_spellAura = aura; + m_spellAura->_RegisterForTargets(); + } else - { - ASSERT(false); return; - } - m_spellAura->_RegisterForTargets(); } ASSERT(m_spellAura->GetDynobjOwner()); m_spellAura->_ApplyEffectForTargets(effIndex); @@ -3387,14 +3385,10 @@ void Spell::EffectAddFarsight(SpellEffIndex effIndex) } dynObj->SetDuration(duration); dynObj->SetUInt32Value(DYNAMICOBJECT_BYTES, 0x80000002); - m_caster->AddDynObject(dynObj); dynObj->setActive(true); //must before add to map to be put in world container dynObj->GetMap()->Add(dynObj); //grid will also be loaded - - // Need to update visibility of object for client to accept farsight guid - m_caster->ToPlayer()->SetViewpoint(dynObj, true); - //m_caster->ToPlayer()->UpdateVisibilityOf(dynObj); + dynObj->SetCasterViewpoint(); } void Spell::EffectUntrainTalents(SpellEffIndex /*effIndex*/) |
