diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm
index 863f33177eb..8713510fca6 100644
--- a/code/_helpers/global_lists.dm
+++ b/code/_helpers/global_lists.dm
@@ -49,7 +49,25 @@ var/global/list/skin_styles_female_list = list() //unused
var/global/list/underwear_m = list("White" = "m1", "Grey" = "m2", "Green" = "m3", "Blue" = "m4", "Black" = "m5", "Mankini" = "m6", "None") //Curse whoever made male/female underwear diffrent colours
var/global/list/underwear_f = list("Red" = "f1", "White" = "f2", "Yellow" = "f3", "Blue" = "f4", "Black" = "f5", "Thong" = "f6", "Black Sports" = "f7","White Sports" = "f8","None")
//undershirt
-var/global/list/undershirt_t = list("White Tank top" = "u1", "Black Tank top" = "u2", "Black shirt" = "u3", "White shirt" = "u4", "None")
+var/global/list/undershirt_t = list(
+ "White tank top" = "u1", "Black tank top" = "u2", "Black shirt" = "u3",
+ "White shirt" = "u4", "White shirt 2" = "shirt_white_s", "White tank top 2" = "tank_white_s",
+ "Black shirt 2" = "shirt_black_s", "Grey shirt" = "shirt_grey_s", "Heart shirt" = "lover_s",
+ "I love NT shirt" = "ilovent_s", "White shortsleeve shirt" = "whiteshortsleeve_s", "Purple shirtsleeve shirt" = "purpleshortsleeve_s",
+ "Blue shortsleeve shirt" = "blueshortsleeve_s", "Green shortsleeve shirt" = "greenshortsleeve_s", "Black shortsleeve shirt" = "blackshortsleeve_s",
+ "Blue shirt" = "blueshirt_s", "Red shirt" = "redshirt_s", "Yellow shirt" = "yellowshirt_s", "Green shirt" = "greenshirt_s",
+ "Blue polo shirt" = "bluepolo_s", "Red polo shirt" = "redpolo_s", "White polo shirt" = "whitepolo_s",
+ "Grey-yellow polo shirt" = "grayyellowpolo_s", "Fire tank top" = "tank_fire_s", "NT shirt" = "shirt_nano_s",
+ "Blue shirt 2" = "shirt_blue_s", "Red shirt 2" = "shirt_red_s", "Red tank top" = "tank_red_s", "Green shirt 2" = "shirt_green_s",
+ "Tiedye shirt" = "shirt_tiedye_s", "Green sport shirt" = "greenshirtsport_s", "Red sport shirt" = "redshirtsport_s",
+ "Blue sport shirt" = "blueshirtsport_s", "None")
+ //Socks
+var/global/list/socks_t = list(
+ "White normal" = "white_norm", "White short" = "white_short", "White knee" = "white_knee",
+ "White thigh" = "white_thigh", "Black normal" = "black_norm", "Black short" = "black_short",
+ "Black knee" = "black_knee", "Black thigh" = "black_thigh", "Thin knee" = "thin_knee",
+ "Thin thigh" = "thin_thigh", "Pantyhose" = "pantyhose", "None")
+
//Backpacks
var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt")
var/global/list/exclude_jobs = list(/datum/job/ai,/datum/job/cyborg)
diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm
index 20fa98bec7e..ab5d0f6a123 100644
--- a/code/_onclick/hud/human.dm
+++ b/code/_onclick/hud/human.dm
@@ -393,6 +393,7 @@
h_style = pick("Bedhead", "Bedhead 2", "Bedhead 3")
undershirt = null
underwear = null
+ socks = null
regenerate_icons()
/obj/screen/ling
diff --git a/code/game/objects/structures/under_wardrobe.dm b/code/game/objects/structures/under_wardrobe.dm
index edc3962cdf6..1624acce68c 100644
--- a/code/game/objects/structures/under_wardrobe.dm
+++ b/code/game/objects/structures/under_wardrobe.dm
@@ -21,12 +21,16 @@
selection = underwear_f
if("Undershirts")
selection = undershirt_t
+ if("Socks")
+ selection = socks_t
var/pick = input("Select the style") as null|anything in selection
if(pick)
if(get_dist(src,user) > 1)
return
if(utype == "Undershirts")
H.undershirt = undershirt_t[pick]
+ else if(utype == "Socks")
+ H.socks = socks_t[pick]
else
H.underwear = selection[pick]
H.update_body(1)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index dd0ea5cc2fb..c6a91faf861 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -57,6 +57,7 @@ datum/preferences
var/b_type = "A+" //blood type (not-chooseable)
var/underwear //underwear type
var/undershirt //undershirt type
+ var/socks //socks type
var/backbag = 2 //backpack type
var/h_style = "Bald" //Hair type
var/r_hair = 0 //Hair color
@@ -413,6 +414,8 @@ datum/preferences
dat += "Undershirt: [get_key_by_value(undershirt_t,undershirt)]
"
+ dat += "Socks: [get_key_by_value(socks_t,socks)]
"
+
dat += "Backpack Type:
[backbaglist[backbag]]
"
dat += "[company_name] Relation:
[nanotrasen_relation]
"
@@ -1239,6 +1242,10 @@ datum/preferences
var/r = pick(undershirt_t)
undershirt = undershirt_t[r]
ShowChoices(user)
+ if("socks")
+ var/r = pick(socks_t)
+ socks = socks_t[r]
+ ShowChoices(user)
if("eyes")
r_eyes = rand(0,255)
g_eyes = rand(0,255)
@@ -1397,6 +1404,15 @@ datum/preferences
undershirt = undershirt_options[new_undershirt]
ShowChoices(user)
+ if("socks")
+ var/list/socks_options
+ socks_options = socks_t
+
+ var/new_socks = input(user, "Choose your character's socks:", "Character Preference") as null|anything in socks_options
+ if (new_socks)
+ socks = socks_options[new_socks]
+ ShowChoices(user)
+
if("eyes")
var/new_eyes = input(user, "Choose your character's eye colour:", "Character Preference", rgb(r_eyes, g_eyes, b_eyes)) as color|null
if(new_eyes)
@@ -1771,6 +1787,8 @@ datum/preferences
character.undershirt = undershirt
+ character.socks = socks
+
if(backbag > 4 || backbag < 1)
backbag = 1 //Same as above
character.backbag = backbag
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index cc721a62eed..36783b798cc 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -152,6 +152,7 @@
S["eyes_blue"] >> b_eyes
S["underwear"] >> underwear
S["undershirt"] >> undershirt
+ S["socks"] >> socks
S["backbag"] >> backbag
S["b_type"] >> b_type
@@ -224,6 +225,10 @@
if(isnum(undershirt))
undershirt = undershirt_t[undershirt_t[undershirt]]
+ if(isnum(socks))
+ socks = socks_t[socks_t[socks]]
+
+ if(isnull(language)) language = "None"
if(isnull(alternate_languages)) alternate_languages = list()
if(isnull(spawnpoint)) spawnpoint = "Arrivals Shuttle"
if(isnull(nanotrasen_relation)) nanotrasen_relation = initial(nanotrasen_relation)
@@ -308,6 +313,7 @@
S["eyes_blue"] << b_eyes
S["underwear"] << underwear
S["undershirt"] << undershirt
+ S["socks"] << socks
S["backbag"] << backbag
S["b_type"] << b_type
S["spawnpoint"] << spawnpoint
diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm
index 36630f2382d..0ff79e2aa25 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -34,6 +34,7 @@
var/underwear = 1 //Which underwear the player wants
var/undershirt = 0 //Which undershirt the player wants.
+ var/socks = 0 //Which socks the player wants.
var/backbag = 2 //Which backpack type the player has chosen. Nothing, Satchel or Backpack.
// General information
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 6fb02ee4d5c..e634f5224be 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -337,6 +337,9 @@ var/global/list/damage_icon_parts = list()
if(undershirt && species.appearance_flags & HAS_UNDERWEAR)
stand_icon.Blend(new /icon('icons/mob/human.dmi', undershirt), ICON_OVERLAY)
+ if(socks && species.flags & HAS_UNDERWEAR)
+ stand_icon.Blend(new /icon('icons/mob/human.dmi', socks), ICON_OVERLAY)
+
if(update_icons)
update_icons()
diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm
index 00b6a3b8e4a..34546662c38 100644
--- a/code/modules/mob/new_player/preferences_setup.dm
+++ b/code/modules/mob/new_player/preferences_setup.dm
@@ -15,6 +15,7 @@ datum/preferences
randomize_skin_color()
underwear = rand(1,underwear_m.len)
undershirt = rand(1,undershirt_t.len)
+ socks = rand(1,socks_t.len)
backbag = 2
age = rand(AGE_MIN,AGE_MAX)
if(H)
@@ -248,6 +249,10 @@ datum/preferences
if(undershirt && current_species.flags & HAS_UNDERWEAR)
undershirt_s = new/icon("icon" = 'icons/mob/human.dmi', "icon_state" = undershirt)
+ var/icon/socks_s = null
+ if(socks && current_species.flags & HAS_UNDERWEAR)
+ socks_s = new/icon("icon" = 'icons/mob/human.dmi', "icon_state" = socks)
+
var/icon/clothes_s = null
if(job_civilian_low & ASSISTANT)//This gives the preview icon clothes depending on which job(if any) is set to 'high'
clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s")
@@ -685,6 +690,8 @@ datum/preferences
preview_icon.Blend(underwear_s, ICON_OVERLAY)
if(undershirt_s)
preview_icon.Blend(undershirt_s, ICON_OVERLAY)
+ if(socks_s)
+ preview_icon.Blend(socks_s, ICON_OVERLAY)
if(clothes_s)
preview_icon.Blend(clothes_s, ICON_OVERLAY)
preview_icon_front = new(preview_icon, dir = SOUTH)
@@ -693,4 +700,5 @@ datum/preferences
qdel(eyes_s)
qdel(underwear_s)
qdel(undershirt_s)
+ qdel(socks_s)
qdel(clothes_s)
diff --git a/icons/mob/human.dmi b/icons/mob/human.dmi
index 27256f307e6..86d77ba6201 100644
Binary files a/icons/mob/human.dmi and b/icons/mob/human.dmi differ