diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
index 1f7e35b4061..b8ac3adee01 100644
--- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
+++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
@@ -196,8 +196,8 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module))
return
if (active || owner_AI.stat == DEAD)
return //prevent the AI from activating an already active doomsday or while they are dead
- if (owner_AI.shunted)
- return //prevent AI from activating doomsday while shunted, fucking abusers
+ if (!isturf(owner_AI.loc))
+ return //prevent AI from activating doomsday while shunted or carded, fucking abusers
active = TRUE
set_up_us_the_bomb(owner)
@@ -207,12 +207,12 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module))
var/pass = prob(10) ? "******" : "hunter2"
to_chat(owner, "run -o -a 'selfdestruct'")
sleep(5)
- if(QDELETED(owner) || owner_AI.shunted)
+ if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
to_chat(owner, "Running executable 'selfdestruct'...")
sleep(rand(10, 30))
- if(QDELETED(owner) || owner_AI.shunted)
+ if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
owner.playsound_local(owner, 'sound/misc/bloblarm.ogg', 50, 0, use_reverb = FALSE)
@@ -220,63 +220,63 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module))
to_chat(owner, span_boldannounce("This is a class-3 security violation. This incident will be reported to Central Command."))
for(var/i in 1 to 3)
sleep(20)
- if(QDELETED(owner) || owner_AI.shunted)
+ if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
to_chat(owner, span_boldannounce("Sending security report to Central Command.....[rand(0, 9) + (rand(20, 30) * i)]%"))
sleep(3)
- if(QDELETED(owner) || owner_AI.shunted)
+ if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
to_chat(owner, "auth 'akjv9c88asdf12nb' [pass]")
owner.playsound_local(owner, 'sound/items/timer.ogg', 50, 0, use_reverb = FALSE)
sleep(30)
- if(QDELETED(owner) || owner_AI.shunted)
+ if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
to_chat(owner, span_boldnotice("Credentials accepted. Welcome, akjv9c88asdf12nb."))
owner.playsound_local(owner, 'sound/misc/server-ready.ogg', 50, 0, use_reverb = FALSE)
sleep(5)
- if(QDELETED(owner) || owner_AI.shunted)
+ if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
to_chat(owner, span_boldnotice("Arm self-destruct device? (Y/N)"))
owner.playsound_local(owner, 'sound/misc/compiler-stage1.ogg', 50, 0, use_reverb = FALSE)
sleep(20)
- if(QDELETED(owner) || owner_AI.shunted)
+ if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
to_chat(owner, "Y")
sleep(15)
- if(QDELETED(owner) || owner_AI.shunted)
+ if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
to_chat(owner, span_boldnotice("Confirm arming of self-destruct device? (Y/N)"))
owner.playsound_local(owner, 'sound/misc/compiler-stage2.ogg', 50, 0, use_reverb = FALSE)
sleep(10)
- if(QDELETED(owner) || owner_AI.shunted)
+ if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
to_chat(owner, "Y")
sleep(rand(15, 25))
- if(QDELETED(owner) || owner_AI.shunted)
+ if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
to_chat(owner, span_boldnotice("Please repeat password to confirm."))
owner.playsound_local(owner, 'sound/misc/compiler-stage2.ogg', 50, 0, use_reverb = FALSE)
sleep(14)
- if(QDELETED(owner) || owner_AI.shunted)
+ if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
to_chat(owner, "[pass]")
sleep(40)
- if(QDELETED(owner) || owner_AI.shunted)
+ if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
to_chat(owner, span_boldnotice("Credentials accepted. Transmitting arming signal..."))
owner.playsound_local(owner, 'sound/misc/server-ready.ogg', 50, 0, use_reverb = FALSE)
sleep(30)
- if(QDELETED(owner) || owner_AI.shunted)
+ if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
if (owner_AI.stat != DEAD)