Underwear + setup merges (#1812)

* Manually merges 12595 and 12461.

* Moron Jon 2: Moron Boogaloo

* Makes Yosh happier
This commit is contained in:
EmperorJon
2016-05-30 19:19:45 +01:00
committed by Yoshax
parent 333603ce51
commit 741706e9e3
14 changed files with 263 additions and 399 deletions

View File

@@ -0,0 +1 @@
var/datum/gear_tweak/color/gear_tweak_free_color_choice = new()

View File

@@ -2,144 +2,55 @@
name = "None"
always_last = TRUE
/datum/category_item/underwear/bottom/briefs_white
name = "Briefs, white"
icon_state = "b1"
/datum/category_item/underwear/bottom/briefs
name = "Briefs"
icon_state = "briefs"
has_color = TRUE
/datum/category_item/underwear/bottom/briefs_white/is_default(var/gender)
/datum/category_item/underwear/bottom/briefs/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"
icon_state = "boxers_loveheart"
/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
name = "Boxers"
icon_state = "boxers"
has_color = TRUE
/datum/category_item/underwear/bottom/boxers_green_and_blue
name = "Boxers, green & blue striped"
icon_state = "b10"
icon_state = "boxers_green_and_blue"
/datum/category_item/underwear/bottom/panties_red
name = "Panties, red"
icon_state = "b11"
/datum/category_item/underwear/bottom/panties
name = "Panties"
icon_state = "panties"
has_color = TRUE
/datum/category_item/underwear/bottom/panties_white
name = "Panties, white"
icon_state = "b12"
/datum/category_item/underwear/bottom/panties_white/is_default(var/gender)
/datum/category_item/underwear/bottom/panties/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/lacy_thong
name = "Lacy thong"
icon_state = "lacy_thong"
/datum/category_item/underwear/bottom/panties_blue
name = "Panties, blue"
icon_state = "b14"
/datum/category_item/underwear/bottom/lacy_thong_alt
name = "Lacy thong, alt"
icon_state = "lacy_thong_alt"
has_color = TRUE
/datum/category_item/underwear/bottom/panties_light_black
name = "Panties, light-black"
icon_state = "b15"
/datum/category_item/underwear/bottom/panties_alt
name = "Panties, alt"
icon_state = "panties_alt"
has_color = TRUE
/datum/category_item/underwear/bottom/compression_shorts
name = "Compression shorts"
icon_state = "compression_shorts"
has_color = TRUE
/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"
icon_state = "thong"
has_color = TRUE

View File

@@ -2,57 +2,49 @@
always_last = TRUE
name = "None"
/datum/category_item/underwear/socks/white_normal
name = "Normal, white"
icon_state = "white_norm"
/datum/category_item/underwear/socks/normal
name = "Normal"
icon_state = "socks_norm"
has_color = TRUE
/datum/category_item/underwear/socks/white_short
name = "Short, white"
icon_state = "white_short"
/datum/category_item/underwear/socks/short
name = "Short"
icon_state = "socks_short"
has_color = TRUE
/datum/category_item/underwear/socks/white_knee
name = "Knee, white"
icon_state = "white_knee"
/datum/category_item/underwear/socks/thigh
name = "Thigh"
icon_state = "socks_thigh"
has_color = TRUE
/datum/category_item/underwear/socks/white_thigh
name = "Thigh, white"
icon_state = "white_thigh"
/datum/category_item/underwear/socks/knee
name = "Knee"
icon_state = "socks_knee"
has_color = TRUE
/datum/category_item/underwear/socks/black_normal
name = "Normal, black"
icon_state = "black_norm"
/datum/category_item/underwear/socks/striped_knee
name = "Knee, striped"
icon_state = "striped_knee"
has_color = TRUE
/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/striped_thigh
name = "Thigh, striped"
icon_state = "striped_thigh"
has_color = TRUE
/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/thin_thigh
name = "Thigh, thin"
icon_state = "thin_thigh"
has_color = TRUE
/datum/category_item/underwear/socks/striped_knee
name = "Knee, striped"
icon_state = "striped_knee"
/datum/category_item/underwear/socks/thin_knee
name = "Knee, thin"
icon_state = "thin_knee"
has_color = TRUE
/datum/category_item/underwear/socks/rainbow_thigh
name = "Thigh, rainbow"
@@ -64,12 +56,4 @@
/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"
icon_state = "fishnet"

View File

@@ -5,102 +5,39 @@
/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
/datum/category_item/underwear/top/bra
is_default = TRUE
name = "Bra, white"
icon_state = "t2"
name = "Bra"
icon_state = "bra"
has_color = TRUE
/datum/category_item/underwear/top/bra_white/is_default(var/gender)
/datum/category_item/underwear/top/bra/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/sports_bra
name = "Sports bra"
icon_state = "sports_bra"
has_color = TRUE
/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/sports_bra_alt
name = "Sports bra, alt"
icon_state = "sports_bra_alt"
has_color = TRUE
/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"
icon_state = "lacy_bra"
/datum/category_item/underwear/top/lacy_bra_alt
name = "Lacy bra, alt"
icon_state = "t15"
icon_state = "lacy_bra_alt"
has_color = TRUE
/datum/category_item/underwear/top/bra_lacy_violet
name = "Lacy bra, violet"
icon_state = "t16"
/datum/category_item/underwear/top/lacy_bra_alt_stripe
name = "Lacy bra, alt, stripe"
icon_state = "lacy_bra_alt_stripe"
/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"
/datum/category_item/underwear/top/halterneck_bra
name = "Halterneck bra"
icon_state = "halterneck_bra"
has_color = TRUE

View File

@@ -3,74 +3,25 @@
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/shirt
name = "Shirt"
icon_state = "undershirt"
has_color = TRUE
/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
name = "Tank top"
icon_state = "tanktop"
has_color = TRUE
/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_alt
name = "Tank top, alt"
icon_state = "tanktop_alt"
has_color = TRUE
/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"
@@ -80,44 +31,18 @@
icon_state = "shirt_nano_s"
/datum/category_item/underwear/undershirt/shirt_love_nt
name = "Shirt, I<3NT"
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
name = "Shortsleeve shirt"
icon_state = "shortsleeve"
has_color = TRUE
/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/polo_shirt
name = "Polo shirt"
icon_state = "polo"
has_color = TRUE
/datum/category_item/underwear/undershirt/sport_shirt_green
name = "Sport shirt, green"

View File

@@ -41,6 +41,12 @@ datum/category_group/underwear/dd_SortValue()
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
var/list/tweaks = list() // Underwear customizations.
var/has_color = FALSE
/datum/category_item/underwear/New()
if(has_color)
tweaks += gear_tweak_free_color_choice
/datum/category_item/underwear/dd_SortValue()
if(always_last)
@@ -50,7 +56,11 @@ datum/category_group/underwear/dd_SortValue()
/datum/category_item/underwear/proc/is_default(var/gender)
return is_default
/datum/category_item/underwear/proc/apply_to_icon(var/icon/I)
/datum/category_item/underwear/proc/generate_image(var/list/metadata)
if(!icon_state)
return
I.Blend(new /icon('icons/mob/human.dmi', icon_state), ICON_OVERLAY)
var/image/I = image(icon = 'icons/mob/human.dmi', icon_state = icon_state)
for(var/datum/gear_tweak/gt in tweaks)
gt.tweak_item(I, metadata && metadata["[gt]"] ? metadata["[gt]"] : gt.get_default())
return I

View File

@@ -17,11 +17,31 @@
for(var/datum/category_group/underwear/UWC in global_underwear.categories)
var/datum/category_item/underwear/UWI = H.all_underwear[UWC.name]
var/item_name = UWI ? UWI.name : "None"
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>"
dat += "[UWC.name]: <a href='?src=\ref[src];change_underwear=[UWC.name]'>[item_name]</a>"
if(UWI)
for(var/datum/gear_tweak/gt in UWI.tweaks)
dat += " <a href='?src=\ref[src];underwear=[UWC.name];tweak=\ref[gt]'>[gt.get_contents(get_metadata(H, UWC.name, gt))]</a>"
dat += " <a href='?src=\ref[src];remove_underwear=[UWC.name]'>(Remove)</a><br>"
dat = jointext(dat)
H << browse(dat, "window=wardrobe;size=400x200")
/obj/structure/undies_wardrobe/proc/get_metadata(var/mob/living/carbon/human/H, var/underwear_category, var/datum/gear_tweak/gt)
var/metadata = H.all_underwear_metadata[underwear_category]
if(!metadata)
metadata = list()
H.all_underwear_metadata[underwear_category] = metadata
var/tweak_data = metadata["[gt]"]
if(!tweak_data)
tweak_data = gt.get_default()
metadata["[gt]"] = tweak_data
return tweak_data
/obj/structure/undies_wardrobe/proc/set_metadata(var/mob/living/carbon/human/H, var/underwear_category, var/datum/gear_tweak/gt, var/new_metadata)
var/list/metadata = H.all_underwear_metadata[underwear_category]
metadata["[gt]"] = new_metadata
/obj/structure/undies_wardrobe/proc/human_who_can_use_underwear(var/mob/living/carbon/human/H)
if(!istype(H) || !H.species || !(H.species.appearance_flags & HAS_UNDERWEAR))
return FALSE
@@ -50,6 +70,18 @@
if(selected_underwear && CanUseTopic(H, default_state))
H.all_underwear[UWC.name] = selected_underwear
. = TRUE
else if(href_list["underwear"] && href_list["tweak"])
var/underwear = href_list["underwear"]
if(!(underwear in H.all_underwear))
return
var/datum/gear_tweak/gt = locate(href_list["tweak"])
if(!gt)
return
var/new_metadata = gt.get_metadata(usr, get_metadata(H, underwear, gt), "Wardrobe Underwear Selection")
if(new_metadata)
set_metadata(H, underwear, gt, new_metadata)
. = TRUE
if(.)
H.update_body(1)
H.update_underwear()
interact(H)

View File

@@ -1,5 +1,6 @@
/datum/preferences
var/list/all_underwear
var/list/all_underwear_metadata
/datum/category_item/player_setup_item/general/equipment
name = "Clothing"
@@ -7,11 +8,13 @@
/datum/category_item/player_setup_item/general/equipment/load_character(var/savefile/S)
S["all_underwear"] >> pref.all_underwear
S["all_underwear_metadata"] >> pref.all_underwear_metadata
S["backbag"] >> pref.backbag
S["pdachoice"] >> pref.pdachoice
/datum/category_item/player_setup_item/general/equipment/save_character(var/savefile/S)
S["all_underwear"] << pref.all_underwear
S["all_underwear_metadata"] << pref.all_underwear_metadata
S["backbag"] << pref.backbag
S["pdachoice"] << pref.pdachoice
@@ -27,15 +30,21 @@
pref.all_underwear[WRC.name] = WRI.name
break
if(!istype(pref.all_underwear_metadata))
pref.all_underwear_metadata = list()
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
pref.all_underwear -= underwear_category
else
var/datum/category_item/underwear/UWI = UWC.items_by_name[pref.all_underwear[underwear_category]]
if(!UWI)
pref.all_underwear -= UWC
pref.all_underwear -= underwear_category
for(var/underwear_metadata in pref.all_underwear_metadata)
if(!(underwear_metadata in pref.all_underwear))
pref.all_underwear_metadata -= underwear_metadata
pref.backbag = sanitize_integer(pref.backbag, 1, backbaglist.len, initial(pref.backbag))
pref.pdachoice = sanitize_integer(pref.pdachoice, 1, pdachoicelist.len, initial(pref.pdachoice))
@@ -44,12 +53,35 @@
. += "<b>Equipment:</b><br>"
for(var/datum/category_group/underwear/UWC in global_underwear.categories)
var/item_name = pref.all_underwear[UWC.name] ? pref.all_underwear[UWC.name] : "None"
. += "[UWC.name]: <a href='?src=\ref[src];change_underwear=[UWC.name]'><b>[item_name]</b></a><br>"
. += "[UWC.name]: <a href='?src=\ref[src];change_underwear=[UWC.name]'><b>[item_name]</b></a>"
var/datum/category_item/underwear/UWI = UWC.items_by_name[item_name]
if(UWI)
for(var/datum/gear_tweak/gt in UWI.tweaks)
. += " <a href='?src=\ref[src];underwear=[UWC.name];tweak=\ref[gt]'>[gt.get_contents(get_metadata(UWC.name, gt))]</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>"
return jointext(.)
/datum/category_item/player_setup_item/general/equipment/proc/get_metadata(var/underwear_category, var/datum/gear_tweak/gt)
var/metadata = pref.all_underwear_metadata[underwear_category]
if(!metadata)
metadata = list()
pref.all_underwear_metadata[underwear_category] = metadata
var/tweak_data = metadata["[gt]"]
if(!tweak_data)
tweak_data = gt.get_default()
metadata["[gt]"] = tweak_data
return tweak_data
/datum/category_item/player_setup_item/general/equipment/proc/set_metadata(var/underwear_category, var/datum/gear_tweak/gt, var/new_metadata)
var/list/metadata = pref.all_underwear_metadata[underwear_category]
metadata["[gt]"] = new_metadata
/datum/category_item/player_setup_item/general/equipment/OnTopic(var/href,var/list/href_list, var/mob/user)
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
@@ -72,4 +104,16 @@
pref.all_underwear[UWC.name] = selected_underwear.name
return TOPIC_REFRESH_UPDATE_PREVIEW
else if(href_list["underwear"] && href_list["tweak"])
var/underwear = href_list["underwear"]
if(!(underwear in pref.all_underwear))
return TOPIC_NOACTION
var/datum/gear_tweak/gt = locate(href_list["tweak"])
if(!gt)
return TOPIC_NOACTION
var/new_metadata = gt.get_metadata(usr, get_metadata(underwear, gt))
if(new_metadata)
set_metadata(underwear, gt, new_metadata)
return TOPIC_REFRESH_UPDATE_PREVIEW
return ..()

View File

@@ -17,8 +17,6 @@
* Color adjustment
*/
var/datum/gear_tweak/color/gear_tweak_free_color_choice = new()
/datum/gear_tweak/color
var/list/valid_colors
@@ -32,10 +30,10 @@ var/datum/gear_tweak/color/gear_tweak_free_color_choice = new()
/datum/gear_tweak/color/get_default()
return valid_colors ? valid_colors[1] : COLOR_GRAY
/datum/gear_tweak/color/get_metadata(var/user, var/metadata)
/datum/gear_tweak/color/get_metadata(var/user, var/metadata, var/title = "Character Preference")
if(valid_colors)
return input(user, "Choose an item color.", "Character Preference", metadata) as null|anything in valid_colors
return input(user, "Choose an item color.", "Global Preference", metadata) as color|null
return input(user, "Choose a color.", title, metadata) as null|anything in valid_colors
return input(user, "Choose a color.", title, metadata) as color|null
/datum/gear_tweak/color/tweak_item(var/obj/item/I, var/metadata)
if(valid_colors && !(metadata in valid_colors))

View File

@@ -344,10 +344,17 @@ datum/preferences
I.robotize()
character.all_underwear.Cut()
character.all_underwear_metadata.Cut()
for(var/underwear_category_name in all_underwear)
var/underwear_item_name = all_underwear[underwear_category_name]
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(underwear_category)
var/underwear_item_name = all_underwear[underwear_category_name]
character.all_underwear[underwear_category_name] = underwear_category.items_by_name[underwear_item_name]
if(all_underwear_metadata[underwear_category_name])
character.all_underwear_metadata[underwear_category_name] = all_underwear_metadata[underwear_category_name]
else
all_underwear -= underwear_category_name
if(backbag > 4 || backbag < 1)
backbag = 1 //Same as above
@@ -361,6 +368,7 @@ datum/preferences
character.force_update_limbs()
character.update_mutations(0)
character.update_body(0)
character.update_underwear(0)
character.update_hair(0)
character.update_icons()

View File

@@ -34,6 +34,7 @@
var/synthetic //If they are a synthetic (aka synthetic torso)
var/list/all_underwear = list()
var/list/all_underwear_metadata = list()
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.

View File

@@ -109,29 +109,30 @@ Please contact me on #coderbus IRC. ~Carn x
#define MUTATIONS_LAYER 1
#define DAMAGE_LAYER 2
#define SURGERY_LEVEL 3 //bs12 specific.
#define UNIFORM_LAYER 4
#define ID_LAYER 5
#define SHOES_LAYER 6
#define GLOVES_LAYER 7
#define BELT_LAYER 8
#define SUIT_LAYER 9
#define TAIL_LAYER 10 //bs12 specific. this hack is probably gonna come back to haunt me
#define GLASSES_LAYER 11
#define BELT_LAYER_ALT 12
#define SUIT_STORE_LAYER 13
#define BACK_LAYER 14
#define HAIR_LAYER 15 //TODO: make part of head layer?
#define EARS_LAYER 16
#define FACEMASK_LAYER 17
#define HEAD_LAYER 18
#define COLLAR_LAYER 19
#define HANDCUFF_LAYER 20
#define LEGCUFF_LAYER 21
#define L_HAND_LAYER 22
#define R_HAND_LAYER 23
#define FIRE_LAYER 24 //If you're on fire
#define TARGETED_LAYER 25 //BS12: Layer for the target overlay from weapon targeting system
#define TOTAL_LAYERS 25
#define UNDERWEAR_LAYER 4
#define UNIFORM_LAYER 5
#define ID_LAYER 6
#define SHOES_LAYER 7
#define GLOVES_LAYER 8
#define BELT_LAYER 9
#define SUIT_LAYER 10
#define TAIL_LAYER 11 //bs12 specific. this hack is probably gonna come back to haunt me
#define GLASSES_LAYER 12
#define BELT_LAYER_ALT 13
#define SUIT_STORE_LAYER 14
#define BACK_LAYER 15
#define HAIR_LAYER 16 //TODO: make part of head layer?
#define EARS_LAYER 17
#define FACEMASK_LAYER 18
#define HEAD_LAYER 19
#define COLLAR_LAYER 20
#define HANDCUFF_LAYER 21
#define LEGCUFF_LAYER 22
#define L_HAND_LAYER 23
#define R_HAND_LAYER 24
#define FIRE_LAYER 25 //If you're on fire
#define TARGETED_LAYER 26 //BS12: Layer for the target overlay from weapon targeting system
#define TOTAL_LAYERS 26
//////////////////////////////////
/mob/living/carbon/human
@@ -148,8 +149,12 @@ Please contact me on #coderbus IRC. ~Carn x
if (icon_update)
icon = stand_icon
for(var/image/I in overlays_standing)
overlays += I
for(var/entry in overlays_standing)
if(istype(entry, /image))
overlays += entry
else if(istype(entry, /list))
for(var/inner_entry in entry)
overlays += inner_entry
if(lying && !species.prone_icon) //Only rotate them if we're not drawing a specific icon for being prone.
var/matrix/M = matrix()
@@ -318,18 +323,24 @@ var/global/list/damage_icon_parts = list()
//END CACHED ICON GENERATION.
stand_icon.Blend(base_icon,ICON_OVERLAY)
//Underwear
if(species.appearance_flags & HAS_UNDERWEAR)
for(var/category in all_underwear)
var/datum/category_item/underwear/UW = all_underwear[category]
UW.apply_to_icon(stand_icon)
if(update_icons)
update_icons()
//tail
update_tail_showing(0)
//UNDERWEAR OVERLAY
/mob/living/carbon/human/proc/update_underwear(var/update_icons=1)
overlays_standing[UNDERWEAR_LAYER] = null
if(species.appearance_flags & HAS_UNDERWEAR)
overlays_standing[UNDERWEAR_LAYER] = list()
for(var/category in all_underwear)
var/datum/category_item/underwear/UWI = all_underwear[category]
overlays_standing[UNDERWEAR_LAYER] += UWI.generate_image(all_underwear_metadata[category])
if(update_icons) update_icons()
//HAIR OVERLAY
/mob/living/carbon/human/proc/update_hair(var/update_icons=1)
//Reset our hair
@@ -424,6 +435,7 @@ var/global/list/damage_icon_parts = list()
update_mutations(0)
update_body(0)
update_underwear(0)
update_hair(0)
update_inv_w_uniform(0)
update_inv_wear_id(0)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -41,6 +41,7 @@
#include "code\_compatibility\509\JSON Writer.dm"
#include "code\_compatibility\509\text.dm"
#include "code\_compatibility\509\type2type.dm"
#include "code\_helpers\_global_objects.dm"
#include "code\_helpers\atmospherics.dm"
#include "code\_helpers\datum_pool.dm"
#include "code\_helpers\files.dm"