Files
Casper3667andGitHub 2f5d7e8422 Upgrades the research console to TGUI and adds the material silo (#22987)
This updates the research console to be a TGUI and fixes several bugs
with it.
It now uses a material silo for materials, while the acid for the
circuit imprinter is still given directly to the machine.
Mech fabricators now also need to be linked to a research console.
It is also capable of connecting to multiple fabricators and distribute
tasks between them.

The sprite originates from TG station.

Unit tests were also made to ensure there is no fabricators missing
consoles and no console missing material silos.

<img width="1200" height="800" alt="image"
src="https://github.com/user-attachments/assets/b2076036-18e5-4518-9af1-3ac3698b3924"
/>
<img width="1200" height="800" alt="image"
src="https://github.com/user-attachments/assets/e954e1e4-cf2d-4472-8386-10d8993ac375"
/>
<img width="1200" height="800" alt="image"
src="https://github.com/user-attachments/assets/df690b93-c7ff-49a3-a1b3-002f6807981b"
/>
<img width="1200" height="800" alt="image"
src="https://github.com/user-attachments/assets/ff10ef88-e1d9-4b6f-9643-309d919a601f"
/>
2026-08-06 09:34:34 +00:00

269 lines
9.4 KiB
Plaintext

/datum/design/circuit/machine
p_category = "Machine Circuit Designs"
/datum/design/circuit/machine/arcademachine
name = "Battle Arcade Machine"
req_tech = list(TECH_DATA = 1)
build_path = /obj/item/circuitboard/arcade/battle
/datum/design/circuit/machine/oriontrail
name = "Orion Trail Arcade Machine"
req_tech = list(TECH_DATA = 1)
build_path = /obj/item/circuitboard/arcade/orion_trail
/datum/design/circuit/machine/destructive_analyzer
name = "Destructive Analyzer"
req_tech = list(TECH_DATA = 2, TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/destructive_analyzer
/datum/design/circuit/machine/protolathe
name = "Protolathe"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/protolathe
/datum/design/circuit/machine/circuit_imprinter
name = "Circuit Imprinter"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/circuit_imprinter
/datum/design/circuit/machine/autolathe
name = "Autolathe"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/autolathe
/datum/design/circuit/machine/chem_heater
name = "Chemistry Heater"
req_tech = list(TECH_BIO = 2)
build_path = /obj/item/circuitboard/chem_heater
/datum/design/circuit/machine/rdservercontrol
name = "R&D Server Control Console"
req_tech = list(TECH_DATA = 3)
build_path = /obj/item/circuitboard/rdservercontrol
/datum/design/circuit/machine/rdserver
name = "R&D Server"
req_tech = list(TECH_DATA = 3)
build_path = /obj/item/circuitboard/rdserver
/datum/design/circuit/machine/rdtechprocessor
name = "R&D Tech Processor"
req_tech = list(TECH_DATA = 3)
build_path = /obj/item/circuitboard/rdtechprocessor
/datum/design/circuit/machine/mechfab
name = "Exosuit Fabricator"
req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/mechfab
/datum/design/circuit/machine/mech_recharger
name = "Mech Recharger"
req_tech = list(TECH_DATA = 2, TECH_POWER = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/mech_recharger
/datum/design/circuit/machine/heph_mech_recharger
name = "Hephaestus Mech Recharger"
req_tech = list(TECH_DATA = 3, TECH_POWER = 3, TECH_ENGINEERING = 4)
build_path = /obj/item/circuitboard/mech_recharger/hephaestus
/datum/design/circuit/machine/recharge_station
name = "Cyborg Recharge Station"
req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/recharge_station
/datum/design/circuit/machine/recharger
name = "Recharger"
req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 1)
build_path = /obj/item/circuitboard/recharger
/datum/design/circuit/machine/recharger/wallcharger
name = "Wall Recharger"
req_tech = list(TECH_DATA = 2, TECH_POWER = 3, TECH_ENGINEERING = 1)
build_path = /obj/item/circuitboard/recharger/wallcharger
/datum/design/circuit/machine/recharger/cell_charger
name = "Cell Charger"
req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 1)
build_path = /obj/item/circuitboard/cell_charger
/datum/design/circuit/machine/holopadboard
name = "Holopad"
req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/holopad
/datum/design/circuit/machine/sleeper
name = "Sleeper"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/sleeper
/datum/design/circuit/machine/stasis_bed
name = "Lifeform Stasis Unit"
req_tech = list(TECH_MAGNET = 4, TECH_ENGINEERING = 4, TECH_BIO = 4)
build_path = /obj/item/circuitboard/stasis_bed
/datum/design/circuit/machine/bodyscannerm
name = "Body Scanner"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/bodyscanner
/datum/design/circuit/machine/bodyscannerc
name = "Body Scanner Console"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/bodyscannerconsole
/datum/design/circuit/machine/optable
name = "Operation Table Scanning"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/optable
/datum/design/circuit/machine/smartfridge
name = "Smartfridge"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/smartfridge
/datum/design/circuit/machine/requestconsole
name = "Request Console"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/requestconsole
/datum/design/circuit/machine/cryopod
name = "Cryo Cell"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/cryotube
/datum/design/circuit/machine/stove
name = "Stove"
req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/stove
/datum/design/circuit/machine/oven
name = "Oven"
req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/oven
/datum/design/circuit/machine/fryer
name = "Deep Fryer"
req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/fryer
/datum/design/circuit/machine/cerealmaker
name = "Cereal Maker"
req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/cerealmaker
/datum/design/circuit/machine/grill
name = "Grill"
req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/grill
/datum/design/circuit/machine/candymaker
name = "Candy Machine"
req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/candymachine
/datum/design/circuit/machine/portgen
name = "Portable Generator"
req_tech = list(TECH_DATA = 3, TECH_PHORON = 3, TECH_POWER = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/portgen
/datum/design/circuit/machine/advancedportgen
name = "Advanced Portable Generator"
req_tech = list(TECH_DATA = 3, TECH_POWER = 4, TECH_ENGINEERING = 4)
build_path = /obj/item/circuitboard/portgen/advanced
/datum/design/circuit/machine/superportgen
name = "Super Portable Generator"
req_tech = list(TECH_DATA = 3, TECH_POWER = 5, TECH_ENGINEERING = 5)
build_path = /obj/item/circuitboard/portgen/super
/datum/design/circuit/machine/fusionportgen
name = "Miniature Fusion Reactor"
req_tech = list(TECH_DATA = 3, TECH_POWER = 6, TECH_ENGINEERING = 6)
build_path = /obj/item/circuitboard/portgen/fusion
/datum/design/circuit/machine/batteryrack
name = "Cell Rack PSU"
req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/batteryrack
/datum/design/circuit/machine/smes_cell
name = "'SMES' Superconductive Magnetic Energy Storage"
req_tech = list(TECH_POWER = 7, TECH_ENGINEERING = 5)
build_path = /obj/item/circuitboard/smes
/datum/design/circuit/machine/gas_heater
name = "Gas Heating System"
req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 1)
build_path = /obj/item/circuitboard/unary_atmos/heater
/datum/design/circuit/machine/gas_cooler
name = "Gas Cooling System"
req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/unary_atmos/cooler
/datum/design/circuit/machine/biogenerator
name = "Biogenerator"
req_tech = list(TECH_DATA = 2)
build_path = /obj/item/circuitboard/biogenerator
/datum/design/circuit/machine/crusher_base
name = "Trash Compactor"
req_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 1, TECH_MAGNET = 1, TECH_MATERIAL = 3)
build_path = /obj/item/circuitboard/crusher
/datum/design/circuit/machine/aicore
name = "AI Core"
desc = "Used in the construction of an: AI core, Secure housing for an AI, it provides power and protection to its inhabitant."
req_tech = list(TECH_DATA = 4, TECH_BIO = 3)
build_path = /obj/item/circuitboard/aicore
/datum/design/circuit/machine/rtg
name = "Radioisotope Thermoelectric Generator"
req_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 1, TECH_POWER = 3, TECH_MATERIAL = 2)
build_path = /obj/item/circuitboard/rtg
/datum/design/circuit/machine/advanced_rtg
name = "Advanced Radioisotope Thermoelectric Generator"
req_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3, TECH_POWER = 3, TECH_MATERIAL = 4, TECH_PHORON = 2)
build_path = /obj/item/circuitboard/rtg/advanced
/datum/design/circuit/machine/slot_machine
name = "Slot Machine"
req_tech = list(TECH_DATA = 2)
build_path = /obj/item/circuitboard/slot_machine
/datum/design/circuit/machine/telepad
name = "Telepad"
req_tech = list(TECH_DATA = 4, TECH_BLUESPACE = 4, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/telesci_pad
/datum/design/circuit/machine/cargo_trolley
name = "Cargo Trolley"
req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
build_path = /obj/item/circuitboard/cargo_trolley
/datum/design/circuit/machine/weapons_analyzer
name = "Weapons Analyzer"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 3, TECH_COMBAT = 2)
build_path = /obj/item/circuitboard/weapons_analyzer
/datum/design/circuit/machine/slime_extractor
name = "Slime Extractor"
req_tech = list(TECH_BIO = 2, TECH_ENGINEERING = 1, TECH_BLUESPACE = 1)
build_path = /obj/item/circuitboard/slime_extractor
/datum/design/circuit/machine/iv_drip
name = "IV Drip"
req_tech = list(TECH_DATA = 1, TECH_BIO = 2)
build_path = /obj/item/circuitboard/iv_drip
/datum/design/circuit/oxyregenerator
name = "Oxygen Regenerator"
req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/oxyregenerator
/datum/design/circuit/power_outlet
name = "Power Outlet"
req_tech = list(TECH_ENGINEERING = 1, TECH_POWER = 1)
build_path = /obj/item/circuitboard/outlet