diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index c1be061f537..587ceed5615 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -11,7 +11,6 @@
density = 1
var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r"
-
/obj/machinery/sleep_console/ex_act(severity)
switch(severity)
if(1.0)
@@ -73,6 +72,11 @@
for(var/chemical in connected.available_chemicals)
dat += "[connected.available_chemicals[chemical]]: [occupant.reagents.get_reagent_amount(chemical)] units
"
dat += "
Refresh meter readings each second
"
+ if(src.connected.beaker)
+ if(src.connected.filtering)
+ dat += "
Stop Dialysis
"
+ else
+ dat += "
Start Dialysis
"
for(var/chemical in connected.available_chemicals)
dat += "Inject [connected.available_chemicals[chemical]]: "
for(var/amount in connected.amounts)
@@ -101,6 +105,9 @@
usr << "\red \b This person is not in good enough condition for sleepers to be effective! Use another means of treatment, such as cryogenics!"
if (href_list["refresh"])
src.updateUsrDialog()
+ if (href_list["togglefilter"])
+ src.connected.toggle_filter()
+ src.updateUsrDialog()
src.add_fingerprint(usr)
return
@@ -131,13 +138,16 @@
density = 1
anchored = 1
var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r"
- var/mob/living/occupant = null
+ var/mob/living/carbon/human/occupant = null
var/available_chemicals = list("inaprovaline" = "Inaprovaline", "stoxin" = "Soporific", "dermaline" = "Dermaline", "bicaridine" = "Bicaridine", "dexalin" = "Dexalin")
var/amounts = list(5, 10)
-
+ var/obj/item/weapon/reagent_containers/glass/beaker = null
+ var/filtering = 0
New()
..()
+ beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large()
+ beaker.volume = 1000000
spawn( 5 )
if(orient == "RIGHT")
icon_state = "sleeper_0-r"
@@ -150,6 +160,14 @@
process()
+ if(filtering > 0)
+ if(beaker)
+ if(beaker.reagents.total_volume < beaker.reagents.maximum_volume)
+ src.occupant.vessel.trans_to(beaker, 1)
+ for(var/datum/reagent/x in src.occupant.reagents.reagent_list)
+// world << "FILTERING CHEMS"
+ src.occupant.reagents.trans_to(beaker, 3)
+ src.occupant.vessel.trans_to(beaker, 1)
src.updateDialog()
return
@@ -162,7 +180,15 @@
del(src)
return
-
+/* attackby(obj/item/weapon/reagent_containers/glass/beaker/O as obj, mob/user as mob)
+ if(istype(O, /obj/item/weapon/reagent_containers/glass))
+ if(!beaker)
+ user.before_take_item(O)
+ O.loc = src
+ beaker = O
+ else
+ user << "\red The sleeper has a beaker already."
+*/
attackby(obj/item/weapon/grab/G as obj, mob/user as mob)
if((!( istype(G, /obj/item/weapon/grab)) || !( ismob(G.affecting))))
return
@@ -203,6 +229,8 @@
ex_act(severity)
+ if(filtering)
+ toggle_filter()
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
@@ -226,6 +254,8 @@
return
return
emp_act(severity)
+ if(filtering)
+ toggle_filter()
if(stat & (BROKEN|NOPOWER))
..(severity)
return
@@ -250,9 +280,15 @@
if (M:reagents.get_reagent_amount("inaprovaline") < 5)
M:reagents.add_reagent("inaprovaline", 5)
return
-
+ proc/toggle_filter()
+ if(filtering)
+ filtering = 0
+ else
+ filtering = 1
proc/go_out()
+ if(filtering)
+ toggle_filter()
if(!src.occupant)
return
for(var/obj/O in src)
@@ -315,7 +351,18 @@
add_fingerprint(usr)
return
-
+/* verb/remove_beaker()
+ set name = "Remove Beaker"
+ set category = "Object"
+ set src in oview(1)
+ if(usr.stat != 0)
+ return
+ if(beaker)
+ beaker.loc = usr.loc
+ beaker = null
+ add_fingerprint(usr)
+ return
+*/
verb/move_inside()
set name = "Enter Sleeper"
set category = "Object"
@@ -350,4 +397,4 @@
del(O)
src.add_fingerprint(usr)
return
- return
\ No newline at end of file
+ return