diff --git a/code/modules/client/preference_setup/general/01_basic.dm b/code/modules/client/preference_setup/general/01_basic.dm index d991cd4825..604c9cb1ff 100644 --- a/code/modules/client/preference_setup/general/01_basic.dm +++ b/code/modules/client/preference_setup/general/01_basic.dm @@ -12,6 +12,7 @@ datum/preferences/proc/set_biological_gender(var/gender) /datum/category_item/player_setup_item/general/basic/load_character(var/savefile/S) S["real_name"] >> pref.real_name + S["nickname"] >> pref.nickname S["name_is_always_random"] >> pref.be_random_name S["gender"] >> pref.biological_gender S["id_gender"] >> pref.identifying_gender @@ -21,6 +22,7 @@ datum/preferences/proc/set_biological_gender(var/gender) /datum/category_item/player_setup_item/general/basic/save_character(var/savefile/S) S["real_name"] << pref.real_name + S["nickname"] << pref.nickname S["name_is_always_random"] << pref.be_random_name S["gender"] << pref.biological_gender S["id_gender"] << pref.identifying_gender @@ -35,6 +37,7 @@ datum/preferences/proc/set_biological_gender(var/gender) pref.real_name = sanitize_name(pref.real_name, pref.species, is_FBP()) if(!pref.real_name) pref.real_name = random_name(pref.identifying_gender, pref.species) + pref.nickname = sanitize_name(pref.nickname) 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)) @@ -53,6 +56,8 @@ datum/preferences/proc/set_biological_gender(var/gender) if(character.dna) character.dna.real_name = character.real_name + character.nickname = pref.nickname + character.gender = pref.biological_gender character.identifying_gender = pref.identifying_gender character.age = pref.age @@ -62,7 +67,9 @@ datum/preferences/proc/set_biological_gender(var/gender) . += "Name: " . += "[pref.real_name]
" . += "Randomize Name
" - . += "Always Random Name: [pref.be_random_name ? "Yes" : "No"]" + . += "Always Random Name: [pref.be_random_name ? "Yes" : "No"]
" + . += "Nickname: " + . += "[pref.nickname]" . += "
" . += "Biological Gender: [gender2text(pref.biological_gender)]
" . += "Gender Identity: [gender2text(pref.identifying_gender)]
" @@ -92,6 +99,17 @@ datum/preferences/proc/set_biological_gender(var/gender) pref.be_random_name = !pref.be_random_name return TOPIC_REFRESH + else if(href_list["nickname"]) + var/raw_nickname = input(user, "Choose your character's nickname:", "Character Nickname") as text|null + if (!isnull(raw_nickname) && CanUseTopic(user)) + var/new_nickname = sanitize_name(raw_nickname, pref.species, is_FBP()) + if(new_nickname) + pref.nickname = new_nickname + return TOPIC_REFRESH + else + user << "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 ." + return TOPIC_NOACTION + 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 get_genders() if(new_gender && CanUseTopic(user)) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 4709fb3e81..23ad2d7409 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -25,6 +25,7 @@ datum/preferences //character preferences var/real_name //our character's name var/be_random_name = 0 //whether we are a random name every round + var/nickname //our character's nickname var/age = 30 //age of character var/spawnpoint = "Arrivals Shuttle" //where this character will spawn (0-2). var/b_type = "A+" //blood type (not-chooseable) diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index 3a451bff44..c2a7b5668a 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -88,6 +88,8 @@ // Checks if the mob's own name is included inside message. Handles both first and last names. /mob/proc/check_mentioned(var/message) var/list/valid_names = splittext(real_name, " ") // Should output list("John", "Doe") as an example. + var/list/nicknames = splittext(nickname, " ") + valid_names += nicknames valid_names += special_mentions() for(var/name in valid_names) if(findtext(message, regex("\\b[name]\\b", "i"))) // This is to stop 'ai' from triggering if someone says 'wait'. diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index e296db2ab9..716a5d62c2 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -67,6 +67,7 @@ var/stuttering = null //Carbon var/slurring = null //Carbon var/real_name = null + var/nickname = null var/flavor_text = "" var/med_record = "" var/sec_record = ""