diff --git a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm index 219b4a8d3fb..25b08b00413 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm @@ -65,14 +65,16 @@ M.visible_message("[user.name] secretes a thick vile goo, securing [M.name] into [src]!",\ "[user.name] drenches you in a foul-smelling resin, trapping you in [src]!",\ "You hear squelching...") - ghost_timer = addtimer(CALLBACK(src, PROC_REF(ghost_check)), 15 SECONDS, TIMER_UNIQUE|TIMER_STOPPABLE) + ghost_timer = addtimer(CALLBACK(src, PROC_REF(ghost_check), user), 15 SECONDS, TIMER_UNIQUE|TIMER_STOPPABLE) -/obj/structure/bed/nest/proc/ghost_check() +/obj/structure/bed/nest/proc/ghost_check(mob/user) if(!length(buckled_mobs)) return for(var/mob/living/carbon/human/buckled_mob in buckled_mobs) var/obj/item/clothing/mask/facehugger/hugger_mask = buckled_mob.wear_mask if(istype(hugger_mask) && !hugger_mask.sterile && (locate(/obj/item/organ/internal/body_egg/alien_embryo) in buckled_mob.internal_organs)) + if(user && !isalien(user)) + return buckled_mob.throw_alert("ghost_nest", /obj/screen/alert/ghost) to_chat(buckled_mob, "You may now ghost, you keep respawnability in this state. You will be alerted when you're removed from the nest.") diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index 560c0d3c938..ffd813d325d 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -147,7 +147,9 @@ flags |= NODROP //You can't take it off until it dies... or figures out you're an IPC. GoIdle() //so it doesn't jump the people that tear it off - + var/obj/structure/bed/nest/our_nest = M.buckled + if(istype(our_nest)) + addtimer(CALLBACK(our_nest, TYPE_PROC_REF(/obj/structure/bed/nest, ghost_check)), 15 SECONDS) addtimer(CALLBACK(src, PROC_REF(Impregnate), M), impregnation_time) return TRUE