From 71b58c2e6215aaf81ced9964ca10983f54fbe14c Mon Sep 17 00:00:00 2001 From: jackpoz Date: Sun, 3 Mar 2019 21:24:39 +0100 Subject: Core/Spells: Adjust range checks to GameObject targets (cherry picked from commit 270a144083d85d18cba8aff861dd6effbd04c476) --- src/server/game/Spells/Spell.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index a3133b25daa..ed04bf1e78d 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -6493,6 +6493,9 @@ SpellCastResult Spell::CheckRange(bool strict) const if (m_spellInfo->RangeEntry && m_spellInfo->RangeEntry->Flags != SPELL_RANGE_MELEE && !strict) maxRange += std::min(MAX_SPELL_RANGE_TOLERANCE, maxRange*0.1f); // 10% but no more than MAX_SPELL_RANGE_TOLERANCE + // save the original values before squaring them + float origMaxRange = maxRange; + // get square values for sqr distance checks minRange *= minRange; maxRange *= maxRange; @@ -6514,10 +6517,7 @@ SpellCastResult Spell::CheckRange(bool strict) const 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) + if (!goTarget->IsInRange(m_caster->GetPositionX(), m_caster->GetPositionY(), m_caster->GetPositionZ(), origMaxRange)) return SPELL_FAILED_OUT_OF_RANGE; } -- cgit v1.2.3