diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 0c7d5ca91db..0baadafef15 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -1317,6 +1317,18 @@
/obj/mecha/force_eject_occupant(mob/target)
go_out()
+// Called when a shuttle lands on top of the mech. Prevents the mech from just dropping the pilot unharmed inside the shuttle when destroyed.
+/obj/mecha/proc/get_out_and_die()
+ var/mob/living/pilot = occupant
+ pilot.visible_message(
+ "[src] is hit by a hyperspace ripple!",
+ "You feel an immense crushing pressure as the space around you ripples."
+ )
+ go_out(TRUE)
+ if(iscarbon(pilot))
+ pilot.gib()
+ qdel(src)
+
/////////////////////////
////// MARK: Access stuff
/////////////////////////
diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm
index beaf5b25cda..3afeee8ec9f 100644
--- a/code/modules/shuttle/shuttle.dm
+++ b/code/modules/shuttle/shuttle.dm
@@ -640,6 +640,11 @@
var/obj/machinery/atmospherics/supermatter_crystal/bakoom = AM
addtimer(CALLBACK(bakoom, TYPE_PROC_REF(/obj/machinery/atmospherics/supermatter_crystal, explode), bakoom.combined_gas, bakoom.power, bakoom.gasmix_power_ratio), 1 SECONDS)
continue
+ // Your mech will not save you.
+ if(ismecha(AM))
+ var/obj/mecha/mech = AM
+ if(mech.occupant)
+ INVOKE_ASYNC(mech, TYPE_PROC_REF(/obj/mecha, get_out_and_die))
if(ismob(AM))
var/mob/M = AM
if(M.buckled)