aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-07-05 16:59:37 +0200
committerShauren <shauren.trinity@gmail.com>2016-07-05 17:02:34 +0200
commitb63346a25e2b7942bc618e91aa2b3d1690d6687a (patch)
tree38eb48d0730586d7da044b9a69a6ac662ea8f8de
parentb9ec8ae3282e55ede70e289106db07d5dc70532c (diff)
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)
-rw-r--r--src/server/game/Spells/Spell.cpp11
1 files changed, 7 insertions, 4 deletions
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;
}