diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 9f9ff56f780..a4158218a1e 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -70,12 +70,14 @@
dat += text("[]\t-Burn Severity %: []
", (occupant.getFireLoss() < 60 ? "" : ""), occupant.getFireLoss())
dat += text("
Paralysis Summary %: [] ([] seconds left!)
", occupant.paralysis, round(occupant.paralysis / 4))
if(occupant.reagents)
- dat += text("Inaprovaline units: [] units
", occupant.reagents.get_reagent_amount("inaprovaline"))
- dat += text("Soporific: [] units
", occupant.reagents.get_reagent_amount("stoxin"))
- dat += text("Dermaline: [] units
", occupant.reagents.get_reagent_amount("dermaline"))
- dat += text("Bicaridine: [] units
", occupant.reagents.get_reagent_amount("bicaridine"))
- dat += text("Dexalin: [] units
", occupant.reagents.get_reagent_amount("dexalin"))
- dat += text("
Refresh meter readings each second
Inject Inaprovaline
Inject Soporific
Inject Dermaline
Inject Bicaridine
Inject Dexalin", src, src, src, src, src, src)
+ 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
"
+ for(var/chemical in connected.available_chemicals)
+ dat += "Inject [connected.available_chemicals[chemical]]: "
+ for(var/amount in connected.amounts)
+ dat += "[amount] units "
+ dat += "
"
else
dat += "The sleeper is empty."
dat += text("
Close", user)
@@ -88,27 +90,15 @@
return
if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon/ai)))
usr.set_machine(src)
- if (src.connected)
- if (src.connected.occupant)
- if(src.connected.occupant.health > 0)
- if (href_list["inap"])
- src.connected.inject_inap(usr)
- if (href_list["stox"])
- src.connected.inject_stox(usr)
- if (href_list["derm"])
- src.connected.inject_dermaline(usr)
- if (href_list["bic"])
- src.connected.inject_bicaridine(usr)
- if (href_list["dex"])
- src.connected.inject_dexalin(usr)
- else
- if(src.connected.occupant.health > -100)
- if (href_list["inap"])
- src.connected.inject_inap(usr)
- if (href_list["stox"] || href_list["derm"] || href_list["bic"] || href_list["dex"])
- usr << "\red \b this person is not in good enough condition for sleepers to be effective! Use another means of treatment, such as cryogenics!"
- else
+ if (href_list["chemical"])
+ if (src.connected)
+ if (src.connected.occupant)
+ if (src.connected.occupant.stat == DEAD)
usr << "\red \b This person has no life for to preserve anymore. Take them to a department capable of reanimating them."
+ else if(src.connected.occupant.health > 0 || href_list["chemical"] == "inaprovaline")
+ src.connected.inject_chemical(usr,href_list["chemical"],text2num(href_list["amount"]))
+ else
+ 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()
src.add_fingerprint(usr)
@@ -142,6 +132,8 @@
anchored = 1
var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r"
var/mob/living/occupant = null
+ var/available_chemicals = list("inaprovaline" = "Inaprovaline", "stoxin" = "Soporific", "dermaline" = "Dermaline", "bicaridine" = "Bicaridine", "dexalin" = "Dexalin")
+ var/amounts = list(10, 20)
New()
@@ -275,53 +267,13 @@
return
- proc/inject_inap(mob/living/user as mob)
+ proc/inject_chemical(mob/living/user as mob, chemical, amount)
if(src.occupant && src.occupant.reagents)
- if(src.occupant.reagents.get_reagent_amount("inaprovaline") + 30 <= 60)
- src.occupant.reagents.add_reagent("inaprovaline", 30)
- user << text("Occupant now has [] units of Inaprovaline in his/her bloodstream.", src.occupant.reagents.get_reagent_amount("inaprovaline"))
- else
- user << "There's no occupant in the sleeper or the subject rejects the chemicals!"
- return
-
-
- proc/inject_stox(mob/living/user as mob)
- if(src.occupant && src.occupant.reagents)
- if(src.occupant.reagents.get_reagent_amount("stoxin") + 20 <= 40)
- src.occupant.reagents.add_reagent("stoxin", 20)
- user << text("Occupant now has [] units of soporifics in his/her bloodstream.", src.occupant.reagents.get_reagent_amount("stoxin"))
- else
- user << "There's no occupant in the sleeper or the subject rejects the chemicals!"
- return
-
-
- proc/inject_dermaline(mob/living/user as mob)
- if(src.occupant && src.occupant.reagents)
- if(src.occupant.reagents.get_reagent_amount("dermaline") + 20 <= 40)
- src.occupant.reagents.add_reagent("dermaline", 20)
- user << text("Occupant now has [] units of Dermaline in his/her bloodstream.", src.occupant.reagents.get_reagent_amount("dermaline"))
- else
- user << "There's no occupant in the sleeper or the subject rejects the chemicals!"
- return
-
-
- proc/inject_bicaridine(mob/living/user as mob)
- if(src.occupant && src.occupant.reagents)
- if(src.occupant.reagents.get_reagent_amount("bicaridine") + 10 <= 20)
- src.occupant.reagents.add_reagent("bicaridine", 10)
- user << text("Occupant now has [] units of Bicaridine in his/her bloodstream.", src.occupant.reagents.get_reagent_amount("bicaridine"))
- else
- user << "There's no occupant in the sleeper or the subject rejects the chemicals!"
- return
-
-
- proc/inject_dexalin(mob/living/user as mob)
- if(src.occupant && src.occupant.reagents)
- if(src.occupant.reagents.get_reagent_amount("dexalin") + 20 <= 40)
- src.occupant.reagents.add_reagent("dexalin", 20)
- user << text("Occupant now has [] units of Dexalin in his/her bloodstream.", src.occupant.reagents.get_reagent_amount("dexalin"))
- else
- user << "There's no occupant in the sleeper or the subject rejects the chemicals!"
+ if(src.occupant.reagents.get_reagent_amount(chemical) + amount <= 40)
+ src.occupant.reagents.add_reagent(chemical, amount)
+ user << "Occupant now has [src.occupant.reagents.get_reagent_amount(chemical)] units of [available_chemicals[chemical]] in his/her bloodstream."
+ return
+ user << "There's no occupant in the sleeper or the subject rejects the chemicals!"
return
@@ -398,4 +350,4 @@
del(O)
src.add_fingerprint(usr)
return
- return
+ return
\ No newline at end of file