mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 07:37:01 +00:00
[7570] respect UNIT_FIELD_COMBATREACH for spell range check
Signed-off-by: arrai <array.of.intellect@gmail.com>
This commit is contained in:
parent
910d4c8155
commit
6762744452
3 changed files with 18 additions and 5 deletions
|
|
@ -1586,7 +1586,12 @@ SpellEntry const *Creature::reachWithSpellAttack(Unit *pVictim)
|
||||||
SpellRangeEntry const* srange = sSpellRangeStore.LookupEntry(spellInfo->rangeIndex);
|
SpellRangeEntry const* srange = sSpellRangeStore.LookupEntry(spellInfo->rangeIndex);
|
||||||
float range = GetSpellMaxRange(srange);
|
float range = GetSpellMaxRange(srange);
|
||||||
float minrange = GetSpellMinRange(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 )
|
//if(!isInFront( pVictim, range ) && spellInfo->AttributesEx )
|
||||||
// continue;
|
// continue;
|
||||||
if( dist > range || dist < minrange )
|
if( dist > range || dist < minrange )
|
||||||
|
|
@ -1632,7 +1637,12 @@ SpellEntry const *Creature::reachWithSpellCure(Unit *pVictim)
|
||||||
SpellRangeEntry const* srange = sSpellRangeStore.LookupEntry(spellInfo->rangeIndex);
|
SpellRangeEntry const* srange = sSpellRangeStore.LookupEntry(spellInfo->rangeIndex);
|
||||||
float range = GetSpellMaxRange(srange);
|
float range = GetSpellMaxRange(srange);
|
||||||
float minrange = GetSpellMinRange(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 )
|
//if(!isInFront( pVictim, range ) && spellInfo->AttributesEx )
|
||||||
// continue;
|
// continue;
|
||||||
if( dist > range || dist < minrange )
|
if( dist > range || dist < minrange )
|
||||||
|
|
|
||||||
|
|
@ -4749,8 +4749,11 @@ SpellCastResult Spell::CheckRange(bool strict)
|
||||||
|
|
||||||
if(target && target != m_caster)
|
if(target && target != m_caster)
|
||||||
{
|
{
|
||||||
// distance from target center in checks
|
// distance from target in checks
|
||||||
float dist = m_caster->GetDistance(target->GetPositionX(),target->GetPositionY(),target->GetPositionZ());
|
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)
|
if(dist > max_range)
|
||||||
return SPELL_FAILED_OUT_OF_RANGE; //0x5A;
|
return SPELL_FAILED_OUT_OF_RANGE; //0x5A;
|
||||||
if(dist < min_range)
|
if(dist < min_range)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "7569"
|
#define REVISION_NR "7570"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue