From b60f2754f1ec85589c48d06e48eb54722939b258 Mon Sep 17 00:00:00 2001 From: MagicBot Date: Thu, 15 Oct 2026 08:53:57 -0400 Subject: [PATCH] Remove siege and pet auto-aggro scans Guard MASK_SIEGE and regular mob MASK_PET scans were dead code: no mob ever carries either mask. Removed so they cannot start auto-aggroing siege engines if the masks are wired up later. Safehold guards no longer aggro siege engines. Guards still respond to a siege engine damaging a city building. Co-Authored-By: Claude Opus 5.5 --- src/engine/mobileAI/MobAI.java | 39 +++++----------------------------- 1 file changed, 5 insertions(+), 34 deletions(-) diff --git a/src/engine/mobileAI/MobAI.java b/src/engine/mobileAI/MobAI.java index 6b1a7291..b2095dff 100644 --- a/src/engine/mobileAI/MobAI.java +++ b/src/engine/mobileAI/MobAI.java @@ -628,25 +628,6 @@ public class MobAI { return; } } - - if (aiAgent.getCombatTarget() == null) { - - //look for pets to aggro if no players found to aggro - - HashSet awoList = WorldGrid.getObjectsInRangePartial(aiAgent, MobAIThread.AI_BASE_AGGRO_RANGE, MBServerStatics.MASK_PET); - - for (AbstractWorldObject awoMob : awoList) { - - // exclude self. - - if (aiAgent.equals(awoMob)) - continue; - - Mob aggroMob = (Mob) awoMob; - aiAgent.setCombatTarget(aggroMob); - return; - } - } } catch (Exception e) { Logger.error(e, aiAgent.getObjectUUID() + " " + aiAgent.getName() + " Failed At: CheckForAggro"); } @@ -876,6 +857,10 @@ public class MobAI { if (aggroMob.agentType.equals(mbEnums.AIAgentType.PET)) continue; + //don't attack siege engines + if (aggroMob.isSiege()) + continue; + if (mob.getLoc().distanceSquared2D(aggroMob.getLoc()) > sqr(50)) continue; @@ -1098,23 +1083,9 @@ public class MobAI { return; } } - if (mob.getCombatTarget() == null) { - //look for siege equipment to aggro if no players found to aggro + // guards never auto-aggro siege engines; they only respond when one damages a city building - HashSet awoList = WorldGrid.getObjectsInRangePartial(mob, MobAIThread.AI_BASE_AGGRO_RANGE, MBServerStatics.MASK_SIEGE); - - for (AbstractWorldObject awoMob : awoList) { - - - Mob aggroMob = (Mob) awoMob; - if (guardCanAggro(mob, aggroMob)) { - mob.setCombatTarget(aggroMob); - return; - } - } - - } } catch (Exception e) { Logger.error(e, mob.getObjectUUID() + " " + mob.getName() + " Failed At: CheckForPlayerGuardAggro"); }