Underwear Datums (#1794)

* One more step to bringing our preferences/setup stuff in line with Bay.

* Whoopsy

* Jon is a moron, more at 11.
This commit is contained in:
EmperorJon
2016-05-29 17:29:36 +01:00
committed by Yoshax
parent 288ae3d274
commit 5a545854a4
17 changed files with 644 additions and 166 deletions

View File

@@ -51,45 +51,7 @@ var/global/list/facial_hair_styles_male_list = list()
var/global/list/facial_hair_styles_female_list = list() var/global/list/facial_hair_styles_female_list = list()
var/global/list/skin_styles_female_list = list() //unused var/global/list/skin_styles_female_list = list() //unused
//Underwear //Underwear
var/global/list/underwear_top_t = list( var/datum/category_collection/underwear/global_underwear = new()
"Bra, Red" = "t1", "Bra, White" = "t2", "Bra, Yellow" = "t3", "Bra, Blue" = "t4", "Bra, Black" = "t5", "Lacy Bra" = "t6", "Sports Bra, Black" = "t7", "Sports Bra, White" = "t8",
"Sports Bra Alt, Black" = "t9", "Sporta Bra Alt, White" = "t10", "Bra, Baby-Blue" = "t11", "Bra, Green" = "t12", "Bra, Pink" = "t13", "Bra, Violet" = "t14",
"Lacy Bra Alt" = "t15", "Lacy Bra Alt, Violet" = "t16", "Halterneck Bra, Black" = "t17", "Halterneck Bra, Blue" = "t18", "Halterneck Bra, Green" = "t19", "Halterneck Bra, Purple" = "t20",
"Halterneck Bra, Red" = "t21", "Halterneck Bra, Teal" = "t22", "Halterneck Bra, Violet" = "t23", "Halterneck Bra, White" = "t24", "None")
var/global/list/underwear_bottom_t = list(
"Briefs, White" = "b1", "Briefs, Grey" = "b2", "Briefs, Green" = "b3", "Briefs, Blue" = "b4", "Briefs, Black" = "b5", "Boxers, Loveheart" = "b7", "Boxers, Black" = "b8",
"Boxers, Grey" = "b9", "Boxers, Green & Blue Striped" = "b10", "Panties, Red" = "b11", "Panties, White" = "b12", "Panties, Yellow" = "b13", "Panties, Blue" = "b14",
"Panties, Light-Black" = "b15", "Thong" = "b16", "Panties, Black" = "b17", "Panties Alt, White" = "b18", "Compression Shorts, Black" = "b19", "Compression Shorts, White" = "b20",
"Compression Shorts, Baby-Blue" = "b21", "Panties, Green" = "b22", "Compression Shorts, Pink" = "b23", "Thong, Violet" = "b24", "Thong Alt" = "b25", "Thong Alt, Violet" = "b26",
"Alt Thong, Black" = "b27", "Alt Thong, Blue" = "b28", "Alt Thong, Green" = "b29", "Alt Thong, Purple" = "b30", "Alt Thong, Red" = "b31", "Alt Thong, Teal" = "b32",
"Alt Thong, Violet" = "b33", "Alt Thong, White" = "b34", "None")
//undershirt
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 shortsleeve 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 striped shirt" = "shirt_stripes_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", "Striped thigh" = "striped_thigh",
"Striped knee" = "striped_knee", "Rainbow knee" = "rainbow_knee", "Rainbow thigh" = "rainbow_thigh",
"Fishnets" = "fishnet", "Thin white thigh" = "thinwhite_thigh", "Thin white knee" = "thinwhite_knee",
"Green striped thigh" = "gstriped_thigh", "Green striped knee" = "gstriped_knee",
"Purple striped thigh" = "pstriped_thigh", "Purple striped knee" = "pstriped_knee",
"Blue striped thigh" = "bstriped_thigh", "Blue striped knee" = "bstriped_knee",
"Yellow striped thigh" = "ystriped_thigh", "Yellow striped knee" = "ystriped_knee",
"Red striped thigh" = "rstriped_thigh", "Red striped knee" = "rstriped_knee",
"Orange striped thigh" = "ostriped_thigh", "Orange striped knee" = "ostriped_knee", "None")
//Backpacks //Backpacks
var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt") var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt")

View File

@@ -388,10 +388,7 @@
f_style = "Shaved" f_style = "Shaved"
if(dna.species == "Human") //no more xenos losing ears/tentacles if(dna.species == "Human") //no more xenos losing ears/tentacles
h_style = pick("Bedhead", "Bedhead 2", "Bedhead 3") h_style = pick("Bedhead", "Bedhead 2", "Bedhead 3")
undershirt = null all_underwear.Cut()
underwear_top = null
underwear_bottom = null
socks = null
regenerate_icons() regenerate_icons()
/obj/screen/ling /obj/screen/ling

View File

