Files
Bubberstation/code/modules/research/designs/wiremod_designs.dm
Y0SH1M4S73R 90b67b0541 A Small Circuit Expansion: Wallmounts, Undertiles, and Wire Bundles (#89122)
## About The Pull Request

This PR adds several circuit features, and changes several
assembly-related features to make them a bit more logical in how they
work. Included are the following changes/additions:

- Assemblies and wires have been refactored with vars that describe
their behavior:
- Assemblies have an `assembly_behavior` bitflag instead of a
`attachable` var. This var has 3 flags:
- `ASSEMBLY_INPUT`: The assembly is able to pulse the wire it is
attached to.
- `ASSEMBLY_TOGGLE_ARMED`: On activation, the assembly toggles whether
it can pulse the wire it is attached to.
- `ASSEMBLY_FUNCTIONAL_OUTPUT`: On activation, the assembly does
something other than just toggling whether it's armed.
  - Wires have a `wires_behavior` bitflag with 3 flags:
- `WIRES_INPUT`: The object the wires are attached to does something
when the wires are pulsed.
- `WIRES_TOGGLE_ARMED`: The object the wires are attached to can
activate assemblies attached to those wires, and is fine if all that
activating that assembly does is toggle whether it's armed.
- `WIRES_FUNCTIONAL_OUTPUT`: The object the wires are attached to
expects that assemblies attached to its wires do something other than
toggling themselves when activated.
- Buttons can only accept assemblies with `ASSEMBLY_FUNCTIONAL_OUTPUT`.
- Pressure plates can now accept any assembly with
`ASSEMBLY_FUNCTIONAL_OUTPUT`, not just signalers. Assembly shells
attached to pressure plates will draw power from the powernet if the
pressure plate is under a tile.
- Adds a new circuit component - the wire bundle.
- This component gives the circuit a number of wires corresponding to
the size of the shell.
- Each wire has a corresponding port on the component that can pulse,
and receive pulses from, that wire.
  - A circuit can only have one wire bundle component.
- Assembly shells cannot be attached to these wires, and no wires will
be created if the component is added to an assembly shell.
  - Available with roundstart tech.
- Adds two new shells.
- The wallmounted shell is a large shell that can be hung on walls, and
uses power from the area it's placed in.
    - Frame icon:

![image](https://github.com/user-attachments/assets/2fe9297d-44a9-4ceb-b803-a758e59b807d)
    - Constructed icon:

![image](https://github.com/user-attachments/assets/34c3ffcb-53cb-415f-952f-aec5de63cf17)
- The undertile shell is a small shell that only works when fit under a
floor tile, but uses power from the area it's placed in.

![image](https://github.com/user-attachments/assets/11ea150d-08be-4ce9-bf44-35a9d6e2d94f)
  - Both shells support usb cables.
- The above shells are available with the Advanced Shells techweb node.

## Why It's Good For The Game

The wire bundle component complements the functionality of the assembly
shell by allowing circuits to use assemblies directly in their logic.

The wallmounted and undertile shells provide ways of placing circuits
that don't necessarily take up space for machines. The undertile shell
is particularly useful for relaying usb component data over wirenets.

Pressure plates being able to accept assemblies other than signalers
expands their uses significantly.

## Changelog

🆑
refactor: Wires and assemblies have been refactored to have
directionality to them. This mostly makes it so that assemblies can only
be attached to wires it would make sense for them to be attached to.
qol: Pressure plates can now also accept igniters, condensers, flashes,
assembly shells, and door controllers.
add: Undertile circuit shells. They only work when placed under floor
tiles, but support USB cables and use APC power instead of cell power.
add: Wallmounted circuit shells. Large shells that support USB cables
and use APC power instead of cell power.
add: Wire bundle component. Adds a number of wires to the circuit
proportional to the capacity of the shell, allowing you to use
assemblies in circuit logic.
/🆑
2025-01-19 18:40:23 +00:00

728 lines
22 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/nfc_send
name = "NFC Transmitter"
id = "comp_nfc_send"
build_path = /obj/item/circuit_component/nfc_send
/datum/design/component/nfc_receive
name = "NFC Receiver"
id = "comp_nfc_receive"
build_path = /obj/item/circuit_component/nfc_receive
/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/wire_bundle
name = "Wire Bundle"
id = "comp_wire_bundle"
build_path = /obj/item/circuit_component/wire_bundle
/datum/design/component/wirenet_receive
name = "Wirenet Receiver Component"
id = "comp_wirenet_receive"
build_path = /obj/item/circuit_component/wirenet_receive
/datum/design/component/wirenet_send
name = "Wirenet Transmitter Component"
id = "comp_wirenet_send"
build_path = /obj/item/circuit_component/wirenet_send
/datum/design/component/wirenet_send_literal
name = "Wirenet List Literal Transmitter Component"
id = "comp_wirenet_send_literal"
build_path = /obj/item/circuit_component/list_literal/wirenet_send
/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
)
/datum/design/undertile_shell
name = "Under-tile Shell"
desc = "A small shell that can fit under the floor."
id = "undertile_shell"
materials = list(
/datum/material/glass=HALF_SHEET_MATERIAL_AMOUNT,
/datum/material/iron=SHEET_MATERIAL_AMOUNT*2.5,
)
build_path = /obj/item/undertile_circuit
build_type = COMPONENT_PRINTER
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
/datum/design/wallmount_shell
name = "Wall-mounted Shell"
desc = "A large shell that can be mounted on a wall."
id = "wallmount_shell"
materials = list(
/datum/material/glass=SHEET_MATERIAL_AMOUNT,
/datum/material/iron=SHEET_MATERIAL_AMOUNT*5,
)
build_path = /obj/item/wallframe/circuit
build_type = COMPONENT_PRINTER
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)