diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm
index abb5bd4de6..8b2703f916 100644
--- a/code/_helpers/global_lists.dm
+++ b/code/_helpers/global_lists.dm
@@ -53,6 +53,14 @@ var/global/list/underwear_f = list(
"Red" = "f1", "White" = "f2", "Yellow" = "f3", "Blue" = "f4", "Black" = "f5", "Thong" = "f6",
"Black Sports" = "f7","White Sports" = "f8", "Black Sports Alt" = "f9", "White Sports Alt" = "f10", "Baby Blue" = "f11", "Green" = "f12", "Pink" = "f13",
"Violet" = "f14", "Thong Alt" = "f15", "Thong Alt Violet" = "f16", "None")
+var/global/list/underwear_top = list(
+ "Red" = "f1", "White" = "f2", "Yellow" = "f3", "Blue" = "f4", "Black" = "f5", "Thong" = "f6",
+ "Black Sports" = "f7","White Sports" = "f8", "Black Sports Alt" = "f9", "White Sports Alt" = "f10", "Baby Blue" = "f11", "Green" = "f12", "Pink" = "f13",
+ "Violet" = "f14", "Thong Alt" = "f15", "Thong Alt Violet" = "f16", "None")
+var/global/list/underwear_bottom = list(
+ "Red" = "f1", "White" = "f2", "Yellow" = "f3", "Blue" = "f4", "Black" = "f5", "Thong" = "f6",
+ "Black Sports" = "f7","White Sports" = "f8", "Black Sports Alt" = "f9", "White Sports Alt" = "f10", "Baby Blue" = "f11", "Green" = "f12", "Pink" = "f13",
+ "Violet" = "f14", "Thong Alt" = "f15", "Thong Alt Violet" = "f16", "None")
//undershirt
var/global/list/undershirt_t = list(
"White tank top" = "u1", "Black tank top" = "u2", "Black shirt" = "u3",
diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm
index 2ee17dedce..751021892c 100644
--- a/code/_onclick/hud/human.dm
+++ b/code/_onclick/hud/human.dm
@@ -388,7 +388,8 @@
if(dna.species == "Human") //no more xenos losing ears/tentacles
h_style = pick("Bedhead", "Bedhead 2", "Bedhead 3")
undershirt = null
- underwear = null
+ underwear_top = null
+ underwear_bottom = null
socks = null
regenerate_icons()
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index 06eb8fd7c2..7824debd8b 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -468,7 +468,8 @@ var/list/sacrificed = list()
D.r_eyes = 200
D.g_eyes = 200
D.update_eyes()
- D.underwear = 0
+ D.underwear_top = 0
+ D.underwear_bottom = 0
D.key = ghost.key
cult.add_antagonist(D.mind)
diff --git a/code/game/objects/structures/under_wardrobe.dm b/code/game/objects/structures/under_wardrobe.dm
index 655eb5c510..d6264bac9e 100644
--- a/code/game/objects/structures/under_wardrobe.dm
+++ b/code/game/objects/structures/under_wardrobe.dm
@@ -35,7 +35,8 @@
else if(utype == "Socks")
H.socks = selection[pick]
else
- H.underwear = selection[pick]
+ H.underwear_top = selection[pick]
+ H.underwear_bottom = selection[pick]
H.update_body(1)
return 1
\ No newline at end of file
diff --git a/code/modules/client/preference_setup/general/04_equipment.dm b/code/modules/client/preference_setup/general/04_equipment.dm
index 516dd33cdd..387fc719eb 100644
--- a/code/modules/client/preference_setup/general/04_equipment.dm
+++ b/code/modules/client/preference_setup/general/04_equipment.dm
@@ -3,14 +3,16 @@
sort_order = 4
/datum/category_item/player_setup_item/general/equipment/load_character(var/savefile/S)
- S["underwear"] >> pref.underwear
+ S["underwear_top"] >> pref.underwear_top
+ S["underwear_bottom"] >> pref.underwear_bottom
S["undershirt"] >> pref.undershirt
S["socks"] >> pref.socks
S["backbag"] >> pref.backbag
S["pdachoice"] >> pref.pdachoice
/datum/category_item/player_setup_item/general/equipment/save_character(var/savefile/S)
- S["underwear"] << pref.underwear
+ S["underwear_top"] << pref.underwear_top
+ S["underwear_bottom"] << pref.underwear_bottom
S["undershirt"] << pref.undershirt
S["socks"] << pref.socks
S["backbag"] << pref.backbag
@@ -22,9 +24,12 @@
if(!islist(pref.gear)) pref.gear = list()
- var/undies = get_undies()
- if(!get_key_by_value(undies, pref.underwear))
- pref.underwear = undies[1]
+ var/undies_top = get_undies_top()
+ var/undies_bottom = get_undies_bottom()
+ if(!get_key_by_value(undies_top, pref.underwear_top))
+ pref.underwear_top = undies_top[1]
+ if(!get_key_by_value(undies_bottom, pref.underwear_bottom))
+ pref.underwear_bottom = undies_bottom[1]
if(!get_key_by_value(undershirt_t, pref.undershirt))
pref.undershirt = undershirt_t[1]
if(!get_key_by_value(socks_t, pref.socks))
@@ -32,21 +37,31 @@
/datum/category_item/player_setup_item/general/equipment/content()
. += "Equipment:
"
- . += "Underwear: [get_key_by_value(get_undies(),pref.underwear)]
"
+ . += "Underwear Top: [get_key_by_value(get_undies_top(),pref.underwear_top)]
"
+ . += "Underwear Bottom: [get_key_by_value(get_undies_bottom(),pref.underwear_bottom)]
"
. += "Undershirt: [get_key_by_value(undershirt_t,pref.undershirt)]
"
. += "Socks: [get_key_by_value(socks_t,pref.socks)]
"
. += "Backpack Type: [backbaglist[pref.backbag]]
"
. += "PDA Type: [pdachoicelist[pref.pdachoice]]
"
-/datum/category_item/player_setup_item/general/equipment/proc/get_undies()
- return pref.gender == MALE ? underwear_m : underwear_f
+/datum/category_item/player_setup_item/general/equipment/proc/get_undies_top()
+ return underwear_top
+/datum/category_item/player_setup_item/general/equipment/proc/get_undies_bottom()
+ return underwear_bottom
/datum/category_item/player_setup_item/general/equipment/OnTopic(var/href,var/list/href_list, var/mob/user)
- if(href_list["change_underwear"])
- var/underwear_options = get_undies()
- var/new_underwear = input(user, "Choose your character's underwear:", "Character Preference", get_key_by_value(get_undies(),pref.underwear)) as null|anything in underwear_options
- if(!isnull(new_underwear) && CanUseTopic(user))
- pref.underwear = underwear_options[new_underwear]
+ if(href_list["change_underwear_top"])
+ var/underwear_top_options = get_undies_top()
+ var/new_underwear_top = input(user, "Choose your character's top underwear:", "Character Preference", get_key_by_value(get_undies_top(),pref.underwear_top)) as null|anything in underwear_top_options
+ if(!isnull(new_underwear_top) && CanUseTopic(user))
+ pref.underwear_top = underwear_top_options[new_underwear_top]
+ return TOPIC_REFRESH
+
+ else if(href_list["change_underwear_bottom"])
+ var/underwear_bottom_options = get_undies_bottom()
+ var/new_underwear_bottom = input(user, "Choose your character's bottom underwear:", "Character Preference", get_key_by_value(get_undies_bottom(),pref.underwear_bottom)) as null|anything in underwear_bottom_options
+ if(!isnull(new_underwear_bottom) && CanUseTopic(user))
+ pref.underwear_bottom = underwear_bottom_options[new_underwear_bottom]
return TOPIC_REFRESH
else if(href_list["change_undershirt"])
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 73531b82e2..313e507498 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -30,7 +30,8 @@ datum/preferences
var/age = 30 //age of character
var/spawnpoint = "Arrivals Shuttle" //where this character will spawn (0-2).
var/b_type = "A+" //blood type (not-chooseable)
- var/underwear //underwear type
+ var/underwear_top
+ var/underwear_bottom
var/undershirt //undershirt type
var/socks //socks type
var/backbag = 2 //backpack type
@@ -333,7 +334,8 @@ datum/preferences
else if(status == "mechanical")
I.robotize()
- character.underwear = underwear
+ character.underwear_bottom = underwear_bottom
+ character.underwear_top = underwear_top
character.undershirt = undershirt
character.socks = socks
diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm
index 22acad9445..2cb4ad5abf 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -32,7 +32,8 @@
var/age = 30 //Player's age (pure fluff)
var/b_type = "A+" //Player's bloodtype
- var/underwear = 1 //Which underwear the player wants
+ var/underwear_top = 1 //Which underwear the player wants
+ var/underwear_bottom = 1
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.
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 998b7db978..6d5c3a5623 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -320,8 +320,10 @@ var/global/list/damage_icon_parts = list()
stand_icon.Blend(base_icon,ICON_OVERLAY)
//Underwear
- if(underwear && species.appearance_flags & HAS_UNDERWEAR)
- stand_icon.Blend(new /icon('icons/mob/human.dmi', underwear), ICON_OVERLAY)
+ if(underwear_top && species.appearance_flags & HAS_UNDERWEAR)
+ stand_icon.Blend(new /icon('icons/mob/human.dmi', underwear_top), ICON_OVERLAY)
+ if(underwear_bottom && species.appearance_flags & HAS_UNDERWEAR)
+ stand_icon.Blend(new /icon('icons/mob/human.dmi', underwear_bottom), ICON_OVERLAY)
if(undershirt && species.appearance_flags & HAS_UNDERWEAR)
stand_icon.Blend(new /icon('icons/mob/human.dmi', undershirt), ICON_OVERLAY)
diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm
index f7416c5024..d2687e3bb6 100644
--- a/code/modules/mob/new_player/preferences_setup.dm
+++ b/code/modules/mob/new_player/preferences_setup.dm
@@ -12,7 +12,8 @@ datum/preferences
if(current_species.flags & HAS_SKIN_COLOR)
randomize_skin_color()
if(current_species.flags & HAS_UNDERWEAR)
- underwear = rand(1,underwear_m.len)
+ underwear_top = rand(1,underwear_top.len)
+ underwear_bottom = rand(1,underwear_bottom.len)
undershirt = rand(1,undershirt_t.len)
@@ -278,9 +279,12 @@ datum/preferences
facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD)
eyes_s.Blend(facial_s, ICON_OVERLAY)
- var/icon/underwear_s = null
- if(underwear && current_species.appearance_flags & HAS_UNDERWEAR)
- underwear_s = new/icon("icon" = 'icons/mob/human.dmi', "icon_state" = underwear)
+ var/icon/underwear_top_s = null
+ if(underwear_top && current_species.appearance_flags & HAS_UNDERWEAR)
+ underwear_top_s = new/icon("icon" = 'icons/mob/human.dmi', "icon_state" = underwear_top)
+ var/icon/underwear_bottom_s = null
+ if(underwear_bottom && current_species.appearance_flags & HAS_UNDERWEAR)
+ underwear_bottom_s = new/icon("icon" = 'icons/mob/human.dmi', "icon_state" = underwear_bottom)
var/icon/undershirt_s = null
if(undershirt && current_species.appearance_flags & HAS_UNDERWEAR)
@@ -723,8 +727,10 @@ datum/preferences
preview_icon.Blend(new /icon('icons/mob/eyes.dmi', "glasses"), ICON_OVERLAY)
preview_icon.Blend(eyes_s, ICON_OVERLAY)
- if(underwear_s)
- preview_icon.Blend(underwear_s, ICON_OVERLAY)
+ if(underwear_top_s)
+ preview_icon.Blend(underwear_top_s, ICON_OVERLAY)
+ if(underwear_bottom_s)
+ preview_icon.Blend(underwear_bottom_s, ICON_OVERLAY)
if(undershirt_s)
preview_icon.Blend(undershirt_s, ICON_OVERLAY)
if(socks_s)
@@ -735,7 +741,8 @@ datum/preferences
preview_icon_side = new(preview_icon, dir = WEST)
qdel(eyes_s)
- qdel(underwear_s)
+ qdel(underwear_top_s)
+ qdel(underwear_bottom_s)
qdel(undershirt_s)
qdel(socks_s)
qdel(clothes_s)