diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index 3c68b3c986ab..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,6 +761,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(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 + puller.apply_effect(1, DAZE) + shake_camera(puller, 2, 1) + playsound(puller.loc, 'sound/weapons/alien_claw_block.ogg', 25, 1) + 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 return TRUE /mob/living/carbon/xenomorph/resist_grab(moving_resist)