diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm
index 40da8e2ca0..7bd8e4b8e8 100644
--- a/code/game/machinery/computer/ai_core.dm
+++ b/code/game/machinery/computer/ai_core.dm
@@ -242,3 +242,24 @@
return
else
return ..()
+
+/client/proc/empty_ai_core_toggle_latejoin()
+ set name = "Toggle AI Core Latejoin"
+ set category = "Admin"
+
+ var/list/cores = list()
+ for(var/obj/structure/AIcore/deactivated/D in world)
+ cores["[D] ([D.loc.loc])"] = D
+
+ var/id = input("Which core?", "Toggle AI Core Latejoin", null) as null|anything in cores
+ if(!id) return
+
+ var/obj/structure/AIcore/deactivated/D = cores[id]
+ if(!D) return
+
+ if(D in empty_playable_ai_cores)
+ empty_playable_ai_cores -= D
+ src << "\The [id] is now not available for latejoining AIs."
+ else
+ empty_playable_ai_cores += D
+ src << "\The [id] is now available for latejoining AIs."
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index d20105a67e..823fb69f80 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -78,7 +78,8 @@ var/list/admin_verbs_admin = list(
/client/proc/toggle_antagHUD_use,
/client/proc/toggle_antagHUD_restrictions,
/client/proc/allow_character_respawn, /* Allows a ghost to respawn */
- /client/proc/event_manager_panel
+ /client/proc/event_manager_panel,
+ /client/proc/empty_ai_core_toggle_latejoin
)
var/list/admin_verbs_ban = list(
/client/proc/unban_panel,
diff --git a/code/modules/mob/living/silicon/ai/latejoin.dm b/code/modules/mob/living/silicon/ai/latejoin.dm
index 11a617360a..8aca00a711 100644
--- a/code/modules/mob/living/silicon/ai/latejoin.dm
+++ b/code/modules/mob/living/silicon/ai/latejoin.dm
@@ -15,6 +15,10 @@ var/global/list/empty_playable_ai_cores = list()
set category = "OOC"
set desc = "Wipe your core. This is functionally equivalent to cryo or robotic storage, freeing up your job slot."
+ if(ticker && ticker.mode && ticker.mode.name == "AI malfunction")
+ usr << "You cannot use this verb in malfunction. If you need to leave, please adminhelp."
+ return
+
// Guard against misclicks, this isn't the sort of thing we want happening accidentally
if(alert("WARNING: This will immediately wipe your core and ghost you, removing your character from the round permanently (similar to cryo and robotic storage). Are you entirely sure you want to do this?",
"Wipe Core", "No", "No", "Yes") != "Yes")