aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2019-03-03 21:24:39 +0100
committerShauren <shauren.trinity@gmail.com>2021-11-24 20:35:17 +0100
commit71b58c2e6215aaf81ced9964ca10983f54fbe14c (patch)
tree3d6915ef4e25a443c20828f2f43d30da6c615ca8
parent91bbaae81e083a354cfa786969d0d374bd6a8a77 (diff)
Core/Spells: Adjust range checks to GameObject targets
(cherry picked from commit 270a144083d85d18cba8aff861dd6effbd04c476)
-rw-r--r--src/server/game/Spells/Spell.cpp8
1 files changed, 4 insertions, 4 deletions
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;
}