Colorable high visibility clothing (#21635)

# Summary

This PR introduces colorable high visibility jackets and pants. They are
available in the character loadout.
**[Breaking change]**  
Existing high visibility clothing received its own category in the
loadout and breaks current loadouts using said clothing.
The currently worn clothes need to be re-selected from the new group.

## Changes

- Added a colorable version of high visibility jackets and pants.
- Moved existing high visibility clothing to their own selection in the
loadout out of the generic jackets/pants group.
- Fixed a bug that prevents the usage of accents/part-building for
pants.
- Added a dedicated code file for high visibility jackets and pants
along some refactoring.
- Introduced minor protection values for high visibility clothing.
- Removed duplicate jacket emissive sprites and fixed jackets getting
the right pattern for their type.

## PR Notes

Any mapping-tag is due to the changes in the high visibility clothing
type names, no map has been changed aside a global type name
replacement.

## Preview

A combination of colored jacket and pants. Selected was green for the
base color and yellow for the accent color.

<img width="93" height="96" alt="Screenshot 2025-11-30 023923"
src="https://github.com/user-attachments/assets/5162608e-b325-4d8c-8691-9d23ada1641d"
/>
This commit is contained in:
FabianK3
2025-12-04 07:55:53 +00:00
committed by GitHub
parent 6dfa4d00d2
commit 2e5141df0f
25 changed files with 204 additions and 190 deletions
@@ -21,10 +21,6 @@ ABSTRACT_TYPE(/datum/gear/pants)
pants["red pants"] = /obj/item/clothing/pants/red
pants["tan pants"] = /obj/item/clothing/pants/tan
pants["khaki pants"] = /obj/item/clothing/pants/khaki
pants["high visibility pants"] = /obj/item/clothing/pants/highvis
pants["high visibility pants, alt"] = /obj/item/clothing/pants/highvis_alt
pants["high visibility pants, red"] = /obj/item/clothing/pants/highvis_red
pants["high visibility pants, orange"] = /obj/item/clothing/pants/highvis_orange
pants["track pants"] = /obj/item/clothing/pants/track
pants["blue track pants"] = /obj/item/clothing/pants/track/blue
pants["green track pants"] = /obj/item/clothing/pants/track/green
@@ -111,3 +107,22 @@ ABSTRACT_TYPE(/datum/gear/pants)
skirts["jumper dress"] = /obj/item/clothing/pants/skirt/jumper_highcut
skirts["long straight skirt"] = /obj/item/clothing/pants/skirt/straightlong
gear_tweaks += new /datum/gear_tweak/path(skirts)
/datum/gear/pants/highvis
display_name = "high visibility pants selection"
description = "A selection of high visibility pants."
path = /obj/item/clothing/pants/highvis
/datum/gear/pants/highvis/New()
..()
var/list/highvis = list()
highvis["high visibility pants"] = /obj/item/clothing/pants/highvis
highvis["high visibility pants, alt"] = /obj/item/clothing/pants/highvis/alt
highvis["high visibility pants, red"] = /obj/item/clothing/pants/highvis/red
highvis["high visibility pants, orange"] = /obj/item/clothing/pants/highvis/orange
gear_tweaks += new /datum/gear_tweak/path(highvis)
/datum/gear/pants/highvis_colorable
display_name = "colorable high visibility pants"
path = /obj/item/clothing/pants/highvis/colorable
flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ACCENT_COLOR_SELECTION
@@ -42,10 +42,6 @@
jackets["flannel jacket, grey"] = /obj/item/clothing/suit/storage/toggle/flannel/gray
jackets["flannel jacket, purple"] = /obj/item/clothing/suit/storage/toggle/flannel/purple
jackets["flannel jacket, yellow"] = /obj/item/clothing/suit/storage/toggle/flannel/yellow
jackets["high visibility jacket"] = /obj/item/clothing/suit/storage/toggle/highvis
jackets["high visibility jacket, alt"] = /obj/item/clothing/suit/storage/toggle/highvis_alt
jackets["high visibility jacket, red"] = /obj/item/clothing/suit/storage/toggle/highvis_red
jackets["high visibility jacket, orange"] = /obj/item/clothing/suit/storage/toggle/highvis_orange
jackets["black vest"] = /obj/item/clothing/suit/storage/toggle/leather_vest
jackets["brown vest"] = /obj/item/clothing/suit/storage/toggle/brown_jacket/sleeveless
jackets["leather coat"] = /obj/item/clothing/suit/storage/leathercoat
@@ -56,6 +52,7 @@
/datum/gear/suit/hazard_vest
display_name = "hazard vest selection"
description = "A selection of hazard vests."
path = /obj/item/clothing/suit/storage/hazardvest
/datum/gear/suit/hazard_vest/New()
@@ -71,6 +68,38 @@
hazard["hazard vest, hephaestus green"] = /obj/item/clothing/suit/storage/hazardvest/green
gear_tweaks += new /datum/gear_tweak/path(hazard)
/datum/gear/suit/hazard_vest_colorable
display_name = "colorable hazard vest selection"
description = "A selection of colorable hazard vests."
path = /obj/item/clothing/suit/storage/hazardvest/colorable
flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ACCENT_COLOR_SELECTION
/datum/gear/suit/hazard_vest_colorable/New()
..()
var/list/hazard_vest = list()
hazard_vest["colorable hazard vest"] = /obj/item/clothing/suit/storage/hazardvest/colorable
hazard_vest["colorable hazard vest, alt"] = /obj/item/clothing/suit/storage/hazardvest/colorable/alt
gear_tweaks += new /datum/gear_tweak/path(hazard_vest)
/datum/gear/suit/highvis
display_name = "high visibility jacket selection"
description = "A selection of high visibility jackets."
path = /obj/item/clothing/suit/storage/toggle/highvis
/datum/gear/suit/highvis/New()
..()
var/list/highvis = list()
highvis["high visibility jacket"] = /obj/item/clothing/suit/storage/toggle/highvis
highvis["high visibility jacket, alt"] = /obj/item/clothing/suit/storage/toggle/highvis/alt
highvis["high visibility jacket, red"] = /obj/item/clothing/suit/storage/toggle/highvis/red
highvis["high visibility jacket, orange"] = /obj/item/clothing/suit/storage/toggle/highvis/orange
gear_tweaks += new /datum/gear_tweak/path(highvis)
/datum/gear/suit/highvis_colorable
display_name = "colorable high visibility jacket"
path = /obj/item/clothing/suit/storage/toggle/highvis/colorable
flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ACCENT_COLOR_SELECTION
/datum/gear/suit/hoodie
display_name = "hoodie selection"
path = /obj/item/clothing/suit/storage/hooded/wintercoat/hoodie
@@ -631,15 +660,3 @@ ABSTRACT_TYPE(/datum/gear/suit/miscellaneous)
description = "A heavy threaded tweed gray jacket. For a different sort of Gentleman."
path = /obj/item/clothing/suit/storage/toggle/wizrobe/gentlecoat
flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION
/datum/gear/suit/hazard_vest_colorable
display_name = "colorable hazard vest selection"
path = /obj/item/clothing/suit/storage/hazardvest/colorable
flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ACCENT_COLOR_SELECTION
/datum/gear/suit/hazard_vest_colorable/New()
..()
var/list/hazard_vest = list()
hazard_vest["colorable hazard vest"] = /obj/item/clothing/suit/storage/hazardvest/colorable
hazard_vest["colorable hazard vest, alt"] = /obj/item/clothing/suit/storage/hazardvest/colorable/alt
gear_tweaks += new /datum/gear_tweak/path(hazard_vest)