diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm
index 51edd639d46..35a49a071a6 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm
@@ -137,6 +137,9 @@
/mob/living/simple_animal/hostile/poison/terror_spider/proc/Web()
if(!web_type)
return
+ if(!isturf(loc))
+ to_chat(src, "Webs can only be spun while standing on a floor.")
+ return
var/turf/mylocation = loc
visible_message("[src] begins to secrete a sticky substance.")
if(do_after(src, delay_web, target = loc))
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/green.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/green.dm
index b07f34ec368..404b619a9d1 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/green.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/green.dm
@@ -50,6 +50,10 @@
if(!(eggtype in eggtypes))
to_chat(src, "Unrecognized egg type.")
return 0
+ if(!isturf(loc))
+ // This has to be checked after we ask the user what egg type. Otherwise they could trigger prompt THEN move into a vent.
+ to_chat(src, "Eggs can only be laid while standing on a floor.")
+ return
if(fed < feedings_to_lay)
// We have to check this again after the popup, to account for people spam-clicking the button, then doing all the popups at once.
to_chat(src, "You must wrap more humanoid prey before you can do this!")
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm
index 92b9b11a33b..37213bfc816 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm
@@ -72,6 +72,9 @@
if(regen_points < jelly_cost)
to_chat(src, "You only have [regen_points] of the [jelly_cost] regeneration points you need to do this.")
return
+ if(!isturf(loc))
+ to_chat(src, "You can only secrete jelly while standing on a floor.")
+ return
var/turf/mylocation = get_turf(src)
if(isspaceturf(mylocation))
to_chat(src, "Cannot secrete jelly in space.")
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm
index 73e75ffa403..fd1a543b038 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm
@@ -279,6 +279,9 @@
if(eggtype == null || numlings == null)
to_chat(src, "Cancelled.")
return
+ if(!isturf(loc))
+ to_chat(src, "Eggs can only be laid while standing on a floor.")
+ return
// Actually lay the eggs.
if(canlay < numlings)
// We have to check this again after the popups, to account for people spam-clicking the button, then doing all the popups at once.