Body descriptor system removed

This commit is contained in:
Willburd
2025-05-19 02:04:54 -04:00
parent c1000da8c6
commit 04a0aa3ac8
14 changed files with 0 additions and 307 deletions
-1
View File
@@ -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.
-4
View File
@@ -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")
-1
View File
@@ -421,7 +421,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)
@@ -95,7 +95,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
pref.synth_color = save_data["synth_color"]
pref.synth_markings = save_data["synth_markings"]
pref.bgstate = save_data["bgstate"]
pref.body_descriptors = check_list_copy(save_data["body_descriptors"])
pref.ear_style = save_data["ear_style"]
pref.ear_secondary_style = save_data["ear_secondary_style"]
pref.ear_secondary_colors = save_data["ear_secondary_colors"]
@@ -121,7 +120,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
save_data["synth_color"] = pref.synth_color
save_data["synth_markings"] = pref.synth_markings
save_data["bgstate"] = pref.bgstate
save_data["body_descriptors"] = check_list_copy(pref.body_descriptors)
save_data["ear_style"] = pref.ear_style
save_data["ear_secondary_style"] = pref.ear_secondary_style
save_data["ear_secondary_colors"] = pref.ear_secondary_colors
@@ -251,21 +249,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
O.markings[M] = list("color" = pref.body_markings[M][BP]["color"], "datum" = mark_datum, "priority" = priority, "on" = pref.body_markings[M][BP]["on"])
character.markings_len = priority
var/list/last_descriptors = list()
if(islist(pref.body_descriptors))
last_descriptors = pref.body_descriptors.Copy()
pref.body_descriptors = list()
var/datum/species/mob_species = GLOB.all_species[pref.species]
if(LAZYLEN(mob_species.descriptors))
for(var/entry in mob_species.descriptors)
var/datum/mob_descriptor/descriptor = mob_species.descriptors[entry]
if(istype(descriptor))
if(isnull(last_descriptors[entry]))
pref.body_descriptors[entry] = descriptor.default_value // Species datums have initial default value.
else
pref.body_descriptors[entry] = CLAMP(last_descriptors[entry], 1, LAZYLEN(descriptor.standalone_value_descriptors))
/datum/category_item/player_setup_item/general/body/content(var/mob/user)
. = list()
@@ -386,13 +369,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
else
. += "<br><br>"
if(LAZYLEN(pref.body_descriptors))
. += "<table>"
for(var/entry in pref.body_descriptors)
var/datum/mob_descriptor/descriptor = mob_species.descriptors[entry]
. += "<tr><td>" + span_bold("[capitalize(descriptor.chargen_label)]:") + "</td><td>[descriptor.get_standalone_value_descriptor(pref.body_descriptors[entry])]</td><td><a href='byond://?src=\ref[src];change_descriptor=[entry]'>Change</a><br/></td></tr>"
. += "</table><br>"
. += "</td><td>" + span_bold("Preview") + "<br>"
. += "<br><a href='byond://?src=\ref[src];cycle_bg=1'>Cycle background</a>"
. += "<br><a href='byond://?src=\ref[src];toggle_preview_value=[EQUIP_PREVIEW_LOADOUT]'>[pref.equip_preview_mob & EQUIP_PREVIEW_LOADOUT ? "Hide loadout" : "Show loadout"]</a>"
@@ -506,16 +482,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
pref.randomize_appearance_and_body_for()
return TOPIC_REFRESH_UPDATE_PREVIEW
else if(href_list["change_descriptor"])
if(mob_species.descriptors)
var/desc_id = href_list["change_descriptor"]
if(pref.body_descriptors[desc_id])
var/datum/mob_descriptor/descriptor = mob_species.descriptors[desc_id]
var/choice = tgui_input_list(user, "Please select a descriptor.", "Descriptor", descriptor.chargen_value_descriptors)
if(choice && mob_species.descriptors[desc_id]) // Check in case they sneakily changed species.
pref.body_descriptors[desc_id] = descriptor.chargen_value_descriptors[choice]
return TOPIC_REFRESH
else if(href_list["blood_type"])
var/new_b_type = tgui_input_list(user, "Choose your character's blood-type:", "Character Preference", valid_bloodtypes)
if(new_b_type && CanUseTopic(user))
-22
View File
@@ -97,8 +97,6 @@ var/list/preferences_datums = list()
var/list/flavour_texts_robot = list()
var/custom_link = null
var/list/body_descriptors = list()
var/med_record = ""
var/sec_record = ""
var/gen_record = ""
@@ -351,10 +349,6 @@ var/list/preferences_datums = list()
character.update_underwear()
character.update_hair()
if(LAZYLEN(character.descriptors))
for(var/entry in body_descriptors)
character.descriptors[entry] = body_descriptors[entry]
/datum/preferences/proc/open_load_dialog(mob/user)
if(selecting_slots)
to_chat(user, span_warning("You already have a slot selection dialog open!"))
@@ -583,22 +577,6 @@ var/list/preferences_datums = list()
O.markings[M] = list("color" = body_markings[M][BP]["color"], "datum" = mark_datum, "priority" = priority, "on" = body_markings[M][BP]["on"])
character.markings_len = priority
var/list/last_descriptors = list()
if(islist(body_descriptors))
last_descriptors = body_descriptors.Copy()
body_descriptors = list()
var/datum/species/mob_species = GLOB.all_species[species]
if(LAZYLEN(mob_species.descriptors))
for(var/entry in mob_species.descriptors)
var/datum/mob_descriptor/descriptor = mob_species.descriptors[entry]
if(istype(descriptor))
if(isnull(last_descriptors[entry]))
body_descriptors[entry] = descriptor.default_value // Species datums have initial default value.
else
body_descriptors[entry] = CLAMP(last_descriptors[entry], 1, LAZYLEN(descriptor.standalone_value_descriptors))
character.descriptors = body_descriptors
if (copy_flavour)
character.flavor_texts["general"] = flavor_texts["general"]
character.flavor_texts["head"] = flavor_texts["head"]
@@ -1,108 +0,0 @@
/*
Small, mechanically supported physical customisation options.
Also allows for per-species physical information ('his neck markings are more important than yours').
ETA till a downstream ports this and adds boob and penis size: 2 days.
*/
/mob/living/carbon/human/proc/show_descriptors_to(var/mob/user)
if(LAZYLEN(descriptors))
if(user == src)
for(var/entry in descriptors)
var/datum/mob_descriptor/descriptor = species.descriptors[entry]
LAZYADD(., "[descriptor.get_first_person_message_start()] [descriptor.get_standalone_value_descriptor(descriptors[entry])].")
else
for(var/entry in descriptors)
var/datum/mob_descriptor/descriptor = species.descriptors[entry]
LAZYADD(., descriptor.get_comparative_value_descriptor(descriptors[entry], user, src))
/datum/mob_descriptor
var/name // String ident.
var/chargen_label // String ident for chargen.
var/default_value // Initial value for this descriptor.
var/comparison_offset = 0 // Used for examining similar properties between different species.
var/comparative_value_descriptor_equivalent // String for looking at someone with roughly the same property.
var/list/standalone_value_descriptors // String set for initial descriptor text.
var/list/comparative_value_descriptors_smaller // String set for looking at someone smaller than you.
var/list/comparative_value_descriptors_larger // String set for looking at someone larger than you.
var/list/chargen_value_descriptors // Used for chargen selection of values in cases where there is a hidden meaning.
var/skip_species_mention
/datum/mob_descriptor/New()
if(!chargen_label)
chargen_label = name
if(!chargen_value_descriptors)
chargen_value_descriptors = list()
for(var/i = 1 to LAZYLEN(standalone_value_descriptors))
chargen_value_descriptors[standalone_value_descriptors[i]] = i
default_value = CEILING(LAZYLEN(standalone_value_descriptors) * 0.5, 1)
..()
/datum/mob_descriptor/proc/get_third_person_message_start(var/datum/gender/my_gender)
return "They are"
// return "[my_gender.He] [my_gender.is]" // Doesn't respect ambiguous_genders species var, can't figure out a fix at the moment
/datum/mob_descriptor/proc/get_first_person_message_start()
return "You are"
/datum/mob_descriptor/proc/get_standalone_value_descriptor(var/check_value)
if(isnull(check_value))
check_value = default_value
if(check_value && LAZYLEN(standalone_value_descriptors) >= check_value)
return standalone_value_descriptors[check_value]
// Build a species-specific descriptor string.
/datum/mob_descriptor/proc/get_initial_comparison_component(var/mob/me, var/datum/gender/my_gender, var/datum/gender/other_gender, var/my_value)
var/species_text
if(ishuman(me) && !skip_species_mention)
var/mob/living/carbon/human/H = me
var/use_name = "\improper [H.species.name]"
species_text = " for \a [use_name]"
. = "[get_third_person_message_start(my_gender)] [get_standalone_value_descriptor(my_value)][species_text]"
/datum/mob_descriptor/proc/get_secondary_comparison_component(var/datum/gender/my_gender, var/datum/gender/other_gender, var/my_value, var/comparing_value)
var/raw_value = my_value
my_value += comparison_offset
var/variance = abs((my_value)-comparing_value)
if(variance < 1)
. = "[.], [get_comparative_value_string_equivalent(raw_value, my_gender, other_gender)]"
else
variance = variance / LAZYLEN(standalone_value_descriptors)
if(my_value < comparing_value)
. = "[.], [get_comparative_value_string_smaller(variance, my_gender, other_gender)]"
else if(my_value > comparing_value)
. = "[.], [get_comparative_value_string_larger(variance, my_gender, other_gender)]"
/datum/mob_descriptor/proc/get_comparative_value_descriptor(var/my_value, var/mob/observer, var/mob/me)
// Store our gender info for later.
var/datum/gender/my_gender = GLOB.gender_datums[me.get_gender()]
var/datum/gender/other_gender = GLOB.gender_datums[observer.get_gender()]
. = get_initial_comparison_component(me, my_gender, other_gender, my_value)
// Append the same-descriptor comparison text.
var/comparing_value
if(ishuman(observer))
var/mob/living/carbon/human/human_observer = observer
if(LAZYLEN(human_observer.descriptors) && !isnull(human_observer.species.descriptors[name]) && !isnull(human_observer.descriptors[name]))
var/datum/mob_descriptor/obs_descriptor = human_observer.species.descriptors[name]
comparing_value = human_observer.descriptors[name] + obs_descriptor.comparison_offset
if(. && !isnull(comparing_value))
. = "[.][get_secondary_comparison_component(my_gender, other_gender, my_value, comparing_value)]"
// We're done, add a full stop.
. = "[.]. "
/datum/mob_descriptor/proc/get_comparative_value_string_equivalent(var/my_value, var/datum/gender/my_gender, var/datum/gender/other_gender)
return comparative_value_descriptor_equivalent
/datum/mob_descriptor/proc/get_comparative_value_string_smaller(var/value, var/datum/gender/my_gender, var/datum/gender/other_gender)
var/maxval = LAZYLEN(comparative_value_descriptors_smaller)
value = CLAMP(CEILING(value * maxval, 1), 1, maxval)
return comparative_value_descriptors_smaller[value]
/datum/mob_descriptor/proc/get_comparative_value_string_larger(var/value, var/datum/gender/my_gender, var/datum/gender/other_gender)
var/maxval = LAZYLEN(comparative_value_descriptors_larger)
value = CLAMP(CEILING(value * maxval, 1), 1, maxval)
return comparative_value_descriptors_larger[value]
@@ -1,45 +0,0 @@
/datum/mob_descriptor/height
name = "height"
standalone_value_descriptors = list(
"very short",
"short",
"of average height",
"tall",
"very tall"
)
comparative_value_descriptor_equivalent = "around the same height as you"
comparative_value_descriptors_smaller = list(
"slightly shorter than you",
"shorter than you",
"much shorter than you",
"tiny and insignificant next to you"
)
comparative_value_descriptors_larger = list(
"slightly taller than you",
"taller than you",
"much taller than you",
"towering over you"
)
/datum/mob_descriptor/build
name = "build"
comparative_value_descriptor_equivalent = "around the same build as you"
standalone_value_descriptors = list(
"rail thin",
"thin",
"of average build",
"broad-shouldered",
"heavily built"
)
comparative_value_descriptors_smaller = list(
"a bit smaller in build than you",
"smaller in build than you",
"much smaller in build than you",
"dwarfed by your height"
)
comparative_value_descriptors_larger = list(
"slightly larger than you in build",
"built larger than you",
"built much larger than you",
"dwarfing you"
)
@@ -1,27 +0,0 @@
/datum/mob_descriptor/headtail_length
name = "headtail length"
chargen_label = "headtails (gender)"
skip_species_mention = TRUE
standalone_value_descriptors = list(
"short",
"long"
)
chargen_value_descriptors = list(
"short (male)" = 1,
"long (female)" = 2
)
/datum/mob_descriptor/headtail_length/get_first_person_message_start()
. = "Your headtails are"
/datum/mob_descriptor/headtail_length/get_third_person_message_start(var/datum/gender/my_gender)
. = "[my_gender.His] headtails are"
/datum/mob_descriptor/headtail_length/get_comparative_value_string_equivalent(var/my_value, var/datum/gender/my_gender, var/datum/gender/other_gender)
. = "indicating [other_gender.he] [other_gender.is] [my_value == 1 ? "male" : "female"] like you"
/datum/mob_descriptor/headtail_length/get_comparative_value_string_smaller(var/value, var/datum/gender/my_gender, var/datum/gender/other_gender)
. = "indicating [other_gender.he] [other_gender.is] male"
/datum/mob_descriptor/headtail_length/get_comparative_value_string_larger(var/value, var/datum/gender/my_gender, var/datum/gender/other_gender)
. = "indicating [other_gender.he] [other_gender.is] female"
@@ -1,35 +0,0 @@
/datum/mob_descriptor/vox_markings
name = "neck markings"
chargen_label = "neck markings (rank)"
skip_species_mention = TRUE
standalone_value_descriptors = list(
"very simplistic",
"rather simple",
"complex",
"moderately complex",
"bewilderingly complex"
)
chargen_value_descriptors = list(
"servitor" = 1,
"labourer" = 2,
"cannon fodder" = 3,
"raider" = 4,
"leader" = 5
)
comparative_value_descriptor_equivalent = "around the same importance as yours"
comparative_value_descriptors_smaller = list(
"slightly less important than yours",
"much less important than yours",
"insignificant and beneath your notice"
)
comparative_value_descriptors_larger = list(
"slightly more important than yours",
"much more important than yours",
"commanding your unquestioning obedience and respect"
)
/datum/mob_descriptor/vox_markings/get_first_person_message_start()
. = "Your neck markings are"
/datum/mob_descriptor/vox_markings/get_third_person_message_start(var/datum/gender/my_gender)
. = "[my_gender.His] neck markings are"
@@ -454,10 +454,6 @@
if(applying_pressure)
msg += applying_pressure
var/show_descs = show_descriptors_to(user)
if(show_descs)
msg += span_notice("[jointext(show_descs, "<br>")]")
if(pose)
if(!findtext(pose, regex("\[.?!]$"))) // Will be zero if the last character is not a member of [.?!]
pose = addtext(pose,".") //Makes sure all emotes end with a period.
@@ -1321,15 +1321,6 @@
pixel_y = default_pixel_y
center_offset = species.center_offset
if(LAZYLEN(descriptors))
descriptors = null
if(LAZYLEN(species.descriptors))
descriptors = list()
for(var/desctype in species.descriptors)
var/datum/mob_descriptor/descriptor = species.descriptors[desctype]
descriptors[desctype] = descriptor.default_value
if(vessel)
initialize_vessel()
@@ -302,8 +302,6 @@
var/pass_flags = 0
var/list/descriptors = list()
//This is used in character setup preview generation (prefences_setup.dm) and human mob
//rendering (update_icons.dm)
var/color_mult = 0
@@ -385,15 +383,6 @@
else
hud = new()
// Prep the descriptors for the species
if(LAZYLEN(descriptors))
var/list/descriptor_datums = list()
for(var/desctype in descriptors)
var/datum/mob_descriptor/descriptor = new desctype
descriptor.comparison_offset = descriptors[desctype]
descriptor_datums[descriptor.name] = descriptor
descriptors = descriptor_datums
//If the species has eyes, they are the default vision organ
if(!vision_organ && has_organ[O_EYES])
vision_organ = O_EYES
@@ -264,8 +264,6 @@
if(!mydna.dna.real_name)
mydna.dna.real_name = backup_name
H.real_name = mydna.dna.real_name
H.gender = mydna.gender
H.descriptors = mydna.body_descriptors
for(var/datum/language/L in mydna.languages)
H.add_language(L.name)
H.suiciding = 0
-4
View File
@@ -3179,10 +3179,6 @@
#include "code\modules\mob\living\carbon\human\update_icons.dm"
#include "code\modules\mob\living\carbon\human\ai_controlled\ai_controlled.dm"
#include "code\modules\mob\living\carbon\human\ai_controlled\ai_controlled_vr.dm"
#include "code\modules\mob\living\carbon\human\descriptors\_descriptors.dm"
#include "code\modules\mob\living\carbon\human\descriptors\descriptors_generic.dm"
#include "code\modules\mob\living\carbon\human\descriptors\descriptors_skrell.dm"
#include "code\modules\mob\living\carbon\human\descriptors\descriptors_vox.dm"
#include "code\modules\mob\living\carbon\human\species\species.dm"
#include "code\modules\mob\living\carbon\human\species\species_attack.dm"
#include "code\modules\mob\living\carbon\human\species\species_getters.dm"