diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index f35a6eaa156..c5947259d48 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1416,3 +1416,24 @@ GLOBAL_PROTECT(valid_HTTPSGet) mob_occupant = brain.brainmob return mob_occupant + +/proc/msglog_admins(text) + message_admins(text) + log_admin(text) + +/proc/trigger_centcom_recall() + if(SSshuttle.emergency.mode != SHUTTLE_CALL) + return + + var/time = rand(600, 1200) + var/message = pick(GLOB.annoyed_admiral_messages) + + message = input("Enter message from the on-call admiral to be put in the recall report.", "Annoyed Admiral Message", message) as text|null + + if(!message) + return + + message_admins("[key_name_admin(usr)] triggered a Centcom recall in [time/10] seconds, with the annoyed admiral message of: [message]") + log_game("[key_name(usr)] triggered a Centcom recall in [time/10] seconds, with the annoyed admiral message of: [message]") + + addtimer(CALLBACK(SSshuttle, /datum/controller/subsystem/shuttle/.proc/centcom_recall, SSshuttle.emergency.timer, message), time) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 7a4ce0c57a0..7f1198be394 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -161,3 +161,5 @@ GLOBAL_LIST_INIT(numbers_as_words, list("One", "Two", "Three", "Four", return L GLOBAL_LIST_INIT(station_numerals, greek_letters + phonetic_alphabet + numbers_as_words + generate_number_strings()) + +GLOBAL_LIST_INIT(annoyed_admiral_messages, list("Do you know how expensive these stations are?","Stop wasting my time.","I was sleeping, thanks a lot.","Stand and fight you cowards!","You knew the risks coming in.","Stop being paranoid.","Whatever's broken just build a new one.","No.", "null","Error: No comment given.", "It's a good day to die!")) diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 5057bf63ecb..e1c85849c5c 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -215,7 +215,32 @@ SUBSYSTEM_DEF(shuttle) emergency.request(null, signal_origin, html_decode(emergency_reason), 0) log_game("[key_name(user)] has called the shuttle.") - message_admins("[key_name_admin(user)] has called the shuttle.") + message_admins("[key_name_admin(user)] has called the shuttle. (TRIGGER CENTCOM RECALL)") + +/datum/controller/subsystem/shuttle/proc/centcom_recall(old_timer, annoyed_admiral_message) + if(emergency.mode != SHUTTLE_CALL || emergency.timer != old_timer) + return + + emergency.cancel(/area/centcom) + msglog_admins("Shuttle has been recalled from Centcom.") + + addtimer(CALLBACK(src, .proc/centcom_recall2, annoyed_admiral_message), 50) + +/datum/controller/subsystem/shuttle/proc/centcom_recall2(annoyed_admiral_message) + if(!annoyed_admiral_message) + annoyed_admiral_message = pick(GLOB.annoyed_admiral_messages) + var/intercepttext = "NanoTrasen Update: Request For Shuttle.
\ + To whom it may concern:

\ + We have taken note of the situation upon [station_name()] and have come to the \ + conclusion that it does not warrant the abandonment of the station.
\ + If you do not agree with our opinion we suggest that you open a direct \ + line with us and explain the nature of your crisis.

\ + This message has been automatically generated based upon readings from long \ + range diagnostic tools. To assure the quality of your request every finalized report \ + is reviewed by an on-call rear admiral.
\ + Rear Admiral's Notes: \ + [annoyed_admiral_message]" + print_command_report(intercepttext, announce=TRUE) // Called when an emergency shuttle mobile docking port is // destroyed, which will only happen with admin intervention @@ -514,4 +539,4 @@ SUBSYSTEM_DEF(shuttle) for(var/obj/docking_port/mobile/M in mobile) if(M.is_in_shuttle_bounds(A)) return TRUE - \ No newline at end of file + diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 98c26857a25..c8cadae50c2 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -281,6 +281,11 @@ minor_announce("The emergency shuttle will reach its destination in [round(SSshuttle.emergency.timeLeft(600))] minutes.") message_admins("[key_name_admin(usr)] edited the Emergency Shuttle's timeleft to [timer] seconds.") href_list["secrets"] = "check_antagonist" + else if(href_list["trigger_centcom_recall"]) + if(!check_rights(R_ADMIN)) + return + + trigger_centcom_recall() else if(href_list["toggle_continuous"]) if(!check_rights(R_ADMIN))