diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 05fffdac689..6fbdb235db9 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -12,6 +12,7 @@
var/allow_occupant_types = list(/mob/living/carbon/human)
var/disallow_occupant_types = list()
var/pump
+ var/display_loading_message = TRUE
use_power = 1
idle_power_usage = 15
@@ -177,7 +178,8 @@
to_chat(user, "\The machine won't accept that.")
return
- user.visible_message("[user] starts putting [G.affecting] into [src].", "You start putting [G.affecting] into [src].", range = 3)
+ if(display_loading_message)
+ user.visible_message("[user] starts putting [G.affecting] into [src].", "You start putting [G.affecting] into [src].", range = 3)
if (do_mob(user, G.affecting, 20, needhand = 0))
if(occupant)
@@ -250,10 +252,11 @@
to_chat(user, "\The [src] is already occupied.")
return
- if(M == user)
- visible_message("\The [user] starts climbing into \the [src].")
- else
- visible_message("\The [user] starts putting [M] into \the [src].")
+ if(display_loading_message)
+ if(M == user)
+ visible_message("\The [user] starts climbing into \the [src].")
+ else
+ visible_message("\The [user] starts putting [M] into \the [src].")
if(do_after(user, 20))
if(occupant)
diff --git a/code/modules/heavy_vehicle/equipment/medical.dm b/code/modules/heavy_vehicle/equipment/medical.dm
index 58134c31d02..31ae03f440a 100644
--- a/code/modules/heavy_vehicle/equipment/medical.dm
+++ b/code/modules/heavy_vehicle/equipment/medical.dm
@@ -57,6 +57,7 @@
idle_power_usage = 0
active_power_usage = 0 //It'd be hard to handle, so for now all power is consumed by mech sleeper object
interact_offline = TRUE
+ display_loading_message = FALSE
/obj/machinery/sleeper/mounted/ui_interact(var/mob/user, var/ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = mech_state)
. = ..()
diff --git a/code/modules/heavy_vehicle/equipment/utility.dm b/code/modules/heavy_vehicle/equipment/utility.dm
index d006943cb92..0fa0c0302e5 100644
--- a/code/modules/heavy_vehicle/equipment/utility.dm
+++ b/code/modules/heavy_vehicle/equipment/utility.dm
@@ -383,4 +383,39 @@
src.damtype = "fire"
update_icon()
START_PROCESSING(SSprocessing, src)
- ..()
\ No newline at end of file
+ ..()
+
+// Kinda hacky, but hey, avoids some severe shitcode later on - geeves
+/obj/item/mecha_equipment/sleeper/passenger_compartment
+ name = "\improper mounted passenger compartment"
+ desc = "An exosuit-mounted passenger compartment that can comfortably hold a single humanoid."
+ icon_state = "mecha_passenger_open"
+ mech_layer = MECH_GEAR_LAYER
+ restricted_hardpoints = list(HARDPOINT_LEFT_HAND, HARDPOINT_RIGHT_HAND)
+ restricted_software = null
+ origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+ passive_power_use = 15
+
+/obj/item/mecha_equipment/sleeper/passenger_compartment/uninstalled()
+ . = ..()
+ icon_state = "mecha_passenger_open"
+ update_icon()
+ owner.update_icon()
+
+/obj/item/mecha_equipment/sleeper/passenger_compartment/attack_self(var/mob/user)
+ if(!sleeper.occupant)
+ to_chat(user, span("warning", "There's no one to eject!"))
+ else
+ visible_message(span("notice", "\The [src] ejects [sleeper.occupant.name]."))
+ sleeper.go_out()
+ icon_state = "mecha_passenger_open"
+ update_icon()
+ owner.update_icon()
+ return
+
+/obj/item/mecha_equipment/sleeper/passenger_compartment/afterattack(var/atom/target, var/mob/living/user, var/inrange, var/params)
+ . = ..()
+ if(.)
+ icon_state = "mecha_passenger"
+ update_icon()
+ owner.update_icon()
\ No newline at end of file
diff --git a/html/changelogs/geeves - mechdiddle.yml b/html/changelogs/geeves - mechdiddle.yml
new file mode 100644
index 00000000000..fad48355d8a
--- /dev/null
+++ b/html/changelogs/geeves - mechdiddle.yml
@@ -0,0 +1,6 @@
+author: Code by Geeves, Sprites by Kyres
+
+delete-after: True
+
+changes:
+ - rscadd: "Added mech passenger compartments."
diff --git a/icons/mecha/mech_equipment.dmi b/icons/mecha/mech_equipment.dmi
index f0d531d4d8f..5421d517ba7 100644
Binary files a/icons/mecha/mech_equipment.dmi and b/icons/mecha/mech_equipment.dmi differ
diff --git a/icons/mecha/mecha_weapon_overlays.dmi b/icons/mecha/mecha_weapon_overlays.dmi
index 17dea52c690..fdf5dca09f1 100644
Binary files a/icons/mecha/mecha_weapon_overlays.dmi and b/icons/mecha/mecha_weapon_overlays.dmi differ