diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index 83fbd2c883a..c8ca0d4730d 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -37,16 +37,19 @@ var/global/datum/shuttle_controller/emergency_shuttle/emergency_shuttle // call the shuttle // if not called before, set the endtime to T+600 seconds // otherwise if outgoing, switch to incoming -/datum/shuttle_controller/proc/incall(coeff = 1, var/signal_origin) +/datum/shuttle_controller/proc/incall(coeff = 1, var/signal_origin, var/emergency_reason, var/red_alert) if(endtime) if(direction == -1) setdirection(1) else - if(signal_origin && prob(60)) //40% chance the signal tracing will fail + if(recall_count > 2 && signal_origin && prob(70)) //30% chance the signal tracing will fail last_call_loc = signal_origin else last_call_loc = null + + priority_announce("The emergency shuttle has been called. [red_alert ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.[emergency_reason][emergency_shuttle.last_call_loc ? "\n\nCall signal traced. Results can be viewed on any communcations console." : "" ]", null, 'sound/AI/shuttlecalled.ogg', "Priority") + settimeleft(SHUTTLEARRIVETIME*coeff) online = 1 if(always_fake_recall) @@ -67,15 +70,15 @@ var/global/datum/shuttle_controller/emergency_shuttle/emergency_shuttle recall_count ++ - if(recall_count > 2 && signal_origin && prob(60)) //40% chance the signal tracing will fail + if(recall_count > 2 && signal_origin && prob(70)) //30% chance the signal tracing will fail last_call_loc = signal_origin else last_call_loc = null if(recall_count == 2) - priority_announce("The emergency shuttle has been recalled.\n\nExcessive number of emergency shuttle calls detected. We will attempt to trace all future calls and recalls to their source. Tracing results can be viewed on any communications console.", null, 'sound/AI/shuttlerecalled.ogg') + priority_announce("The emergency shuttle has been recalled.\n\nExcessive number of emergency shuttle calls detected. We will attempt to trace all future calls and recalls to their source. Tracing results may be viewed on any communications console.", null, 'sound/AI/shuttlerecalled.ogg') else - priority_announce("The emergency shuttle has been recalled.", null, 'sound/AI/shuttlerecalled.ogg', "Priority") + priority_announce("The emergency shuttle has been recalled.[last_call_loc ? " Recall signal traced. Results can be viewed on any communcations console." : "" ]", null, 'sound/AI/shuttlerecalled.ogg', "Priority") setdirection(-1) online = 1 @@ -134,7 +137,6 @@ var/global/datum/shuttle_controller/emergency_shuttle/emergency_shuttle incall(SHUTTLEAUTOCALLTIMER) //X minutes! If they want to recall, they have X-(X-5) minutes to do so log_game("All the communications consoles were destroyed and all AIs are inactive. Shuttle called.") message_admins("All the communications consoles were destroyed and all AIs are inactive. Shuttle called.", 1) - priority_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.", null, 'sound/AI/shuttlecalled.ogg', "Priority") /datum/shuttle_controller/proc/move_shuttles() var/datum/shuttle_manager/s diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 16ec25f1710..c0f658cb15c 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -332,7 +332,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 var/dat = "" if (emergency_shuttle.online && emergency_shuttle.location==0) var/timeleft = emergency_shuttle.timeleft() - dat += "Emergency shuttle\n
\nETA: [timeleft / 60 % 60]:[add_zero(num2text(timeleft % 60), 2)]
" + dat += "Emergency shuttle\n
\nETA: [timeleft / 60 % 60]:[add_zero(num2text(timeleft % 60), 2)]" var/datum/browser/popup = new(user, "communications", "Communications Console", 400, 500) @@ -354,10 +354,11 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 if (src.authenticated) if(emergency_shuttle.recall_count > 1) if(emergency_shuttle.last_call_loc) - dat += "
Last emergency shuttle call/recall traced to: [format_text(emergency_shuttle.last_call_loc.name)].
" + dat += "
Most recent shuttle call/recall traced to: [format_text(emergency_shuttle.last_call_loc.name)]" else - dat += "
Last emergency shuttle call/recall trace failed.
" - dat += "Logged in as: [auth_id]" + dat += "
Unable to trace most recent shuttle call/recall signal." + dat += "
Logged in as: [auth_id]" + dat += "
" dat += "
\[ Log Out \]
" dat += "
General Functions" dat += "
\[ Message List \]" @@ -593,11 +594,9 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 var/area/signal_origin = get_area(user) var/emergency_reason = "\nNature of emergency:\n\n[call_reason]" if (seclevel2num(get_security_level()) == SEC_LEVEL_RED) // There is a serious threat we gotta move no time to give them five minutes. - emergency_shuttle.incall(0.6, signal_origin) - priority_announce("The emergency shuttle has been called. Red Alert state confirmed: Dispatching priority shuttle. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.[emergency_reason]", null, 'sound/AI/shuttlecalled.ogg', "Priority") + emergency_shuttle.incall(0.6, signal_origin, emergency_reason, 1) else - emergency_shuttle.incall(1, signal_origin) - priority_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.[emergency_reason]", null, 'sound/AI/shuttlecalled.ogg', "Priority") + emergency_shuttle.incall(1, signal_origin, emergency_reason, 0) log_game("[key_name(user)] has called the shuttle.") message_admins("[key_name_admin(user)] has called the shuttle.", 1) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index c75382d3878..7d567ec07cf 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -180,7 +180,6 @@ if ((!( ticker ) || emergency_shuttle.location)) return emergency_shuttle.incall() - priority_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.", null,'sound/AI/shuttlecalled.ogg', "Priority") log_admin("[key_name(usr)] called the Emergency Shuttle") message_admins("[key_name_admin(usr)] called the Emergency Shuttle to the station", 1) @@ -190,7 +189,6 @@ switch(emergency_shuttle.direction) if(-1) emergency_shuttle.incall() - priority_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.", null, 'sound/AI/shuttlerecalled.ogg', "Priority") log_admin("[key_name(usr)] called the Emergency Shuttle") message_admins("[key_name_admin(usr)] called the Emergency Shuttle to the station", 1) if(1) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index d855eac0b5d..5690818169b 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -690,7 +690,6 @@ Traitors and the like can also be revived with the previous role mostly intact. return emergency_shuttle.incall() - priority_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.", null, 'sound/AI/shuttlecalled.ogg', "Priority") feedback_add_details("admin_verb","CSHUT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] admin-called the emergency shuttle.") message_admins("[key_name_admin(usr)] admin-called the emergency shuttle.", 1) diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index e96252b3d05..11a28d8ab36 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -32,6 +32,7 @@ if(A) notify_ghosts("Nar-Sie has risen in \the [A.name]. Reach out to the Geometer to be given a new shell for your soul.") + sleep(50) if(emergency_shuttle) emergency_shuttle.incall(0.3) // Cannot recall