From 53d6431c1973ddf912ebf485eeeae7774ce4588e Mon Sep 17 00:00:00 2001 From: treeston Date: Wed, 3 Feb 2016 21:34:17 +0100 Subject: Creature/AI: Fix incorrect evade logic (closes #16461) --- src/server/game/Entities/Creature/Creature.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/server/game/Entities/Creature') 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; -- cgit v1.2.3