mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-20 19:44:46 +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)
|
||||
|
||||
Reference in New Issue
Block a user