From 5ea49613d24ad10b305891a39340155058e5a67e Mon Sep 17 00:00:00 2001 From: Subv Date: Sun, 12 Feb 2012 15:30:16 -0500 Subject: Core/Spells: Spell casts should be interrupted if the target goes out of LoS. Signed-off-by: Subv --- src/server/game/Spells/Spell.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 7c578a39355..fda186f9c64 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3481,6 +3481,14 @@ void Spell::update(uint32 difftime) { if (m_timer > 0) { + // Cancel the cast if the target is not in line of sight + if (m_targets.GetUnitTarget() && !m_caster->IsWithinLOSInMap(m_targets.GetUnitTarget())) + { + SendCastResult(SPELL_FAILED_LINE_OF_SIGHT); + cancel(); + return; + } + if (difftime >= (uint32)m_timer) m_timer = 0; else -- cgit v1.2.3