mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-29 15:06:39 +01:00
Finalizes work, adds designs to research.
This commit is contained in:
@@ -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 = "<html><head><title>[src.name]</title></head><body>"
|
||||
HTML += "<div align='center'>"
|
||||
HTML += "<table border='1' style='undefined;table-layout: fixed; width: 424px'>"
|
||||
|
||||
HTML += "<br><a href='?src=\ref[src];user=\ref[user]'>\[Refresh\]</a> | "
|
||||
HTML += "<a href='?src=\ref[src];user=\ref[user];rename=1'>\[Rename\]</a><br>"
|
||||
|
||||
HTML += "<colgroup>"
|
||||
HTML += "<col style='width: 121px'>"
|
||||
HTML += "<col style='width: 181px'>"
|
||||
@@ -143,15 +146,15 @@
|
||||
io = get_pin_ref("input",i)
|
||||
if(io)
|
||||
if(io.linked.len)
|
||||
words = "<a href=?src=\ref[src];action=wire;user=\ref[user]><b>[io.name] [io.display_data()]</b></a><br>"
|
||||
words = "<a href=?src=\ref[src];wire=1;user=\ref[user];pin=\ref[io]><b>[io.name] [io.display_data()]</b></a><br>"
|
||||
for(var/datum/integrated_io/linked in io.linked)
|
||||
words += "<a href=?src=\ref[src];action=unwire;user=\ref[user];pin=\ref[io]>\[[linked.name]\]</a> \
|
||||
@ <a href=?src[src];action=examine;user=\ref[user]>[linked.holder]</a><br>"
|
||||
words += "<a href=?src=\ref[src];wire=1;user=\ref[user];pin=\ref[io]>\[[linked.name]\]</a> \
|
||||
@ <a href=?src=\ref[linked.holder];examine=1;user=\ref[user]>[linked.holder]</a><br>"
|
||||
else // "Click <a href=?src=\ref[src];action=start>here</a>!"
|
||||
words = "<a href=?src=\ref[src];action=wire;user=\ref[user]>[io.name] [io.display_data()]</a><br>"
|
||||
words = "<a href=?src=\ref[src];wire=1;user=\ref[user];pin=\ref[io]>[io.name] [io.display_data()]</a><br>"
|
||||
for(var/datum/integrated_io/linked in io.linked)
|
||||
words += "<a href=?src=\ref[src];action=unwire;user=\ref[user];pin=\ref[io]>\[[linked.name]\]</a> \
|
||||
@ <a href=?src[src];action=examine;user=\ref[user]>[linked.holder]</a><br>"
|
||||
words += "<a href=?src=\ref[src];wire=1;user=\ref[user];pin=\ref[io]>\[[linked.name]\]</a> \
|
||||
@ <a href=?src=\ref[linked.holder];examine=1;user=\ref[user]>[linked.holder]</a><br>"
|
||||
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 = "<a href=?src=\ref[src];action=wire;user=\ref[user]><b>[io.name] [io.display_data()]</b></a><br>"
|
||||
words = "<a href=?src=\ref[src];wire=1;user=\ref[user];pin=\ref[io]><b>[io.name] [io.display_data()]</b></a><br>"
|
||||
for(var/datum/integrated_io/linked in io.linked)
|
||||
words += "<a href=?src=\ref[src];action=unwire;user=\ref[user];pin=\ref[io]>\[[linked.name]\]</a> \
|
||||
@ <a href=?src[src];action=examine;user=\ref[user]>[linked.holder]</a><br>"
|
||||
words += "<a href=?src=\ref[src];wire=1;user=\ref[user];pin=\ref[io]>\[[linked.name]\]</a> \
|
||||
@ <a href=?src=\ref[linked.holder];examine=1;user=\ref[user]>[linked.holder]</a><br>"
|
||||
else
|
||||
words = "<a href=?src=\ref[src];action=wire;user=\ref[user]>[io.name] [io.display_data()]</a><br>"
|
||||
words = "<a href=?src=\ref[src];wire=1;user=\ref[user];pin=\ref[io]>[io.name] [io.display_data()]</a><br>"
|
||||
for(var/datum/integrated_io/linked in io.linked)
|
||||
words += "<a href=?src=\ref[src];action=unwire;user=\ref[user];pin=\ref[io]>\[[linked.name]\]</a> \
|
||||
@ <a href=?src[src];action=examine;user=\ref[user]>[linked.holder]</a><br>"
|
||||
words += "<a href=?src=\ref[src];wire=1;user=\ref[user];pin=\ref[io]>\[[linked.name]\]</a> \
|
||||
@ <a href=?src=\ref[linked.holder];examine=1;user=\ref[user]>[linked.holder]</a><br>"
|
||||
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 = "<a href=?src=\ref[src];action=wire;user=\ref[user]><font color='FF0000'><b>[io.name]</b></font></a><br>"
|
||||
words = "<a href=?src=\ref[src];wire=1;user=\ref[user];pin=\ref[io]><font color='FF0000'><b>[io.name]</b></font></a><br>"
|
||||
for(var/datum/integrated_io/linked in io.linked)
|
||||
words += "<a href=?src=\ref[src];action=unwire;user=\ref[user];pin=\ref[io]>\[[linked.name]\]</a> \
|
||||
@ <a href=?src[src];action=examine;user=\ref[user]>[linked.holder]</a><br>"
|
||||
words += "<a href=?src=\ref[src];wire=1;user=\ref[user];pin=\ref[io]>\[[linked.name]\]</a> \
|
||||
@ <a href=?src[src];examine=1;user=\ref[user]>[linked.holder]</a><br>"
|
||||
else // "Click <a href=?src=\ref[src];action=start>here</a>!"
|
||||
words = "<a href=?src=\ref[src];action=wire;user=\ref[user]><font color='FF0000'>[io.name]</font></a><br>"
|
||||
words = "<a href=?src=\ref[src];wire=1;user=\ref[user];pin=\ref[io]><font color='FF0000'>[io.name]</font></a><br>"
|
||||
for(var/datum/integrated_io/linked in io.linked)
|
||||
words += "<a href=?src=\ref[src];action=unwire;user=\ref[user];pin=\ref[io]>\[[linked.name]\]</a> \
|
||||
@ <a href=?src[src];action=examine;user=\ref[user]>[linked.holder]</a><br>"
|
||||
words += "<a href=?src=\ref[src];wire=1;user=\ref[user];pin=\ref[io]>\[[linked.name]\]</a> \
|
||||
@ <a href=?src=\ref[linked.holder];examine=1;user=\ref[user]>[linked.holder]</a><br>"
|
||||
HTML += "<tr>"
|
||||
HTML += "<td colspan='3' align='center'>[words]</td>"
|
||||
HTML += "</tr>"
|
||||
@@ -206,50 +209,47 @@
|
||||
HTML += "</table>"
|
||||
HTML += "</div>"
|
||||
|
||||
HTML += "<br><br><a href='?src=\ref[src]'>Refresh</a>"
|
||||
HTML += "<br><font color='0000FF'>[extended_desc]</font>"
|
||||
|
||||
HTML += "</body></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 << "<span class='warning'>You can't do a whole lot without tools.</span>"
|
||||
if(wirer && pin)
|
||||
wirer.wire(pin, user)
|
||||
else
|
||||
user << "<span class='warning'>You can't do a whole lot without tools.</span>"
|
||||
|
||||
//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 = "<html><head><title>[src.name]</title></head><body>"
|
||||
// HTML += "Parent: [holder]"
|
||||
// HTML += "Pin Type: [io_type]"
|
||||
// HTML += "Linked Pins:<br>"
|
||||
// for(var/datum/integrated_io/io in src.linked)
|
||||
// HTML += "<a href=?src=\ref[io];action=view;user=\ref[user]>[io.name] [io.display_data()] @ [io.holder]</a><br>"
|
||||
// HTML += "<a href=?src=\ref[src];action=interact;user=\ref[user]>\[Wire This\]</a>"
|
||||
//
|
||||
// HTML += "</body></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 << "<span class='warning'>You can't do a whole lot without tools.</span>"
|
||||
//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)
|
||||
|
||||
@@ -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
|
||||
@@ -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()
|
||||
..()
|
||||
if(..())
|
||||
var/datum/integrated_io/output/O = outputs[1]
|
||||
O.data = 3.14159
|
||||
O.push_data()
|
||||
@@ -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 << "<span class='notice'>You [opened ? "opened" : "closed"] \the [src].</span>"
|
||||
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 << "<span class='warning'>\The [src] isn't opened, so you can't fiddle with the internal components. \
|
||||
Try using a crowbar.</span>"
|
||||
|
||||
/obj/item/device/electronic_assembly/attack_self(mob/user)
|
||||
var/list/available_inputs = list()
|
||||
|
||||
@@ -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()
|
||||
|
||||
..()
|
||||
outgoing.data = result
|
||||
outgoing.push_data()
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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
|
||||
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
|
||||
@@ -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 << "<span class='notice'>You slide \the [installed_gun] out of the firing mechanism.</span>"
|
||||
@@ -45,7 +45,7 @@
|
||||
else
|
||||
user << "<span class='notice'>There's no weapon to remove from the mechanism.</span>"
|
||||
|
||||
/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)
|
||||
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()
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
@@ -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"
|
||||
|
||||
@@ -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].</span>"
|
||||
//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 << "<span class='notice'>You attach a data wire to \the [target]'s [selected_io.name] data channel.</span>"
|
||||
mode = WIRING
|
||||
return
|
||||
|
||||
else if(mode == WIRING)
|
||||
var/datum/integrated_io/second_io = select_io(user, target)
|
||||
if(selected_io == second_io)
|
||||
user << "<span class='warning'>Wiring \the [target]'s [selected_io.name] into itself is rather pointless.<span>"
|
||||
return
|
||||
else if(second_io)
|
||||
if(second_io.io_type != selected_io.io_type)
|
||||
user << "<span class='warning'>Those two types of channels are incompatable. The first is a [selected_io.io_type], \
|
||||
while the second is a [second_io.io_type].<span>"
|
||||
return
|
||||
|
||||
selected_io.linked |= second_io
|
||||
second_io.linked |= selected_io
|
||||
|
||||
// selected_io.linked = second_io
|
||||
// second_io.linked = selected_io
|
||||
user << "<span class='notice'>You connect \the [selected_io.holder]'s [selected_io.name] to \the [target]'s [second_io.name].</span>"
|
||||
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 << "<span class='warning'>There is nothing connected to \the [selected_io] data channel.</span>"
|
||||
return
|
||||
user << "<span class='notice'>You prepare to detach a data wire from \the [target]'s [selected_io.name] data channel.</span>"
|
||||
mode = UNWIRING
|
||||
return
|
||||
|
||||
else if(mode == UNWIRING)
|
||||
var/datum/integrated_io/second_io = select_io(user, target)
|
||||
if(selected_io == second_io)
|
||||
user << "<span class='warning'>You can't wire a pin into each other, so unwiring \the [selected_io.holder] from \
|
||||
the same pin is rather moot.<span>"
|
||||
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 << "<span class='notice'>You disconnect \the [selected_io.holder]'s [selected_io.name] from \
|
||||
\the [second_io.holder]'s [second_io.name].</span>"
|
||||
else
|
||||
user << "<span class='warning'>\The [selected_io.holder]'s [selected_io.name] and \the [second_io.holder]'s \
|
||||
[second_io.name] are not connected.<span>"
|
||||
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 << "<span class='notice'>You disconnect \the [target_io.holder]'s [target_io.name] \
|
||||
from \the [target_io.linked.holder]'s [target_io.linked.linked].<span>"
|
||||
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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
+1
-2
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user