Refactors obscured (#92779)

## About The Pull Request

Fixes #85028

Obscured flags and covered flags are tracked on carbons, updated as
items are equipped and unequipped. It's that shrimple.

Closes #92760

Just removes the species exception checks for not making sense

Also refactors handcuffs / legcuffs removal. In all of these situations
they were hardcoded when they could easily just use an inventory proc to
work.

## Why It's Good For The Game

Stops a million excessive calls to `check_obscured_slots`

Makes obscured behavior more consistent

Makes obscured behavior easier to use

Cleans up human rendering (There was some cursed stuff before with
render item -> updated obscured -> update body -> cause side effects)

## Changelog

🆑 Melbert
del: Golems which somehow manage to grow wings and somehow manage to
equip something that covers their jumpsuit can no longer fly.
(Seriously, this will not affect anyone)
refactor: Refactored clothing obscurity entirely. Items should be a
loooot more consistent and what covers what, and should update a lot
snappier. As always, report any oddities, like mysteriously disappearing
articles of clothing, hair, or species parts
refactored: Refactored handcuffs and legcuffs a bit, report any odd
situations with cuffs like getting stuck restrained
/🆑
This commit is contained in:
MrMelbert
2025-09-07 09:24:34 +02:00
committed by GitHub
parent c6e0b5da33
commit 135a09182b
61 changed files with 279 additions and 492 deletions
+1 -1
View File
@@ -271,7 +271,7 @@
part.alternate_worn_layer = part_datum.unsealed_layer
update_speed()
wearer.update_clothing(part.slot_flags | slot_flags)
wearer.update_obscured_slots(part.visor_flags_inv)
wearer.refresh_obscured()
if((part.clothing_flags & (MASKINTERNALS|HEADINTERNALS)) && wearer.invalid_internals())
wearer.cutoff_internals()
SEND_SIGNAL(src, COMSIG_MOD_PART_SEALED, part_datum)
+1
View File
@@ -191,6 +191,7 @@
set_wearer(user)
else if(wearer)
unset_wearer()
return ..()
/obj/item/mod/control/dropped(mob/user)
. = ..()
+1
View File
@@ -167,6 +167,7 @@
part.worn_icon = used_skin[MOD_WORN_ICON_OVERRIDE] || 'icons/mob/clothing/modsuit/mod_clothing.dmi'
part.icon_state = "[skin]-[part.base_icon_state][mod.get_part_datum(part).sealed ? "-sealed" : ""]"
mod.wearer?.update_clothing(part.slot_flags)
mod.wearer?.refresh_obscured()
/datum/armor/mod_theme
melee = 10