From c150629f8d9ef38a25e939354b931098517874cc Mon Sep 17 00:00:00 2001 From: megamage Date: Wed, 2 Sep 2009 12:11:01 -0500 Subject: *Fix a crash caused by spell target type channelled target. Thanks to nanouniko --HG-- branch : trunk --- src/game/Spell.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index f7593750ad7..5944dd08df3 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -2140,7 +2140,8 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) switch(cur) { case TARGET_UNIT_CHANNEL: - if(Unit* target = m_originalCaster->GetCurrentSpell(CURRENT_CHANNELED_SPELL)->m_targets.getUnitTarget()) + // in some cases unittarget is invalid and crash. do not know why it happens. + if(Unit* target = Unit::GetUnit(*m_caster, m_originalCaster->GetCurrentSpell(CURRENT_CHANNELED_SPELL)->m_targets.getUnitTargetGUID())) AddUnitTarget(target, i); else sLog.outError( "SPELL: cannot find channel spell target for spell ID %u", m_spellInfo->Id ); @@ -2148,7 +2149,7 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) case TARGET_DEST_CHANNEL: if(m_originalCaster->GetCurrentSpell(CURRENT_CHANNELED_SPELL)->m_targets.HasDst()) m_targets = m_originalCaster->GetCurrentSpell(CURRENT_CHANNELED_SPELL)->m_targets; - else if(Unit* target = m_originalCaster->GetCurrentSpell(CURRENT_CHANNELED_SPELL)->m_targets.getUnitTarget()) + else if(Unit* target = Unit::GetUnit(*m_caster, m_originalCaster->GetCurrentSpell(CURRENT_CHANNELED_SPELL)->m_targets.getUnitTargetGUID())) m_targets.setDst(target); else sLog.outError( "SPELL: cannot find channel spell destination for spell ID %u", m_spellInfo->Id ); -- cgit v1.2.3