diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 13e14ab5c3a..d3edbfe593f 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -608,6 +608,7 @@ var/list/teleport_runes = list() new /mob/living/simple_animal/slaughter/cult(T, pick(NORTHEAST, SOUTHEAST, NORTHWEST, SOUTHWEST)) cult_mode.demons_summoned = 1 shuttle_master.emergency.request(null, 0.5,null) + shuttle_master.emergency.canRecall = FALSE cult_mode.third_phase() qdel(src) diff --git a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm index bc58db4b064..5c05a028df0 100644 --- a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm @@ -179,6 +179,7 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N sleep(50) if(!ticker.mode.shadowling_ascended) shuttle_master.emergency.request(null, 0.3) + shuttle_master.emergency.canRecall = FALSE ticker.mode.shadowling_ascended = 1 A.mind.RemoveSpell(src) qdel(H) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index bfc13277e5f..e46182b735e 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -500,10 +500,13 @@ if(ticker.mode.name == "meteor") return - shuttle_master.cancelEvac(user) - log_game("[key_name(user)] has recalled the shuttle.") - message_admins("[key_name_admin(user)] has recalled the shuttle - [formatJumpTo(user)].", 1) - return + if(shuttle_master.cancelEvac(user)) + log_game("[key_name(user)] has recalled the shuttle.") + message_admins("[key_name_admin(user)] has recalled the shuttle - [ADMIN_FLW(user)].", 1) + else + to_chat(user, "Central Command has refused the recall request!") + log_game("[key_name(user)] has tried and failed to recall the shuttle.") + message_admins("[key_name_admin(user)] has tried and failed to recall the shuttle - [ADMIN_FLW(user)].", 1) /proc/post_status(command, data1, data2, mob/user = null) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 27b6c38a469..29c6111bc02 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -576,7 +576,7 @@ Traitors and the like can also be revived with the previous role mostly intact. command_announcement.Announce(input, customname, MsgSound[beepsound], , , type) print_command_report(input, "[command_name()] Update") - else if("No") + if("No") //same thing as the blob stuff - it's not public, so it's classified, dammit command_announcer.autosay("A classified message has been printed out at all communication consoles."); print_command_report(input, "Classified [command_name()] Update") @@ -763,6 +763,11 @@ Traitors and the like can also be revived with the previous role mostly intact. var/confirm = alert(src, "You sure?", "Confirm", "Yes", "No") if(confirm != "Yes") return + if(alert("Set Shuttle Recallable (Select Yes unless you know what this does)", "Recallable?", "Yes", "No") == "Yes") + shuttle_master.emergency.canRecall = TRUE + else + shuttle_master.emergency.canRecall = FALSE + shuttle_master.emergency.request() feedback_add_details("admin_verb","CSHUT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -781,7 +786,18 @@ Traitors and the like can also be revived with the previous role mostly intact. if(shuttle_master.emergency.mode >= SHUTTLE_DOCKED) return - shuttle_master.emergency.cancel() + if(shuttle_master.emergency.canRecall == FALSE) + if(alert("Shuttle is currently set to be nonrecallable. Recalling may break things. Respect Recall Status?", "Override Recall Status?", "Yes", "No") == "Yes") + return + else + var/keepStatus = alert("Maintain recall status on future shuttle calls?", "Maintain Status?", "Yes", "No") == "Yes" //Keeps or drops recallability + shuttle_master.emergency.canRecall = TRUE // must be true for cancel proc to work + shuttle_master.emergency.cancel() + if(keepStatus) + shuttle_master.emergency.canRecall = FALSE // restores original status + else + shuttle_master.emergency.cancel() + feedback_add_details("admin_verb","CCSHUT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] admin-recalled the emergency shuttle.") message_admins("[key_name_admin(usr)] admin-recalled the emergency shuttle.") diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index 05dc0ba4e73..8e09d9f6ed3 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -38,6 +38,7 @@ sleep(70) shuttle_master.emergency.request(null, 0.3) // Cannot recall + shuttle_master.emergency.canRecall = FALSE /obj/singularity/narsie/large/attack_ghost(mob/dead/observer/user as mob) makeNewConstruct(/mob/living/simple_animal/hostile/construct/harvester, user, null, 1)