aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Creature
diff options
context:
space:
mode:
authortreeston <treeston.mmoc@gmail.com>2016-02-03 21:34:17 +0100
committertreeston <treeston.mmoc@gmail.com>2016-02-03 21:34:17 +0100
commit53d6431c1973ddf912ebf485eeeae7774ce4588e (patch)
tree2df8f784d1bc164b6f0b77c41df65161262f7bd7 /src/server/game/Entities/Creature
parentfe2a0fda4464effeb2fb655da84a0460328b1aeb (diff)
Creature/AI: Fix incorrect evade logic (closes #16461)
Diffstat (limited to 'src/server/game/Entities/Creature')
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 73b9e0580cf..e519276f0ef 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -2142,6 +2142,11 @@ bool Creature::CanCreatureAttack(Unit const* victim, bool /*force*/) const
if (GetMap()->IsDungeon())
return true;
+ // if the mob is actively being damaged, do not reset due to distance unless it's a world boss
+ if (!isWorldBoss())
+ if (time(NULL) - GetLastDamagedTime() <= MAX_AGGRO_RESET_TIME)
+ return true;
+
//Use AttackDistance in distance check if threat radius is lower. This prevents creature bounce in and out of combat every update tick.
float dist = std::max(GetAttackDistance(victim), sWorld->getFloatConfig(CONFIG_THREAT_RADIUS)) + m_CombatDistance;