@@ -2,17 +2,20 @@
* Category Collection * * Category Collection *
**********************/ **********************/
/datum/category_collection /datum/category_collection
var/category_group_type // The type of categories to initialize var/category_group_type // Type of categories to initialize
var/list/datum/category_group/categories // The list of initialized categories var/list/datum/category_group/categories // List of initialized categories
var/list/datum/category_group/categories_by_name // Associative list of initialized categories, keyed by name
/datum/category_collection/New() /datum/category_collection/New()
..() ..()
categories = new() categories = new()
categories_by_name = new()
for(var/category_type in typesof(category_group_type)) for(var/category_type in typesof(category_group_type))
var/datum/category_group/category = category_type var/datum/category_group/category = category_type
if(initial(category.name)) if(initial(category.name))
category = new category(src) category = new category(src)
categories += category categories += category
categories_by_name[category.name] = category
categories = dd_sortedObjectList(categories) categories = dd_sortedObjectList(categories)
/datum/category_collection/Destroy() /datum/category_collection/Destroy()
@@ -26,20 +29,23 @@
******************/ ******************/
/datum/category_group /datum/category_group
var/name = "" var/name = ""
var/category_item_type // The type of items to initialize var/category_item_type // Type of items to initialize
var/list/datum/category_item/items // The list of initialized items var/list/datum/category_item/items // List of initialized items
var/datum/category_collection/collection // The collection this group belongs to var/list/datum/category_item/items_by_name // Associative list of initialized items, by name
var/datum/category_collection/collection // The collection this group belongs to
/datum/category_group/New(var/datum/category_collection/cc) /datum/category_group/New(var/datum/category_collection/cc)
..() ..()
collection = cc collection = cc
items = new() items = new()
items_by_name = new()
for(var/item_type in typesof(category_item_type)) for(var/item_type in typesof(category_item_type))
var/datum/category_item/item = item_type var/datum/category_item/item = item_type
if(initial(item.name)) if(initial(item.name))
item = new item(src) item = new item(src)
items += item items += item
items_by_name[item.name] = item
// For whatever reason dd_insertObjectList(items, item) doesn't insert in the correct order // For whatever reason dd_insertObjectList(items, item) doesn't insert in the correct order
// If you change this, confirm that character setup doesn't become completely unordered. // If you change this, confirm that character setup doesn't become completely unordered.

View File

@@ -0,0 +1,145 @@
/datum/category_item/underwear/bottom/none
name = "None"
always_last = TRUE
/datum/category_item/underwear/bottom/briefs_white
name = "Briefs, white"
icon_state = "b1"
/datum/category_item/underwear/bottom/briefs_white/is_default(var/gender)
return gender != FEMALE
/datum/category_item/underwear/bottom/briefs_grey
name = "Briefs, grey"
icon_state = "b2"
/datum/category_item/underwear/bottom/briefs_green
name = "Briefs, green"
icon_state = "b3"
/datum/category_item/underwear/bottom/briefs_blue
name = "Briefs, blue"
icon_state = "b4"
/datum/category_item/underwear/bottom/briefs_black
name = "Briefs, black"
icon_state = "b5"
/datum/category_item/underwear/bottom/panties_noback
name = "Panties, noback"
icon_state = "b6"
/datum/category_item/underwear/bottom/boxers_loveheart
name = "Boxers, Loveheart"
icon_state = "b7"
/datum/category_item/underwear/bottom/boxers_black
name = "Boxers, black"
icon_state = "b8"
/datum/category_item/underwear/bottom/boxers_grey
name = "Boxers, grey"
icon_state = "b9"
/datum/category_item/underwear/bottom/boxers_green_and_blue
name = "Boxers, green & blue striped"
icon_state = "b10"
/datum/category_item/underwear/bottom/panties_red
name = "Panties, red"
icon_state = "b11"
/datum/category_item/underwear/bottom/panties_white
name = "Panties, white"
icon_state = "b12"
/datum/category_item/underwear/bottom/panties_white/is_default(var/gender)
return gender == FEMALE
/datum/category_item/underwear/bottom/panties_yellow
name = "Panties, yellow"
icon_state = "b13"
/datum/category_item/underwear/bottom/panties_blue
name = "Panties, blue"
icon_state = "b14"
/datum/category_item/underwear/bottom/panties_light_black
name = "Panties, light-black"
icon_state = "b15"
/datum/category_item/underwear/bottom/thong
name = "Thong"
icon_state = "b16"
/datum/category_item/underwear/bottom/panties_black
name = "Panties, black"
icon_state = "b17"
/datum/category_item/underwear/bottom/panties_white_alt
name = "Bra, white alt"
icon_state = "b18"
/datum/category_item/underwear/bottom/compression_shorts_black
name = "Compression shorts, black"
icon_state = "b19"
/datum/category_item/underwear/bottom/compression_shorts_white
name = "Compression shorts, white"
icon_state = "b20"
/datum/category_item/underwear/bottom/compression_shorts_baby_blue
name = "Compression shorts, baby-blue"
icon_state = "b21"
/datum/category_item/underwear/bottom/panties_green
name = "Panties, green"
icon_state = "b22"
/datum/category_item/underwear/bottom/compression_shorts_pink
name = "Compression shorts, pink"
icon_state = "b23"
/datum/category_item/underwear/bottom/thong_violet
name = "Thong, violet"
icon_state = "b24"
/datum/category_item/underwear/bottom/thong_alt
name = "Thong, alt"
icon_state = "b25"
/datum/category_item/underwear/bottom/thong_violet_alt
name = "Thong, violet alt"
icon_state = "b26"
/datum/category_item/underwear/bottom/alt_thong_black
name = "Alt. thong, black"
icon_state = "b27"
/datum/category_item/underwear/bottom/alt_thong_blue
name = "Alt. thong, blue"
icon_state = "b28"
/datum/category_item/underwear/bottom/alt_thong_green
name = "Alt. thong, green"
icon_state = "b29"
/datum/category_item/underwear/bottom/alt_thong_purple
name = "Alt. thong, purple"
icon_state = "b30"
/datum/category_item/underwear/bottom/alt_thong_red
name = "Alt. thong, red"
icon_state = "b31"
/datum/category_item/underwear/bottom/alt_thong_teal
name = "Alt. thong, teal"
icon_state = "b32"
/datum/category_item/underwear/bottom/alt_thong_violet
name = "Alt. thong, violet"
icon_state = "b33"
/datum/category_item/underwear/bottom/alt_thong_white
name = "Alt. thong, white"
icon_state = "b34"

