diff options
| author | jackpoz <giacomopoz@gmail.com> | 2019-03-03 21:24:39 +0100 | 
|---|---|---|
| committer | jackpoz <giacomopoz@gmail.com> | 2019-03-03 21:24:39 +0100 | 
| commit | 270a144083d85d18cba8aff861dd6effbd04c476 (patch) | |
| tree | 75d84be06f57013cf06324c9afa2aedaea8803c6 /src/server/game/Spells/Spell.cpp | |
| parent | d2841d6b664ac2c8e818bea1a469fdd3f1b31f6b (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.cpp | 8 | 
1 files changed, 4 insertions, 4 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 415b6d12f09..57f6ecac698 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -6287,6 +6287,9 @@ SpellCastResult Spell::CheckRange(bool strict) const      if (m_spellInfo->RangeEntry && m_spellInfo->RangeEntry->type != 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; @@ -6307,10 +6310,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;      }  | 
