mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-27 14:08:44 +01:00
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:
co-authored by
Kashargul
parent
44d1ce470e
commit
31e8e009db
@@ -70,9 +70,6 @@ var/datum/antagonist/deathsquad/deathsquad
|
||||
|
||||
var/syndicate_commando_name = pick(last_names)
|
||||
|
||||
var/datum/preferences/A = new() //Randomize appearance for the commando.
|
||||
A.randomize_appearance_and_body_for(player.current)
|
||||
|
||||
player.name = "[syndicate_commando_rank] [syndicate_commando_name]"
|
||||
player.current.name = player.name
|
||||
player.current.real_name = player.current.name
|
||||
|
||||
@@ -79,7 +79,6 @@ GLOBAL_LIST_EMPTY_TYPED(dna_genes_bad, /datum/gene/trait)
|
||||
var/species = SPECIES_HUMAN
|
||||
var/list/body_markings = list()
|
||||
var/list/body_markings_genetic = list()
|
||||
var/list/body_descriptors = null
|
||||
var/list/genetic_modifiers = list() // Modifiers with the MODIFIER_GENETIC flag are saved. Note that only the type is saved, not an instance.
|
||||
|
||||
// Make a copy of this strand.
|
||||
@@ -191,12 +190,10 @@ GLOBAL_LIST_EMPTY_TYPED(dna_genes_bad, /datum/gene/trait)
|
||||
src.offset_override = character.offset_override
|
||||
src.synth_markings = character.synth_markings
|
||||
src.custom_speech_bubble = character.custom_speech_bubble
|
||||
/* Currently not implemented on virgo
|
||||
src.species_sounds = character.species.species_sounds
|
||||
src.gender_specific_species_sounds = character.species.gender_specific_species_sounds
|
||||
src.species_sounds_male = character.species.species_sounds_male
|
||||
src.species_sounds_female = character.species.species_sounds_female
|
||||
*/
|
||||
src.grad_style = character.grad_style
|
||||
src.r_grad = character.r_grad
|
||||
src.g_grad = character.g_grad
|
||||
|
||||
@@ -284,12 +284,10 @@
|
||||
H.dna.blood_color = dna.blood_color
|
||||
H.species.blood_reagents = H.dna.blood_reagents
|
||||
H.species.blood_color = H.dna.blood_color
|
||||
/*//TODO: Get these to work as well.
|
||||
H.species.species_sounds = dna.species_sounds
|
||||
H.species.gender_specific_species_sounds = dna.gender_specific_species_sounds
|
||||
H.species.species_sounds_male = dna.species_sounds_male
|
||||
H.species.species_sounds_female = dna.species_sounds_female
|
||||
*///TODO End
|
||||
|
||||
H.force_update_organs() //VOREStation Add - Gotta do this too
|
||||
H.force_update_limbs()
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
var/languages=null
|
||||
var/list/flavor=null
|
||||
var/gender = null
|
||||
var/list/body_descriptors = null // Guess we'll keep null.
|
||||
var/list/genetic_modifiers = list() // Modifiers with the MODIFIER_GENETIC flag are saved. Note that only the type is saved, not an instance.
|
||||
|
||||
/datum/dna2/record/proc/GetData()
|
||||
@@ -48,8 +47,6 @@
|
||||
newrecord.implant = implant
|
||||
newrecord.flavor = flavor
|
||||
newrecord.gender = gender
|
||||
if(body_descriptors)
|
||||
newrecord.body_descriptors = body_descriptors.Copy()
|
||||
newrecord.genetic_modifiers = genetic_modifiers.Copy()
|
||||
return newrecord
|
||||
|
||||
@@ -617,7 +614,6 @@
|
||||
var/mob/living/carbon/human/H = WC
|
||||
databuf.mydna.dna.real_name = H.dna.real_name
|
||||
databuf.mydna.gender = H.gender
|
||||
databuf.mydna.body_descriptors = H.descriptors
|
||||
buffers[bufferId] = databuf
|
||||
return TRUE
|
||||
if("clear")
|
||||
|
||||
@@ -201,17 +201,6 @@
|
||||
return ideal_character_age // VOREStation Edit - Minimum character age by rules is 18, return default which is standard for all species
|
||||
//return (brain_type && LAZYACCESS(ideal_age_by_species, brain_type)) || LAZYACCESS(ideal_age_by_species, brain_type) || ideal_character_age //VOREStation Removal
|
||||
|
||||
/datum/job/proc/is_species_banned(species_name, brain_type)
|
||||
return FALSE // VOREStation Edit - Any species can be any job.
|
||||
/* VOREStation Removal
|
||||
if(banned_job_species == null)
|
||||
return
|
||||
if(species_name in banned_job_species)
|
||||
return TRUE
|
||||
if(brain_type in banned_job_species)
|
||||
return TRUE
|
||||
*/
|
||||
|
||||
/datum/job/proc/update_limit(var/comperator)
|
||||
return
|
||||
|
||||
|
||||
@@ -111,9 +111,6 @@ var/global/datum/controller/occupations/job_master
|
||||
Debug("FOC is_job_whitelisted failed, Player: [player]")
|
||||
continue
|
||||
//VOREStation Code End
|
||||
if(job.is_species_banned(player.client.prefs.species, player.client.prefs.organ_data[O_BRAIN]) == TRUE)
|
||||
Debug("FOC character species invalid for job, Player: [player]")
|
||||
continue
|
||||
if(flag && !(player.client.prefs.be_special & flag))
|
||||
Debug("FOC flag failed, Player: [player], Flag: [flag], ")
|
||||
continue
|
||||
@@ -131,9 +128,6 @@ var/global/datum/controller/occupations/job_master
|
||||
if((job.minimum_character_age || job.min_age_by_species) && (player.read_preference(/datum/preference/numeric/human/age) < job.get_min_age(player.client.prefs.species, player.client.prefs.organ_data[O_BRAIN])))
|
||||
continue
|
||||
|
||||
if(job.is_species_banned(player.client.prefs.species, player.client.prefs.organ_data[O_BRAIN]) == TRUE)
|
||||
continue
|
||||
|
||||
if(istype(job, GetJob(JOB_ALT_VISITOR))) // We don't want to give him assistant, that's boring! //VOREStation Edit - Visitor not Assistant
|
||||
continue
|
||||
|
||||
@@ -395,8 +389,9 @@ var/global/datum/controller/occupations/job_master
|
||||
//Equip custom gear loadout.
|
||||
var/list/custom_equip_slots = list()
|
||||
var/list/custom_equip_leftovers = list()
|
||||
if(H.client && H.client.prefs && H.client.prefs.gear && H.client.prefs.gear.len && !(job.mob_type & JOB_SILICON))
|
||||
for(var/thing in H.client.prefs.gear)
|
||||
if(H?.client?.prefs && !(job.mob_type & JOB_SILICON))
|
||||
var/list/active_gear_list = LAZYACCESS(H.client.prefs.gear_list, "[H.client.prefs.gear_slot]")
|
||||
for(var/thing in active_gear_list)
|
||||
var/datum/gear/G = gear_datums[thing]
|
||||
if(!G) //Not a real gear datum (maybe removed, as this is loaded from their savefile)
|
||||
continue
|
||||
@@ -421,14 +416,14 @@ var/global/datum/controller/occupations/job_master
|
||||
|
||||
// Implants get special treatment
|
||||
if(G.slot == "implant")
|
||||
var/obj/item/implant/I = G.spawn_item(H, H.client.prefs.gear[G.display_name])
|
||||
var/obj/item/implant/I = G.spawn_item(H, active_gear_list[G.display_name])
|
||||
I.invisibility = INVISIBILITY_MAXIMUM
|
||||
I.implant_loadout(H)
|
||||
continue
|
||||
|
||||
// Try desperately (and sorta poorly) to equip the item. Now with increased desperation!
|
||||
if(G.slot && !(G.slot in custom_equip_slots))
|
||||
var/metadata = H.client.prefs.gear[G.display_name]
|
||||
var/metadata = active_gear_list[G.display_name]
|
||||
//if(G.slot == slot_wear_mask || G.slot == slot_wear_suit || G.slot == slot_head)
|
||||
// custom_equip_leftovers += thing
|
||||
//else
|
||||
@@ -468,7 +463,8 @@ var/global/datum/controller/occupations/job_master
|
||||
if(G.slot in custom_equip_slots)
|
||||
spawn_in_storage += thing
|
||||
else
|
||||
var/metadata = H.client.prefs.gear[G.display_name]
|
||||
var/list/active_gear_list = LAZYACCESS(H.client.prefs.gear_list, "[H.client.prefs.gear_slot]")
|
||||
var/metadata = active_gear_list[G.display_name]
|
||||
if(H.equip_to_slot_or_del(G.spawn_item(H, metadata), G.slot))
|
||||
to_chat(H, span_notice("Equipping you with \the [thing]!"))
|
||||
custom_equip_slots.Add(G.slot)
|
||||
@@ -516,11 +512,12 @@ var/global/datum/controller/occupations/job_master
|
||||
B = S
|
||||
break
|
||||
|
||||
var/list/active_gear_list = LAZYACCESS(H.client.prefs.gear_list, "[H.client.prefs.gear_slot]")
|
||||
if(!isnull(B))
|
||||
for(var/thing in spawn_in_storage)
|
||||
to_chat(H, span_notice("Placing \the [thing] in your [B.name]!"))
|
||||
var/datum/gear/G = gear_datums[thing]
|
||||
var/metadata = H.client.prefs.gear[G.display_name]
|
||||
var/metadata = active_gear_list[G.display_name]
|
||||
G.spawn_item(B, metadata)
|
||||
else
|
||||
to_chat(H, span_danger("Failed to locate a storage object on your mob, either you spawned with no arms and no backpack or this is a bug."))
|
||||
|
||||
@@ -109,7 +109,6 @@
|
||||
R.dna.real_name = "clone ([rand(0,999)])"
|
||||
H.real_name = R.dna.real_name
|
||||
H.gender = R.gender
|
||||
H.descriptors = R.body_descriptors
|
||||
|
||||
//Get the clone body ready
|
||||
H.adjustCloneLoss(150) // New damage var so you can't eject a clone early then stab them to abuse the current damage system --NeoFite
|
||||
|
||||
@@ -422,7 +422,6 @@
|
||||
R.types = DNA2_BUF_UI|DNA2_BUF_UE|DNA2_BUF_SE
|
||||
R.languages = subject.languages
|
||||
R.gender = subject.gender
|
||||
R.body_descriptors = subject.descriptors
|
||||
R.flavor = subject.flavor_texts.Copy()
|
||||
for(var/datum/modifier/mod in subject.modifiers)
|
||||
if(mod.flags & MODIFIER_GENETIC)
|
||||
|
||||
Reference in New Issue
Block a user