diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 3b0d17bc471..552384e6469 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -113,8 +113,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/loaded_preferences_successfully = load_preferences() if(loaded_preferences_successfully) if(load_character()) - // SKYRAT EDIT START - Sanitizing languages + // SKYRAT EDIT START - Sanitizing preferences sanitize_languages() + sanitize_quirks() // SKYRAT EDIT END return // SKYRAT EDIT - Don't remove this. Just don't. Nothing is worth forced random characters. //we couldn't load character data so just randomize the character appearance + name diff --git a/code/modules/client/preferences/middleware/quirks.dm b/code/modules/client/preferences/middleware/quirks.dm index 5998bfb5de0..6cbeab67fc6 100644 --- a/code/modules/client/preferences/middleware/quirks.dm +++ b/code/modules/client/preferences/middleware/quirks.dm @@ -76,15 +76,6 @@ /datum/preference_middleware/quirks/proc/remove_quirk(list/params, mob/user) var/quirk_name = params["quirk"] - // SKYRAT EDIT ADDITION - var/list/quirks = SSquirks.get_quirks() - var/datum/quirk/quirk = quirks[quirk_name] - if(quirk == /datum/quirk/foreigner) - preferences.languages = new /list() - for(var/language in preferences.get_adjusted_language_holder()) - preferences.languages[language] = LANGUAGE_SPOKEN - // SKYRAT EDIT END - var/list/new_quirks = preferences.all_quirks - quirk_name if ( \ !(quirk_name in preferences.all_quirks) \ diff --git a/modular_skyrat/master_files/code/modules/client/preferences.dm b/modular_skyrat/master_files/code/modules/client/preferences.dm index c48ebc39c47..5264a08f207 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences.dm @@ -99,14 +99,12 @@ species = new species() var/datum/language_holder/language_holder = new species.species_language_holder() - if(all_quirks.Find("Foreigner")) - language_holder.remove_language(/datum/language/common) - if(language_holder.spoken_languages.len == 0) - language_holder.grant_language(/datum/language/uncommon) + // Do language post procesing here. Used to house our foreigner functionality. + // I saw little reason to remove this proc, considering it makes code using this a little easier to read. return language_holder -// Whenever we switch a species, we'll try to get common if we can to not confuse anyone +/// Tries to get the topmost language of the language holder. Should be the species' native language, and if it isn't, you should pester a coder. /datum/preferences/proc/try_get_common_language() var/datum/language_holder/language_holder = get_adjusted_language_holder() var/language = language_holder.spoken_languages[1] diff --git a/modular_skyrat/master_files/code/modules/client/preferences/middleware/languages.dm b/modular_skyrat/master_files/code/modules/client/preferences/middleware/languages.dm index ce4978e76b3..01de11e3886 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences/middleware/languages.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences/middleware/languages.dm @@ -96,9 +96,6 @@ if(species.always_customizable && !(language.type in lang_holder.spoken_languages)) // For the ghostrole species. We don't want ashwalkers speaking beachtongue now. continue - if(language.type == /datum/language/common && preferences.all_quirks.Find("Foreigner")) // Stops foreigners from taking common. Bad foreigner. - preferences.languages.Remove(/datum/language/common) // Make sure common doesn't stay invisibly. - continue if(preferences.languages[language.type]) selected_languages += list(list( "description" = language.desc, @@ -148,7 +145,7 @@ return TRUE /** - * Proc that removes a language to a character. + * Proc that removes a language from a character. * * Arguments: * * params - List of parameters, given to us by the `act()` method from TGUI. Needs to diff --git a/modular_skyrat/modules/customization/modules/client/preferences.dm b/modular_skyrat/modules/customization/modules/client/preferences.dm index 68e5be5043e..d5b3213c8fe 100644 --- a/modular_skyrat/modules/customization/modules/client/preferences.dm +++ b/modular_skyrat/modules/customization/modules/client/preferences.dm @@ -14,3 +14,20 @@ languages.Remove(lang_path) languages_edited = TRUE return languages_edited + +/// Cleans any quirks that should be hidden, or just simply don't exist from quirk code. +/datum/preferences/proc/sanitize_quirks() + var/quirks_edited = FALSE + for(var/datum/quirk/quirk as anything in all_quirks) + if(isnull(quirk)) + all_quirks.Remove(quirk) + quirks_edited = TRUE + continue + + quirk = new quirk() + // Explanation for this is above. + if(!(quirk.type in subtypesof(/datum/quirk)) || quirk.hidden_quirk) + all_quirks.Remove(quirk) + quirks_edited = TRUE + + return quirks_edited diff --git a/modular_skyrat/modules/customization/modules/language/_foreigner.dm b/modular_skyrat/modules/customization/modules/language/_foreigner.dm new file mode 100644 index 00000000000..7ebb6fbfcee --- /dev/null +++ b/modular_skyrat/modules/customization/modules/language/_foreigner.dm @@ -0,0 +1,3 @@ +// Go away foreigner, we have you in code in a different way already. +/datum/quirk/foreigner + hidden_quirk = TRUE diff --git a/modular_skyrat/modules/customization/modules/language/_foreigner_helper.dm b/modular_skyrat/modules/customization/modules/language/_foreigner_helper.dm deleted file mode 100644 index 02f9553cb3b..00000000000 --- a/modular_skyrat/modules/customization/modules/language/_foreigner_helper.dm +++ /dev/null @@ -1,10 +0,0 @@ -// Forces foreigner to give non-human races their alternate language, if they have one, otherwise, give them uncommon, because we don't follow TG's species language stuff. -/datum/quirk/foreigner/add() - if(iscarbon(quirk_holder) && quirk_holder.client) - var/datum/language_holder/language_holder = quirk_holder.get_language_holder() - var/language = quirk_holder.client?.prefs?.try_get_common_language() - language = language ? language : /datum/language/uncommon - language_holder.remove_language(/datum/language/common) - quirk_holder.add_blocked_language(/datum/language/common) - language_holder.grant_language(language) - language_holder.selected_language = language // Saves foreigner users from having to select it themselves. diff --git a/tgstation.dme b/tgstation.dme index fad26e6a7e2..c63adc5d40e 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -5476,7 +5476,7 @@ #include "modular_skyrat\modules\customization\modules\hydroponics\grown\piru.dm" #include "modular_skyrat\modules\customization\modules\hydroponics\grown\tea_coffee.dm" #include "modular_skyrat\modules\customization\modules\jobs\_job.dm" -#include "modular_skyrat\modules\customization\modules\language\_foreigner_helper.dm" +#include "modular_skyrat\modules\customization\modules\language\_foreigner.dm" #include "modular_skyrat\modules\customization\modules\language\_language_holder.dm" #include "modular_skyrat\modules\customization\modules\language\ashtongue.dm" #include "modular_skyrat\modules\customization\modules\language\beachbum.dm"