Integrated Circuit Overhaul 2.0 (#22647)

Complete overhaul of Integrated Circuits Final Edition!

- Adds phoron cost to circuits (not assemblies).
- Printer searching capability.
- Changed names of assemblies to better match their description.
- Adds cloning and auto appending JSON for large builds.
- Adds database, debug, advanced math circuits.
- Reworks the list circuits to finally accept anything other than NUM.
- Adds plenty of list circuits to allow functional building and clearing
of lists.
- Reworks Complexity/Space to allow a bit better flexibility in creation
of devices.
- Adds a "Headroom" concept where space/complexity can go beyond the
maximum to a very slight degree. Concretely, unused space gives `2`
extra complexity per unused component slot, capped at `15%` of
`max_complexity`. Unused complexity gives `1` extra component slot per
`6` unused complexity, capped at `15%` of `max_components`.
- Groups math and logic circuits and adds subgroups.
- Doesn't mess with the circuit tool kit.
- Adds a xenoarch drill assembly with a nice sprite. Thank you
@EnchantedCrocolisk for the sprite!
- Changes activation limit time to 1 second from 2 seconds, adds a 1
second timer that is unique to the INTEGRATED CIRCUIT PRINTER with the
advanced design disk.
- Ports several Baystation integrated-circuit manipulation components,
primarily from
Baystation12/Baystation12https://github.com/Baystation12/Baystation12/pull/22458,
with anchoring bolts and hatch lock sourced from
Baystation12/Baystation12https://github.com/Baystation12/Baystation12/pull/25052.
- Changes the electronic ear piece into a workable radio headset with
working encryption keys capability and unique ways the Microphone and
TTS interacts with it.
- Removed the ability for all the electronic wearables to spawn with a
basic cell.
- Combines https://github.com/Aurorastation/Aurora.3/pull/22466,
https://github.com/Aurorastation/Aurora.3/pull/22456,
https://github.com/Aurorastation/Aurora.3/pull/22455,
https://github.com/Aurorastation/Aurora.3/pull/22446 that are now
closed.
This commit is contained in:
mineymonkey
2026-07-26 19:52:31 +00:00
committed by GitHub
parent e7b3da61c6
commit 6c6f596d89
52 changed files with 10433 additions and 842 deletions
@@ -1,3 +1,8 @@
/*
* passive/passive.dm
* Base passive circuit category for circuits that provide background behavior instead of triggered work.
*/
// 'Passive' components do not have any pins, and instead contribute in some form to the assembly holding them.
/obj/item/integrated_circuit/passive
inputs = list()
@@ -1,7 +1,12 @@
/*
* passive/power.dm
* Passive power circuits and power-network integration for assemblies.
*/
/obj/item/integrated_circuit/passive/power
name = "power thingy"
desc = "Does power stuff."
desc = "Base type for integrated power circuits."
complexity = 5
origin_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2, TECH_DATA = 2)
category_text = "Power - Passive"
@@ -12,14 +17,13 @@
// For calculators.
/obj/item/integrated_circuit/passive/power/solar_cell
name = "tiny photovoltaic cell"
desc = "It's a very tiny solar cell, generally used in calculators."
desc = "A very small solar cell for low-power assemblies."
extended_desc = "The cell generates up to 100 W of energy in optimal lighting conditions. Less light will result in less power being generated."
icon_state = "solar_cell"
complexity = 8
origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3, TECH_DATA = 2)
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
/// Multiplied by amount of lumens to get amount of power to generate.
var/power_factor = 15
/obj/item/integrated_circuit/passive/power/solar_cell/make_energy()
@@ -33,7 +37,7 @@
// For fat machines that need fat power, like drones.
/obj/item/integrated_circuit/passive/power/relay
name = "tesla power relay"
desc = "A seemingly enigmatic device which connects to nearby APCs wirelessly and draws power from them."
desc = "Connects to nearby APCs wirelessly and draws power from them."
w_class = WEIGHT_CLASS_NORMAL
extended_desc = "The siphon generates 1 kW of energy, so long as an APC is in the same room, with a cell that has energy. It will always drain \
from the 'equipment' power channel."
@@ -46,7 +50,7 @@
// For really fat machines.
/obj/item/integrated_circuit/passive/power/relay/large
name = "large tesla power relay"
desc = "A seemingly enigmatic device which connects to nearby APCs wirelessly and draws power from them, now in industiral size!"
desc = "Connects to nearby APCs wirelessly and draws a larger amount of power from them."
w_class = WEIGHT_CLASS_BULKY
extended_desc = "The siphon generates 4 kW of energy, so long as an APC is in the same room, with a cell that has energy. It will always drain \
from the 'equipment' power channel."
@@ -68,7 +72,7 @@
// For implants.
/obj/item/integrated_circuit/passive/power/metabolic_siphon
name = "metabolic siphon"
desc = "A complicated piece of technology which converts bodily nutriments of a host into electricity, or vice versa."
desc = "Converts a host's nutrients into electricity, or uses electricity to supply nutrients."
extended_desc = "The siphon generates 10W of energy, so long as the siphon exists inside a biological entity. The entity will feel an increased \
appetite and will need to eat more often due to this. This device will fail if used inside synthetic entities.\
If the polarity is reversed, it will instead generate chemical energy with electricity, continuously consuming power from the assembly.\
@@ -122,7 +126,7 @@
name = "fuel cell"
desc = "Produces electricity from chemicals."
icon_state = "chemical_cell"
extended_desc = "This is effectively an internal beaker. It will consume and produce power from phoron, slime jelly, welding fuel, carbon,\
extended_desc = "Functions as an internal beaker for the assembly. It will consume and produce power from phoron, slime jelly, welding fuel, carbon,\
ethanol, nutriments and blood, in order of decreasing efficiency. It will consume fuel only if the battery can take more energy."
atom_flags = ATOM_FLAG_OPEN_CONTAINER
@@ -162,25 +166,33 @@
name = "power network interface"
desc = "Gives or takes power from a wire underneath the machine."
icon_state = "powernet"
extended_desc = "The assembly must be anchored, with a wrench, and a wire node must be avaiable directly underneath.<br>\
extended_desc = "The assembly must be anchored, with a wrench, and a wire node must be available directly underneath.<br>\
The first pin determines if power is moved at all. The second pin, if true, will draw from the powernet to charge the assembly's \
cell, otherwise it will give power from the cell to the powernet."
complexity = 20
size = 1
inputs = list(
"active" = IC_PINTYPE_BOOLEAN,
"draw power" = IC_PINTYPE_BOOLEAN
)
)
outputs = list(
"power in grid" = IC_PINTYPE_NUMBER,
"surplus power" = IC_PINTYPE_NUMBER,
"load" = IC_PINTYPE_NUMBER
)
)
activators = list()
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 2, TECH_POWER = 2)
var/obj/structure/machinery/power/circuit_io/IO = null // Dummy power machine to move energy in/out without a bunch of code duplication.
var/throughput = 10000 // Give/take up to 10kW.
/obj/item/integrated_circuit/passive/power/powernet/builtin
name = "built-in power network interface"
desc = "A built-in power network interface for machine-integrated electronic assemblies."
complexity = 0
size = 0
spawn_flags = 0
/obj/item/integrated_circuit/passive/power/powernet/Initialize()
IO = new(src)
return ..()