From 7c4fd8d3e790dbfa6d7b8afe1b416e50e3c22642 Mon Sep 17 00:00:00 2001 From: Detective-Google <48196179+Detective-Google@users.noreply.github.com> Date: Thu, 16 Jan 2025 20:06:38 -0600 Subject: [PATCH 1/3] makes synthetics unable to grab large xenomorphs --- .../modules/mob/living/carbon/xenomorph/Xenomorph.dm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index 3c68b3c986ab..863388ff194d 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -759,6 +759,18 @@ playsound(puller.loc, 'sound/weapons/pierce.ogg', 25, 1) puller.visible_message(SPAN_WARNING("[puller] tried to pull [src] but instead gets a tail swipe to the head!")) return FALSE + if(stat != DEAD && (issynth(puller)) && ((mob_size >= 4) || (istype(src, /mob/living/carbon/xenomorph/warrior)))) + var/mob/living/carbon/human/synthetic/puller_synth = puller + var/facing = get_dir(src, puller) + if(puller_synth.ally_of_hivenumber(hivenumber)) + return TRUE + puller.apply_effect(1, DAZE) + shake_camera(puller, 2, 1) + playsound(puller.loc, 'sound/weapons/alien_claw_block.ogg', 25, 1) + src.throw_carbon(puller, facing, 1, SPEED_SLOW, shake_camera = FALSE, immobilize = FALSE) + puller.apply_effect(get_xeno_stun_duration(puller, 1), WEAKEN) + puller.visible_message(SPAN_WARNING("[puller] tried to pull [src] but instead gets whacked in the chest!")) + return FALSE return TRUE /mob/living/carbon/xenomorph/resist_grab(moving_resist) From 8e530cc01400f972b2247e4c1f9ed0b7c4977dbf Mon Sep 17 00:00:00 2001 From: Detective-Google <48196179+Detective-Google@users.noreply.github.com> Date: Thu, 16 Jan 2025 20:38:52 -0600 Subject: [PATCH 2/3] Apply suggestions from code review Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- code/modules/mob/living/carbon/xenomorph/Xenomorph.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index 863388ff194d..5bd09a206e19 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -759,15 +759,15 @@ playsound(puller.loc, 'sound/weapons/pierce.ogg', 25, 1) puller.visible_message(SPAN_WARNING("[puller] tried to pull [src] but instead gets a tail swipe to the head!")) return FALSE - if(stat != DEAD && (issynth(puller)) && ((mob_size >= 4) || (istype(src, /mob/living/carbon/xenomorph/warrior)))) + if(stat != DEAD && issynth(puller) && (mob_size >= 4 || istype(src, /mob/living/carbon/xenomorph/warrior))) var/mob/living/carbon/human/synthetic/puller_synth = puller - var/facing = get_dir(src, puller) if(puller_synth.ally_of_hivenumber(hivenumber)) return TRUE puller.apply_effect(1, DAZE) shake_camera(puller, 2, 1) playsound(puller.loc, 'sound/weapons/alien_claw_block.ogg', 25, 1) - src.throw_carbon(puller, facing, 1, SPEED_SLOW, shake_camera = FALSE, immobilize = FALSE) + var/facing = get_dir(src, puller) + throw_carbon(puller, facing, 1, SPEED_SLOW, shake_camera = FALSE, immobilize = FALSE) puller.apply_effect(get_xeno_stun_duration(puller, 1), WEAKEN) puller.visible_message(SPAN_WARNING("[puller] tried to pull [src] but instead gets whacked in the chest!")) return FALSE From fa52da770d8c0037863f981e554cfb131c4a217f Mon Sep 17 00:00:00 2001 From: Detective-Google <48196179+Detective-Google@users.noreply.github.com> Date: Thu, 16 Jan 2025 20:41:28 -0600 Subject: [PATCH 3/3] early death check --- code/modules/mob/living/carbon/xenomorph/Xenomorph.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index 5bd09a206e19..ccfef44aa431 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -751,7 +751,9 @@ return ..() /mob/living/carbon/xenomorph/pull_response(mob/puller) - if(stat != DEAD && has_species(puller,"Human")) // If the Xeno is alive, fight back against a grab/pull + if(stat == DEAD) + return TRUE + if(has_species(puller,"Human")) // If the Xeno is alive, fight back against a grab/pull var/mob/living/carbon/human/H = puller if(H.ally_of_hivenumber(hivenumber)) return TRUE @@ -759,7 +761,7 @@ playsound(puller.loc, 'sound/weapons/pierce.ogg', 25, 1) puller.visible_message(SPAN_WARNING("[puller] tried to pull [src] but instead gets a tail swipe to the head!")) return FALSE - if(stat != DEAD && issynth(puller) && (mob_size >= 4 || istype(src, /mob/living/carbon/xenomorph/warrior))) + if(issynth(puller) && (mob_size >= 4 || istype(src, /mob/living/carbon/xenomorph/warrior))) var/mob/living/carbon/human/synthetic/puller_synth = puller if(puller_synth.ally_of_hivenumber(hivenumber)) return TRUE