//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 /obj/machinery/computer/telecomms /obj/machinery/computer/telecomms/server name = "Telecommunications Server Monitor" desc = "A monitor that contains and displays the logs of a selected telecommunications server to authorized personnel." icon_screen = "comm_logs" icon_keyboard = "green_key" icon_keyboard_emis = "green_key_mask" light_color = LIGHT_COLOR_GREEN var/screen = 0 // the screen number: var/list/servers = list() // the servers located by the computer var/obj/machinery/telecomms/server/SelectedServer var/network = "NULL" // the network to probe var/temp = "" // temporary feedback messages var/universal_translate = 0 // set to 1 if it can translate nonhuman speech req_access = list(ACCESS_TCOMSAT) var/last_print_time /obj/machinery/computer/telecomms/server/attack_hand(mob/user) if(stat & (BROKEN|NOPOWER)) return user.set_machine(src) var/dat = "
Telecommunications Server Monitor
" switch(screen) // --- Main Menu --- if(0) dat += "
[temp]
" dat += "
Current Network: [network]
" if(servers.len) dat += "
Detected Telecommunication Servers:" dat += "
\[Flush Buffer\]" else dat += "
No servers detected. Scan for servers: \[Scan\]" // --- Viewing Server --- if(1) dat += "
[temp]
" dat += "
\[Main Menu\] \[Refresh\] \[Print Logs\]
" dat += "
Current Network: [network]" dat += "
Selected Server: [SelectedServer.id]" if(SelectedServer.totaltraffic >= 1024) dat += "
Total recorded traffic: [round(SelectedServer.totaltraffic / 1024)] Terrabytes

" else dat += "
Total recorded traffic: [SelectedServer.totaltraffic] Gigabytes

" dat += log_entries_to_text(user, SelectedServer) user << browse(HTML_SKELETON_TITLE("Telecommunications Server Monitor", dat), "window=comm_monitor;size=575x400") onclose(user, "server_control") temp = "" return /obj/machinery/computer/telecomms/server/Topic(href, href_list) if(..()) return add_fingerprint(usr) usr.set_machine(src) if(href_list["viewserver"]) screen = 1 for(var/obj/machinery/telecomms/T in servers) if(T.id == href_list["viewserver"]) SelectedServer = T break if(href_list["operation"]) switch(href_list["operation"]) if("release") servers = list() screen = 0 if("mainmenu") screen = 0 if("scan") if(servers.len > 0) temp = "- FAILED: CANNOT PROBE WHEN BUFFER FULL -" else for(var/obj/machinery/telecomms/server/T in range(25, src)) if(T.network == network) servers.Add(T) if(!servers.len) temp = "- FAILED: UNABLE TO LOCATE SERVERS IN \[[network]\] -" else temp = "- [servers.len] SERVERS PROBED & BUFFERED -" screen = 0 if(href_list["delete"]) if(!src.allowed(usr) && !emagged) to_chat(usr, SPAN_WARNING("ACCESS DENIED.")) return if(SelectedServer) var/datum/comm_log_entry/D = SelectedServer.log_entries[text2num(href_list["delete"])] temp = "- DELETED ENTRY: [D.name] -" SelectedServer.log_entries.Remove(D) qdel(D) else temp = "- FAILED: NO SELECTED MACHINE -" 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 servers = list() temp = "- NEW NETWORK TAG SET IN ADDRESS \[[network]\] -" updateUsrDialog() return /obj/machinery/computer/telecomms/server/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_server/M = new /obj/item/circuitboard/comm_server( 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_server/M = new /obj/item/circuitboard/comm_server( 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) return TRUE src.updateUsrDialog() /obj/machinery/computer/telecomms/server/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 /obj/machinery/computer/telecomms/server/proc/log_entries_to_text(mob/user, var/obj/machinery/telecomms/server/SelectedServer, start = 1, end = SelectedServer.log_entries.len) if(!end) end = SelectedServer.log_entries.len start = between(1, start, SelectedServer.log_entries.len) end = between(0, end, SelectedServer.log_entries.len) var/list/log_entries = SelectedServer.log_entries.Copy(start, end + 1) . += "Stored Logs:
    " var/i = start - 1 for(var/datum/comm_log_entry/C as anything in log_entries) i++ // If the log is a speech file if(C.input_type == "Speech File") . += "
  1. [C.name] \[X\]
    " var/datum/language/language = C.parameters["language"] var/message_out = "" var/message_in = C.parameters["message"] if(universal_translate || (language in user.languages)) message_out = "\"[message_in]\"" else if(!(language in user.languages)) // Language unknown by viewer, scramble message_out = "\"[language.scramble(message_in, user.languages)]\"" else // Entirely unintelligible message_out = "(Unintelligible)" . += "Data type: [C.input_type]
    " . += "Source: [C.parameters["name"]] [C.parameters["job"] ? "(Job: [C.parameters["job"]])" : ""]
    " . += "Class: [C.parameters["race"]]
    " . += "Contents: [message_out]
    " if(language) . += "Language: [language.name]
    " . += "

  2. " else if(C.input_type == "Execution Error") . += "
  3. [C.name] \[X\]
    " . += "Output: \"[C.parameters["message"]]\"
    " . += "

  4. " . += "
"