diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm
index ffd2197133..d41bcce164 100644
--- a/code/game/machinery/computer/message.dm
+++ b/code/game/machinery/computer/message.dm
@@ -1,479 +1,3 @@
-<<<<<<< HEAD
-
-// Allows you to monitor messages that passes the server.
-
-
-
-
-/obj/machinery/computer/message_monitor
- name = "message monitor console"
- desc = "Used to Monitor the crew's messages, that are sent via PDA. Can also be used to view Request Console messages."
- icon_screen = "comm_logs"
- circuit = /obj/item/circuitboard/computer/message_monitor
- //Server linked to.
- var/obj/machinery/message_server/linkedServer = null
- //Sparks effect - For emag
- var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread
- //Messages - Saves me time if I want to change something.
- var/noserver = "ALERT: No server detected."
- var/incorrectkey = "ALERT: Incorrect decryption key!"
- var/defaultmsg = "Welcome. Please select an option."
- var/rebootmsg = "%$&(�: Critical %$$@ Error // !RestArting! - ?pLeaSe wAit!"
- //Computer properties
- var/screen = 0 // 0 = Main menu, 1 = Message Logs, 2 = Hacked screen, 3 = Custom Message
- var/hacking = 0 // Is it being hacked into by the AI/Cyborg
- var/message = "System bootup complete. Please select an option." // The message that shows on the main menu.
- var/auth = 0 // Are they authenticated?
- var/optioncount = 7
- // Custom Message Properties
- var/customsender = "System Administrator"
- var/obj/item/device/pda/customrecepient = null
- var/customjob = "Admin"
- var/custommessage = "This is a test, please ignore."
-
- light_color = LIGHT_COLOR_GREEN
-
-/obj/machinery/computer/message_monitor/attackby(obj/item/O, mob/living/user, params)
- if(istype(O, /obj/item/screwdriver) && emagged)
- //Stops people from just unscrewing the monitor and putting it back to get the console working again.
- to_chat(user, "It is too hot to mess with!")
- else
- return ..()
-
-/obj/machinery/computer/message_monitor/emag_act(mob/user)
- if(emagged)
- return
- if(!isnull(src.linkedServer))
- emagged = TRUE
- screen = 2
- spark_system.set_up(5, 0, src)
- src.spark_system.start()
- var/obj/item/paper/monitorkey/MK = new/obj/item/paper/monitorkey
- MK.loc = src.loc
- // Will help make emagging the console not so easy to get away with.
- MK.info += "
�%@%(*$%&(�&?*(%&�/{}"
- var/time = 100 * length(src.linkedServer.decryptkey)
- addtimer(CALLBACK(src, .proc/UnmagConsole), time)
- message = rebootmsg
- else
- to_chat(user, "A no server error appears on the screen.")
-
-/obj/machinery/computer/message_monitor/Initialize()
- . = ..()
- //Is the server isn't linked to a server, and there's a server available, default it to the first one in the list.
- if(!linkedServer)
- if(GLOB.message_servers && GLOB.message_servers.len > 0)
- linkedServer = GLOB.message_servers[1]
-
-/obj/machinery/computer/message_monitor/attack_hand(mob/living/user)
- if(..())
- return
- //If the computer is being hacked or is emagged, display the reboot message.
- if(hacking || emagged)
- message = rebootmsg
- var/dat = "
/"
-
- if(auth)
- dat += ""
- else
- dat += " \[Unauthenticated\] /"
- dat += " Server Power: [src.linkedServer && src.linkedServer.active ? "\[On\]":"\[Off\]"]
"
-
- if(hacking || emagged)
- screen = 2
- else if(!auth || !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN)))
- if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN)))
- message = noserver
- screen = 0
-
- switch(screen)
- //Main menu
- if(0)
- // = TAB
- var/i = 0
- dat += " [++i]. Link To A Server"
- if(auth)
- if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN)))
- dat += " ERROR: Server not found!
"
- else
- dat += " [++i]. View Message Logs
"
- dat += " [++i]. View Request Console Logs "
- dat += " [++i]. Clear Message Logs
"
- dat += " [++i]. Clear Request Console Logs
"
- dat += " [++i]. Set Custom Key
"
- dat += " [++i]. Send Admin Message
"
- else
- for(var/n = ++i; n <= optioncount; n++)
- dat += " [n]. ---------------
"
- if(issilicon(usr) && is_special_character(usr))
- //Malf/Traitor AIs can bruteforce into the system to gain the Key.
- dat += "*&@#. Bruteforce Key
"
- else
- dat += "
"
-
- //Bottom message
- if(!auth)
- dat += "
Please authenticate with the server in order to show additional options."
- else
- dat += "
Reg, #514 forbids sending messages to a Head of Staff containing Erotic Rendering Properties."
-
- //Message Logs
- if(1)
- var/index = 0
- //var/recipient = "Unspecified" //name of the person
- //var/sender = "Unspecified" //name of the sender
- //var/message = "Blank" //transferred message
- dat += "Back - Refresh
"
- dat += "| X | Sender | Recipient | Message |
"
- for(var/datum/data_pda_msg/pda in src.linkedServer.pda_msgs)
- index++
- if(index > 3000)
- break
- // Del - Sender - Recepient - Message
- // X - Al Green - Your Mom - WHAT UP!?
- dat += "| X | [pda.sender] | [pda.recipient] | [pda.message][pda.photo ? "(Photo)":""] |
"
- dat += "
"
- //Hacking screen.
- if(2)
- if(isAI(user) || iscyborg(user))
- dat += "Brute-forcing for server key.
It will take 20 seconds for every character that the password has."
- dat += "In the meantime, this console can reveal your true intentions if you let someone access it. Make sure no humans enter the room during that time."
- else
- //It's the same message as the one above but in binary. Because robots understand binary and humans don't... well I thought it was clever.
- dat += {"01000010011100100111010101110100011001010010110
- 10110011001101111011100100110001101101001011011100110011
- 10010000001100110011011110111001000100000011100110110010
- 10111001001110110011001010111001000100000011010110110010
- 10111100100101110001000000100100101110100001000000111011
- 10110100101101100011011000010000001110100011000010110101
- 10110010100100000001100100011000000100000011100110110010
- 10110001101101111011011100110010001110011001000000110011
- 00110111101110010001000000110010101110110011001010111001
- 00111100100100000011000110110100001100001011100100110000
- 10110001101110100011001010111001000100000011101000110100
- 00110000101110100001000000111010001101000011001010010000
- 00111000001100001011100110111001101110111011011110111001
- 00110010000100000011010000110000101110011001011100010000
- 00100100101101110001000000111010001101000011001010010000
- 00110110101100101011000010110111001110100011010010110110
- 10110010100101100001000000111010001101000011010010111001
- 10010000001100011011011110110111001110011011011110110110
- 00110010100100000011000110110000101101110001000000111001
- 00110010101110110011001010110000101101100001000000111100
- 10110111101110101011100100010000001110100011100100111010
- 10110010100100000011010010110111001110100011001010110111
- 00111010001101001011011110110111001110011001000000110100
- 10110011000100000011110010110111101110101001000000110110
- 00110010101110100001000000111001101101111011011010110010
- 10110111101101110011001010010000001100001011000110110001
- 10110010101110011011100110010000001101001011101000010111
- 00010000001001101011000010110101101100101001000000111001
- 10111010101110010011001010010000001101110011011110010000
- 00110100001110101011011010110000101101110011100110010000
- 00110010101101110011101000110010101110010001000000111010
- 00110100001100101001000000111001001101111011011110110110
- 10010000001100100011101010111001001101001011011100110011
- 10010000001110100011010000110000101110100001000000111010
- 001101001011011010110010100101110"}
-
- //Fake messages
- if(3)
- dat += "Back - Reset
"
-
- dat += {"
- | Sender |
- Sender's Job |
- Recipient |
- Message |
"}
- //Sender - Sender's Job - Recepient - Message
- //Al Green- Your Dad - Your Mom - WHAT UP!?
-
- dat += {"| [customsender] |
- [customjob] |
- [customrecepient ? customrecepient.owner : "NONE"] |
- [custommessage] |
"}
- dat += "
Send"
-
- //Request Console Logs
- if(4)
-
- var/index = 0
- /* data_rc_msg
- X - 5%
- var/rec_dpt = "Unspecified" //name of the person - 15%
- var/send_dpt = "Unspecified" //name of the sender- 15%
- var/message = "Blank" //transferred message - 300px
- var/stamp = "Unstamped" - 15%
- var/id_auth = "Unauthenticated" - 15%
- var/priority = "Normal" - 10%
- */
- dat += "Back - Refresh
"
- dat += {"| X | Sending Dep. | Receiving Dep. |
- Message | Stamp | ID Auth. | Priority. |
"}
- for(var/datum/data_rc_msg/rc in src.linkedServer.rc_msgs)
- index++
- if(index > 3000)
- break
- // Del - Sender - Recepient - Message
- // X - Al Green - Your Mom - WHAT UP!?
- dat += {"| X | [rc.send_dpt] |
- [rc.rec_dpt] | [rc.message] | [rc.stamp] | [rc.id_auth] | [rc.priority] |
"}
- dat += "
"
-
- message = defaultmsg
- var/datum/browser/popup = new(user, "hologram_console", name, 700, 700)
- popup.set_content(dat)
- popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
- popup.open()
- return
-
-/obj/machinery/computer/message_monitor/proc/BruteForce(mob/user)
- if(isnull(linkedServer))
- to_chat(user, "Could not complete brute-force: Linked Server Disconnected!")
- else
- var/currentKey = src.linkedServer.decryptkey
- to_chat(user, "Brute-force completed! The key is '[currentKey]'.")
- src.hacking = 0
- src.screen = 0 // Return the screen back to normal
-
-/obj/machinery/computer/message_monitor/proc/UnmagConsole()
- emagged = FALSE
-
-/obj/machinery/computer/message_monitor/proc/ResetMessage()
- customsender = "System Administrator"
- customrecepient = null
- custommessage = "This is a test, please ignore."
- customjob = "Admin"
-
-/obj/machinery/computer/message_monitor/Topic(href, href_list)
- if(..())
- return
-
- if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr))
- //Authenticate
- if (href_list["auth"])
- if(!linkedServer || linkedServer.stat & (NOPOWER|BROKEN))
- message = noserver
- else
- if(auth)
- auth = 0
- screen = 0
- else
- var/dkey = trim(input(usr, "Please enter the decryption key.") as text|null)
- if(dkey && dkey != "")
- if(src.linkedServer.decryptkey == dkey)
- auth = 1
- else
- message = incorrectkey
-
- //Turn the server on/off.
- if (href_list["active"])
- if(auth)
- linkedServer.active = !linkedServer.active
- //Find a server
- if (href_list["find"])
- if(GLOB.message_servers && GLOB.message_servers.len > 1)
- src.linkedServer = input(usr,"Please select a server.", "Select a server.", null) as null|anything in GLOB.message_servers
- message = "NOTICE: Server selected."
- else if(GLOB.message_servers && GLOB.message_servers.len > 0)
- linkedServer = GLOB.message_servers[1]
- message = "NOTICE: Only Single Server Detected - Server selected."
- else
- message = noserver
-
- //View the logs - KEY REQUIRED
- if (href_list["view"])
- if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN)))
- message = noserver
- else
- if(auth)
- src.screen = 1
-
- //Clears the logs - KEY REQUIRED
- if (href_list["clear"])
- if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN)))
- message = noserver
- else
- if(auth)
- src.linkedServer.pda_msgs = list()
- message = "NOTICE: Logs cleared."
- //Clears the request console logs - KEY REQUIRED
- if (href_list["clearr"])
- if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN)))
- message = noserver
- else
- if(auth)
- src.linkedServer.rc_msgs = list()
- message = "NOTICE: Logs cleared."
- //Change the password - KEY REQUIRED
- if (href_list["pass"])
- if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN)))
- message = noserver
- else
- if(auth)
- var/dkey = trim(stripped_input(usr, "Please enter the decryption key."))
- if(dkey && dkey != "")
- if(src.linkedServer.decryptkey == dkey)
- var/newkey = trim(input(usr,"Please enter the new key (3 - 16 characters max):"))
- if(length(newkey) <= 3)
- message = "NOTICE: Decryption key too short!"
- else if(length(newkey) > 16)
- message = "NOTICE: Decryption key too long!"
- else if(newkey && newkey != "")
- src.linkedServer.decryptkey = newkey
- message = "NOTICE: Decryption key set."
- else
- message = incorrectkey
-
- //Hack the Console to get the password
- if (href_list["hack"])
- if(issilicon(usr) && is_special_character(usr))
- src.hacking = 1
- src.screen = 2
- //Time it takes to bruteforce is dependant on the password length.
- spawn(100*length(src.linkedServer.decryptkey))
- if(src && src.linkedServer && usr)
- BruteForce(usr)
- //Delete the log.
- if (href_list["delete"])
- //Are they on the view logs screen?
- if(screen == 1)
- if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN)))
- message = noserver
- else //if(istype(href_list["delete"], /datum/data_pda_msg))
- src.linkedServer.pda_msgs -= locate(href_list["delete"])
- message = "NOTICE: Log Deleted!"
- //Delete the request console log.
- if (href_list["deleter"])
- //Are they on the view logs screen?
- if(screen == 4)
- if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN)))
- message = noserver
- else //if(istype(href_list["delete"], /datum/data_pda_msg))
- src.linkedServer.rc_msgs -= locate(href_list["deleter"])
- message = "NOTICE: Log Deleted!"
- //Create a custom message
- if (href_list["msg"])
- if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN)))
- message = noserver
- else
- if(auth)
- src.screen = 3
- //Fake messaging selection - KEY REQUIRED
- if (href_list["select"])
- if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN)))
- message = noserver
- screen = 0
- else
- switch(href_list["select"])
-
- //Reset
- if("Reset")
- ResetMessage()
-
- //Select Your Name
- if("Sender")
- customsender = stripped_input(usr, "Please enter the sender's name.")
-
- //Select Receiver
- if("Recepient")
- //Get out list of viable PDAs
- var/list/obj/item/device/pda/sendPDAs = get_viewable_pdas()
- if(GLOB.PDAs && GLOB.PDAs.len > 0)
- customrecepient = input(usr, "Select a PDA from the list.") as null|anything in sortNames(sendPDAs)
- else
- customrecepient = null
-
- //Enter custom job
- if("RecJob")
- customjob = stripped_input(usr, "Please enter the sender's job.")
-
- //Enter message
- if("Message")
- custommessage = stripped_input(usr, "Please enter your message.")
-
- //Send message
- if("Send")
-
- if(isnull(customsender) || customsender == "")
- customsender = "UNKNOWN"
-
- if(isnull(customrecepient))
- message = "NOTICE: No recepient selected!"
- return src.attack_hand(usr)
-
- if(isnull(custommessage) || custommessage == "")
- message = "NOTICE: No message entered!"
- return src.attack_hand(usr)
-
- var/obj/item/device/pda/PDARec = null
- for (var/obj/item/device/pda/P in get_viewable_pdas())
- if(P.owner == customsender)
- PDARec = P
- //Sender isn't faking as someone who exists
- if(isnull(PDARec))
- src.linkedServer.send_pda_message("[customrecepient.owner]", "[customsender]","[custommessage]")
- customrecepient.tnote += "← From [customsender] ([customjob]):
[custommessage]
"
- if (!customrecepient.silent)
- playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1)
- customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3)
- if( customrecepient.loc && ishuman(customrecepient.loc) )
- var/mob/living/carbon/human/H = customrecepient.loc
- to_chat(H, "[icon2html(customrecepient, viewers(H))] Message from [customsender] ([customjob]), \"[custommessage]\" (Reply)")
- log_talk(usr,"[key_name(usr)] (PDA: [customsender]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA)
- customrecepient.cut_overlays()
- customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r"))
- //Sender is faking as someone who exists
- else
- src.linkedServer.send_pda_message("[customrecepient.owner]", "[PDARec.owner]","[custommessage]")
- customrecepient.tnote += "← From [PDARec.owner] ([customjob]):
[custommessage]
"
- if (!customrecepient.silent)
- playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1)
- customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3)
- if( customrecepient.loc && ishuman(customrecepient.loc) )
- var/mob/living/carbon/human/H = customrecepient.loc
- to_chat(H, "[icon2html(customrecepient, H)] Message from [PDARec.owner] ([customjob]), \"[custommessage]\" (Reply)")
- log_talk(usr,"[key_name(usr)] (PDA: [PDARec.owner]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA)
- customrecepient.cut_overlays()
- customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r"))
- //Finally..
- ResetMessage()
-
- //Request Console Logs - KEY REQUIRED
- if(href_list["viewr"])
- if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN)))
- message = noserver
- else
- if(auth)
- src.screen = 4
-
- if (href_list["back"])
- src.screen = 0
-
- return src.attack_hand(usr)
-
-
-/obj/item/paper/monitorkey
- //..()
- name = "monitor decryption key"
- var/obj/machinery/message_server/server = null
-
-/obj/item/paper/monitorkey/Initialize()
- ..()
- return INITIALIZE_HINT_LATELOAD
-
-/obj/item/paper/monitorkey/LateInitialize()
- if(GLOB.message_servers)
- for(var/obj/machinery/message_server/server in GLOB.message_servers)
- if(!isnull(server))
- if(!isnull(server.decryptkey))
- info = "Daily Key Reset
The new message monitor key is '[server.decryptkey]'.
Please keep this a secret and away from the clown.
If necessary, change the password to a more secure one."
- info_links = info
- add_overlay("paper_words")
- break
-=======
-
// Allows you to monitor messages that passes the server.
@@ -946,4 +470,3 @@
info_links = info
add_overlay("paper_words")
break
->>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental