diff --git a/src/engine/mobileAI/MobAI.java b/src/engine/mobileAI/MobAI.java index e6e1cd08..bf002971 100644 --- a/src/engine/mobileAI/MobAI.java +++ b/src/engine/mobileAI/MobAI.java @@ -44,6 +44,11 @@ public class MobAI { // // CombatManager.class implements shared combat routines for all avatars. + // Pet aggro scan in checkForAggro stays off until it checks rune enemy lists, + // filters its targets and keeps pet targets (MBDATA/docs/plan-mask-pet.md steps 2-4). + + private static final boolean PET_AGGRO_ENABLED = false; + private static void attackTarget(Mob mob, AbstractWorldObject target) { try { @@ -629,7 +634,7 @@ public class MobAI { } } - if (aiAgent.getCombatTarget() == null) { + if (PET_AGGRO_ENABLED && aiAgent.getCombatTarget() == null) { //look for pets to aggro if no players found to aggro diff --git a/src/engine/objects/Mob.java b/src/engine/objects/Mob.java index 946ece4d..a2511d5d 100644 --- a/src/engine/objects/Mob.java +++ b/src/engine/objects/Mob.java @@ -552,6 +552,12 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed { petMinion.despawned = false; petMinion.runAfterLoad(); + + // Summoned pets carry MASK_PET. Necro pets keep their own NecroPet handling. + + if (!petMinion.isNecroPet()) + petMinion.setObjectTypeMask(petMinion.getObjectTypeMask() | MBServerStatics.MASK_PET); + DbManager.addToCache(petMinion); petMinion.setLoc(petMinion.bindLoc);