diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index ba75e86b005..f4c6cc90c57 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -466,6 +466,16 @@ to destroy them and players will be able to make replacements. /obj/item/weapon/stock_parts/console_screen = 1, /obj/item/weapon/stock_parts/cell = 1) +/obj/item/weapon/circuitboard/chem_master + name = "circuit board (Chem Master 2999)" + build_path = /obj/machinery/chem_master/constructable + board_type = "machine" + origin_tech = "materials=2;programming=2;biotech=1" + req_components = list( + /obj/item/weapon/reagent_containers/glass/beaker = 2, + /obj/item/weapon/stock_parts/manipulator = 1, + /obj/item/weapon/stock_parts/console_screen = 1) + /obj/item/weapon/circuitboard/chem_heater name = "circuit board (Chemical Heater)" build_path = /obj/machinery/chem_heater diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 0e7199645c9..f9c8dead1b8 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -14,7 +14,7 @@ var/energy = 100 var/max_energy = 100 var/amount = 30 - var/beaker = null + var/obj/item/weapon/reagent_containers/beaker = null var/recharged = 0 var/hackedcheck = 0 var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine", @@ -123,15 +123,15 @@ var beakerContents[0] var beakerCurrentVolume = 0 - if(beaker && beaker:reagents && beaker:reagents.reagent_list.len) - for(var/datum/reagent/R in beaker:reagents.reagent_list) + if(beaker && beaker.reagents && beaker.reagents.reagent_list.len) + for(var/datum/reagent/R in beaker.reagents.reagent_list) beakerContents.Add(list(list("name" = R.name, "id"=R.id, "volume" = R.volume))) // list in a list because Byond merges the first list... beakerCurrentVolume += R.volume data["beakerContents"] = beakerContents if (beaker) data["beakerCurrentVolume"] = beakerCurrentVolume - data["beakerMaxVolume"] = beaker:volume + data["beakerMaxVolume"] = beaker.volume else data["beakerCurrentVolume"] = null data["beakerMaxVolume"] = null @@ -385,7 +385,7 @@ icon_state = "mixer0" use_power = 1 idle_power_usage = 20 - var/beaker = null + var/obj/item/weapon/reagent_containers/beaker = null var/obj/item/weapon/storage/pill_bottle/loaded_pill_bottle = null var/mode = 0 var/condi = 0 @@ -483,7 +483,7 @@ P.info += "Time of analysis: [worldtime2text(world.time)]

" P.info += "Chemical name: [href_list["name"]]
" if(href_list["name"] == "Blood") - var/datum/reagents/R = beaker:reagents + var/datum/reagents/R = beaker.reagents var/datum/reagent/blood/G for(var/datum/reagent/F in R.reagent_list) if(F.name == href_list["name"]) @@ -499,7 +499,7 @@ src.printing = null if(beaker) - var/datum/reagents/R = beaker:reagents + var/datum/reagents/R = beaker.reagents if (href_list["analyze"]) var/dat = "" if(!condi) @@ -562,7 +562,7 @@ return else if (href_list["eject"]) if(beaker) - beaker:loc = src.loc + beaker.forceMove(get_turf(src)) beaker = null reagents.clear_reagents() icon_state = "mixer0" @@ -695,7 +695,7 @@ dat += "No pill bottle inserted.

" dat += "Close" else - var/datum/reagents/R = beaker:reagents + var/datum/reagents/R = beaker.reagents dat += "Eject beaker and Clear Buffer
" if(src.loaded_pill_bottle) dat += "Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.storage_slots]\]

" @@ -759,6 +759,44 @@ name = "\improper CondiMaster 3000" condi = 1 +/obj/machinery/chem_master/constructable + name = "ChemMaster 2999" + desc = "Used to seperate chemicals and distribute them in a variety of forms." + +/obj/machinery/chem_master/constructable/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/chem_master(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + component_parts += new /obj/item/weapon/stock_parts/console_screen(null) + component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(null) + component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(null) + +/obj/machinery/chem_master/constructable/attackby(obj/item/B, mob/user, params) + + if(default_deconstruction_screwdriver(user, "mixer0_nopower", "mixer0", B)) + if(beaker) + beaker.forceMove(get_turf(src)) + beaker = null + reagents.clear_reagents() + if(loaded_pill_bottle) + loaded_pill_bottle.forceMove(get_turf(src)) + loaded_pill_bottle = null + return + + if(exchange_parts(user, B)) + return + + if(panel_open) + if(istype(B, /obj/item/weapon/crowbar)) + default_deconstruction_crowbar(B) + return 1 + else + user << "You can't use the [src.name] while it's panel is opened!" + return 1 + else + ..() + /obj/machinery/reagentgrinder name = "\improper All-In-One Grinder" diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 8caa9af8b12..fb97c2b693c 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -152,6 +152,16 @@ build_path = /obj/item/weapon/circuitboard/chem_dispenser category = list("Medical Machinery") +/datum/design/chem_master + name = "Machine Design (Chem Master Board)" + desc = "The circuit board for a Chem Master 2999." + id = "chem_master" + req_tech = list("biotech" = 1, "materials" = 2, "programming" = 2) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/chem_master + category = list("Medical Machinery") + /datum/design/chem_heater name = "Machine Design (Chemical Heater Board)" desc = "The circuit board for a chemical heater."