diff options
| author | megamage <none@none> | 2008-12-05 18:39:31 -0600 |
|---|---|---|
| committer | megamage <none@none> | 2008-12-05 18:39:31 -0600 |
| commit | 3a1293ef183425fe555354c5445b43ff246d33fa (patch) | |
| tree | f0ae72dfc6bed7e828a36bfee8832e60c50096b8 /src/game/Unit.cpp | |
| parent | d36672cd7e4ae3d328f30c020c5421668ad4cb5e (diff) | |
*Update melee range calculation. By QAston.
--HG--
branch : trunk
Diffstat (limited to 'src/game/Unit.cpp')
| -rw-r--r-- | src/game/Unit.cpp | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 2f0e5a1fe43..aa1fb0a5a5d 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -420,13 +420,22 @@ void Unit::resetAttackTimer(WeaponAttackType type) m_attackTimer[type] = uint32(GetAttackTime(type) * m_modAttackSpeedPct[type]); } -bool Unit::canReachWithAttack(Unit *pVictim) const +bool Unit::IsWithinCombatRange(Unit *obj, float dist2compare) const { - assert(pVictim); - return IsWithinDistInMap(pVictim, GetCombatReach()); + if (!obj || !IsInMap(obj)) return false; + + float dx = GetPositionX() - obj->GetPositionX(); + float dy = GetPositionY() - obj->GetPositionY(); + float dz = GetPositionZ() - obj->GetPositionZ(); + float distsq = dx*dx + dy*dy + dz*dz; + + float sizefactor = GetCombatReach() + obj->GetCombatReach(); + float maxdist = dist2compare + sizefactor; + + return distsq < maxdist * maxdist; } -bool Unit::IsWithinCombatDist(Unit *obj, float dist2compare) const +bool Unit::IsWithinMeleeRange(Unit *obj) const { if (!obj || !IsInMap(obj)) return false; @@ -434,9 +443,9 @@ bool Unit::IsWithinCombatDist(Unit *obj, float dist2compare) const float dy = GetPositionY() - obj->GetPositionY(); float dz = GetPositionZ() - obj->GetPositionZ(); float distsq = dx*dx + dy*dy + dz*dz; - //not sure here, or combatreach + combatreach? - float sizefactor = GetCombatReach() + obj->GetCombatReach(); - float maxdist = dist2compare + sizefactor; + + float sizefactor = GetMeleeReach() + obj->GetMeleeReach(); + float maxdist = MELEE_RANGE + sizefactor; return distsq < maxdist * maxdist; } |
