diff --git a/zone/aggro.cpp b/zone/aggro.cpp index 4d020ce3d..0de43c3ca 100644 --- a/zone/aggro.cpp +++ b/zone/aggro.cpp @@ -456,7 +456,12 @@ bool Mob::CheckWillAggro(Mob *mob) { } // Don't aggro new clients if we are already engaged unless PROX_AGGRO is set - if (IsEngaged() && (!GetSpecialAbility(PROX_AGGRO) || (GetSpecialAbility(PROX_AGGRO) && !CombatRange(mob)))) { + + // Frustrated mobs (all rooted up with no one to kill) + // will engage without PROX_AGGRO ability if someone new is close now. + bool is_frustrated = (IsRooted() && !CombatRange(target)); + + if (!is_frustrated && IsEngaged() && (!GetSpecialAbility(PROX_AGGRO) || (GetSpecialAbility(PROX_AGGRO) && !CombatRange(mob)))) { LogAggro( "[{}] is in combat, and does not have prox_aggro, or does and is out of combat range with [{}]", GetName(),