diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm new file mode 100644 index 00000000000..ff59f3f9585 --- /dev/null +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -0,0 +1,155 @@ + +/* + + All telecommunications interactions: + +*/ + +/obj/machinery/telecomms + var + temp = "" // output message + + + + attackby(obj/item/P as obj, mob/user as mob) + + // Using a multitool lets you access the receiver's interface + if(istype(P, /obj/item/device/multitool)) + attack_hand(user) + + attack_hand(var/mob/user as mob) + + // You need a multitool to use this. + if(user.equipped()) + if(!istype(user.equipped(), /obj/item/device/multitool)) + return + else + return + + if(stat & (BROKEN|NOPOWER)) + return + + var/obj/item/device/multitool/P = user.equipped() + + user.machine = src + var/dat + dat = "[src.name]

[src.name] Access

" + dat += "
[temp]
" + + if(id != "" && id) + dat += "
Identification String: [id]" + else + dat += "
Identification String: NULL" + dat += "
Network: [network]" + dat += "
Prefabrication: [autolinkers.len ? "TRUE" : "FALSE"]" + dat += "
Linked Network Entities:
    " + for(var/obj/machinery/telecomms/T in links) + dat += "
  1. \ref[T] [T.name] ([T.id])
  2. " + dat += "
" + + dat += "
Filtering Frequencies: " + var/i = 0 + + if(length(freq_listening)) + for(var/x in freq_listening) + i++ + if(i < length(freq_listening)) + dat += "[format_frequency(x)] GHz\[X\]; " + else + dat += "[format_frequency(x)] GHz\[X\]" + else + dat += "NONE" + + dat += "
\[Add Filter\]" + dat += "
" + if(P.buffer) + dat += "

MULTITOOL BUFFER: \ref[P.buffer] [P.buffer] \[Link\] \[Flush\]" + else + dat += "

MULTITOOL BUFFER:
\[Add Machine\]" + + dat += "
" + temp = "" + user << browse(dat, "window=[src.name];size=520x500;can_resize=0") + onclose(user, "dormitory") + + Topic(href, href_list) + + if(usr.equipped()) + if(!istype(usr.equipped(), /obj/item/device/multitool)) + return + else + return + + if(stat & (BROKEN|NOPOWER)) + return + + var/obj/item/device/multitool/P = usr.equipped() + + if(href_list["input"]) + switch(href_list["input"]) + + if("id") + var/newid = input(usr, "Specify the new ID for this machine", src, id) as null|text + if(newid && usr in range(1, src)) + id = newid + temp = "-% New ID assigned: \"[id]\" %-" + + if("network") + var/newnet = input(usr, "Specify the new network for this machine. This will break all current links.", src, network) as null|text + if(newnet && usr in range(1, src) && newnet != network) + + if(length(newnet) > 15) + temp = "-% Too many characters in new network tag %-" + + else + for(var/obj/machinery/telecomms/T in links) + T.links.Remove(src) + + network = newnet + links = list() + temp = "-% New network tag assigned: \"[network]\" %-" + + + if("freq") + var/newfreq = input(usr, "Specify a new frequency to filter (GHz). Decimals assigned automatically.", src, network) as null|num + if(newfreq && usr in range(1, src)) + if(!(newfreq in freq_listening)) + + if(findtext(num2text(newfreq), ".")) + newfreq *= 10 // shift the decimal one place + + freq_listening.Add(newfreq) + temp = "-% New frequency filter assigned: \"[newfreq] GHz\" %-" + + if(href_list["delete"]) + + var/x = freq_listening[text2num(href_list["delete"])] + temp = "-% Removed frequency filter [x] %-" + freq_listening.Remove(x) + + if(href_list["link"]) + + if(P.buffer) + if( (!(src in P.buffer.links)) && (!(P.buffer in src.links))) + P.buffer.links.Add(src) + src.links.Add(P.buffer) + + else + temp = "-% Unable to acquire buffer %-" + + if(href_list["buffer"]) + + P.buffer = src + + + if(href_list["flush"]) + + P.buffer = null + + + usr.machine = src + src.add_fingerprint(usr) + + updateUsrDialog() + +