Character Setup Rework (#17576)

* Character Setup Rework

Little tweaks

Species selection done~

Merk randomize body button

Body color and eye color

Merk more replaced code

Convert robolimbs to tgui

Add a warning if flavor text/ooc notes are too short

Custom preview icons for species selector!

A sidequest that only took 8
hours. Also add digitigrade and blood type.

Remove unused body_descriptor system completely

Finish the general tab~

Reorganization to prepare for loadout page creation

* Start of work on the loadout screen

* Only send the data that's actually selected

* Get rid of these ugly ../../../..

* Retype this to avoid conflicts

* Holy shit why did this work this way

* Finish loadout screen

* Add copy loadout function

* Finish occupation page

* Move Special Roles into general tab

* Fix path conflict

* Move size prefs to general tab

* Convert jukebox and volume settings to datum/preference

* Fix a little mergery fuckery in loadout

* Migrate jukebox to new range

* Fix TabbedMenu tabs

* Fix wordwrap for loadout screen

* Kill the vore tab, just traits left to convert

* Convert custom messages

* Convert custom species name

* Convert blood color and reagents

* Move icobase to tgui

* Finished

* This can fuck off too

* Fix a few bugs

* Update index.tsx

* initial for emote sound mode switch

* Make show_roles actually work, hide fluff items

* Fix not being able to select species

* Add emote_sound_mode to body tab

* Fix runtime when no active gear list is present

* Add a save notification to character setup

* Switch to floating

* Add more search bars

* Whoops forgot to add this

---------

Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
ShadowLarkens
2025-05-25 03:20:51 +02:00
committed by GitHub
co-authored by Kashargul
parent 44d1ce470e
commit 31e8e009db
106 changed files with 8770 additions and 4739 deletions
@@ -405,7 +405,6 @@
if(ticker.random_players)
new_character.gender = pick(MALE, FEMALE)
client.prefs.real_name = random_name(new_character.gender)
client.prefs.randomize_appearance_and_body_for(new_character)
else
client.prefs.copy_to(new_character, icon_updates = TRUE)
@@ -33,37 +33,6 @@
write_preference(preference, preference.create_random_value(src))
*/
//The mob should have a gender you want before running this proc. Will run fine without H
/datum/preferences/proc/randomize_appearance_and_body_for(var/mob/living/carbon/human/H)
var/datum/species/current_species = GLOB.all_species[species ? species : "Human"]
set_biological_gender(pick(current_species.genders))
h_style = random_hair_style(biological_gender, species)
f_style = random_facial_hair_style(biological_gender, species)
if(current_species)
if(current_species.appearance_flags & HAS_SKIN_TONE)
s_tone = random_skin_tone()
if(current_species.appearance_flags & HAS_SKIN_COLOR)
update_preference_by_type(/datum/preference/color/human/skin_color, rgb(rand(0, 255), rand(0, 255), rand(0, 255)))
if(current_species.appearance_flags & HAS_EYE_COLOR)
randomize_eyes_color()
if(current_species.appearance_flags & HAS_HAIR_COLOR)
randomize_hair_color("hair")
randomize_hair_color("facial")
if(current_species.appearance_flags & HAS_UNDERWEAR)
all_underwear.Cut()
for(var/datum/category_group/underwear/WRC in global_underwear.categories)
var/datum/category_item/underwear/WRI = pick(WRC.items)
all_underwear[WRC.name] = WRI.name
headset = rand(1,3)
backbag = rand(1,6)
pdachoice = rand(1,7)
randomise_appearance_prefs_update(current_species = current_species)
b_type = RANDOM_BLOOD_TYPE
if(H)
copy_to(H,1)
/datum/preferences/proc/randomize_hair_color(var/target = "hair")
@@ -242,7 +211,8 @@
if((equip_preview_mob & EQUIP_PREVIEW_LOADOUT) && !(previewJob && (equip_preview_mob & EQUIP_PREVIEW_JOB) && (previewJob.type == /datum/job/ai || previewJob.type == /datum/job/cyborg)))
var/list/equipped_slots = list()
for(var/thing in gear)
var/list/active_gear_list = LAZYACCESS(gear_list, "[gear_slot]")
for(var/thing in active_gear_list)
var/datum/gear/G = gear_datums[thing]
if(G)
var/permitted = 0
@@ -262,7 +232,7 @@
continue
if(G.slot && !(G.slot in equipped_slots))
var/metadata = gear[G.display_name]
var/metadata = active_gear_list[G.display_name]
if(mannequin.equip_to_slot_or_del(G.spawn_item(mannequin, metadata), G.slot))
if(G.slot != slot_tie)
equipped_slots += G.slot
@@ -1,2 +0,0 @@
/datum/preferences/randomize_appearance_and_body_for(var/mob/living/carbon/human/H)
sensorpref = rand(1,5)