diff --git a/code/modules/integrated_electronics/_defines.dm b/code/modules/integrated_electronics/_defines.dm index e4c103d63fc..9e0fa6039c8 100644 --- a/code/modules/integrated_electronics/_defines.dm +++ b/code/modules/integrated_electronics/_defines.dm @@ -115,13 +115,16 @@ return null /obj/item/integrated_circuit/interact(mob/user) - if(get_dist(src, user) > 1) + if(get_dist(get_turf(src), user) > 1) user.unset_machine(src) return var/HTML = "[src.name]" HTML += "
" HTML += "" + HTML += "
\[Refresh\] | " + HTML += "\[Rename\]
" + HTML += "" HTML += "" HTML += "" @@ -143,15 +146,15 @@ io = get_pin_ref("input",i) if(io) if(io.linked.len) - words = "[io.name] [io.display_data()]
" + words = "[io.name] [io.display_data()]
" for(var/datum/integrated_io/linked in io.linked) - words += "\[[linked.name]\] \ - @ [linked.holder]
" + words += "\[[linked.name]\] \ + @ [linked.holder]
" else // "Click here!" - words = "[io.name] [io.display_data()]
" + words = "[io.name] [io.display_data()]
" for(var/datum/integrated_io/linked in io.linked) - words += "\[[linked.name]\] \ - @ [linked.holder]
" + words += "\[[linked.name]\] \ + @ [linked.holder]
" if(outputs.len > inputs.len) height = Floor(outputs.len / inputs.len) //world << "I wrote [words] at ([i],[j])." @@ -166,15 +169,15 @@ io = get_pin_ref("output",i) if(io) if(io.linked.len) - words = "[io.name] [io.display_data()]
" + words = "[io.name] [io.display_data()]
" for(var/datum/integrated_io/linked in io.linked) - words += "\[[linked.name]\] \ - @ [linked.holder]
" + words += "\[[linked.name]\] \ + @ [linked.holder]
" else - words = "[io.name] [io.display_data()]
" + words = "[io.name] [io.display_data()]
" for(var/datum/integrated_io/linked in io.linked) - words += "\[[linked.name]\] \ - @ [linked.holder]
" + words += "\[[linked.name]\] \ + @ [linked.holder]
" if(inputs.len > outputs.len) height = Floor(inputs.len / outputs.len) //world << "I wrote [words] at ([i],[j])." @@ -190,15 +193,15 @@ io = get_pin_ref("activator",i) if(io) if(io.linked.len) - words = "[io.name]
" + words = "[io.name]
" for(var/datum/integrated_io/linked in io.linked) - words += "\[[linked.name]\] \ - @ [linked.holder]
" + words += "\[[linked.name]\] \ + @ [linked.holder]
" else // "Click here!" - words = "[io.name]
" + words = "[io.name]
" for(var/datum/integrated_io/linked in io.linked) - words += "\[[linked.name]\] \ - @ [linked.holder]
" + words += "\[[linked.name]\] \ + @ [linked.holder]
" HTML += "" HTML += "" HTML += "" @@ -206,50 +209,47 @@ HTML += "
[words]
" HTML += "
" - HTML += "