View File

@@ -0,0 +1,75 @@
/datum/category_item/underwear/socks/none
always_last = TRUE
name = "None"
/datum/category_item/underwear/socks/white_normal
name = "Normal, white"
icon_state = "white_norm"
/datum/category_item/underwear/socks/white_short
name = "Short, white"
icon_state = "white_short"
/datum/category_item/underwear/socks/white_knee
name = "Knee, white"
icon_state = "white_knee"
/datum/category_item/underwear/socks/white_thigh
name = "Thigh, white"
icon_state = "white_thigh"
/datum/category_item/underwear/socks/black_normal
name = "Normal, black"
icon_state = "black_norm"
/datum/category_item/underwear/socks/black_short
name = "Short, black"
icon_state = "black_short"
/datum/category_item/underwear/socks/black_knee
name = "Knee, black"
icon_state = "black_knee"
/datum/category_item/underwear/socks/black_thigh
name = "Thigh, black"
icon_state = "black_thigh"
/datum/category_item/underwear/socks/thin_knee
name = "Knee, thin"
icon_state = "thin_knee"
/datum/category_item/underwear/socks/thin_thigh
name = "Thigh, thin"
icon_state = "thin_thigh"
/datum/category_item/underwear/socks/pantyhose
name = "Pantyhose"
icon_state = "pantyhose"
/datum/category_item/underwear/socks/striped_thigh
name = "Thigh, striped"
icon_state = "striped_thigh"
/datum/category_item/underwear/socks/striped_knee
name = "Knee, striped"
icon_state = "striped_knee"
/datum/category_item/underwear/socks/rainbow_thigh
name = "Thigh, rainbow"
icon_state = "rainbow_thigh"
/datum/category_item/underwear/socks/rainbow_knee
name = "Knee, rainbow"
icon_state = "rainbow_knee"
/datum/category_item/underwear/socks/fishnet
name = "Fishnet"
icon_state = "fishnet"
/datum/category_item/underwear/socks/thinwhite_thigh
name = "Thigh, thin white"
icon_state = "thinwhite_thigh"
/datum/category_item/underwear/socks/thinwhite_knee
name = "Knee, thin white"
icon_state = "thinwhite_knee"

View File

@@ -0,0 +1,106 @@
/datum/category_item/underwear/top/none
name = "None"
always_last = TRUE
/datum/category_item/underwear/top/none/is_default(var/gender)
return gender != FEMALE
/datum/category_item/underwear/top/bra_red
name = "Bra, red"
icon_state = "t1"
/datum/category_item/underwear/top/bra_white
is_default = TRUE
name = "Bra, white"
icon_state = "t2"
/datum/category_item/underwear/top/bra_white/is_default(var/gender)
return gender == FEMALE
/datum/category_item/underwear/top/bra_yellow
name = "Bra, yellow"
icon_state = "t3"
/datum/category_item/underwear/top/bra_blue
name = "Bra, blue"
icon_state = "t4"
/datum/category_item/underwear/top/bra_black
name = "Bra, black"
icon_state = "t5"
/datum/category_item/underwear/top/lacy_bra
name = "Lacy bra"
icon_state = "t6"
/datum/category_item/underwear/top/sports_bra_black
name = "Sports bra, black"
icon_state = "t7"
/datum/category_item/underwear/top/sports_bra_white
name = "Sports bra, white"
icon_state = "t8"
/datum/category_item/underwear/top/sports_bra_black_alt
name = "Sports bra, black alt"
icon_state = "t9"
/datum/category_item/underwear/top/sports_bra_white_alt
name = "Sports bra, white alt"
icon_state = "t10"
/datum/category_item/underwear/top/bra_baby_blue
name = "Bra, baby blue"
icon_state = "t11"
/datum/category_item/underwear/top/bra_green
name = "Bra, green"
icon_state = "t12"
/datum/category_item/underwear/top/bra_pink
name = "Bra, pink"
icon_state = "t13"
/datum/category_item/underwear/top/bra_violet
name = "Bra, violet"
icon_state = "t14"
/datum/category_item/underwear/top/lacy_bra_alt
name = "Lacy bra, alt"
icon_state = "t15"
/datum/category_item/underwear/top/bra_lacy_violet
name = "Lacy bra, violet"
icon_state = "t16"
/datum/category_item/underwear/top/halterneck_bra_black
name = "Halterneck bra, black"
icon_state = "t17"
/datum/category_item/underwear/top/halterneck_bra_blue
name = "Halterneck bra, blue"
icon_state = "t18"
/datum/category_item/underwear/top/halterneck_bra_green
name = "Halterneck bra, green"
icon_state = "t19"
/datum/category_item/underwear/top/halterneck_bra_purple
name = "Halterneck bra, purple"
icon_state = "t20"
/datum/category_item/underwear/top/halterneck_bra_red
name = "Halterneck bra, red"
icon_state = "t21"
/datum/category_item/underwear/top/halterneck_bra_teal
name = "Halterneck bra, teal"
icon_state = "t22"
/datum/category_item/underwear/top/halterneck_bra_violet
name = "Halterneck bra, violet"
icon_state = "t23"
/datum/category_item/underwear/top/halterneck_bra_white
name = "Halterneck bra, white"
icon_state = "t24"

