From f6a87f85443b6c0d368f10e5eaac97efc8ef06a4 Mon Sep 17 00:00:00 2001 From: Odairu <39929315+Odairu@users.noreply.github.com> Date: Tue, 21 Jul 2026 23:16:28 -0400 Subject: [PATCH] Malf AI can now pick AIs who are in their shells (#5982) ## About The Pull Request When malf rolls, it checks to see if an AI is in a shell, and adds them to the candidate list, if they get chosen, it kicks them out of their shell and then gives them malf ## Why It's Good For The Game Malf couldn't roll if you were in a shell, so if you're ROLEPLAY maxxing like a chad, you don't get to antag ## Proof Of Testing image
Screenshots/Videos
## Changelog :cl: fix: Malf AI rolls on shells /:cl: --- code/modules/antagonists/malf_ai/malf_ai.dm | 5 +++++ .../code/modules/storyteller/event_defines/crewset/malf.dm | 2 ++ 2 files changed, 7 insertions(+) diff --git a/code/modules/antagonists/malf_ai/malf_ai.dm b/code/modules/antagonists/malf_ai/malf_ai.dm index a2222bfb991..a3776266dcc 100644 --- a/code/modules/antagonists/malf_ai/malf_ai.dm +++ b/code/modules/antagonists/malf_ai/malf_ai.dm @@ -26,6 +26,11 @@ src.give_objectives = give_objectives /datum/antagonist/malf_ai/on_gain() + //BUBBER EDIT START - Shells get malf + if(owner.current && istype(owner.current, /mob/living/silicon/robot/shell)) + var/mob/living/silicon/robot/shell/chosen_one = owner.current + chosen_one.undeploy() + //BUBBER EDIT END if(owner.current && !isAI(owner.current)) stack_trace("Attempted to give malf AI antag datum to \[[owner]\], who did not meet the requirements.") return ..() diff --git a/modular_zubbers/code/modules/storyteller/event_defines/crewset/malf.dm b/modular_zubbers/code/modules/storyteller/event_defines/crewset/malf.dm index 79b3e9890cc..603c5128500 100644 --- a/modular_zubbers/code/modules/storyteller/event_defines/crewset/malf.dm +++ b/modular_zubbers/code/modules/storyteller/event_defines/crewset/malf.dm @@ -22,6 +22,8 @@ /datum/round_event_control/antagonist/solo/malf/get_candidates() var/list/candidates = list() for(var/mob/living/silicon/ai/candidate as anything in GLOB.ai_list) + if(candidate.deployed_shell) + candidate = candidate.deployed_shell if(QDELETED(candidate) || !candidate.key || !candidate.client || !candidate.mind) continue if(!(candidate.client.prefs) || !(antag_flag in candidate.client.prefs.be_special))