diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 80073eb1d9a..67839fe6fff 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -324,6 +324,16 @@ to destroy them and players will be able to make replacements. /obj/item/stack/cable_coil = 5, /obj/item/weapon/stock_parts/console_screen = 1) +/obj/item/weapon/circuitboard/gibber + name = "circuit board (Gibber)" + build_path = /obj/machinery/gibber + board_type = "machine" + origin_tech = "programming=1" + req_components = list( + /obj/item/weapon/stock_parts/matter_bin = 1, + /obj/item/weapon/stock_parts/manipulator = 1) + + /obj/item/weapon/circuitboard/processor name = "circuit board (Food processor)" build_path = /obj/machinery/processor @@ -333,6 +343,15 @@ to destroy them and players will be able to make replacements. /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/manipulator = 1) +/obj/item/weapon/circuitboard/recycler + name = "circuit board (Recycler)" + build_path = /obj/machinery/recycler + board_type = "machine" + origin_tech = "programming=1" + req_components = list( + /obj/item/weapon/stock_parts/matter_bin = 1, + /obj/item/weapon/stock_parts/manipulator = 1) + /obj/item/weapon/circuitboard/seed_extractor name = "circuit board (Seed Extractor)" build_path = /obj/machinery/seed_extractor diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index 7c08f2ebd07..00f14939a92 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -40,6 +40,14 @@ var/turf/T = get_step(src, acceptdir) if(istype(T)) lturf = T + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/gibber(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + RefreshParts() + +/obj/machinery/gibber/RefreshParts() //If you want to make the machine upgradable, this is where you would change any vars basd on its stock parts. + return /obj/machinery/gibber/autogibber/process() if(!lturf || occupant || locked || dirty || operating) @@ -194,17 +202,26 @@ else src.startgibbing(user) -/obj/machinery/gibber/attackby(obj/item/weapon/grab/G as obj, mob/user as mob, params) - if(!istype(G)) - return ..() - - if(G.state < 2) - user << "You need a better grip to do that!" +/obj/machinery/gibber/attackby(obj/item/P as obj, mob/user as mob, params) + if(istype(P, /obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = P + if(G.state < 2) + user << "You need a better grip to do that!" + return + move_into_gibber(user,G.affecting) + qdel(G) return - move_into_gibber(user,G.affecting) + if(default_deconstruction_screwdriver(user, "grinder_open", "grinder", P)) + return - qdel(G) + if(exchange_parts(user, P)) + return + + if(default_unfasten_wrench(user, P)) + return + + default_deconstruction_crowbar(P) /obj/machinery/gibber/MouseDrop_T(mob/target, mob/user) if(usr.stat || (!ishuman(user)) || user.restrained() || user.weakened || user.stunned || user.paralysis || user.resting) diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index e4c952bdcb2..452ec6f5702 100644 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -11,7 +11,7 @@ idle_power_usage = 5 active_power_usage = 100 flags = NOREACT - var/max_n_of_items = 999 //No, this should NOT be a global var. + var/max_n_of_items = 1500 var/icon_on = "smartfridge" var/icon_off = "smartfridge-off" var/icon_panel = "smartfridge-panel" @@ -23,6 +23,17 @@ var/is_secure = 0 var/datum/wires/smartfridge/wires = null +/obj/machinery/smartfridge/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/smartfridge(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + RefreshParts() + +/obj/machinery/smartfridge/RefreshParts() + for(var/obj/item/weapon/stock_parts/matter_bin/B in component_parts) + max_n_of_items = 1500 * B.rating + /obj/machinery/smartfridge/secure is_secure = 1 @@ -162,16 +173,18 @@ ********************/ /obj/machinery/smartfridge/attackby(var/obj/item/O as obj, var/mob/user as mob) - if(istype(O, /obj/item/weapon/screwdriver)) - playsound(user, 'sound/items/Screwdriver.ogg', 50, 1) - panel_open = !panel_open - user.visible_message("[user] [panel_open ? "opens" : "closes"] the maintenance panel of \the [src].", "You [panel_open ? "open" : "close"] the maintenance panel of \the [src].") - overlays.Cut() - if(panel_open) - overlays += image(icon, icon_panel) - nanomanager.update_uis(src) + if(default_deconstruction_screwdriver(user, "smartfridge_open", "smartfridge", O)) return + if(exchange_parts(user, O)) + return + + if(default_unfasten_wrench(user, O)) + power_change() + return + + default_deconstruction_crowbar(O) + if(istype(O, /obj/item/device/multitool)||istype(O, /obj/item/weapon/wirecutters)) if(panel_open) attack_hand(user) diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index e9c2bd18fc4..a89c0dee7ea 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -17,8 +17,16 @@ var/const/SAFETY_COOLDOWN = 100 /obj/machinery/recycler/New() // On us ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/recycler(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + RefreshParts() update_icon() +/obj/machinery/recycler/RefreshParts() //If you want to make the machine upgradable, this is where you would change any vars basd on its stock parts. + return + /obj/machinery/recycler/examine() set src in view() ..() @@ -32,14 +40,19 @@ var/const/SAFETY_COOLDOWN = 100 /obj/machinery/recycler/attackby(var/obj/item/I, var/mob/user, params) - if(istype(I, /obj/item/weapon/screwdriver) && emagged) - emagged = 0 - update_icon() - user << "You reset the crusher to its default factory settings." - else - ..() + if(default_deconstruction_screwdriver(user, "grinder-oOpen", "grinder-o0", I)) return + + if(exchange_parts(user, I)) + return + + if(default_unfasten_wrench(user, I)) + return + + default_deconstruction_crowbar(I) + ..() add_fingerprint(user) + return /obj/machinery/recycler/emag_act(user as mob) if(!emagged) diff --git a/code/game/machinery/seed_extractor.dm b/code/game/machinery/seed_extractor.dm index 913464b8295..67b929eeb62 100644 --- a/code/game/machinery/seed_extractor.dm +++ b/code/game/machinery/seed_extractor.dm @@ -6,8 +6,30 @@ density = 1 anchored = 1 +/obj/machinery/seed_extractor/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/seed_extractor(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + RefreshParts() + +/obj/machinery/seed_extractor/RefreshParts() //If you want to make the machine upgradable, this is where you would change any vars basd on its stock parts. + return + obj/machinery/seed_extractor/attackby(var/obj/item/O as obj, var/mob/user as mob, params) + if(default_deconstruction_screwdriver(user, "sextractor_open", "sextractor", O)) + return + + if(exchange_parts(user, O)) + return + + if(default_unfasten_wrench(user, O)) + return + + default_deconstruction_crowbar(O) + // Fruits and vegetables. if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown) || istype(O, /obj/item/weapon/grown)) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index ec0b4d250db..0599e90f373 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -294,7 +294,7 @@ var/list/special_reagents = list(list("hydrogen", "oxygen", "silicon", "phosphorus", "sulfur", "carbon", "nitrogen", "tungsten", "water"), list("lithium", "sugar", "copper", "mercury", "sodium","iodine","bromine"), list("ethanol", "chlorine", "potassium", "aluminum","plasma", "radium", "fluorine", "iron", "silver"), - list("oil", "ash", "acetone", "saltpetre", "ammonia", "diethylamine")) + list("oil", "ash", "acetone", "saltpetre", "ammonia", "diethylamine", "fuel")) /obj/machinery/chem_dispenser/constructable/New() ..() diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index fdefe8f487e..7509fc8caec 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -242,6 +242,26 @@ build_path = /obj/item/weapon/circuitboard/rdserver category = list("Research Machinery") +/datum/design/gibber + name = "Machine Design (Gibber Board)" + desc = "The circuit board for a gibber." + id = "gibber" + req_tech = list("programming" = 1) + build_type = IMPRINTER + materials = list("$glass" = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/gibber + category = list ("Misc. Machinery") + +/datum/design/smartfridge + name = "Machine Design (Smartfridge Board)" + desc = "The circuit board for a smartfridge." + id = "smartfridge" + req_tech = list("programming" = 1) + build_type = IMPRINTER + materials = list("$glass" = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/smartfridge + category = list ("Misc. Machinery") + /datum/design/monkey_recycler name = "Machine Design (Monkey Recycler Board)" desc = "The circuit board for a monkey recycler." @@ -252,6 +272,16 @@ build_path = /obj/item/weapon/circuitboard/monkey_recycler category = list ("Misc. Machinery") +/datum/design/seed_extractor + name = "Machine Design (Seed Extractor Board)" + desc = "The circuit board for a seed extractor." + id = "seed_extractor" + req_tech = list("programming" = 1) + build_type = IMPRINTER + materials = list("$glass" = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/seed_extractor + category = list ("Misc. Machinery") + /datum/design/processor name = "Machine Design (Processor Board)" desc = "The circuit board for a processor." @@ -262,6 +292,16 @@ build_path = /obj/item/weapon/circuitboard/processor category = list ("Misc. Machinery") +/datum/design/recycler + name = "Machine Design (Recycler Board)" + desc = "The circuit board for a recycler." + id = "recycler" + req_tech = list("programming" = 1) + build_type = IMPRINTER + materials = list("$glass" = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/recycler + category = list ("Misc. Machinery") + /datum/design/holopad name = "Machine Design (AI Holopad Board)" desc = "The circuit board for a holopad."