View File

@@ -0,0 +1,140 @@
/datum/category_item/underwear/undershirt/none
is_default = TRUE
name = "None"
always_last = TRUE
/datum/category_item/underwear/undershirt/tank_top_white
name = "Tank top, white"
icon_state = "u1"
/datum/category_item/underwear/undershirt/tank_top_white_alt
name = "Tank top, white alt"
icon_state = "tank_white_s"
/datum/category_item/underwear/undershirt/tank_top_black
name = "Tank top, black"
icon_state = "u2"
/datum/category_item/underwear/undershirt/tank_top_red
name = "Tank top, red"
icon_state = "tank_red_s"
/datum/category_item/underwear/undershirt/tank_top_fire
name = "Tank top, fire"
icon_state = "tank_fire_s"
/datum/category_item/underwear/undershirt/shirt_black
name = "Shirt, black"
icon_state = "u3"
/datum/category_item/underwear/undershirt/shirt_black_alt
name = "Shirt, black alt"
icon_state = "shirt_black_s"
/datum/category_item/underwear/undershirt/shirt_white
name = "Shirt, white"
icon_state = "u4"
/datum/category_item/underwear/undershirt/shirt_white_alt
name = "Shirt, white alt"
icon_state = "shirt_white_s"
/datum/category_item/underwear/undershirt/shirt_grey
name = "Shirt, grey"
icon_state = "shirt_grey_s"
/datum/category_item/underwear/undershirt/shirt_blue
name = "Shirt, blue"
icon_state = "blueshirt_s"
/datum/category_item/underwear/undershirt/shirt_blue_alt
name = "Shirt, blue alt"
icon_state = "shirt_blue_s"
/datum/category_item/underwear/undershirt/shirt_red
name = "Shirt, red"
icon_state = "redshirt_s"
/datum/category_item/underwear/undershirt/shirt_red_alt
name = "Shirt, red alt"
icon_state = "shirt_red_s"
/datum/category_item/underwear/undershirt/shirt_yellow
name = "Shirt, yellow"
icon_state = "yellowshirt_s"
/datum/category_item/underwear/undershirt/shirt_green
name = "Shirt, green"
icon_state = "greenshirt_s"
/datum/category_item/underwear/undershirt/shirt_green_alt
name = "Shirt, green alt"
icon_state = "shirt_green_s"
/datum/category_item/underwear/undershirt/shirt_heart
name = "Shirt, heart"
icon_state = "lover_s"
/datum/category_item/underwear/undershirt/shirt_nt
name = "Shirt, NT"
icon_state = "shirt_nano_s"
/datum/category_item/underwear/undershirt/shirt_love_nt
name = "Shirt, I<3NT"
icon_state = "lover_s"
/datum/category_item/underwear/undershirt/shortsleeve_shirt_white
name = "Shortsleeve shirt, white"
icon_state = "whiteshortsleeve_s"
/datum/category_item/underwear/undershirt/shortsleeve_shirt_purple
name = "Shortsleeve shirt, purple"
icon_state = "purpleshortsleeve_s"
/datum/category_item/underwear/undershirt/shortsleeve_shirt_blue
name = "Shortsleeve shirt, blue"
icon_state = "blueshortsleeve_s"
/datum/category_item/underwear/undershirt/shortsleeve_shirt_green
name = "Shortsleeve shirt, green"
icon_state = "greenshortsleeve_s"
/datum/category_item/underwear/undershirt/shortsleeve_shirt_black
name = "Shortsleeve shirt, black"
icon_state = "blackshortsleeve_s"
/datum/category_item/underwear/undershirt/polo_shirt_blue
name = "Polo shirt, blue"
icon_state = "bluepolo_s"
/datum/category_item/underwear/undershirt/polo_shirt_red
name = "Polo shirt, red"
icon_state = "redpolo_s"
/datum/category_item/underwear/undershirt/polo_shirt_white
name = "Polo shirt, white"
icon_state = "whitepolo_s"
/datum/category_item/underwear/undershirt/polo_shirt_grey_yellow
name = "Polo shirt, grey and yellow"
icon_state = "grayyellowpolo_s"
/datum/category_item/underwear/undershirt/sport_shirt_green
name = "Sport shirt, green"
icon_state = "greenshirtsport_s"
/datum/category_item/underwear/undershirt/sport_shirt_red
name = "Sport shirt, red"
icon_state = "redshirtsport_s"
/datum/category_item/underwear/undershirt/sport_shirt_blue
name = "Sport shirt, blue"
icon_state = "blueshirtsport_s"
/datum/category_item/underwear/undershirt/shirt_tiedye
name = "Shirt, tiedye"
icon_state = "shirt_tiedye_s"
/datum/category_item/underwear/undershirt/shirt_blue_striped
name = "Shirt, blue stripes"
icon_state = "shirt_stripes_s"

