Accessory Suit + Pants Fixes (#20359)

Fixes accessories not showing up on suit items.

Confusingly, accessories used the "_un" uniform suffix - this changes
them to use the "_ac" suffix.

Also moved some files around to their proper place (hair pins and bows
aren't accessories, they're ear slot items, etc.)

Fixes #20361

Fixes #20352

Fixes #20354
This commit is contained in:
Wowzewow (Wezzy)
2025-01-15 13:23:12 +00:00
committed by GitHub
parent 6f7495214e
commit 62980205f4
77 changed files with 120 additions and 101 deletions
@@ -11,7 +11,7 @@
/datum/gear/uniform/offworlder/skirt
display_name = "CR skirt"
path = /obj/item/clothing/pants/skirt/offworlder
path = /obj/item/clothing/under/dress/offworlder/skirt
/datum/gear/eyes/starshades
display_name = "starshades"
+3 -3
View File
@@ -738,7 +738,7 @@
A.accessory_mob_overlay.ClearOverlays()
else
for(var/obj/item/clothing/accessory/A in accessories)
var/image/accessory_image = A.get_accessory_mob_overlay(H, FALSE, src)
var/image/accessory_image = A.get_accessory_mob_overlay(H, FALSE)
I.AddOverlays(accessory_image)
if(blood_DNA && slot != slot_l_hand_str && slot != slot_r_hand_str)
@@ -1079,7 +1079,7 @@
A.accessory_mob_overlay.ClearOverlays()
else
for(var/obj/item/clothing/accessory/A in accessories)
var/image/accessory_image = A.get_accessory_mob_overlay(H, FALSE, src)
var/image/accessory_image = A.get_accessory_mob_overlay(H, FALSE)
I.AddOverlays(accessory_image)
if(blood_DNA && slot != slot_l_hand_str && slot != slot_r_hand_str)
@@ -1183,7 +1183,7 @@
A.accessory_mob_overlay.ClearOverlays()
else
for(var/obj/item/clothing/accessory/A in accessories)
var/image/accessory_image = A.get_accessory_mob_overlay(H, FALSE, src)
var/image/accessory_image = A.get_accessory_mob_overlay(H, FALSE)
I.AddOverlays(accessory_image)
if(blood_DNA && slot != slot_l_hand_str && slot != slot_r_hand_str)
+4 -4
View File
@@ -692,7 +692,7 @@
desc_extended = "One of the most prominent symbols of the Moroz Holy Tribunal is 'The Eye', with the square representing the four corners of the universe and the central 'eye' being the \
Tribunal that watches all. Necklaces and amulets made from this symbol often have the eye being able to rotate. Although there is no official stance, others argue that necklaces should be made \
from bare metal to represent how the Tribunal sees the unvarnished truth, while others insist that they must be made from gold to glorify the religion."
icon = 'icons/clothing/accessories/dominia_amulet.dmi'
icon = 'icons/obj/item/clothing/accessory/dominia_amulet.dmi'
item_state = "dominia_amulet"
icon_state = "dominia_amulet"
contained_sprite = TRUE
@@ -702,7 +702,7 @@
desc = "An amulet depicting the three animal aspects of Lyodic Tribunalism upon a bone plate. \
A prominent symbol of the Lyodic take on the religion, worn by both its shamans and followers."
desc_extended = ""
icon = 'icons/clothing/accessories/lyodii_amulet.dmi'
icon = 'icons/obj/item/clothing/accessory/lyodii_amulet.dmi'
icon_state = "lyodii_amulet"
item_state = "lyodii_amulet"
@@ -710,7 +710,7 @@
name = "tribunal investigator card"
desc = "A gold-gilded card given to those who are active investigators within the Tribunal Investigations Constabulary, otherwise known as TIC. \
In essence the religion police of the Tribunal, these investigators are found through the entirety of the Empire of Dominia."
icon = 'icons/clothing/accessories/tic_cards.dmi'
icon = 'icons/obj/item/clothing/accessory/tic_cards.dmi'
icon_state = "tic_card"
item_state = "tic_card"
@@ -877,7 +877,7 @@
desc = "A sleeve patch worn by non-commissioned officers of the Imperial Army."
desc_extended = "Non-commissioned officers form the backbone of the Imperial Army's troops. Typically recruited from Novi Jadran's countryside, they are well-trained \
and well-motivated soldiers focused on ensuring their troops' survival and their mission's success."
icon = 'icons/clothing/accessories/dominia_nco_badge.dmi'
icon = 'icons/obj/item/clothing/accessory/dominia_nco_badge.dmi'
icon_state = "dom_nco"
item_state = "dom_nco"
+1 -1
View File
@@ -2,7 +2,7 @@
name = "Europan bone charm"
desc = "A common Europan superstition, bone charms made from native sea creatures are often carried as a good luck charm."
desc_extended = "Europan bone charms will generally have wards, runes, or other text carved into them by their original crafter. Poorly-made bone charms, or those crafted from the bones of a batshark, are considered to be extremely unlucky and are typically unceremoniously disposed of. Most bone charms are made using the remains of Europan bone whales."
icon = 'icons/clothing/accessories/europa_whalebone.dmi'
icon = 'icons/obj/item/clothing/accessory/europa_whalebone.dmi'
icon_state = "europa_whalebone"
item_state = "europa_whalebone"
contained_sprite = TRUE
+2 -2
View File
@@ -112,7 +112,7 @@
name = "cadre brassard"
desc = "Gadpathurian cadres use these brassards, worn on their uniforms or their coats, to distinguish themselves."
desc_extended = "Stop reading the fluff description of an accessory friend, we must fight the Solarian imperialists!"
icon = 'icons/clothing/accessories/gadpathur_brassard.dmi'
icon = 'icons/obj/item/clothing/accessory/gadpathur_brassard.dmi'
icon_state = "gadpathur_brassard"
item_state = "gadpathur_brassard"
contained_sprite = TRUE
@@ -156,7 +156,7 @@
name = "gadpathurian dogtag"
desc = "Gadpathurian dogtags are issued to every non-exiled member of the planet's highly-militarized society and list their wearer's name, cadre, cadre ID, religion, and blood type. \
They can be easily ripped in half in the event of the wearer's death."
icon = 'icons/clothing/accessories/dogtags.dmi'
icon = 'icons/obj/item/clothing/accessory/dogtags.dmi'
icon_state = "gadpathur_tag"
w_class = WEIGHT_CLASS_SMALL
+1 -1
View File
@@ -226,7 +226,7 @@
desc = "For the hard working Thesian of the Golden Deep. Able to carry tools and withstand the rigors of work within the collective."
icon_state = "thesian_webbing"
item_state = "thesian_webbing"
icon = 'icons/clothing/accessories/thesian_webbing.dmi'
icon = 'icons/obj/item/clothing/accessory/thesian_webbing.dmi'
contained_sprite = TRUE
has_accents = TRUE
+1 -1
View File
@@ -137,7 +137,7 @@
/obj/item/clothing/accessory/konyang
name = "male hanbok belt"
desc = "A traditional belt worn over hanbok typically tailored for men."
icon = 'icons/clothing/accessories/konyang_belt.dmi'
icon = 'icons/obj/item/clothing/accessory/konyang_belt.dmi'
icon_state = "konyang_belt"
item_state = "konyang_belt"
contained_sprite = TRUE
+2 -2
View File
@@ -11,7 +11,7 @@
/obj/item/clothing/head/pin
name = "hair pin"
desc = "A nice hair pin."
icon = 'icons/obj/item/clothing/accessory/hair_pins.dmi'
icon = 'icons/obj/item/clothing/head/hair_pins.dmi'
contained_sprite = TRUE
icon_state = "pin"
item_state = "pin"
@@ -85,7 +85,7 @@
/obj/item/clothing/head/pin/ribbon
name = "hair ribbon parent item"
desc = DESC_PARENT
icon = 'icons/obj/item/clothing/accessory/hair_ribbons.dmi'
icon = 'icons/obj/item/clothing/head/hair_ribbons.dmi'
contained_sprite = TRUE
/obj/item/clothing/head/pin/ribbon/head
+2 -2
View File
@@ -93,7 +93,7 @@ ABSTRACT_TYPE(/obj/item/clothing/pants)
/obj/item/clothing/pants/highvis/get_mob_overlay(mob/living/carbon/human/H, mob_icon, mob_state, slot)
var/image/I = ..()
if(slot == slot_w_uniform_str)
if(slot == slot_pants_str)
var/image/emissive_overlay = emissive_appearance(mob_icon, "[icon_state][species_sprite_adaption_type]-emis", alpha = src.alpha)
I.AddOverlays(emissive_overlay)
return I
@@ -107,7 +107,7 @@ ABSTRACT_TYPE(/obj/item/clothing/pants)
/obj/item/clothing/pants/highvis_alt/get_mob_overlay(mob/living/carbon/human/H, mob_icon, mob_state, slot)
var/image/I = ..()
if(slot == slot_w_uniform_str)
if(slot == slot_pants_str)
var/image/emissive_overlay = emissive_appearance(mob_icon, "[icon_state][species_sprite_adaption_type]-emis", alpha = src.alpha)
I.AddOverlays(emissive_overlay)
return I
-9
View File
@@ -81,15 +81,6 @@
icon_state = "skirt_straightlong"
item_state = "skirt_straightlong"
/obj/item/clothing/pants/skirt/offworlder
name = "\improper CR skirt"
desc = "A very tight form-fitting padded suit that looks extremely comfortable to wear. This variant seems to have a poofy skirt and longer sleeves than normal."
icon = 'icons/obj/item/clothing/accessory/offworlder.dmi'
contained_sprite = TRUE
icon_state = "crskirt"
item_state = "crskirt"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
/obj/item/clothing/pants/skirt/jumper
name = "jumper skirt"
desc = "A short skirt with two large shoulder straps."
@@ -7,7 +7,6 @@
overlay_state = null
slot_flags = SLOT_TIE
w_class = WEIGHT_CLASS_SMALL
sprite_sheets = list(
BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/accessories.dmi'
)
@@ -52,9 +51,11 @@
if(build_from_parts && overlay_in_inventory)
inv_overlay.ClearOverlays()
inv_overlay.AddOverlays(overlay_image(I, "[tmp_icon_state]_[worn_overlay]", flags=RESET_COLOR)) //add the overlay w/o coloration of the original sprite
if(has_accents)
inv_overlay.AddOverlays(overlay_image(I, "[tmp_icon_state]_w_acc", accent_color, flags=accent_flags))
return inv_overlay
/obj/item/clothing/accessory/proc/get_accessory_mob_overlay(var/mob/living/carbon/human/H, var/force = FALSE, var/obj/item/clothing/attached_to)
/obj/item/clothing/accessory/proc/get_accessory_mob_overlay(var/mob/living/carbon/human/H, var/force = FALSE)
var/I
if(icon_override)
I = icon_override
@@ -70,12 +71,12 @@
if(icon_override)
if(contained_sprite)
auto_adapt_species(H)
tmp_icon_state = "[UNDERSCORE_OR_NULL(src.icon_species_tag)][src.item_state][attached_to? "[attached_to.species_sprite_adaption_type]" : "[WORN_UNDER]"]"
tmp_icon_state = "[UNDERSCORE_OR_NULL(src.icon_species_tag)][src.item_state][WORN_ACCESS]"
else if("[tmp_icon_state]_mob" in icon_states(I))
tmp_icon_state = "[tmp_icon_state]_mob"
else if(contained_sprite)
auto_adapt_species(H)
tmp_icon_state = "[UNDERSCORE_OR_NULL(src.icon_species_tag)][src.item_state][attached_to? "[attached_to.species_sprite_adaption_type]" : "[WORN_UNDER]"]"
tmp_icon_state = "[UNDERSCORE_OR_NULL(src.icon_species_tag)][src.item_state][WORN_ACCESS]"
accessory_mob_overlay = image("icon" = I, "icon_state" = "[tmp_icon_state]")
if(build_from_parts || has_accents)
accessory_mob_overlay.ClearOverlays()
@@ -273,7 +274,7 @@
desc = "An outdated medical apparatus for listening to the sounds of the human body. It also makes you look like you know what you're doing."
desc_info = "Click on the UI action button toggle between the examination modes. Automatic will use the stethoscope on the person you're \
examining when adjacent to them, automatically using it on the selected body part. Manual will make it so you don't automatically use it via examine."
icon = 'icons/clothing/accessories/stethoscope.dmi'
icon = 'icons/obj/item/clothing/accessory/stethoscope.dmi'
icon_state = "stethoscope"
item_state = "stethoscope"
contained_sprite = TRUE
@@ -335,7 +336,7 @@
/obj/item/clothing/accessory/scarf
name = "scarf"
desc = "A simple scarf, to protect your neck from the cold of space."
icon = 'icons/obj/clothing/scarves.dmi'
icon = 'icons/obj/item/clothing/accessory/scarves.dmi'
icon_state = "scarf0"
item_state = "scarf0"
contained_sprite = TRUE
@@ -379,7 +380,7 @@
/obj/item/clothing/accessory/shawl
name = "cozy shawl"
desc = "A favored accessory amongst grandmothers and cottagecore enthusiasts."
icon = 'icons/obj/clothing/shawl.dmi'
icon = 'icons/obj/item/clothing/accessory/shawl.dmi'
icon_state = "shawl"
item_state = "shawl"
contained_sprite = TRUE
@@ -523,7 +524,7 @@
name = "yellow sash"
desc = "A yellow sash, designed to be worn over one shoulder and come down to the opposing hip."
desc_extended = "Sashes such as this one are a common sight throughout the Empire of Dominia, though they are hardly as fashionable as the typical cape."
icon = 'icons/clothing/accessories/sash.dmi'
icon = 'icons/obj/item/clothing/accessory/sash.dmi'
item_state = "sash"
icon_state = "sash"
contained_sprite = TRUE
@@ -569,7 +570,7 @@
desc = "A sash, designed to be worn around the waist."
item_state = "sash_horizontal"
icon_state = "sash_horizontal"
icon = 'icons/clothing/accessories/sash_horizontal.dmi'
icon = 'icons/obj/item/clothing/accessory/sash_horizontal.dmi'
/*
* Cloak
@@ -847,7 +848,7 @@
/obj/item/clothing/accessory/dogtags
name = "dogtags"
desc = "A pair of engraved metal identification tags."
icon = 'icons/clothing/accessories/dogtags.dmi'
icon = 'icons/obj/item/clothing/accessory/dogtags.dmi'
icon_state = "dogtags"
item_state = "dogtags"
contained_sprite = TRUE
@@ -941,7 +942,7 @@
/obj/item/clothing/accessory/kneepads
name = "kneepads"
desc = "A pair of synthetic kneepads. Doesn't provide protection from more than arthritis."
icon = 'icons/clothing/accessories/kneepads.dmi'
icon = 'icons/obj/item/clothing/accessory/kneepads.dmi'
icon_state = "kneepads"
item_state = "kneepads"
contained_sprite = TRUE
@@ -951,7 +952,7 @@
/obj/item/clothing/accessory/blood_patch
name = "O- blood patch"
desc = "An embroidered patch indicating the wearer's blood type as O NEGATIVE."
icon = 'icons/clothing/accessories/blood_patch.dmi'
icon = 'icons/obj/item/clothing/accessory/blood_patch.dmi'
icon_state = "onegtag"
contained_sprite = TRUE
@@ -1073,7 +1074,7 @@
name = "\improper Burzsian shoulder mantle"
desc = "A uniform mantle made out of rudimentary metallic plates. The sigil of Burzsia is pressed into the front of it."
desc_extended = "A uniform mantle of metallic plates that provide positronics in Burzsia cheap, rudimentary protection from industrial hazards and shrapnel; it's also been chemically treated to withstand the surface of Burzsia I. Operation history and specifications are printed underneath the back plate, as a failsafe for field operators to quickly identify the unit in the event it is damaged to the point where said information cannot be discerned through other means."
icon = 'icons/clothing/accessories/bz_mantle.dmi'
icon = 'icons/obj/item/clothing/accessory/bz_mantle.dmi'
icon_state = "ipcmantle"
item_state = "ipcmantle"
contained_sprite = TRUE
@@ -1090,7 +1091,7 @@
/obj/item/clothing/accessory/goon_coif
name = "tactical coif"
desc = "A comfortable tactical coif that goes around the head."
icon = 'icons/clothing/accessories/goon_coif.dmi'
icon = 'icons/obj/item/clothing/accessory/goon_coif.dmi'
body_parts_covered = HEAD
icon_state = "goon_coif"
item_state = "goon_coif"
@@ -1266,7 +1267,7 @@
/obj/item/clothing/accessory/pronoun
name = "any/all pronouns pin"
desc = "A pin denoting the wearer's pronouns: any/all."
icon = 'icons/clothing/accessories/pronoun_pin.dmi'
icon = 'icons/obj/item/clothing/accessory/pronoun_pin.dmi'
icon_state = "pronounpin"
item_state = "pronounpin"
worn_overlay = "over"
@@ -1307,7 +1308,7 @@
/obj/item/clothing/accessory/led_collar
name = "\improper LED collar"
desc = "A collar, usually worn around the neck of a voidsuit, that allows others to easily identify the wearer."
icon = 'icons/clothing/accessories/led_collar.dmi'
icon = 'icons/obj/item/clothing/accessory/led_collar.dmi'
icon_state = "led_collar"
item_state = "led_collar"
plane = EFFECTS_ABOVE_LIGHTING_PLANE
@@ -191,7 +191,7 @@
overlay_state = "badge_round_bssb"
slot_flags = SLOT_TIE
contained_sprite = TRUE
icon = 'icons/clothing/accessories/bssb_badge.dmi'
icon = 'icons/obj/item/clothing/accessory/bssb_badge.dmi'
/obj/item/clothing/accessory/badge/bssb/senior
name = "\improper BSSB senior agent's badge"
@@ -296,7 +296,7 @@
desc_extended = "A passcard is a modern evolution of the state-issued identification card, with all the functionality of a driver's license, birth certificate, passport, or other document, \
updated as necessary or able by a central government. The concept was pioneered in the early days of the Sol Alliance, and continues in most human stellar nations to this day, owing to the availability \
and price of consumer plastics and self-powered microholograms."
icon = 'icons/clothing/accessories/passcards.dmi'
icon = 'icons/obj/item/clothing/accessory/passcards.dmi'
icon_state = "passcard_ceti"
item_state = "passcard_ceti"
contained_sprite = TRUE
@@ -528,7 +528,7 @@
/obj/item/clothing/accessory/badge/passport
name = "biesellite passport"
desc = "A passport issued to a citizen of the Republic of Biesel."
icon = 'icons/clothing/accessories/passcards.dmi'
icon = 'icons/obj/item/clothing/accessory/passcards.dmi'
icon_state = "passport_ceti"
item_state = "passport_ceti"
contained_sprite = TRUE
@@ -3,7 +3,7 @@ var/list/active_buddy_tags = list()
/obj/item/clothing/accessory/buddytag
name = "buddy tag"
desc = "A tiny device, paired up with a counterpart set to same code. When the paired devices are too far apart, they start beeping."
icon = 'icons/clothing/accessories/buddy_tag.dmi'
icon = 'icons/obj/item/clothing/accessory/buddy_tag.dmi'
icon_state = "buddytag0"
item_state = "buddytag"
contained_sprite = TRUE
@@ -2,7 +2,7 @@
/obj/item/clothing/accessory/rosary
name = "rosary"
desc = "A form of prayer psalter used in the Catholic Church, with a string of beads attached to it."
icon = 'icons/obj/clothing/accessory/religious.dmi'
icon = 'icons/obj/item/clothing/accessory/religious.dmi'
icon_state = "rosary"
overlay_state = "rosary"
flippable = 1
@@ -15,7 +15,7 @@
/obj/item/clothing/accessory/crucifix
name = "crucifix"
desc = "A small cross on a piece of string. Commonly associated with the Christian faith, it is a main symbol of this religion."
icon = 'icons/obj/clothing/accessory/religious.dmi'
icon = 'icons/obj/item/clothing/accessory/religious.dmi'
contained_sprite = TRUE
drop_sound = 'sound/items/drop/accessory.ogg'
pickup_sound = 'sound/items/pickup/accessory.ogg'
@@ -50,7 +50,7 @@
name = "scapular"
desc = "A Christian garment suspended from the shoulders. As an object of popular piety, \
it serves to remind the wearers of their commitment to live a Christian life."
icon = 'icons/obj/clothing/accessory/religious.dmi'
icon = 'icons/obj/item/clothing/accessory/religious.dmi'
icon_state = "scapular"
item_state = "scapular"
@@ -58,7 +58,7 @@
name = "tallit"
desc = "A tallit is a fringed garment worn as a prayer shawl by religious Jews. \
The tallit has special twined and knotted fringes known as tzitzit attached to its four corners."
icon = 'icons/obj/clothing/accessory/religious.dmi'
icon = 'icons/obj/item/clothing/accessory/religious.dmi'
item_state = "tallit"
icon_state = "tallit"
contained_sprite = TRUE
@@ -71,7 +71,7 @@
desc_extended = "Plated in 18-karat gold and decorated with rubies, this amulet, as jewelry, is both ornate and extremely well-made. In addition to being a passive display of one's faith - not quite holding much religious value - \
its wear is often promoted by Assunzione's government as a testament of the planet's superlative craftsmanship talent and material wealth. While it fetches for an extremely high price in the market, voluntarily selling this amulet is considered \
sacrilegious, and a display of weak resolve."
icon = 'icons/obj/clothing/accessory/religious.dmi'
icon = 'icons/obj/item/clothing/accessory/religious.dmi'
item_state = "assunzione_amulet"
icon_state = "assunzione_amulet"
contained_sprite = TRUE
@@ -529,54 +529,14 @@
desc = "A fancy waistcoat worn by the New Kingdom's nobility. Likely a hand-me-down."
icon_state = "nka_waistcoat"
item_state = "nka_waistcoat"
/obj/item/clothing/accessory/tajaran/nka_waistcoat/update_icon()
ClearOverlays()
var/image/buttons = image(icon, null, "nka_waistcoat_buttons")
buttons.appearance_flags = RESET_COLOR
AddOverlays(buttons)
/obj/item/clothing/accessory/tajaran/nka_waistcoat/get_mob_overlay(var/mob/living/carbon/human/H, var/mob_icon, var/mob_state, var/slot)
var/image/I = ..()
if(slot == slot_wear_suit_str)
var/image/buttons = image(mob_icon, null, "nka_waistcoat_un_buttons")
buttons.appearance_flags = RESET_COLOR
I.AddOverlays(buttons)
return I
/obj/item/clothing/accessory/tajaran/nka_waistcoat/get_accessory_mob_overlay(mob/living/carbon/human/H, force)
var/image/base = ..()
var/image/buttons = image(icon, null, "nka_waistcoat_un_buttons")
buttons.appearance_flags = RESET_COLOR
base.AddOverlays(buttons)
return base
has_accents = TRUE
/obj/item/clothing/accessory/tajaran/nka_vest
name = "noble adhomian vest"
desc = "A fancy vest worn by the New Kingdom's nobility. Likely a hand-me-down."
icon_state = "nka_vest"
item_state = "nka_vest"
/obj/item/clothing/accessory/tajaran/nka_vest/update_icon()
ClearOverlays()
var/image/buttons = image(icon, null, "nka_vest_buttons")
buttons.appearance_flags = RESET_COLOR
AddOverlays(buttons)
/obj/item/clothing/accessory/tajaran/nka_vest/get_mob_overlay(var/mob/living/carbon/human/H, var/mob_icon, var/mob_state, var/slot)
var/image/I = ..()
if(slot == slot_wear_suit_str)
var/image/buttons = image(mob_icon, null, "nka_vest_un_buttons")
buttons.appearance_flags = RESET_COLOR
I.AddOverlays(buttons)
return I
/obj/item/clothing/accessory/tajaran/nka_vest/get_accessory_mob_overlay(mob/living/carbon/human/H, force)
var/image/base = ..()
var/image/buttons = image(icon, null, "nka_vest_un_buttons")
buttons.appearance_flags = RESET_COLOR
base.AddOverlays(buttons)
return base
has_accents = TRUE
/obj/item/clothing/accessory/dogtags/adhomai
name = "adhomian dogtags"
@@ -589,7 +549,7 @@
/obj/item/dogtag/adhomai_tag
name = "adhomian dogtag"
desc = "Dogtags issued to the Tajaran soldiers of all Adhomian factions. Veterans usually bring them back home."
icon = 'icons/clothing/accessories/dogtags.dmi'
icon = 'icons/obj/item/clothing/accessory/dogtags.dmi'
icon_state = "adhomai_tag"
w_class = WEIGHT_CLASS_SMALL
@@ -341,6 +341,14 @@
item_state = "crdress"
worn_state = "crdress"
/obj/item/clothing/under/dress/offworlder/skirt
name = "\improper CR dress skirt"
desc = "A very tight form-fitting padded suit that looks extremely comfortable to wear. This variant seems to have a poofy skirt and longer sleeves than normal."
icon_state = "crskirt"
item_state = "crskirt"
worn_state = "crskirt"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
/obj/item/clothing/under/hosformalmale
name = "head of security's formal uniform"
desc = "A male head of security's formal-wear, for special occasions."