From 3e8482cebbcebdb3fbfcf0b8add2996f9b344139 Mon Sep 17 00:00:00 2001 From: SabreML <57483089+SabreML@users.noreply.github.com> Date: Sat, 10 Jul 2021 19:43:40 +0100 Subject: [PATCH] Makes machine frames show their circuit name (#15025) * Circuit Names Refactor * Some review stuff * now with less runtimes * Machine Boards and Computer Boards * Only a little late * YouTool fix * Resupply crate too * Supplycomp board I'll do the other stuff tomorrow * Computer Frame Refactor Plus also removing the HONKputer to avoid a conflict. * Don't need this diff anymore --- code/datums/supplypacks.dm | 7 +- .../game/machinery/computer/buildandrepair.dm | 645 ++++++++++-------- code/game/machinery/computer/computer.dm | 8 +- code/game/machinery/constructable_frame.dm | 262 ++++--- code/game/machinery/cryopod.dm | 4 +- code/game/machinery/vending.dm | 225 +----- code/game/mecha/mecha_parts.dm | 84 +-- .../objects/items/weapons/vending_items.dm | 4 + .../kitchen_machinery/smartfridge.dm | 2 +- code/modules/station_goals/bluespace_tap.dm | 2 +- code/modules/station_goals/bsa.dm | 8 +- code/modules/station_goals/dna_vault.dm | 2 +- code/modules/station_goals/shield.dm | 2 +- icons/obj/stock_parts.dmi | Bin 23256 -> 23264 bytes 14 files changed, 585 insertions(+), 670 deletions(-) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 5ee45d3291f..2bf9f914ad0 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -572,9 +572,10 @@ GLOBAL_LIST_INIT(all_supply_groups, list(SUPPLY_EMERGENCY,SUPPLY_SECURITY,SUPPLY containername = "electrical maintenance crate" /datum/supply_packs/vending/engivend - name = "EngiVend Supply Crate" - cost = 15 - contains = list(/obj/item/vending_refill/engivend) + name = "Engineering Vendor Supply Crate" + cost = 20 + contains = list(/obj/item/vending_refill/engivend, + /obj/item/vending_refill/youtool) containername = "engineering supply crate" /datum/supply_packs/engineering/powergamermitts diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 6cba8733a2d..78895d0d099 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -1,52 +1,18 @@ -/obj/structure/computerframe - density = 1 - anchored = 0 - name = "computer frame" - icon = 'icons/obj/stock_parts.dmi' - icon_state = "0" - max_integrity = 100 - var/state = 0 - var/obj/item/circuitboard/circuit = null - -/obj/structure/computerframe/deconstruct(disassembled = TRUE) - if(!(flags & NODECONSTRUCT)) - drop_computer_parts() - return ..() // will qdel the frame - -/obj/structure/computerframe/obj_break(damage_flag) - deconstruct() - -/obj/structure/computerframe/proc/drop_computer_parts() - new /obj/item/stack/sheet/metal(loc, 5) - if(circuit) - circuit.forceMove(loc) - circuit = null - if(state >= 3) - var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc ) - A.amount = 5 - if(state >= 4) - new /obj/item/stack/sheet/glass(loc, 2) - /obj/item/circuitboard - density = 0 - anchored = 0 - w_class = WEIGHT_CLASS_SMALL + /// Use `board_name` instead of this. name = "circuit board" icon = 'icons/obj/module.dmi' icon_state = "id_mod" item_state = "electronic" origin_tech = "programming=2" + w_class = WEIGHT_CLASS_SMALL materials = list(MAT_GLASS=200) - var/id = null - var/frequency = null + usesound = 'sound/items/deconstruct.ogg' + /// Use this instead of `name`. Formats as: `circuit board ([board_name])` + var/board_name = null var/build_path = null var/board_type = "computer" var/list/req_components = null - var/powernet = null - var/list/records = null - var/contain_parts = 1 - toolspeed = 1 - usesound = 'sound/items/deconstruct.ogg' /obj/item/circuitboard/computer board_type = "computer" @@ -54,6 +20,16 @@ /obj/item/circuitboard/machine board_type = "machine" +/obj/item/circuitboard/Initialize(mapload) + . = ..() + format_board_name() + +/obj/item/circuitboard/proc/format_board_name() + if(board_name) // Should always have this, but just in case. + name = "[initial(name)] ([board_name])" + else + name = "[initial(name)]" + /obj/item/circuitboard/examine(mob/user) . = ..() if(LAZYLEN(req_components)) @@ -66,480 +42,597 @@ . += "Required components: [english_list(nice_list)]." /obj/item/circuitboard/message_monitor - name = "Circuit board (Message Monitor)" + board_name = "Message Monitor" build_path = /obj/machinery/computer/message_monitor origin_tech = "programming=2" + /obj/item/circuitboard/camera - name = "Circuit board (Camera Monitor)" + board_name = "Camera Monitor" build_path = /obj/machinery/computer/security origin_tech = "programming=2;combat=2" /obj/item/circuitboard/camera/telescreen - name = "Circuit board (Telescreen)" + board_name = "Telescreen" build_path = /obj/machinery/computer/security/telescreen + /obj/item/circuitboard/camera/telescreen/entertainment - name = "Circuit board (Entertainment Monitor)" + board_name = "Entertainment Monitor" build_path = /obj/machinery/computer/security/telescreen/entertainment + /obj/item/circuitboard/camera/wooden_tv - name = "Circuit board (Wooden TV)" + board_name = "Wooden TV" build_path = /obj/machinery/computer/security/wooden_tv + /obj/item/circuitboard/camera/mining - name = "Circuit board (Outpost Camera Monitor)" + board_name = "Outpost Camera Monitor" build_path = /obj/machinery/computer/security/mining + /obj/item/circuitboard/camera/engineering - name = "Circuit board (Engineering Camera Monitor)" + board_name = "Engineering Camera Monitor" build_path = /obj/machinery/computer/security/engineering - /obj/item/circuitboard/xenobiology - name = "Circuit board (Xenobiology Console)" + board_name = "Xenobiology Console" build_path = /obj/machinery/computer/camera_advanced/xenobio origin_tech = "programming=3;biotech=3" + /obj/item/circuitboard/aicore - name = "Circuit board (AI Core)" + board_name = "AI Core" origin_tech = "programming=3" board_type = "other" + /obj/item/circuitboard/aiupload - name = "Circuit board (AI Upload)" + board_name = "AI Upload" build_path = /obj/machinery/computer/aiupload origin_tech = "programming=4;engineering=4" + /obj/item/circuitboard/borgupload - name = "Circuit board (Cyborg Upload)" + board_name = "Cyborg Upload" build_path = /obj/machinery/computer/borgupload origin_tech = "programming=4;engineering=4" + /obj/item/circuitboard/med_data - name = "Circuit board (Medical Records)" + board_name = "Medical Records" build_path = /obj/machinery/computer/med_data origin_tech = "programming=2;biotech=2" + /obj/item/circuitboard/pandemic - name = "circuit board (PanD.E.M.I.C. 2200)" + board_name = "PanD.E.M.I.C. 2200" build_path = /obj/machinery/computer/pandemic origin_tech = "programming=2;biotech=2" + /obj/item/circuitboard/scan_consolenew - name = "Circuit board (DNA Machine)" + board_name = "DNA Machine" build_path = /obj/machinery/computer/scan_consolenew origin_tech = "programming=2;biotech=2" + /obj/item/circuitboard/communications - name = "Circuit board (Communications Console)" + board_name = "Communications Console" build_path = /obj/machinery/computer/communications origin_tech = "programming=3;magnets=3" + /obj/item/circuitboard/card - name = "Circuit board (ID Computer)" + board_name = "ID Computer" build_path = /obj/machinery/computer/card origin_tech = "programming=3" + /obj/item/circuitboard/card/minor - name = "Circuit board (Dept ID Computer)" + board_name = "Dept ID Computer" build_path = /obj/machinery/computer/card/minor var/target_dept = TARGET_DEPT_GENERIC + /obj/item/circuitboard/card/minor/hos - name = "Circuit board (Sec ID Computer)" + board_name = "Sec ID Computer" build_path = /obj/machinery/computer/card/minor/hos target_dept = TARGET_DEPT_SEC + /obj/item/circuitboard/card/minor/cmo - name = "Circuit board (Medical ID Computer)" + board_name = "Medical ID Computer" build_path = /obj/machinery/computer/card/minor/cmo target_dept = TARGET_DEPT_MED + /obj/item/circuitboard/card/minor/rd - name = "Circuit board (Science ID Computer)" + board_name = "Science ID Computer" build_path = /obj/machinery/computer/card/minor/rd target_dept = TARGET_DEPT_SCI + /obj/item/circuitboard/card/minor/ce - name = "Circuit board (Engineering ID Computer)" + board_name = "Engineering ID Computer" build_path = /obj/machinery/computer/card/minor/ce target_dept = TARGET_DEPT_ENG + /obj/item/circuitboard/card/centcom - name = "Circuit board (CentComm ID Computer)" + board_name = "CentComm ID Computer" build_path = /obj/machinery/computer/card/centcom + /obj/item/circuitboard/teleporter - name = "Circuit board (Teleporter Console)" + board_name = "Teleporter Console" build_path = /obj/machinery/computer/teleporter origin_tech = "programming=3;bluespace=3;plasmatech=3" + /obj/item/circuitboard/secure_data - name = "Circuit board (Security Records)" + board_name = "Security Records" build_path = /obj/machinery/computer/secure_data origin_tech = "programming=2;combat=2" + /obj/item/circuitboard/stationalert_engineering - name = "Circuit Board (Station Alert Console (Engineering))" + board_name = "Station Alert Console - Engineering" build_path = /obj/machinery/computer/station_alert + /obj/item/circuitboard/stationalert - name = "Circuit Board (Station Alert Console)" + board_name = "Station Alert Console" build_path = /obj/machinery/computer/station_alert + /obj/item/circuitboard/atmos_alert - name = "Circuit Board (Atmospheric Alert Computer)" + board_name = "Atmospheric Alert Computer" build_path = /obj/machinery/computer/atmos_alert + /obj/item/circuitboard/atmoscontrol - name = "Circuit Board (Central Atmospherics Computer)" + board_name = "Central Atmospherics Computer" build_path = /obj/machinery/computer/atmoscontrol + /obj/item/circuitboard/air_management - name = "Circuit board (Atmospheric Monitor)" + board_name = "Atmospheric Monitor" build_path = /obj/machinery/computer/general_air_control + /obj/item/circuitboard/injector_control - name = "Circuit board (Injector Control)" + board_name = "Injector Control" build_path = /obj/machinery/computer/general_air_control/fuel_injection + /obj/item/circuitboard/pod - name = "Circuit board (Massdriver Control)" + board_name = "Massdriver Control" build_path = /obj/machinery/computer/pod + /obj/item/circuitboard/pod/deathsquad - name = "Circuit board (Deathsquad Massdriver control)" + board_name = "Deathsquad Massdriver Control" build_path = /obj/machinery/computer/pod/deathsquad + /obj/item/circuitboard/robotics - name = "Circuit board (Robotics Control Console)" + board_name = "Robotics Control Console" build_path = /obj/machinery/computer/robotics origin_tech = "programming=3" + /obj/item/circuitboard/drone_control - name = "Circuit board (Drone Control)" + board_name = "Drone Control" build_path = /obj/machinery/computer/drone_control origin_tech = "programming=3" + /obj/item/circuitboard/cloning - name = "Circuit board (Cloning Machine Console)" + board_name = "Cloning Machine Console" build_path = /obj/machinery/computer/cloning origin_tech = "programming=2;biotech=2" + /obj/item/circuitboard/arcade/battle - name = "circuit board (Arcade Battle)" + board_name = "Arcade Battle" build_path = /obj/machinery/computer/arcade/battle origin_tech = "programming=1" + /obj/item/circuitboard/arcade/orion_trail - name = "circuit board (Orion Trail)" + board_name = "Orion Trail" build_path = /obj/machinery/computer/arcade/orion_trail origin_tech = "programming=1" + /obj/item/circuitboard/solar_control - name = "Circuit board (Solar Control)" + board_name = "Solar Control" build_path = /obj/machinery/power/solar_control origin_tech = "programming=2;powerstorage=2" + /obj/item/circuitboard/powermonitor - name = "Circuit board (Power Monitor)" + board_name = "Power Monitor" build_path = /obj/machinery/computer/monitor origin_tech = "programming=2;powerstorage=2" + /obj/item/circuitboard/powermonitor/secret - name = "Circuit board (Outdated Power Monitor)" + board_name = "Outdated Power Monitor" build_path = /obj/machinery/computer/monitor/secret origin_tech = "programming=2;powerstorage=2" + /obj/item/circuitboard/olddoor - name = "Circuit board (DoorMex)" + board_name = "DoorMex" build_path = /obj/machinery/computer/pod/old + /obj/item/circuitboard/syndicatedoor - name = "Circuit board (ProComp Executive)" + board_name = "ProComp Executive" build_path = /obj/machinery/computer/pod/old/syndicate + /obj/item/circuitboard/swfdoor - name = "Circuit board (Magix)" + board_name = "Magix" build_path = /obj/machinery/computer/pod/old/swf + /obj/item/circuitboard/prisoner - name = "Circuit board (Prisoner Management)" + board_name = "Prisoner Management" build_path = /obj/machinery/computer/prisoner + /obj/item/circuitboard/brigcells - name = "Circuit board (Brig Cell Control)" + board_name = "Brig Cell Control" build_path = /obj/machinery/computer/brigcells + /obj/item/circuitboard/sm_monitor - name = "Circuit board (Supermatter Monitoring Console)" + board_name = "Supermatter Monitoring Console" build_path = /obj/machinery/computer/sm_monitor origin_tech = "programming=2;powerstorage=2" -// RD console circuits, so that {de,re}constructing one of the special consoles doesn't ruin everything forever +// RD console circuits, so that de/reconstructing one of the special consoles doesn't ruin everything forever /obj/item/circuitboard/rdconsole - name = "Circuit Board (RD Console)" + board_name = "RD Console" desc = "Swipe a Scientist level ID or higher to reconfigure." build_path = /obj/machinery/computer/rdconsole/core req_access = list(ACCESS_TOX) // This is for adjusting the type of computer we're building - in case something messes up the pre-existing robotics or mechanics consoles - var/access_types = list("R&D Core", "Robotics", "E.X.P.E.R.I-MENTOR", "Mechanics", "Public") - id = 1 + var/list/access_types = list("R&D Core", "Robotics", "E.X.P.E.R.I-MENTOR", "Mechanics", "Public") + /obj/item/circuitboard/rdconsole/robotics - name = "Circuit Board (RD Console - Robotics)" + board_name = "RD Console - Robotics" build_path = /obj/machinery/computer/rdconsole/robotics - id = 2 + /obj/item/circuitboard/rdconsole/experiment - name = "Circuit Board (RD Console - E.X.P.E.R.I-MENTOR)" + board_name = "RD Console - E.X.P.E.R.I-MENTOR" build_path = /obj/machinery/computer/rdconsole/experiment - id = 3 + /obj/item/circuitboard/rdconsole/mechanics - name = "Circuit Board (RD Console - Mechanics)" + board_name = "RD Console - Mechanics" build_path = /obj/machinery/computer/rdconsole/mechanics - id = 4 + /obj/item/circuitboard/rdconsole/public - name = "Circuit Board (RD Console - Public)" + board_name = "RD Console - Public" build_path = /obj/machinery/computer/rdconsole/public - id = 5 /obj/item/circuitboard/mecha_control - name = "Circuit Board (Exosuit Control Console)" + board_name = "Exosuit Control Console" build_path = /obj/machinery/computer/mecha + /obj/item/circuitboard/pod_locater - name = "Circuit Board (Pod Location Console)" + board_name = "Pod Location Console" build_path = /obj/machinery/computer/podtracker + /obj/item/circuitboard/rdservercontrol - name = "Circuit Board (RD Server Control)" + board_name = "RD Server Control" build_path = /obj/machinery/computer/rdservercontrol + /obj/item/circuitboard/crew - name = "Circuit board (Crew Monitoring Computer)" + board_name = "Crew Monitoring Computer" build_path = /obj/machinery/computer/crew origin_tech = "programming=2;biotech=2" + /obj/item/circuitboard/mech_bay_power_console - name = "Circuit board (Mech Bay Power Control Console)" + board_name = "Mech Bay Power Control Console" build_path = /obj/machinery/computer/mech_bay_power_console origin_tech = "programming=3;powerstorage=3" + /obj/item/circuitboard/ordercomp - name = "Circuit board (Supply Ordering Console)" + board_name = "Supply Ordering Console" build_path = /obj/machinery/computer/supplycomp/public origin_tech = "programming=3" + /obj/item/circuitboard/supplycomp - name = "Circuit board (Supply Shuttle Console)" + board_name = "Supply Shuttle Console" build_path = /obj/machinery/computer/supplycomp origin_tech = "programming=3" var/contraband_enabled = 0 /obj/item/circuitboard/operating - name = "Circuit board (Operating Computer)" + board_name = "Operating Computer" build_path = /obj/machinery/computer/operating origin_tech = "programming=2;biotech=3" /obj/item/circuitboard/shuttle - name = "circuit board (Shuttle)" + board_name = "Shuttle" build_path = /obj/machinery/computer/shuttle var/shuttleId var/possible_destinations = "" /obj/item/circuitboard/labor_shuttle - name = "circuit Board (Labor Shuttle)" + board_name = "Labor Shuttle" build_path = /obj/machinery/computer/shuttle/labor + /obj/item/circuitboard/labor_shuttle/one_way - name = "circuit Board (Prisoner Shuttle Console)" + board_name = "Prisoner Shuttle Console" build_path = /obj/machinery/computer/shuttle/labor/one_way + /obj/item/circuitboard/ferry - name = "circuit Board (Transport Ferry)" + board_name = "Transport Ferry" build_path = /obj/machinery/computer/shuttle/ferry + /obj/item/circuitboard/ferry/request - name = "circuit Board (Transport Ferry Console)" + board_name = "Transport Ferry Console" build_path = /obj/machinery/computer/shuttle/ferry/request + /obj/item/circuitboard/mining_shuttle - name = "circuit Board (Mining Shuttle)" + board_name = "Mining Shuttle" build_path = /obj/machinery/computer/shuttle/mining + /obj/item/circuitboard/white_ship - name = "circuit Board (White Ship)" + board_name = "White Ship" build_path = /obj/machinery/computer/shuttle/white_ship + /obj/item/circuitboard/shuttle/syndicate - name = "circuit board (Syndicate Shuttle)" + board_name = "Syndicate Shuttle" build_path = /obj/machinery/computer/shuttle/syndicate + /obj/item/circuitboard/shuttle/syndicate/recall - name = "circuit board (Syndicate Shuttle Recall Terminal)" + board_name = "Syndicate Shuttle Recall Terminal" build_path = /obj/machinery/computer/shuttle/syndicate/recall + /obj/item/circuitboard/shuttle/syndicate/drop_pod - name = "circuit board (Syndicate Drop Pod)" + board_name = "Syndicate Drop Pod" build_path = /obj/machinery/computer/shuttle/syndicate/drop_pod + /obj/item/circuitboard/shuttle/golem_ship - name = "circuit Board (Golem Ship)" + board_name = "Golem Ship" build_path = /obj/machinery/computer/shuttle/golem_ship /obj/item/circuitboard/HolodeckControl - name = "Circuit board (Holodeck Control)" + board_name = "Holodeck Control" build_path = /obj/machinery/computer/HolodeckControl origin_tech = "programming=4" + /obj/item/circuitboard/aifixer - name = "Circuit board (AI Integrity Restorer)" + board_name = "AI Integrity Restorer" build_path = /obj/machinery/computer/aifixer origin_tech = "programming=2;biotech=2" + /obj/item/circuitboard/area_atmos - name = "Circuit board (Area Air Control)" + board_name = "Area Air Control" build_path = /obj/machinery/computer/area_atmos origin_tech = "programming=2" + /obj/item/circuitboard/telesci_console - name = "Circuit board (Telepad Control Console)" + board_name = "Telepad Control Console" build_path = /obj/machinery/computer/telescience origin_tech = "programming=3;bluespace=3;plasmatech=4" /obj/item/circuitboard/large_tank_control - name = "Circuit board (Atmospheric Tank Control)" + board_name = "Atmospheric Tank Control" build_path = /obj/machinery/computer/general_air_control/large_tank_control origin_tech = "programming=2;engineering=3;materials=2" /obj/item/circuitboard/turbine_computer - name = "circuit board (Turbine Computer)" + board_name = "Turbine Computer" build_path = /obj/machinery/computer/turbine_computer origin_tech = "programming=4;engineering=4;powerstorage=4" +/obj/item/circuitboard/supplycomp/multitool_act(mob/living/user, obj/item/I) + . = TRUE + var/catastasis // Why is it called this + var/opposite_catastasis + if(contraband_enabled) + catastasis = "BROAD" + opposite_catastasis = "STANDARD" + else + catastasis = "STANDARD" + opposite_catastasis = "BROAD" -/obj/item/circuitboard/supplycomp/attackby(obj/item/I as obj, mob/user as mob, params) - if(istype(I,/obj/item/multitool)) - var/catastasis = contraband_enabled - var/opposite_catastasis - if(catastasis) - opposite_catastasis = "STANDARD" - catastasis = "BROAD" - else - opposite_catastasis = "BROAD" - catastasis = "STANDARD" - - switch( alert("Current receiver spectrum is set to: [catastasis]","Multitool-Circuitboard interface","Switch to [opposite_catastasis]","Cancel") ) - //switch( alert("Current receiver spectrum is set to: " {(contraband_enabled) ? ("BROAD") : ("STANDARD")} , "Multitool-Circuitboard interface" , "Switch to " {(contraband_enabled) ? ("STANDARD") : ("BROAD")}, "Cancel") ) - if("Switch to STANDARD","Switch to BROAD") - contraband_enabled = !contraband_enabled - - if("Cancel") - return - else - to_chat(user, "DERP! BUG! Report this (And what you were doing to cause it) to Agouri") + var/choice = alert("Current receiver spectrum is set to: [catastasis]", "Multitool-Circuitboard interface", "Switch to [opposite_catastasis]", "Cancel") + if(choice == "Cancel") return - return ..() -/obj/item/circuitboard/rdconsole/attackby(obj/item/I as obj, mob/user as mob, params) - if(istype(I,/obj/item/card/id)||istype(I, /obj/item/pda)) + contraband_enabled = !contraband_enabled + playsound(src, 'sound/effects/pop.ogg', 50) + +/obj/item/circuitboard/rdconsole/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/card/id) || istype(I, /obj/item/pda)) if(allowed(user)) user.visible_message("[user] waves [user.p_their()] ID past [src]'s access protocol scanner.", "You swipe your ID past [src]'s access protocol scanner.") var/console_choice = input(user, "What do you want to configure the access to?", "Access Modification", "R&D Core") as null|anything in access_types - if(console_choice == null) + if(!console_choice) return switch(console_choice) if("R&D Core") - name = "Circuit Board (RD Console)" + board_name = "RD Console" build_path = /obj/machinery/computer/rdconsole/core - id = 1 if("Robotics") - name = "Circuit Board (RD Console - Robotics)" + board_name = "RD Console - Robotics" build_path = /obj/machinery/computer/rdconsole/robotics - id = 2 if("E.X.P.E.R.I-MENTOR") - name = "Circuit Board (RD Console - E.X.P.E.R.I-MENTOR)" + board_name = "RD Console - E.X.P.E.R.I-MENTOR" build_path = /obj/machinery/computer/rdconsole/experiment - id = 3 if("Mechanics") - name = "Circuit Board (RD Console - Mechanics)" + board_name = "RD Console - Mechanics" build_path = /obj/machinery/computer/rdconsole/mechanics - id = 4 if("Public") - name = "Circuit Board (RD Console - Public)" + board_name = "RD Console - Public" build_path = /obj/machinery/computer/rdconsole/public - id = 5 + format_board_name() to_chat(user, "Access protocols set to [console_choice].") else to_chat(user, "Access Denied") return return ..() -/obj/structure/computerframe/attackby(obj/item/P as obj, mob/user as mob, params) - switch(state) - if(0) - if(istype(P, /obj/item/wrench)) - playsound(loc, P.usesound, 50, 1) - if(do_after(user, 20 * P.toolspeed, target = src)) - to_chat(user, "You wrench the frame into place.") - anchored = 1 - state = 1 - return - if(1) - if(istype(P, /obj/item/wrench)) - playsound(loc, P.usesound, 50, 1) - if(do_after(user, 20 * P.toolspeed, target = src)) - to_chat(user, "You unfasten the frame.") - anchored = 0 - state = 0 - return - if(istype(P, /obj/item/circuitboard) && !circuit) - var/obj/item/circuitboard/B = P - if(B.board_type == "computer") - playsound(loc, B.usesound, 50, 1) - to_chat(user, "You place the circuit board inside the frame.") - icon_state = "1" - circuit = P - user.drop_item() - P.loc = src - else - to_chat(user, "This frame does not accept circuit boards of this type!") - return - if(istype(P, /obj/item/screwdriver) && circuit) - playsound(loc, P.usesound, 50, 1) - to_chat(user, "You screw the circuit board into place.") - state = 2 - icon_state = "2" - return - if(istype(P, /obj/item/crowbar) && circuit) - playsound(loc, P.usesound, 50, 1) - to_chat(user, "You remove the circuit board.") - state = 1 - icon_state = "0" - circuit.loc = loc - circuit = null - return - if(2) - if(istype(P, /obj/item/screwdriver) && circuit) - playsound(loc, P.usesound, 50, 1) - to_chat(user, "You unfasten the circuit board.") - state = 1 - icon_state = "1" - return - if(istype(P, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/C = P - if(C.get_amount() >= 5) - playsound(loc, C.usesound, 50, 1) - to_chat(user, "You start to add cables to the frame.") - if(do_after(user, 20 * C.toolspeed, target = src)) - if(state == 2 && C.get_amount() >= 5 && C.use(5)) - to_chat(user, "You add cables to the frame.") - state = 3 - icon_state = "3" - else - to_chat(user, "At some point during construction you lost some cable. Make sure you have five lengths before trying again.") - return - else - to_chat(user, "You need five lengths of cable to wire the frame.") - return - if(3) - if(istype(P, /obj/item/wirecutters)) - playsound(loc, P.usesound, 50, 1) - to_chat(user, "You remove the cables.") - state = 2 - icon_state = "2" - var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc ) - A.amount = 5 - return - if(istype(P, /obj/item/stack/sheet/glass)) - var/obj/item/stack/sheet/glass/G = P - if(G.get_amount() >= 2) - playsound(loc, G.usesound, 50, 1) - to_chat(user, "You start to add the glass panel to the frame.") - if(do_after(user, 20 * G.toolspeed, target = src)) - if(state == 3 && G.get_amount() >= 2 && G.use(2)) - to_chat(user, "You put in the glass panel.") - state = 4 - icon_state = "4" - else - to_chat(user, "At some point during construction you lost some glass. Make sure you have two sheets before trying again.") - return - else - to_chat(user, "You need two sheets of glass for this.") - return - if(4) - if(istype(P, /obj/item/crowbar)) - playsound(loc, P.usesound, 50, 1) - to_chat(user, "You remove the glass panel.") - state = 3 - icon_state = "3" - new /obj/item/stack/sheet/glass(loc, 2) - return - if(istype(P, /obj/item/screwdriver)) - playsound(loc, P.usesound, 50, 1) - to_chat(user, "You connect the monitor.") - var/B = new circuit.build_path (loc) - if(circuit.powernet) B:powernet = circuit.powernet - if(circuit.id) B:id = circuit.id - if(circuit.records) B:records = circuit.records - if(circuit.frequency) B:frequency = circuit.frequency - if(istype(circuit,/obj/item/circuitboard/supplycomp)) - var/obj/machinery/computer/supplycomp/SC = B - var/obj/item/circuitboard/supplycomp/C = circuit - SC.can_order_contraband = C.contraband_enabled - qdel(src) - return - if(user.a_intent == INTENT_HARM) - return ..() +// Construction | Deconstruction +#define STATE_EMPTY 1 // Add a circuitboard | Weld to destroy +#define STATE_CIRCUIT 2 // Screwdriver the cover closed | Crowbar the circuit +#define STATE_NOWIRES 3 // Add wires | Screwdriver the cover open +#define STATE_WIRES 4 // Add glass | Remove wires +#define STATE_GLASS 5 // Screwdriver to complete | Crowbar glass out +/obj/structure/computerframe + name = "computer frame" + icon = 'icons/obj/stock_parts.dmi' + icon_state = "comp_frame_1" + density = TRUE + anchored = TRUE + max_integrity = 100 + var/state = STATE_EMPTY + var/obj/item/circuitboard/circuit = null + +/obj/structure/computerframe/deconstruct(disassembled = TRUE) + if(!(flags & NODECONSTRUCT)) + drop_computer_parts() + return ..() // will qdel the frame + +/obj/structure/computerframe/obj_break(damage_flag) + deconstruct() + +/obj/structure/computerframe/proc/drop_computer_parts() + var/location = drop_location() + new /obj/item/stack/sheet/metal(location, 5) + if(circuit) + circuit.forceMove(location) + circuit = null + if(state >= STATE_WIRES) + var/obj/item/stack/cable_coil/C = new(location) + C.amount = 5 + if(state == STATE_GLASS) + new /obj/item/stack/sheet/glass(location, 2) + +/obj/structure/computerframe/update_icon() + . = ..() + icon_state = "comp_frame_[state]" /obj/structure/computerframe/welder_act(mob/user, obj/item/I) - if(state) + if(state != STATE_EMPTY) return . = TRUE if(!I.tool_use_check(user, 0)) return WELDER_ATTEMPT_SLICING_MESSAGE - if(I.use_tool(src, user, 50, volume = I.tool_volume) && !state) - to_chat(user, "You deconstruct [src].") + if(I.use_tool(src, user, 50, volume = I.tool_volume)) + WELDER_SLICING_SUCCESS_MESSAGE deconstruct(TRUE) + +/obj/structure/computerframe/wrench_act(mob/living/user, obj/item/I) + . = TRUE + if(!I.use_tool(src, user, 2 SECONDS, volume = I.tool_volume)) + return + + if(anchored) + to_chat(user, "You unfasten the frame.") + anchored = FALSE + else + to_chat(user, "You wrench the frame into place.") + anchored = TRUE + +/obj/structure/computerframe/crowbar_act(mob/living/user, obj/item/I) + . = TRUE + if(!I.use_tool(src, user)) + return + + if(state == STATE_CIRCUIT) + to_chat(user, "You remove the circuit board.") + state = STATE_EMPTY + name = initial(name) + circuit.forceMove(drop_location()) + circuit = null + else if(state == STATE_GLASS) + to_chat(user, "You remove the glass panel.") + state = STATE_WIRES + new /obj/item/stack/sheet/glass(drop_location(), 2) + else + return + + I.play_tool_sound(src) + update_icon() + +/obj/structure/computerframe/screwdriver_act(mob/living/user, obj/item/I) + . = TRUE + if(!I.use_tool(src, user)) + return + + switch(state) + if(STATE_CIRCUIT) + to_chat(user, "You screw the circuit board into place.") + state = STATE_NOWIRES + I.play_tool_sound(src) + update_icon() + if(STATE_NOWIRES) + to_chat(user, "You unfasten the circuit board.") + state = STATE_CIRCUIT + I.play_tool_sound(src) + update_icon() + if(STATE_GLASS) + to_chat(user, "You connect the monitor.") + I.play_tool_sound(src) + var/B = new circuit.build_path(loc) + if(istype(circuit, /obj/item/circuitboard/supplycomp)) + var/obj/machinery/computer/supplycomp/SC = B + var/obj/item/circuitboard/supplycomp/C = circuit + SC.can_order_contraband = C.contraband_enabled + qdel(src) + +/obj/structure/computerframe/wirecutter_act(mob/living/user, obj/item/I) + . = TRUE + if(!I.use_tool(src, user)) + return + + if(state == STATE_WIRES) + to_chat(user, "You remove the cables.") + var/obj/item/stack/cable_coil/C = new(drop_location()) + C.amount = 5 + state = STATE_NOWIRES + I.play_tool_sound(src) + update_icon() + +/obj/structure/computerframe/attackby(obj/item/I, mob/user, params) + switch(state) + if(STATE_EMPTY) + if(!istype(I, /obj/item/circuitboard)) + return ..() + + var/obj/item/circuitboard/B = I + if(B.board_type != "computer") + to_chat(user, "[src] does not accept circuit boards of this type!") + return + + B.play_tool_sound(src) + to_chat(user, "You place [B] inside [src].") + name += " ([B.board_name])" + state = STATE_CIRCUIT + user.drop_item() + B.forceMove(src) + circuit = B + update_icon() + return + + if(STATE_NOWIRES) + if(!istype(I, /obj/item/stack/cable_coil)) + return ..() + + var/obj/item/stack/cable_coil/C = I + if(C.get_amount() < 5) + to_chat(user, "You need five lengths of cable to wire the frame.") + return + + C.play_tool_sound(src) + to_chat(user, "You start to add cables to the frame.") + if(!do_after(user, 2 SECONDS * C.toolspeed, target = src)) + return + if(C.get_amount() < 5 || !C.use(5)) + to_chat(user, "At some point during construction you lost some cable. Make sure you have five lengths before trying again.") + return + + to_chat(user, "You add cables to the frame.") + state = STATE_WIRES + update_icon() + return + + if(STATE_WIRES) + if(!istype(I, /obj/item/stack/sheet/glass)) + return ..() + + var/obj/item/stack/sheet/glass/G = I + if(G.get_amount() < 2) + to_chat(user, "You need two sheets of glass for this.") + return + + G.play_tool_sound(src) + to_chat(user, "You start to add the glass panel to the frame.") + if(!do_after(user, 2 SECONDS * G.toolspeed, target = src)) + return + if(G.get_amount() < 2 || !G.use(2)) + to_chat(user, "At some point during construction you lost some glass. Make sure you have two sheets before trying again.") + return + + to_chat(user, "You put in the glass panel.") + state = STATE_GLASS + update_icon() + return + + return ..() + +#undef STATE_EMPTY +#undef STATE_CIRCUIT +#undef STATE_NOWIRES +#undef STATE_WIRES +#undef STATE_GLASS diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index f18d378fff4..1c394d261f6 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -130,6 +130,7 @@ if(circuit) //no circuit, no computer frame var/obj/structure/computerframe/A = new /obj/structure/computerframe(loc) var/obj/item/circuitboard/M = new circuit(A) + A.name += " ([M.board_name])" A.setDir(dir) A.circuit = M A.anchored = TRUE @@ -140,13 +141,12 @@ playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, TRUE) new /obj/item/shard(drop_location()) new /obj/item/shard(drop_location()) - A.state = 3 - A.icon_state = "3" + A.state = 4 else if(user) to_chat(user, "You disconnect the monitor.") - A.state = 4 - A.icon_state = "4" + A.state = 5 + A.update_icon() for(var/obj/C in src) C.forceMove(loc) qdel(src) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index a4879448aa0..0705ccd150d 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -104,6 +104,7 @@ circuit = P user.drop_item() P.loc = src + name += " ([B.board_name])" icon_state = "box_2" state = 3 components = list() @@ -133,6 +134,7 @@ to_chat(user, "You remove the circuit board and other components.") for(var/obj/item/I in components) I.loc = src.loc + name = initial(name) desc = initial(desc) req_components = null components = null @@ -223,61 +225,58 @@ Note: Once everything is added to the public areas, will add MAT_METAL and MAT_G to destroy them and players will be able to make replacements. */ /obj/item/circuitboard/vendor - name = "circuit board (Booze-O-Mat Vendor)" + board_name = "Booze-O-Mat Vendor" board_type = "machine" origin_tech = "programming=1" build_path = /obj/machinery/vending/boozeomat req_components = list(/obj/item/vending_refill/boozeomat = 1) var/static/list/vending_names_paths = list( - /obj/machinery/vending/boozeomat = "Booze-O-Mat", - /obj/machinery/vending/coffee = "Solar's Best Hot Drinks", - /obj/machinery/vending/snack = "Getmore Chocolate Corp", - /obj/machinery/vending/chinese = "Mr. Chang", - /obj/machinery/vending/cola = "Robust Softdrinks", - /obj/machinery/vending/cigarette = "ShadyCigs Deluxe", - /obj/machinery/vending/hatdispenser = "Hatlord 9000", - /obj/machinery/vending/suitdispenser = "Suitlord 9000", - /obj/machinery/vending/shoedispenser = "Shoelord 9000", - /obj/machinery/vending/autodrobe = "AutoDrobe", - /obj/machinery/vending/clothing = "ClothesMate", - /obj/machinery/vending/medical = "NanoMed Plus", - /obj/machinery/vending/wallmed = "NanoMed", - /obj/machinery/vending/assist = "Vendomat", - /obj/machinery/vending/engivend = "Engi-Vend", - /obj/machinery/vending/hydronutrients = "NutriMax", - /obj/machinery/vending/hydroseeds = "MegaSeed Servitor", - /obj/machinery/vending/sustenance = "Sustenance Vendor", - /obj/machinery/vending/dinnerware = "Plasteel Chef's Dinnerware Vendor", - /obj/machinery/vending/cart = "PTech", - /obj/machinery/vending/robotics = "Robotech Deluxe", - /obj/machinery/vending/engineering = "Robco Tool Maker", - /obj/machinery/vending/sovietsoda = "BODA", - /obj/machinery/vending/security = "SecTech", - /obj/machinery/vending/crittercare = "CritterCare") + "Booze-O-Mat" = /obj/machinery/vending/boozeomat, + "Solar's Best Hot Drinks" = /obj/machinery/vending/coffee, + "Getmore Chocolate Corp" = /obj/machinery/vending/snack, + "Mr. Chang" = /obj/machinery/vending/chinese, + "Robust Softdrinks" = /obj/machinery/vending/cola, + "ShadyCigs Deluxe" = /obj/machinery/vending/cigarette, + "Hatlord 9000" = /obj/machinery/vending/hatdispenser, + "Suitlord 9000" = /obj/machinery/vending/suitdispenser, + "Shoelord 9000" = /obj/machinery/vending/shoedispenser, + "AutoDrobe" = /obj/machinery/vending/autodrobe, + "ClothesMate" = /obj/machinery/vending/clothing, + "NanoMed Plus" = /obj/machinery/vending/medical, + "NanoMed" = /obj/machinery/vending/wallmed, + "Vendomat" = /obj/machinery/vending/assist, + "YouTool" = /obj/machinery/vending/tool, + "Engi-Vend" = /obj/machinery/vending/engivend, + "NutriMax" = /obj/machinery/vending/hydronutrients, + "MegaSeed Servitor" = /obj/machinery/vending/hydroseeds, + "Sustenance Vendor" = /obj/machinery/vending/sustenance, + "Plasteel Chef's Dinnerware Vendor" = /obj/machinery/vending/dinnerware, + "PTech" = /obj/machinery/vending/cart, + "Robotech Deluxe" = /obj/machinery/vending/robotics, + "Robco Tool Maker" = /obj/machinery/vending/engineering, + "BODA" = /obj/machinery/vending/sovietsoda, + "SecTech" = /obj/machinery/vending/security, + "CritterCare" = /obj/machinery/vending/crittercare) /obj/item/circuitboard/vendor/screwdriver_act(mob/user, obj/item/I) . = TRUE if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return - var/static/list/display_vending_names_paths - if(!display_vending_names_paths) - display_vending_names_paths = list() - for(var/path in vending_names_paths) - display_vending_names_paths[vending_names_paths[path]] = path - var/choice = input(user, "Choose a new brand","Select an Item") as null|anything in display_vending_names_paths - if(loc != user) - to_chat(user, "You need to keep [src] in your hands while doing that!") + var/choice = input(user, "Choose a new brand", "Select an Item") as null|anything in vending_names_paths + if(!choice) return - set_type(display_vending_names_paths[choice]) + set_type(choice) -/obj/item/circuitboard/vendor/proc/set_type(obj/machinery/vending/typepath) +/obj/item/circuitboard/vendor/proc/set_type(type) + var/obj/machinery/vending/typepath = vending_names_paths[type] build_path = typepath - name = "circuit board ([vending_names_paths[build_path]] Vendor)" + board_name = "[type] Vendor" + format_board_name() req_components = list(initial(typepath.refill_canister) = 1) /obj/item/circuitboard/smes - name = "circuit board (SMES)" + board_name = "SMES" build_path = /obj/machinery/power/smes board_type = "machine" origin_tech = "programming=3;powerstorage=3;engineering=3" @@ -287,7 +286,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/capacitor = 1) /obj/item/circuitboard/emitter - name = "circuit board (Emitter)" + board_name = "Emitter" build_path = /obj/machinery/power/emitter board_type = "machine" origin_tech = "programming=3;powerstorage=4;engineering=4" @@ -296,7 +295,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/manipulator = 1) /obj/item/circuitboard/power_compressor - name = "circuit board (Power Compressor)" + board_name = "Power Compressor" build_path = /obj/machinery/power/compressor board_type = "machine" origin_tech = "programming=4;powerstorage=4;engineering=4" @@ -305,7 +304,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/manipulator = 6) /obj/item/circuitboard/power_turbine - name = "circuit board (Power Turbine)" + board_name = "Power Turbine" build_path = /obj/machinery/power/turbine board_type = "machine" origin_tech = "programming=4;powerstorage=4;engineering=4" @@ -314,7 +313,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/capacitor = 6) /obj/item/circuitboard/thermomachine - name = "Thermomachine (Machine Board)" + board_name = "Thermomachine" build_path = /obj/machinery/atmospherics/unary/thermomachine board_type = "machine" origin_tech = "programming=3;plasmatech=3" @@ -325,14 +324,14 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/recharger - name = "circuit board (Recharger)" + board_name = "Recharger" build_path = /obj/machinery/recharger board_type = "machine" origin_tech = "powerstorage=3;materials=2" req_components = list(/obj/item/stock_parts/capacitor = 1) /obj/item/circuitboard/snow_machine - name = "circuit board (snow machine)" + board_name = "Snow Machine" build_path = /obj/machinery/snow_machine board_type = "machine" origin_tech = "programming=2;materials=2" @@ -341,7 +340,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/micro_laser = 1) /obj/item/circuitboard/biogenerator - name = "circuit board (Biogenerator)" + board_name = "Biogenerator" build_path = /obj/machinery/biogenerator board_type = "machine" origin_tech = "programming=2;biotech=3;materials=3" @@ -352,7 +351,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/plantgenes - name = "Plant DNA Manipulator (Machine Board)" + board_name = "Plant DNA Manipulator" build_path = /obj/machinery/plantgenes board_type = "machine" origin_tech = "programming=3;biotech=3" @@ -365,7 +364,7 @@ to destroy them and players will be able to make replacements. /obj/item/circuitboard/plantgenes/vault /obj/item/circuitboard/seed_extractor - name = "circuit board (Seed Extractor)" + board_name = "Seed Extractor" build_path = /obj/machinery/seed_extractor board_type = "machine" origin_tech = "programming=1" @@ -374,7 +373,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/manipulator = 1) /obj/item/circuitboard/hydroponics - name = "circuit board (Hydroponics Tray)" + board_name = "Hydroponics Tray" build_path = /obj/machinery/hydroponics/constructable board_type = "machine" origin_tech = "programming=1;biotech=2" @@ -384,7 +383,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/microwave - name = "circuit board (Microwave)" + board_name = "Microwave" build_path = /obj/machinery/kitchen_machine/microwave board_type = "machine" origin_tech = "programming=2;magnets=2" @@ -394,7 +393,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/oven - name = "circuit board (Oven)" + board_name = "Oven" build_path = /obj/machinery/kitchen_machine/oven board_type = "machine" origin_tech = "programming=2;magnets=2" @@ -404,7 +403,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/grill - name = "circuit board (Grill)" + board_name = "Grill" build_path = /obj/machinery/kitchen_machine/grill board_type = "machine" origin_tech = "programming=2;magnets=2" @@ -414,7 +413,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/candy_maker - name = "circuit board (Candy Maker)" + board_name = "Candy Maker" build_path = /obj/machinery/kitchen_machine/candy_maker board_type = "machine" origin_tech = "programming=2;magnets=2" @@ -424,7 +423,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/deepfryer - name = "circuit board (Deep Fryer)" + board_name = "Deep Fryer" build_path = /obj/machinery/cooker/deepfryer board_type = "machine" origin_tech = "programming=1" @@ -433,7 +432,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/cable_coil = 5) /obj/item/circuitboard/gibber - name = "circuit board (Gibber)" + board_name = "Gibber" build_path = /obj/machinery/gibber board_type = "machine" origin_tech = "programming=2;engineering=2" @@ -442,7 +441,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/manipulator = 1) /obj/item/circuitboard/tesla_coil - name = "circuit board (Tesla Coil)" + board_name = "Tesla Coil" build_path = /obj/machinery/power/tesla_coil board_type = "machine" origin_tech = "programming=3;magnets=3;powerstorage=3" @@ -450,7 +449,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/capacitor = 1) /obj/item/circuitboard/grounding_rod - name = "circuit board (Grounding Rod)" + board_name = "Grounding Rod" build_path = /obj/machinery/power/grounding_rod board_type = "machine" origin_tech = "programming=3;powerstorage=3;magnets=3;plasmatech=2" @@ -458,7 +457,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/capacitor = 1) /obj/item/circuitboard/processor - name = "circuit board (Food processor)" + board_name = "Food Processor" build_path = /obj/machinery/processor board_type = "machine" origin_tech = "programming=1" @@ -467,7 +466,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/manipulator = 1) /obj/item/circuitboard/recycler - name = "circuit board (Recycler)" + board_name = "Recycler" build_path = /obj/machinery/recycler board_type = "machine" origin_tech = "programming=2;engineering=2" @@ -476,51 +475,49 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/manipulator = 1) /obj/item/circuitboard/smartfridge - name = "circuit board (Smartfridge)" + board_name = "Smartfridge" build_path = /obj/machinery/smartfridge board_type = "machine" origin_tech = "programming=1" req_components = list( /obj/item/stock_parts/matter_bin = 1) - var/list/fridge_names_paths = list( - "\improper SmartFridge" = /obj/machinery/smartfridge, - "\improper MegaSeed Servitor" = /obj/machinery/smartfridge/seeds, - "\improper Refrigerated Medicine Storage" = /obj/machinery/smartfridge/medbay, - "\improper Slime Extract Storage" = /obj/machinery/smartfridge/secure/extract, - "\improper Secure Refrigerated Medicine Storage" = /obj/machinery/smartfridge/secure/medbay, - "\improper Smart Chemical Storage" = /obj/machinery/smartfridge/secure/chemistry, - "smart virus storage" = /obj/machinery/smartfridge/secure/chemistry/virology, - "\improper Drink Showcase" = /obj/machinery/smartfridge/drinks, - "disk compartmentalizer" = /obj/machinery/smartfridge/disks - ) + var/static/list/fridge_names_paths = list( + "SmartFridge" = /obj/machinery/smartfridge, + "MegaSeed Servitor" = /obj/machinery/smartfridge/seeds, + "Refrigerated Medicine Storage" = /obj/machinery/smartfridge/medbay, + "Slime Extract Storage" = /obj/machinery/smartfridge/secure/extract, + "Secure Refrigerated Medicine Storage" = /obj/machinery/smartfridge/secure/medbay, + "Smart Chemical Storage" = /obj/machinery/smartfridge/secure/chemistry, + "Smart Virus Storage" = /obj/machinery/smartfridge/secure/chemistry/virology, + "Drink Showcase" = /obj/machinery/smartfridge/drinks, + "Disk Compartmentalizer" = /obj/machinery/smartfridge/disks) - -/obj/item/circuitboard/smartfridge/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/screwdriver)) - set_type(null, user) +/obj/item/circuitboard/smartfridge/screwdriver_act(mob/living/user, obj/item/I) + . = TRUE + if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return - return ..() + var/choice = input(user, "Circuit Setting", "What would you change the board setting to?") as null|anything in fridge_names_paths + if(!choice) + return + set_type(user, choice) -/obj/item/circuitboard/smartfridge/proc/set_type(typepath, mob/user) - var/new_name = "" - if(!typepath) - new_name = input("Circuit Setting", "What would you change the board setting to?") in fridge_names_paths - typepath = fridge_names_paths[new_name] +/obj/item/circuitboard/smartfridge/proc/set_type(mob/user, type) + if(!ispath(type)) + board_name = type + type = fridge_names_paths[type] else for(var/name in fridge_names_paths) - if(fridge_names_paths[name] == typepath) - new_name = name + if(fridge_names_paths[name] == type) + board_name = name break - build_path = typepath - name = new_name - if(findtextEx(new_name, "\improper")) - new_name = replacetext(new_name, "\improper", "") + build_path = type + format_board_name() if(user) - to_chat(user, "You set the board to [new_name].") + to_chat(user, "You set the board to [board_name].") /obj/item/circuitboard/monkey_recycler - name = "circuit board (Monkey Recycler)" + board_name = "Monkey Recycler" build_path = /obj/machinery/monkey_recycler board_type = "machine" origin_tech = "programming=1;biotech=2" @@ -529,7 +526,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/manipulator = 1) /obj/item/circuitboard/holopad - name = "circuit board (AI Holopad)" + board_name = "AI Holopad" build_path = /obj/machinery/hologram/holopad board_type = "machine" origin_tech = "programming=1" @@ -537,7 +534,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/capacitor = 1) /obj/item/circuitboard/chem_dispenser - name = "circuit board (Chem Dispenser)" + board_name = "Chem Dispenser" build_path = /obj/machinery/chem_dispenser board_type = "machine" origin_tech = "materials=4;programming=4;plasmatech=4;biotech=3" @@ -548,7 +545,7 @@ 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 (ChemMaster 3000)" + board_name = "ChemMaster 3000" build_path = /obj/machinery/chem_master board_type = "machine" origin_tech = "materials=3;programming=2;biotech=3" @@ -573,11 +570,11 @@ to destroy them and players will be able to make replacements. to_chat(user, "You change the circuit board setting to \"[new_name]\".") /obj/item/circuitboard/chem_master/condi_master - name = "circuit board (CondiMaster 3000)" + board_name = "CondiMaster 3000" build_path = /obj/machinery/chem_master/condimaster /obj/item/circuitboard/chem_heater - name = "circuit board (Chemical Heater)" + board_name = "Chemical Heater" build_path = /obj/machinery/chem_heater board_type = "machine" origin_tech = "programming=2;engineering=2;biotech=2" @@ -586,7 +583,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/reagentgrinder - name = "circuit board (All-In-One Grinder)" + board_name = "All-In-One Grinder" build_path = /obj/machinery/reagentgrinder/empty board_type = "machine" origin_tech = "materials=2;engineering=2;biotech=2" @@ -596,7 +593,7 @@ to destroy them and players will be able to make replacements. //Almost the same recipe as destructive analyzer to give people choices. /obj/item/circuitboard/experimentor - name = "circuit board (E.X.P.E.R.I-MENTOR)" + board_name = "E.X.P.E.R.I-MENTOR" build_path = /obj/machinery/r_n_d/experimentor board_type = "machine" origin_tech = "magnets=1;engineering=1;programming=1;biotech=1;bluespace=2" @@ -606,7 +603,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/micro_laser = 2) /obj/item/circuitboard/destructive_analyzer - name = "Circuit board (Destructive Analyzer)" + board_name = "Destructive Analyzer" build_path = /obj/machinery/r_n_d/destructive_analyzer board_type = "machine" origin_tech = "magnets=2;engineering=2;programming=2" @@ -616,7 +613,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/micro_laser = 1) /obj/item/circuitboard/autolathe - name = "Circuit board (Autolathe)" + board_name = "Autolathe" build_path = /obj/machinery/autolathe board_type = "machine" origin_tech = "engineering=2;programming=2" @@ -630,7 +627,7 @@ to destroy them and players will be able to make replacements. build_path = /obj/machinery/autolathe/syndicate /obj/item/circuitboard/protolathe - name = "Circuit board (Protolathe)" + board_name = "Protolathe" build_path = /obj/machinery/r_n_d/protolathe board_type = "machine" origin_tech = "engineering=2;programming=2" @@ -640,15 +637,15 @@ to destroy them and players will be able to make replacements. /obj/item/reagent_containers/glass/beaker = 2) /obj/item/circuitboard/chem_dispenser/soda - name = "Circuit board (Soda Machine)" + board_name = "Soda Machine" build_path = /obj/machinery/chem_dispenser/soda /obj/item/circuitboard/chem_dispenser/beer - name = "Circuit board (Beer Machine)" + board_name = "Beer Machine" build_path = /obj/machinery/chem_dispenser/beer /obj/item/circuitboard/circuit_imprinter - name = "Circuit board (Circuit Imprinter)" + board_name = "Circuit Imprinter" build_path = /obj/machinery/r_n_d/circuit_imprinter board_type = "machine" origin_tech = "engineering=2;programming=2" @@ -658,7 +655,7 @@ to destroy them and players will be able to make replacements. /obj/item/reagent_containers/glass/beaker = 2) /obj/item/circuitboard/pacman - name = "Circuit Board (PACMAN-type Generator)" + board_name = "PACMAN-type Generator" build_path = /obj/machinery/power/port_gen/pacman board_type = "machine" origin_tech = "programming=2;powerstorage=3;plasmatech=3;engineering=3" @@ -669,17 +666,17 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/capacitor = 1) /obj/item/circuitboard/pacman/super - name = "Circuit Board (SUPERPACMAN-type Generator)" + board_name = "SUPERPACMAN-type Generator" build_path = /obj/machinery/power/port_gen/pacman/super origin_tech = "programming=3;powerstorage=4;engineering=4" /obj/item/circuitboard/pacman/mrs - name = "Circuit Board (MRSPACMAN-type Generator)" + board_name = "MRSPACMAN-type Generator" build_path = /obj/machinery/power/port_gen/pacman/mrs origin_tech = "programming=3;powerstorage=4;engineering=4;plasmatech=4" /obj/item/circuitboard/rdserver - name = "Circuit Board (R&D Server)" + board_name = "R&D Server" build_path = /obj/machinery/r_n_d/server board_type = "machine" origin_tech = "programming=3" @@ -688,7 +685,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/scanning_module = 1) /obj/item/circuitboard/mechfab - name = "Circuit board (Exosuit Fabricator)" + board_name = "Exosuit Fabricator" build_path = /obj/machinery/mecha_part_fabricator board_type = "machine" origin_tech = "programming=2;engineering=2" @@ -699,7 +696,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/podfab - name = "Circuit board (Spacepod Fabricator)" + board_name = "Spacepod Fabricator" build_path = /obj/machinery/mecha_part_fabricator/spacepod board_type = "machine" origin_tech = "programming=2;engineering=2" @@ -711,7 +708,7 @@ to destroy them and players will be able to make replacements. /obj/item/circuitboard/clonepod - name = "Circuit board (Clone Pod)" + board_name = "Clone Pod" build_path = /obj/machinery/clonepod board_type = "machine" origin_tech = "programming=2;biotech=2" @@ -722,7 +719,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/clonescanner - name = "Circuit board (Cloning Scanner)" + board_name = "Cloning Scanner" build_path = /obj/machinery/dna_scannernew board_type = "machine" origin_tech = "programming=2;biotech=2" @@ -734,7 +731,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/cable_coil = 2,) /obj/item/circuitboard/mech_recharger - name = "circuit board (Mech Bay Recharger)" + board_name = "Mech Bay Recharger" build_path = /obj/machinery/mech_bay_recharge_port board_type = "machine" origin_tech = "programming=3;powerstorage=3;engineering=3" @@ -743,7 +740,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/capacitor = 5) /obj/item/circuitboard/teleporter_hub - name = "circuit board (Teleporter Hub)" + board_name = "Teleporter Hub" build_path = /obj/machinery/teleport/hub board_type = "machine" origin_tech = "programming=3;engineering=4;bluespace=4;materials=4" @@ -752,7 +749,7 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/matter_bin = 1) /obj/item/circuitboard/teleporter_station - name = "circuit board (Teleporter Station)" + board_name = "Teleporter Station" build_path = /obj/machinery/teleport/station board_type = "machine" origin_tech = "programming=4;engineering=4;bluespace=4;plasmatech=3" @@ -762,7 +759,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/teleporter_perma - name = "circuit board (Permanent Teleporter)" + board_name = "Permanent Teleporter" build_path = /obj/machinery/teleport/perma board_type = "machine" origin_tech = "programming=3;engineering=4;bluespace=4;materials=4" @@ -781,7 +778,7 @@ to destroy them and players will be able to make replacements. return ..() /obj/item/circuitboard/telesci_pad - name = "Circuit board (Telepad)" + board_name = "Telepad" build_path = /obj/machinery/telepad board_type = "machine" origin_tech = "programming=4;engineering=3;plasmatech=4;bluespace=4" @@ -792,7 +789,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/quantumpad - name = "circuit board (Quantum Pad)" + board_name = "Quantum Pad" build_path = /obj/machinery/quantumpad board_type = "machine" origin_tech = "programming=3;engineering=3;plasmatech=3;bluespace=4" @@ -803,7 +800,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/cable_coil = 1) /obj/item/circuitboard/sleeper - name = "circuit board (Sleeper)" + board_name = "Sleeper" build_path = /obj/machinery/sleeper board_type = "machine" origin_tech = "programming=3;biotech=2;engineering=3" @@ -814,16 +811,16 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 2) /obj/item/circuitboard/sleeper/syndicate - name = "circuit board (Sleeper Syndicate)" + board_name = "Sleeper - Syndicate" build_path = /obj/machinery/sleeper/syndie /obj/item/circuitboard/sleeper/survival - name = "circuit board (Sleeper Survival Pod)" + board_name = "Sleeper - Survival Pod" build_path = /obj/machinery/sleeper/survival_pod /obj/item/circuitboard/bodyscanner - name = "circuit board (Body Scanner)" + board_name = "Body Scanner" build_path = /obj/machinery/bodyscanner board_type = "machine" origin_tech = "programming=3;biotech=2;engineering=3" @@ -833,7 +830,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 2) /obj/item/circuitboard/cryo_tube - name = "circuit board (Cryotube)" + board_name = "Cryotube" build_path = /obj/machinery/atmospherics/unary/cryo_cell board_type = "machine" origin_tech = "programming=4;biotech=3;engineering=4;plasmatech=3" @@ -843,7 +840,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 4) /obj/item/circuitboard/cyborgrecharger - name = "circuit board (Cyborg Recharger)" + board_name = "Cyborg Recharger" build_path = /obj/machinery/recharge_station board_type = "machine" origin_tech = "powerstorage=3;engineering=3" @@ -854,21 +851,22 @@ to destroy them and players will be able to make replacements. // Telecomms circuit boards: /obj/item/circuitboard/tcomms/relay - name = "Circuit Board (Telecommunications Relay)" + board_name = "Telecommunications Relay" build_path = /obj/machinery/tcomms/relay board_type = "machine" origin_tech = "programming=2;engineering=2;bluespace=2" req_components = list(/obj/item/stock_parts/manipulator = 2, /obj/item/stack/cable_coil = 2) /obj/item/circuitboard/tcomms/core - name = "Circuit Board (Telecommunications Core)" + board_name = "Telecommunications Core" build_path = /obj/machinery/tcomms/core board_type = "machine" origin_tech = "programming=2;engineering=2" req_components = list(/obj/item/stock_parts/manipulator = 2, /obj/item/stack/cable_coil = 2) // End telecomms circuit boards + /obj/item/circuitboard/ore_redemption - name = "circuit board (Ore Redemption)" + board_name = "Ore Redemption" build_path = /obj/machinery/mineral/ore_redemption board_type = "machine" origin_tech = "programming=1;engineering=2" @@ -880,15 +878,15 @@ to destroy them and players will be able to make replacements. /obj/item/assembly/igniter = 1) /obj/item/circuitboard/ore_redemption/golem - name = "circuit board (Golem Ore Redemption)" + board_name = "Ore Redemption - Golem" build_path = /obj/machinery/mineral/ore_redemption/golem /obj/item/circuitboard/ore_redemption/labor - name = "circuit board (Labor Ore Redemption)" + board_name = "Ore Redemption - Labour" build_path = /obj/machinery/mineral/ore_redemption/labor /obj/item/circuitboard/mining_equipment_vendor - name = "circuit board (Mining Equipment Vendor)" + board_name = "Mining Equipment Vendor" build_path = /obj/machinery/mineral/equipment_vendor board_type = "machine" origin_tech = "programming=1;engineering=3" @@ -897,15 +895,15 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/matter_bin = 3) /obj/item/circuitboard/mining_equipment_vendor/golem - name = "circuit board (Mining Equipment Vendor)" + board_name = "Golem Equipment Vendor" build_path = /obj/machinery/mineral/equipment_vendor/golem /obj/item/circuitboard/mining_equipment_vendor/labor - name = "circuit board (Labor Equipment Vendor)" + board_name = "Labour Equipment Vendor" build_path = /obj/machinery/mineral/equipment_vendor/labor /obj/item/circuitboard/clawgame - name = "circuit board (Claw Game)" + board_name = "Claw Game" build_path = /obj/machinery/arcade/claw board_type = "machine" origin_tech = "programming=1" @@ -916,7 +914,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/prize_counter - name = "circuit board (Prize Counter)" + board_name = "Prize Counter" build_path = /obj/machinery/prize_counter board_type = "machine" origin_tech = "programming=1" @@ -927,7 +925,7 @@ to destroy them and players will be able to make replacements. /obj/item/stack/cable_coil = 1) /obj/item/circuitboard/gameboard - name = "circuit board (Virtual Gameboard)" + board_name = "Virtual Gameboard" build_path = /obj/machinery/gameboard board_type = "machine" origin_tech = "programming=1" diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 48e224c3d38..a67f068912f 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -170,12 +170,12 @@ dispense_item(I) /obj/item/circuitboard/cryopodcontrol - name = "Circuit board (Cryogenic Oversight Console)" + board_name = "Cryogenic Oversight Console" build_path = "/obj/machinery/computer/cryopod" origin_tech = "programming=1" /obj/item/circuitboard/robotstoragecontrol - name = "Circuit board (Robotic Storage Console)" + board_name = "Robotic Storage Console" build_path = "/obj/machinery/computer/cryopod/robot" origin_tech = "programming=1" diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 15a69318610..88deaf8647b 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -101,16 +101,24 @@ var/force_no_power_icon_state = FALSE /obj/machinery/vending/Initialize(mapload) + . = ..() var/build_inv = FALSE if(!refill_canister) build_inv = TRUE - . = ..() + else + component_parts = list() + var/obj/item/circuitboard/vendor/V = new + V.set_type(replacetext(name, "\improper", "")) + component_parts += V + component_parts += new refill_canister + RefreshParts() + wires = new(src) if(build_inv) //non-constructable vending machine build_inventory(products, product_records) build_inventory(contraband, hidden_records) build_inventory(premium, coin_records) - for (var/datum/data/vending_product/R in (product_records + coin_records + hidden_records)) + for(var/datum/data/vending_product/R in (product_records + coin_records + hidden_records)) var/obj/item/I = R.product_path var/pp = replacetext(replacetext("[R.product_path]", "/obj/item/", ""), "/", "-") imagelist[pp] = "[icon2base64(icon(initial(I.icon), initial(I.icon_state)))]" @@ -887,14 +895,6 @@ ads_list = list("Only the finest!","Have some tools.","The most robust equipment.","The finest gear in space!") refill_canister = /obj/item/vending_refill/assist -/obj/machinery/vending/assist/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/assist(null) - RefreshParts() - return ..() /obj/machinery/vending/boozeomat name = "\improper Booze-O-Mat" @@ -934,15 +934,6 @@ /obj/machinery/vending/boozeomat/syndicate_access req_access = list(ACCESS_SYNDICATE) -/obj/machinery/vending/boozeomat/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/boozeomat(null) - RefreshParts() - return ..() - /obj/machinery/vending/coffee name = "\improper Hot Drinks machine" @@ -964,15 +955,6 @@ /obj/machinery/vending/coffee/free prices = list() -/obj/machinery/vending/coffee/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/coffee(null) - RefreshParts() - return ..() - /obj/machinery/vending/coffee/item_slot_check(mob/user, obj/item/I) if(!(istype(I, /obj/item/reagent_containers/glass) || istype(I, /obj/item/reagent_containers/food/drinks))) return FALSE @@ -1029,14 +1011,6 @@ /obj/machinery/vending/snack/free prices = list() -/obj/machinery/vending/snack/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/snack(null) - RefreshParts() - return ..() /obj/machinery/vending/chinese name = "\improper Mr. Chang" @@ -1052,14 +1026,6 @@ /obj/machinery/vending/chinese/free prices = list() -/obj/machinery/vending/chinese/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/chinese(null) - RefreshParts() - return ..() /obj/machinery/vending/cola name = "\improper Robust Softdrinks" @@ -1079,15 +1045,6 @@ /obj/machinery/vending/cola/free prices = list() -/obj/machinery/vending/cola/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/cola(null) - RefreshParts() - return ..() - /obj/machinery/vending/cart name = "\improper PTech" @@ -1107,14 +1064,6 @@ /obj/machinery/vending/cart/free prices = list() -/obj/machinery/vending/cart/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/cart(null) - RefreshParts() - return ..() /obj/machinery/vending/liberationstation name = "\improper Liberation Station" @@ -1161,6 +1110,7 @@ armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50) resistance_flags = FIRE_PROOF + /obj/machinery/vending/cigarette name = "cigarette machine" desc = "If you want to get cancer, might as well do it in style." @@ -1190,6 +1140,7 @@ /obj/machinery/vending/cigarette/syndicate/free prices = list() + /obj/machinery/vending/cigarette/beach //Used in the lavaland_biodome_beach.dmm ruin name = "\improper ShadyCigs Ultra" desc = "Now with extra premium products!" @@ -1208,14 +1159,6 @@ /obj/item/lighter/zippo = 3) prices = list() -/obj/machinery/vending/cigarette/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/cigarette(null) - RefreshParts() - return ..() /obj/machinery/vending/medical name = "\improper NanoMed Plus" @@ -1242,14 +1185,6 @@ name = "\improper SyndiMed Plus" req_access = list(ACCESS_SYNDICATE) -/obj/machinery/vending/medical/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/medical(null) - RefreshParts() - return ..() /obj/machinery/vending/plasmaresearch name = "\improper Toximate 3000" @@ -1258,6 +1193,7 @@ /obj/item/wirecutters = 1, /obj/item/assembly/timer = 8) contraband = list(/obj/item/flashlight = 5, /obj/item/assembly/voice = 3, /obj/item/assembly/health = 3, /obj/item/assembly/infra = 3) + /obj/machinery/vending/wallmed name = "\improper NanoMed" desc = "Wall-mounted Medical Equipment dispenser." @@ -1271,14 +1207,6 @@ resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/wallmed -/obj/machinery/vending/wallmed/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/wallmed(null) - RefreshParts() - return ..() /obj/machinery/vending/wallmed/syndicate name = "\improper SyndiMed Plus" @@ -1290,6 +1218,7 @@ products = list(/obj/item/stack/medical/bruise_pack = 2,/obj/item/stack/medical/ointment = 2,/obj/item/reagent_containers/hypospray/autoinjector = 4,/obj/item/healthanalyzer = 1) contraband = list(/obj/item/reagent_containers/syringe/charcoal = 4,/obj/item/reagent_containers/syringe/antiviral = 4,/obj/item/reagent_containers/food/pill/tox = 1) + /obj/machinery/vending/security name = "\improper SecTech" desc = "A security equipment vendor." @@ -1303,14 +1232,6 @@ contraband = list(/obj/item/clothing/glasses/sunglasses = 2,/obj/item/storage/fancy/donut_box = 2,/obj/item/hailer = 5) refill_canister = /obj/item/vending_refill/security -/obj/machinery/vending/security/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/security(null) - RefreshParts() - return ..() /obj/machinery/vending/hydronutrients name = "\improper NutriMax" @@ -1324,14 +1245,6 @@ contraband = list(/obj/item/reagent_containers/glass/bottle/ammonia = 10,/obj/item/reagent_containers/glass/bottle/diethylamine = 5) refill_canister = /obj/item/vending_refill/hydronutrients -/obj/machinery/vending/hydronutrients/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/hydronutrients(null) - RefreshParts() - return ..() /obj/machinery/vending/hydroseeds name = "\improper MegaSeed Servitor" @@ -1394,14 +1307,6 @@ premium = list(/obj/item/reagent_containers/spray/waterflower = 1) refill_canister = /obj/item/vending_refill/hydroseeds -/obj/machinery/vending/hydroseeds/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/hydroseeds(null) - RefreshParts() - return ..() /obj/machinery/vending/magivend name = "\improper MagiVend" @@ -1429,6 +1334,7 @@ armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50) resistance_flags = FIRE_PROOF + /obj/machinery/vending/autodrobe name = "\improper AutoDrobe" desc = "A vending machine for costumes." @@ -1564,14 +1470,6 @@ /obj/item/clothing/head/cuban_hat = 1) refill_canister = /obj/item/vending_refill/autodrobe -/obj/machinery/vending/autodrobe/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/autodrobe(null) - RefreshParts() - return ..() /obj/machinery/vending/dinnerware name = "\improper Plasteel Chef's Dinnerware Vendor" @@ -1602,14 +1500,6 @@ contraband = list(/obj/item/kitchen/rollingpin = 2, /obj/item/kitchen/knife/butcher = 2) refill_canister = /obj/item/vending_refill/dinnerware -/obj/machinery/vending/dinnerware/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/dinnerware(null) - RefreshParts() - return ..() /obj/machinery/vending/sovietsoda name = "\improper BODA" @@ -1621,14 +1511,6 @@ resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/sovietsoda -/obj/machinery/vending/sovietsoda/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/sovietsoda(null) - RefreshParts() - return ..() /obj/machinery/vending/tool name = "\improper YouTool" @@ -1639,9 +1521,11 @@ /obj/item/wrench = 5,/obj/item/analyzer = 5,/obj/item/t_scanner = 5,/obj/item/screwdriver = 5) contraband = list(/obj/item/weldingtool/hugetank = 2,/obj/item/clothing/gloves/color/fyellow = 2) premium = list(/obj/item/clothing/gloves/color/yellow = 1) + refill_canister = /obj/item/vending_refill/youtool armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 70) resistance_flags = FIRE_PROOF + /obj/machinery/vending/engivend name = "\improper Engi-Vend" desc = "Spare tool vending. What? Did you expect some witty description?" @@ -1653,14 +1537,6 @@ premium = list(/obj/item/storage/belt/utility = 3) refill_canister = /obj/item/vending_refill/engivend -/obj/machinery/vending/engivend/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/engivend(null) - RefreshParts() - return ..() /obj/machinery/vending/engineering name = "\improper Robco Tool Maker" @@ -1676,14 +1552,6 @@ /obj/item/stock_parts/matter_bin = 5,/obj/item/stock_parts/manipulator = 5) refill_canister = /obj/item/vending_refill/engineering -/obj/machinery/vending/engineering/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/engineering(null) - RefreshParts() - return ..() /obj/machinery/vending/robotics name = "\improper Robotech Deluxe" @@ -1697,14 +1565,6 @@ /obj/item/screwdriver = 5,/obj/item/crowbar = 5) refill_canister = /obj/item/vending_refill/robotics -/obj/machinery/vending/robotics/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/robotics(null) - RefreshParts() - return ..() /obj/machinery/vending/sustenance name = "\improper Sustenance Vendor" @@ -1721,14 +1581,6 @@ /obj/item/clothing/mask/breath = 6) refill_canister = /obj/item/vending_refill/sustenance -/obj/machinery/vending/sustenance/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/sustenance(null) - RefreshParts() - return ..() /obj/machinery/vending/hatdispenser name = "\improper Hatlord 9000" @@ -1745,14 +1597,6 @@ premium = list(/obj/item/clothing/head/soft/rainbow = 1) refill_canister = /obj/item/vending_refill/hatdispenser -/obj/machinery/vending/hatdispenser/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/hatdispenser(null) - RefreshParts() - return ..() /obj/machinery/vending/suitdispenser name = "\improper Suitlord 9000" @@ -1766,14 +1610,6 @@ premium = list(/obj/item/clothing/under/rainbow = 1) refill_canister = /obj/item/vending_refill/suitdispenser -/obj/machinery/vending/suitdispenser/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/suitdispenser(null) - RefreshParts() - return ..() /obj/machinery/vending/shoedispenser name = "\improper Shoelord 9000" @@ -1785,14 +1621,6 @@ premium = list(/obj/item/clothing/shoes/rainbow = 1) refill_canister = /obj/item/vending_refill/shoedispenser -/obj/machinery/vending/shoedispenser/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/shoedispenser(null) - RefreshParts() - return ..() /obj/machinery/vending/syndicigs name = "\improper Suspicious Cigarette Machine" @@ -1803,6 +1631,7 @@ icon_state = "cigs" products = list(/obj/item/storage/fancy/cigarettes/syndicate = 10,/obj/item/lighter/random = 5) + /obj/machinery/vending/syndisnack name = "\improper Getmore Chocolate Corp" desc = "A modified snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars" @@ -1812,6 +1641,7 @@ products = list(/obj/item/reagent_containers/food/snacks/chips =6,/obj/item/reagent_containers/food/snacks/sosjerky = 6, /obj/item/reagent_containers/food/snacks/syndicake = 6, /obj/item/reagent_containers/food/snacks/cheesiehonkers = 6) + //don't forget to change the refill size if you change the machine's contents! /obj/machinery/vending/clothing name = "\improper ClothesMate" //renamed to make the slogan rhyme @@ -1907,14 +1737,6 @@ refill_canister = /obj/item/vending_refill/clothing -/obj/machinery/vending/clothing/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/clothing(null) - RefreshParts() - return ..() /obj/machinery/vending/artvend name = "\improper ArtVend" @@ -1931,6 +1753,7 @@ contraband = list(/obj/item/toy/crayon/mime = 1,/obj/item/toy/crayon/rainbow = 1) premium = list(/obj/item/poster/random_contraband = 5) + /obj/machinery/vending/crittercare name = "\improper CritterCare" desc = "A vending machine for pet supplies." @@ -1955,11 +1778,3 @@ /obj/machinery/vending/crittercare/free prices = list() -/obj/machinery/vending/crittercare/Initialize(mapload) - component_parts = list() - var/obj/item/circuitboard/vendor/V = new(null) - V.set_type(type) - component_parts += V - component_parts += new /obj/item/vending_refill/crittercare(null) - RefreshParts() - return ..() diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index 4bb7f96e66f..52b3a2263fa 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -347,117 +347,121 @@ ///////// Circuitboards /obj/item/circuitboard/mecha - name = "Exosuit Circuit board" - icon = 'icons/obj/module.dmi' icon_state = "std_mod" - item_state = "electronic" board_type = "other" flags = CONDUCT - force = 5.0 - w_class = WEIGHT_CLASS_SMALL - throwforce = 5.0 + force = 5 + throwforce = 5 throw_speed = 3 throw_range = 15 + /obj/item/circuitboard/mecha/ripley origin_tech = "programming=2" +/obj/item/circuitboard/mecha/ripley/main + board_name = "Ripley Central Control Module" + icon_state = "mainboard" + /obj/item/circuitboard/mecha/ripley/peripherals - name = "Circuit board (Ripley Peripherals Control module)" + board_name = "Ripley Peripherals Control Module" icon_state = "mcontroller" -/obj/item/circuitboard/mecha/ripley/main - name = "Circuit board (Ripley Central Control module)" - icon_state = "mainboard" /obj/item/circuitboard/mecha/gygax origin_tech = "programming=4;combat=3;engineering=3" +/obj/item/circuitboard/mecha/gygax/main + board_name = "Gygax Central Control Module" + icon_state = "mainboard" + /obj/item/circuitboard/mecha/gygax/peripherals - name = "Circuit board (Gygax Peripherals Control module)" + board_name = "Gygax Peripherals Control Module" icon_state = "mcontroller" /obj/item/circuitboard/mecha/gygax/targeting - name = "Circuit board (Gygax Weapon Control and Targeting module)" + board_name = "Gygax Weapon Control and Targeting Module" icon_state = "mcontroller" origin_tech = "programming=4;combat=4" -/obj/item/circuitboard/mecha/gygax/main - name = "Circuit board (Gygax Central Control module)" - icon_state = "mainboard" /obj/item/circuitboard/mecha/durand origin_tech = "programming=4;combat=3;engineering=3" +/obj/item/circuitboard/mecha/durand/main + board_name = "Durand Central Control Module" + icon_state = "mainboard" + /obj/item/circuitboard/mecha/durand/peripherals - name = "Circuit board (Durand Peripherals Control module)" + board_name = "Durand Peripherals Control Module" icon_state = "mcontroller" /obj/item/circuitboard/mecha/durand/targeting - name = "Circuit board (Durand Weapon Control and Targeting module)" + board_name = "Durand Weapon Control and Targeting Module" icon_state = "mcontroller" origin_tech = "programming=4;combat=4;engineering=3" -/obj/item/circuitboard/mecha/durand/main - name = "Circuit board (Durand Central Control module)" - icon_state = "mainboard" /obj/item/circuitboard/mecha/phazon origin_tech = "programming=5;plasmatech=4" +/obj/item/circuitboard/mecha/phazon/main + board_name = "Phazon Central Control Module" + icon_state = "mainboard" + /obj/item/circuitboard/mecha/phazon/peripherals - name = "Circuit board (Phazon Peripherals Control module)" + board_name = "Phazon Peripherals Control Module" icon_state = "mcontroller" /obj/item/circuitboard/mecha/phazon/targeting - name = "Circuit board (Phazon Weapon Control and Targeting module)" + board_name = "Phazon Weapon Control and Targeting Module" icon_state = "mcontroller" -/obj/item/circuitboard/mecha/phazon/main - name = "Circuit board (Phazon Central Control module)" - icon_state = "mainboard" /obj/item/circuitboard/mecha/honker origin_tech = "programming=3;engineering=3" +/obj/item/circuitboard/mecha/honker/main + board_name = "H.O.N.K Central Control Module" + icon_state = "mainboard" + /obj/item/circuitboard/mecha/honker/peripherals - name = "Circuit board (H.O.N.K Peripherals Control module)" + board_name = "H.O.N.K Peripherals Control Module" icon_state = "mcontroller" /obj/item/circuitboard/mecha/honker/targeting - name = "Circuit board (H.O.N.K Weapon Control and Targeting module)" + board_name = "H.O.N.K Weapon Control and Targeting Module" icon_state = "mcontroller" -/obj/item/circuitboard/mecha/honker/main - name = "Circuit board (H.O.N.K Central Control module)" - icon_state = "mainboard" /obj/item/circuitboard/mecha/reticence origin_tech = "programming=3;engineering=3" +/obj/item/circuitboard/mecha/reticence/main + board_name = "Reticence Central Control Module" + icon_state = "mainboard" + /obj/item/circuitboard/mecha/reticence/peripherals - name = "circuit board (Reticence Peripherals Control module)" + board_name = "Reticence Peripherals Control Module" icon_state = "mcontroller" /obj/item/circuitboard/mecha/reticence/targeting - name = "circuit board (Reticence Weapon Control and Targeting module)" + board_name = "Reticence Weapon Control and Targeting Module" icon_state = "mcontroller" -/obj/item/circuitboard/mecha/reticence/main - name = "circuit board (Reticence Central Control module)" - icon_state = "mainboard" /obj/item/circuitboard/mecha/odysseus origin_tech = "programming=3;biotech=3" +/obj/item/circuitboard/mecha/odysseus/main + board_name = "Odysseus Central Control Module" + icon_state = "mainboard" + /obj/item/circuitboard/mecha/odysseus/peripherals - name = "Circuit board (Odysseus Peripherals Control module)" + board_name = "Odysseus Peripherals Control Module" icon_state = "mcontroller" -/obj/item/circuitboard/mecha/odysseus/main - name = "Circuit board (Odysseus Central Control module)" - icon_state = "mainboard" /obj/item/circuitboard/mecha/pod - name = "Circuit board (Space Pod Mainboard)" + board_name = "Space Pod Mainboard" icon_state = "mainboard" diff --git a/code/game/objects/items/weapons/vending_items.dm b/code/game/objects/items/weapons/vending_items.dm index e7743f961f1..c4d4d5090e5 100644 --- a/code/game/objects/items/weapons/vending_items.dm +++ b/code/game/objects/items/weapons/vending_items.dm @@ -114,6 +114,10 @@ machine_name = "Robco Tool Maker" icon_state = "refill_engi" +/obj/item/vending_refill/youtool + machine_name = "YouTool" + icon_state = "refill_engi" + /obj/item/vending_refill/engivend machine_name = "Engi-Vend" icon_state = "refill_engi" diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 8b2bfdbd786..4dfecc88b82 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -45,7 +45,7 @@ // Components component_parts = list() var/obj/item/circuitboard/smartfridge/board = new(null) - board.set_type(type) + board.set_type(null, type) component_parts += board component_parts += new /obj/item/stock_parts/matter_bin(null) RefreshParts() diff --git a/code/modules/station_goals/bluespace_tap.dm b/code/modules/station_goals/bluespace_tap.dm index 6eb4cb9572e..6e6898bde1f 100644 --- a/code/modules/station_goals/bluespace_tap.dm +++ b/code/modules/station_goals/bluespace_tap.dm @@ -42,7 +42,7 @@ product_cost = cost /obj/item/circuitboard/machine/bluespace_tap - name = "Bluespace Harvester (Machine Board)" + board_name = "Bluespace Harvester" build_path = /obj/machinery/power/bluespace_tap origin_tech = "engineering=2;combat=2;bluespace=3" req_components = list( diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index f97638cbd28..96cd520921e 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -225,7 +225,7 @@ last_fire_time = world.time / 10 /obj/item/circuitboard/machine/bsa/back - name = "Bluespace Artillery Generator (Machine Board)" + board_name = "Bluespace Artillery Generator" build_path = /obj/machinery/bsa/back origin_tech = "engineering=2;combat=2;bluespace=2" //No freebies! req_components = list( @@ -233,7 +233,7 @@ /obj/item/stack/cable_coil = 2) /obj/item/circuitboard/machine/bsa/middle - name = "Bluespace Artillery Fusor (Machine Board)" + board_name = "Bluespace Artillery Fusor" build_path = /obj/machinery/bsa/middle origin_tech = "engineering=2;combat=2;bluespace=2" req_components = list( @@ -241,7 +241,7 @@ /obj/item/stack/cable_coil = 2) /obj/item/circuitboard/machine/bsa/front - name = "Bluespace Artillery Bore (Machine Board)" + board_name = "Bluespace Artillery Bore" build_path = /obj/machinery/bsa/front origin_tech = "engineering=2;combat=2;bluespace=2" req_components = list( @@ -249,7 +249,7 @@ /obj/item/stack/cable_coil = 2) /obj/item/circuitboard/computer/bsa_control - name = "Bluespace Artillery Controls (Computer Board)" + board_name = "Bluespace Artillery Controls" build_path = /obj/machinery/computer/bsa_control origin_tech = "engineering=2;combat=2;bluespace=2" diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm index 031471e968c..c9096042e85 100644 --- a/code/modules/station_goals/dna_vault.dm +++ b/code/modules/station_goals/dna_vault.dm @@ -121,7 +121,7 @@ GLOBAL_LIST_INIT(non_simple_animals, typecacheof(list(/mob/living/carbon/human/m /obj/item/circuitboard/machine/dna_vault - name = "DNA Vault (Machine Board)" + board_name = "DNA Vault" build_path = /obj/machinery/dna_vault origin_tech = "engineering=2;combat=2;bluespace=2" //No freebies! req_components = list( diff --git a/code/modules/station_goals/shield.dm b/code/modules/station_goals/shield.dm index 3defa561f4f..46dc31c78a4 100644 --- a/code/modules/station_goals/shield.dm +++ b/code/modules/station_goals/shield.dm @@ -35,7 +35,7 @@ return coverage.len /obj/item/circuitboard/computer/sat_control - name = "Satellite Network Control (Computer Board)" + board_name = "Satellite Network Control" build_path = /obj/machinery/computer/sat_control origin_tech = "engineering=3" diff --git a/icons/obj/stock_parts.dmi b/icons/obj/stock_parts.dmi index f2bdd494f508870eaa883b1034a9f52e787b13b7..38ddb183e97673a658644954d87b34580f431242 100644 GIT binary patch delta 596 zcmV-a0;~PlwE^I@0gxmCS&=0qf5m#qVMB@`hxQc&TB2iN`tT^)N%r(RctaD+hU8_? z#Rh&N|Ds5WkK*g=x5K;Gza5GJDVpHLPHaCt6|0lc+=`vpRK==Ab8LD1i42TlCmvLA zooomk%JoCB(uShgiFL7R2po>zQ*gBe-YkK)OW@}u{N*5{0`HNMDCj{df9OCN4taD` z;H3+?w>Zr|7b}exE@CIv_A~sXLWPjD+}Q)pORARaL!1=I-E1IuMTH0)iov6ap!3erN%I9Ge=kWMh5Y>efM z4GZdFiH?z-kM9-g!RL~_vIsNItMxCSapdt$F*Gn_DBjWrB3tf6mnyA+Q-x0=YQ_ zo2hR9f1*vnr7N6*OIJ7r7h;yJ5Hqc%JI0;wWJDUmOecStjrrC7z8>E%aGf=cnY;U| z6spQ?S(V!<8{-3xUGy`3E@AI0nYUhLlv#V-$Tk1Rg&0J*b%0$NyY1R!(( delta 588 zcmV-S0<-<#wE@_*0gxmCQIRDif5UpoVMB@`hxQc&T4G{h`tT(BYfry}w>80HP+10F zY~V-oFPfzID89UWJ-mti>!Ii|CKJ5aiS37{Vl@~|jo67zRje8`r-tT_L_jEZ;^FC` zSZNcJ*ok$qI!16fzyBfDEK#wGb3P1l%HBb`w(NDC?BT+P&C9H2*eG?p?9Zs> ze$P-3K9}s2MOX-4t*;CK?s@m!8kMP{wU8WK$2QeJh+w6K0i!}|rSXLE2x?&juKDQ2 zstJ_ZKw>AJ%k`)8INv+a5y&WRG;jY3bLphB6oD_>r5=k2WO|ekf8COT&9!O&f3h8e z<2yVC$9H%PE~G49A!T~wC&r!kWWv~og-QOrnDaCHuAc8NaIG~*v-I!JN~kKgWmRsk z`Is+Y{>;A(D1uMUP|n~>U5oLCC1mDr7?-obo&STvRELp`MG=7wn(#v0$NxHo+!Kk