diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 85738d3bb65..9e91e254950 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -553,8 +553,8 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/cell = 1) /obj/item/circuitboard/chem_master - name = "circuit board (Chem Master 2999)" - build_path = /obj/machinery/chem_master/constructable + name = "circuit board (ChemMaster 3000)" + build_path = /obj/machinery/chem_master board_type = "machine" origin_tech = "materials=3;programming=2;biotech=3" req_components = list( @@ -562,6 +562,25 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/manipulator = 1, /obj/item/stock_parts/console_screen = 1) +/obj/item/circuitboard/chem_master/attackby(obj/item/I, mob/user, params) + if(isscrewdriver(I)) + var/new_name = "ChemMaster" + var/new_path = /obj/machinery/chem_master + + if(build_path == /obj/machinery/chem_master) + new_name = "CondiMaster" + new_path = /obj/machinery/chem_master/condimaster + + build_path = new_path + name = "circuit board ([new_name] 3000)" + to_chat(user, "You change the circuit board setting to \"[new_name]\".") + else + return ..() + +/obj/item/circuitboard/chem_master/condi_master + name = "circuit board (CondiMaster 3000)" + build_path = /obj/machinery/chem_master/condimaster + /obj/item/circuitboard/chem_heater name = "circuit board (Chemical Heater)" build_path = /obj/machinery/chem_heater diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm index 2db474b39c4..848c1ca4ecd 100644 --- a/code/modules/reagents/chemistry/machinery/chem_heater.dm +++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm @@ -88,6 +88,10 @@ /obj/machinery/chem_heater/attack_hand(mob/user) ui_interact(user) +/obj/machinery/chem_heater/attack_ghost(mob/user) + if(user.can_admin_interact()) + return attack_hand(user) + /obj/machinery/chem_heater/attack_ai(mob/user) add_hiddenprint(user) return attack_hand(user) diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 707ead485ff..ffd3ae57bd5 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -21,8 +21,25 @@ /obj/machinery/chem_master/New() ..() create_reagents(100) + component_parts = list() + component_parts += new /obj/item/circuitboard/chem_master(null) + component_parts += new /obj/item/stock_parts/manipulator(null) + component_parts += new /obj/item/stock_parts/console_screen(null) + component_parts += new /obj/item/reagent_containers/glass/beaker(null) + component_parts += new /obj/item/reagent_containers/glass/beaker(null) + RefreshParts() update_icon() +/obj/machinery/chem_master/Destroy() + QDEL_NULL(beaker) + QDEL_NULL(loaded_pill_bottle) + return ..() + +/obj/machinery/chem_master/RefreshParts() + reagents.maximum_volume = 0 + for(var/obj/item/reagent_containers/glass/beaker/B in component_parts) + reagents.maximum_volume += B.reagents.maximum_volume + /obj/machinery/chem_master/ex_act(severity) switch(severity) if(1) @@ -50,6 +67,27 @@ update_icon() /obj/machinery/chem_master/attackby(obj/item/I, mob/user, params) + if(default_deconstruction_screwdriver(user, "mixer0_nopower", "mixer0", I)) + 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, I)) + return + + if(panel_open) + if(iscrowbar(I)) + default_deconstruction_crowbar(I) + return TRUE + else + to_chat(user, "You can't use the [name] while it's panel is opened!") + return TRUE + if(default_unfasten_wrench(user, I)) power_change() return @@ -334,7 +372,8 @@ return attack_hand(user) /obj/machinery/chem_master/attack_ghost(mob/user) - return attack_hand(user) + if(user.can_admin_interact()) + return attack_hand(user) /obj/machinery/chem_master/attack_hand(mob/user) if(..()) @@ -399,40 +438,12 @@ name = "\improper CondiMaster 3000" condi = TRUE -/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() +/obj/machinery/chem_master/condimaster/New() ..() - component_parts = list() - component_parts += new /obj/item/circuitboard/chem_master(null) + QDEL_LIST(component_parts) + component_parts += new /obj/item/circuitboard/chem_master/condi_master(null) component_parts += new /obj/item/stock_parts/manipulator(null) component_parts += new /obj/item/stock_parts/console_screen(null) component_parts += new /obj/item/reagent_containers/glass/beaker(null) component_parts += new /obj/item/reagent_containers/glass/beaker(null) - -/obj/machinery/chem_master/constructable/attackby(obj/item/I, mob/user, params) - - if(default_deconstruction_screwdriver(user, "mixer0_nopower", "mixer0", I)) - 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, I)) - return - - if(panel_open) - if(iscrowbar(I)) - default_deconstruction_crowbar(I) - return TRUE - else - to_chat(user, "You can't use the [name] while it's panel is opened!") - return TRUE - else - return ..() + RefreshParts() \ No newline at end of file diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index cc2f12e6714..a23378f5513 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -173,8 +173,8 @@ category = list("Medical Machinery") /datum/design/chem_master - name = "Machine Design (Chem Master Board)" - desc = "The circuit board for a Chem Master 2999." + name = "Machine Design (ChemMaster Board)" + desc = "The circuit board for a ChemMaster 3000." id = "chem_master" req_tech = list("biotech" = 3, "materials" = 3, "programming" = 2) build_type = IMPRINTER