Skip to content

Commit

Permalink
[7570] respect UNIT_FIELD_COMBATREACH for spell range check
Browse files Browse the repository at this point in the history
Signed-off-by: arrai <array.of.intellect@gmail.com>
  • Loading branch information
dasmy authored and arrai committed Mar 28, 2009
1 parent 385484f commit b767fad
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 5 deletions.
14 changes: 12 additions & 2 deletions src/game/Creature.cpp
Expand Up @@ -1586,7 +1586,12 @@ SpellEntry const *Creature::reachWithSpellAttack(Unit *pVictim)
SpellRangeEntry const* srange = sSpellRangeStore.LookupEntry(spellInfo->rangeIndex);
float range = GetSpellMaxRange(srange);
float minrange = GetSpellMinRange(srange);
float dist = GetDistance(pVictim);

// DasMy: respect victims dimensions
float dist = GetDistance(pVictim) - pVictim->GetFloatValue(UNIT_FIELD_COMBATREACH) - GetFloatValue(UNIT_FIELD_COMBATREACH);
if (dist < 0.0f)
dist = 0.0f;

//if(!isInFront( pVictim, range ) && spellInfo->AttributesEx )
// continue;
if( dist > range || dist < minrange )
Expand Down Expand Up @@ -1632,7 +1637,12 @@ SpellEntry const *Creature::reachWithSpellCure(Unit *pVictim)
SpellRangeEntry const* srange = sSpellRangeStore.LookupEntry(spellInfo->rangeIndex);
float range = GetSpellMaxRange(srange);
float minrange = GetSpellMinRange(srange);
float dist = GetDistance(pVictim);

// DasMy: respect victims dimensions
float dist = GetDistance(pVictim) - pVictim->GetFloatValue(UNIT_FIELD_COMBATREACH) - GetFloatValue(UNIT_FIELD_COMBATREACH);
if (dist < 0.0f)
dist = 0.0f;

//if(!isInFront( pVictim, range ) && spellInfo->AttributesEx )
// continue;
if( dist > range || dist < minrange )
Expand Down
7 changes: 5 additions & 2 deletions src/game/Spell.cpp
Expand Up @@ -4749,8 +4749,11 @@ SpellCastResult Spell::CheckRange(bool strict)

if(target && target != m_caster)
{
// distance from target center in checks
float dist = m_caster->GetDistance(target->GetPositionX(),target->GetPositionY(),target->GetPositionZ());
// distance from target in checks
float dist = m_caster->GetDistance(target->GetPositionX(),target->GetPositionY(),target->GetPositionZ()) - target->GetFloatValue(UNIT_FIELD_COMBATREACH) - m_caster->GetFloatValue(UNIT_FIELD_COMBATREACH); // DasMy: respect victims dimension
if (dist < 0.0f)
dist = 0.0f;

if(dist > max_range)
return SPELL_FAILED_OUT_OF_RANGE; //0x5A;
if(dist < min_range)
Expand Down
2 changes: 1 addition & 1 deletion src/shared/revision_nr.h
@@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "7569"
#define REVISION_NR "7570"
#endif // __REVISION_NR_H__

0 comments on commit b767fad

Please sign in to comment.