diff --git a/code/modules/client/preference_setup/general/02_language.dm b/code/modules/client/preference_setup/general/02_language.dm index 9ceb693bd2..a85c62b232 100644 --- a/code/modules/client/preference_setup/general/02_language.dm +++ b/code/modules/client/preference_setup/general/02_language.dm @@ -1,5 +1,6 @@ /datum/preferences var/extra_languages = 0 + var/preferred_language = "common" // CHOMPStation Edit: Allow selecting a preferred language /datum/category_item/player_setup_item/general/language name = "Language" @@ -14,6 +15,7 @@ S["language_prefixes"] >> pref.language_prefixes //CHOMPEdit Begin S["species"] >> pref.species + S["preflang"] >> pref.preferred_language //CHOMPEdit End S["language_custom_keys"] >> pref.language_custom_keys @@ -24,6 +26,7 @@ testing("LANGSANI: Loaded from [pref.client]'s character [pref.real_name || "-name not yet loaded-"] savefile: [english_list(pref.alternate_languages || list())]") S["language_prefixes"] << pref.language_prefixes S["language_custom_keys"] << pref.language_custom_keys + S["preflang"] << pref.preferred_language // CHOMPStation Edit /datum/category_item/player_setup_item/general/language/sanitize_character() if(!islist(pref.alternate_languages)) pref.alternate_languages = list() @@ -35,6 +38,11 @@ testing("LANGSANI: Truncated [pref.client]'s character [pref.real_name || "-name not yet loaded-"] language list because it was too long (len: [pref.alternate_languages.len], allowed: [S.num_alternate_languages])") pref.alternate_languages.len = (S.num_alternate_languages + pref.extra_languages) // Truncate to allowed length + // CHOMPStation Edit Start + if(!(pref.preferred_language in pref.alternate_languages) || !pref.preferred_language) // Safety handling for if our preferred language is ever somehow removed from the character's list of langauges, or they don't have one set + pref.preferred_language = S.language // Reset to default, for safety + // CHOMPStation Edit end + // Sanitize illegal languages for(var/language in pref.alternate_languages) var/datum/language/L = GLOB.all_languages[language] @@ -79,6 +87,7 @@ . += "Language Keys
" . += " [jointext(pref.language_prefixes, " ")] Change Reset
" + . += "Preferred Language [pref.preferred_language]
" // CHOMPStation Add /datum/category_item/player_setup_item/general/language/OnTopic(var/href,var/list/href_list, var/mob/user) if(href_list["remove_language"]) @@ -166,4 +175,22 @@ return TOPIC_REFRESH + // CHOMPStation Add: Preferred Language + else if(href_list["pref_lang"]) + if(pref.species) // Safety to prevent a null runtime here + var/datum/species/S = GLOB.all_species[pref.species] + var/list/lang_opts = list(S.language) + pref.alternate_languages + var/selection = tgui_input_list(user, "Choose your preferred spoken language:", "Preferred Spoken Language", lang_opts, pref.preferred_language) + if(!selection) // Set our preferred to default, just in case. + tgui_alert_async(user, "Preferred Language not modified.", "Selection Canceled") + if(selection) + pref.preferred_language = selection + if(selection == "common" || selection == S.language) + tgui_alert_async(user, "You will now speak your standard default language, [S.language ? S.language : "common"], if you do not specify a language when speaking.", "Preferred Set to Default") + else // Did they set anything else? + tgui_alert_async(user, "You will now speak [pref.preferred_language] if you do not specify a language when speaking.", "Preferred Language Set") + return TOPIC_REFRESH + // CHOMPStation Add End + + return ..() diff --git a/code/modules/client/preference_setup/vore/03_egg.dm b/code/modules/client/preference_setup/vore/03_egg.dm index 49efcdf798..7c7c91e148 100644 --- a/code/modules/client/preference_setup/vore/03_egg.dm +++ b/code/modules/client/preference_setup/vore/03_egg.dm @@ -1,6 +1,13 @@ // Define a place to save appearance in character setup +// CHOMPStation Add Start: Doing this here bc AUTOHISS_FULL is more readable than # +#define AUTOHISS_OFF 0 +#define AUTOHISS_BASIC 1 +#define AUTOHISS_FULL 2 +// CHOMPStation Add End + /datum/preferences var/vore_egg_type = "Egg" //The egg type they have. + var/autohiss = "Full" // CHOMPStation Add: Whether we have Autohiss on. I'm hijacking the egg panel bc this one has a shitton of unused space. // Definition of the stuff for the egg type. /datum/category_item/player_setup_item/vore/egg @@ -9,19 +16,35 @@ /datum/category_item/player_setup_item/vore/egg/load_character(var/savefile/S) S["vore_egg_type"] >> pref.vore_egg_type + S["autohiss"] >> pref.autohiss // CHOMPStation Add /datum/category_item/player_setup_item/vore/egg/save_character(var/savefile/S) S["vore_egg_type"] << pref.vore_egg_type + S["autohiss"] << pref.autohiss // CHOMPStation Add /datum/category_item/player_setup_item/vore/egg/sanitize_character() pref.vore_egg_type = sanitize_inlist(pref.vore_egg_type, global_vore_egg_types, initial(pref.vore_egg_type)) /datum/category_item/player_setup_item/vore/egg/copy_to_mob(var/mob/living/carbon/human/character) character.vore_egg_type = pref.vore_egg_type + // CHOMPStation Add + if(pref.client) // Safety, just in case so we don't runtime. + if(!pref.autohiss) + pref.client.autohiss_mode = AUTOHISS_FULL + else + switch(pref.autohiss) + if("Full") + pref.client.autohiss_mode = AUTOHISS_FULL + if("Basic") + pref.client.autohiss_mode = AUTOHISS_BASIC + if("Off") + pref.client.autohiss_mode = AUTOHISS_OFF + // CHOMPStation Add /datum/category_item/player_setup_item/vore/egg/content(var/mob/user) . += "
" . += " Egg Type: [pref.vore_egg_type]
" + . += "Autohiss Default Setting: [pref.autohiss]
" // CHOMPStation Add /datum/category_item/player_setup_item/vore/egg/OnTopic(var/href, var/list/href_list, var/mob/user) if(!CanUseTopic(user)) @@ -33,5 +56,21 @@ if(selection) pref.vore_egg_type = selection return TOPIC_REFRESH + // CHOMPStation Add Start + else if(href_list["autohiss"]) + var/list/autohiss_selection = list("Full", "Basic", "Off") + var/selection = tgui_input_list(user, "Choose your default autohiss setting:", "Character Preference", autohiss_selection, pref.autohiss) + if(selection) + pref.autohiss = selection + else if(!selection) + pref.autohiss = "Full" + return TOPIC_REFRESH + // CHOMPStation Add End else return + +// CHOMPStation Add Start: Doing this here bc AUTOHISS_FULL is more readable than # +#undef AUTOHISS_OFF +#undef AUTOHISS_BASIC +#undef AUTOHISS_FULL +// CHOMPStation Add End diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 70e9ea7fb8..04a855e6e3 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -647,6 +647,12 @@ var/datum/language/keylang = GLOB.all_languages[client.prefs.language_custom_keys[key]] if(keylang) new_character.language_keys[key] = keylang + // CHOMPStation Add: Preferred Language Setting; + if(client.prefs.preferred_language) // Do we have a preferred language? + var/datum/language/def_lang = GLOB.all_languages[client.prefs.preferred_language] + if(def_lang) + new_character.default_language = def_lang + // CHOMPStation Add End // And uncomment this, too. //new_character.dna.UpdateSE() diff --git a/code/modules/resleeving/autoresleever.dm b/code/modules/resleeving/autoresleever.dm index 3d91f24db8..6469a4a8e8 100644 --- a/code/modules/resleeving/autoresleever.dm +++ b/code/modules/resleeving/autoresleever.dm @@ -172,6 +172,12 @@ var/datum/language/keylang = GLOB.all_languages[ghost_client.prefs.language_custom_keys[key]] if(keylang) new_character.language_keys[key] = keylang + // CHOMPStation Add: Preferred Language Setting; + if(ghost_client.prefs.preferred_language) // Do we have a preferred language? + var/datum/language/def_lang = GLOB.all_languages[ghost_client.prefs.preferred_language] + if(def_lang) + new_character.default_language = def_lang + // CHOMPStation Add End //If desired, apply equipment. if(equip_body) diff --git a/code/modules/vore/eating/inbelly_spawn.dm b/code/modules/vore/eating/inbelly_spawn.dm index 207f3ca4e0..e8d5ae31a6 100644 --- a/code/modules/vore/eating/inbelly_spawn.dm +++ b/code/modules/vore/eating/inbelly_spawn.dm @@ -166,6 +166,12 @@ Please do not abuse this ability. var/datum/language/keylang = GLOB.all_languages[prey.prefs.language_custom_keys[key]] if(keylang) new_character.language_keys[key] = keylang + // CHOMPStation Add: Preferred Language Setting; + if(prey.prefs.preferred_language) // Do we have a preferred language? + var/datum/language/def_lang = GLOB.all_languages[prey.prefs.preferred_language] + if(def_lang) + new_character.default_language = def_lang + // CHOMPStation Add End new_character.regenerate_icons() @@ -179,4 +185,4 @@ Please do not abuse this ability. log_admin("[prey] (as [new_character.real_name] has spawned inside one of [pred]'s bellies.") // Log it. Avoid abuse. message_admins("[prey] (as [new_character.real_name] has spawned inside one of [pred]'s bellies.", 1) - return new_character // incase its ever needed \ No newline at end of file + return new_character // incase its ever needed