Underwear color (#45630)

About The Pull Request

    Changes our current underwear selection to greyscale so you can color them any way you like, just like hair.

    Removed duplicate underwear types that only served as a few color options(female_yellow, male_blue, ect.) Underwear with designs are unaffected(female_uk, male_commie, ect.)

    Added a new option in dressers to change underwear color.

    Changed some underwear names to fit the new option(female_red is now female_lace, ect.)

A9hAqkxgin
If all is well i plan on adding this to undershirts and socks too.

also HUGE thank you to nonfictiongames for the help!!!!
Why It's Good For The Game

More character customization in roleplaying game GOOD
Changelog

cl
add: Underwear can now have any color. (Your character will most likely be nude now so check your prefs!!)
add: Underwear color option in dressers
tweak: changed some underwear names
imagedel: deleted duplicate underwear

/cl
This commit is contained in:
Twaticus
2019-08-09 11:04:58 +12:00
committed by oranges
parent 8699c10857
commit 9dfa78cb47
9 changed files with 132 additions and 144 deletions
+5 -2
View File
@@ -32,7 +32,7 @@
to_chat(user, "<span class='warning'>You are not capable of wearing underwear.</span>")
return
var/choice = input(user, "Underwear, Undershirt, or Socks?", "Changing") as null|anything in list("Underwear","Undershirt","Socks")
var/choice = input(user, "Underwear, Undershirt, or Socks?", "Changing") as null|anything in list("Underwear","Underwear Color","Undershirt","Socks")
if(!Adjacent(user))
return
@@ -41,7 +41,10 @@
var/new_undies = input(user, "Select your underwear", "Changing") as null|anything in GLOB.underwear_list
if(new_undies)
H.underwear = new_undies
if("Underwear Color")
var/new_underwear_color = input(H, "Choose your underwear color", "Underwear Color","#"+H.underwear_color) as color|null
if(new_underwear_color)
H.underwear_color = sanitize_hexcolor(new_underwear_color)
if("Undershirt")
var/new_undershirt = input(user, "Select your undershirt", "Changing") as null|anything in GLOB.undershirt_list
if(new_undershirt)
+2 -1
View File
@@ -15,6 +15,7 @@
H.real_name = random_unique_name(H.gender)
H.name = H.real_name
H.underwear = random_underwear(H.gender)
H.underwear_color = random_short_color()
H.skin_tone = random_skin_tone()
H.hair_style = random_hair_style(H.gender)
H.facial_hair_style = random_facial_hair_style(H.gender)
@@ -36,4 +37,4 @@
H.update_body()
H.update_hair()
H.update_body_parts()
H.update_body_parts()
+10
View File
@@ -55,6 +55,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/gender = MALE //gender of character (well duh)
var/age = 30 //age of character
var/underwear = "Nude" //underwear type
var/underwear_color = "000" //underwear color
var/undershirt = "Nude" //undershirt type
var/socks = "Nude" //socks type
var/backbag = DBACKPACK //backpack type
@@ -229,6 +230,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "<a href='?_src_=prefs;preference=rand_species'>Always Random Species: [be_random_species ? "Yes" : "No"]</A><br>"
dat += "<b>Underwear:</b><BR><a href ='?_src_=prefs;preference=underwear;task=input'>[underwear]</a><BR>"
dat += "<b>Underwear Color:</b><BR><span style='border: 1px solid #161616; background-color: #[underwear_color];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=underwear_color;task=input'>Change</a><BR>"
dat += "<b>Undershirt:</b><BR><a href ='?_src_=prefs;preference=undershirt;task=input'>[undershirt]</a><BR>"
dat += "<b>Socks:</b><BR><a href ='?_src_=prefs;preference=socks;task=input'>[socks]</a><BR>"
dat += "<b>Backpack:</b><BR><a href ='?_src_=prefs;preference=bag;task=input'>[backbag]</a><BR>"
@@ -1023,6 +1025,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
facial_hair_style = random_facial_hair_style(gender)
if("underwear")
underwear = random_underwear(gender)
if("underwear_color")
underwear_color = random_short_color()
if("undershirt")
undershirt = random_undershirt(gender)
if("socks")
@@ -1165,6 +1169,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(new_underwear)
underwear = new_underwear
if("underwear_color")
var/new_underwear_color = input(user, "Choose your character's underwear color:", "Character Preference","#"+underwear_color) as color|null
if(new_underwear_color)
underwear_color = sanitize_hexcolor(new_underwear_color)
if("undershirt")
var/new_undershirt
if(gender == MALE)
@@ -1560,6 +1569,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
character.hair_style = hair_style
character.facial_hair_style = facial_hair_style
character.underwear = underwear
character.underwear_color = underwear_color
character.undershirt = undershirt
character.socks = socks
+7 -1
View File
@@ -5,7 +5,7 @@
// You do not need to raise this if you are adding new values that have sane defaults.
// Only raise this value when changing the meaning/format/name/layout of an existing value
// where you would want the updater procs below to run
#define SAVEFILE_VERSION_MAX 23
#define SAVEFILE_VERSION_MAX 24
/*
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
@@ -109,6 +109,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
all_quirks -= "Physically Obstructive"
all_quirks -= "Neat"
all_quirks -= "NEET"
if(current_version < 24)
if (!(underwear in GLOB.underwear_list))
underwear = "Nude"
/datum/preferences/proc/load_path(ckey,filename="preferences.sav")
if(!ckey)
@@ -293,6 +296,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["hair_style_name"] >> hair_style
S["facial_style_name"] >> facial_hair_style
S["underwear"] >> underwear
S["underwear_color"] >> underwear_color
S["undershirt"] >> undershirt
S["socks"] >> socks
S["backbag"] >> backbag
@@ -380,6 +384,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age))
hair_color = sanitize_hexcolor(hair_color, 3, 0)
facial_hair_color = sanitize_hexcolor(facial_hair_color, 3, 0)
underwear_color = sanitize_hexcolor(underwear_color, 3, 0)
eye_color = sanitize_hexcolor(eye_color, 3, 0)
skin_tone = sanitize_inlist(skin_tone, GLOB.skin_tones)
backbag = sanitize_inlist(backbag, GLOB.backbaglist, initial(backbag))
@@ -433,6 +438,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["hair_style_name"] , hair_style)
WRITE_FILE(S["facial_style_name"] , facial_hair_style)
WRITE_FILE(S["underwear"] , underwear)
WRITE_FILE(S["underwear_color"] , underwear_color)
WRITE_FILE(S["undershirt"] , undershirt)
WRITE_FILE(S["socks"] , socks)
WRITE_FILE(S["backbag"] , backbag)
@@ -6,6 +6,7 @@
else
gender = pick(MALE,FEMALE)
underwear = random_underwear(gender)
underwear_color = random_short_color()
undershirt = random_undershirt(gender)
socks = random_socks()
skin_tone = random_skin_tone()
@@ -52,6 +52,7 @@
var/name //the preview name of the accessory
var/gender = NEUTER //Determines if the accessory will be skipped or included in random hair generations
var/gender_specific //Something that can be worn by either gender, but looks different on each
var/use_static //determines if the accessory will be skipped by color preferences
var/color_src = MUTCOLORS //Currently only used by mutantparts so don't worry about hair and stuff. This is the source that this accessory will get its color from. Default is MUTCOLOR, but can also be HAIR, FACEHAIR, EYECOLOR and 0 if none.
var/hasinner //Decides if this sprite has an "inner" part, such as the fleshy parts on ears.
var/locked = FALSE //Is this part locked from roundstart selection? Used for parts that apply effects
@@ -944,62 +945,26 @@
///////////////////////////
// Underwear Definitions //
///////////////////////////
/datum/sprite_accessory/underwear
icon = 'icons/mob/underwear.dmi'
use_static = FALSE
//MALE UNDERWEAR
/datum/sprite_accessory/underwear/nude
name = "Nude"
icon_state = null
gender = NEUTER
/datum/sprite_accessory/underwear/male_mankini
name = "Mankini"
icon_state = "male_mankini"
/datum/sprite_accessory/underwear/male_briefs
name = "Men's Briefs"
icon_state = "male_briefs"
gender = MALE
/datum/sprite_accessory/underwear/male_black
name = "Men's Black"
icon_state = "male_black"
gender = MALE
/datum/sprite_accessory/underwear/male_blackalt
name = "Men's Black Boxer"
icon_state = "male_blackalt"
gender = MALE
/datum/sprite_accessory/underwear/male_blue
name = "Men's Blue"
icon_state = "male_blue"
gender = MALE
/datum/sprite_accessory/underwear/male_green
name = "Men's Green"
icon_state = "male_green"
gender = MALE
/datum/sprite_accessory/underwear/male_grey
name = "Men's Grey"
icon_state = "male_grey"
gender = MALE
/datum/sprite_accessory/underwear/male_greyalt
name = "Men's Grey Boxer"
icon_state = "male_greyalt"
gender = MALE
/datum/sprite_accessory/underwear/male_hearts
name = "Men's Hearts Boxer"
icon_state = "male_hearts"
gender = MALE
/datum/sprite_accessory/underwear/male_kinky
name = "Men's Kinky"
icon_state = "male_kinky"
gender = MALE
/datum/sprite_accessory/underwear/male_red
name = "Men's Red"
icon_state = "male_red"
/datum/sprite_accessory/underwear/male_boxers
name = "Men's Boxer"
icon_state = "male_boxers"
gender = MALE
/datum/sprite_accessory/underwear/male_stripe
@@ -1007,109 +972,60 @@
icon_state = "male_stripe"
gender = MALE
/datum/sprite_accessory/underwear/male_kinky
name = "Men's Kinky"
icon_state = "male_kinky"
gender = MALE
/datum/sprite_accessory/underwear/male_mankini
name = "Mankini"
icon_state = "male_mankini"
gender = MALE
/datum/sprite_accessory/underwear/male_hearts
name = "Men's Hearts Boxer"
icon_state = "male_hearts"
gender = MALE
use_static = TRUE
/datum/sprite_accessory/underwear/male_commie
name = "Men's Striped Commie Boxer"
icon_state = "male_commie"
gender = MALE
use_static = TRUE
/datum/sprite_accessory/underwear/male_usastripe
name = "Men's Striped Freedom Boxer"
icon_state = "male_assblastusa"
gender = MALE
use_static = TRUE
/datum/sprite_accessory/underwear/male_uk
name = "Men's Striped UK Boxer"
icon_state = "male_uk"
gender = MALE
use_static = TRUE
/datum/sprite_accessory/underwear/male_white
name = "Men's White"
icon_state = "male_white"
gender = MALE
/datum/sprite_accessory/underwear/female_babydoll
name = "Babydoll"
icon_state = "female_babydoll"
//FEMALE UNDERWEAR
/datum/sprite_accessory/underwear/female_bikini
name = "Ladies' Bikini"
icon_state = "female_bikini"
gender = FEMALE
/datum/sprite_accessory/underwear/female_babyblue
name = "Ladies' Baby-Blue"
icon_state = "female_babyblue"
/datum/sprite_accessory/underwear/female_lace
name = "Ladies' Lace"
icon_state = "female_lace"
gender = FEMALE
/datum/sprite_accessory/underwear/female_black
name = "Ladies' Black"
icon_state = "female_black"
/datum/sprite_accessory/underwear/female_bralette
name = "Ladies' Bralette"
icon_state = "female_bralette"
gender = FEMALE
/datum/sprite_accessory/underwear/female_black_neko
name = "Ladies' Black Neko"
icon_state = "female_neko_black"
gender = FEMALE
/datum/sprite_accessory/underwear/female_blackalt
name = "Ladies' Black Sport"
icon_state = "female_blackalt"
gender = FEMALE
/datum/sprite_accessory/underwear/female_blue
name = "Ladies' Blue"
icon_state = "female_blue"
gender = FEMALE
/datum/sprite_accessory/underwear/female_commie
name = "Ladies' Commie"
icon_state = "female_commie"
gender = FEMALE
/datum/sprite_accessory/underwear/female_usastripe
name = "Ladies' Freedom"
icon_state = "female_assblastusa"
gender = FEMALE
/datum/sprite_accessory/underwear/female_green
name = "Ladies' Green"
icon_state = "female_green"
gender = FEMALE
/datum/sprite_accessory/underwear/female_kinky
name = "Ladies' Kinky"
icon_state = "female_kinky"
gender = FEMALE
/datum/sprite_accessory/underwear/female_pink
name = "Ladies' Pink"
icon_state = "female_pink"
gender = FEMALE
/datum/sprite_accessory/underwear/female_red
name = "Ladies' Red"
icon_state = "female_red"
gender = FEMALE
/datum/sprite_accessory/underwear/swimsuit
name = "Ladies' Swimsuit (Black)"
icon_state = "swim_black"
gender = FEMALE
/datum/sprite_accessory/underwear/swimsuit_blue
name = "Ladies' Swimsuit (Blue)"
icon_state = "swim_blue"
gender = FEMALE
/datum/sprite_accessory/underwear/swimsuit_green
name = "Ladies' Swimsuit (Green)"
icon_state = "swim_green"
gender = FEMALE
/datum/sprite_accessory/underwear/swimsuit_purple
name = "Ladies' Swimsuit (Purple)"
icon_state = "swim_purple"
gender = FEMALE
/datum/sprite_accessory/underwear/swimsuit_red
name = "Ladies' Swimsuit (Red)"
icon_state = "swim_red"
/datum/sprite_accessory/underwear/female_sport
name = "Ladies' Sport"
icon_state = "female_sport"
gender = FEMALE
/datum/sprite_accessory/underwear/female_thong
@@ -1117,30 +1033,76 @@
icon_state = "female_thong"
gender = FEMALE
/datum/sprite_accessory/underwear/female_uk
name = "Ladies' UK"
icon_state = "female_uk"
/datum/sprite_accessory/underwear/female_strapless
name = "Ladies' Strapless"
icon_state = "female_strapless"
gender = FEMALE
/datum/sprite_accessory/underwear/female_white
name = "Ladies' White"
icon_state = "female_white"
/datum/sprite_accessory/underwear/female_babydoll
name = "Babydoll"
icon_state = "female_babydoll"
gender = FEMALE
/datum/sprite_accessory/underwear/swimsuit_onepiece
name = "Ladies' One Piece Swimsuit"
icon_state = "swim_onepiece"
gender = FEMALE
/datum/sprite_accessory/underwear/swimsuit_strapless_onepiece
name = "Ladies' Strapless One Piece Swimsuit"
icon_state = "swim_strapless_onepiece"
gender = FEMALE
/datum/sprite_accessory/underwear/swimsuit_twopiece
name = "Ladies' Two Piece Swimsuit"
icon_state = "swim_twopiece"
gender = FEMALE
/datum/sprite_accessory/underwear/swimsuit_strapless_twopiece
name = "Ladies' Strapless Two Piece Swimsuit"
icon_state = "swim_strapless_twopiece"
gender = FEMALE
/datum/sprite_accessory/underwear/swimsuit_stripe
name = "Ladies' Stripe Swimsuit"
icon_state = "swim_stripe"
gender = FEMALE
/datum/sprite_accessory/underwear/female_white_neko
name = "Ladies' White Neko"
icon_state = "female_neko_white"
gender = FEMALE
use_static = TRUE
/datum/sprite_accessory/underwear/female_whitealt
name = "Ladies' White Sport"
icon_state = "female_whitealt"
/datum/sprite_accessory/underwear/female_black_neko
name = "Ladies' Black Neko"
icon_state = "female_neko_black"
gender = FEMALE
use_static = TRUE
/datum/sprite_accessory/underwear/female_yellow
name = "Ladies' Yellow"
icon_state = "female_yellow"
/datum/sprite_accessory/underwear/female_commie
name = "Ladies' Commie"
icon_state = "female_commie"
gender = FEMALE
use_static = TRUE
/datum/sprite_accessory/underwear/female_usastripe
name = "Ladies' Freedom"
icon_state = "female_assblastusa"
gender = FEMALE
use_static = TRUE
/datum/sprite_accessory/underwear/female_uk
name = "Ladies' UK"
icon_state = "female_uk"
gender = FEMALE
use_static = TRUE
/datum/sprite_accessory/underwear/female_kinky
name = "Ladies' Kinky"
icon_state = "female_kinky"
gender = FEMALE
use_static = TRUE
////////////////////////////
// Undershirt Definitions //
@@ -25,6 +25,7 @@
var/age = 30 //Player's age
var/underwear = "Nude" //Which underwear the player wants
var/underwear_color = "000"
var/undershirt = "Nude" //Which undershirt the player wants
var/socks = "Nude" //Which socks the player wants
var/backbag = DBACKPACK //Which backpack type the player has chosen.
@@ -502,8 +502,12 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if(!(NO_UNDERWEAR in species_traits))
if(H.underwear)
var/datum/sprite_accessory/underwear/underwear = GLOB.underwear_list[H.underwear]
var/mutable_appearance/underwear_overlay
if(underwear)
standing += mutable_appearance(underwear.icon, underwear.icon_state, -BODY_LAYER)
underwear_overlay = mutable_appearance(underwear.icon, underwear.icon_state, -BODY_LAYER)
if(!underwear.use_static)
underwear_overlay.color = "#" + H.underwear_color
standing += underwear_overlay
if(H.undershirt)
var/datum/sprite_accessory/undershirt/undershirt = GLOB.undershirt_list[H.undershirt]
Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 49 KiB