diff --git a/zone/entity.cpp b/zone/entity.cpp index b506ca01a..c80d13ba8 100644 --- a/zone/entity.cpp +++ b/zone/entity.cpp @@ -5146,7 +5146,7 @@ void EntityList::ExpeditionWarning(uint32 minutes_left) safe_delete(outapp); } -Mob *EntityList::GetClosestMobByBodyType(Mob *sender, bodyType BodyType) +Mob *EntityList::GetClosestMobByBodyType(Mob *sender, bodyType BodyType, bool skip_client_pets) { if (!sender) @@ -5163,6 +5163,10 @@ Mob *EntityList::GetClosestMobByBodyType(Mob *sender, bodyType BodyType) if (CurrentMob->GetBodyType() != BodyType) continue; + // Do not detect client pets + if (skip_client_pets && CurrentMob->IsPet() && CurrentMob->IsPetOwnerClient()) + continue; + CurrentDistance = ((CurrentMob->GetY() - sender->GetY()) * (CurrentMob->GetY() - sender->GetY())) + ((CurrentMob->GetX() - sender->GetX()) * (CurrentMob->GetX() - sender->GetX())); diff --git a/zone/entity.h b/zone/entity.h index 2890c18f5..20c5be842 100644 --- a/zone/entity.h +++ b/zone/entity.h @@ -479,7 +479,7 @@ public: Corpse* GetClosestCorpse(Mob* sender, const char *Name); NPC* GetClosestBanker(Mob* sender, uint32 &distance); void CameraEffect(uint32 duration, uint32 intensity); - Mob* GetClosestMobByBodyType(Mob* sender, bodyType BodyType); + Mob* GetClosestMobByBodyType(Mob* sender, bodyType BodyType, bool skip_client_pets=false); void ForceGroupUpdate(uint32 gid); void SendGroupLeave(uint32 gid, const char *name); void SendGroupJoin(uint32 gid, const char *name); diff --git a/zone/spell_effects.cpp b/zone/spell_effects.cpp index 5caab6d0d..f5ca54794 100644 --- a/zone/spell_effects.cpp +++ b/zone/spell_effects.cpp @@ -854,7 +854,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove MessageID = SENSE_ANIMAL; } - Mob *ClosestMob = entity_list.GetClosestMobByBodyType(this, bt); + Mob *ClosestMob = entity_list.GetClosestMobByBodyType(this, bt, true); if(ClosestMob) {