From 3a9fc2607a189831684e207511597f7126740344 Mon Sep 17 00:00:00 2001 From: MagicBot Date: Fri, 23 Oct 2026 15:52:57 -0400 Subject: [PATCH] Accept single-target pet powers on pets validateTarget tested MASK_MOB before MASK_PET, and summoned pets carry both, so every single-target PET power (pet heals and buffs such as Repair Golem, Dark Lord's Favor, Strengthen Beast, Vashteera's Favor) was rejected on any pet. Pets are now tested first and accept PET or MOBILE powers, matching the client, where Mobile covers every ArcMobile and Pet is left to the server (0x49E440). Non-pet mobs are unchanged. Co-Authored-By: Claude Opus 5.5 --- src/engine/gameManager/PowersManager.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/engine/gameManager/PowersManager.java b/src/engine/gameManager/PowersManager.java index 2aa757a8..410fee32 100644 --- a/src/engine/gameManager/PowersManager.java +++ b/src/engine/gameManager/PowersManager.java @@ -2261,14 +2261,14 @@ public enum PowersManager { String outmsg = "Invalid Target"; ChatManager.chatSystemInfo(pc, outmsg); return false; // can't target player, stop here - } // target is mob + } // target is pet; pets also carry MASK_MOB, so test them first. A pet is still a Mobile (client 0x49E440) + else if ((target.getObjectTypeMask() & MBServerStatics.MASK_PET) != 0) + return pb.targetPet() || pb.targetMob(); + + // target is mob else if ((target.getObjectTypeMask() & MBServerStatics.MASK_MOB) != 0) return pb.targetMob(); - // target is pet - else if ((target.getObjectTypeMask() & MBServerStatics.MASK_PET) != 0) - return pb.targetPet(); - // target is Building else if ((target.getObjectTypeMask() & MBServerStatics.MASK_BUILDING) != 0) return pb.targetBuilding();