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.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index ddce852a728..f7a3d96c00d 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -408,6 +408,21 @@ bool Unit::canReachWithAttack(Unit *pVictim) const
return IsWithinDistInMap(pVictim, reach);
}
+bool Unit::IsWithinCombatDist(Unit *obj, float dist2compare) const
+{
+ 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;
+ //not sure here, or combatreach + combatreach?
+ float sizefactor = GetObjectSize() + obj->GetFloatValue(UNIT_FIELD_COMBATREACH);
+ float maxdist = dist2compare + sizefactor;
+
+ return distsq < maxdist * maxdist;
+}
+
void Unit::RemoveSpellsCausingAura(AuraType auraType)
{
if (auraType >= TOTAL_AURAS) return;