From 2a8e81daed82a9fa7c3ecc85b7ce5bd802c3bc6f Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Thu, 18 May 2017 18:09:56 +0100 Subject: [PATCH] Annoyed admirals recalling shuttles :cl: coiax add: When a shuttle is called, sometimes an on-call admiral, using availible information to them, will recall the shuttle from Centcom. /:cl: This is in essence, a simple IC way for admins to recall the shuttle if they feel that the shuttle should not come. It's up to them entirely, the system does not trigger otherwise. They also get to set a cranky message that is automatically fed back to the crew. It would be nice if admins used their own judgement if the crew is evacuating for no real reason, and might send an ERT at the same time to keep the round going? Who knows, I'm just providing the tools. --- code/__HELPERS/unsorted.dm | 21 +++++++++++++++++++ code/_globalvars/lists/flavor_misc.dm | 2 ++ code/controllers/subsystem/shuttle.dm | 29 +++++++++++++++++++++++++-- code/modules/admin/topic.dm | 5 +++++ 4 files changed, 55 insertions(+), 2 deletions(-) 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))