/* Telecomms monitor tracks the overall trafficing of a telecommunications network and displays a hierarchy of linked machines. */ /obj/machinery/computer/telecomms/monitor name = "telecommunications monitor" desc = "A monitor that tracks the overall traffic of a telecommunications network, and displays a hierarchy of linked machines." icon_screen = "comm_monitor" icon_keyboard = "green_key" icon_keyboard_emis = "green_key_mask" light_color = LIGHT_COLOR_GREEN var/screen = 0 // the screen number: var/list/machinelist = list() // the machines located by the computer var/obj/machinery/telecomms/SelectedMachine var/network = "NULL" // the network to probe var/temp = "" // temporary feedback messages /obj/machinery/computer/telecomms/monitor/attack_hand(mob/user as mob) if(stat & (BROKEN|NOPOWER)) return user.set_machine(src) var/dat = "
Telecommunications Monitor
" switch(screen) // --- Main Menu --- if(0) dat += "
[temp]

" dat += "
Current Network: [network]
" if(machinelist.len) dat += "
Detected Network Entities:" dat += "
\[Flush Buffer\]" else dat += "\[Probe Network\]" // --- Viewing Machine --- if(1) dat += "
[temp]
" dat += "
\[Main Menu\]
" dat += "
Current Network: [network]
" dat += "Selected Network Entity: [SelectedMachine.name] ([SelectedMachine.id])
" dat += "Linked Entities:
    " for(var/obj/machinery/telecomms/T in SelectedMachine.links) if(!T.hide) dat += "
  1. [REF(T.id)] [T.name] ([T.id])
  2. " dat += "
" user << browse(HTML_SKELETON_TITLE("Telecommunications Monitor", dat), "window=comm_monitor;size=575x400") onclose(user, "server_control") temp = "" return /obj/machinery/computer/telecomms/monitor/Topic(href, href_list) if(..()) return add_fingerprint(usr) usr.set_machine(src) if(href_list["viewmachine"]) screen = 1 for(var/obj/machinery/telecomms/T in machinelist) if(T.id == href_list["viewmachine"]) SelectedMachine = T break if(href_list["operation"]) switch(href_list["operation"]) if("release") machinelist = list() screen = 0 if("mainmenu") screen = 0 if("probe") if(machinelist.len > 0) temp = "- FAILED: CANNOT PROBE WHEN BUFFER FULL -" else for(var/obj/machinery/telecomms/T in range(25, src)) if(T.network == network) machinelist.Add(T) if(!machinelist.len) temp = "- FAILED: UNABLE TO LOCATE NETWORK ENTITIES IN \[[network]\] -" else temp = "- [machinelist.len] ENTITIES LOCATED & BUFFERED -" screen = 0 if(href_list["network"]) var/newnet = sanitize(input(usr, "Which network do you want to view?", "Comm Monitor", network) as null|text) if(newnet && (((usr in range(1, src)) || issilicon(usr)))) if(length(newnet) > 15) temp = "- FAILED: NETWORK TAG STRING TOO LENGHTLY -" else network = newnet screen = 0 machinelist = list() temp = "- NEW NETWORK TAG SET IN ADDRESS \[[network]\] -" updateUsrDialog() return /obj/machinery/computer/telecomms/monitor/attackby(obj/item/attacking_item, mob/user) if(attacking_item.tool_behaviour == TOOL_SCREWDRIVER) if(attacking_item.use_tool(src, user, 20, volume = 50)) if (src.stat & BROKEN) to_chat(user, SPAN_NOTICE("The broken glass falls out.")) var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) new /obj/item/material/shard( src.loc ) var/obj/item/circuitboard/comm_monitor/M = new /obj/item/circuitboard/comm_monitor( A ) for (var/obj/C in src) C.forceMove(src.loc) A.circuit = M A.state = 3 A.icon_state = "3" A.anchored = 1 qdel(src) else to_chat(user, SPAN_NOTICE("You disconnect the monitor.")) var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) var/obj/item/circuitboard/comm_monitor/M = new /obj/item/circuitboard/comm_monitor( A ) for (var/obj/C in src) C.forceMove(src.loc) A.circuit = M A.state = 4 A.icon_state = "4" A.anchored = 1 qdel(src) src.updateUsrDialog() return /obj/machinery/computer/telecomms/monitor/emag_act(var/remaining_charges, var/mob/user) if(!emagged) playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1) emagged = 1 to_chat(user, SPAN_NOTICE("You disable the security protocols.")) src.updateUsrDialog() return 1