View File

@@ -0,0 +1,56 @@
/****************************
* Category Collection Setup *
****************************/
/datum/category_collection/underwear
category_group_type = /datum/category_group/underwear
/*************
* Categories *
*************/
/datum/category_group/underwear
var/sort_order // Lower sort order is applied as icons first
datum/category_group/underwear/dd_SortValue()
return sort_order
/datum/category_group/underwear/top
name = "Underwear, top"
sort_order = 1
category_item_type = /datum/category_item/underwear/top
/datum/category_group/underwear/bottom
name = "Underwear, bottom"
sort_order = 2
category_item_type = /datum/category_item/underwear/bottom
/datum/category_group/underwear/socks
name = "Socks"
sort_order = 3
category_item_type = /datum/category_item/underwear/socks
/datum/category_group/underwear/undershirt
name = "Undershirt"
sort_order = 4 // Undershirts currently have the highest sort order because they may cover both underwear and socks.
category_item_type = /datum/category_item/underwear/undershirt
/*******************
* Category entries *
*******************/
/datum/category_item/underwear
var/always_last = FALSE // Should this entry be sorte last?
var/is_default = FALSE // Should this entry be considered the default for its type?
var/icon = 'icons/mob/human.dmi' // Which icon to get the underwear from
var/icon_state // And the particular item state
/datum/category_item/underwear/dd_SortValue()
if(always_last)
return "~"+name
return name
/datum/category_item/underwear/proc/is_default(var/gender)
return is_default
/datum/category_item/underwear/proc/apply_to_icon(var/icon/I)
if(!icon_state)
return
I.Blend(new /icon('icons/mob/human.dmi', icon_state), ICON_OVERLAY)

View File

@@ -470,8 +470,7 @@ var/list/sacrificed = list()
D.r_eyes = 200 D.r_eyes = 200
D.g_eyes = 200 D.g_eyes = 200
D.update_eyes() D.update_eyes()
D.underwear_top = 0 D.all_underwear.Cut()
D.underwear_bottom = 0
D.key = ghost.key D.key = ghost.key
cult.add_antagonist(D.mind) cult.add_antagonist(D.mind)

View File

@@ -5,39 +5,51 @@
icon_state = "cabinet_closed" icon_state = "cabinet_closed"
density = 1 density = 1
/obj/structure/undies_wardrobe/attack_hand(mob/user as mob) /obj/structure/undies_wardrobe/attack_hand(var/mob/user)
src.add_fingerprint(user) if(!human_who_can_use_underwear(user))
var/mob/living/carbon/human/H = user
if(!ishuman(user) || (H.species && !(H.species.appearance_flags & HAS_UNDERWEAR)))
user << "<span class='warning'>Sadly there's nothing in here for you to wear.</span>" user << "<span class='warning'>Sadly there's nothing in here for you to wear.</span>"
return 0 return
interact(user)
var/utype = alert("Which section do you want to pick from?",,"Underwear", "Undershirts", "Socks",) /obj/structure/undies_wardrobe/interact(var/mob/living/carbon/human/H)
var/list/selection var/dat = list()
switch(utype) dat += "<b>Underwear:</b><br>"
if("Underwear") for(var/datum/category_group/underwear/UWC in global_underwear.categories)
utype = alert("Which section do you want to pick from?",, "Top", "Bottom",) var/datum/category_item/underwear/UWI = H.all_underwear[UWC.name]
switch(utype) var/item_name = UWI ? UWI.name : "None"
if("Top") dat += "[UWC.name]: <a href='?src=\ref[src];change_underwear=[UWC.name]'>[item_name]</a> <a href='?src=\ref[src];remove_underwear=[UWC.name]'>(Remove)</a><br>"
selection = underwear_top_t
if("Bottom") dat = jointext(dat)
selection = underwear_bottom_t H << browse(dat, "window=wardrobe;size=400x200")
if("Undershirts")
selection = undershirt_t /obj/structure/undies_wardrobe/proc/human_who_can_use_underwear(var/mob/living/carbon/human/H)
if("Socks") if(!istype(H) || !H.species || !(H.species.appearance_flags & HAS_UNDERWEAR))
selection = socks_t return FALSE
var/pick = input("Select the style") as null|anything in selection return TRUE
if(pick)
if(get_dist(src,user) > 1) /obj/structure/undies_wardrobe/CanUseTopic(var/user)
if(!human_who_can_use_underwear(user))
return STATUS_CLOSE
return ..()
/obj/structure/undies_wardrobe/Topic(href, href_list, state)
if(..())
return TRUE
var/mob/living/carbon/human/H = usr
if(href_list["remove_underwear"])
if(href_list["remove_underwear"] in H.all_underwear)
H.all_underwear -= href_list["remove_underwear"]
. = TRUE
else if(href_list["change_underwear"])
var/datum/category_group/underwear/UWC = global_underwear.categories_by_name[href_list["change_underwear"]]
if(!UWC)
return return
if(utype == "Undershirts") var/datum/category_item/underwear/selected_underwear = input(H, "Choose underwear:", "Choose underwear", H.all_underwear[UWC.name]) as null|anything in UWC.items
H.undershirt = selection[pick] if(selected_underwear && CanUseTopic(H, default_state))
else if(utype == "Socks") H.all_underwear[UWC.name] = selected_underwear
H.socks = selection[pick] . = TRUE
else if(utype == "Top") if(.)
H.underwear_top = selection[pick]
else
H.underwear_bottom = selection[pick]
H.update_body(1) H.update_body(1)
interact(H)
return 1

