From b63346a25e2b7942bc618e91aa2b3d1690d6687a Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 5 Jul 2016 16:59:37 +0200 Subject: Core/Spells: Fixed spell dest range check failing on 0 distance max range requirement even if standing directly on top of destination (cherry picked from commit ba63361d7c20bf93a7089c517cd707c005949f62) --- src/server/game/Spells/Spell.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 1068e406e78..175b921b164 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5984,12 +5984,15 @@ SpellCastResult Spell::CheckRange(bool strict) maxRange += rangeMod; + minRange *= minRange; + maxRange *= maxRange; + if (target && target != m_caster) { - if (!m_caster->IsInDist(target, maxRange)) + if (m_caster->GetExactDistSq(target) > maxRange) return !(_triggeredCastFlags & TRIGGERED_DONT_REPORT_CAST_ERROR) ? SPELL_FAILED_OUT_OF_RANGE : SPELL_FAILED_DONT_REPORT; - if (minRange > 0.0f && m_caster->IsInDist(target, minRange)) + if (minRange > 0.0f && m_caster->GetExactDistSq(target) < minRange) return !(_triggeredCastFlags & TRIGGERED_DONT_REPORT_CAST_ERROR) ? SPELL_FAILED_OUT_OF_RANGE : SPELL_FAILED_DONT_REPORT; if (m_caster->GetTypeId() == TYPEID_PLAYER && @@ -5999,9 +6002,9 @@ SpellCastResult Spell::CheckRange(bool strict) if (m_targets.HasDst() && !m_targets.HasTraj()) { - if (!m_caster->IsInDist(m_targets.GetDstPos(), maxRange)) + if (m_caster->GetExactDistSq(m_targets.GetDstPos()) > maxRange) return !(_triggeredCastFlags & TRIGGERED_DONT_REPORT_CAST_ERROR) ? SPELL_FAILED_OUT_OF_RANGE : SPELL_FAILED_DONT_REPORT; - if (minRange > 0.0f && m_caster->IsInDist(m_targets.GetDstPos(), minRange)) + if (minRange > 0.0f && m_caster->GetExactDistSq(m_targets.GetDstPos()) < minRange) return !(_triggeredCastFlags & TRIGGERED_DONT_REPORT_CAST_ERROR) ? SPELL_FAILED_OUT_OF_RANGE : SPELL_FAILED_DONT_REPORT; } -- cgit v1.2.3