diff --git a/code/modules/client/preference_setup/loadout/items/augments.dm b/code/modules/client/preference_setup/loadout/items/augments.dm index 0a0e8754d66..ca6c13a90aa 100644 --- a/code/modules/client/preference_setup/loadout/items/augments.dm +++ b/code/modules/client/preference_setup/loadout/items/augments.dm @@ -237,3 +237,13 @@ path = /obj/item/organ/internal/augment/head_fluff/lhand_fluff flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK, SPECIES_VAURCA_BREEDER, SPECIES_UNATHI) + +/datum/gear/augment/skrell_language + display_name = "Zeng-Hu Nral'malic language processor" + description = "An augmentation developed by Zeng-Hu Pharmaceuticals' Nralakk Division to enable the recipient to understand the complex and inaudible tones of Nral'malic." + path = /obj/item/organ/internal/augment/language/zeng + whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD) + faction = "Zeng-Hu Pharmaceuticals" + allowed_roles = list("Physician", "Surgeon", "Chief Medical Officer", "Pharmacist", "First Responder", "Psychiatrist", "Medical Intern", "Corporate Liaison", "Research Director","Scientist", "Xenobiologist", "Xenobotanist", "Xenoarchaeologist", "Lab Assistant", "Assistant", "Off-Duty Crew Member", "Captain") + cost = 3 + diff --git a/code/modules/mob/language/language.dm b/code/modules/mob/language/language.dm index 647b85ab148..fe034fe5604 100644 --- a/code/modules/mob/language/language.dm +++ b/code/modules/mob/language/language.dm @@ -180,6 +180,16 @@ /datum/language/proc/handle_message_mode(var/message_mode) return list(src, message_mode) +/** + * Checks if a language with special physical requirements can be spoken by a mob + * Returns `TRUE` if allowed to, `FALSE` otherwise + * + * * speaker - A `mob` to check for the ability to speak the language + */ +/datum/language/proc/check_speech_restrict(mob/speaker) + SHOULD_NOT_SLEEP(TRUE) + return TRUE + // Language handling. /mob/proc/add_language(var/language) var/datum/language/new_language @@ -210,7 +220,7 @@ // Can we speak this language, as opposed to just understanding it? /mob/proc/can_speak(datum/language/speaking) - return (universal_speak || (speaking && speaking.flags & INNATE) || (speaking in src.languages)) + return (speaking.check_speech_restrict(src) && (universal_speak || (speaking && speaking.flags & INNATE) || (speaking in src.languages))) /mob/proc/get_language_prefix() if(client && client.prefs.language_prefixes && client.prefs.language_prefixes.len) @@ -251,8 +261,10 @@ if(!(L.flags & NONGLOBAL)) if(L == default_language) dat += "[L.name] ([get_language_prefix()][L.key]) - default - reset
[L.desc]

" - else + else if(can_speak(L)) dat += "[L.name] ([get_language_prefix()][L.key]) - set default
[L.desc]

" + else + dat += "[L.name] ([get_language_prefix()][L.key]) - cannot speak!
[L.desc]

" if(L.written_style) dat += "You can write in this language on papers by writing \[lang=[L.key]\]YourTextHere\[/lang\].

" diff --git a/code/modules/mob/language/station.dm b/code/modules/mob/language/station.dm index d6fc731a55c..8a282746a55 100644 --- a/code/modules/mob/language/station.dm +++ b/code/modules/mob/language/station.dm @@ -179,6 +179,17 @@ syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix","*","!") allow_accents = TRUE +/datum/language/skrell/check_speech_restrict(mob/speaker) + if(!ishuman(speaker)) + return FALSE + var/mob/living/carbon/human/H = speaker + var/obj/item/organ/internal/augment/language/zeng/aug = H.internal_organs_by_name[BP_AUG_LANGUAGE] + if(istype(aug) && !isskrell(H)) + to_chat(speaker, SPAN_WARNING("You are not capable of speaking Nral'malic!")) + return FALSE + else + return TRUE + /datum/language/skrell/get_random_name() var/new_name = "" var/suff = "" diff --git a/code/modules/organs/subtypes/augment.dm b/code/modules/organs/subtypes/augment.dm index f3fe61ed4fc..0a7c8d5c0e1 100644 --- a/code/modules/organs/subtypes/augment.dm +++ b/code/modules/organs/subtypes/augment.dm @@ -470,6 +470,10 @@ name = "Zino language processor" augment_languages = list(LANGUAGE_GUTTER) +/obj/item/organ/internal/augment/language/zeng + name = "Zeng-Hu Nral'malic language processor" + augment_languages = list(LANGUAGE_SKRELLIAN) + /obj/item/organ/internal/augment/gustatorial name = "gustatorial centre" action_button_name = "Activate Gustatorial Centre (tongue)" diff --git a/html/changelogs/RustingWithYou - warble.yml b/html/changelogs/RustingWithYou - warble.yml new file mode 100644 index 00000000000..18492ec2302 --- /dev/null +++ b/html/changelogs/RustingWithYou - warble.yml @@ -0,0 +1,41 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: RustingWithYou + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Adds a Nral'malic language implant for Zeng-Hu employees."