diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 3ef80aa27b..3de2943265 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -39,10 +39,8 @@
if(!sleeper)
findsleeper()
- if(sleeper)
- return sleeper.ui_interact(user)
- else if(sleeper)
- return sleeper.ui_interact(user)
+ if(sleeper)
+ return ui_interact(user)
else
to_chat(user, "Sleeper not found!")
@@ -59,6 +57,94 @@
else
icon_state = initial(icon_state)
+/obj/machinery/sleep_console/ui_interact(var/mob/user, var/ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = outside_state)
+ var/data[0]
+
+ var/obj/machinery/sleeper/S = sleeper
+ var/mob/living/carbon/human/occupant = sleeper.occupant
+
+ data["power"] = S.stat & (NOPOWER|BROKEN) ? 0 : 1
+
+ var/list/reagents = list()
+ for(var/T in S.available_chemicals)
+ var/list/reagent = list()
+ reagent["id"] = T
+ reagent["name"] = S.available_chemicals[T]
+ if(occupant)
+ reagent["amount"] = occupant.reagents.get_reagent_amount(T)
+ reagents += list(reagent)
+ data["reagents"] = reagents.Copy()
+
+ if(occupant)
+ data["occupant"] = 1
+ switch(occupant.stat)
+ if(CONSCIOUS)
+ data["stat"] = "Conscious"
+ if(UNCONSCIOUS)
+ data["stat"] = "Unconscious"
+ if(DEAD)
+ data["stat"] = "Dead"
+ data["health"] = occupant.health
+ data["maxHealth"] = occupant.getMaxHealth()
+ if(iscarbon(occupant))
+ var/mob/living/carbon/C = occupant
+ data["pulse"] = C.get_pulse(GETPULSE_TOOL)
+ data["brute"] = occupant.getBruteLoss()
+ data["burn"] = occupant.getFireLoss()
+ data["oxy"] = occupant.getOxyLoss()
+ data["tox"] = occupant.getToxLoss()
+ else
+ data["occupant"] = 0
+ if(S.beaker)
+ data["beaker"] = S.beaker.reagents.get_free_space()
+ else
+ data["beaker"] = -1
+ data["filtering"] = S.filtering
+
+ var/stasis_level_name = "Error!"
+ for(var/N in S.stasis_choices)
+ if(S.stasis_choices[N] == S.stasis_level)
+ stasis_level_name = N
+ break
+ data["stasis"] = stasis_level_name
+
+ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ if(!ui)
+ ui = new(user, src, ui_key, "sleeper.tmpl", "Sleeper UI", 600, 600, state = state)
+ ui.set_initial_data(data)
+ ui.open()
+ ui.set_auto_update(1)
+
+/obj/machinery/sleep_console/Topic(href, href_list)
+ if(..())
+ return 1
+
+ var/obj/machinery/sleeper/S = sleeper
+
+ if(usr == S.occupant)
+ to_chat(usr, "You can't reach the controls from the inside.")
+ return
+
+ add_fingerprint(usr)
+
+ if(href_list["eject"])
+ S.go_out()
+ if(href_list["beaker"])
+ S.remove_beaker()
+ if(href_list["sleeper_filter"])
+ if(S.filtering != text2num(href_list["sleeper_filter"]))
+ S.toggle_filter()
+ if(href_list["chemical"] && href_list["amount"])
+ if(S.occupant && S.occupant.stat != DEAD)
+ if(href_list["chemical"] in S.available_chemicals) // Your hacks are bad and you should feel bad
+ S.inject_chemical(usr, href_list["chemical"], text2num(href_list["amount"]))
+ if(href_list["change_stasis"])
+ var/new_stasis = input("Levels deeper than 50% stasis level will render the patient unconscious.","Stasis Level") as null|anything in S.stasis_choices
+ if(new_stasis && CanUseTopic(usr, default_state) == STATUS_INTERACTIVE)
+ S.stasis_level = S.stasis_choices[new_stasis]
+
+ return 1
+
/obj/machinery/sleeper
name = "sleeper"
desc = "A stasis pod with built-in injectors, a dialysis machine, and a limited health scanner."
@@ -121,89 +207,6 @@
/obj/machinery/sleeper/update_icon()
icon_state = "sleeper_[occupant ? "1" : "0"]"
-/obj/machinery/sleeper/ui_interact(var/mob/user, var/ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = outside_state)
- var/data[0]
-
- data["power"] = stat & (NOPOWER|BROKEN) ? 0 : 1
-
- var/list/reagents = list()
- for(var/T in available_chemicals)
- var/list/reagent = list()
- reagent["id"] = T
- reagent["name"] = available_chemicals[T]
- if(occupant)
- reagent["amount"] = occupant.reagents.get_reagent_amount(T)
- reagents += list(reagent)
- data["reagents"] = reagents.Copy()
-
- if(occupant)
- data["occupant"] = 1
- switch(occupant.stat)
- if(CONSCIOUS)
- data["stat"] = "Conscious"
- if(UNCONSCIOUS)
- data["stat"] = "Unconscious"
- if(DEAD)
- data["stat"] = "Dead"
- data["health"] = occupant.health
- data["maxHealth"] = occupant.getMaxHealth()
- if(iscarbon(occupant))
- var/mob/living/carbon/C = occupant
- data["pulse"] = C.get_pulse(GETPULSE_TOOL)
- data["brute"] = occupant.getBruteLoss()
- data["burn"] = occupant.getFireLoss()
- data["oxy"] = occupant.getOxyLoss()
- data["tox"] = occupant.getToxLoss()
- else
- data["occupant"] = 0
- if(beaker)
- data["beaker"] = beaker.reagents.get_free_space()
- else
- data["beaker"] = -1
- data["filtering"] = filtering
-
- var/stasis_level_name = "Error!"
- for(var/N in stasis_choices)
- if(stasis_choices[N] == stasis_level)
- stasis_level_name = N
- break
- data["stasis"] = stasis_level_name
-
- ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
- if(!ui)
- ui = new(user, src, ui_key, "sleeper.tmpl", "Sleeper UI", 600, 600, state = state)
- ui.set_initial_data(data)
- ui.open()
- ui.set_auto_update(1)
-
-/obj/machinery/sleeper/Topic(href, href_list)
- if(..())
- return 1
-
- if(usr == occupant)
- to_chat(usr, "You can't reach the controls from the inside.")
- return
-
- add_fingerprint(usr)
-
- if(href_list["eject"])
- go_out()
- if(href_list["beaker"])
- remove_beaker()
- if(href_list["sleeper_filter"])
- if(filtering != text2num(href_list["sleeper_filter"]))
- toggle_filter()
- if(href_list["chemical"] && href_list["amount"])
- if(occupant && occupant.stat != DEAD)
- if(href_list["chemical"] in available_chemicals) // Your hacks are bad and you should feel bad
- inject_chemical(usr, href_list["chemical"], text2num(href_list["amount"]))
- if(href_list["change_stasis"])
- var/new_stasis = input("Levels deeper than 50% stasis level will render the patient unconscious.","Stasis Level") as null|anything in stasis_choices
- if(new_stasis && CanUseTopic(usr, default_state) == STATUS_INTERACTIVE)
- stasis_level = stasis_choices[new_stasis]
-
- return 1
-
/obj/machinery/sleeper/attackby(var/obj/item/I, var/mob/user)
add_fingerprint(user)
if(istype(I, /obj/item/weapon/grab))