Some fixes/add to prev commit

Signed-off-by: DiSlord <dislord@nomail.com>
This commit is contained in:
DiSlord 2009-01-24 04:28:32 +03:00
parent abaa111eaa
commit 4b5aba18f8

View file

@ -2044,15 +2044,17 @@ void Spell::prepare(SpellCastTargets const* targets, Aura* triggeredByAura)
m_spellState = SPELL_STATE_PREPARING; m_spellState = SPELL_STATE_PREPARING;
// Check original caster is GO - set its coordinates as src cast if (!(m_targets.m_targetMask & TARGET_FLAG_SOURCE_LOCATION))
WorldObject *caster = NULL; {
if (m_originalCasterGUID) // Check original caster is GO - set its coordinates as src cast
caster = (WorldObject *)ObjectAccessor::GetObjectByTypeMask(*m_caster, m_originalCasterGUID, TYPEMASK_GAMEOBJECT); WorldObject *caster = NULL;
if (!caster) if (m_originalCasterGUID)
caster = m_caster; caster = ObjectAccessor::GetGameObject(*m_caster, m_originalCasterGUID);
if (!caster)
// Set cast source for targets caster = m_caster;
m_targets.setSource(caster->GetPositionX(), caster->GetPositionY(), caster->GetPositionZ()); // Set cast source for targets
m_targets.setSource(caster->GetPositionX(), caster->GetPositionY(), caster->GetPositionZ());
}
m_castPositionX = m_caster->GetPositionX(); m_castPositionX = m_caster->GetPositionX();
m_castPositionY = m_caster->GetPositionY(); m_castPositionY = m_caster->GetPositionY();
@ -5420,7 +5422,13 @@ bool Spell::CheckTarget( Unit* target, uint32 eff )
// all ok by some way or another, skip normal check // all ok by some way or another, skip normal check
break; break;
default: // normal case default: // normal case
if(target!=m_caster && !target->IsWithinLOSInMap(m_caster)) // Get GO cast coordinates if original caster -> GO
WorldObject *caster = NULL;
if (m_originalCasterGUID)
caster = ObjectAccessor::GetGameObject(*m_caster, m_originalCasterGUID);
if (!caster)
caster = m_caster;
if(target!=m_caster && !target->IsWithinLOSInMap(caster))
return false; return false;
break; break;
} }