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
<img width="1889" height="979" alt="image"
src="https://github.com/user-attachments/assets/27ce05a7-5b88-42ed-9309-416925a70622"
/>
<details>
<summary>Screenshots/Videos</summary>

</details>

## Changelog
🆑
fix: Malf AI rolls on shells
/🆑
This commit is contained in:
Odairu
2026-07-21 20:16:28 -07:00
committed by GitHub
parent a3e1c40012
commit f6a87f8544
2 changed files with 7 additions and 0 deletions
@@ -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 ..()
@@ -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))