From abb36a1e5bbbebb7197d859cbd9c2dbf71665152 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Sat, 23 Feb 2019 18:34:31 +0100 Subject: Core/Spells: Add range checks to GameObject targets Close #23062 Patch by robinsch (cherry picked from commit 76cc94f325ab68f66a4fa7b5d30316508e27c0ce) --- src/server/game/Spells/Spell.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 6158e123e19..a3133b25daa 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -6512,6 +6512,15 @@ SpellCastResult Spell::CheckRange(bool strict) const return SPELL_FAILED_UNIT_NOT_INFRONT; } + if (GameObject* goTarget = m_targets.GetGOTarget()) + { + if (m_caster->GetExactDistSq(goTarget) > maxRange) + return SPELL_FAILED_OUT_OF_RANGE; + + if (minRange > 0.0f && m_caster->GetExactDistSq(goTarget) < minRange) + return SPELL_FAILED_OUT_OF_RANGE; + } + if (m_targets.HasDst() && !m_targets.HasTraj()) { if (m_caster->GetExactDistSq(m_targets.GetDstPos()) > maxRange) -- cgit v1.2.3