mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Merge pull request #12810 from ItsSelis/circuit-update
Circuitry Update
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
// Methods of obtaining a circuit.
|
// Methods of obtaining a circuit.
|
||||||
#define IC_SPAWN_DEFAULT 1 // If the circuit comes in the default circuit box and able to be printed in the IC printer.
|
#define IC_SPAWN_DEFAULT 1 // If the circuit comes in the default circuit box and able to be printed in the IC printer.
|
||||||
#define IC_SPAWN_RESEARCH 2 // If the circuit design will be available in the IC printer after upgrading it.
|
#define IC_SPAWN_RESEARCH 2 // If the circuit design will be available in the IC printer after upgrading it.
|
||||||
|
#define IC_SPAWN_ILLEGAL 3 // If the circuit design will be available if upgrading the IC printer illegally.
|
||||||
@@ -376,7 +376,7 @@
|
|||||||
if(battery)
|
if(battery)
|
||||||
var/lost = battery.use(amount * CELLRATE)
|
var/lost = battery.use(amount * CELLRATE)
|
||||||
net_power -= lost
|
net_power -= lost
|
||||||
return lost > 0
|
return lost
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
// Ditto for giving.
|
// Ditto for giving.
|
||||||
|
|||||||
@@ -11,11 +11,21 @@
|
|||||||
var/debug = FALSE // If true, metal is infinite.
|
var/debug = FALSE // If true, metal is infinite.
|
||||||
|
|
||||||
var/upgraded = FALSE // When hit with an upgrade disk, will turn true, allowing it to print the higher tier circuits.
|
var/upgraded = FALSE // When hit with an upgrade disk, will turn true, allowing it to print the higher tier circuits.
|
||||||
|
var/illegal_upgraded = FALSE // When hit with an illegal upgrade disk, will turn true, allowing it to print the illegal circuits.
|
||||||
var/can_clone = FALSE // Same for above, but will allow the printer to duplicate a specific assembly. (Not implemented)
|
var/can_clone = FALSE // Same for above, but will allow the printer to duplicate a specific assembly. (Not implemented)
|
||||||
// var/static/list/recipe_list = list()
|
// var/static/list/recipe_list = list()
|
||||||
var/obj/item/device/electronic_assembly/assembly_to_clone = null // Not implemented x3
|
var/obj/item/device/electronic_assembly/assembly_to_clone = null // Not implemented x3
|
||||||
var/dirty_items = FALSE
|
var/dirty_items = FALSE
|
||||||
|
|
||||||
|
/obj/item/device/integrated_circuit_printer/all_upgrades
|
||||||
|
upgraded = TRUE
|
||||||
|
illegal_upgraded = TRUE
|
||||||
|
can_clone = TRUE
|
||||||
|
|
||||||
|
/obj/item/device/integrated_circuit_printer/illegal
|
||||||
|
illegal_upgraded = TRUE
|
||||||
|
can_clone = TRUE
|
||||||
|
|
||||||
/obj/item/device/integrated_circuit_printer/upgraded
|
/obj/item/device/integrated_circuit_printer/upgraded
|
||||||
upgraded = TRUE
|
upgraded = TRUE
|
||||||
can_clone = TRUE
|
can_clone = TRUE
|
||||||
@@ -24,6 +34,7 @@
|
|||||||
name = "fractal integrated circuit printer"
|
name = "fractal integrated circuit printer"
|
||||||
desc = "A portable(ish) machine that makes modular circuitry seemingly out of thin air."
|
desc = "A portable(ish) machine that makes modular circuitry seemingly out of thin air."
|
||||||
upgraded = TRUE
|
upgraded = TRUE
|
||||||
|
illegal_upgraded = TRUE
|
||||||
can_clone = TRUE
|
can_clone = TRUE
|
||||||
debug = TRUE
|
debug = TRUE
|
||||||
|
|
||||||
@@ -68,6 +79,16 @@
|
|||||||
attack_self(user)
|
attack_self(user)
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
|
if(istype(O,/obj/item/weapon/disk/integrated_circuit/upgrade/illegal))
|
||||||
|
if(illegal_upgraded)
|
||||||
|
to_chat(user, span("warning", "\The [src] already has this upgrade."))
|
||||||
|
return TRUE
|
||||||
|
to_chat(user, span("notice", "You install \the [O] into \the [src]."))
|
||||||
|
illegal_upgraded = TRUE
|
||||||
|
dirty_items = TRUE
|
||||||
|
attack_self(user)
|
||||||
|
return TRUE
|
||||||
|
|
||||||
if(istype(O,/obj/item/weapon/disk/integrated_circuit/upgrade/clone))
|
if(istype(O,/obj/item/weapon/disk/integrated_circuit/upgrade/clone))
|
||||||
if(can_clone)
|
if(can_clone)
|
||||||
to_chat(user, span("warning", "\The [src] already has this upgrade."))
|
to_chat(user, span("warning", "\The [src] already has this upgrade."))
|
||||||
@@ -110,6 +131,8 @@
|
|||||||
"name" = category,
|
"name" = category,
|
||||||
"items" = null
|
"items" = null
|
||||||
)
|
)
|
||||||
|
if(cat_obj["name"] == "Illegal Parts" && !illegal_upgraded)
|
||||||
|
continue
|
||||||
var/list/circuit_list = SScircuit.circuit_fabricator_recipe_list[category]
|
var/list/circuit_list = SScircuit.circuit_fabricator_recipe_list[category]
|
||||||
var/list/items = list()
|
var/list/items = list()
|
||||||
for(var/path in circuit_list)
|
for(var/path in circuit_list)
|
||||||
@@ -212,6 +235,12 @@
|
|||||||
name = "integrated circuit printer upgrade disk - advanced designs"
|
name = "integrated circuit printer upgrade disk - advanced designs"
|
||||||
desc = "Install this into your integrated circuit printer to enhance it. This one adds new, advanced designs to the printer."
|
desc = "Install this into your integrated circuit printer to enhance it. This one adds new, advanced designs to the printer."
|
||||||
|
|
||||||
|
/obj/item/weapon/disk/integrated_circuit/upgrade/illegal
|
||||||
|
name = "integrated circuit printer upgrade disk - illegal designs"
|
||||||
|
desc = "Install this into your integrated circuit printer to enhance it. This one adds new, but illegal designs to the printer."
|
||||||
|
icon_state = "upgrade_disk_illegal"
|
||||||
|
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 4, TECH_ILLEGAL = 1)
|
||||||
|
|
||||||
// To be implemented later.
|
// To be implemented later.
|
||||||
/obj/item/weapon/disk/integrated_circuit/upgrade/clone
|
/obj/item/weapon/disk/integrated_circuit/upgrade/clone
|
||||||
name = "integrated circuit printer upgrade disk - circuit cloner"
|
name = "integrated circuit printer upgrade disk - circuit cloner"
|
||||||
|
|||||||
@@ -215,7 +215,7 @@
|
|||||||
assembly.give_power(amount)
|
assembly.give_power(amount)
|
||||||
else
|
else
|
||||||
var/amount = assembly.draw_power(throughput)
|
var/amount = assembly.draw_power(throughput)
|
||||||
IO.add_avail(amount)
|
IO.add_avail(amount / CELLRATE)
|
||||||
|
|
||||||
set_pin_data(IC_OUTPUT, 1, IO.avail())
|
set_pin_data(IC_OUTPUT, 1, IO.avail())
|
||||||
set_pin_data(IC_OUTPUT, 2, IO.surplus())
|
set_pin_data(IC_OUTPUT, 2, IO.surplus())
|
||||||
|
|||||||
89
code/modules/integrated_electronics/subtypes/cryptography.dm
Normal file
89
code/modules/integrated_electronics/subtypes/cryptography.dm
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
/obj/item/integrated_circuit/cryptography
|
||||||
|
complexity = 3
|
||||||
|
inputs = list("input" = IC_PINTYPE_STRING)
|
||||||
|
outputs = list("result" = IC_PINTYPE_STRING)
|
||||||
|
activators = list("compute" = IC_PINTYPE_PULSE_IN, "on computed" = IC_PINTYPE_PULSE_OUT)
|
||||||
|
category_text = "Cryptography"
|
||||||
|
power_draw_per_use = 10
|
||||||
|
|
||||||
|
// HASH FUNCTIONS
|
||||||
|
|
||||||
|
/obj/item/integrated_circuit/cryptography/hash_md5
|
||||||
|
name = "MD5 hash circuit"
|
||||||
|
desc = "Message-Digest Algorithm 5"
|
||||||
|
extended_desc = "This circuit will take a string input and generates the MD5 hash of it."
|
||||||
|
icon_state = "template"
|
||||||
|
spawn_flags = IC_SPAWN_RESEARCH
|
||||||
|
|
||||||
|
/obj/item/integrated_circuit/cryptography/hash_md5/do_work()
|
||||||
|
var/result = ""
|
||||||
|
for(var/datum/integrated_io/I in inputs)
|
||||||
|
I.pull_data()
|
||||||
|
if(!isnull(I.data))
|
||||||
|
result = md5(I.data)
|
||||||
|
|
||||||
|
set_pin_data(IC_OUTPUT, 1, result)
|
||||||
|
push_data()
|
||||||
|
activate_pin(2)
|
||||||
|
|
||||||
|
/obj/item/integrated_circuit/cryptography/hash_sha1
|
||||||
|
name = "SHA1 hash circuit"
|
||||||
|
desc = "Secure Hash Algorithm 1"
|
||||||
|
extended_desc = "This circuit will take a string input and generates the SHA1 hash of it."
|
||||||
|
icon_state = "template"
|
||||||
|
spawn_flags = IC_SPAWN_RESEARCH
|
||||||
|
power_draw_per_use = 20
|
||||||
|
|
||||||
|
/obj/item/integrated_circuit/cryptography/hash_sha1/do_work()
|
||||||
|
var/result = ""
|
||||||
|
for(var/datum/integrated_io/I in inputs)
|
||||||
|
I.pull_data()
|
||||||
|
if(!isnull(I.data))
|
||||||
|
result = sha1(I.data)
|
||||||
|
|
||||||
|
set_pin_data(IC_OUTPUT, 1, result)
|
||||||
|
push_data()
|
||||||
|
activate_pin(2)
|
||||||
|
|
||||||
|
|
||||||
|
// ENCRYPTION/DECRYPTION
|
||||||
|
|
||||||
|
/obj/item/integrated_circuit/cryptography/rot13
|
||||||
|
name = "rot13 circuit"
|
||||||
|
desc = "A very simple encryption circuit."
|
||||||
|
extended_desc = "The 'rotation' field will default to 13 if no custom number is supplied. This circuit rotates every letter by X in the alphabet."
|
||||||
|
icon_state = "template"
|
||||||
|
inputs = list(
|
||||||
|
"input" = IC_PINTYPE_STRING,
|
||||||
|
"rotation" = IC_PINTYPE_NUMBER
|
||||||
|
)
|
||||||
|
spawn_flags = IC_SPAWN_RESEARCH
|
||||||
|
|
||||||
|
/obj/item/integrated_circuit/cryptography/rot13/do_work()
|
||||||
|
var/result = ""
|
||||||
|
|
||||||
|
var/input = get_pin_data(IC_INPUT, 1)
|
||||||
|
var/rotation = get_pin_data(IC_INPUT, 2)
|
||||||
|
|
||||||
|
var/string_len = length(input)
|
||||||
|
|
||||||
|
if(!isnum(rotation))
|
||||||
|
rotation = 13
|
||||||
|
|
||||||
|
for(var/i = 1, i <= string_len, i++)
|
||||||
|
var/ascii = text2ascii(input, i)
|
||||||
|
if(ascii >= 65 && ascii <= 90)
|
||||||
|
ascii += rotation
|
||||||
|
if(ascii > 90)
|
||||||
|
ascii -= 26
|
||||||
|
|
||||||
|
else if(ascii >= 97 && ascii <= 122)
|
||||||
|
ascii += rotation
|
||||||
|
if(ascii > 122)
|
||||||
|
ascii -= 26
|
||||||
|
|
||||||
|
result += ascii2text(ascii)
|
||||||
|
|
||||||
|
set_pin_data(IC_OUTPUT, 1, result)
|
||||||
|
push_data()
|
||||||
|
activate_pin(2)
|
||||||
121
code/modules/integrated_electronics/subtypes/illegal.dm
Normal file
121
code/modules/integrated_electronics/subtypes/illegal.dm
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
/obj/item/integrated_circuit/illegal
|
||||||
|
complexity = 3
|
||||||
|
category_text = "Illegal Parts"
|
||||||
|
power_draw_per_use = 50
|
||||||
|
|
||||||
|
/* [WIP]
|
||||||
|
/obj/item/integrated_circuit/illegal/EPv2_Spoofer
|
||||||
|
name = "\improper EPv2 Spoofer circuit"
|
||||||
|
desc = "Enables the receiving of messages of other Exonet devices."
|
||||||
|
extended_desc = "An EPv2 address is a string with the format of XXXX:XXXX:XXXX:XXXX. Data can be received using the \
|
||||||
|
second pin, with additonal data reserved for the third pin. When a message is received, the second activation pin \
|
||||||
|
will pulse whatever's connected to it. Pulsing the first activation pin will set the given EPv2 address.\
|
||||||
|
\
|
||||||
|
Note: Receiving messages could cause the circuit to accidentally send malformed data to the target address."
|
||||||
|
icon_state = "signal_illegal"
|
||||||
|
complexity = 6
|
||||||
|
inputs = list("target EPv2 address" = IC_PINTYPE_STRING)
|
||||||
|
outputs = list(
|
||||||
|
"address received" = IC_PINTYPE_STRING,
|
||||||
|
"data received" = IC_PINTYPE_STRING,
|
||||||
|
"secondary text received" = IC_PINTYPE_STRING
|
||||||
|
)
|
||||||
|
activators = list("set spoof address" = IC_PINTYPE_PULSE_IN, "on data received" = IC_PINTYPE_PULSE_OUT)
|
||||||
|
spawn_flags = IC_SPAWN_RESEARCH|IC_SPAWN_ILLEGAL
|
||||||
|
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_MAGNET = 2, TECH_BLUESPACE = 2, TECH_ILLEGAL = 2)
|
||||||
|
power_draw_per_use = 200
|
||||||
|
var/datum/exonet_protocol/exonet = null
|
||||||
|
var/address_spoofed = FALSE
|
||||||
|
|
||||||
|
/obj/item/integrated_circuit/illegal/EPv2_Spoofer/New()
|
||||||
|
..()
|
||||||
|
exonet = new(src)
|
||||||
|
exonet.make_address("EPv2_Spoofer_circuit-\ref[src]")
|
||||||
|
desc += "<br>This circuit's EPv2 address is: [exonet.address]"
|
||||||
|
|
||||||
|
/obj/item/integrated_circuit/illegal/EPv2_Spoofer/Destroy()
|
||||||
|
if(exonet)
|
||||||
|
if(!address_spoofed) // We dont actually want to destroy the regular address
|
||||||
|
exonet.remove_address()
|
||||||
|
qdel(exonet)
|
||||||
|
exonet = null
|
||||||
|
return ..()
|
||||||
|
|
||||||
|
/obj/item/integrated_circuit/illegal/EPv2_Spoofer/do_work()
|
||||||
|
var/target_address = get_pin_data(IC_INPUT, 1)
|
||||||
|
|
||||||
|
exonet.address = target_address
|
||||||
|
address_spoofed = TRUE
|
||||||
|
|
||||||
|
/obj/item/integrated_circuit/illegal/receive_exonet_message(var/atom/origin_atom, var/origin_address, var/message, var/text)
|
||||||
|
set_pin_data(IC_OUTPUT, 1, origin_address)
|
||||||
|
set_pin_data(IC_OUTPUT, 2, message)
|
||||||
|
set_pin_data(IC_OUTPUT, 3, text)
|
||||||
|
|
||||||
|
push_data()
|
||||||
|
activate_pin(2)
|
||||||
|
|
||||||
|
if(address_spoofed)
|
||||||
|
var/random = rand(1,100)
|
||||||
|
if(random > 70)
|
||||||
|
exonet.send_message(origin_address, message, "[random]")
|
||||||
|
*/
|
||||||
|
|
||||||
|
/obj/item/integrated_circuit/illegal/EPv2_Discoverer
|
||||||
|
name = "\improper EPv2 Discovery circuit"
|
||||||
|
desc = "Finds all Exonet devices currently connected to the node (even if not publicly listed)."
|
||||||
|
extended_desc = "An EPv2 address is a string with the format of XXXX:XXXX:XXXX:XXXX. Data can be received using the \
|
||||||
|
second pin, with additonal data reserved for the third pin. When a message is received, the second activation pin \
|
||||||
|
will pulse whatever's connected to it. Pulsing the first activation pin will set the given EPv2 address.\
|
||||||
|
\
|
||||||
|
Note: Discovering Exonet Devices sends off a ping to each device, making it a 'noisy' circuit."
|
||||||
|
icon_state = "signal_illegal"
|
||||||
|
complexity = 3
|
||||||
|
outputs = list("addresses found" = IC_PINTYPE_LIST)
|
||||||
|
activators = list("start discovery" = IC_PINTYPE_PULSE_IN, "on addresses found" = IC_PINTYPE_PULSE_OUT)
|
||||||
|
spawn_flags = IC_SPAWN_ILLEGAL
|
||||||
|
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_MAGNET = 2, TECH_BLUESPACE = 2, TECH_ILLEGAL = 1)
|
||||||
|
power_draw_per_use = 300
|
||||||
|
var/datum/exonet_protocol/exonet = null
|
||||||
|
var/obj/machinery/exonet_node/node = null
|
||||||
|
|
||||||
|
/obj/item/integrated_circuit/illegal/EPv2_Discoverer/proc/get_connection_to_tcomms()
|
||||||
|
if(node && node.on)
|
||||||
|
return can_telecomm(src,node)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
/obj/item/integrated_circuit/illegal/EPv2_Discoverer/New()
|
||||||
|
..()
|
||||||
|
exonet = new(src)
|
||||||
|
exonet.make_address("EPv2_Discovery_circuit-\ref[src]")
|
||||||
|
desc += "<br>This circuit's EPv2 address is: [exonet.address]"
|
||||||
|
node = get_exonet_node()
|
||||||
|
message_admins("A EPv2 Discovery circuit has been created. \ref[src]")
|
||||||
|
|
||||||
|
/obj/item/integrated_circuit/illegal/EPv2_Discoverer/Destroy()
|
||||||
|
if(exonet)
|
||||||
|
exonet.remove_address()
|
||||||
|
qdel(exonet)
|
||||||
|
exonet = null
|
||||||
|
return ..()
|
||||||
|
|
||||||
|
/obj/item/integrated_circuit/illegal/EPv2_Discoverer/do_work()
|
||||||
|
if(!get_connection_to_tcomms())
|
||||||
|
set_pin_data(IC_OUTPUT, 1, null)
|
||||||
|
|
||||||
|
push_data()
|
||||||
|
activate_pin(2)
|
||||||
|
else
|
||||||
|
var/list/addresses = list()
|
||||||
|
|
||||||
|
for(var/datum/exonet_protocol/target_exonet in all_exonet_connections)
|
||||||
|
if(target_exonet.address && istext(target_exonet.address))
|
||||||
|
var/random = rand(200,350)
|
||||||
|
random = random / 10
|
||||||
|
exonet.send_message(target_exonet.address, "text", "64 bytes received from [exonet.address] ecmp_seq=1 ttl=51 time=[random] ms")
|
||||||
|
addresses += target_exonet.address
|
||||||
|
|
||||||
|
set_pin_data(IC_OUTPUT, 1, addresses)
|
||||||
|
|
||||||
|
push_data()
|
||||||
|
activate_pin(2)
|
||||||
@@ -420,7 +420,7 @@
|
|||||||
name = "\improper EPv2 circuit"
|
name = "\improper EPv2 circuit"
|
||||||
desc = "Enables the sending and receiving of messages on the Exonet with the EPv2 protocol."
|
desc = "Enables the sending and receiving of messages on the Exonet with the EPv2 protocol."
|
||||||
extended_desc = "An EPv2 address is a string with the format of XXXX:XXXX:XXXX:XXXX. Data can be send or received using the \
|
extended_desc = "An EPv2 address is a string with the format of XXXX:XXXX:XXXX:XXXX. Data can be send or received using the \
|
||||||
second pin on each side, with additonal data reserved for the third pin. When a message is received, the second activaiton pin \
|
second pin on each side, with additonal data reserved for the third pin. When a message is received, the second activation pin \
|
||||||
will pulse whatever's connected to it. Pulsing the first activation pin will send a message.\
|
will pulse whatever's connected to it. Pulsing the first activation pin will send a message.\
|
||||||
\
|
\
|
||||||
When messaging Communicators, you must set data to send to the string `text` to avoid errors in reception."
|
When messaging Communicators, you must set data to send to the string `text` to avoid errors in reception."
|
||||||
@@ -441,12 +441,19 @@
|
|||||||
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_MAGNET = 2, TECH_BLUESPACE = 2)
|
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_MAGNET = 2, TECH_BLUESPACE = 2)
|
||||||
power_draw_per_use = 50
|
power_draw_per_use = 50
|
||||||
var/datum/exonet_protocol/exonet = null
|
var/datum/exonet_protocol/exonet = null
|
||||||
|
var/obj/machinery/exonet_node/node = null
|
||||||
|
|
||||||
|
/obj/item/integrated_circuit/input/EPv2/proc/get_connection_to_tcomms()
|
||||||
|
if(node && node.on)
|
||||||
|
return can_telecomm(src,node)
|
||||||
|
return 0
|
||||||
|
|
||||||
/obj/item/integrated_circuit/input/EPv2/New()
|
/obj/item/integrated_circuit/input/EPv2/New()
|
||||||
..()
|
..()
|
||||||
exonet = new(src)
|
exonet = new(src)
|
||||||
exonet.make_address("EPv2_circuit-\ref[src]")
|
exonet.make_address("EPv2_circuit-\ref[src]")
|
||||||
desc += "<br>This circuit's EPv2 address is: [exonet.address]"
|
desc += "<br>This circuit's EPv2 address is: [exonet.address]"
|
||||||
|
node = get_exonet_node()
|
||||||
|
|
||||||
/obj/item/integrated_circuit/input/EPv2/Destroy()
|
/obj/item/integrated_circuit/input/EPv2/Destroy()
|
||||||
if(exonet)
|
if(exonet)
|
||||||
@@ -461,7 +468,15 @@
|
|||||||
var/text = get_pin_data(IC_INPUT, 3)
|
var/text = get_pin_data(IC_INPUT, 3)
|
||||||
|
|
||||||
if(target_address && istext(target_address))
|
if(target_address && istext(target_address))
|
||||||
exonet.send_message(target_address, message, text)
|
if(!get_connection_to_tcomms())
|
||||||
|
set_pin_data(IC_OUTPUT, 1, null)
|
||||||
|
set_pin_data(IC_OUTPUT, 2, "Error: Cannot connect to Exonet node.")
|
||||||
|
set_pin_data(IC_OUTPUT, 3, "error")
|
||||||
|
|
||||||
|
push_data()
|
||||||
|
activate_pin(2)
|
||||||
|
else
|
||||||
|
exonet.send_message(target_address, message, text)
|
||||||
|
|
||||||
/obj/item/integrated_circuit/input/receive_exonet_message(var/atom/origin_atom, var/origin_address, var/message, var/text)
|
/obj/item/integrated_circuit/input/receive_exonet_message(var/atom/origin_atom, var/origin_address, var/message, var/text)
|
||||||
set_pin_data(IC_OUTPUT, 1, origin_address)
|
set_pin_data(IC_OUTPUT, 1, origin_address)
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.5 KiB |
@@ -2651,7 +2651,9 @@
|
|||||||
#include "code\modules\integrated_electronics\subtypes\arithmetic.dm"
|
#include "code\modules\integrated_electronics\subtypes\arithmetic.dm"
|
||||||
#include "code\modules\integrated_electronics\subtypes\built_in.dm"
|
#include "code\modules\integrated_electronics\subtypes\built_in.dm"
|
||||||
#include "code\modules\integrated_electronics\subtypes\converters.dm"
|
#include "code\modules\integrated_electronics\subtypes\converters.dm"
|
||||||
|
#include "code\modules\integrated_electronics\subtypes\cryptography.dm"
|
||||||
#include "code\modules\integrated_electronics\subtypes\data_transfer.dm"
|
#include "code\modules\integrated_electronics\subtypes\data_transfer.dm"
|
||||||
|
#include "code\modules\integrated_electronics\subtypes\illegal.dm"
|
||||||
#include "code\modules\integrated_electronics\subtypes\input.dm"
|
#include "code\modules\integrated_electronics\subtypes\input.dm"
|
||||||
#include "code\modules\integrated_electronics\subtypes\lists.dm"
|
#include "code\modules\integrated_electronics\subtypes\lists.dm"
|
||||||
#include "code\modules\integrated_electronics\subtypes\logic.dm"
|
#include "code\modules\integrated_electronics\subtypes\logic.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user