From 07270c198fc64b6774742d36c5367fbfb51e10b0 Mon Sep 17 00:00:00 2001 From: BordListian Date: Fri, 2 Mar 2018 01:45:00 +0100 Subject: [PATCH 1/2] Makes machines constructable either anchored or unanchored (#35968) * - Makes machines constructable either anchored or unanchored if the board allows it * - Tesla Coils connect to the network if anchored --- code/game/machinery/constructable_frame.dm | 5 ++-- .../items/circuitboards/circuitboard.dm | 1 + .../circuitboards/machine_circuitboards.dm | 24 +++++++++++++++++++ code/modules/power/tesla/coil.dm | 4 ++++ 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index b95bf7d663..09f59fd003 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -118,10 +118,10 @@ return if(istype(P, /obj/item/circuitboard/machine)) - if(!anchored) + var/obj/item/circuitboard/machine/B = P + if(!anchored && B.needs_anchored) to_chat(user, "The frame needs to be secured first!") return - var/obj/item/circuitboard/machine/B = P if(!user.transferItemToLoc(B, src)) return playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) @@ -174,6 +174,7 @@ if(component_check) P.play_tool_sound(src) var/obj/machinery/new_machine = new src.circuit.build_path(src.loc, 1) + new_machine.anchored = anchored new_machine.on_construction() for(var/obj/O in new_machine.component_parts) qdel(O) diff --git a/code/game/objects/items/circuitboards/circuitboard.dm b/code/game/objects/items/circuitboards/circuitboard.dm index 12b54a3751..053d450f4f 100644 --- a/code/game/objects/items/circuitboards/circuitboard.dm +++ b/code/game/objects/items/circuitboards/circuitboard.dm @@ -24,6 +24,7 @@ micro-manipulator, console screen, beaker, Microlaser, matter bin, power cells. */ /obj/item/circuitboard/machine + var/needs_anchored = TRUE // Whether this machine must be anchored to be constructed. var/list/req_components // Components required by the machine. // Example: list(/obj/item/stock_parts/matter_bin = 5) diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index add2fd5abb..71eaa330d1 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -53,6 +53,7 @@ name = "AI Holopad (Machine Board)" build_path = /obj/machinery/holopad req_components = list(/obj/item/stock_parts/capacitor = 1) + needs_anchored = FALSE //wew lad /obj/item/circuitboard/machine/launchpad name = "Bluespace Launchpad (Machine Board)" @@ -84,11 +85,13 @@ name = "Weapon Recharger (Machine Board)" build_path = /obj/machinery/recharger req_components = list(/obj/item/stock_parts/capacitor = 1) + needs_anchored = FALSE /obj/item/circuitboard/machine/cell_charger name = "Cell Charger (Machine Board)" build_path = /obj/machinery/cell_charger req_components = list(/obj/item/stock_parts/capacitor = 1) + needs_anchored = FALSE /obj/item/circuitboard/machine/cyborgrecharger name = "Cyborg Recharger (Machine Board)" @@ -105,6 +108,7 @@ req_components = list( /obj/item/stock_parts/matter_bin = 1, /obj/item/stock_parts/manipulator = 1) + needs_anchored = FALSE /obj/item/circuitboard/machine/space_heater name = "Space Heater (Machine Board)" @@ -113,6 +117,7 @@ /obj/item/stock_parts/micro_laser = 1, /obj/item/stock_parts/capacitor = 1, /obj/item/stack/cable_coil = 3) + needs_anchored = FALSE /obj/item/circuitboard/machine/telecomms/broadcaster name = "Subspace Broadcaster (Machine Board)" @@ -209,6 +214,7 @@ /obj/machinery/vending/clothing = "ClothesMate", /obj/machinery/vending/medical = "NanoMed Plus", /obj/machinery/vending/wallmed = "NanoMed") + needs_anchored = FALSE /obj/item/circuitboard/machine/vendor/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/screwdriver)) @@ -312,6 +318,7 @@ name = "circuit board (Deep Fryer)" build_path = /obj/machinery/deepfryer req_components = list(/obj/item/stock_parts/micro_laser = 1) + needs_anchored = FALSE /obj/item/circuitboard/machine/gibber name = "Gibber (Machine Board)" @@ -319,6 +326,7 @@ req_components = list( /obj/item/stock_parts/matter_bin = 1, /obj/item/stock_parts/manipulator = 1) + needs_anchored = FALSE /obj/item/circuitboard/machine/monkey_recycler name = "Monkey Recycler (Machine Board)" @@ -326,6 +334,7 @@ req_components = list( /obj/item/stock_parts/matter_bin = 1, /obj/item/stock_parts/manipulator = 1) + needs_anchored = FALSE /obj/item/circuitboard/machine/processor name = "Food Processor (Machine Board)" @@ -333,6 +342,7 @@ req_components = list( /obj/item/stock_parts/matter_bin = 1, /obj/item/stock_parts/manipulator = 1) + needs_anchored = FALSE /obj/item/circuitboard/machine/processor/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/screwdriver)) @@ -362,6 +372,7 @@ /obj/machinery/smartfridge/chemistry = "chems", /obj/machinery/smartfridge/chemistry/virology = "viruses", /obj/machinery/smartfridge/disks = "disks") + needs_anchored = FALSE /obj/item/circuitboard/machine/smartfridge/Initialize(mapload, new_type) if(new_type) @@ -416,6 +427,7 @@ /obj/item/stock_parts/matter_bin = 2, /obj/item/stock_parts/manipulator = 1, /obj/item/stack/sheet/glass = 1) + needs_anchored = FALSE /obj/item/circuitboard/machine/seed_extractor name = "Seed Extractor (Machine Board)" @@ -423,6 +435,7 @@ req_components = list( /obj/item/stock_parts/matter_bin = 1, /obj/item/stock_parts/manipulator = 1) + needs_anchored = FALSE /obj/item/circuitboard/machine/ore_redemption name = "Ore Redemption (Machine Board)" @@ -433,6 +446,7 @@ /obj/item/stock_parts/micro_laser = 1, /obj/item/stock_parts/manipulator = 1, /obj/item/device/assembly/igniter = 1) + needs_anchored = FALSE /obj/item/circuitboard/machine/mining_equipment_vendor name = "Mining Equipment Vendor (Machine Board)" @@ -460,6 +474,7 @@ /obj/item/stock_parts/micro_laser = 1, /obj/item/stack/cable_coil = 2, /obj/item/stock_parts/capacitor = 1) + needs_anchored = FALSE /obj/item/circuitboard/machine/pacman/super name = "SUPERPACMAN-type Generator (Machine Board)" @@ -504,6 +519,7 @@ req_components = list( /obj/item/stock_parts/micro_laser = 1, /obj/item/stock_parts/manipulator = 1) + needs_anchored = FALSE /obj/item/circuitboard/machine/smes name = "SMES (Machine Board)" @@ -519,6 +535,7 @@ desc = "You can use a screwdriver to switch between Research and Power Generation" build_path = /obj/machinery/power/tesla_coil req_components = list(/obj/item/stock_parts/capacitor = 1) + needs_anchored = FALSE #define PATH_POWERCOIL /obj/item/circuitboard/machine/tesla_coil/power #define PATH_RPCOIL /obj/item/circuitboard/machine/tesla_coil/research @@ -566,6 +583,7 @@ name = "Grounding Rod (Machine Board)" build_path = /obj/machinery/power/grounding_rod req_components = list(/obj/item/stock_parts/capacitor = 1) + needs_anchored = FALSE /obj/item/circuitboard/machine/power_compressor name = "Power Compressor (Machine Board)" @@ -591,6 +609,7 @@ /obj/item/stack/sheet/glass = 1, /obj/item/stock_parts/cell = 1) def_components = list(/obj/item/stock_parts/cell = /obj/item/stock_parts/cell/high) + needs_anchored = FALSE /obj/item/circuitboard/machine/smoke_machine name = "Smoke Machine (Machine Board)" @@ -601,6 +620,7 @@ /obj/item/stock_parts/manipulator = 1, /obj/item/stack/sheet/glass = 1, /obj/item/stock_parts/cell = 1) + needs_anchored = FALSE /obj/item/circuitboard/machine/chem_heater name = "Chemical Heater (Machine Board)" @@ -616,6 +636,7 @@ /obj/item/reagent_containers/glass/beaker = 2, /obj/item/stock_parts/manipulator = 1, /obj/item/stack/sheet/glass = 1) + needs_anchored = FALSE /obj/item/circuitboard/machine/chem_master/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/screwdriver)) @@ -637,6 +658,7 @@ build_path = /obj/machinery/reagentgrinder/constructed req_components = list( /obj/item/stock_parts/manipulator = 1) + needs_anchored = FALSE /obj/item/circuitboard/machine/chem_master/condi name = "CondiMaster 3000 (Machine Board)" @@ -754,6 +776,7 @@ /obj/item/stock_parts/matter_bin = 1, /obj/item/stack/cable_coil = 2, /obj/item/stack/sheet/glass = 2) + needs_anchored = FALSE /obj/item/circuitboard/machine/vending/donksofttoyvendor name = "Donksoft Toy Vendor (Machine Board)" @@ -771,6 +794,7 @@ /obj/item/stock_parts/matter_bin = 2) var/suction = TRUE var/transmit = TRUE + needs_anchored = FALSE /obj/item/circuitboard/machine/dish_drive/examine(mob/user) ..() diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm index 6f2a8741a3..6c94d6c11a 100644 --- a/code/modules/power/tesla/coil.dm +++ b/code/modules/power/tesla/coil.dm @@ -36,6 +36,10 @@ zap_cooldown -= (C.rating * 20) input_power_multiplier = power_multiplier +/obj/machinery/power/tesla_coil/on_construction() + if(anchored) + connect_to_network() + /obj/machinery/power/tesla_coil/default_unfasten_wrench(mob/user, obj/item/I, time = 20) . = ..() if(. == SUCCESSFUL_UNFASTEN)