mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 22:50:26 +01:00
[MIRROR] Adds informed default values for a bunch of preferences (to produce less outlandish random characters) (#28688)
* Adds informed default values for a bunch of preferences (to produce less outlandish random characters) * Update felinid.dm * Update lizard.dm * Update monkey.dm * [READY] the unfuckening of clothing rendering (#79784) refactors clothing visors to use the same system, including masks being toggled and stuff like riot helmets toggling using the same system and welding helmets and such adds a handler that updates all visuals in slots that an item has obscured, each visual proc calls that so you no longer have weird shit happening like having to hardcode a proc for heads where you need to also update hair, mask, glasses everytime you put on an item one thing here i could also do is make check_obscured_slots return the HIDEX flags instead of item slots, because in 99% of cases its hardcoded to be ran against specific slots (like eye code running it against the glasses slot), but maintainers didnt seem to like that :/ fuck this 2003 bullshit theres like several bugs here i fixed but i forgot them all and they are small --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com>
This commit is contained in:
co-authored by
MrMelbert
SpaceLoveSs13
parent
16854f2358
commit
52a70b1df4
@@ -28,6 +28,20 @@
|
||||
else
|
||||
return COLOR_BLACK
|
||||
|
||||
/proc/random_hair_color()
|
||||
var/static/list/natural_hair_colors = list(
|
||||
"#111111", "#362925", "#3B3831", "#41250C", "#412922",
|
||||
"#544C49", "#583322", "#593029", "#703b30", "#714721",
|
||||
"#744729", "#74482a", "#7b746e", "#855832", "#863019",
|
||||
"#8c4734", "#9F550E", "#A29A96", "#A4381C", "#B17B41",
|
||||
"#C0BAB7", "#EFE5E4", "#F7F3F1", "#FFF2D6", "#a15537",
|
||||
"#a17e61", "#b38b67", "#ba673c", "#c89f73", "#d9b380",
|
||||
"#dbc9b8", "#e1621d", "#e17d17", "#e1af93", "#f1cc8f",
|
||||
"#fbe7a1",
|
||||
)
|
||||
|
||||
return pick(natural_hair_colors)
|
||||
|
||||
/proc/random_underwear(gender)
|
||||
if(length(SSaccessories.underwear_list) == 0)
|
||||
CRASH("No underwear to choose from!")
|
||||
|
||||
@@ -42,16 +42,6 @@
|
||||
* (IE, no wacky hair styles / colors)
|
||||
*/
|
||||
/proc/randomize_human_normie(mob/living/carbon/human/human, randomize_mutations = FALSE)
|
||||
var/static/list/natural_hair_colors = list(
|
||||
"#111111", "#362925", "#3B3831", "#41250C", "#412922",
|
||||
"#544C49", "#583322", "#593029", "#703b30", "#714721",
|
||||
"#744729", "#74482a", "#7b746e", "#855832", "#863019",
|
||||
"#8c4734", "#9F550E", "#A29A96", "#A4381C", "#B17B41",
|
||||
"#C0BAB7", "#EFE5E4", "#F7F3F1", "#FFF2D6", "#a15537",
|
||||
"#a17e61", "#b38b67", "#ba673c", "#c89f73", "#d9b380",
|
||||
"#dbc9b8", "#e1621d", "#e17d17", "#e1af93", "#f1cc8f",
|
||||
"#fbe7a1",
|
||||
)
|
||||
// Sorry enbys but statistically you are not average enough
|
||||
human.gender = human.dna.species.sexes ? pick(MALE, FEMALE) : PLURAL
|
||||
human.physique = human.gender
|
||||
@@ -61,14 +51,14 @@
|
||||
human.eye_color_right = human.eye_color_left
|
||||
human.skin_tone = pick(GLOB.skin_tones)
|
||||
// No underwear generation handled here
|
||||
var/picked_color = pick(natural_hair_colors)
|
||||
var/picked_color = random_hair_color()
|
||||
human.set_haircolor(picked_color, update = FALSE)
|
||||
human.set_facial_haircolor(picked_color, update = FALSE)
|
||||
var/datum/sprite_accessory/hairstyle = SSaccessories.hairstyles_list[random_hairstyle(human.gender)]
|
||||
if(hairstyle?.natural_spawn)
|
||||
if(hairstyle && hairstyle.natural_spawn && !hairstyle.locked)
|
||||
human.set_hairstyle(hairstyle.name, update = FALSE)
|
||||
var/datum/sprite_accessory/facial_hair = SSaccessories.facial_hairstyles_list[random_facial_hairstyle(human.gender)]
|
||||
if(facial_hair?.natural_spawn)
|
||||
if(facial_hair && facial_hair.natural_spawn && !facial_hair.locked)
|
||||
human.set_facial_hairstyle(facial_hair.name, update = FALSE)
|
||||
// Normal DNA init stuff, these can generally be wacky but we care less, they're aliens after all
|
||||
human.dna.initialize_dna(newblood_type = random_blood_type(), create_mutation_blocks = randomize_mutations, randomize_features = TRUE)
|
||||
|
||||
@@ -18,16 +18,19 @@
|
||||
/// support the "use gender" option.
|
||||
#define PREFERENCE_PRIORITY_BODY_TYPE 5
|
||||
|
||||
/// Used for preferences that rely on body setup being finalized.
|
||||
#define PREFERENCE_PRORITY_LATE_BODY_TYPE 6
|
||||
|
||||
/// Equpping items based on preferences.
|
||||
/// Should happen after species and body type to make sure it looks right.
|
||||
/// Mostly redundant, but a safety net for saving/loading.
|
||||
#define PREFERENCE_PRIORITY_LOADOUT 6
|
||||
#define PREFERENCE_PRIORITY_LOADOUT 7
|
||||
|
||||
/// The priority at which names are decided, needed for proper randomization.
|
||||
#define PREFERENCE_PRIORITY_NAMES 7
|
||||
#define PREFERENCE_PRIORITY_NAMES 8
|
||||
|
||||
/// Preferences that aren't names, but change the name changes set by PREFERENCE_PRIORITY_NAMES.
|
||||
#define PREFERENCE_PRIORITY_NAME_MODIFICATIONS 8
|
||||
#define PREFERENCE_PRIORITY_NAME_MODIFICATIONS 9
|
||||
|
||||
/// The maximum preference priority, keep this updated, but don't use it for `priority`.
|
||||
#define MAX_PREFERENCE_PRIORITY PREFERENCE_PRIORITY_NAME_MODIFICATIONS
|
||||
|
||||
@@ -8,3 +8,6 @@
|
||||
|
||||
/datum/preference/numeric/age/apply_to_human(mob/living/carbon/human/target, value)
|
||||
target.age = value
|
||||
|
||||
/datum/preference/numeric/age/create_informed_default_value(datum/preferences/preferences)
|
||||
return rand(max(minimum, 21), min(maximum, 50))
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
savefile_key = "blindfold_color"
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
|
||||
/datum/preference/color/blindfold_color/create_default_value()
|
||||
return COLOR_WHITE
|
||||
|
||||
/datum/preference/color/blindfold_color/is_accessible(datum/preferences/preferences)
|
||||
if (!..(preferences))
|
||||
return FALSE
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
priority = PREFERENCE_PRIORITY_BODY_TYPE
|
||||
savefile_key = "body_type"
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
can_randomize = FALSE
|
||||
|
||||
/datum/preference/choiced/body_type/init_possible_values()
|
||||
return list(USE_GENDER, MALE, FEMALE)
|
||||
|
||||
@@ -33,6 +33,9 @@
|
||||
DMESSENGER,
|
||||
)
|
||||
|
||||
/datum/preference/choiced/backpack/create_default_value()
|
||||
return GBACKPACK
|
||||
|
||||
/datum/preference/choiced/backpack/icon_for(value)
|
||||
switch (value)
|
||||
if (GBACKPACK)
|
||||
@@ -66,6 +69,7 @@
|
||||
/datum/preference/choiced/jumpsuit
|
||||
savefile_key = "jumpsuit_style"
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
priority = PREFERENCE_PRIORITY_BODY_TYPE
|
||||
main_feature_name = "Jumpsuit"
|
||||
category = PREFERENCE_CATEGORY_CLOTHING
|
||||
should_generate_icons = TRUE
|
||||
@@ -86,6 +90,15 @@
|
||||
/datum/preference/choiced/jumpsuit/apply_to_human(mob/living/carbon/human/target, value)
|
||||
target.jumpsuit_style = value
|
||||
|
||||
/datum/preference/choiced/jumpsuit/create_informed_default_value(datum/preferences/preferences)
|
||||
switch(preferences.read_preference(/datum/preference/choiced/gender))
|
||||
if(MALE)
|
||||
return PREF_SUIT
|
||||
if(FEMALE)
|
||||
return PREF_SKIRT
|
||||
|
||||
return ..()
|
||||
|
||||
/// Socks preference
|
||||
/datum/preference/choiced/socks
|
||||
savefile_key = "socks"
|
||||
@@ -93,10 +106,14 @@
|
||||
main_feature_name = "Socks"
|
||||
category = PREFERENCE_CATEGORY_CLOTHING
|
||||
should_generate_icons = TRUE
|
||||
can_randomize = FALSE
|
||||
|
||||
/datum/preference/choiced/socks/init_possible_values()
|
||||
return assoc_to_keys_features(SSaccessories.socks_list)
|
||||
|
||||
/datum/preference/choiced/socks/create_default_value()
|
||||
return /datum/sprite_accessory/socks/nude::name
|
||||
|
||||
/datum/preference/choiced/socks/icon_for(value)
|
||||
var/static/icon/lower_half
|
||||
|
||||
@@ -114,13 +131,29 @@
|
||||
/datum/preference/choiced/undershirt
|
||||
savefile_key = "undershirt"
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
priority = PREFERENCE_PRIORITY_BODY_TYPE
|
||||
main_feature_name = "Undershirt"
|
||||
category = PREFERENCE_CATEGORY_CLOTHING
|
||||
should_generate_icons = TRUE
|
||||
can_randomize = FALSE
|
||||
|
||||
/datum/preference/choiced/undershirt/init_possible_values()
|
||||
return assoc_to_keys_features(SSaccessories.undershirt_list)
|
||||
|
||||
/datum/preference/choiced/undershirt/create_default_value()
|
||||
return /datum/sprite_accessory/undershirt/nude::name
|
||||
|
||||
/* // SKYRAT EDIT REMOVAL - sports bra doesn't exist as an undershirt. so just let this default to naked and we'll add underwear elsewhere
|
||||
/datum/preference/choiced/undershirt/create_informed_default_value(datum/preferences/preferences)
|
||||
switch(preferences.read_preference(/datum/preference/choiced/gender))
|
||||
if(MALE)
|
||||
return /datum/sprite_accessory/undershirt/nude::name
|
||||
if(FEMALE)
|
||||
return /datum/sprite_accessory/undershirt/sports_bra::name
|
||||
|
||||
return ..()
|
||||
*/ // NOVA EDIT REMOVAL END
|
||||
|
||||
/datum/preference/choiced/undershirt/icon_for(value)
|
||||
var/static/icon/body
|
||||
if (isnull(body))
|
||||
@@ -152,10 +185,14 @@
|
||||
main_feature_name = "Underwear"
|
||||
category = PREFERENCE_CATEGORY_CLOTHING
|
||||
should_generate_icons = TRUE
|
||||
can_randomize = FALSE
|
||||
|
||||
/datum/preference/choiced/underwear/init_possible_values()
|
||||
return assoc_to_keys_features(SSaccessories.underwear_list)
|
||||
|
||||
/datum/preference/choiced/underwear/create_default_value()
|
||||
return /datum/sprite_accessory/underwear/male_hearts::name
|
||||
|
||||
/datum/preference/choiced/underwear/icon_for(value)
|
||||
var/static/icon/lower_half
|
||||
|
||||
|
||||
@@ -13,3 +13,8 @@
|
||||
value = PLURAL //disregard gender preferences on this species
|
||||
*/ // SKYRAT EDIT REMOVAL END
|
||||
target.gender = value
|
||||
|
||||
/datum/preference/choiced/gender/create_informed_default_value(datum/preferences/preferences)
|
||||
// The only reason I'm limiting this to male or female
|
||||
// is that hairstyle randomization handles enbies poorly
|
||||
return pick(MALE, FEMALE)
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
should_generate_icons = TRUE
|
||||
|
||||
/datum/preference/choiced/glasses/create_default_value()
|
||||
return "Random"
|
||||
|
||||
/datum/preference/choiced/glasses/init_possible_values()
|
||||
return assoc_to_keys(GLOB.nearsighted_glasses) + "Random"
|
||||
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
savefile_key = "language"
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
|
||||
/datum/preference/choiced/language/create_default_value()
|
||||
return "Random"
|
||||
|
||||
/datum/preference/choiced/language/is_accessible(datum/preferences/preferences)
|
||||
if (!..(preferences))
|
||||
return FALSE
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
savefile_key = "prosthetic"
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
|
||||
/datum/preference/choiced/prosthetic/create_default_value()
|
||||
return "Random"
|
||||
|
||||
/datum/preference/choiced/prosthetic/init_possible_values()
|
||||
return list("Random") + GLOB.prosthetic_limb_choice
|
||||
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
savefile_key = "prosthetic_organ"
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
|
||||
/datum/preference/choiced/prosthetic_organ/create_default_value()
|
||||
return "Random"
|
||||
|
||||
/datum/preference/choiced/prosthetic_organ/init_possible_values()
|
||||
return list("Random") + GLOB.organ_choice
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
return random_eye_color()
|
||||
|
||||
/datum/preference/choiced/facial_hairstyle
|
||||
priority = PREFERENCE_PRIORITY_BODYPARTS
|
||||
priority = PREFERENCE_PRORITY_LATE_BODY_TYPE
|
||||
savefile_key = "facial_style_name"
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
category = PREFERENCE_CATEGORY_FEATURES
|
||||
@@ -69,15 +69,32 @@
|
||||
/datum/preference/choiced/facial_hairstyle/apply_to_human(mob/living/carbon/human/target, value)
|
||||
target.set_facial_hairstyle(value, update = FALSE)
|
||||
|
||||
/datum/preference/choiced/facial_hairstyle/create_default_value()
|
||||
return /datum/sprite_accessory/facial_hair/shaved::name
|
||||
|
||||
/datum/preference/choiced/facial_hairstyle/create_informed_default_value(datum/preferences/preferences)
|
||||
var/gender = preferences.read_preference(/datum/preference/choiced/gender)
|
||||
var/species_type = preferences.read_preference(/datum/preference/choiced/species)
|
||||
var/datum/species/species_real = GLOB.species_prototypes[species_type]
|
||||
if(!gender || !species_real || !species_real.sexes)
|
||||
return ..()
|
||||
|
||||
var/picked_beard = random_facial_hairstyle(gender)
|
||||
var/datum/sprite_accessory/beard_style = SSaccessories.facial_hairstyles_list[picked_beard]
|
||||
if(!beard_style || !beard_style.natural_spawn || beard_style.locked) // Invalid, go with god(bald)
|
||||
return ..()
|
||||
|
||||
return picked_beard
|
||||
|
||||
/datum/preference/choiced/facial_hairstyle/compile_constant_data()
|
||||
var/list/data = ..()
|
||||
|
||||
data[SUPPLEMENTAL_FEATURE_KEY] = "facial_hair_color"
|
||||
data[SUPPLEMENTAL_FEATURE_KEY] = /datum/preference/color/facial_hair_color::savefile_key
|
||||
|
||||
return data
|
||||
|
||||
/datum/preference/color/facial_hair_color
|
||||
priority = PREFERENCE_PRIORITY_BODYPARTS
|
||||
priority = PREFERENCE_PRORITY_LATE_BODY_TYPE // Need to happen after hair oclor is set so we can match by default
|
||||
savefile_key = "facial_hair_color"
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
category = PREFERENCE_CATEGORY_SUPPLEMENTAL_FEATURES
|
||||
@@ -86,12 +103,16 @@
|
||||
/datum/preference/color/facial_hair_color/apply_to_human(mob/living/carbon/human/target, value)
|
||||
target.set_facial_haircolor(value, update = FALSE)
|
||||
|
||||
/datum/preference/color/facial_hair_color/create_informed_default_value(datum/preferences/preferences)
|
||||
return preferences.read_preference(/datum/preference/color/hair_color) || random_hair_color()
|
||||
|
||||
/datum/preference/choiced/facial_hair_gradient
|
||||
priority = PREFERENCE_PRIORITY_BODYPARTS
|
||||
priority = PREFERENCE_PRORITY_LATE_BODY_TYPE
|
||||
category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
savefile_key = "facial_hair_gradient"
|
||||
relevant_head_flag = HEAD_FACIAL_HAIR
|
||||
can_randomize = FALSE
|
||||
|
||||
/datum/preference/choiced/facial_hair_gradient/init_possible_values()
|
||||
return assoc_to_keys_features(SSaccessories.facial_hair_gradients_list)
|
||||
@@ -100,10 +121,10 @@
|
||||
target.set_facial_hair_gradient_style(new_style = value, update = FALSE)
|
||||
|
||||
/datum/preference/choiced/facial_hair_gradient/create_default_value()
|
||||
return "None"
|
||||
return /datum/sprite_accessory/gradient/none::name
|
||||
|
||||
/datum/preference/color/facial_hair_gradient
|
||||
priority = PREFERENCE_PRIORITY_BODYPARTS
|
||||
priority = PREFERENCE_PRORITY_LATE_BODY_TYPE
|
||||
category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
savefile_key = "facial_hair_gradient_color"
|
||||
@@ -115,10 +136,10 @@
|
||||
/datum/preference/color/facial_hair_gradient/is_accessible(datum/preferences/preferences)
|
||||
if (!..(preferences))
|
||||
return FALSE
|
||||
return preferences.read_preference(/datum/preference/choiced/facial_hair_gradient) != "None"
|
||||
return preferences.read_preference(/datum/preference/choiced/facial_hair_gradient) != /datum/sprite_accessory/gradient/none::name
|
||||
|
||||
/datum/preference/color/hair_color
|
||||
priority = PREFERENCE_PRIORITY_BODYPARTS
|
||||
priority = PREFERENCE_PRIORITY_BODY_TYPE
|
||||
savefile_key = "hair_color"
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
category = PREFERENCE_CATEGORY_SUPPLEMENTAL_FEATURES
|
||||
@@ -127,8 +148,11 @@
|
||||
/datum/preference/color/hair_color/apply_to_human(mob/living/carbon/human/target, value)
|
||||
target.set_haircolor(value, update = FALSE)
|
||||
|
||||
/datum/preference/color/hair_color/create_informed_default_value(datum/preferences/preferences)
|
||||
return random_hair_color()
|
||||
|
||||
/datum/preference/choiced/hairstyle
|
||||
priority = PREFERENCE_PRIORITY_BODYPARTS
|
||||
priority = PREFERENCE_PRIORITY_BODY_TYPE // Happens after gender so we can picka hairstyle based on that
|
||||
savefile_key = "hairstyle_name"
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
category = PREFERENCE_CATEGORY_FEATURES
|
||||
@@ -146,19 +170,37 @@
|
||||
/datum/preference/choiced/hairstyle/apply_to_human(mob/living/carbon/human/target, value)
|
||||
target.set_hairstyle(value, update = FALSE)
|
||||
|
||||
/datum/preference/choiced/hairstyle/create_default_value()
|
||||
return /datum/sprite_accessory/hair/bald::name
|
||||
|
||||
/datum/preference/choiced/hairstyle/create_informed_default_value(datum/preferences/preferences)
|
||||
var/gender = preferences.read_preference(/datum/preference/choiced/gender)
|
||||
var/species_type = preferences.read_preference(/datum/preference/choiced/species)
|
||||
var/datum/species/species_real = GLOB.species_prototypes[species_type]
|
||||
if(!gender || !species_real || !species_real.sexes)
|
||||
return ..()
|
||||
|
||||
var/picked_hair = random_hairstyle(gender)
|
||||
var/datum/sprite_accessory/hair_style = SSaccessories.hairstyles_list[picked_hair]
|
||||
if(!hair_style || !hair_style.natural_spawn || hair_style.locked) // Invalid, go with god(bald)
|
||||
return ..()
|
||||
|
||||
return picked_hair
|
||||
|
||||
/datum/preference/choiced/hairstyle/compile_constant_data()
|
||||
var/list/data = ..()
|
||||
|
||||
data[SUPPLEMENTAL_FEATURE_KEY] = "hair_color"
|
||||
data[SUPPLEMENTAL_FEATURE_KEY] = /datum/preference/color/hair_color::savefile_key
|
||||
|
||||
return data
|
||||
|
||||
/datum/preference/choiced/hair_gradient
|
||||
priority = PREFERENCE_PRIORITY_BODYPARTS
|
||||
priority = PREFERENCE_PRIORITY_BODY_TYPE
|
||||
category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
savefile_key = "hair_gradient"
|
||||
relevant_head_flag = HEAD_HAIR
|
||||
can_randomize = FALSE
|
||||
|
||||
/datum/preference/choiced/hair_gradient/init_possible_values()
|
||||
return assoc_to_keys_features(SSaccessories.hair_gradients_list)
|
||||
@@ -167,10 +209,10 @@
|
||||
target.set_hair_gradient_style(new_style = value, update = FALSE)
|
||||
|
||||
/datum/preference/choiced/hair_gradient/create_default_value()
|
||||
return "None"
|
||||
return /datum/sprite_accessory/gradient/none::name
|
||||
|
||||
/datum/preference/color/hair_gradient
|
||||
priority = PREFERENCE_PRIORITY_BODYPARTS
|
||||
priority = PREFERENCE_PRIORITY_BODY_TYPE
|
||||
category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
savefile_key = "hair_gradient_color"
|
||||
@@ -182,4 +224,4 @@
|
||||
/datum/preference/color/hair_gradient/is_accessible(datum/preferences/preferences)
|
||||
if (!..(preferences))
|
||||
return FALSE
|
||||
return preferences.read_preference(/datum/preference/choiced/hair_gradient) != "None"
|
||||
return preferences.read_preference(/datum/preference/choiced/hair_gradient) != /datum/sprite_accessory/gradient/none::name
|
||||
|
||||
@@ -32,4 +32,5 @@
|
||||
/datum/preference/choiced/ears/create_default_value()
|
||||
var/datum/sprite_accessory/ears/cat/ears = /datum/sprite_accessory/ears/cat
|
||||
return initial(ears.name)
|
||||
return /datum/sprite_accessory/ears/cat::name
|
||||
*/
|
||||
|
||||
@@ -145,4 +145,5 @@
|
||||
/datum/preference/choiced/lizard_tail/create_default_value()
|
||||
var/datum/sprite_accessory/tails/lizard/smooth/tail = /datum/sprite_accessory/tails/lizard/smooth
|
||||
return initial(tail.name)
|
||||
return /datum/sprite_accessory/tails/lizard/smooth::name
|
||||
*/
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
|
||||
relevant_external_organ = /obj/item/organ/external/tail/monkey
|
||||
can_randomize = FALSE
|
||||
|
||||
/datum/preference/choiced/monkey_tail/init_possible_values()
|
||||
return assoc_to_keys_features(SSaccessories.tails_list_monkey)
|
||||
@@ -14,4 +15,5 @@
|
||||
/datum/preference/choiced/monkey_tail/create_default_value()
|
||||
var/datum/sprite_accessory/tails/monkey/default/tail = /datum/sprite_accessory/tails/monkey/default
|
||||
return initial(tail.name)
|
||||
*/ // SKYRAT EDIT REMOVAL END
|
||||
return /datum/sprite_accessory/tails/monkey/default::name
|
||||
*/
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
savefile_key = "trans_prosthetic"
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
|
||||
/datum/preference/choiced/trans_prosthetic/create_default_value()
|
||||
return "Random"
|
||||
|
||||
/datum/preference/choiced/trans_prosthetic/init_possible_values()
|
||||
return list("Random") + GLOB.part_choice_transhuman
|
||||
|
||||
|
||||
@@ -292,13 +292,13 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
return FALSE
|
||||
|
||||
// Read everything into cache
|
||||
for (var/preference_type in GLOB.preference_entries)
|
||||
var/datum/preference/preference = GLOB.preference_entries[preference_type]
|
||||
// Uses priority order as some values may rely on others for creating default values
|
||||
for (var/datum/preference/preference as anything in get_preferences_in_priority_order())
|
||||
if (preference.savefile_identifier != PREFERENCE_CHARACTER)
|
||||
continue
|
||||
|
||||
value_cache -= preference_type
|
||||
read_preference(preference_type)
|
||||
value_cache -= preference.type
|
||||
read_preference(preference.type)
|
||||
|
||||
//Character
|
||||
randomise = save_data?["randomise"]
|
||||
|
||||
@@ -82,3 +82,8 @@
|
||||
var/species_type = preferences.read_preference(/datum/preference/choiced/species)
|
||||
var/datum/species/species = new species_type
|
||||
return !(TRAIT_NO_UNDERWEAR in species.inherent_traits)
|
||||
|
||||
/datum/preference/choiced/bra/create_informed_default_value(datum/preferences/preferences)
|
||||
if(preferences.read_preference(/datum/preference/choiced/gender) == FEMALE)
|
||||
return /datum/sprite_accessory/bra/sports_bra::name
|
||||
return /datum/sprite_accessory/bra/nude::name
|
||||
|
||||
Reference in New Issue
Block a user