diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index fb2168181e3..97624713327 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -562,4 +562,11 @@ proc/get_nt_opposed() if(BE_ALIEN) roletext="alien" if(BE_MUTINEER) roletext="mutineer" if(BE_BLOB) roletext="blob" - return roletext \ No newline at end of file + return roletext + +/proc/get_nuke_code() + var/nukecode = "ERROR" + for(var/obj/machinery/nuclearbomb/bomb in world) + if(bomb && bomb.r_code && bomb.z == ZLEVEL_STATION) + nukecode = bomb.r_code + return nukecode \ No newline at end of file diff --git a/code/game/gamemodes/xenos/xenos.dm b/code/game/gamemodes/xenos/xenos.dm index 74b4bea15cd..fa6390a1935 100644 --- a/code/game/gamemodes/xenos/xenos.dm +++ b/code/game/gamemodes/xenos/xenos.dm @@ -150,13 +150,6 @@ else return 0 -/datum/game_mode/xenos/proc/get_nuke_code() - var/nukecode = "ERROR" - for(var/obj/machinery/nuclearbomb/bomb in world) - if(bomb && bomb.r_code && bomb.z == ZLEVEL_STATION) - nukecode = bomb.r_code - return nukecode - /datum/game_mode/xenos/proc/xenos_alive() var/list/livingxenos = list() for(var/datum/mind/xeno in xenos) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 1b2e8b1e8fd..509082a7433 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -233,13 +233,32 @@ var/shuttle_call/shuttle_calls[0] stat_msg2 = input("Line 2", "Enter Message Text", stat_msg2) as text|null setMenuState(usr,COMM_SCREEN_STAT) + if("nukerequest") + if(is_authenticated(usr) == 2) + if(centcomm_message_cooldown) + usr << "Arrays recycling. Please stand by." + nanomanager.update_uis(src) + return + var/input = stripped_input(usr, "Please enter the reason for requesting the nuclear self-destruct codes. Misuse of the nuclear request system will not be tolerated under any circumstances. Transmission does not guarantee a response.", "Self Destruct Code Request.","") + if(!input || ..() || !(is_authenticated(usr) == 2)) + nanomanager.update_uis(src) + return + Nuke_request(input, usr) + usr << "Request sent." + log_say("[key_name(usr)] has requested the nuclear codes from Centcomm") + priority_announcement.Announce("The codes for the on-station nuclear self-destruct have been requested by [usr]. Confirmation or denial of this request will be sent shortly.", "Nuclear Self Destruct Codes Requested",'sound/AI/commandreport.ogg') + centcomm_message_cooldown = 1 + spawn(6000)//10 minute cooldown + centcomm_message_cooldown = 0 + setMenuState(usr,COMM_SCREEN_MAIN) + if("MessageCentcomm") if(is_authenticated(usr) == 2) if(centcomm_message_cooldown) usr << "Arrays recycling. Please stand by." nanomanager.update_uis(src) return - var/input = input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "") + var/input = stripped_input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "") if(!input || ..() || !(is_authenticated(usr) == 2)) nanomanager.update_uis(src) return @@ -251,7 +270,6 @@ var/shuttle_call/shuttle_calls[0] centcomm_message_cooldown = 0 setMenuState(usr,COMM_SCREEN_MAIN) - // OMG SYNDICATE ...LETTERHEAD if("MessageSyndicate") if((is_authenticated(usr) == 2) && (src.emagged)) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 5560b5438ad..2985f05aab8 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -26,7 +26,7 @@ /proc/Centcomm_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "\blue CENTCOMM:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, "holder")]) (CA) (BSA) (RPLY): [msg]" + msg = "\blue CENTCOMM: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, "holder")]) (CA) (BSA) (RPLY): [msg]" for(var/client/X in admins) if(R_EVENT & X.holder.rights) @@ -34,7 +34,7 @@ /proc/Syndicate_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "\blue SYNDICATE: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, "holder")]) (CA) (BSA) (REPLY): [msg]" + msg = "\blue SYNDICATE: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, "holder")]) (CA) (BSA) (REPLY): [msg]" for(var/client/X in admins) if(R_EVENT & X.holder.rights) @@ -42,7 +42,7 @@ /proc/HONK_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "\blue HONK:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, "holder")]) (CA) (BSA) (RPLY): [msg]" + msg = "\blue HONK: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, "holder")]) (CA) (BSA) (RPLY): [msg]" for(var/client/X in admins) if(R_EVENT & X.holder.rights) @@ -50,8 +50,15 @@ /proc/ERT_Announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "\blue ERT REQUEST:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, "holder")]) (CA) (BSA) (REPLY): [msg]" + msg = "\blue ERT REQUEST: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, "holder")]) (CA) (BSA) (REPLY): [msg]" for(var/client/X in admins) if(R_EVENT & X.holder.rights) - X << msg \ No newline at end of file + X << msg + +/proc/Nuke_request(text , mob/Sender) + var/nuke_code = get_nuke_code() + var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) + msg = "NUKE CODE REQUEST: [key_name(Sender)] (PP) (VV) (SM) ([admin_jump_link(Sender, "holder")]) (CA) (BSA) (RPLY): [msg]" + admins << msg + admins << "The nuke code is [nuke_code]." \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 598db4ce6eb..6ffa7a03a46 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -460,6 +460,7 @@ loaded_pill_bottle = null else if(href_list["close"]) usr << browse(null, "window=chem_master") + onclose(usr, "chem_master") usr.unset_machine() return diff --git a/nano/templates/comm_console.tmpl b/nano/templates/comm_console.tmpl index 7a3914d2910..b5fe56459ff 100644 --- a/nano/templates/comm_console.tmpl +++ b/nano/templates/comm_console.tmpl @@ -41,18 +41,21 @@ Used In File(s): /code/game/machinery/computers/communications.dm
{{if data.authenticated==2}}
- {{:helper.link('Make an Announcement','alert',{'operation':'announce'})}} + {{:helper.link('Make an Announcement','info',{'operation':'announce'})}}
{{if data.emagged}} {{:helper.link('Message [UNKNOWN]','mail-closed',{'operation':'MessageSyndicate'})}}
- {{:helper.link('Reset Relays','refresh',{'operation':'MessageCentcomm'})}} + {{:helper.link('Reset Relays','refresh',{'operation':'RestoreBackup'})}} {{else}} {{:helper.link('Message CentComm','mail-closed',{'operation':'MessageCentcomm'})}} {{/if}}
+
+ {{:helper.link('Request Nuclear Authentication Codes','alert',{'operation':'nukerequest'})}} +
{{/if}}
{{:helper.link('Change Alert Level','signal-diag',{'operation':'changeseclevel'})}}