diff --git a/code/datums/tutorial/xenomorph/xenomorph_basic.dm b/code/datums/tutorial/xenomorph/xenomorph_basic.dm
index 965f7b55d3c0..276d2ac824f0 100644
--- a/code/datums/tutorial/xenomorph/xenomorph_basic.dm
+++ b/code/datums/tutorial/xenomorph/xenomorph_basic.dm
@@ -160,7 +160,16 @@
add_highlight(hugger, COLOR_YELLOW)
message_to_player("This is a facehugger, highlighted in yellow. Pick up the facehugger by clicking it.")
message_to_player("Stand next to the downed human and click them to apply the facehugger. Or drop the facehugger near them to see it leap onto their face automatically.")
- RegisterSignal(human_dummy, COMSIG_HUMAN_IMPREGNATE, PROC_REF(nest_cap_phase))
+ RegisterSignal(hugger, COMSIG_PARENT_QDELETING, PROC_REF(on_hugger_deletion))
+ RegisterSignal(human_dummy, COMSIG_HUMAN_IMPREGNATE, PROC_REF(nest_cap_phase), override = TRUE)
+
+/datum/tutorial/xenomorph/basic/proc/on_hugger_deletion(hugger)
+ SIGNAL_HANDLER
+ TUTORIAL_ATOM_FROM_TRACKING(/obj/effect/alien/resin/special/eggmorph, morpher)
+ morpher.stored_huggers = 1
+ add_highlight(morpher, COLOR_YELLOW)
+ message_to_player("Click the egg morpher to take a facehugger.")
+ RegisterSignal(xeno, COMSIG_XENO_TAKE_HUGGER_FROM_MORPHER, PROC_REF(take_facehugger_phase))
/datum/tutorial/xenomorph/basic/proc/nest_cap_phase()
SIGNAL_HANDLER
@@ -168,6 +177,7 @@
TUTORIAL_ATOM_FROM_TRACKING(/obj/item/clothing/mask/facehugger, hugger)
UnregisterSignal(human_dummy, COMSIG_MOB_TAKE_DAMAGE)
UnregisterSignal(human_dummy, COMSIG_HUMAN_IMPREGNATE)
+ UnregisterSignal(hugger, COMSIG_PARENT_QDELETING)
remove_highlight(hugger)
message_to_player("We should nest the infected human to make sure they don't get away.")
diff --git a/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm b/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm
index 8aa3000092f5..bf88acd2b790 100644
--- a/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm
+++ b/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm
@@ -413,9 +413,6 @@
M.stored_huggers++
qdel(src)
return
- // Tutorial facehuggers never time out
- if(hivenumber == XENO_HIVE_TUTORIAL)
- return
die()
/obj/item/clothing/mask/facehugger/proc/die()
@@ -441,12 +438,15 @@
playsound(src.loc, 'sound/voice/alien_facehugger_dies.ogg', 25, 1)
if(ismob(loc)) //Make it fall off the person so we can update their icons. Won't update if they're in containers thou
- var/mob/M = loc
- M.drop_inv_item_on_ground(src)
+ var/mob/holder_mob = loc
+ holder_mob.drop_inv_item_on_ground(src)
layer = TURF_LAYER //so dead hugger appears below live hugger if stacked on same tile. (and below nested hosts)
- addtimer(CALLBACK(src, PROC_REF(decay)), 3 MINUTES)
+ if(hivenumber == XENO_HIVE_TUTORIAL)
+ addtimer(CALLBACK(src, PROC_REF(decay)), 5 SECONDS)
+ else
+ addtimer(CALLBACK(src, PROC_REF(decay)), 3 MINUTES)
/obj/item/clothing/mask/facehugger/proc/decay()
visible_message("[icon2html(src, viewers(src))] \The [src] decays into a mass of acid and chitin.")