diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm
index 8c211975961..ccfa5e76987 100644
--- a/code/game/machinery/bots/medbot.dm
+++ b/code/game/machinery/bots/medbot.dm
@@ -33,13 +33,14 @@
var/heal_threshold = 15 //Start healing when they have this much damage in a category
var/use_beaker = 0 //Use reagents in beaker instead of default treatment agents.
//Setting which reagents to use to treat what by default. By id.
-// var/treatment_brute = "bicaridine"
-// var/treatment_oxy = "dexalin"
-// var/treatment_fire = "kelotane"
-// var/treatment_tox = "anti_toxin"
-// var/treatment_virus = "spaceacillin"
+ var/treatment_brute = "bicaridine"
+ var/treatment_oxy = "dexalin"
+ var/treatment_fire = "kelotane"
+ var/treatment_tox = "anti_toxin"
+ var/treatment_virus = "spaceacillin"
var/reagent_id = "inaprovaline"
var/shut_up = 0 //self explanatory :)
+ var/always_inject = 0
/obj/machinery/bot/medbot/mysterious
name = "Mysterious Medibot"
@@ -131,6 +132,9 @@
dat += "Reagent Source: "
dat += "[src.use_beaker ? "Loaded Beaker (When available)" : "Internal Synthesizer"]
"
+ dat += "Inject: "
+ dat += "[src.always_inject ? "Always" : "If loaded chemical is known to help"]
"
+
dat += "The speaker switch is [src.shut_up ? "off" : "on"]. Toggle"
user << browse("
Medibot v1.0 controls[dat]", "window=automed")
@@ -166,13 +170,12 @@
else if((href_list["use_beaker"]) && (!src.locked))
src.use_beaker = !src.use_beaker
+ else if((href_list["toggle_inject"]) && (!src.locked))
+ src.always_inject = !src.always_inject
else if (href_list["eject"] && (!isnull(src.reagent_glass)))
- if(!src.locked)
- src.reagent_glass.loc = get_turf(src)
- src.reagent_glass = null
- else
- usr << "You cannot eject the beaker because the panel is locked!"
+ src.reagent_glass.loc = get_turf(src)
+ src.reagent_glass = null
else if ((href_list["togglevoice"]) && (!src.locked))
src.shut_up = !src.shut_up
@@ -190,9 +193,6 @@
user << "\red Access denied."
else if (istype(W, /obj/item/weapon/reagent_containers/glass))
- if(src.locked)
- user << "You cannot insert a beaker because the panel is locked!"
- return
if(!isnull(src.reagent_glass))
user << "There is already a beaker loaded!"
return
@@ -371,9 +371,29 @@
src.last_found = world.time
return
- //Use whatever is inside the loaded beaker. If there is one.
+ //See if we have anything inside the beaker to help.
if((src.use_beaker) && (src.reagent_glass) && (src.reagent_glass.reagents.total_volume))
- reagent_id = "internal_beaker"
+ if(always_inject)
+ reagent_id = "internal_beaker"
+ else if (C.getBruteLoss() >= heal_threshold)
+ if(C.reagents.has_reagent(src.treatment_brute))
+ reagent_id = "internal_beaker"
+
+ else if (C.getOxyLoss() >= (15 + heal_threshold))
+ if(C.reagents.has_reagent(src.treatment_oxy))
+ reagent_id = "internal_beaker"
+
+ else if (C.getFireLoss() >= heal_threshold)
+ if(C.reagents.has_reagent(src.treatment_fire))
+ reagent_id = "internal_beaker"
+
+ else if (C.getToxLoss() >= heal_threshold)
+ if(C.reagents.has_reagent(src.treatment_tox))
+ reagent_id = "internal_beaker"
+
+ else if (100 - C.health >= heal_threshold)
+ if(C.reagents.has_reagent("tricordrazine"))
+ reagent_id = "internal_beaker"
if(src.emagged) //Emagged! Time to poison everybody.
reagent_id = "toxin"
diff --git a/code/modules/chemical/Chemistry-Tools.dm b/code/modules/chemical/Chemistry-Tools.dm
index 6363f943988..20d63bc9b7a 100644
--- a/code/modules/chemical/Chemistry-Tools.dm
+++ b/code/modules/chemical/Chemistry-Tools.dm
@@ -2128,6 +2128,17 @@
..()
reagents.add_reagent("cryoxadone", 30)
+/obj/item/weapon/reagent_containers/glass/beaker/tricordrazine
+ name = "beaker"
+ desc = "A beaker. Can hold up to 50 units."
+ icon = 'chemical.dmi'
+ icon_state = "beaker0"
+ item_state = "beaker"
+
+ New()
+ ..()
+ reagents.add_reagent("tricordrazine", 30)
+
/obj/item/weapon/reagent_containers/food/drinks/golden_cup
desc = "A golden cup"
name = "golden cup"
diff --git a/maps/tgstation.2.0.8.dmm b/maps/tgstation.2.0.8.dmm
index 36dfb2bc9a4..b7dcc17d9cb 100644
--- a/maps/tgstation.2.0.8.dmm
+++ b/maps/tgstation.2.0.8.dmm
@@ -4870,7 +4870,7 @@
"bPH" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Assembly Line Maintenance"; req_access_txt = "12;29"},/turf/simulated/floor/plating,/area/assembly/assembly_line)
"bPI" = (/obj/structure/table,/obj/item/device/multitool,/obj/item/weapon/crowbar,/obj/item/device/flash,/obj/item/device/flash,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/assembly/assembly_line)
"bPJ" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor,/area/assembly/assembly_line)
-"bPK" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/device/healthanalyzer,/obj/item/device/healthanalyzer,/obj/item/device/healthanalyzer,/turf/simulated/floor,/area/assembly/assembly_line)
+"bPK" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/device/healthanalyzer,/obj/item/device/healthanalyzer,/obj/item/device/healthanalyzer,/obj/item/weapon/reagent_containers/glass/beaker/tricordazine,/obj/item/weapon/reagent_containers/glass/beaker/tricordazine,/obj/item/weapon/reagent_containers/glass/beaker/tricordazine,/turf/simulated/floor,/area/assembly/assembly_line)
"bPL" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 20},/obj/item/weapon/book/manual/robotics_cyborgs{pixel_y = 5},/turf/simulated/floor,/area/assembly/assembly_line)
"bPM" = (/obj/machinery/computer/rdconsole{id = 2; name = "Robotics R&D Console"; req_access = null; req_access_txt = "29"},/turf/simulated/floor,/area/assembly/assembly_line)
"bPN" = (/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/flash,/obj/item/device/flash,/obj/structure/table,/turf/simulated/floor,/area/assembly/assembly_line)