mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-22 04:22:39 +01:00
New Underwear (#8343)
If there is a God, then He will prevent me from clicking the green button.
This commit is contained in:
@@ -753,3 +753,4 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
||||
pref.rlimb_data[organ] = null
|
||||
while(null in pref.rlimb_data)
|
||||
pref.rlimb_data -= null*/
|
||||
|
||||
|
||||
@@ -1,18 +1,20 @@
|
||||
/datum/preferences
|
||||
var/list/all_underwear
|
||||
var/list/all_underwear_metadata
|
||||
|
||||
/datum/category_item/player_setup_item/general/equipment
|
||||
name = "Equipment"
|
||||
sort_order = 4
|
||||
|
||||
/datum/category_item/player_setup_item/general/equipment/load_character(var/savefile/S)
|
||||
S["underwear"] >> pref.underwear
|
||||
S["undershirt"] >> pref.undershirt
|
||||
S["socks"] >> pref.socks
|
||||
S["all_underwear"] >> pref.all_underwear
|
||||
S["all_underwear_metadata"] >> pref.all_underwear_metadata
|
||||
S["backbag"] >> pref.backbag
|
||||
S["backbag_style"] >> pref.backbag_style
|
||||
|
||||
/datum/category_item/player_setup_item/general/equipment/save_character(var/savefile/S)
|
||||
S["underwear"] << pref.underwear
|
||||
S["undershirt"] << pref.undershirt
|
||||
S["socks"] << pref.socks
|
||||
S["all_underwear"] << pref.all_underwear
|
||||
S["all_underwear_metadata"] << pref.all_underwear_metadata
|
||||
S["backbag"] << pref.backbag
|
||||
S["backbag_style"] << pref.backbag_style
|
||||
|
||||
@@ -20,9 +22,8 @@
|
||||
return list(
|
||||
"ss13_characters" = list(
|
||||
"vars" = list(
|
||||
"underwear",
|
||||
"undershirt",
|
||||
"socks",
|
||||
"all_underwear",
|
||||
"all_underwear_metadata",
|
||||
"backbag",
|
||||
"backbag_style"
|
||||
),
|
||||
@@ -36,9 +37,8 @@
|
||||
/datum/category_item/player_setup_item/general/equipment/gather_save_query()
|
||||
return list(
|
||||
"ss13_characters" = list(
|
||||
"underwear",
|
||||
"undershirt",
|
||||
"socks",
|
||||
"all_underwear",
|
||||
"all_underwear_metadata",
|
||||
"backbag",
|
||||
"backbag_style",
|
||||
"id" = 1,
|
||||
@@ -48,9 +48,8 @@
|
||||
|
||||
/datum/category_item/player_setup_item/general/equipment/gather_save_parameters()
|
||||
return list(
|
||||
"underwear" = pref.underwear,
|
||||
"undershirt" = pref.undershirt,
|
||||
"socks" = pref.socks,
|
||||
"all_underwear" = json_encode(pref.all_underwear),
|
||||
"all_underwear_metadata" = json_encode(pref.all_underwear_metadata),
|
||||
"backbag" = pref.backbag,
|
||||
"backbag_style" = pref.backbag_style,
|
||||
"id" = pref.current_character,
|
||||
@@ -60,58 +59,87 @@
|
||||
/datum/category_item/player_setup_item/general/equipment/sanitize_character(var/sql_load = 0)
|
||||
if (sql_load)
|
||||
pref.backbag = text2num(pref.backbag)
|
||||
pref.backbag_style = text2num(pref.backbag_style)
|
||||
if(istext(pref.all_underwear))
|
||||
var/before = pref.all_underwear
|
||||
try
|
||||
pref.all_underwear = json_decode(pref.all_underwear)
|
||||
catch(var/exception/e)
|
||||
log_debug("UNDERWEAR: Caught [e]. Initial value: [before]")
|
||||
pref.all_underwear = list()
|
||||
if(istext(pref.all_underwear_metadata))
|
||||
var/before = pref.all_underwear_metadata
|
||||
try
|
||||
pref.all_underwear_metadata = json_decode(pref.all_underwear_metadata)
|
||||
catch(var/exception/e)
|
||||
log_debug("UNDERWEAR METADATA: Caught [e]. Initial value: [before]")
|
||||
pref.all_underwear_metadata = 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.gender ? pref.gender : MALE))
|
||||
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 -= underwear_category
|
||||
else
|
||||
var/datum/category_item/underwear/UWI = UWC.items_by_name[pref.all_underwear[underwear_category]]
|
||||
if(!UWI)
|
||||
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.backbag_style = sanitize_integer(pref.backbag_style, 1, backbagstyles.len, initial(pref.backbag_style))
|
||||
|
||||
var/undies = get_undies()
|
||||
var/gender_socks = get_gender_socks()
|
||||
if(!get_key_by_value(undies, pref.underwear))
|
||||
pref.underwear = null
|
||||
if(!get_key_by_value(undershirt_t, pref.undershirt))
|
||||
pref.undershirt = undershirt_t[undershirt_t[1]]
|
||||
if(!get_key_by_value(gender_socks, pref.socks))
|
||||
pref.socks = null
|
||||
|
||||
/datum/category_item/player_setup_item/general/equipment/content()
|
||||
var/list/dat = list()
|
||||
dat += "<b>Equipment:</b><br>"
|
||||
dat += "Underwear: <a href='?src=\ref[src];change_underwear=1'><b>[get_key_by_value(get_undies(),pref.underwear)]</b></a><br>"
|
||||
dat += "Undershirt: <a href='?src=\ref[src];change_undershirt=1'><b>[get_key_by_value(undershirt_t,pref.undershirt)]</b></a><br>"
|
||||
dat += "Socks: <a href='?src=\ref[src];change_socks=1'><b>[get_key_by_value(get_gender_socks(),pref.socks)]</b></a><br>"
|
||||
dat += "Backpack Type: <a href='?src=\ref[src];change_backpack=1'><b>[backbaglist[pref.backbag]]</b></a><br>"
|
||||
dat += "Backpack Style: <a href='?src=\ref[src];change_backpack_style=1'><b>[backbagstyles[pref.backbag_style]]</b></a><br>"
|
||||
. = list()
|
||||
. += "<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>"
|
||||
|
||||
. = dat.Join()
|
||||
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>"
|
||||
|
||||
/datum/category_item/player_setup_item/general/equipment/proc/get_undies()
|
||||
return pref.gender == MALE ? underwear_m : underwear_f
|
||||
. += "<br>"
|
||||
|
||||
/datum/category_item/player_setup_item/general/equipment/proc/get_gender_socks()
|
||||
return pref.gender == MALE ? socks_m : socks_f
|
||||
. += "Backpack Type: <a href='?src=\ref[src];change_backpack=1'><b>[backbaglist[pref.backbag]]</b></a><br>"
|
||||
. += "Backpack Style: <a href='?src=\ref[src];change_backpack_style=1'><b>[backbagstyles[pref.backbag_style]]</b></a><br>"
|
||||
|
||||
return jointext(., null)
|
||||
|
||||
/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_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]
|
||||
return TOPIC_REFRESH
|
||||
|
||||
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
|
||||
|
||||
else if(href_list["change_socks"])
|
||||
var/socks_options = get_gender_socks()
|
||||
var/new_socks = input(user, "Choose your character's socks:", "Character Preference", get_key_by_value(get_gender_socks(),pref.socks)) as null|anything in socks_options
|
||||
if(!isnull(new_socks) && CanUseTopic(user))
|
||||
pref.socks = socks_options[new_socks]
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["change_backpack"])
|
||||
if(href_list["change_backpack"])
|
||||
var/new_backbag = input(user, "Choose your character's bag type:", "Character Preference", backbaglist[pref.backbag]) as null|anything in backbaglist
|
||||
if(!isnull(new_backbag) && CanUseTopic(user))
|
||||
pref.backbag = backbaglist.Find(new_backbag)
|
||||
@@ -123,4 +151,25 @@
|
||||
pref.backbag_style = backbagstyles.Find(new_backbag)
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["change_underwear"])
|
||||
var/datum/category_group/underwear/UWC = global_underwear.categories_by_name[href_list["change_underwear"]]
|
||||
if(!UWC)
|
||||
return TOPIC_NOACTION
|
||||
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
|
||||
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
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -20,8 +20,6 @@
|
||||
Color adjustment
|
||||
*/
|
||||
|
||||
var/datum/gear_tweak/color/gear_tweak_free_color_choice = new()
|
||||
|
||||
/datum/gear_tweak/color
|
||||
var/list/valid_colors
|
||||
|
||||
@@ -38,16 +36,15 @@ var/datum/gear_tweak/color/gear_tweak_free_color_choice = new()
|
||||
/datum/gear_tweak/color/get_random()
|
||||
return valid_colors ? pick(valid_colors) : 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))
|
||||
return
|
||||
I.color = metadata
|
||||
I.update_icon()
|
||||
I.color = sanitize_hexcolor(metadata, I.color)
|
||||
|
||||
/*
|
||||
Path adjustment
|
||||
|
||||
@@ -132,6 +132,9 @@
|
||||
var/sql_role = SQL_CHARACTER
|
||||
var/modified = 0
|
||||
|
||||
/datum/category_group/player_setup_category/dd_SortValue()
|
||||
return sort_order
|
||||
|
||||
/datum/category_group/player_setup_category/proc/sanitize_setup(sql_load = FALSE)
|
||||
for(var/datum/category_item/player_setup_item/PI in items)
|
||||
PI.sanitize_preferences(sql_load)
|
||||
@@ -220,6 +223,9 @@
|
||||
pref = null
|
||||
return ..()
|
||||
|
||||
/datum/category_item/player_setup_item/dd_SortValue()
|
||||
return sort_order
|
||||
|
||||
/datum/category_item/player_setup_item/proc/to_client_chat(str)
|
||||
if (pref && pref.client)
|
||||
to_chat(pref.client, str)
|
||||
|
||||
Reference in New Issue
Block a user