diff --git a/code/controllers/emergency_shuttle_controller.dm b/code/controllers/emergency_shuttle_controller.dm
index 4194567ae10..7bdbb664724 100644
--- a/code/controllers/emergency_shuttle_controller.dm
+++ b/code/controllers/emergency_shuttle_controller.dm
@@ -70,8 +70,9 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle
wait_for_launch = 0
//calls the shuttle for an emergency evacuation
-/datum/emergency_shuttle_controller/proc/call_evac()
- if(!can_call()) return 0
+/datum/emergency_shuttle_controller/proc/call_evac(var/reason)
+ if(!can_call())
+ return 0
//set the launch timer
autopilot = 1
@@ -82,7 +83,10 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle
shuttle.move_time = SHUTTLE_TRANSIT_DURATION
evac = 1
- emergency_shuttle_called.Announce("An emergency evacuation shuttle has been called. It will arrive in approximately [round(estimate_arrival_time()/60)] minutes.")
+ var/emergencytext = "An emergency evacuation shuttle has been called. It will arrive in approximately [round(estimate_arrival_time()/60)] minutes."
+ if(reason)
+ emergencytext += "\n\nReason: [reason]"
+ emergency_shuttle_called.Announce(emergencytext)
for(var/area/A in world)
if(istype(A, /area/hallway))
A.readyalert()
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index 509082a7433..66c56dd196a 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -170,11 +170,14 @@ var/shuttle_call/shuttle_calls[0]
message_cooldown = 0
if("callshuttle")
- var/response = alert("Are you sure you wish to call the shuttle?", "Confirm", "Yes", "No")
- if(response == "Yes")
- call_shuttle_proc(usr)
- if(emergency_shuttle.online())
- post_status("shuttle")
+ var/input = stripped_input(usr, "Please enter the reason for calling the shuttle.", "Shuttle Call Reason.","") as text|null
+ if(!input || ..() || !(is_authenticated(usr) == 2))
+ nanomanager.update_uis(src)
+ return
+
+ call_shuttle_proc(usr, input)
+ if(emergency_shuttle.online())
+ post_status("shuttle")
setMenuState(usr,COMM_SCREEN_MAIN)
if("cancelshuttle")
@@ -239,7 +242,7 @@ var/shuttle_call/shuttle_calls[0]
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.","")
+ 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.","") as text|null
if(!input || ..() || !(is_authenticated(usr) == 2))
nanomanager.update_uis(src)
return
@@ -258,7 +261,7 @@ var/shuttle_call/shuttle_calls[0]
usr << "Arrays recycling. Please stand by."
nanomanager.update_uis(src)
return
- 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.", "")
+ 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.", "") as text|null
if(!input || ..() || !(is_authenticated(usr) == 2))
nanomanager.update_uis(src)
return
@@ -277,7 +280,7 @@ var/shuttle_call/shuttle_calls[0]
usr << "Arrays recycling. Please stand by."
nanomanager.update_uis(src)
return
- var/input = stripped_input(usr, "Please choose a message to transmit to \[ABNORMAL ROUTING CORDINATES\] 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 \[ABNORMAL ROUTING CORDINATES\] 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.", "") as text|null
if(!input || ..() || !(is_authenticated(usr) == 2))
nanomanager.update_uis(src)
return
@@ -410,39 +413,38 @@ var/shuttle_call/shuttle_calls[0]
for(var/obj/machinery/computer/prison_shuttle/PS in world)
PS.allowedtocall = !(PS.allowedtocall)
-/proc/call_shuttle_proc(var/mob/user)
+/proc/call_shuttle_proc(var/mob/user, var/reason)
if ((!( ticker ) || !emergency_shuttle.location()))
return
if(sent_strike_team == 1)
- user << "Centcom will not allow the shuttle to be called. Consider all contracts terminated."
+ user << "Central Command will not allow the shuttle to be called. Consider all contracts terminated."
return
if(emergency_shuttle.deny_shuttle)
- user << "The emergency shuttle may not be sent at this time. Please try again later."
+ user << "The emergency shuttle may not be sent at this time. Please try again later."
return
if(world.time < 6000) // Ten minute grace period to let the game get going without lolmetagaming. -- TLE
- user << "The emergency shuttle is refueling. Please wait another [round((6000-world.time)/60)] minutes before trying again."
+ user << "The emergency shuttle is refueling. Please wait another [round((6000-world.time)/60)] minutes before trying again."
return
if(emergency_shuttle.going_to_centcom())
- user << "The emergency shuttle may not be called while returning to CentCom."
+ user << "The emergency shuttle may not be called while returning to Central Command."
return
if(emergency_shuttle.online())
- user << "The emergency shuttle is already on its way."
+ user << "The emergency shuttle is already on its way."
return
if(ticker.mode.name == "blob")
- user << "Under directive 7-10, [station_name()] is quarantined until further notice."
+ user << "Under directive 7-10, [station_name()] is quarantined until further notice."
return
- emergency_shuttle.call_evac()
+ emergency_shuttle.call_evac(reason)
log_game("[key_name(user)] has called the shuttle.")
message_admins("[key_name_admin(user)] has called the shuttle.", 1)
-
return
/proc/init_shift_change(var/mob/user, var/force = 0)
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index feb735baef2..75eda3ea588 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -911,10 +911,13 @@ Traitors and the like can also be revived with the previous role mostly intact.
choice = input("The shuttle will not be able to leave if you call it. Call anyway?") in list("Confirm", "Cancel")
if(choice != "Confirm")
return
+
+
choice = input("Is this an emergency evacuation or a crew transfer?") in list("Emergency", "Crew Transfer")
if (choice == "Emergency")
- emergency_shuttle.call_evac()
+ var/reason = stripped_input(usr, "Optional: Please enter the reason for calling the shuttle.", "Shuttle Call Reason.","") as text|null
+ emergency_shuttle.call_evac(reason)
else
emergency_shuttle.call_transfer()
diff --git a/code/modules/computer3/computers/communications.dm b/code/modules/computer3/computers/communications.dm
index dd22bde09ec..e2595bda76a 100644
--- a/code/modules/computer3/computers/communications.dm
+++ b/code/modules/computer3/computers/communications.dm
@@ -129,7 +129,10 @@
if(!computer.radio.subspace)
return
if(authenticated)
- call_shuttle_proc(usr)
+ var/input = stripped_input(usr, "Please enter the reason for calling the shuttle.", "Shuttle Call Reason.","") as text|null
+ if(!input || ..(href, href_list) || !authenticated)
+ return
+ call_shuttle_proc(usr, input)
if(emergency_shuttle.online())
post_status("shuttle")
state = STATE_DEFAULT
@@ -236,7 +239,10 @@
if("ai-callshuttle2" in href_list)
if(!computer.radio.subspace)
return
- call_shuttle_proc(usr)
+ var/input = stripped_input(usr, "Please enter the reason for calling the shuttle.", "Shuttle Call Reason.","") as text|null
+ if(!input || ..(href, href_list))
+ return
+ call_shuttle_proc(usr, input)
aistate = STATE_DEFAULT
if("ai-messagelist" in href_list)
aicurrmsg = 0
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 7c78b5ce604..c89552719bb 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -329,20 +329,21 @@ var/list/ai_verbs_default = list(
set name = "Call Emergency Shuttle"
set category = "AI Commands"
- if(src.stat == 2)
- src << "You can't call the shuttle because you are dead!"
+ if(src.stat == DEAD)
+ src << "You can't call the shuttle because you are dead!"
return
if(check_unable(AI_CHECK_WIRELESS))
return
- var/confirm = alert("Are you sure you want to call the shuttle?", "Confirm Shuttle Call", "Yes", "No")
+ var/input = stripped_input(usr, "Please enter the reason for calling the shuttle.", "Shuttle Call Reason.","") as text|null
+ if(!input || stat)
+ return
if(check_unable(AI_CHECK_WIRELESS))
return
- if(confirm == "Yes")
- call_shuttle_proc(src)
+ call_shuttle_proc(src, input)
// hack to display shuttle timer
if(emergency_shuttle.online())