diff --git a/code/__DEFINES/~skyrat_defines/preferences.dm b/code/__DEFINES/~skyrat_defines/preferences.dm
index 9fb6cd69ff3..c7007efb8a0 100644
--- a/code/__DEFINES/~skyrat_defines/preferences.dm
+++ b/code/__DEFINES/~skyrat_defines/preferences.dm
@@ -14,3 +14,10 @@
#define ORGAN_PREF_POSI_BRAIN "Positronic Brain"
#define ORGAN_PREF_MMI_BRAIN "Man-Machine Interface"
#define ORGAN_PREF_CIRCUIT_BRAIN "Circuitboard"
+
+/// Essential features for every character, don't add new prefs to this unless you can justify why the majority of characters would use it
+#define PREFERENCE_CATEGORY_CHARACTER_BASICS "character_basics"
+/// OOC per-character preferences e.g. character advert, ERP status
+#define PREFERENCE_CATEGORY_OOC_PREFS "ooc_preferences"
+/// Preferences that only apply to AI and cyborgs
+#define PREFERENCE_CATEGORY_SILICON_PREFS "silicon_preferences"
diff --git a/code/modules/client/preferences/ai_core_display.dm b/code/modules/client/preferences/ai_core_display.dm
index c2eedc03e47..23d4b4b1291 100644
--- a/code/modules/client/preferences/ai_core_display.dm
+++ b/code/modules/client/preferences/ai_core_display.dm
@@ -1,6 +1,6 @@
/// What to show on the AI screen
/datum/preference/choiced/ai_core_display
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_SILICON_PREFS // BUBBER EDIT CHANGE - Original: PREFERENCE_CATEGORY_NON_CONTEXTUAL
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "preferred_ai_core_display"
should_generate_icons = TRUE
diff --git a/code/modules/client/preferences/ai_emote_display.dm b/code/modules/client/preferences/ai_emote_display.dm
index 685887e4e49..b0472b48cb4 100644
--- a/code/modules/client/preferences/ai_emote_display.dm
+++ b/code/modules/client/preferences/ai_emote_display.dm
@@ -1,6 +1,6 @@
/// What to show on the AI monitor
/datum/preference/choiced/ai_emote_display
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_SILICON_PREFS // BUBBER EDIT CHANGE - Original: PREFERENCE_CATEGORY_NON_CONTEXTUAL
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "preferred_ai_emote_display"
should_generate_icons = TRUE
diff --git a/code/modules/client/preferences/ai_hologram_display.dm b/code/modules/client/preferences/ai_hologram_display.dm
index f82803039cc..5cc0f944e0b 100644
--- a/code/modules/client/preferences/ai_hologram_display.dm
+++ b/code/modules/client/preferences/ai_hologram_display.dm
@@ -1,6 +1,6 @@
/// What to show on the AI hologram
/datum/preference/choiced/ai_hologram_display
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_SILICON_PREFS // BUBBER EDIT CHANGE - Original: PREFERENCE_CATEGORY_NON_CONTEXTUAL
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "preferred_ai_hologram_display"
should_generate_icons = TRUE
diff --git a/code/modules/client/preferences/random.dm b/code/modules/client/preferences/random.dm
index a28c46a4c95..05ac23667ba 100644
--- a/code/modules/client/preferences/random.dm
+++ b/code/modules/client/preferences/random.dm
@@ -18,7 +18,7 @@
return RANDOM_DISABLED
/datum/preference/toggle/random_hardcore
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_OOC_PREFS // BUBBER EDIT CHANGE - Original: PREFERENCE_CATEGORY_NON_CONTEXTUAL
savefile_key = "random_hardcore"
savefile_identifier = PREFERENCE_CHARACTER
can_randomize = FALSE
diff --git a/code/modules/client/preferences/silicon_gender.dm b/code/modules/client/preferences/silicon_gender.dm
index 65d7b27b582..332d6aa9079 100644
--- a/code/modules/client/preferences/silicon_gender.dm
+++ b/code/modules/client/preferences/silicon_gender.dm
@@ -4,7 +4,7 @@
#define SILICON_NEUTER "It/Its"
/datum/preference/choiced/silicon_gender
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_SILICON_PREFS // BUBBER EDIT CHANGE - Original: PREFERENCE_CATEGORY_NON_CONTEXTUAL
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "silicon_gender"
var/static/use_character_gender = "Use character gender"
diff --git a/code/modules/client/preferences/species_features/basic.dm b/code/modules/client/preferences/species_features/basic.dm
index b33f2818bda..594e63c57a0 100644
--- a/code/modules/client/preferences/species_features/basic.dm
+++ b/code/modules/client/preferences/species_features/basic.dm
@@ -23,7 +23,7 @@
priority = PREFERENCE_PRIORITY_BODYPARTS
savefile_key = "eye_color"
savefile_identifier = PREFERENCE_CHARACTER
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS // BUBBER EDIT CHANGE - Original: PREFERENCE_CATEGORY_SECONDARY_FEATURES
relevant_head_flag = HEAD_EYECOLOR
/datum/preference/color/eye_color/apply_to_human(mob/living/carbon/human/target, value)
diff --git a/modular_skyrat/master_files/code/modules/client/preferences/brain.dm b/modular_skyrat/master_files/code/modules/client/preferences/brain.dm
index 386412d3133..6c490dd2b69 100644
--- a/modular_skyrat/master_files/code/modules/client/preferences/brain.dm
+++ b/modular_skyrat/master_files/code/modules/client/preferences/brain.dm
@@ -1,5 +1,5 @@
/datum/preference/choiced/brain_type
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_SILICON_PREFS
savefile_key = "brain_type"
savefile_identifier = PREFERENCE_CHARACTER
priority = PREFERENCE_PRIORITY_NAMES // Apply after species, cause that's super important.
diff --git a/modular_skyrat/master_files/code/modules/client/preferences/erp_preferences.dm b/modular_skyrat/master_files/code/modules/client/preferences/erp_preferences.dm
index c77508b6594..69cd36502a1 100644
--- a/modular_skyrat/master_files/code/modules/client/preferences/erp_preferences.dm
+++ b/modular_skyrat/master_files/code/modules/client/preferences/erp_preferences.dm
@@ -130,7 +130,7 @@
savefile_key = "new_genitalia_growth_pref"
/datum/preference/choiced/erp_status
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_OOC_PREFS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "erp_status_pref"
@@ -180,7 +180,7 @@
return FALSE
/datum/preference/choiced/erp_status_nc
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_OOC_PREFS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "erp_status_pref_nc"
@@ -210,7 +210,7 @@
return FALSE
/datum/preference/choiced/erp_status_v
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_OOC_PREFS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "erp_status_pref_v"
@@ -240,7 +240,7 @@
return FALSE
/datum/preference/choiced/erp_status_mechanics
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_OOC_PREFS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "erp_status_pref_mechanics"
@@ -300,7 +300,7 @@
return FALSE
/datum/preference/choiced/erp_status_hypno
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_OOC_PREFS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "erp_status_pref_hypnosis"
diff --git a/modular_skyrat/master_files/code/modules/client/preferences/flavor_text.dm b/modular_skyrat/master_files/code/modules/client/preferences/flavor_text.dm
index fbd71e61ecf..413add1b0cc 100644
--- a/modular_skyrat/master_files/code/modules/client/preferences/flavor_text.dm
+++ b/modular_skyrat/master_files/code/modules/client/preferences/flavor_text.dm
@@ -1,5 +1,5 @@
/datum/preference/text/flavor_text
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "flavor_text"
maximum_value_length = MAX_FLAVOR_LEN
@@ -8,7 +8,7 @@
target.dna.features["flavor_text"] = value
/datum/preference/text/silicon_flavor_text
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_SILICON_PREFS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "silicon_flavor_text"
maximum_value_length = MAX_FLAVOR_LEN
@@ -18,7 +18,7 @@
return FALSE // To prevent the not-implemented runtime
/datum/preference/text/ooc_notes
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_OOC_PREFS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "ooc_notes"
maximum_value_length = MAX_FLAVOR_LEN
diff --git a/modular_skyrat/master_files/code/modules/client/preferences/genitals.dm b/modular_skyrat/master_files/code/modules/client/preferences/genitals.dm
index 7bc229b0d0a..ba4d6cc9cfe 100644
--- a/modular_skyrat/master_files/code/modules/client/preferences/genitals.dm
+++ b/modular_skyrat/master_files/code/modules/client/preferences/genitals.dm
@@ -3,7 +3,7 @@
// ABSTRACT TYPES
/datum/preference/toggle/allow_genitals
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "allow_genitals_toggle"
default_value = TRUE
@@ -19,7 +19,7 @@
return erp_allowed && passed_initial_check
/datum/preference/choiced/genital
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
abstract_type = /datum/preference/choiced/genital
@@ -74,7 +74,7 @@
return assoc_to_keys_features(SSaccessories.sprite_accessories[relevant_mutant_bodypart])
/datum/preference/toggle/genital_skin_tone
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
default_value = FALSE
abstract_type = /datum/preference/toggle/genital_skin_tone
@@ -91,7 +91,7 @@
return erp_allowed && (passed_initial_check || allowed)
/datum/preference/toggle/genital_skin_color
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
default_value = FALSE
abstract_type = /datum/preference/toggle/genital_skin_color
@@ -123,7 +123,7 @@
/datum/preference/tri_color/genital
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
check_mode = TRICOLOR_CHECK_ACCESSORY
abstract_type = /datum/preference/tri_color/genital
@@ -141,7 +141,7 @@
return erp_allowed && can_color && passed_initial_check
/datum/preference/tri_bool/genital
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
check_mode = TRICOLOR_CHECK_ACCESSORY
abstract_type = /datum/preference/tri_bool/genital
diff --git a/modular_skyrat/master_files/code/modules/client/preferences/headshot.dm b/modular_skyrat/master_files/code/modules/client/preferences/headshot.dm
index cc68f9dbd99..b2f17de3322 100644
--- a/modular_skyrat/master_files/code/modules/client/preferences/headshot.dm
+++ b/modular_skyrat/master_files/code/modules/client/preferences/headshot.dm
@@ -1,7 +1,7 @@
// Hey listen! Imgur doesn't actually work, it's been tested.
/datum/preference/text/headshot
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "headshot"
maximum_value_length = MAX_MESSAGE_LEN
diff --git a/modular_skyrat/master_files/code/modules/client/preferences/mutant_parts.dm b/modular_skyrat/master_files/code/modules/client/preferences/mutant_parts.dm
index 30ac9d54b2e..d357ecc42d2 100644
--- a/modular_skyrat/master_files/code/modules/client/preferences/mutant_parts.dm
+++ b/modular_skyrat/master_files/code/modules/client/preferences/mutant_parts.dm
@@ -36,7 +36,7 @@
return ..()
/datum/preference/toggle/allow_emissives
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "allow_emissives_toggle" // no 'e' so it goes right after allow_mismatched_parts, not before
default_value = FALSE
@@ -45,7 +45,7 @@
return TRUE // we dont actually want this to do anything
/datum/preference/tri_color/mutant_colors
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "mutant_colors_color"
check_mode = TRICOLOR_NO_CHECK
@@ -58,7 +58,7 @@
/datum/preference/toggle/eye_emissives
savefile_key = "eye_emissives"
savefile_identifier = PREFERENCE_CHARACTER
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
relevant_head_flag = HEAD_EYECOLOR
/datum/preference/toggle/eye_emissives/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences)
@@ -140,24 +140,26 @@
/// Tails
/datum/preference/toggle/mutant_toggle/tail
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_key = "tail_toggle"
relevant_mutant_bodypart = "tail"
/datum/preference/choiced/mutant_choice/tail
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_key = "feature_tail"
relevant_mutant_bodypart = "tail"
type_to_check = /datum/preference/toggle/mutant_toggle/tail
default_accessory_type = /datum/sprite_accessory/tails/none
/datum/preference/tri_color/tail
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "tail_color"
relevant_mutant_bodypart = "tail"
type_to_check = /datum/preference/toggle/mutant_toggle/tail
/datum/preference/tri_bool/tail
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "tail_emissive"
relevant_mutant_bodypart = "tail"
@@ -166,10 +168,12 @@
/// Snouts
/datum/preference/toggle/mutant_toggle/snout
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_key = "snout_toggle"
relevant_mutant_bodypart = "snout"
/datum/preference/choiced/mutant_choice/snout
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_key = "feature_snout"
relevant_mutant_bodypart = "snout"
type_to_check = /datum/preference/toggle/mutant_toggle/snout
@@ -190,14 +194,14 @@
target.synchronize_bodyshapes()
/datum/preference/tri_color/snout
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "snout_color"
relevant_mutant_bodypart = "snout"
type_to_check = /datum/preference/toggle/mutant_toggle/snout
/datum/preference/tri_bool/snout
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "snout_emissive"
relevant_mutant_bodypart = "snout"
@@ -206,24 +210,26 @@
/// Horns
/datum/preference/toggle/mutant_toggle/horns
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_key = "horns_toggle"
relevant_mutant_bodypart = "horns"
/datum/preference/choiced/mutant_choice/horns
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_key = "feature_horns"
relevant_mutant_bodypart = "horns"
type_to_check = /datum/preference/toggle/mutant_toggle/horns
default_accessory_type = /datum/sprite_accessory/horns/none
/datum/preference/tri_color/horns
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "horns_color"
relevant_mutant_bodypart = "horns"
type_to_check = /datum/preference/toggle/mutant_toggle/horns
/datum/preference/tri_bool/horns
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "horns_emissive"
relevant_mutant_bodypart = "horns"
@@ -232,24 +238,26 @@
/// Ears
/datum/preference/toggle/mutant_toggle/ears
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_key = "ears_toggle"
relevant_mutant_bodypart = "ears"
/datum/preference/choiced/mutant_choice/ears
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_key = "feature_ears"
relevant_mutant_bodypart = "ears"
type_to_check = /datum/preference/toggle/mutant_toggle/ears
default_accessory_type = /datum/sprite_accessory/ears/none
/datum/preference/tri_color/ears
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "ears_color"
relevant_mutant_bodypart = "ears"
type_to_check = /datum/preference/toggle/mutant_toggle/ears
/datum/preference/tri_bool/ears
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "ears_emissive"
relevant_mutant_bodypart = "ears"
diff --git a/modular_skyrat/master_files/code/modules/client/preferences/species_features/digitigrade_legs.dm b/modular_skyrat/master_files/code/modules/client/preferences/species_features/digitigrade_legs.dm
index 85a08559c80..f1046a01ce3 100644
--- a/modular_skyrat/master_files/code/modules/client/preferences/species_features/digitigrade_legs.dm
+++ b/modular_skyrat/master_files/code/modules/client/preferences/species_features/digitigrade_legs.dm
@@ -2,7 +2,7 @@
/datum/preference/choiced/digitigrade_legs
savefile_key = "digitigrade_legs"
savefile_identifier = PREFERENCE_CHARACTER
- category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
relevant_mutant_bodypart = "legs"
diff --git a/modular_zubbers/code/modules/client/flavor_text/flavor_text.dm b/modular_zubbers/code/modules/client/flavor_text/flavor_text.dm
index a3091df0cbc..4d2a252dd73 100644
--- a/modular_zubbers/code/modules/client/flavor_text/flavor_text.dm
+++ b/modular_zubbers/code/modules/client/flavor_text/flavor_text.dm
@@ -12,7 +12,7 @@
var/art_ref = ""
/datum/preference/text/flavor_text_nsfw
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "flavor_text_nsfw"
maximum_value_length = MAX_FLAVOR_LEN
@@ -53,6 +53,7 @@
//This is just a silicon variant of the NSFW flavor text.
/datum/preference/text/flavor_text_nsfw/silicon
+ category = PREFERENCE_CATEGORY_SILICON_PREFS
savefile_key = "silicon_flavor_text_nsfw"
/datum/preference/text/flavor_text_nsfw/silicon/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences)
@@ -91,6 +92,7 @@
//This is literally just the same as the original headshot pref but for silicons :)
/datum/preference/text/headshot/silicon
+ category = PREFERENCE_CATEGORY_SILICON_PREFS
savefile_key = "headshot_silicon"
/datum/preference/text/headshot/silicon/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences)
@@ -131,7 +133,7 @@
usr?.client?.prefs.art_ref = value
/datum/preference/toggle/art_ref_nsfw
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "art_ref_nsfw"
default_value = FALSE
@@ -143,6 +145,7 @@
//OOC notes for Silicons. Overwrites regular OOC notes when you are playing a Silicon character.
//TODO: Make this your regular OOC notes if you don't have Silicon ones. Every time I've tried, for some reason regular OOC notes haven't shown.
/datum/preference/text/ooc_notes/silicon
+ category = PREFERENCE_CATEGORY_SILICON_PREFS
savefile_key = "ooc_notes_silicon"
/datum/preference/text/ooc_notes/silicon/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences)
@@ -150,12 +153,14 @@
//Custom species and lore for silicons, also known as "Custom Model." This allows silicons to define a custom species rather than receiving, by default "A cyborg unit." BORING.
/datum/preference/text/custom_species/silicon
+ category = PREFERENCE_CATEGORY_SILICON_PREFS
savefile_key = "custom_species_silicon"
/datum/preference/text/custom_species/silicon/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences)
return FALSE
/datum/preference/text/custom_species_lore/silicon
+ category = PREFERENCE_CATEGORY_SILICON_PREFS
savefile_key = "custom_species_lore_silicon"
/datum/preference/text/custom_species_lore/silicon/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences)
diff --git a/modular_zubbers/code/modules/client/preferences/blooper.dm b/modular_zubbers/code/modules/client/preferences/blooper.dm
index 1644c0d7d47..fbf31fdb30f 100644
--- a/modular_zubbers/code/modules/client/preferences/blooper.dm
+++ b/modular_zubbers/code/modules/client/preferences/blooper.dm
@@ -1,5 +1,5 @@
/datum/preference/choiced/blooper
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "blooper_choice"
@@ -26,7 +26,7 @@
return data
/datum/preference/numeric/blooper_speed
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "blooper_speed"
minimum = 0
@@ -42,7 +42,7 @@
return ..() && length(SSblooper.blooper_list)
/datum/preference/numeric/blooper_pitch
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "blooper_pitch"
minimum = 0
@@ -58,7 +58,7 @@
return ..() && length(SSblooper.blooper_list)
/datum/preference/numeric/blooper_pitch_range
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "blooper_pitch_range"
minimum = 0
diff --git a/modular_zubbers/code/modules/client/verbs/character_directory.dm b/modular_zubbers/code/modules/client/verbs/character_directory.dm
index 9d73ae69879..dc457529b6a 100644
--- a/modular_zubbers/code/modules/client/verbs/character_directory.dm
+++ b/modular_zubbers/code/modules/client/verbs/character_directory.dm
@@ -11,7 +11,7 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
//The advertisement that you show to people looking through the directory
/datum/preference/text/character_ad
savefile_key = "character_ad"
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_OOC_PREFS
savefile_identifier = PREFERENCE_CHARACTER
maximum_value_length = MAX_FLAVOR_LEN
@@ -25,7 +25,7 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
/datum/preference/choiced/attraction
savefile_key = "attraction"
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_OOC_PREFS
savefile_identifier = PREFERENCE_CHARACTER
/datum/preference/choiced/attraction/init_possible_values()
@@ -39,7 +39,7 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
/datum/preference/choiced/display_gender
savefile_key = "display_gender"
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_OOC_PREFS
savefile_identifier = PREFERENCE_CHARACTER
/datum/preference/choiced/display_gender/init_possible_values()
diff --git a/modular_zubbers/code/modules/rr_opt_in/rr_optin_preferences.dm b/modular_zubbers/code/modules/rr_opt_in/rr_optin_preferences.dm
index d985bb84781..9617014185e 100644
--- a/modular_zubbers/code/modules/rr_opt_in/rr_optin_preferences.dm
+++ b/modular_zubbers/code/modules/rr_opt_in/rr_optin_preferences.dm
@@ -1,5 +1,5 @@
/datum/preference/toggle/be_round_removed
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_OOC_PREFS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "be_round_removed"
diff --git a/modular_zubbers/master_files/code/modules/client/preferences/hypnopref.dm b/modular_zubbers/master_files/code/modules/client/preferences/hypnopref.dm
index f65b5cf861a..e6be063899d 100644
--- a/modular_zubbers/master_files/code/modules/client/preferences/hypnopref.dm
+++ b/modular_zubbers/master_files/code/modules/client/preferences/hypnopref.dm
@@ -1,5 +1,5 @@
/datum/preference/choiced/erp_status_hypno
- category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
+ category = PREFERENCE_CATEGORY_OOC_PREFS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "erp_status_pref_hypnosis"
diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/MainPage.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/MainPage.tsx
index 5207225ec14..0b6d5942636 100644
--- a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/MainPage.tsx
+++ b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/MainPage.tsx
@@ -9,6 +9,7 @@ import {
Floating,
Input,
LabeledList,
+ NoticeBox,
Section,
Stack,
} from 'tgui-core/components';
@@ -493,6 +494,16 @@ export function MainPage(props: MainPageProps) {
const contextualPreferences =
data.character_preferences.secondary_features || [];
+ // BUBBER EDIT ADDITION BEGIN: more character setup tabs
+ const characterBasicsPreferences =
+ data.character_preferences.character_basics || [];
+
+ const oocPrefPreferences = data.character_preferences.ooc_preferences || [];
+
+ const siliconPreferences =
+ data.character_preferences.silicon_preferences || [];
+ // BUBBER EDIT ADDITION END: more character setup tabs
+
const mainFeatures = [
...Object.entries(data.character_preferences.clothing ?? {}),
...Object.entries(data.character_preferences.features ?? {}),
@@ -523,14 +534,30 @@ export function MainPage(props: MainPageProps) {
// BUBBER EDIT ADDITION BEGIN: SWAPPABLE PREF MENUS
enum PrefPage {
+ CharBasics, // Character basics
Visual, // The visual parts
Lore, // Lore, Flavor Text, Age, Records
+ OOCPref, // OOC preferences
+ Silicon, // Silicon prefs
}
- const [currentPrefPage, setCurrentPrefPage] = useState(PrefPage.Visual);
+ const [currentPrefPage, setCurrentPrefPage] = useState(PrefPage.CharBasics);
let prefPageContents;
switch (currentPrefPage) {
+ case PrefPage.CharBasics:
+ prefPageContents = (
+
+ );
+ break;
case PrefPage.Visual:
prefPageContents = (
);
break;
+ case PrefPage.OOCPref:
+ prefPageContents = (
+
+ );
+ break;
+ case PrefPage.Silicon:
+ prefPageContents = (
+ <>
+
+ This tab is for preferences that only apply when playing the AI or
+ Cyborg jobs!
+
+
+ >
+ );
+ break;
default:
exhaustiveCheck(currentPrefPage);
}
@@ -696,6 +755,15 @@ export function MainPage(props: MainPageProps) {
+
+
+ Character Basics
+
+
+
+
+ OOC Preferences
+
+
+
+
+ Silicon Preferences
+
+
{prefPageContents}
diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/index.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/index.tsx
index d9570c38a96..bb756e188d4 100644
--- a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/index.tsx
+++ b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/index.tsx
@@ -1,6 +1,6 @@
import { useState } from 'react';
import { useBackend } from 'tgui/backend';
-import { NoticeBox, Stack, Button } from 'tgui-core/components'; // BUBBER EDIT CHANGE - ORIGINAL : import { NoticeBox, Stack } from 'tgui-core/components';
+import { Button, NoticeBox, Stack } from 'tgui-core/components'; // BUBBER EDIT CHANGE - ORIGINAL : import { NoticeBox, Stack } from 'tgui-core/components';
import { exhaustiveCheck } from 'tgui-core/exhaustive';
import { SideDropdown } from '../../../bubber_components/SideDropdown'; // BUBBER EDIT ADDITION
@@ -141,7 +141,9 @@ export function CharacterPreferenceWindow(props) {
{/* BUBBER EDIT ADDITION BEGIN */}
diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/LimbsPage.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/LimbsPage.tsx
index 73e95f2865e..af41bc6bd60 100644
--- a/tgui/packages/tgui/interfaces/PreferencesMenu/LimbsPage.tsx
+++ b/tgui/packages/tgui/interfaces/PreferencesMenu/LimbsPage.tsx
@@ -47,6 +47,7 @@ export const Markings = (props) => {
width="100%"
options={props.limb.markings.marking_choices}
selected={marking.name}
+ buttons
onSelected={(shit) =>
act('change_marking', {
limb_slot: props.limb.slot,
diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/index.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/index.tsx
index 4fdbe87cad7..42e77a9c13e 100644
--- a/tgui/packages/tgui/interfaces/PreferencesMenu/index.tsx
+++ b/tgui/packages/tgui/interfaces/PreferencesMenu/index.tsx
@@ -20,7 +20,7 @@ import { ServerPrefs } from './useServerPrefs';
export function PreferencesMenu(props) {
return (
-
+
{/* BUBBER change line 23 bigger char setup */}
}>
diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/species_features.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/species_features.tsx
index 631ec1e8170..95b2fd25e01 100644
--- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/species_features.tsx
+++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/species_features.tsx
@@ -86,7 +86,7 @@ export const display_gender: FeatureChoiced = {
};
export const flavor_text_nsfw: Feature = {
- name: 'NSFW Flavor Text',
+ name: 'Flavor Text (NSFW)',
description:
'The NSFW part of your flavor text. Used to store visual sexual details.',
component: FeatureTextInput,
@@ -129,7 +129,7 @@ export const headshot_silicon: Feature = {
};
export const headshot_nsfw: Feature = {
- name: 'NSFW Headshot',
+ name: 'Headshot (NSFW)',
description:
'Headshot, but for NSFW references. \
Requires a link ending with .png, .jpeg, or .jpg, starting with \
@@ -141,7 +141,7 @@ export const headshot_nsfw: Feature = {
};
export const headshot_silicon_nsfw: Feature = {
- name: 'Silicon NSFW Headshot',
+ name: 'Silicon Headshot (NSFW)',
description:
'Headshot, but for NSFW references on Silicons. \
Requires a link ending with .png, .jpeg, or .jpg, starting with \
@@ -182,7 +182,7 @@ export const art_ref: Feature = {
};
export const art_ref_nsfw: FeatureToggle = {
- name: 'Art Reference NSFW',
+ name: 'Art Reference (NSFW)',
description: 'Is your reference picture NSFW?',
component: CheckboxInput,
};
diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx
index bbc837e73d9..09963c10f14 100644
--- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx
+++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx
@@ -145,6 +145,7 @@ export const eye_emissives: FeatureToggle = {
export const mutant_colors_color: Feature = {
name: 'Mutant Colors',
component: FeatureTriColorInput,
+ description: 'Body color used for non-human species.',
};
export const body_markings_toggle: FeatureToggle = {
diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/types.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/types.ts
index e4b2b393b46..261bce48aac 100644
--- a/tgui/packages/tgui/interfaces/PreferencesMenu/types.ts
+++ b/tgui/packages/tgui/interfaces/PreferencesMenu/types.ts
@@ -189,16 +189,21 @@ export enum PrefsWindow {
export type CharacterPreferencesData = {
preview_options: string[]; // SKYRAT EDIT ADDITION
preview_selection: string; // SKYRAT EDIT ADDITION
- clothing: Record;
- features: Record;
- game_preferences: Record;
- non_contextual: {
- random_body: RandomSetting;
- [otherKey: string]: unknown;
- };
- secondary_features: Record;
- supplemental_features: Record;
- manually_rendered_features: Record;
+
+ character_preferences: {
+ clothing: Record;
+ features: Record;
+ game_preferences: Record;
+ non_contextual: {
+ random_body: RandomSetting;
+ [otherKey: string]: unknown;
+ };
+ secondary_features: Record;
+ character_basics: Record; // BUBBER EDIT ADDITION: more character setup tabs
+ ooc_preferences: Record; // BUBBER EDIT ADDITION: more character setup tabs
+ silicon_preferences: Record; // BUBBER EDIT ADDITION: more character setup tabs
+ supplemental_features: Record;
+ manually_rendered_features: Record;
names: Record;