Files
RoxyandThe Sharkening cbde7d6206 [BOUNTY] Character Preferences Reorganization (#5389)
This bounty was requested by @ArrisFairburne

Cleans up the character customization; various customization features
have been moved into three new tabs, "Character Basics" "OOC
Preferences" and "Silicon Preferences".

A ton of the character customization options (maybe 40%?) are stuff that
almost nobody would use on a regular basis. Options like mushroom caps,
frills, fluff, taur bodies, xenodorsal heads, etc. could be ignored by a
most players because they're irrelevant to their characters. Ideally the
most necessary stuff (basic furry parts, our required FTs, and
soundbytes for speaking) are the stuff the players see first, with more
stuff continuing to be available upon checking different tabs.

Silicon prefs are moved into their own tab because most characters are
carbons so they just won't ever need to bother with them.

<details>
<summary>Screenshots/Videos</summary>
<img width="1100" height="790" alt="basics"
src="https://github.com/user-attachments/assets/f84ce557-09fd-414d-a076-58569392a84b"
/>
<img width="1100" height="790" alt="visuals"
src="https://github.com/user-attachments/assets/0e184209-f6d0-43f7-8452-0ec409f13dba"
/>
<img width="1100" height="790" alt="lore"
src="https://github.com/user-attachments/assets/b0f8f74c-5b21-49f3-823a-8684015c7b61"
/>
<img width="1100" height="790" alt="lore2"
src="https://github.com/user-attachments/assets/114088bc-6f3f-4a83-b528-d0d14055426e"
/>
<img width="1100" height="790" alt="ooc"
src="https://github.com/user-attachments/assets/14333121-dc87-4396-a64d-fd2d07e86780"
/>
<img width="1100" height="790" alt="silicon"
src="https://github.com/user-attachments/assets/5992d37e-17ca-4854-a88a-f6cc87f27128"
/>

</details>

🆑 ArrisFairburne
qol: Cleaned up the character preference window.
/🆑
^ Conflicts:
^	tgui/packages/tgui/interfaces/PreferencesMenu/types.ts
2026-04-11 08:57:55 -06:00

89 lines
2.9 KiB
Plaintext

/datum/preference/choiced/blooper
category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "blooper_choice"
/datum/preference/choiced/blooper/init_possible_values()
// no bloopers configured, return dummy list to avoid runtimes
if(!length(SSblooper.blooper_list))
return list("none")
return assoc_to_keys(SSblooper.blooper_list)
/datum/preference/choiced/blooper/apply_to_human(mob/living/carbon/human/target, value)
target.blooper = SSblooper.blooper_list[value]
/datum/preference/choiced/blooper/is_accessible(datum/preferences/preferences)
return ..() && length(SSblooper.blooper_list)
/datum/preference/choiced/blooper/compile_constant_data()
var/list/data = ..()
if(!length(SSblooper.blooper_list))
return data
var/list/display_names = list()
for(var/id in get_choices())
display_names[id] = astype(SSblooper.blooper_list[id], /datum/blooper).name
data[CHOICED_PREFERENCE_DISPLAY_NAMES] = display_names
return data
/datum/preference/numeric/blooper_speed
category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "blooper_speed"
minimum = 0
maximum = 100
/datum/preference/numeric/blooper_speed/apply_to_human(mob/living/carbon/human/target, value)
target.blooper_speed = value
/datum/preference/numeric/blooper_speed/create_default_value()
return 50
/datum/preference/numeric/blooper_speed/is_accessible(datum/preferences/preferences)
return ..() && length(SSblooper.blooper_list)
/datum/preference/numeric/blooper_pitch
category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "blooper_pitch"
minimum = 0
maximum = 100
/datum/preference/numeric/blooper_pitch/apply_to_human(mob/living/carbon/human/target, value)
target.blooper_pitch = value
/datum/preference/numeric/blooper_pitch/create_default_value()
return 50
/datum/preference/numeric/blooper_pitch/is_accessible(datum/preferences/preferences)
return ..() && length(SSblooper.blooper_list)
/datum/preference/numeric/blooper_pitch_range
category = PREFERENCE_CATEGORY_CHARACTER_BASICS
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "blooper_pitch_range"
minimum = 0
maximum = 100
/datum/preference/numeric/blooper_pitch_range/apply_to_human(mob/living/carbon/human/target, value)
target.blooper_pitch_range = value
/datum/preference/numeric/blooper_pitch_range/create_default_value()
return 30
/datum/preference/numeric/blooper_pitch_range/is_accessible(datum/preferences/preferences)
return ..() && length(SSblooper.blooper_list)
// Send vocal bloopers
/datum/preference/toggle/send_blooper
category = PREFERENCE_CATEGORY_GAME_PREFERENCES
savefile_identifier = PREFERENCE_PLAYER
savefile_key = "blooper_send"
default_value = TRUE
// Hear vocal bloopers
/datum/preference/toggle/hear_blooper
category = PREFERENCE_CATEGORY_GAME_PREFERENCES
savefile_identifier = PREFERENCE_PLAYER
savefile_key = "blooper_hear"
default_value = TRUE