diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 09d1b570545..4e837c9cb49 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -11,6 +11,14 @@
density = 1
var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r"
+ l_color = "#7BF9FF"
+ power_change()
+ ..()
+ if(!(stat & (BROKEN|NOPOWER)))
+ SetLuminosity(2)
+ else
+ SetLuminosity(0)
+
/obj/machinery/sleep_console/process()
if(stat & (NOPOWER|BROKEN))
return
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index 10a9a6526a1..b48ebca6fe4 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -9,6 +9,63 @@
icon_state = "body_scanner_0"
density = 1
anchored = 1
+ idle_power_usage = 1250
+ active_power_usage = 2500
+
+ l_color = "#00FF00"
+ power_change()
+ ..()
+ if(!(stat & (BROKEN|NOPOWER)))
+ SetLuminosity(2)
+ else
+ SetLuminosity(0)
+
+/obj/machinery/bodyscanner/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
+ if(O.loc == user) //no you can't pull things out of your ass
+ return
+ if(user.restrained() || user.stat || user.weakened || user.stunned || user.paralysis || user.resting) //are you cuffed, dying, lying, stunned or other
+ return
+ if(O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)) // is the mob anchored, too far away from you, or are you too far away from the source
+ return
+ if(!ismob(O)) //humans only
+ return
+ if(istype(O, /mob/living/simple_animal) || istype(O, /mob/living/silicon)) //animals and robutts dont fit
+ return
+ if(!ishuman(user) && !isrobot(user)) //No ghosts or mice putting people into the sleeper
+ return
+ if(user.loc==null) // just in case someone manages to get a closet into the blue light dimension, as unlikely as that seems
+ return
+ if(!istype(user.loc, /turf) || !istype(O.loc, /turf)) // are you in a container/closet/pod/etc?
+ return
+ if(occupant)
+ user << "\blue The body scanner is already occupied!"
+ return
+ var/mob/living/L = O
+ if(!istype(L) || L.buckled)
+ return
+ if(L.abiotic())
+ user << "\blue Subject cannot have abiotic items on."
+ return
+ for(var/mob/living/carbon/slime/M in range(1,L))
+ if(M.Victim == L)
+ usr << "[L.name] will not fit into the body scanner because they have a slime latched onto their head."
+ return
+ if(L == user)
+ visible_message("[user] climbs into the body scanner.", 3)
+ else
+ visible_message("[user] puts [L.name] into the body scanner.", 3)
+
+ if (L.client)
+ L.client.perspective = EYE_PERSPECTIVE
+ L.client.eye = src
+ L.loc = src
+ src.occupant = L
+ src.icon_state = "body_scanner_1"
+ for(var/obj/OO in src)
+ OO.loc = src.loc
+ //Foreach goto(154)
+ src.add_fingerprint(user)
+ return
/*/obj/machinery/bodyscanner/allow_drop()
return 0*/
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index e2832d3c44a..f29d285bd45 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -98,6 +98,14 @@ var/global/list/autolathe_recipes_hidden = list( \
active_power_usage = 100
var/busy = 0
+ l_color = "#7BF9FF"
+ power_change()
+ ..()
+ if(!(stat & (BROKEN|NOPOWER)))
+ SetLuminosity(2)
+ else
+ SetLuminosity(0)
+
/obj/machinery/autolathe/proc/wires_win(mob/user as mob)
var/dat as text
dat += "Autolathe Wires:
"
diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm
index be9f1eb9fa0..4609b2b3bf0 100644
--- a/code/game/machinery/biogenerator.dm
+++ b/code/game/machinery/biogenerator.dm
@@ -19,6 +19,14 @@
R.my_atom = src
beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
+ l_color = "#7BF9FF"
+ power_change()
+ ..()
+ if(!(stat & (BROKEN|NOPOWER)))
+ SetLuminosity(2)
+ else
+ SetLuminosity(0)
+
on_reagent_change() //When the reagents change, change the icon as well.
update_icon()
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 5e9f9adcde4..3f319d0b98a 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -20,7 +20,16 @@
var/mess = 0 //Need to clean out it if it's full of exploded clone.
var/attempting = 0 //One clone attempt at a time thanks
var/eject_wait = 0 //Don't eject them as soon as they are created fuckkk
- var/biomass = CLONE_BIOMASS
+ var/biomass = CLONE_BIOMASS // * 3 - N3X
+
+ l_color = "#00FF00"
+ power_change()
+ ..()
+ if(!(stat & (BROKEN|NOPOWER)))
+ SetLuminosity(2)
+ else
+ SetLuminosity(0)
+
//The return of data disks?? Just for transferring between genetics machine/cloning machine.
//TO-DO: Make the genetics machine accept them.
diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm
index 6f802a84fd1..2b1aa086108 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -13,6 +13,14 @@
var/current_heat_capacity = 50
+ l_color = "#00FF00"
+ power_change()
+ ..()
+ if(!(stat & (BROKEN|NOPOWER)))
+ SetLuminosity(2)
+ else
+ SetLuminosity(0)
+
/obj/machinery/atmospherics/unary/cryo_cell/New()
..()
initialize_directions = dir