mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-20 20:37:34 +01:00
@@ -190,22 +190,65 @@
|
||||
SHOULD_NOT_SLEEP(TRUE)
|
||||
return TRUE
|
||||
|
||||
// Language handling.
|
||||
/mob/proc/add_language(var/language)
|
||||
/**
|
||||
* Adds a language to the known ones for the mob, returns `TRUE` if added successfully, `FALSE` otherwise
|
||||
*
|
||||
* Does NOT make it the default language
|
||||
*
|
||||
* * language - The language to add, can either be a `/datum/language` or a string, see the LANGUAGE_* defines in `code\__defines\species_languages.dm` for the strings
|
||||
*/
|
||||
/mob/proc/add_language(language)
|
||||
SHOULD_NOT_SLEEP(TRUE)
|
||||
|
||||
var/datum/language/new_language
|
||||
if(istype(language, /datum/language))
|
||||
new_language = language
|
||||
else
|
||||
new_language = all_languages[language]
|
||||
|
||||
if (!istype(new_language) || !new_language)
|
||||
CRASH("ERROR: Language [language] not found in list of all languages. The language you're looking for may have been moved, renamed, or removed. Please recheck the spelling of the name.")
|
||||
if(!istype(new_language) || !new_language)
|
||||
crash_with("ERROR: Language [language] not found in list of all languages. The language you're looking for may have been moved, renamed, or removed. Please recheck the spelling of the name.")
|
||||
|
||||
if(new_language in languages)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
languages.Add(new_language)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/**
|
||||
* Set default language for a `/mob/living`, return `TRUE` if set successfully, `FALSE` otherwise
|
||||
*
|
||||
* * language - The language to set as default, can either be a `/datum/language`, a string as per `LANGUAGE_*` defines in `code\__defines\species_languages.dm`,
|
||||
* or `null` to remove the default language
|
||||
*/
|
||||
/mob/living/proc/set_default_language(language)
|
||||
SHOULD_NOT_SLEEP(TRUE)
|
||||
|
||||
var/datum/language/new_default_language
|
||||
if(istype(language, /datum/language))
|
||||
new_default_language = language
|
||||
else
|
||||
new_default_language = all_languages[language]
|
||||
|
||||
if(!isnull(new_default_language) && !istype(new_default_language))
|
||||
stack_trace("ERROR: Language [language] not found in list of all languages. The language you're looking for may have been moved, renamed, or removed. Please recheck the spelling of the name.")
|
||||
return FALSE
|
||||
|
||||
if(!isnull(new_default_language) && !(new_default_language in languages))
|
||||
stack_trace("Trying to set a default language that is not known by the mob! The language must first be added for it to be set as default!")
|
||||
return FALSE
|
||||
|
||||
default_language = new_default_language
|
||||
return TRUE
|
||||
|
||||
//Silicons can only speak languages listed in the `speech_synthesizer_langs`, even if they can understand more
|
||||
/mob/living/silicon/set_default_language(language)
|
||||
|
||||
//Return FALSE if they can't speak this language
|
||||
if(!(language in speech_synthesizer_langs))
|
||||
return FALSE
|
||||
|
||||
. = ..()
|
||||
|
||||
/mob/proc/remove_language(var/rem_language)
|
||||
var/datum/language/L = all_languages[rem_language]
|
||||
|
||||
@@ -318,7 +318,9 @@
|
||||
/datum/language/bug/check_speech_restrict(var/mob/speaker)
|
||||
var/mob/living/carbon/human/H = speaker
|
||||
var/obj/item/organ/internal/vaurca/neuralsocket/S = H.internal_organs_by_name[BP_NEURAL_SOCKET]
|
||||
if(S.muted || S.disrupted)
|
||||
|
||||
//Black k'ois zombies don't have neural sockets but need to talk, hence check if the socket exists, or it will runtime for them
|
||||
if(S && (S.muted || S.disrupted))
|
||||
to_chat(speaker, SPAN_WARNING("You have been muted over the Hivenet!"))
|
||||
return FALSE
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user