mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Limits biolgical gender by species and defaults to male/female. Can also set gender identity which determines which is displayed upon examination and suchlike along with being shown in medical records
112 lines
5.2 KiB
Plaintext
112 lines
5.2 KiB
Plaintext
datum/preferences
|
|
var/biological_gender = MALE
|
|
var/identifying_gender = MALE
|
|
|
|
datum/preferences/proc/set_biological_gender(var/gender)
|
|
biological_gender = gender
|
|
identifying_gender = gender
|
|
|
|
/datum/category_item/player_setup_item/general/basic
|
|
name = "Basic"
|
|
sort_order = 1
|
|
|
|
/datum/category_item/player_setup_item/general/basic/load_character(var/savefile/S)
|
|
S["real_name"] >> pref.real_name
|
|
S["name_is_always_random"] >> pref.be_random_name
|
|
S["gender"] >> pref.biological_gender
|
|
S["id_gender"] << pref.identifying_gender
|
|
S["age"] >> pref.age
|
|
S["spawnpoint"] >> pref.spawnpoint
|
|
S["OOC_Notes"] >> pref.metadata
|
|
|
|
/datum/category_item/player_setup_item/general/basic/save_character(var/savefile/S)
|
|
S["real_name"] << pref.real_name
|
|
S["name_is_always_random"] << pref.be_random_name
|
|
S["gender"] << pref.biological_gender
|
|
S["id_gender"] << pref.identifying_gender
|
|
S["age"] << pref.age
|
|
S["spawnpoint"] << pref.spawnpoint
|
|
S["OOC_Notes"] << pref.metadata
|
|
|
|
/datum/category_item/player_setup_item/general/basic/sanitize_character()
|
|
if(!pref.species) pref.species = "Human"
|
|
var/datum/species/S = all_species[pref.species ? pref.species : "Human"]
|
|
pref.age = sanitize_integer(pref.age, S.min_age, S.max_age, initial(pref.age))
|
|
pref.biological_gender = sanitize_inlist(pref.biological_gender, S.genders, pick(S.genders))
|
|
pref.identifying_gender = (pref.identifying_gender in all_genders_define_list) ? pref.identifying_gender : pref.biological_gender
|
|
pref.real_name = sanitize_name(pref.real_name, pref.species)
|
|
if(!pref.real_name)
|
|
pref.real_name = random_name(pref.identifying_gender, pref.species)
|
|
pref.spawnpoint = sanitize_inlist(pref.spawnpoint, spawntypes, initial(pref.spawnpoint))
|
|
pref.be_random_name = sanitize_integer(pref.be_random_name, 0, 1, initial(pref.be_random_name))
|
|
|
|
/datum/category_item/player_setup_item/general/basic/content()
|
|
. = "<b>Name:</b> "
|
|
. += "<a href='?src=\ref[src];rename=1'><b>[pref.real_name]</b></a><br>"
|
|
. += "(<a href='?src=\ref[src];random_name=1'>Random Name</A>) "
|
|
. += "(<a href='?src=\ref[src];always_random_name=1'>Always Random Name: [pref.be_random_name ? "Yes" : "No"]</a>)"
|
|
. += "<br>"
|
|
. += "<b>Biological Gender:</b> <a href='?src=\ref[src];bio_gender=1'><b>[gender2text(pref.biological_gender)]</b></a><br>"
|
|
. += "<b>Gender Identity:</b> <a href='?src=\ref[src];id_gender=1'><b>[gender2text(pref.identifying_gender)]</b></a><br>"
|
|
. += "<b>Age:</b> <a href='?src=\ref[src];age=1'>[pref.age]</a><br>"
|
|
. += "<b>Spawn Point</b>: <a href='?src=\ref[src];spawnpoint=1'>[pref.spawnpoint]</a><br>"
|
|
if(config.allow_Metadata)
|
|
. += "<b>OOC Notes:</b> <a href='?src=\ref[src];metadata=1'> Edit </a><br>"
|
|
|
|
/datum/category_item/player_setup_item/general/basic/OnTopic(var/href,var/list/href_list, var/mob/user)
|
|
var/datum/species/S = all_species[pref.species]
|
|
if(href_list["rename"])
|
|
var/raw_name = input(user, "Choose your character's name:", "Character Name") as text|null
|
|
if (!isnull(raw_name) && CanUseTopic(user))
|
|
var/new_name = sanitize_name(raw_name, pref.species)
|
|
if(new_name)
|
|
pref.real_name = new_name
|
|
return TOPIC_REFRESH
|
|
else
|
|
user << "<span class='warning'>Invalid name. Your name should be at least 2 and at most [MAX_NAME_LEN] characters long. It may only contain the characters A-Z, a-z, -, ' and .</span>"
|
|
return TOPIC_NOACTION
|
|
|
|
else if(href_list["random_name"])
|
|
pref.real_name = random_name(pref.identifying_gender, pref.species)
|
|
return TOPIC_REFRESH
|
|
|
|
else if(href_list["always_random_name"])
|
|
pref.be_random_name = !pref.be_random_name
|
|
return TOPIC_REFRESH
|
|
|
|
else if(href_list["bio_gender"])
|
|
var/new_gender = input(user, "Choose your character's biological gender:", "Character Preference", pref.biological_gender) as null|anything in S.genders
|
|
if(new_gender && CanUseTopic(user))
|
|
pref.set_biological_gender(new_gender)
|
|
return TOPIC_REFRESH
|
|
|
|
else if(href_list["id_gender"])
|
|
var/new_gender = input(user, "Choose your character's identifying gender:", "Character Preference", pref.identifying_gender) as null|anything in all_genders_define_list
|
|
if(new_gender && CanUseTopic(user))
|
|
pref.identifying_gender = new_gender
|
|
return TOPIC_REFRESH
|
|
|
|
else if(href_list["age"])
|
|
if(!pref.species) pref.species = "Human"
|
|
var/new_age = input(user, "Choose your character's age:\n([S.min_age]-[S.max_age])", "Character Preference", pref.age) as num|null
|
|
if(new_age && CanUseTopic(user))
|
|
pref.age = max(min(round(text2num(new_age)), S.max_age), S.min_age)
|
|
return TOPIC_REFRESH
|
|
|
|
else if(href_list["spawnpoint"])
|
|
var/list/spawnkeys = list()
|
|
for(var/spawntype in spawntypes)
|
|
spawnkeys += spawntype
|
|
var/choice = input(user, "Where would you like to spawn when late-joining?") as null|anything in spawnkeys
|
|
if(!choice || !spawntypes[choice] || !CanUseTopic(user)) return TOPIC_NOACTION
|
|
pref.spawnpoint = choice
|
|
return TOPIC_REFRESH
|
|
|
|
else if(href_list["metadata"])
|
|
var/new_metadata = sanitize(input(user, "Enter any information you'd like others to see, such as Roleplay-preferences:", "Game Preference" , pref.metadata)) as message|null
|
|
if(new_metadata && CanUseTopic(user))
|
|
pref.metadata = sanitize(new_metadata)
|
|
return TOPIC_REFRESH
|
|
|
|
return ..()
|