From adbc85a56b4621f9ad9c2b5d8d59fb43bb53a4e2 Mon Sep 17 00:00:00 2001 From: FalseIncarnate Date: Thu, 7 Jul 2016 18:47:56 -0400 Subject: [PATCH] Buildable Deep Fryers Deep fryers can now be built and upgraded with some minor assistance from science. - Board requires programming 2, just like the microwave and such - 2 micro lasers + 5 cables - Upgrading the lasers decreases the cook time :cl: rscadd: Deepfryers are no longer arcane mysteries, and can be (de)constructed and upgraded. /:cl: --- code/game/machinery/constructable_frame.dm | 10 +++++++ code/modules/food/cooker.dm | 17 ++++++++++++ code/modules/food/deep_fryer.dm | 26 ++++++++++++++++++ .../research/designs/machine_designs.dm | 10 +++++++ icons/obj/cooking_machines.dmi | Bin 9309 -> 4317 bytes 5 files changed, 63 insertions(+) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 4c820d26857..fae97ee9d5b 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -386,6 +386,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/deepfryer + name = "circuit board (Deep Fryer)" + build_path = /obj/machinery/cooker/deepfryer + board_type = "machine" + origin_tech = "programming=2" + frame_desc = "Requires 2 Micro Lasers and 5 pieces of cable." + req_components = list( + /obj/item/weapon/stock_parts/micro_laser = 2, + /obj/item/stack/cable_coil = 5) + /obj/item/weapon/circuitboard/gibber name = "circuit board (Gibber)" build_path = /obj/machinery/gibber diff --git a/code/modules/food/cooker.dm b/code/modules/food/cooker.dm index 40e04817209..6d4bdd3cd99 100644 --- a/code/modules/food/cooker.dm +++ b/code/modules/food/cooker.dm @@ -9,12 +9,14 @@ var/on = 0 var/onicon = null var/officon = null + var/openicon = null var/thiscooktype = null var/burns = 0 // whether a machine burns something - if it does, you probably want to add the cooktype to /snacks/badrecipe var/firechance = 0 var/cooktime = 0 var/foodcolor = null var/has_specials = 0 //Set to 1 if the machine has specials to check, otherwise leave it at 0 + var/upgradeable = 0 //Set to 1 if the machine supports upgrades / deconstruction, or else it will ignore stuff like screwdrivers and parts exchangers // checks if the snack has been cooked in a certain way /obj/machinery/cooker/proc/checkCooked(obj/item/weapon/reagent_containers/food/snacks/D) @@ -91,8 +93,23 @@ return type /obj/machinery/cooker/attackby(obj/item/I, mob/user, params) + if(upgradeable) + //Not all cooker types currently support build/upgrade stuff, so not all of it will work well with this + //Until we decide whether or not we want to bring back the cereal maker or old grill/oven in some form, this initial check will have to suffice + if(isscrewdriver(I)) + default_deconstruction_screwdriver(user, openicon, officon, I) + return + if(iscrowbar(I)) + default_deconstruction_crowbar(I) + return + if(istype(I, /obj/item/weapon/storage/part_replacer)) + exchange_parts(user, I) + return if(stat & (NOPOWER|BROKEN)) return + if(panel_open) + to_chat(user, "Close the panel first!") + return if (!checkValid(I, user)) return if(!burns) diff --git a/code/modules/food/deep_fryer.dm b/code/modules/food/deep_fryer.dm index 96e5fb94c57..07459f6f8f5 100644 --- a/code/modules/food/deep_fryer.dm +++ b/code/modules/food/deep_fryer.dm @@ -10,8 +10,34 @@ foodcolor = "#FFAD33" officon = "fryer_off" onicon = "fryer_on" + openicon = "fryer_open" has_specials = 1 + upgradeable = 1 +/obj/machinery/cooker/deepfryer/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/deepfryer(null) + component_parts += new /obj/item/weapon/stock_parts/micro_laser(null) + component_parts += new /obj/item/weapon/stock_parts/micro_laser(null) + component_parts += new /obj/item/stack/cable_coil(null, 5) + RefreshParts() + +/obj/machinery/cooker/deepfryer/upgraded/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/deepfryer(null) + component_parts += new /obj/item/weapon/stock_parts/micro_laser/ultra(null) + component_parts += new /obj/item/weapon/stock_parts/micro_laser/ultra(null) + component_parts += new /obj/item/stack/cable_coil(null, 5) + RefreshParts() + +/obj/machinery/cooker/deepfryer/RefreshParts() + var/E = 0 + for(var/obj/item/weapon/stock_parts/micro_laser/L in component_parts) + E += L.rating + E -= 2 //Standard parts is 0 (1+1-2), Tier 4 parts is 6 (4+4-2) + cooktime = (200 - (E * 20)) //Effectively each laser improves cooktime by 20 per rating beyond the first (200 base, 80 max upgrade) /obj/machinery/cooker/deepfryer/gettype() var/obj/item/weapon/reagent_containers/food/snacks/deepfryholder/type = new(get_turf(src)) diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 385969c3f3f..1938b08dc20 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -432,6 +432,16 @@ build_path = /obj/item/weapon/circuitboard/candy_maker category = list("Misc. Machinery") +/datum/design/deepfryer + name = "Machine Board (Deep Fryer)" + desc = "The circuit board for a Deep Fryer." + id = "deepfryer" + req_tech = list("programming" = 2) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/deepfryer + category = list("Misc. Machinery") + /datum/design/orion_trail name = "Machine Board (Orion Trail Arcade Machine)" desc = "Allows for the construction of circuit boards used to build a new Orion Trail machine." diff --git a/icons/obj/cooking_machines.dmi b/icons/obj/cooking_machines.dmi index 10fee80e60d03994b32f4c9b754b44ea1490492a..9b3031ed5f8238bd2e0e54aeda15772da2df7fe7 100644 GIT binary patch literal 4317 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 LNkvXXu0mjf)Op4& literal 9309 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 Vu!+D9(r-g#548+5%kSB}`9Gfi0;K=|