View File

@@ -1,82 +1,57 @@
/datum/preferences
var/list/all_underwear
/datum/category_item/player_setup_item/general/equipment /datum/category_item/player_setup_item/general/equipment
name = "Clothing" name = "Clothing"
sort_order = 4 sort_order = 4
/datum/category_item/player_setup_item/general/equipment/load_character(var/savefile/S) /datum/category_item/player_setup_item/general/equipment/load_character(var/savefile/S)
S["underwear_top"] >> pref.underwear_top S["all_underwear"] >> pref.all_underwear
S["underwear_bottom"] >> pref.underwear_bottom
S["undershirt"] >> pref.undershirt
S["socks"] >> pref.socks
S["backbag"] >> pref.backbag S["backbag"] >> pref.backbag
S["pdachoice"] >> pref.pdachoice S["pdachoice"] >> pref.pdachoice
/datum/category_item/player_setup_item/general/equipment/save_character(var/savefile/S) /datum/category_item/player_setup_item/general/equipment/save_character(var/savefile/S)
S["underwear_top"] << pref.underwear_top S["all_underwear"] << pref.all_underwear
S["underwear_bottom"] << pref.underwear_bottom
S["undershirt"] << pref.undershirt
S["socks"] << pref.socks
S["backbag"] << pref.backbag S["backbag"] << pref.backbag
S["pdachoice"] << pref.pdachoice S["pdachoice"] << pref.pdachoice
/datum/category_item/player_setup_item/general/equipment/sanitize_character() /datum/category_item/player_setup_item/general/equipment/sanitize_character()
if(!islist(pref.gear)) pref.gear = list()
if(!istype(pref.all_underwear))
pref.all_underwear = list()
for(var/datum/category_group/underwear/WRC in global_underwear.categories)
for(var/datum/category_item/underwear/WRI in WRC.items)
if(WRI.is_default(pref.identifying_gender ? pref.identifying_gender : MALE))
pref.all_underwear[WRC.name] = WRI.name
break
for(var/underwear_category in pref.all_underwear)
var/datum/category_group/underwear/UWC = global_underwear.categories_by_name[underwear_category]
if(!UWC)
pref.all_underwear -= UWC
else
var/datum/category_item/underwear/UWI = UWC.items_by_name[pref.all_underwear[underwear_category]]
if(!UWI)
pref.all_underwear -= UWC
pref.backbag = sanitize_integer(pref.backbag, 1, backbaglist.len, initial(pref.backbag)) pref.backbag = sanitize_integer(pref.backbag, 1, backbaglist.len, initial(pref.backbag))
pref.pdachoice = sanitize_integer(pref.pdachoice, 1, pdachoicelist.len, initial(pref.pdachoice)) pref.pdachoice = sanitize_integer(pref.pdachoice, 1, pdachoicelist.len, initial(pref.pdachoice))
if(!islist(pref.gear)) pref.gear = list()
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))
pref.socks = socks_t[1]
/datum/category_item/player_setup_item/general/equipment/content() /datum/category_item/player_setup_item/general/equipment/content()
. = list()
. += "<b>Equipment:</b><br>" . += "<b>Equipment:</b><br>"
. += "Underwear Top: <a href='?src=\ref[src];change_underwear_top=1'><b>[get_key_by_value(get_undies_top(),pref.underwear_top)]</b></a><br>" for(var/datum/category_group/underwear/UWC in global_underwear.categories)
. += "Underwear Bottom: <a href='?src=\ref[src];change_underwear_bottom=1'><b>[get_key_by_value(get_undies_bottom(),pref.underwear_bottom)]</b></a><br>" var/item_name = pref.all_underwear[UWC.name] ? pref.all_underwear[UWC.name] : "None"
. += "Undershirt: <a href='?src=\ref[src];change_undershirt=1'><b>[get_key_by_value(undershirt_t,pref.undershirt)]</b></a><br>" . += "[UWC.name]: <a href='?src=\ref[src];change_underwear=[UWC.name]'><b>[item_name]</b></a><br>"
. += "Socks: <a href='?src=\ref[src];change_socks=1'><b>[get_key_by_value(socks_t,pref.socks)]</b></a><br>"
. += "Backpack Type: <a href='?src=\ref[src];change_backpack=1'><b>[backbaglist[pref.backbag]]</b></a><br>" . += "Backpack Type: <a href='?src=\ref[src];change_backpack=1'><b>[backbaglist[pref.backbag]]</b></a><br>"
. += "PDA Type: <a href='?src=\ref[src];change_pda=1'><b>[pdachoicelist[pref.pdachoice]]</b></a><br>" . += "PDA Type: <a href='?src=\ref[src];change_pda=1'><b>[pdachoicelist[pref.pdachoice]]</b></a><br>"
/datum/category_item/player_setup_item/general/equipment/proc/get_undies_top() return jointext(.)
return underwear_top_t
/datum/category_item/player_setup_item/general/equipment/proc/get_undies_bottom()
return underwear_bottom_t
/datum/category_item/player_setup_item/general/equipment/OnTopic(var/href,var/list/href_list, var/mob/user) /datum/category_item/player_setup_item/general/equipment/OnTopic(var/href,var/list/href_list, var/mob/user)
if(href_list["change_underwear_top"]) if(href_list["change_backpack"])
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_UPDATE_PREVIEW
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_UPDATE_PREVIEW
else if(href_list["change_undershirt"])
var/new_undershirt = input(user, "Choose your character's undershirt:", "Character Preference", get_key_by_value(undershirt_t,pref.undershirt)) as null|anything in undershirt_t
if(!isnull(new_undershirt) && CanUseTopic(user))
pref.undershirt = undershirt_t[new_undershirt]
return TOPIC_REFRESH_UPDATE_PREVIEW
else if(href_list["change_socks"])
var/new_socks = input(user, "Choose your character's socks:", "Character Preference", get_key_by_value(socks_t,pref.socks)) as null|anything in socks_t
if(!isnull(new_socks) && CanUseTopic(user))
pref.socks = socks_t[new_socks]
return TOPIC_REFRESH_UPDATE_PREVIEW
else if(href_list["change_backpack"])
var/new_backbag = input(user, "Choose your character's style of bag:", "Character Preference", backbaglist[pref.backbag]) as null|anything in backbaglist var/new_backbag = input(user, "Choose your character's style of bag:", "Character Preference", backbaglist[pref.backbag]) as null|anything in backbaglist
if(!isnull(new_backbag) && CanUseTopic(user)) if(!isnull(new_backbag) && CanUseTopic(user))
pref.backbag = backbaglist.Find(new_backbag) pref.backbag = backbaglist.Find(new_backbag)
@@ -87,4 +62,14 @@
if(!isnull(new_pdachoice) && CanUseTopic(user)) if(!isnull(new_pdachoice) && CanUseTopic(user))
pref.pdachoice = pdachoicelist.Find(new_pdachoice) pref.pdachoice = pdachoicelist.Find(new_pdachoice)
return TOPIC_REFRESH return TOPIC_REFRESH
return ..()
else if(href_list["change_underwear"])
var/datum/category_group/underwear/UWC = global_underwear.categories_by_name[href_list["change_underwear"]]
if(!UWC)
return
var/datum/category_item/underwear/selected_underwear = input(user, "Choose underwear:", "Character Preference", pref.all_underwear[UWC.name]) as null|anything in UWC.items
if(selected_underwear && CanUseTopic(user))
pref.all_underwear[UWC.name] = selected_underwear.name
return TOPIC_REFRESH_UPDATE_PREVIEW
return ..()

