Allows you to deploy, undeploy, activate & deactivate other people's MODsuits via strip menu (#95250)

## About The Pull Request

Allows deployment, undeployment, activation and deactivation of other
people's MODsuits via stripping buttons. Deployment and undeployment is
the same as if you were right clicking the button, i.e. undeployment if
you have any parts active, deployment otherwise.

Each action takes the MOD's `strip_delay` as its time to complete.

DNA lock modules' consequences do not trigger on anybody if the `user`
is not the `wearer`. They still don't deploy unless the acting agent is
the right dna.

## Why It's Good For The Game

Currently, there are two ways to get a MODsuit to activate or deploy on
another person without that person's involvement. An very rare PDA app
and sacrificing an AI. That's unfortunate, given as MODsuits are the
most used space protection. If you're forced to take off someone's
MODsuit in order to provide some sort of medical care, you are unable to
then put it back on them to prevent additional space-wrought damage. You
can't ~waste~ use a MODsuit to protect a incapacitated prisoner, or
force a springlocked MODsuit on a potential victim. It feels like a
missed avenue of interaction.

The PDA app is still powerful, for better reasons, as is the AI. Not to
imply anyone was using AIs for this.

## Changelog
🆑

add: You can now deploy, undeploy, activate & deactivate other people's
MODsuit via the strip menu

/🆑
This commit is contained in:
Leland Kemble
2026-03-06 09:18:38 +13:00
committed by GitHub
parent 58fbd80836
commit 9a16063ba1
5 changed files with 99 additions and 8 deletions
+9 -5
View File
@@ -50,11 +50,7 @@
balloon_alert(user, "currently [active ? "unsealing" : "sealing"]!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
var/deploy = TRUE
for(var/obj/item/part as anything in get_parts())
if(part.loc != src)
deploy = FALSE
break
var/deploy = check_retracted()
wearer.visible_message(span_notice("[wearer]'s [src] [deploy ? "deploys" : "retracts"] its parts with a mechanical hiss."),
span_notice("[src] [deploy ? "deploys" : "retracts"] its parts with a mechanical hiss."),
span_hear("You hear a mechanical hiss."))
@@ -325,4 +321,12 @@
for(var/obj/item/part as anything in get_parts())
deploy(null, part, instant = TRUE)
/// Checks if the suit is fully retracted, with no parts outside
/obj/item/mod/control/proc/check_retracted()
for(var/obj/item/part as anything in get_parts())
if(part.loc != src)
return FALSE
return TRUE
#undef MOD_ACTIVATION_STEP_FLAGS