From 25428ffb49aa2f4bd63ceedd7f60dec51971a39b Mon Sep 17 00:00:00 2001 From: Byemoh Date: Sat, 10 Aug 2024 01:04:31 -0500 Subject: [PATCH] Adjusts the emergency shuttle call times and makes the shuttle autocall if the round goes past 2 hours (#22220) * shuttle changes * fix error * Update shuttle.dm * you can technically cheese this plus fixing --- code/__DEFINES/shuttles.dm | 4 +-- code/controllers/subsystem/shuttle.dm | 48 ++++++++++++++++----------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/code/__DEFINES/shuttles.dm b/code/__DEFINES/shuttles.dm index 5904f4276f60..81362d674751 100644 --- a/code/__DEFINES/shuttles.dm +++ b/code/__DEFINES/shuttles.dm @@ -65,8 +65,8 @@ // Alert level related -#define ALERT_COEFF_AUTOEVAC_NORMAL 2.5 -#define ALERT_COEFF_GREEN 2 +#define ALERT_COEFF_AUTOEVAC_NORMAL 1.5 +#define ALERT_COEFF_GREEN 1.2 #define ALERT_COEFF_BLUE 1 #define ALERT_COEFF_RED 0.5 #define ALERT_COEFF_AUTOEVAC_CRITICAL 0.4 diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 0152b6e9494d..ebcd925711a8 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -217,28 +217,36 @@ SUBSYSTEM_DEF(shuttle) if(emergency_no_escape || admin_emergency_no_recall || emergency_no_recall || !emergency || !SSticker.HasRoundStarted()) return - var/threshold = CONFIG_GET(number/emergency_shuttle_autocall_threshold) - if(!threshold) + if(!length(GLOB.joined_player_list)) //if there's nobody actually in the game... return - var/alive = 0 - for(var/I in GLOB.player_list) - var/mob/M = I - if(M.stat != DEAD) - ++alive + var/threshold = CONFIG_GET(number/emergency_shuttle_autocall_threshold) + if(threshold) + var/alive = 0 + for(var/I in GLOB.player_list) + var/mob/M = I + if(M.stat != DEAD) + ++alive + + var/total = length(GLOB.joined_player_list) + if(!total) return - var/total = GLOB.joined_player_list.len - if(total <= 0) - return //no players no autoevac - - if(alive / total <= threshold) - var/msg = "Automatically dispatching shuttle due to crew death." - message_admins(msg) - log_game("[msg] Alive: [alive], Roundstart: [total], Threshold: [threshold]") - emergency_no_recall = TRUE - priority_announce("Catastrophic casualties detected: crisis shuttle protocols activated - jamming recall signals across all frequencies.") - if(emergency.timeLeft(1) > emergency_no_recall * 0.4) - emergency.request(null, set_coefficient = 0.4) + if(alive / total <= threshold) + emergency_no_recall = TRUE + if(emergency.timeLeft(1) > ALERT_COEFF_AUTOEVAC_CRITICAL) + var/msg = "Automatically dispatching shuttle due to crew death." + message_admins(msg) + log_game("[msg] Alive: [alive], Roundstart: [total], Threshold: [threshold]") + priority_announce("Catastrophic casualties detected: crisis shuttle protocols activated - jamming recall signals across all frequencies.") + emergency.request(null, set_coefficient = ALERT_COEFF_AUTOEVAC_CRITICAL) + return + if(world.time - SSticker.round_start_time >= 2 HOURS) //auto call the shuttle after 2 hours + emergency_no_recall = TRUE //no recalling after 2 hours + if(emergency.timeLeft(1) > SSsecurity_level.current_security_level.shuttle_call_time_mod) + var/msg = "Automatically dispatching shuttle due to lack of shift end response." + message_admins(msg) + priority_announce("Dispatching shuttle due to lack of shift end response.") + emergency.request(null) /datum/controller/subsystem/shuttle/proc/block_recall(lockout_timer) if(isnull(lockout_timer)) @@ -434,7 +442,7 @@ SUBSYSTEM_DEF(shuttle) if(callShuttle) if(EMERGENCY_IDLE_OR_RECALLED) - emergency.request(null, set_coefficient = 2.5) + emergency.request(null, set_coefficient = ALERT_COEFF_AUTOEVAC_NORMAL) log_game("There is no means of calling the shuttle anymore. Shuttle automatically called.") message_admins("All the communications consoles were destroyed and all AIs are inactive. Shuttle called.")