View File

@@ -63,6 +63,8 @@ var/list/gear_datums = list()
return valid_gear_choices return valid_gear_choices
/datum/category_item/player_setup_item/loadout/sanitize_character() /datum/category_item/player_setup_item/loadout/sanitize_character()
if(!islist(pref.gear))
pref.gear = list()
for(var/gear_name in pref.gear) for(var/gear_name in pref.gear)
if(!(gear_name in gear_datums)) if(!(gear_name in gear_datums))

View File

@@ -28,10 +28,6 @@ datum/preferences
var/age = 30 //age of character var/age = 30 //age of character
var/spawnpoint = "Arrivals Shuttle" //where this character will spawn (0-2). var/spawnpoint = "Arrivals Shuttle" //where this character will spawn (0-2).
var/b_type = "A+" //blood type (not-chooseable) var/b_type = "A+" //blood type (not-chooseable)
var/underwear_top
var/underwear_bottom
var/undershirt //undershirt type
var/socks //socks type
var/backbag = 2 //backpack type var/backbag = 2 //backpack type
var/pdachoice = 1 //PDA type var/pdachoice = 1 //PDA type
var/h_style = "Bald" //Hair type var/h_style = "Bald" //Hair type
@@ -347,10 +343,11 @@ datum/preferences
else if(status == "mechanical") else if(status == "mechanical")
I.robotize() I.robotize()
character.underwear_bottom = underwear_bottom character.all_underwear.Cut()
character.underwear_top = underwear_top for(var/underwear_category_name in all_underwear)
character.undershirt = undershirt var/underwear_item_name = all_underwear[underwear_category_name]
character.socks = socks var/datum/category_group/underwear/underwear_category = global_underwear.categories_by_name[underwear_category_name]
character.all_underwear[underwear_category_name] = underwear_category.items_by_name[underwear_item_name]
if(backbag > 4 || backbag < 1) if(backbag > 4 || backbag < 1)
backbag = 1 //Same as above backbag = 1 //Same as above

