mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 21:48:39 +01:00
[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:
co-authored by
GoldenAlpharex
parent
df4cdc3c29
commit
6e9caab6df
@@ -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
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user