aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2019-03-03 21:42:07 +0100
committerjackpoz <giacomopoz@gmail.com>2019-03-03 21:42:07 +0100
commit72052aa9a55683011969510f4aea6d1efd9c67c9 (patch)
treeab2a422ff5de7938970226d67180673b469b1aca /src/server/game/Spells/Spell.cpp
parent270a144083d85d18cba8aff861dd6effbd04c476 (diff)
Core/Spells: Adjust range checks to GameObject targets
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rw-r--r--src/server/game/Spells/Spell.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 57f6ecac698..a9418ed28f2 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -6288,7 +6288,7 @@ SpellCastResult Spell::CheckRange(bool strict) const
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;
+ float origMinRange = minRange, origMaxRange = maxRange;
// get square values for sqr distance checks
minRange *= minRange;
@@ -6310,6 +6310,9 @@ SpellCastResult Spell::CheckRange(bool strict) const
if (GameObject* goTarget = m_targets.GetGOTarget())
{
+ if (origMinRange > 0.0f && goTarget->IsInRange(m_caster->GetPositionX(), m_caster->GetPositionY(), m_caster->GetPositionZ(), origMinRange))
+ return SPELL_FAILED_OUT_OF_RANGE;
+
if (!goTarget->IsInRange(m_caster->GetPositionX(), m_caster->GetPositionY(), m_caster->GetPositionZ(), origMaxRange))
return SPELL_FAILED_OUT_OF_RANGE;
}