View File

@@ -33,10 +33,7 @@
var/b_type = "A+" //Player's bloodtype var/b_type = "A+" //Player's bloodtype
var/synthetic //If they are a synthetic (aka synthetic torso) var/synthetic //If they are a synthetic (aka synthetic torso)
var/underwear_top = 1 //Which underwear the player wants var/list/all_underwear = list()
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. var/backbag = 2 //Which backpack type the player has chosen. Nothing, Satchel or Backpack.
var/pdachoice = 1 //Which PDA type the player has chosen. Default, Slim, or Old. var/pdachoice = 1 //Which PDA type the player has chosen. Default, Slim, or Old.

View File

@@ -319,16 +319,10 @@ var/global/list/damage_icon_parts = list()
stand_icon.Blend(base_icon,ICON_OVERLAY) stand_icon.Blend(base_icon,ICON_OVERLAY)
//Underwear //Underwear
if(underwear_top && species.appearance_flags & HAS_UNDERWEAR) if(species.appearance_flags & HAS_UNDERWEAR)
stand_icon.Blend(new /icon('icons/mob/human.dmi', underwear_top), ICON_OVERLAY) for(var/category in all_underwear)
if(underwear_bottom && species.appearance_flags & HAS_UNDERWEAR) var/datum/category_item/underwear/UW = all_underwear[category]
stand_icon.Blend(new /icon('icons/mob/human.dmi', underwear_bottom), ICON_OVERLAY) UW.apply_to_icon(stand_icon)
if(undershirt && species.appearance_flags & HAS_UNDERWEAR)
stand_icon.Blend(new /icon('icons/mob/human.dmi', undershirt), ICON_OVERLAY)
if(socks && species.appearance_flags & HAS_UNDERWEAR)
stand_icon.Blend(new /icon('icons/mob/human.dmi', socks), ICON_OVERLAY)
if(update_icons) if(update_icons)
update_icons() update_icons()

View File

@@ -15,11 +15,6 @@
b_skin = rand (0,255) b_skin = rand (0,255)
if(current_species.appearance_flags & HAS_EYE_COLOR) if(current_species.appearance_flags & HAS_EYE_COLOR)
randomize_eyes_color() randomize_eyes_color()
if(current_species.appearance_flags & HAS_UNDERWEAR)
underwear_top = underwear_top_t[pick(underwear_top_t)]
underwear_bottom = underwear_bottom_t[pick(underwear_bottom_t)]
undershirt = undershirt_t[pick(undershirt_t)]
socks = socks_t[pick(socks_t)]
if(current_species.appearance_flags & HAS_HAIR_COLOR) if(current_species.appearance_flags & HAS_HAIR_COLOR)
randomize_hair_color("hair") randomize_hair_color("hair")
randomize_hair_color("facial") randomize_hair_color("facial")
@@ -27,6 +22,11 @@
r_skin = rand (0,255) r_skin = rand (0,255)
g_skin = rand (0,255) g_skin = rand (0,255)
b_skin = rand (0,255) b_skin = rand (0,255)
if(current_species.appearance_flags & HAS_UNDERWEAR)
all_underwear.Cut()
for(var/datum/category_group/underwear/WRC in global_underwear.categories)
var/datum/category_item/underwear/WRI = pick(WRC.items)
all_underwear[WRC.name] = WRI.name
backbag = rand(1,4) backbag = rand(1,4)

View File

@@ -186,6 +186,11 @@
#include "code\datums\repositories\cameras.dm" #include "code\datums\repositories\cameras.dm"
#include "code\datums\repositories\crew.dm" #include "code\datums\repositories\crew.dm"
#include "code\datums\repositories\repository.dm" #include "code\datums\repositories\repository.dm"
#include "code\datums\underwear\bottom.dm"
#include "code\datums\underwear\socks.dm"
#include "code\datums\underwear\top.dm"
#include "code\datums\underwear\undershirts.dm"
#include "code\datums\underwear\underwear.dm"
#include "code\datums\uplink\ammunition.dm" #include "code\datums\uplink\ammunition.dm"
#include "code\datums\uplink\announcements.dm" #include "code\datums\uplink\announcements.dm"
#include "code\datums\uplink\armor.dm" #include "code\datums\uplink\armor.dm"