Files
Bubberstation/code/modules/research/designs/wiremod_designs.dm
SkyratBot 45d85d569d [MIRROR] Circuit components can now be recycles in circuit printers, and automatically do so upon being removed if a circuit has a linked printer (#29316)
* Circuit components can now be recycles in circuit printers, and automatically do so upon being removed if a circuit has a linked printer (#85648)

## About The Pull Request

Added support for remote material insertion type whitelists and utilized
it to allow circuit printers to recycle components. Removing a component
from UI while the circuit has a linked printer will automatically
recycle it.

Also fixed a rogue space appearing when recycling a single item

## Why It's Good For The Game

You literally cannot do anything with components you remove/do not need
anymore so usually they end up littering circuit lab's floors. This
should make developing circuits slightly less annoying.

## Changelog
🆑
qol: Circuit components can now be recycles in circuit printers, and
automatically do so upon being removed if a circuit has a linked printer
spellcheck: Recycling a single item no longer outputs a line with a
rogue space infront of it
/🆑

* Circuit components can now be recycles in circuit printers, and automatically do so upon being removed if a circuit has a linked printer

---------

Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
2024-08-15 22:26:22 +07:00

669 lines
21 KiB
Plaintext

/datum/design/integrated_circuit
name = "Integrated Circuit"
desc = "The foundation of all circuits. All Circuitry go onto this."
id = "integrated_circuit"
build_path = /obj/item/integrated_circuit
build_type = COMPONENT_PRINTER
category = list(
RND_CATEGORY_CIRCUITRY + RND_CATEGORY_CIRCUITRY_CORE
)
materials = list(/datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron =HALF_SHEET_MATERIAL_AMOUNT)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/circuit_multitool
name = "Circuit Multitool"
desc = "A circuit multitool to mark entities and load them into."
id = "circuit_multitool"
build_path = /obj/item/multitool/circuit
build_type = COMPONENT_PRINTER
category = list(
RND_CATEGORY_CIRCUITRY + RND_CATEGORY_CIRCUITRY_CORE
)
materials = list(/datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron =HALF_SHEET_MATERIAL_AMOUNT)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/usb_cable
name = "USB Cable"
desc = "A cable that allows certain shells to connect to nearby computers and machines."
id = "usb_cable"
build_path = /obj/item/usb_cable
build_type = COMPONENT_PRINTER
category = list(
RND_CATEGORY_CIRCUITRY + RND_CATEGORY_CIRCUITRY_CORE
)
// Yes, it would make sense to make them take plastic, but then less people would make them, and I think they're cool
materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT*2.5)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/component
name = "Component ( NULL ENTRY )"
desc = "A component that goes into an integrated circuit."
build_type = COMPONENT_PRINTER
materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_COMPONENTS
)
/datum/design/component/New()
. = ..()
if(build_path)
var/obj/item/circuit_component/component_path = build_path
desc = initial(component_path.desc)
/datum/design/component/arithmetic
name = "Arithmetic Component"
id = "comp_arithmetic"
build_path = /obj/item/circuit_component/arithmetic
/datum/design/component/trigonometry
name = "Trigonometry Component"
id = "comp_trigonometry"
build_path = /obj/item/circuit_component/trigonometry
/datum/design/component/arctan2
name = "Arctangent 2 Component"
id = "comp_arctan2"
build_path = /obj/item/circuit_component/arctan2
/datum/design/component/clock
name = "Clock Component"
id = "comp_clock"
build_path = /obj/item/circuit_component/clock
/datum/design/component/comparison
name = "Comparison Component"
id = "comp_comparison"
build_path = /obj/item/circuit_component/compare/comparison
/datum/design/component/logic
name = "Logic Component"
id = "comp_logic"
build_path = /obj/item/circuit_component/compare/logic
/datum/design/component/toggle
name = "Toggle Component"
id = "comp_toggle"
build_path = /obj/item/circuit_component/compare/toggle
/datum/design/component/delay
name = "Delay Component"
id = "comp_delay"
build_path = /obj/item/circuit_component/delay
/datum/design/component/format
name = "Format List Component"
id = "comp_format"
build_path = /obj/item/circuit_component/format
/datum/design/component/format_assoc
name = "Format Associative List Component"
id = "comp_format_assoc"
build_path = /obj/item/circuit_component/format/assoc
/datum/design/component/index
name = "Index Component"
id = "comp_index"
build_path = /obj/item/circuit_component/index
/datum/design/component/index_assoc
name = "Index Associative List Component"
id = "comp_index_assoc"
build_path = /obj/item/circuit_component/index/assoc_string
/datum/design/component/length
name = "Length Component"
id = "comp_length"
build_path = /obj/item/circuit_component/length
/datum/design/component/light
name = "Light Component"
id = "comp_light"
build_path = /obj/item/circuit_component/light
/datum/design/component/not
name = "Not Component"
id = "comp_not"
build_path = /obj/item/circuit_component/not
/datum/design/component/random
name = "Random Component"
id = "comp_random"
build_path = /obj/item/circuit_component/random
/datum/design/component/binary_conversion
name = "Binary Conversion Component"
id = "comp_binary_convert"
build_path = /obj/item/circuit_component/binary_conversion
/datum/design/component/decimal_conversion
name = "Decimal Conversion Component"
id = "comp_decimal_convert"
build_path = /obj/item/circuit_component/decimal_conversion
/datum/design/component/species
name = "Get Species Component"
id = "comp_species"
build_path = /obj/item/circuit_component/species
/datum/design/component/speech
name = "Speech Component"
id = "comp_speech"
build_path = /obj/item/circuit_component/speech
/datum/design/component/laserpointer
name = "Laser Pointer Component"
id = "comp_laserpointer"
build_path = /obj/item/circuit_component/laserpointer
/datum/design/component/timepiece
name = "Timepiece Component"
id = "comp_timepiece"
build_path = /obj/item/circuit_component/timepiece
/datum/design/component/tostring
name = "To String Component"
id = "comp_tostring"
build_path = /obj/item/circuit_component/tostring
/datum/design/component/tonumber
name = "To Number"
id = "comp_tonumber"
build_path = /obj/item/circuit_component/tonumber
/datum/design/component/typecheck
name = "Typecheck Component"
id = "comp_typecheck"
build_path = /obj/item/circuit_component/compare/typecheck
/datum/design/component/concat
name = "Concatenation Component"
id = "comp_concat"
build_path = /obj/item/circuit_component/concat
/datum/design/component/textcase
name = "Textcase Component"
id = "comp_textcase"
build_path = /obj/item/circuit_component/textcase
/datum/design/component/hear
name = "Voice Activator Component"
id = "comp_hear"
build_path = /obj/item/circuit_component/hear
/datum/design/component/contains
name = "String Contains Component"
id = "comp_string_contains"
build_path = /obj/item/circuit_component/compare/contains
/datum/design/component/self
name = "Self Component"
id = "comp_self"
build_path = /obj/item/circuit_component/self
/datum/design/component/radio
name = "Radio Component"
id = "comp_radio"
build_path = /obj/item/circuit_component/radio
/datum/design/component/gps
name = "GPS Component"
id = "comp_gps"
build_path = /obj/item/circuit_component/gps
/datum/design/component/direction
name = "Direction Component"
id = "comp_direction"
build_path = /obj/item/circuit_component/direction
/datum/design/component/reagentscanner
name = "Reagents Scanner"
id = "comp_reagents"
build_path = /obj/item/circuit_component/reagentscanner
/datum/design/component/health
name = "Health Component"
id = "comp_health"
build_path = /obj/item/circuit_component/health
/datum/design/component/compare/health_state
name = "Compare Health State Component"
id = "comp_health_state"
build_path = /obj/item/circuit_component/compare/health_state
/datum/design/component/matscanner
name = "Material Scanner"
id = "comp_matscanner"
build_path = /obj/item/circuit_component/matscanner
/datum/design/component/split
name = "Split Component"
id = "comp_split"
build_path = /obj/item/circuit_component/split
/datum/design/component/pull
name = "Pull Component"
id = "comp_pull"
build_path = /obj/item/circuit_component/pull
/datum/design/component/soundemitter
name = "Sound Emitter Component"
id = "comp_soundemitter"
build_path = /obj/item/circuit_component/soundemitter
/datum/design/component/mmi
name = "MMI Component"
id = "comp_mmi"
build_path = /obj/item/circuit_component/mmi
/datum/design/component/router
name = "Router Component"
id = "comp_router"
build_path = /obj/item/circuit_component/router
/datum/design/component/multiplexer
name = "Multiplexer Component"
id = "comp_multiplexer"
build_path = /obj/item/circuit_component/router/multiplexer
/datum/design/component/get_column
name = "Get Column Component"
id = "comp_get_column"
build_path = /obj/item/circuit_component/get_column
/datum/design/component/index_table
name = "Index Table Component"
id = "comp_index_table"
build_path = /obj/item/circuit_component/index_table
/datum/design/component/concat_list
name = "Concatenate List Component"
id = "comp_concat_list"
build_path = /obj/item/circuit_component/concat_list
/datum/design/component/list_add
name = "List Add"
id = "comp_list_add"
build_path = /obj/item/circuit_component/variable/list/listadd
/datum/design/component/list_remove
name = "List Remove"
id = "comp_list_remove"
build_path = /obj/item/circuit_component/variable/list/listremove
/datum/design/component/assoc_list_set
name = "Associative List Set"
id = "comp_assoc_list_set"
build_path = /obj/item/circuit_component/variable/assoc_list/list_set
/datum/design/component/assoc_list_remove
name = "Associative List Remove"
id = "comp_assoc_list_remove"
build_path = /obj/item/circuit_component/variable/assoc_list/list_remove
/datum/design/component/list_clear
name = "List Clear"
id = "comp_list_clear"
build_path = /obj/item/circuit_component/variable/list/listclear
/datum/design/component/element_find
name = "Element Find"
id = "comp_element_find"
build_path = /obj/item/circuit_component/listin
/datum/design/component/select_query
name = "Select Query Component"
id = "comp_select_query"
build_path = /obj/item/circuit_component/select
/datum/design/component/pathfind
name = "Pathfinder"
id = "comp_pathfind"
build_path = /obj/item/circuit_component/pathfind
/datum/design/component/tempsensor
name = "Temperature Sensor Component"
id = "comp_tempsensor"
build_path = /obj/item/circuit_component/tempsensor
/datum/design/component/pressuresensor
name = "Pressure Sensor Component"
id = "comp_pressuresensor"
build_path = /obj/item/circuit_component/pressuresensor
/datum/design/component/module
name = "Module Component"
id = "comp_module"
build_path = /obj/item/circuit_component/module
/datum/design/component/ntnet_receive
name = "NTNet Receiver"
id = "comp_ntnet_receive"
build_path = /obj/item/circuit_component/ntnet_receive
/datum/design/component/ntnet_send
name = "NTNet Transmitter"
id = "comp_ntnet_send"
build_path = /obj/item/circuit_component/ntnet_send
/datum/design/component/list_literal/ntnet_send
name = "NTNet Transmitter List Literal"
id = "comp_ntnet_send_list_literal"
build_path = /obj/item/circuit_component/list_literal/ntnet_send
/datum/design/component/list_literal
name = "List Literal Component"
id = "comp_list_literal"
build_path = /obj/item/circuit_component/list_literal
/datum/design/component/list_assoc_literal
name = "Associative List Literal"
id = "comp_list_assoc_literal"
build_path = /obj/item/circuit_component/assoc_literal
/datum/design/component/typecast
name = "Typecast Component"
id = "comp_typecast"
build_path = /obj/item/circuit_component/typecast
/datum/design/component/pinpointer
name = "Proximity Pinpointer Component"
id = "comp_pinpointer"
build_path = /obj/item/circuit_component/pinpointer
/datum/design/component/equipment_action
name = "Equipment Action Component"
id = "comp_equip_action"
build_path = /obj/item/circuit_component/equipment_action
/datum/design/component/bci/object_overlay
name = "Object Overlay Component"
id = "comp_object_overlay"
build_path = /obj/item/circuit_component/object_overlay
/datum/design/component/bci/bar_overlay
name = "Bar Overlay Component"
id = "comp_bar_overlay"
build_path = /obj/item/circuit_component/object_overlay/bar
/datum/design/component/bci/vox
name = "VOX Announcement Component"
id = "comp_vox"
build_path = /obj/item/circuit_component/vox
/datum/design/component/bci/thought_listener
name = "Thought Listener Component"
id = "comp_thought_listener"
build_path = /obj/item/circuit_component/thought_listener
/datum/design/component/bci/target_intercept
name = "BCI Target Interceptor"
id = "comp_target_intercept"
build_path = /obj/item/circuit_component/target_intercept
/datum/design/component/bci/counter_overlay
name = "Counter Overlay Component"
id = "comp_counter_overlay"
build_path = /obj/item/circuit_component/counter_overlay
/datum/design/component/bci/reagent_injector
name = "Reagent Injector Component"
id = "comp_reagent_injector"
build_path = /obj/item/circuit_component/reagent_injector
/datum/design/component/bci/install_detector
name = "Install Detector Component"
id = "comp_install_detector"
build_path = /obj/item/circuit_component/install_detector
/datum/design/component/foreach
name = "For Each Component"
id = "comp_foreach"
build_path = /obj/item/circuit_component/foreach
/datum/design/component/filter_list
name = "Filter List Component"
id = "comp_filter_list"
build_path = /obj/item/circuit_component/filter_list
/datum/design/component/id_getter
name = "ID Getter Component"
id = "comp_id_getter"
build_path = /obj/item/circuit_component/id_getter
/datum/design/component/id_info_reader
name = "ID Info Reader Component"
id = "comp_id_info_reader"
build_path = /obj/item/circuit_component/id_info_reader
/datum/design/component/id_access_reader
name = "ID Access Reader Component"
id = "comp_id_access_reader"
build_path = /obj/item/circuit_component/id_access_reader
/datum/design/component/setter_trigger
name = "Set Variable Trigger"
id = "comp_set_variable_trigger"
build_path = /obj/item/circuit_component/variable/setter/trigger
/datum/design/component/view_sensor
name = "View Sensor Component"
id = "comp_view_sensor"
build_path = /obj/item/circuit_component/view_sensor
/datum/design/component/access_checker
name = "Access Checker Component"
id = "comp_access_checker"
build_path = /obj/item/circuit_component/compare/access
/datum/design/component/list_pick
name = "List Pick Component"
id = "comp_list_pick"
build_path = /obj/item/circuit_component/list_pick
/datum/design/component/list_pick_assoc
name = "Associative List Pick Component"
id = "comp_assoc_list_pick"
build_path = /obj/item/circuit_component/list_pick/assoc
/datum/design/component/bci/bci_camera
name = "BCI Camera"
id = "comp_camera_bci"
build_path = /obj/item/circuit_component/remotecam/bci
/datum/design/compact_remote_shell
name = "Compact Remote Shell"
desc = "A handheld shell with one big button."
id = "compact_remote_shell"
build_path = /obj/item/compact_remote
materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5)
build_type = COMPONENT_PRINTER
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
/datum/design/controller_shell
name = "Controller Shell"
desc = "A handheld shell with several buttons."
id = "controller_shell"
build_path = /obj/item/controller
build_type = COMPONENT_PRINTER
materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*3.5)
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
/datum/design/scanner_shell
name = "Scanner Shell"
desc = "A handheld scanner shell that can scan entities."
id = "scanner_shell"
build_path = /obj/item/wiremod_scanner
build_type = COMPONENT_PRINTER
materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*3.5)
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
/datum/design/keyboard_shell
name = "Keyboard Shell"
desc = "A handheld shell that allows the user to input a string"
id = "keyboard_shell"
build_path = /obj/item/keyboard_shell
materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*5)
build_type = COMPONENT_PRINTER
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
/datum/design/gun_shell
name = "Gun Shell"
desc = "A handheld shell that can fire projectiles to output entities."
id = "gun_shell"
build_path = /obj/item/gun/energy/wiremod_gun
build_type = COMPONENT_PRINTER
materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*5, /datum/material/plasma =SMALL_MATERIAL_AMOUNT)
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
/datum/design/bot_shell
name = "Bot Shell"
desc = "An immobile shell that can store more components. Has a USB port to be able to connect to computers and machines."
id = "bot_shell"
build_path = /obj/item/shell/bot
build_type = COMPONENT_PRINTER
materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*5)
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
/datum/design/money_bot_shell
name = "Money Bot Shell"
desc = "An immobile shell that is similar to a regular bot shell, but accepts monetary inputs and can also dispense money."
id = "money_bot_shell"
build_path = /obj/item/shell/money_bot
build_type = COMPONENT_PRINTER
materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*5, /datum/material/gold =SMALL_MATERIAL_AMOUNT*0.5)
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
/datum/design/drone_shell
name = "Drone Shell"
desc = "A shell with the ability to move itself around."
id = "drone_shell"
build_path = /obj/item/shell/drone
build_type = COMPONENT_PRINTER
materials = list(
/datum/material/glass =SHEET_MATERIAL_AMOUNT,
/datum/material/iron = SHEET_MATERIAL_AMOUNT*5.5,
/datum/material/gold =SMALL_MATERIAL_AMOUNT*5,
)
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
/datum/design/server_shell
name = "Server Shell"
desc = "A very large shell that cannot be moved around. Stores the most components."
id = "server_shell"
materials = list(
/datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5,
/datum/material/iron = SHEET_MATERIAL_AMOUNT*7.5,
/datum/material/gold =HALF_SHEET_MATERIAL_AMOUNT * 1.5,
)
build_path = /obj/item/shell/server
build_type = COMPONENT_PRINTER
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
/datum/design/airlock_shell
name = "Airlock Shell"
desc = "A door shell that cannot be moved around when assembled."
id = "door_shell"
materials = list(
/datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5,
/datum/material/iron = SHEET_MATERIAL_AMOUNT*7.5,
)
build_path = /obj/item/shell/airlock
build_type = COMPONENT_PRINTER
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
/datum/design/dispenser_shell
name = "Dispenser Shell"
desc = "A dispenser shell that can dispense items."
id = "dispenser_shell"
materials = list(
/datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5,
/datum/material/iron = SHEET_MATERIAL_AMOUNT*7.5,
)
build_path = /obj/item/shell/dispenser
build_type = COMPONENT_PRINTER
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
/datum/design/bci_shell
name = "Brain-Computer Interface Shell"
desc = "An implant that can be placed in a user's head to control circuits using their brain."
id = "bci_shell"
materials = list(
/datum/material/glass =SHEET_MATERIAL_AMOUNT,
/datum/material/iron = SHEET_MATERIAL_AMOUNT*4,
)
build_path = /obj/item/shell/bci
build_type = COMPONENT_PRINTER
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
/datum/design/scanner_gate_shell
name = "Scanner Gate Shell"
desc = "A scanner gate shell that performs mid-depth scans on people when they pass through it."
id = "scanner_gate_shell"
materials = list(
/datum/material/glass = SHEET_MATERIAL_AMOUNT*2,
/datum/material/iron = SHEET_MATERIAL_AMOUNT*6,
)
build_path = /obj/item/shell/scanner_gate
build_type = COMPONENT_PRINTER
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
/datum/design/board/bci_implanter
name = "Brain-Computer Interface Manipulation Chamber"
desc = "A machine that, when given a brain-computer interface, will implant it into an occupant. Otherwise, will remove any brain-computer interfaces they already have."
id = "bci_implanter"
build_path = /obj/item/circuitboard/machine/bci_implanter
build_type = COMPONENT_PRINTER
category = list(
RND_CATEGORY_CIRCUITRY + RND_CATEGORY_CIRCUITRY_CORE
)
/datum/design/assembly_shell
name = "Assembly Shell"
desc = "An assembly shell that can be attached to wires and other assemblies."
id = "assembly_shell"
materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5)
build_path = /obj/item/assembly/wiremod
build_type = COMPONENT_PRINTER
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
/datum/design/mod_module_shell
name = "MOD Module Shell"
desc = "A module shell that allows a circuit to be inserted into, and interface with, a MODsuit."
id = "module_shell"
materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT)
build_path = /obj/item/mod/module/circuit
build_type = COMPONENT_PRINTER
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)