[MODULARIZING] Removes Foreigner and Adds Quirk Sanitization (#16836)

* Go away, I'm done with your code.

* Haha copypaste go brrrr

* Remove this dead code

* This annoys me too much after looking over my diff

* Tired of waiting, let's get this bread.

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
This commit is contained in:
RimiNosha
2022-10-26 18:11:43 -04:00
committed by GitHub
co-authored by GoldenAlpharex
parent df4cdc3c29
commit 6e9caab6df
8 changed files with 27 additions and 30 deletions
+2 -1
View File
@@ -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
@@ -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) \
@@ -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]
@@ -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
@@ -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
@@ -0,0 +1,3 @@
// Go away foreigner, we have you in code in a different way already.
/datum/quirk/foreigner
hidden_quirk = TRUE
@@ -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.
+1 -1
View File
@@ -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"