Files
Bubberstation/code/modules/clothing/suits/_suits.dm
MrMelbert bfe3f19d53 Allows uniforms to have multiple accessories attached, removes armor from accessories (#76629)
## About The Pull Request


![image](https://github.com/tgstation/tgstation/assets/51863163/b7808325-bd8d-4949-9611-985be5475064)

- Multiple accessories can now be pinned to one jumpsuit. 
- All accessories are shown on examine, but only the first is shown
on-mob.

- Under-clothing code cleanup.

- Removed armor from all accessories. 

- Halved the mood given from Hope to accommodate the fact that it can
now stack with others.

- Generalizes dogtags. Now dogtags will show their string on
examine_more if examining the mob wearing it, so you can see the
contents of someone's Allergy Dogtag without removing their clothes.

## Why It's Good For The Game

Accessories are a surprisingly contentious slot for something supposed
to be entirely cosmetic, so I've decided to address that.

This turns accessories into almost entirely cosmetic, with some minor
effects like mood boosts or pen storage.

People will no longer have to choose between showing off a pride pen or
getting a medal from the HoP, or between wearing sick lavaland drip
items, while also letting us stretch our legs a bit without worrying
about clothing balance.

## Changelog

🆑 Melbert
add: You can now wear multiple accessories on your uniform at once (up
to five by default)
balance: Removed armor from accessories, and nerfs the effects of some
accessories.
/🆑
2023-07-12 19:34:47 +01:00

58 lines
1.9 KiB
Plaintext

/obj/item/clothing/suit
name = "suit"
icon = 'icons/obj/clothing/suits/default.dmi'
lefthand_file = 'icons/mob/inhands/clothing/suits_lefthand.dmi'
righthand_file = 'icons/mob/inhands/clothing/suits_righthand.dmi'
var/fire_resist = T0C+100
allowed = list(
/obj/item/tank/internals/emergency_oxygen,
/obj/item/tank/internals/plasmaman,
/obj/item/tank/jetpack/oxygen/captain,
)
armor_type = /datum/armor/none
drop_sound = 'sound/items/handling/cloth_drop.ogg'
pickup_sound = 'sound/items/handling/cloth_pickup.ogg'
slot_flags = ITEM_SLOT_OCLOTHING
var/blood_overlay_type = "suit"
limb_integrity = 0 // disabled for most exo-suits
/obj/item/clothing/suit/Initialize(mapload)
. = ..()
setup_shielding()
/obj/item/clothing/suit/worn_overlays(mutable_appearance/standing, isinhands = FALSE)
. = ..()
if(isinhands)
return
if(damaged_clothes)
. += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]")
if(GET_ATOM_BLOOD_DNA_LENGTH(src))
. += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood")
var/mob/living/carbon/human/wearer = loc
if(!ishuman(wearer) || !wearer.w_uniform)
return
var/obj/item/clothing/under/undershirt = wearer.w_uniform
if(!istype(undershirt) || !LAZYLEN(undershirt.attached_accessories))
return
var/obj/item/clothing/accessory/displayed = undershirt.attached_accessories[1]
if(displayed.above_suit)
. += undershirt.accessory_overlay
/obj/item/clothing/suit/update_clothes_damaged_state(damaged_state = CLOTHING_DAMAGED)
..()
if(ismob(loc))
var/mob/M = loc
M.update_worn_oversuit()
/**
* Wrapper proc to apply shielding through AddComponent().
* Called in /obj/item/clothing/Initialize().
* Override with an AddComponent(/datum/component/shielded, args) call containing the desired shield statistics.
* See /datum/component/shielded documentation for a description of the arguments
**/
/obj/item/clothing/suit/proc/setup_shielding()
return