(bounty) you no longer need ALL parts deployed to use a modsuit (limbless welcome!) (#86825)

## About The Pull Request

you no longer need all parts deployed to activate a modsuit
in order to use a module it needs its required part deployed, eg
magnetic attachment = boots needed
passive effects from a module dont work unless the relevant parts are
deployed

video todo

## Why It's Good For The Game

fikou wants this and uhh i guess its better that the legless and the
armless are capable of using modsuits
however wearing a modsuit onearmed or onelegged properly still needs a
seperate PR

## Changelog
🆑
balance: you no longer need all parts deployed to activate a modsuit,
you can use them limbless
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
This commit is contained in:
jimmyl
2024-10-25 00:09:06 +00:00
committed by GitHub
co-authored by Fikou Ghom
parent 692540a7b9
commit 3d100fb48c
6 changed files with 151 additions and 29 deletions
+9 -3
View File
@@ -219,6 +219,10 @@
/obj/item/mod/control/allow_attack_hand_drop(mob/user)
if(user != wearer)
return ..()
if(active)
balloon_alert(wearer, "deactivate the suit first!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
return
for(var/obj/item/part as anything in get_parts())
if(part.loc != src)
balloon_alert(user, "retract parts first!")
@@ -228,6 +232,10 @@
/obj/item/mod/control/mouse_drop_dragged(atom/over_object, mob/user)
if(user != wearer || !istype(over_object, /atom/movable/screen/inventory/hand))
return
if(active)
balloon_alert(wearer, "deactivate the suit first!")
playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
return
for(var/obj/item/part as anything in get_parts())
if(part.loc != src)
balloon_alert(wearer, "retract parts first!")
@@ -575,7 +583,7 @@
new_module.on_install()
if(wearer)
new_module.on_equip()
if(active)
if(active && new_module.has_required_parts(mod_parts, need_extended = TRUE))
new_module.on_suit_activation()
if(user)
balloon_alert(user, "[new_module] added")
@@ -679,8 +687,6 @@
part.forceMove(src)
return
retract(wearer, part)
if(active)
INVOKE_ASYNC(src, PROC_REF(toggle_activate), wearer, TRUE)
/obj/item/mod/control/proc/on_part_destruction(obj/item/part, damage_flag)
SIGNAL_HANDLER