diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 4a54ef3c21d..f171be733e9 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -11,6 +11,8 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/underwear, underwear_list, underwear_m, underwear_f) //undershirt init_sprite_accessory_subtypes(/datum/sprite_accessory/undershirt, undershirt_list, undershirt_m, undershirt_f) + //socks + init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, socks_list, socks_m, socks_f) //Species for(var/spath in typesof(/datum/species)) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 2b7d33fe5ed..20c38174275 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -28,6 +28,14 @@ if(FEMALE) return pick(undershirt_f) else return pick(undershirt_list) +/proc/random_socks(gender) + if(!socks_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, socks_list, socks_m, socks_f) + switch(gender) + if(MALE) return pick(socks_m) + if(FEMALE) return pick(socks_f) + else return pick(socks_list) + /proc/random_hair_style(gender) switch(gender) if(MALE) return pick(hair_styles_male_list) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index b0dabb95d73..6271cceb754 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -14,6 +14,10 @@ var/global/list/underwear_f = list() //stores only underwear name var/global/list/undershirt_list = list() //stores /datum/sprite_accessory/undershirt indexed by name var/global/list/undershirt_m = list() //stores only undershirt name var/global/list/undershirt_f = list() //stores only undershirt name + //Socks +var/global/list/socks_list = list() //stores /datum/sprite_accessory/socks indexed by name +var/global/list/socks_m = list() //stores only socks name +var/global/list/socks_f = list() //stores only socks name //Backpacks var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel") //Female Uniforms diff --git a/code/game/objects/structures/dresser.dm b/code/game/objects/structures/dresser.dm index 622314f4456..bae932b1406 100644 --- a/code/game/objects/structures/dresser.dm +++ b/code/game/objects/structures/dresser.dm @@ -12,7 +12,7 @@ if(ishuman(user)) var/mob/living/carbon/human/H = user - var/choice = input(user, "Underwear or Undershirt?", "Changing") as null|anything in list("Underwear","Undershirt") + var/choice = input(user, "Underwear or Undershirt or Socks?", "Changing") as null|anything in list("Underwear","Undershirt","Socks") if(!Adjacent(user)) return @@ -26,6 +26,10 @@ var/new_undershirt = input(user, "Select your undershirt", "Changing") as null|anything in undershirt_list if(new_undershirt) H.undershirt = new_undershirt + if("Socks") + var/new_socks = input(user, "Select your socks", "Changing") as null|anything in socks_list + if(new_socks) + H.socks= new_socks add_fingerprint(H) H.update_body() \ No newline at end of file diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index db2735c7d2d..c891df37cfb 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -49,6 +49,7 @@ datum/preferences var/blood_type = "A+" //blood type (not-chooseable) var/underwear = "Nude" //underwear type var/undershirt = "Nude" //undershirt type + var/socks = "Nude" //socks type var/backbag = 2 //backpack type var/hair_style = "Bald" //Hair type var/hair_color = "000" //Hair color @@ -178,6 +179,7 @@ datum/preferences dat += "Skin Tone:
[skin_tone]
" dat += "Underwear:
[underwear]
" dat += "Undershirt:
[undershirt]
" + dat += "Socks:
[socks]
" dat += "Backpack:
[backbaglist[backbag]]
" @@ -565,6 +567,8 @@ datum/preferences underwear = random_underwear(gender) if("undershirt") undershirt = random_undershirt(gender) + if("socks") + socks = random_socks(gender) if("eyes") eye_color = random_eye_color() if("s_tone") @@ -669,6 +673,15 @@ datum/preferences if(new_undershirt) undershirt = new_undershirt + if("socks") + var/new_socks + if(gender == MALE) + new_socks = input(user, "Choose your character's socks:", "Character Preference") as null|anything in socks_m + else + new_socks = input(user, "Choose your character's socks:", "Character Preference") as null|anything in socks_f + if(new_socks) + socks = new_socks + if("eyes") var/new_eyes = input(user, "Choose your character's eye colour:", "Character Preference") as color|null if(new_eyes) @@ -724,6 +737,7 @@ datum/preferences gender = MALE underwear = random_underwear(gender) undershirt = random_undershirt(gender) + socks = random_socks(gender) facial_hair_style = random_facial_hair_style(gender) hair_style = random_hair_style(gender) @@ -832,6 +846,7 @@ datum/preferences character.facial_hair_style = facial_hair_style character.underwear = underwear character.undershirt = undershirt + character.socks = socks if(backbag > 3 || backbag < 1) backbag = 1 //Same as above diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 74562dc81e5..c1820717417 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -180,6 +180,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["facial_style_name"] >> facial_hair_style S["underwear"] >> underwear S["undershirt"] >> undershirt + S["socks"] >> socks S["backbag"] >> backbag S["mutant_color"] >> mutant_color @@ -213,11 +214,13 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car facial_hair_style = sanitize_inlist(facial_hair_style, facial_hair_styles_male_list) underwear = sanitize_inlist(underwear, underwear_m) undershirt = sanitize_inlist(undershirt, undershirt_m) + socks = sanitize_inlist(socks, socks_m) else hair_style = sanitize_inlist(hair_style, hair_styles_female_list) facial_hair_style = sanitize_inlist(facial_hair_style, facial_hair_styles_female_list) underwear = sanitize_inlist(underwear, underwear_f) undershirt = sanitize_inlist(undershirt, undershirt_f) + socks = sanitize_inlist(socks, socks_f) age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age)) hair_color = sanitize_hexcolor(hair_color, 3, 0) @@ -263,6 +266,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["facial_style_name"] << facial_hair_style S["underwear"] << underwear S["undershirt"] << undershirt + S["socks"] << socks S["backbag"] << backbag S["species"] << pref_species.name S["mutant_color"] << mutant_color diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index db7fb3a0e52..de9f0ea57c0 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -21,6 +21,7 @@ var/underwear = "Nude" //Which underwear the player wants var/undershirt = "Nude" //Which undershirt the player wants + var/socks = "Nude" //Which socks the player wants var/backbag = 2 //Which backpack type the player has chosen. Nothing, Satchel or Backpack. //Equipment slots diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index bf71ff8d60f..2becdb5b9cb 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -181,7 +181,7 @@ img_eyes_s.color = "#" + H.eye_color standing += img_eyes_s - //Underwear & Undershirts + //Underwear, Undershirts & Socks if(H.underwear) var/datum/sprite_accessory/underwear/U = underwear_list[H.underwear] if(U) @@ -195,6 +195,11 @@ else standing += image("icon"=U2.icon, "icon_state"="[U2.icon_state]_s", "layer"=-BODY_LAYER) + if(H.socks) + var/datum/sprite_accessory/socks/U3 = socks_list[H.socks] + if(U3) + standing += image("icon"=U3.icon, "icon_state"="[U3.icon_state]_s", "layer"=-BODY_LAYER) + if(standing.len) H.overlays_standing[BODY_LAYER] = standing diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 8c35bd78298..96f6240f598 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -39,7 +39,7 @@ There are several things that need to be remembered: update_base_icon_state() //Handles updating var/base_icon_state (WIP) This is used to update the mob's icon_state easily e.g. "[base_icon_state]_s" is the standing icon_state update_body() //Handles updating your mob's icon_state (using update_base_icon_state()) - as well as sprite-accessories that didn't really fit elsewhere (underwear, undershirts, lips, eyes) + as well as sprite-accessories that didn't really fit elsewhere (underwear, undershirts, socks, lips, eyes) //NOTE: update_mutantrace() is now merged into this! update_hair() //Handles updating your hair overlay (used to be update_face, but mouth and eyes were merged into update_body()) @@ -57,7 +57,7 @@ Please contact me on #coderbus IRC. ~Carnie x //Human Overlays Indexes///////// #define SPECIES_LAYER 23 // mutantrace colors... these are on a seperate layer in order to prvent -#define BODY_LAYER 22 //underwear, undershirts, eyes, lips(makeup) +#define BODY_LAYER 22 //underwear, undershirts, socks, eyes, lips(makeup) #define MUTATIONS_LAYER 21 //Tk headglows etc. #define AUGMENTS_LAYER 20 #define DAMAGE_LAYER 19 //damage indicators (cuts and burns) diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 6742c29bf6d..4a32e53f873 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -7,6 +7,7 @@ gender = pick(MALE,FEMALE) underwear = random_underwear(gender) undershirt = random_undershirt(gender) + socks = random_socks(gender) skin_tone = random_skin_tone() hair_style = random_hair_style(gender) facial_hair_style = random_facial_hair_style(gender) @@ -42,6 +43,11 @@ if(S) preview_icon.Blend(new /icon(S.icon, "[S.icon_state]_s"), ICON_OVERLAY) + if(socks) + S = socks_list[socks] + if(S) + preview_icon.Blend(new /icon(S.icon, "[S.icon_state]_s"), ICON_OVERLAY) + var/icon/eyes_s = new/icon() if(EYECOLOR in pref_species.specflags) eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "[pref_species.eyes]_s") diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index c47444be1da..e39802c47e5 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -943,3 +943,89 @@ name = "Striped Tank Top" icon_state = "tank_stripes" gender = FEMALE + +/////////////////////// +// Socks Definitions // +/////////////////////// +/datum/sprite_accessory/socks + icon = 'icons/mob/underwear.dmi' + +/datum/sprite_accessory/socks/nude + name = "Nude" + icon_state = null + gender = NEUTER + +/datum/sprite_accessory/socks/white_norm + name = "Normal White" + icon_state = "white_norm" + gender = NEUTER + +/datum/sprite_accessory/socks/black_norm + name = "Normal Black" + icon_state = "black_norm" + gender = NEUTER + +/datum/sprite_accessory/socks/white_short + name = "Short White" + icon_state = "white_short" + gender = NEUTER + +/datum/sprite_accessory/socks/black_short + name = "Short Black" + icon_state = "black_short" + gender = NEUTER + +/datum/sprite_accessory/socks/white_knee + name = "Knee-high White" + icon_state = "white_knee" + gender = NEUTER + +/datum/sprite_accessory/socks/black_knee + name = "Knee-high Black" + icon_state = "black_knee" + gender = NEUTER + +/datum/sprite_accessory/socks/thin_knee + name = "Knee-high Thin" + icon_state = "thin_knee" + gender = FEMALE + +/datum/sprite_accessory/socks/striped_knee + name = "Knee-high Striped" + icon_state = "striped_knee" + gender = NEUTER + +/datum/sprite_accessory/socks/rainbow_knee + name = "Knee-high Rainbow" + icon_state = "rainbow_knee" + gender = NEUTER + +/datum/sprite_accessory/socks/white_thigh + name = "Thigh-high White" + icon_state = "white_thigh" + gender = NEUTER + +/datum/sprite_accessory/socks/black_thigh + name = "Thigh-high Black" + icon_state = "black_thigh" + gender = NEUTER + +/datum/sprite_accessory/socks/thin_thigh + name = "Thigh-high Thin" + icon_state = "thin_thigh" + gender = FEMALE + +/datum/sprite_accessory/socks/striped_thigh + name = "Thigh-high Striped" + icon_state = "striped_thigh" + gender = NEUTER + +/datum/sprite_accessory/socks/rainbow_thigh + name = "Thigh-high Rainbow" + icon_state = "rainbow_thigh" + gender = NEUTER + +/datum/sprite_accessory/socks/pantyhose + name = "Pantyhose" + icon_state = "pantyhose" + gender = FEMALE diff --git a/icons/mob/underwear.dmi b/icons/mob/underwear.dmi index 7e161846df6..20d70585490 100644 Binary files a/icons/mob/underwear.dmi and b/icons/mob/underwear.dmi differ