From db69ae5db266eb9c2aa220cbbebcfe1dadff9942 Mon Sep 17 00:00:00 2001 From: Lucy Date: Wed, 18 Mar 2026 02:12:53 -0400 Subject: [PATCH] Watcher hatchlings will no longer shoot whatever the parent is buckled to, or anyone buckled to the parent (#95422) --- .../ruins/lavalandruin_code/watcher_grave.dm | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm b/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm index 27d83a9e042..64d4e5aaaa8 100644 --- a/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm +++ b/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm @@ -147,7 +147,7 @@ pixel_y = 22 alpha = 0 /// Who are we following? - var/atom/parent + var/atom/movable/parent /// Datum which keeps us hanging out with our parent var/datum/movement_detector/tracker /// Type of projectile we fire @@ -184,15 +184,22 @@ for (var/mob/living/potential_target in oview(5, src)) if (!ismining(potential_target) || potential_target.stat == DEAD) continue - if (!potential_target.has_faction(target_faction)) + if (!potential_target.has_faction(target_faction) || parent.has_ally(potential_target)) continue shoot_at(potential_target) return /// Take a shot /obj/effect/watcher_orbiter/proc/shoot_at(atom/target) + var/list/ignore_targets = list(parent) + if(isliving(parent)) + var/mob/living/living_parent = parent + if(LAZYLEN(living_parent.buckled_mobs)) + ignore_targets += living_parent.buckled_mobs + if(living_parent.buckled) + ignore_targets += living_parent.buckled COOLDOWN_START(src, shot_cooldown, fire_delay) - fire_projectile(projectile_type, target, projectile_sound, ignore_targets = list(parent)) + fire_projectile(projectile_type, target, projectile_sound, ignore_targets = ignore_targets) /// Set ourselves up to track and orbit around a guy /obj/effect/watcher_orbiter/proc/follow(atom/movable/target)