aboutsummaryrefslogtreecommitdiff
path: root/src/game/Unit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Unit.cpp')
-rw-r--r--src/game/Unit.cpp23
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;
}