Refresh" HTML += "
[extended_desc]" HTML += "" - user << browse(HTML, "window=circuit-\ref[src];size=400x440;border=1;can_resize=1;can_close=1;can_minimize=1") + user << browse(HTML, "window=circuit-\ref[src];size=600x350;border=1;can_resize=1;can_close=1;can_minimize=1") user.set_machine(src) onclose(user, "circuit-\ref[src]") - //user << sanitize(HTML, "window=debug;size=400x400;border=1;can_resize=1;can_close=1;can_minimize=1") - //world << sanitize(HTML) /obj/item/integrated_circuit/Topic(href, href_list[]) - if(..()) + var/mob/living/user = locate(href_list["user"]) in mob_list + var/pin = locate(href_list["pin"]) in inputs + outputs + activators + + if(!user || !user.Adjacent(get_turf(src)) ) return 1 - var/user = locate(href_list["user"]) in mob_list - var/pin = locate(href_list["pin"]) in contents - switch(href_list["action"]) - if("examine") - examine(user) - if("wire") - if(ishuman(user) && Adjacent(user)) - var/mob/living/carbon/human/H = user - var/obj/item/device/integrated_electronics/wirer/wirer = null - if(istype(H.r_hand, /obj/item/device/integrated_electronics/wirer)) - wirer = H.r_hand - else if(istype(H.l_hand, /obj/item/device/integrated_electronics/wirer)) - wirer = H.l_hand + if(href_list["wire"]) + if(ishuman(user) && Adjacent(user)) + var/mob/living/carbon/human/H = user + var/obj/item/device/integrated_electronics/wirer/wirer = null + if(istype(H.r_hand, /obj/item/device/integrated_electronics/wirer)) + wirer = H.r_hand + else if(istype(H.l_hand, /obj/item/device/integrated_electronics/wirer)) + wirer = H.l_hand - if(wirer && pin) - wirer.wire(pin, user) - else - user << "You can't do a whole lot without tools." + if(wirer && pin) + wirer.wire(pin, user) + else + user << "You can't do a whole lot without tools." - //updateDialog() - world << "[src] received Topic([href], [href_list]) call from [user]." - world << "href_list contained [english_list(href_list)]." - interact(user) + if(href_list["examine"]) + examine(user) + + if(href_list["rename"]) + rename_component(user) + + interact(user) // To refresh the UI. /datum/integrated_io var/name = "input/output" var/obj/item/integrated_circuit/holder = null var/data = null -// var/datum/integrated_io/linked = null var/list/linked = list() var/io_type = DATA_CHANNEL @@ -264,45 +264,6 @@ holder = null ..() -/datum/integrated_io/Topic(href, href_list[]) - if(..()) - return 1 - var/user = locate(href_list["user"]) in mob_list - switch(href_list["action"]) - // if("view") - // var/HTML = "[src.name]" - // HTML += "Parent: [holder]" - // HTML += "Pin Type: [io_type]" - // HTML += "Linked Pins:
" - // for(var/datum/integrated_io/io in src.linked) - // HTML += "[io.name] [io.display_data()] @ [io.holder]
" - // HTML += "\[Wire This\]" - // - // HTML += "" - // user << browse(HTML, "window=pin-\ref[src];size=400x400;border=1;can_resize=1;can_close=1;can_minimize=1") - - if("examine_holder") - holder.examine(user) - - if("wire") - if(ishuman(user)) - var/mob/living/carbon/human/H = user - var/obj/item/device/integrated_electronics/wirer/wirer = null - if(istype(H.r_hand, /obj/item/device/integrated_electronics/wirer)) - wirer = H.r_hand - else if(istype(H.l_hand, /obj/item/device/integrated_electronics/wirer)) - wirer = H.l_hand - - if(wirer) - wirer.wire(src, user) - - - - else - user << "You can't do a whole lot without tools." - //updateDialog() - //world << "[src] inside [src.holder] was clicked by [user]." - /datum/integrated_io/proc/display_data() if(!data) return "(null)" // Empty data means nothing to show. @@ -381,8 +342,10 @@ I.push_data() /obj/item/integrated_circuit/proc/work() + if(last_used + 2 SECONDS > world.time) // All intergrated circuits have an internal cooldown of two seconds to protect from spam. + return 0 last_used = world.time - return + return 1 /obj/item/integrated_circuit/proc/disconnect_all() for(var/datum/integrated_io/input/I in inputs) diff --git a/code/modules/integrated_electronics/_limits.dm b/code/modules/integrated_electronics/_limits.dm deleted file mode 100644 index 6e706bbaa1b..00000000000 --- a/code/modules/integrated_electronics/_limits.dm +++ /dev/null @@ -1,6 +0,0 @@ -#define MAX_NUMBER_MEMORY 10000 -#define MIN_NUMBER_MEMORY -10000 -#define MAX_STRING_MEMORY_LENGTH 20 -#define MAX_STRING_CONCATINATOR_LENGTH 250 -#define MIN_PULSER_TICK 5 SECONDS -#define DEFAULT_PART_COOLDOWN 3 SECONDS \ No newline at end of file diff --git a/code/modules/integrated_electronics/arithmetic.dm b/code/modules/integrated_electronics/arithmetic.dm index 4b7c627a7b7..5f5a4f1d2e6 100644 --- a/code/modules/integrated_electronics/arithmetic.dm +++ b/code/modules/integrated_electronics/arithmetic.dm @@ -29,16 +29,16 @@ icon_state = "addition" /obj/item/integrated_circuit/arithmetic/addition/work() - var/result = 0 - for(var/datum/integrated_io/input/I in inputs) - I.pull_data() - if(isnum(I.data)) - result = result + I.data + if(..()) + var/result = 0 + for(var/datum/integrated_io/input/I in inputs) + I.pull_data() + if(isnum(I.data)) + result = result + I.data - for(var/datum/integrated_io/output/O in outputs) - O.data = result - O.push_data() - ..() + for(var/datum/integrated_io/output/O in outputs) + O.data = result + O.push_data() // -Subtracting- // @@ -48,16 +48,16 @@ icon_state = "subtraction" /obj/item/integrated_circuit/arithmetic/subtraction/work() - var/result = 0 - for(var/datum/integrated_io/input/I in inputs) - I.pull_data() - if(isnum(I.data)) - result = result - I.data + if(..()) + var/result = 0 + for(var/datum/integrated_io/input/I in inputs) + I.pull_data() + if(isnum(I.data)) + result = result - I.data - for(var/datum/integrated_io/output/O in outputs) - O.data = result - O.push_data() - ..() + for(var/datum/integrated_io/output/O in outputs) + O.data = result + O.push_data() // *Multiply* // @@ -67,16 +67,16 @@ icon_state = "multiplication" /obj/item/integrated_circuit/arithmetic/subtraction/work() - var/result = 0 - for(var/datum/integrated_io/input/I in inputs) - I.pull_data() - if(isnum(I.data)) - result = result * I.data + if(..()) + var/result = 0 + for(var/datum/integrated_io/input/I in inputs) + I.pull_data() + if(isnum(I.data)) + result = result * I.data - for(var/datum/integrated_io/output/O in outputs) - O.data = result - O.push_data() - ..() + for(var/datum/integrated_io/output/O in outputs) + O.data = result + O.push_data() // /Division/ // @@ -86,16 +86,16 @@ icon_state = "division" /obj/item/integrated_circuit/arithmetic/division/work() - var/result = 0 - for(var/datum/integrated_io/input/I in inputs) - I.pull_data() - if(isnum(I.data) && I.data != 0) //No runtimes here. - result = result / I.data + if(..()) + var/result = 0 + for(var/datum/integrated_io/input/I in inputs) + I.pull_data() + if(isnum(I.data) && I.data != 0) //No runtimes here. + result = result / I.data - for(var/datum/integrated_io/output/O in outputs) - O.data = result - O.push_data() - ..() + for(var/datum/integrated_io/output/O in outputs) + O.data = result + O.push_data() // Absolute // @@ -107,16 +107,16 @@ number_of_outputs = 1 /obj/item/integrated_circuit/arithmetic/absolute/work() - var/result = 0 - for(var/datum/integrated_io/input/I in inputs) - I.pull_data() - if(isnum(I.data) && I.data != 0) - result = abs(result) + if(..()) + var/result = 0 + for(var/datum/integrated_io/input/I in inputs) + I.pull_data() + if(isnum(I.data) && I.data != 0) + result = abs(result) - for(var/datum/integrated_io/output/O in outputs) - O.data = result - O.push_data() - ..() + for(var/datum/integrated_io/output/O in outputs) + O.data = result + O.push_data() // Averaging // @@ -126,21 +126,21 @@ icon_state = "average" /obj/item/integrated_circuit/arithmetic/average/work() - var/result = 0 - var/inputs_used = 0 - for(var/datum/integrated_io/input/I in inputs) - I.pull_data() - if(isnum(I.data)) - inputs_used++ - result = result + I.data + if(..()) + var/result = 0 + var/inputs_used = 0 + for(var/datum/integrated_io/input/I in inputs) + I.pull_data() + if(isnum(I.data)) + inputs_used++ + result = result + I.data - if(inputs_used) - result = result / inputs_used + if(inputs_used) + result = result / inputs_used - for(var/datum/integrated_io/output/O in outputs) - O.data = result - O.push_data() - ..() + for(var/datum/integrated_io/output/O in outputs) + O.data = result + O.push_data() // Pi, because why the hell not? // /obj/item/integrated_circuit/arithmetic/pi @@ -151,7 +151,7 @@ number_of_outputs = 1 /obj/item/integrated_circuit/arithmetic/pi/work() - var/datum/integrated_io/output/O = outputs[1] - O.data = 3.14159 - O.push_data() - ..() \ No newline at end of file + if(..()) + var/datum/integrated_io/output/O = outputs[1] + O.data = 3.14159 + O.push_data() \ No newline at end of file diff --git a/code/modules/integrated_electronics/assemblies.dm b/code/modules/integrated_electronics/assemblies.dm index 92faa84750f..97690b977f8 100644 --- a/code/modules/integrated_electronics/assemblies.dm +++ b/code/modules/integrated_electronics/assemblies.dm @@ -9,13 +9,13 @@ var/opened = 0 /obj/item/device/electronic_assembly/medium - name = "electronic setup" + name = "electronic mechanism" w_class = 3 max_components = 20 max_complexity = 50 /obj/item/device/electronic_assembly/large - name = "electronic device" + name = "electronic machine" w_class = 4 max_components = 30 max_complexity = 60 @@ -40,7 +40,7 @@ if(!opened) for(var/obj/item/integrated_circuit/output/screen/S in contents) if(S.stuff_to_display) - user << "There's a little screen which displays '[S.stuff_to_display]'." + user << "There's a little screen labeled '[S.name]', which displays '[S.stuff_to_display]'." else var/obj/item/integrated_circuit/IC = input(user, "Which circuit do you want to examine?", "Examination") as null|anything in contents if(IC) @@ -86,6 +86,14 @@ playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) opened = !opened user << "You [opened ? "opened" : "closed"] \the [src]." + if(istype(I, /obj/item/device/integrated_electronics/wirer)) + if(opened) + var/obj/item/integrated_circuit/IC = input(user, "Which circuit do you want to examine?", "Examination") as null|anything in contents + if(IC) + IC.examine(user) + else + user << "\The [src] isn't opened, so you can't fiddle with the internal components. \ + Try using a crowbar." /obj/item/device/electronic_assembly/attack_self(mob/user) var/list/available_inputs = list() diff --git a/code/modules/integrated_electronics/converters.dm b/code/modules/integrated_electronics/converters.dm index c32197922d4..0bd21664195 100644 --- a/code/modules/integrated_electronics/converters.dm +++ b/code/modules/integrated_electronics/converters.dm @@ -20,33 +20,31 @@ icon_state = "addition" /obj/item/integrated_circuit/converter/num2text/work() - var/result = null - var/datum/integrated_io/incoming = inputs[1] - var/datum/integrated_io/outgoing = outputs[1] - if(incoming.data && isnum(incoming.data)) - result = num2text(incoming.data) + if(..()) + var/result = null + var/datum/integrated_io/incoming = inputs[1] + var/datum/integrated_io/outgoing = outputs[1] + if(incoming.data && isnum(incoming.data)) + result = num2text(incoming.data) - outgoing.data = result - outgoing.push_data() - - ..() + outgoing.data = result + outgoing.push_data() /obj/item/integrated_circuit/converter/text2num - name = "number to string" + name = "string to number" desc = "This circuit can convert a string variable into a number." icon_state = "addition" /obj/item/integrated_circuit/converter/text2num/work() - var/result = null - var/datum/integrated_io/incoming = inputs[1] - var/datum/integrated_io/outgoing = outputs[1] - if(incoming.data && istext(incoming.data)) - result = text2num(incoming.data) + if(..()) + var/result = null + var/datum/integrated_io/incoming = inputs[1] + var/datum/integrated_io/outgoing = outputs[1] + if(incoming.data && istext(incoming.data)) + result = text2num(incoming.data) - outgoing.data = result - outgoing.push_data() - - ..() + outgoing.data = result + outgoing.push_data() /obj/item/integrated_circuit/converter/ref2text name = "reference to string" @@ -54,17 +52,16 @@ icon_state = "addition" /obj/item/integrated_circuit/converter/ref2text/work() - var/result = null - var/datum/integrated_io/incoming = inputs[1] - var/datum/integrated_io/outgoing = outputs[1] - if(incoming.data && istype(incoming.data, /atom/)) - var/atom/A = incoming.data - result = A.name + if(..()) + var/result = null + var/datum/integrated_io/incoming = inputs[1] + var/datum/integrated_io/outgoing = outputs[1] + if(incoming.data && istype(incoming.data, /atom/)) + var/atom/A = incoming.data + result = A.name - outgoing.data = result - outgoing.push_data() - - ..() + outgoing.data = result + outgoing.push_data() /obj/item/integrated_circuit/converter/lowercase name = "lowercase string converter" @@ -72,16 +69,15 @@ icon_state = "addition" /obj/item/integrated_circuit/converter/lowercase/work() - var/result = null - var/datum/integrated_io/incoming = inputs[1] - var/datum/integrated_io/outgoing = outputs[1] - if(incoming.data && istext(incoming.data)) - result = lowertext(incoming.data) + if(..()) + var/result = null + var/datum/integrated_io/incoming = inputs[1] + var/datum/integrated_io/outgoing = outputs[1] + if(incoming.data && istext(incoming.data)) + result = lowertext(incoming.data) - outgoing.data = result - outgoing.push_data() - - ..() + outgoing.data = result + outgoing.push_data() /obj/item/integrated_circuit/converter/uppercase name = "uppercase string converter" @@ -89,13 +85,12 @@ icon_state = "addition" /obj/item/integrated_circuit/converter/uppercase/work() - var/result = null - var/datum/integrated_io/incoming = inputs[1] - var/datum/integrated_io/outgoing = outputs[1] - if(incoming.data && istext(incoming.data)) - result = uppertext(incoming.data) + if(..()) + var/result = null + var/datum/integrated_io/incoming = inputs[1] + var/datum/integrated_io/outgoing = outputs[1] + if(incoming.data && istext(incoming.data)) + result = uppertext(incoming.data) - outgoing.data = result - outgoing.push_data() - - ..() \ No newline at end of file + outgoing.data = result + outgoing.push_data() \ No newline at end of file diff --git a/code/modules/integrated_electronics/coordinate.dm b/code/modules/integrated_electronics/coordinate.dm index 89fd592defd..04409907ac8 100644 --- a/code/modules/integrated_electronics/coordinate.dm +++ b/code/modules/integrated_electronics/coordinate.dm @@ -17,21 +17,21 @@ ) /obj/item/integrated_circuit/gps/work() - var/turf/T = get_turf(src) - var/datum/integrated_io/result_x = outputs[1] - var/datum/integrated_io/result_y = outputs[2] + if(..()) + var/turf/T = get_turf(src) + var/datum/integrated_io/result_x = outputs[1] + var/datum/integrated_io/result_y = outputs[2] - result_x.data = null - result_y.data = null - if(!T) - return + result_x.data = null + result_y.data = null + if(!T) + return - result_x.data = T.x - result_y.data = T.y + result_x.data = T.x + result_y.data = T.y - for(var/datum/integrated_io/output/O in outputs) - O.push_data() - ..() + for(var/datum/integrated_io/output/O in outputs) + O.push_data() /obj/item/integrated_circuit/abs_to_rel_coords name = "abs to rel coordinate converter" diff --git a/code/modules/integrated_electronics/data_transfer.dm b/code/modules/integrated_electronics/data_transfer.dm index 9cdf354e76e..12380e9ccac 100644 --- a/code/modules/integrated_electronics/data_transfer.dm +++ b/code/modules/integrated_electronics/data_transfer.dm @@ -34,9 +34,10 @@ number_of_outputs = 8 /obj/item/integrated_circuit/transfer/splitter/work() - var/datum/integrated_io/I = inputs[1] - for(var/datum/integrated_io/output/O in outputs) - O.data = I.data + if(..()) + var/datum/integrated_io/I = inputs[1] + for(var/datum/integrated_io/output/O in outputs) + O.data = I.data /obj/item/integrated_circuit/transfer/activator_splitter name = "activator splitter" @@ -57,12 +58,13 @@ ) /obj/item/integrated_circuit/transfer/activator_splitter/work() - for(var/datum/integrated_io/activate/A in outputs) - if(A == activators[1]) - continue - if(A.linked.len) - for(var/datum/integrated_io/activate/target in A.linked) - target.holder.work() + if(..()) + for(var/datum/integrated_io/activate/A in outputs) + if(A == activators[1]) + continue + if(A.linked.len) + for(var/datum/integrated_io/activate/target in A.linked) + target.holder.work() /obj/item/integrated_circuit/transfer/activator_splitter/medium name = "four activator splitter" diff --git a/code/modules/integrated_electronics/input_output.dm b/code/modules/integrated_electronics/input_output.dm index 54e1165735c..8f9c2cac040 100644 --- a/code/modules/integrated_electronics/input_output.dm +++ b/code/modules/integrated_electronics/input_output.dm @@ -45,6 +45,31 @@ if(A.linked) A.holder.work() +/obj/item/integrated_circuit/input/textpad + name = "text pad" + desc = "This small text pad allows someone to input a string into the system." + icon_state = "numberpad" + number_of_inputs = 0 + number_of_outputs = 1 + number_of_activators = 1 + complexity = 2 + output_names = list( + "string entered" + ) + activator_names = list( + "on entered" + ) + +/obj/item/integrated_circuit/input/textpad/ask_for_input(mob/user) + var/new_input = input(user, "Enter some words, please.","Number pad") as text + if(new_input && istext(new_input)) + var/datum/integrated_io/O = outputs[1] + O.data = new_input + O.push_data() + var/datum/integrated_io/A = activators[1] + if(A.linked) + A.holder.work() + /obj/item/integrated_circuit/output/screen name = "screen" desc = "This small screen can display a single piece of data, when the machine is examined closely." diff --git a/code/modules/integrated_electronics/logic.dm b/code/modules/integrated_electronics/logic.dm index 4a5d65c5f99..4d123c61d09 100644 --- a/code/modules/integrated_electronics/logic.dm +++ b/code/modules/integrated_electronics/logic.dm @@ -23,17 +23,17 @@ icon_state = "equal" /obj/item/integrated_circuit/logic/equals/work() - ..() - var/datum/integrated_io/A = inputs[1] - var/datum/integrated_io/B = inputs[2] - var/datum/integrated_io/O = outputs[1] - var/datum/integrated_io/P = activators[2] - if(A.data == B.data) - O.data = 1 - O.push_data() - P.push_data() - else - O.data = 0 + if(..()) + var/datum/integrated_io/A = inputs[1] + var/datum/integrated_io/B = inputs[2] + var/datum/integrated_io/O = outputs[1] + var/datum/integrated_io/P = activators[2] + if(A.data == B.data) + O.data = 1 + O.push_data() + P.push_data() + else + O.data = 0 /obj/item/integrated_circuit/logic/not name = "not gate" @@ -48,14 +48,14 @@ /obj/item/integrated_circuit/logic/not/work() - ..() - var/datum/integrated_io/A = inputs[1] - var/datum/integrated_io/O = outputs[1] - if(A.data) - O.data = !A.data - O.push_data() - else - O.data = 0 + if(..()) + var/datum/integrated_io/A = inputs[1] + var/datum/integrated_io/O = outputs[1] + if(A.data) + O.data = !A.data + O.push_data() + else + O.data = 0 /obj/item/integrated_circuit/logic/and name = "and gate" @@ -63,18 +63,18 @@ icon_state = "and" /obj/item/integrated_circuit/logic/and/work() - ..() - var/datum/integrated_io/A = inputs[1] - var/datum/integrated_io/B = inputs[2] - var/datum/integrated_io/O = outputs[1] - var/datum/integrated_io/P = activators[2] - if(A.data && B.data) - O.data = 1 - O.push_data() - A.push_data() - P.push_data() - else - O.data = 0 + if(..()) + var/datum/integrated_io/A = inputs[1] + var/datum/integrated_io/B = inputs[2] + var/datum/integrated_io/O = outputs[1] + var/datum/integrated_io/P = activators[2] + if(A.data && B.data) + O.data = 1 + O.push_data() + A.push_data() + P.push_data() + else + O.data = 0 /obj/item/integrated_circuit/logic/or name = "or gate" @@ -82,18 +82,18 @@ icon_state = "or" /obj/item/integrated_circuit/logic/or/work() - ..() - var/datum/integrated_io/A = inputs[1] - var/datum/integrated_io/B = inputs[2] - var/datum/integrated_io/O = outputs[1] - var/datum/integrated_io/P = activators[2] - if(A.data || B.data) - O.data = 1 - O.push_data() - A.push_data() - P.push_data() - else - O.data = 0 + if(..()) + var/datum/integrated_io/A = inputs[1] + var/datum/integrated_io/B = inputs[2] + var/datum/integrated_io/O = outputs[1] + var/datum/integrated_io/P = activators[2] + if(A.data || B.data) + O.data = 1 + O.push_data() + A.push_data() + P.push_data() + else + O.data = 0 /obj/item/integrated_circuit/logic/less_than name = "less than gate" @@ -101,18 +101,18 @@ icon_state = "less_than" /obj/item/integrated_circuit/logic/less_than/work() - ..() - var/datum/integrated_io/A = inputs[1] - var/datum/integrated_io/B = inputs[2] - var/datum/integrated_io/O = outputs[1] - var/datum/integrated_io/P = activators[2] - if(A.data < B.data) - O.data = 1 - O.push_data() - A.push_data() - P.push_data() - else - O.data = 0 + if(..()) + var/datum/integrated_io/A = inputs[1] + var/datum/integrated_io/B = inputs[2] + var/datum/integrated_io/O = outputs[1] + var/datum/integrated_io/P = activators[2] + if(A.data < B.data) + O.data = 1 + O.push_data() + A.push_data() + P.push_data() + else + O.data = 0 /obj/item/integrated_circuit/logic/less_than_or_equal name = "less than or equal gate" @@ -120,18 +120,18 @@ icon_state = "less_than_or_equal" /obj/item/integrated_circuit/logic/less_than_or_equal/work() - ..() - var/datum/integrated_io/A = inputs[1] - var/datum/integrated_io/B = inputs[2] - var/datum/integrated_io/O = outputs[1] - var/datum/integrated_io/P = activators[2] - if(A.data <= B.data) - O.data = 1 - O.push_data() - A.push_data() - P.push_data() - else - O.data = 0 + if(..()) + var/datum/integrated_io/A = inputs[1] + var/datum/integrated_io/B = inputs[2] + var/datum/integrated_io/O = outputs[1] + var/datum/integrated_io/P = activators[2] + if(A.data <= B.data) + O.data = 1 + O.push_data() + A.push_data() + P.push_data() + else + O.data = 0 /obj/item/integrated_circuit/logic/greater_than name = "greater than gate" @@ -139,18 +139,18 @@ icon_state = "greater_than" /obj/item/integrated_circuit/logic/greater_than/work() - ..() - var/datum/integrated_io/A = inputs[1] - var/datum/integrated_io/B = inputs[2] - var/datum/integrated_io/O = outputs[1] - var/datum/integrated_io/P = activators[2] - if(A.data > B.data) - O.data = 1 - O.push_data() - A.push_data() - P.push_data() - else - O.data = 0 + if(..()) + var/datum/integrated_io/A = inputs[1] + var/datum/integrated_io/B = inputs[2] + var/datum/integrated_io/O = outputs[1] + var/datum/integrated_io/P = activators[2] + if(A.data > B.data) + O.data = 1 + O.push_data() + A.push_data() + P.push_data() + else + O.data = 0 /obj/item/integrated_circuit/logic/greater_than_or_equal name = "greater_than or equal gate" @@ -158,15 +158,15 @@ icon_state = "greater_than_or_equal" /obj/item/integrated_circuit/logic/greater_than_or_equal/work() - ..() - var/datum/integrated_io/A = inputs[1] - var/datum/integrated_io/B = inputs[2] - var/datum/integrated_io/O = outputs[1] - var/datum/integrated_io/P = activators[2] - if(A.data >= B.data) - O.data = 1 - O.push_data() - A.push_data() - P.push_data() - else - O.data = 0 \ No newline at end of file + if(..()) + var/datum/integrated_io/A = inputs[1] + var/datum/integrated_io/B = inputs[2] + var/datum/integrated_io/O = outputs[1] + var/datum/integrated_io/P = activators[2] + if(A.data >= B.data) + O.data = 1 + O.push_data() + A.push_data() + P.push_data() + else + O.data = 0 \ No newline at end of file diff --git a/code/modules/integrated_electronics/manipulation.dm b/code/modules/integrated_electronics/manipulation.dm index 5724c79ad8f..422f793f5de 100644 --- a/code/modules/integrated_electronics/manipulation.dm +++ b/code/modules/integrated_electronics/manipulation.dm @@ -1,4 +1,4 @@ -/obj/item/integrated_circuit/weapon_firing +/obj/item/integrated_circuit/manipulation/weapon_firing name = "weapon firing mechanism" desc = "This somewhat complicated system allows one to slot in a gun, direct it towards a position, and remotely fire it." extended_desc = "The firing mechanism can slot in most ranged weapons, ballistic and energy. \ @@ -18,11 +18,11 @@ ) var/obj/item/weapon/gun/installed_gun = null -/obj/item/integrated_circuit/weapon_firing/Destroy() +/obj/item/integrated_circuit/manipulation/weapon_firing/Destroy() qdel(installed_gun) ..() -/obj/item/integrated_circuit/weapon_firing/attackby(var/obj/O, var/mob/user) +/obj/item/integrated_circuit/manipulation/weapon_firing/attackby(var/obj/O, var/mob/user) if(istype(O, /obj/item/weapon/gun)) var/obj/item/weapon/gun/gun = O if(installed_gun) @@ -36,7 +36,7 @@ else ..() -/obj/item/integrated_circuit/weapon_firing/attack_self(var/mob/user) +/obj/item/integrated_circuit/manipulation/weapon_firing/attack_self(var/mob/user) if(installed_gun) installed_gun.forceMove(get_turf(src)) user << "You slide \the [installed_gun] out of the firing mechanism." @@ -45,7 +45,7 @@ else user << "There's no weapon to remove from the mechanism." -/obj/item/integrated_circuit/weapon_firing/work() +/obj/item/integrated_circuit/manipulation/weapon_firing/work() if(!installed_gun) return @@ -84,4 +84,33 @@ if(!T) return - installed_gun.Fire_userless(T) \ No newline at end of file + installed_gun.Fire_userless(T) + +/obj/item/integrated_circuit/manipulation/smoke + name = "smoke generator" + desc = "Unlike most electronics, creating smoke is completely intentional." + extended_desc = "This smoke generator creates clouds of smoke on command. It can also hold liquids inside, which will go \ + into the smoke clouds when activated." + flags = OPENCONTAINER + complexity = 20 + number_of_inputs = 0 + number_of_outputs = 0 + number_of_activators = 1 + input_names = list() + activator_names = list( + "create smoke" + ) + +/obj/item/integrated_circuit/manipulation/smoke/New() + ..() + create_reagents(100) + +/obj/item/integrated_circuit/manipulation/smoke/work() + if(..()) + playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3) + var/datum/effect/effect/system/smoke_spread/chem/smoke_system = new() + smoke_system.set_up(reagents, 10, 0, get_turf(src)) + spawn(0) + for(var/i = 1 to 8) + smoke_system.start() + reagents.clear_reagents() diff --git a/code/modules/integrated_electronics/memory.dm b/code/modules/integrated_electronics/memory.dm index b7929f95e15..3305cf0a939 100644 --- a/code/modules/integrated_electronics/memory.dm +++ b/code/modules/integrated_electronics/memory.dm @@ -18,11 +18,12 @@ user << "\The [src] has [O.data ? "'O.data'" : "nothing"] saved to address [i]." /obj/item/integrated_circuit/memory/work() - var/i - for(i = 1, i <= inputs.len, i++) - var/datum/integrated_io/I = inputs[i] - var/datum/integrated_io/O = outputs[i] - O.data = I.data + if(..()) + var/i + for(i = 1, i <= inputs.len, i++) + var/datum/integrated_io/I = inputs[i] + var/datum/integrated_io/O = outputs[i] + O.data = I.data /obj/item/integrated_circuit/memory/medium name = "memory circuit" @@ -61,8 +62,9 @@ ) /obj/item/integrated_circuit/memory/constant/work() - var/datum/integrated_io/O = outputs[1] - O.push_data() + if(..()) + var/datum/integrated_io/O = outputs[1] + O.push_data() /obj/item/integrated_circuit/memory/constant/attack_hand(mob/user) var/datum/integrated_io/O = outputs[1] diff --git a/code/modules/integrated_electronics/power.dm b/code/modules/integrated_electronics/power.dm deleted file mode 100644 index 6760e8af533..00000000000 --- a/code/modules/integrated_electronics/power.dm +++ /dev/null @@ -1,16 +0,0 @@ -/obj/item/integrated_circuit/power - var/charge = 0 - var/max_charge = 0 - var/power_generated = 0 - -/obj/item/integrated_circuit/power/battery - name = "micro powercell" - desc = "An extremely small powercell, often used to power basic electronics, as a powersource or to use as a buffer." - charge = 30 - max_charge = 30 - -/obj/item/integrated_circuit/power/solar - name = "micro photovoltaic cell" - desc = "A tiny solar cell, often used for small electornics, such as calculators." - power_generated = 5 -//photovoltaic \ No newline at end of file diff --git a/code/modules/integrated_electronics/time.dm b/code/modules/integrated_electronics/time.dm index f076506222c..99c8a42436e 100644 --- a/code/modules/integrated_electronics/time.dm +++ b/code/modules/integrated_electronics/time.dm @@ -17,10 +17,10 @@ ) /obj/item/integrated_circuit/time/delay/work() - ..() - var/datum/integrated_io/out_pulse = activators[2] - sleep(delay) - out_pulse.push_data() + if(..()) + var/datum/integrated_io/out_pulse = activators[2] + sleep(delay) + out_pulse.push_data() /obj/item/integrated_circuit/time/delay/five_sec name = "five-sec delay circuit" diff --git a/code/modules/integrated_electronics/tools.dm b/code/modules/integrated_electronics/tools.dm index 79ba8b95a2a..67005c85e6b 100644 --- a/code/modules/integrated_electronics/tools.dm +++ b/code/modules/integrated_electronics/tools.dm @@ -1,61 +1,3 @@ -/obj/item/device/integrated_electronics/debugger - name = "debugger" - desc = "This can be used to learn about, test, or find issues with your circuit designs." - icon_state = "multitool" - flags = CONDUCT - w_class = 2 - var/datum/integrated_io/probe - var/mode = "string" - var/options = list("string", "number", "reference", "type", "null") - -/obj/item/device/integrated_electronics/debugger/New() - ..() - probe = new(src) - -/obj/item/device/integrated_electronics/debugger/attack_self(mob/user) - var/temporary_data = null - var/choice = input(user, "Please select a data type to use as input.", "data type", "string") as null|anything in options - if(choice) - switch(choice) - if("string") - temporary_data = sanitize(input(user, "Please write something in text.", "string input") as null|text) - if(istext(temporary_data)) - probe.data = temporary_data - if("number") - temporary_data = sanitize(input(user, "Please give a number.", "number input") as null|num) - if(isnum(temporary_data)) - probe.data = temporary_data - if("reference") - return - if("type") - return - if("null") - probe.data = null - -/obj/item/device/integrated_electronics/proc/select_io(mob/user, var/obj/target) - var/obj/item/integrated_circuit/selected_circuit = null - if(!istype(/obj/item/integrated_circuit, target)) - var/list/possible_circuits = list() - for(var/obj/item/integrated_circuit/IC in target) - possible_circuits.Add(IC) - if(possible_circuits.len) - selected_circuit = input(user, "Choose the circuit you want to work on.", "Circuit Selection") as null|anything in possible_circuits - else if(istype(/obj/item/integrated_circuit, target)) - selected_circuit = target - - if(selected_circuit) - var/list/possible_io = list() - for(var/datum/integrated_io/I in selected_circuit.inputs) - possible_io.Add(I) - for(var/datum/integrated_io/O in selected_circuit.outputs) - possible_io.Add(O) - for(var/datum/integrated_io/A in selected_circuit.activators) - possible_io.Add(A) - if(possible_io.len) - var/choice = input(user, "Choose the data channel you wish to select.", "Data Selection Selection") as null|anything in possible_io - if(choice) - return choice - #define WIRE "wire" #define WIRING "wiring" #define UNWIRE "unwire" @@ -67,7 +9,8 @@ desc = "It's a small wiring tool, with a wire roll, electric soldering iron, wire cutter, and more in one package. \ The wires used are generally useful for small electronics, such as circuitboards and breadboards, as opposed to larger wires \ used for power or data transmission." - icon_state = "multitool" + icon = 'icons/obj/hacktool.dmi' + icon_state = "hacktool-g" flags = CONDUCT w_class = 2 var/datum/integrated_io/selected_io = null @@ -96,6 +39,7 @@ mode = WIRE //io.updateDialog() //selected_io.updateDialog() + selected_io.holder.interact(user) // This is to update the UI. selected_io = null else if(mode == UNWIRE) @@ -120,6 +64,7 @@ \the [io.holder]'s [io.name]." //io.updateDialog() //selected_io.updateDialog() + selected_io.holder.interact(user) // This is to update the UI. selected_io = null mode = UNWIRE else @@ -128,79 +73,6 @@ return return -/obj/item/device/integrated_electronics/wirer/afterattack(atom/target, mob/user) - if(isobj(target)) - if(mode == WIRE) - selected_io = select_io(user, target) - if(!selected_io) - return - user << "You attach a data wire to \the [target]'s [selected_io.name] data channel." - mode = WIRING - return - - else if(mode == WIRING) - var/datum/integrated_io/second_io = select_io(user, target) - if(selected_io == second_io) - user << "Wiring \the [target]'s [selected_io.name] into itself is rather pointless." - return - else if(second_io) - if(second_io.io_type != selected_io.io_type) - user << "Those two types of channels are incompatable. The first is a [selected_io.io_type], \ - while the second is a [second_io.io_type]." - return - - selected_io.linked |= second_io - second_io.linked |= selected_io - -// selected_io.linked = second_io -// second_io.linked = selected_io - user << "You connect \the [selected_io.holder]'s [selected_io.name] to \the [target]'s [second_io.name]." - mode = WIRE - selected_io = null - else if(mode == UNWIRE) - selected_io = select_io(user, target) - if(!selected_io) - return - if(!selected_io.linked.len) - user << "There is nothing connected to \the [selected_io] data channel." - return - user << "You prepare to detach a data wire from \the [target]'s [selected_io.name] data channel." - mode = UNWIRING - return - - else if(mode == UNWIRING) - var/datum/integrated_io/second_io = select_io(user, target) - if(selected_io == second_io) - user << "You can't wire a pin into each other, so unwiring \the [selected_io.holder] from \ - the same pin is rather moot." - return - else if(second_io) - if(selected_io in second_io.linked) - second_io.linked.Remove(selected_io) - selected_io.linked.Remove(second_io) - user << "You disconnect \the [selected_io.holder]'s [selected_io.name] from \ - \the [second_io.holder]'s [second_io.name]." - else - user << "\The [selected_io.holder]'s [selected_io.name] and \the [second_io.holder]'s \ - [second_io.name] are not connected." - return -/* - var/datum/integrated_io/third_io = select_io(user, second_io.linked) - if(third_io && selected_io in third_io.linked) - third_io.linked.Remove(selected_io) - selected_io.linked.Remove(second_io) -*/ - mode = UNWIRE - return -/* - var/datum/integrated_io/target_io = select_io(user, target) - if(target_io && target_io.linked) - user << "You disconnect \the [target_io.holder]'s [target_io.name] \ - from \the [target_io.linked.holder]'s [target_io.linked.linked]." - if(target_io.linked.linked && target_io.linked.linked == target_io) - target_io.linked.linked = null - target_io.linked = null -*/ /obj/item/device/integrated_electronics/wirer/attack_self(mob/user) switch(mode) if(WIRE) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index c0ecdbfc3d5..943dd7a903b 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1486,6 +1486,352 @@ CIRCUITS BELOW build_path = /obj/item/weapon/cartridge/captain sort_string = "VBAAO" + + +/datum/design/item/wirer + name = "Custom wirer tool" + id = "wirer" + req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 2500) + build_path = /obj/item/device/integrated_electronics/wirer + sort_string = "VBVAA" + + + +/datum/design/item/custom_circuit_assembly + name = "Small custom assembly" + desc = "An customizable assembly for simple, small devices." + id = "assembly-small" + req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 2, TECH_POWER = 2) + materials = list(DEFAULT_WALL_MATERIAL = 10000) + build_path = /obj/item/device/electronic_assembly + sort_string = "VCAAA" + +/datum/design/item/custom_circuit_assembly/medium + name = "Medium custom assembly" + desc = "An customizable assembly suited for more ambitious mechanisms." + id = "assembly-medium" + req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_POWER = 3) + materials = list(DEFAULT_WALL_MATERIAL = 20000) + build_path = /obj/item/device/electronic_assembly/medium + +/datum/design/item/custom_circuit_assembly/large + name = "Large custom assembly" + desc = "An customizable assembly for large machines." + id = "assembly-large" + req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_POWER = 4) + materials = list(DEFAULT_WALL_MATERIAL = 40000) + build_path = /obj/item/device/electronic_assembly/large + +/datum/design/circuit/integrated_circuit + req_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2) + +/datum/design/circuit/integrated_circuit/AssembleDesignName() + ..() + name = "Custom circuitry ([item_name])" + +/datum/design/circuit/integrated_circuit/AssembleDesignDesc() + if(!desc) + desc = "Allows for the construction of \a [name] custom circuit." + +/datum/design/circuit/integrated_circuit/arithmetic/AssembleDesignName() + ..() + name = "Custom circuitry \[Arithmetic\] ([item_name])" + +/datum/design/circuit/integrated_circuit/arithmetic/addition + id = "cc-addition" + build_path = /obj/item/integrated_circuit/arithmetic/addition + sort_string = "WAAAA" + +/datum/design/circuit/integrated_circuit/arithmetic/subtraction + id = "cc-subtraction" + build_path = /obj/item/integrated_circuit/arithmetic/subtraction + sort_string = "WAAAB" + +/datum/design/circuit/integrated_circuit/arithmetic/multiplication + id = "cc-multiplication" + build_path = /obj/item/integrated_circuit/arithmetic/multiplication + sort_string = "WAAAC" + +/datum/design/circuit/integrated_circuit/arithmetic/division + id = "cc-division" + build_path = /obj/item/integrated_circuit/arithmetic/division + sort_string = "WAAAD" + +/datum/design/circuit/integrated_circuit/arithmetic/absolute + id = "cc-absolute" + build_path = /obj/item/integrated_circuit/arithmetic/absolute + sort_string = "WAAAE" + +/datum/design/circuit/integrated_circuit/arithmetic/average + id = "cc-average" + build_path = /obj/item/integrated_circuit/arithmetic/average + sort_string = "WAAAF" + +/datum/design/circuit/integrated_circuit/arithmetic/pi + id = "cc-pi" + build_path = /obj/item/integrated_circuit/arithmetic/pi + sort_string = "WAAAG" + + + +/datum/design/circuit/integrated_circuit/converter/AssembleDesignName() + ..() + name = "Custom circuitry \[Conversion\] ([item_name])" + +/datum/design/circuit/integrated_circuit/converter/num2text + id = "cc-num2text" + build_path = /obj/item/integrated_circuit/converter/num2text + sort_string = "WAABA" + +/datum/design/circuit/integrated_circuit/converter/text2num + id = "cc-text2num" + build_path = /obj/item/integrated_circuit/converter/text2num + sort_string = "WAABB" + +/datum/design/circuit/integrated_circuit/converter/ref2text + id = "cc-ref2text" + build_path = /obj/item/integrated_circuit/converter/ref2text + sort_string = "WAABC" + +/datum/design/circuit/integrated_circuit/converter/lowercase + id = "cc-lowercase" + build_path = /obj/item/integrated_circuit/converter/lowercase + sort_string = "WAABD" + +/datum/design/circuit/integrated_circuit/converter/uppercase + id = "cc-uppercase" + build_path = /obj/item/integrated_circuit/converter/uppercase + sort_string = "WAABD" + + + +/datum/design/circuit/integrated_circuit/coordinate/AssembleDesignName() + ..() + name = "Custom circuitry \[Coordinate\] ([item_name])" + +/datum/design/circuit/integrated_circuit/coordinate/gps + id = "cc-gps" + build_path = /obj/item/integrated_circuit/gps + sort_string = "WAACA" + +/datum/design/circuit/integrated_circuit/coordinate/abs_to_rel_coords + id = "cc-abs_to_rel_coords" + build_path = /obj/item/integrated_circuit/abs_to_rel_coords + sort_string = "WAACB" + + + +/datum/design/circuit/integrated_circuit/transfer/AssembleDesignName() + ..() + name = "Custom circuitry \[Transfer\] ([item_name])" + +/datum/design/circuit/integrated_circuit/transfer/splitter + id = "cc-splitter" + build_path = /obj/item/integrated_circuit/transfer/splitter + sort_string = "WAADA" + +/datum/design/circuit/integrated_circuit/transfer/splitter4 + id = "cc-splitter4" + build_path = /obj/item/integrated_circuit/transfer/splitter/medium + sort_string = "WAADB" + +/datum/design/circuit/integrated_circuit/transfer/splitter8 + id = "cc-splitter8" + build_path = /obj/item/integrated_circuit/transfer/splitter/large + sort_string = "WAADC" + +/datum/design/circuit/integrated_circuit/transfer/activator_splitter + id = "cc-activator_splitter" + build_path = /obj/item/integrated_circuit/transfer/activator_splitter + sort_string = "WAADD" + +/datum/design/circuit/integrated_circuit/transfer/activator_splitter4 + id = "cc-activator_splitter4" + build_path = /obj/item/integrated_circuit/transfer/activator_splitter/medium + sort_string = "WAADE" + +/datum/design/circuit/integrated_circuit/transfer/activator_splitter8 + id = "cc-activator_splitter8" + build_path = /obj/item/integrated_circuit/transfer/activator_splitter/large + sort_string = "WAADF" + + + +/datum/design/circuit/integrated_circuit/input_output/AssembleDesignName() + ..() + name = "Custom circuitry \[Input/Output\] ([item_name])" + +/datum/design/circuit/integrated_circuit/input_output/button + id = "cc-button" + build_path = /obj/item/integrated_circuit/input/button + sort_string = "WAAEA" + +/datum/design/circuit/integrated_circuit/input_output/numberpad + id = "cc-numberpad" + build_path = /obj/item/integrated_circuit/input/numberpad + sort_string = "WAAEB" + +/datum/design/circuit/integrated_circuit/input_output/textpad + id = "cc-textpad" + build_path = /obj/item/integrated_circuit/input/textpad + sort_string = "WAAEC" + +/datum/design/circuit/integrated_circuit/input_output/screen + id = "cc-screen" + build_path = /obj/item/integrated_circuit/output/screen + sort_string = "WAAED" + + + +/datum/design/circuit/integrated_circuit/logic/AssembleDesignName() + ..() + name = "Custom circuitry \[Logic\] ([item_name])" + +/datum/design/circuit/integrated_circuit/logic/equals + id = "cc-equals" + build_path = /obj/item/integrated_circuit/logic/equals + sort_string = "WAAFA" + +/datum/design/circuit/integrated_circuit/logic/not + id = "cc-not" + build_path = /obj/item/integrated_circuit/logic/not + sort_string = "WAAFB" + +/datum/design/circuit/integrated_circuit/logic/and + id = "cc-and" + build_path = /obj/item/integrated_circuit/logic/and + sort_string = "WAAFC" + +/datum/design/circuit/integrated_circuit/logic/or + id = "cc-or" + build_path = /obj/item/integrated_circuit/logic/or + sort_string = "WAAFD" + +/datum/design/circuit/integrated_circuit/logic/less_than + id = "cc-less_than" + build_path = /obj/item/integrated_circuit/logic/less_than + sort_string = "WAAFE" + +/datum/design/circuit/integrated_circuit/logic/less_than_or_equal + id = "cc-less_than_or_equal" + build_path = /obj/item/integrated_circuit/logic/less_than_or_equal + sort_string = "WAAFF" + +/datum/design/circuit/integrated_circuit/logic/greater_than + id = "cc-greater_than" + build_path = /obj/item/integrated_circuit/logic/greater_than + sort_string = "WAAFG" + +/datum/design/circuit/integrated_circuit/logic/greater_than_or_equal + id = "cc-greater_than_or_equal" + build_path = /obj/item/integrated_circuit/logic/greater_than_or_equal + sort_string = "WAAFH" + + + +/datum/design/circuit/integrated_circuit/manipulation/AssembleDesignName() + ..() + name = "Custom circuitry \[Manipulation\] ([item_name])" + +/datum/design/circuit/integrated_circuit/manipulation/weapon_firing + id = "cc-weapon_firing" + build_path = /obj/item/integrated_circuit/manipulation/weapon_firing + sort_string = "WAAGA" + req_tech = list(TECH_ENGINEERING = 4, TECH_DATA = 4, TECH_COMBAT = 5) + +/datum/design/circuit/integrated_circuit/manipulation/weapon_firing + id = "cc-smoke" + build_path = /obj/item/integrated_circuit/manipulation/smoke + sort_string = "WAAGB" + req_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 4, TECH_BIOMED = 5) + + + +/datum/design/circuit/integrated_circuit/memory/AssembleDesignName() + ..() + name = "Custom circuitry \[Memory\] ([item_name])" + +/datum/design/circuit/integrated_circuit/memory + id = "cc-memory" + build_path = /obj/item/integrated_circuit/memory + sort_string = "WAAHA" + +/datum/design/circuit/integrated_circuit/memory/medium + id = "cc-memory4" + build_path = /obj/item/integrated_circuit/memory/medium + sort_string = "WAAHB" + +/datum/design/circuit/integrated_circuit/memory/large + id = "cc-memory8" + build_path = /obj/item/integrated_circuit/memory/large + sort_string = "WAAHC" + +/datum/design/circuit/integrated_circuit/memory/huge + id = "cc-memory16" + build_path = /obj/item/integrated_circuit/memory/huge + sort_string = "WAAHD" + +/datum/design/circuit/integrated_circuit/memory/constant + id = "cc-constant" + build_path = /obj/item/integrated_circuit/memory/constant + sort_string = "WAAHH" + +/datum/design/circuit/integrated_circuit/time/AssembleDesignName() + ..() + name = "Custom circuitry \[Time\] ([item_name])" + +/datum/design/circuit/integrated_circuit/time/delay + id = "cc-delay" + build_path = /obj/item/integrated_circuit/time/delay + sort_string = "WAAIA" + +/datum/design/circuit/integrated_circuit/time/delay/five_sec + id = "cc-five_sec_delay" + build_path = /obj/item/integrated_circuit/time/delay/five_sec + sort_string = "WAAIB" + +/datum/design/circuit/integrated_circuit/time/delay/one_sec + id = "cc-one_sec_delay" + build_path = /obj/item/integrated_circuit/time/delay/one_sec + sort_string = "WAAIC" + +/datum/design/circuit/integrated_circuit/time/delay/half_sec + id = "cc-half_sec_delay" + build_path = /obj/item/integrated_circuit/time/delay/half_sec + sort_string = "WAAID" + +/datum/design/circuit/integrated_circuit/time/delay/tenth_sec + id = "cc-tenth_sec_delay" + build_path = /obj/item/integrated_circuit/time/delay/tenth_sec + sort_string = "WAAIF" + +/datum/design/circuit/integrated_circuit/time/delay/custom + id = "cc-custom_delay" + build_path = /obj/item/integrated_circuit/time/delay/custom + sort_string = "WAAIG" + +/datum/design/circuit/integrated_circuit/time/ticker + id = "cc-ticker" + build_path = /obj/item/integrated_circuit/time/ticker + sort_string = "WAAIH" + +/datum/design/circuit/integrated_circuit/time/ticker/slow + id = "cc-ticker_slow" + build_path = /obj/item/integrated_circuit/time/ticker/slow + sort_string = "WAAII" + +/datum/design/circuit/integrated_circuit/time/ticker/fast + id = "cc-ticker_fast" + build_path = /obj/item/integrated_circuit/time/ticker/fast + sort_string = "WAAIJ" + req_tech = list(TECH_ENGINEERING = 4, TECH_DATA = 4) + +/datum/design/circuit/integrated_circuit/time/clock + id = "cc-clock" + build_path = /obj/item/integrated_circuit/time/clock + sort_string = "WAAIK" + /* Uncomment if someone makes these buildable /datum/design/circuit/general_alert name = "general alert console" diff --git a/polaris.dme b/polaris.dme index a66d16b9930..f07fdb8f611 100644 --- a/polaris.dme +++ b/polaris.dme @@ -546,7 +546,7 @@ #include "code\game\machinery\requests_console.dm" #include "code\game\machinery\robot_fabricator.dm" #include "code\game\machinery\seed_extractor.dm" -#include "code\game\machinery\sleeper.dm" +#include "code\game\machinery\Sleeper.dm" #include "code\game\machinery\spaceheater.dm" #include "code\game\machinery\status_display.dm" #include "code\game\machinery\status_display_ai.dm" @@ -1366,7 +1366,6 @@ #include "code\modules\hydroponics\trays\tray_tools.dm" #include "code\modules\hydroponics\trays\tray_update_icons.dm" #include "code\modules\integrated_electronics\_defines.dm" -#include "code\modules\integrated_electronics\_limits.dm" #include "code\modules\integrated_electronics\arithmetic.dm" #include "code\modules\integrated_electronics\assemblies.dm" #include "code\modules\integrated_electronics\converters.dm"