From bf50f9737333c70e43b2b24831734de9ffd7d134 Mon Sep 17 00:00:00 2001 From: AndroBetel <44546836+AndroBetel@users.noreply.github.com> Date: Wed, 28 Aug 2024 21:41:29 +0300 Subject: [PATCH] adds support for non-standard underwear (#405) --- code/modules/client/preferences.dm | 4 ++-- .../mob/new_player/preferences_setup.dm | 6 ++++-- .../sprite_accessories/undershirt.dm | 13 ++++++++++++- .../sprite_accessories/underwear.dm | 6 +++++- icons/mob/humans/undershirt.dmi | Bin 3203 -> 3492 bytes 5 files changed, 23 insertions(+), 6 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 33d77b05c6..09d606c502 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1594,7 +1594,7 @@ var/const/MAX_SAVE_SLOTS = 10 if("underwear") var/list/underwear_options = gender == MALE ? GLOB.underwear_m : GLOB.underwear_f var/old_gender = gender - var/new_underwear = tgui_input_list(user, "Choose your character's underwear:", "Character Preference", underwear_options) + var/new_underwear = tgui_input_list(user, "Choose your character's underwear:", "Character Preference", underwear_options-GLOB.underwear_restricted) if(old_gender != gender) return if(new_underwear) @@ -1604,7 +1604,7 @@ var/const/MAX_SAVE_SLOTS = 10 if("undershirt") var/list/undershirt_options = gender == MALE ? GLOB.undershirt_m : GLOB.undershirt_f var/old_gender = gender - var/new_undershirt = tgui_input_list(user, "Choose your character's undershirt:", "Character Preference", undershirt_options) + var/new_undershirt = tgui_input_list(user, "Choose your character's undershirt:", "Character Preference", undershirt_options-GLOB.undershirt_restricted) if(old_gender != gender) return if(new_undershirt) diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index b76f980480..e040a2dac3 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -16,8 +16,10 @@ randomize_hair_color("facial") randomize_eyes_color() randomize_skin_color() - underwear = gender == MALE ? pick(GLOB.underwear_m) : pick(GLOB.underwear_f) - undershirt = gender == MALE ? pick(GLOB.undershirt_m) : pick(GLOB.undershirt_f) + var/list/undershirt_options = gender == MALE ? GLOB.undershirt_m : GLOB.undershirt_f + undershirt = pick(undershirt_options-GLOB.undershirt_restricted) + var/list/underwear_options = gender == MALE ? GLOB.underwear_m : GLOB.underwear_f + underwear = pick(underwear_options-GLOB.underwear_restricted) backbag = 2 age = rand(AGE_MIN,AGE_MAX) if(H) diff --git a/code/modules/mob/new_player/sprite_accessories/undershirt.dm b/code/modules/mob/new_player/sprite_accessories/undershirt.dm index 5919b75636..5fb59cf261 100644 --- a/code/modules/mob/new_player/sprite_accessories/undershirt.dm +++ b/code/modules/mob/new_player/sprite_accessories/undershirt.dm @@ -1,12 +1,15 @@ GLOBAL_LIST_INIT_TYPED(undershirt_m, /datum/sprite_accessory/undershirt, setup_undershirt(MALE)) GLOBAL_LIST_INIT_TYPED(undershirt_f, /datum/sprite_accessory/undershirt, setup_undershirt(FEMALE)) +GLOBAL_LIST_INIT_TYPED(undershirt_restricted, /datum/sprite_accessory/undershirt, setup_undershirt(null, TRUE)) -/proc/setup_undershirt(restricted_gender) +/proc/setup_undershirt(restricted_gender, restricted) var/list/undershirt_list = list() for(var/undershirt_type in subtypesof(/datum/sprite_accessory/undershirt)) var/datum/sprite_accessory/undershirt/undershirt_datum = new undershirt_type if(restricted_gender && undershirt_datum.gender != restricted_gender && (undershirt_datum.gender == MALE || undershirt_datum.gender == FEMALE)) continue + if(restricted && !undershirt_datum.restricted) + continue if(undershirt_datum.camo_conforming) undershirt_list["[undershirt_datum.name] (Camo Conforming)"] = undershirt_datum var/datum/sprite_accessory/undershirt/classic_datum = new undershirt_type @@ -28,6 +31,7 @@ GLOBAL_LIST_INIT_TYPED(undershirt_f, /datum/sprite_accessory/undershirt, setup_u /datum/sprite_accessory/undershirt icon = 'icons/mob/humans/undershirt.dmi' var/camo_conforming = FALSE + var/restricted = FALSE /datum/sprite_accessory/undershirt/proc/get_image(mob_gender) var/selected_icon_state = icon_state @@ -117,3 +121,10 @@ GLOBAL_LIST_INIT_TYPED(undershirt_f, /datum/sprite_accessory/undershirt, setup_u icon_state = "strapless" gender = FEMALE camo_conforming = TRUE + +// Restricted +/datum/sprite_accessory/undershirt/telnyashka + name = "Telnyashka" + icon_state = "telnyashka" + gender = NEUTER + restricted = TRUE diff --git a/code/modules/mob/new_player/sprite_accessories/underwear.dm b/code/modules/mob/new_player/sprite_accessories/underwear.dm index 869179619e..9c98abccb2 100644 --- a/code/modules/mob/new_player/sprite_accessories/underwear.dm +++ b/code/modules/mob/new_player/sprite_accessories/underwear.dm @@ -1,12 +1,15 @@ GLOBAL_LIST_INIT_TYPED(underwear_m, /datum/sprite_accessory/underwear, setup_underwear(MALE)) GLOBAL_LIST_INIT_TYPED(underwear_f, /datum/sprite_accessory/underwear, setup_underwear(FEMALE)) +GLOBAL_LIST_INIT_TYPED(underwear_restricted, /datum/sprite_accessory/underwear, setup_underwear(null, TRUE)) -/proc/setup_underwear(restricted_gender) +/proc/setup_underwear(restricted_gender, restricted) var/list/underwear_list = list() for(var/underwear_type in subtypesof(/datum/sprite_accessory/underwear)) var/datum/sprite_accessory/underwear/underwear_datum = new underwear_type if(restricted_gender && underwear_datum.gender != restricted_gender && (underwear_datum.gender == MALE || underwear_datum.gender == FEMALE)) continue + if(restricted && !underwear_datum.restricted) + continue if(underwear_datum.camo_conforming) underwear_list["[underwear_datum.name] (Camo Conforming)"] = underwear_datum var/datum/sprite_accessory/underwear/classic_datum = new underwear_type @@ -28,6 +31,7 @@ GLOBAL_LIST_INIT_TYPED(underwear_f, /datum/sprite_accessory/underwear, setup_und /datum/sprite_accessory/underwear icon = 'icons/mob/humans/underwear.dmi' var/camo_conforming = FALSE + var/restricted = FALSE /datum/sprite_accessory/underwear/proc/get_image(mob_gender) var/selected_icon_state = icon_state diff --git a/icons/mob/humans/undershirt.dmi b/icons/mob/humans/undershirt.dmi index 468778851c4c51c42650e723a564841171253f94..928dc332e6df9b9064d70f7ada8fbd6269a1d2c9 100644 GIT binary patch delta 3339 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 XL*3IGLDcb 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 yH_P8JqxulukftYkMvyM