diff --git a/code/datums/underwear/underwear.dm b/code/datums/underwear/underwear.dm index d14ddea133..22f538a9a1 100644 --- a/code/datums/underwear/underwear.dm +++ b/code/datums/underwear/underwear.dm @@ -9,27 +9,34 @@ *************/ /datum/category_group/underwear var/sort_order // Lower sort order is applied as icons first + var/display_name // For displaying in text + var/gender = NEUTER datum/category_group/underwear/dd_SortValue() return sort_order /datum/category_group/underwear/top name = "Underwear, top" + display_name = "top piece" sort_order = 1 category_item_type = /datum/category_item/underwear/top /datum/category_group/underwear/bottom name = "Underwear, bottom" + display_name = "bottom piece" sort_order = 2 category_item_type = /datum/category_item/underwear/bottom /datum/category_group/underwear/socks name = "Socks" + display_name = "socks" + gender = PLURAL sort_order = 3 category_item_type = /datum/category_item/underwear/socks /datum/category_group/underwear/undershirt name = "Undershirt" + display_name = "undershirt" sort_order = 4 // Undershirts currently have the highest sort order because they may cover both underwear and socks. category_item_type = /datum/category_item/underwear/undershirt diff --git a/code/game/objects/structures/under_wardrobe.dm b/code/game/objects/structures/under_wardrobe.dm index 6a06ef26fb..d26b421ab5 100644 --- a/code/game/objects/structures/under_wardrobe.dm +++ b/code/game/objects/structures/under_wardrobe.dm @@ -69,6 +69,7 @@ var/datum/category_item/underwear/selected_underwear = input(H, "Choose underwear:", "Choose underwear", H.all_underwear[UWC.name]) as null|anything in UWC.items if(selected_underwear && CanUseTopic(H, default_state)) H.all_underwear[UWC.name] = selected_underwear + H.hide_underwear[UWC.name] = FALSE . = TRUE else if(href_list["underwear"] && href_list["tweak"]) var/underwear = href_list["underwear"] @@ -80,6 +81,7 @@ var/new_metadata = gt.get_metadata(usr, get_metadata(H, underwear, gt), "Wardrobe Underwear Selection") if(new_metadata) set_metadata(H, underwear, gt, new_metadata) + H.hide_underwear[underwear] = FALSE . = TRUE if(.) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index df1bfc4667..6468f17908 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -41,6 +41,10 @@ human_mob_list |= src ..() + hide_underwear.Cut() + for(var/category in global_underwear.categories_by_name) + hide_underwear[category] = FALSE + if(dna) dna.ready_dna(src) dna.real_name = real_name @@ -1416,6 +1420,22 @@ return 1 return 0 +/mob/living/carbon/human/verb/toggle_underwear() + set name = "Toggle Underwear" + set desc = "Shows/hides selected parts of your underwear." + set category = "Object" + + if(stat) return + var/datum/category_group/underwear/UWC = input(usr, "Choose underwear:", "Show/hide underwear") as null|anything in global_underwear.categories + var/datum/category_item/underwear/UWI = all_underwear[UWC.name] + if(!UWI || UWI.name == "None") + src << "You do not have [UWC.gender==PLURAL ? "[UWC.display_name]" : "\a [UWC.display_name]"]." + return + hide_underwear[UWC.name] = !hide_underwear[UWC.name] + update_underwear(1) + src << "You [hide_underwear[UWC.name] ? "take off" : "put on"] your [UWC.display_name]." + return + /mob/living/carbon/human/verb/pull_punches() set name = "Pull Punches" set desc = "Try not to hurt them." diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 99bbe8ffcf..fef4752a2a 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -35,6 +35,7 @@ var/list/all_underwear = list() var/list/all_underwear_metadata = list() + var/list/hide_underwear = list() var/backbag = 2 //Which backpack type the player has chosen. Nothing, Satchel or Backpack. var/pdachoice = 1 //Which PDA type the player has chosen. Default, Slim, or Old. diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 43123eab0a..6607d166bf 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -336,6 +336,8 @@ var/global/list/damage_icon_parts = list() if(species.appearance_flags & HAS_UNDERWEAR) overlays_standing[UNDERWEAR_LAYER] = list() for(var/category in all_underwear) + if(hide_underwear[category]) + continue var/datum/category_item/underwear/UWI = all_underwear[category] overlays_standing[UNDERWEAR_LAYER] += UWI.generate_image(all_underwear_metadata[category])