diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm
index 183bf07e8cca..a6e096e06ceb 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm
@@ -30,7 +30,9 @@
if(node.recent_queen_death)
to_chat(user, "Your thoughts are still too scattered to take up the position of leadership.")
return 0
-
+ if(user.movement_type & (VENTCRAWLING))
+ to_chat(user, "You cannot evolve in a pipe.")
+ return 0
if(!isturf(user.loc))
to_chat(user, "You can't evolve here!")
return 0
diff --git a/code/modules/mob/living/carbon/alien/larva/powers.dm b/code/modules/mob/living/carbon/alien/larva/powers.dm
index 7204759db567..224b5e14ac7a 100644
--- a/code/modules/mob/living/carbon/alien/larva/powers.dm
+++ b/code/modules/mob/living/carbon/alien/larva/powers.dm
@@ -36,6 +36,10 @@
to_chat(user, "You cannot evolve when you are cuffed.")
return
+ if(L.movement_type & (VENTCRAWLING))
+ to_chat(user, "You cannot evolve in a pipe.")
+ return
+
if(L.amount_grown >= L.max_grown) //TODO ~Carn
to_chat(L, "You are growing into a beautiful alien! It is time to choose a caste.")
to_chat(L, "There are three to choose from:")
@@ -47,6 +51,10 @@
if(user.incapacitated()) //something happened to us while we were choosing.
return
+ if(L.movement_type & (VENTCRAWLING))
+ to_chat(user, "You cannot evolve in a pipe.")
+ return
+
var/mob/living/carbon/alien/humanoid/new_xeno
switch(alien_caste)
if("Hunter")