diff --git a/code/__defines/species_languages.dm b/code/__defines/species_languages.dm index c1aaed9e42..44273c80ff 100644 --- a/code/__defines/species_languages.dm +++ b/code/__defines/species_languages.dm @@ -5,12 +5,15 @@ #define NO_PAIN 0x8 // Cannot suffer halloss/recieves deceptive health indicator. #define NO_SLIP 0x10 // Cannot fall over. #define NO_POISON 0x20 // Cannot not suffer toxloss. +#define NO_EMBED 0x40 // Can step on broken glass with no ill-effects and cannot have shrapnel embedded in it. // unused: 0x8000 - higher than this will overflow // Species spawn flags #define SPECIES_IS_WHITELISTED 0x1 // Must be whitelisted to play. #define SPECIES_IS_RESTRICTED 0x2 // Is not a core/normally playable species. (castes, mutantraces) #define SPECIES_CAN_JOIN 0x4 // Species is selectable in chargen. +#define SPECIES_NO_FBP_CONSTRUCTION 0x8 // FBP of this species can't be made in-game. +#define SPECIES_NO_FBP_CHARGEN 0x10 // FBP of this species can't be selected at chargen. // Species appearance flags #define HAS_SKIN_TONE 0x1 // Skin tone selectable in chargen. (0-255) @@ -22,15 +25,19 @@ #define RADIATION_GLOWS 0x40 // Radiation causes this character to glow. // Languages. +#define LANGUAGE_GALCOM "Galactic Common" +#define LANGUAGE_EAL "Encoded Audio Language" #define LANGUAGE_SOL_COMMON "Sol Common" #define LANGUAGE_UNATHI "Sinta'unathi" #define LANGUAGE_SIIK "Siik" #define LANGUAGE_SKRELLIAN "Skrellian" -#define LANGUAGE_ROOTSPEAK "Rootspeak" #define LANGUAGE_TRADEBAND "Tradeband" #define LANGUAGE_GUTTER "Gutter" #define LANGUAGE_SCHECHI "Schechi" +#define LANGUAGE_ROOTLOCAL "Local Rootspeak" +#define LANGUAGE_ROOTGLOBAL "Global Rootspeak" #define LANGUAGE_CULT "Cult" +#define LANGUAGE_SIGN "Sign Language" // Language flags. #define WHITELISTED 1 // Language is available if the speaker is whitelisted. @@ -42,3 +49,4 @@ #define INNATE 64 // All mobs can be assumed to speak and understand this language. (audible emotes) #define NO_TALK_MSG 128 // Do not show the "\The [speaker] talks into \the [radio]" message #define NO_STUTTER 256 // No stuttering, slurring, or other speech problems +#define ALT_TRANSMIT 512 // Language is not based on vision or sound (Todo: add this into the say code and use it for the rootspeak languages) \ No newline at end of file diff --git a/code/modules/games/spaceball_cards.dm b/code/modules/games/spaceball_cards.dm index 11ded83550..9488192a72 100644 --- a/code/modules/games/spaceball_cards.dm +++ b/code/modules/games/spaceball_cards.dm @@ -14,7 +14,7 @@ P.name = "Spaceball Jones, [year] Brickburn Galaxy Trekers" P.card_icon = "spaceball_jones" else - var/language_type = pick(/datum/language/human,/datum/language/diona,/datum/language/tajaran,/datum/language/unathi) + var/language_type = pick(/datum/language/human,/datum/language/diona_local,/datum/language/tajaran,/datum/language/unathi) var/datum/language/L = new language_type() var/team = pick("Brickburn Galaxy Trekers","Mars Rovers", "Qerrbalak Saints", "Moghes Rockets", "Meralar Lightning", starsys_name+" Vixens", "Euphoric-Earth Alligators") P.name = "[L.get_random_name(pick(MALE,FEMALE))], [year - rand(0,50)] [team]" diff --git a/code/modules/mob/language/generic.dm b/code/modules/mob/language/generic.dm index 8e22cd0493..7df164c821 100644 --- a/code/modules/mob/language/generic.dm +++ b/code/modules/mob/language/generic.dm @@ -20,7 +20,7 @@ // 'basic' language; spoken by default. /datum/language/common - name = "Galactic Common" + name = LANGUAGE_GALCOM desc = "The common galactic tongue." speech_verb = "says" whisper_verb = "whispers" @@ -39,7 +39,7 @@ // Galactic common languages (systemwide accepted standards). /datum/language/trader - name = "Tradeband" + name = LANGUAGE_TRADEBAND desc = "Maintained by the various trading cartels in major systems, this elegant, structured language is used for bartering and bargaining." speech_verb = "enunciates" colour = "say_quote" @@ -56,7 +56,7 @@ // Criminal language. /datum/language/gutter - name = "Gutter" + name = LANGUAGE_GUTTER desc = "There is no true language named Gutter. 'Gutter' is a catchall term for a collection of unofficial SolCom dialects that has somehow managed to spread across the stars." speech_verb = "growls" colour = "rough" @@ -115,7 +115,7 @@ "his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi") /datum/language/sign - name = "Sign Language" + name = LANGUAGE_SIGN desc = "A sign language commonly used for those who are deaf or mute." signlang_verb = list("gestures") colour = "say_quote" diff --git a/code/modules/mob/language/language.dm b/code/modules/mob/language/language.dm index f3d59d3649..b9eb226e12 100644 --- a/code/modules/mob/language/language.dm +++ b/code/modules/mob/language/language.dm @@ -160,12 +160,15 @@ // Can we speak this language, as opposed to just understanding it? /mob/proc/can_speak(datum/language/speaking) //Prevents someone from speaking a null language. - if(speaking) - return (speaking.can_speak_special(src) && (universal_speak || (speaking && (speaking.flags & INNATE)) || speaking in src.languages)) - else + if(!speaking) log_debug("[src] attempted to speak a null language.") return 0 + if (only_species_language && speaking != all_languages[species_language]) + return 0 + + return (speaking.can_speak_special(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) return client.prefs.language_prefixes[1] @@ -213,7 +216,10 @@ /mob/living/Topic(href, href_list) if(href_list["default_lang"]) if(href_list["default_lang"] == "reset") - set_default_language(null) + if (species_language) + set_default_language(all_languages[species_language]) + else + set_default_language(null) else var/datum/language/L = locate(href_list["default_lang"]) if(L && (L in languages)) @@ -223,4 +229,10 @@ else return ..() +/proc/transfer_languages(var/mob/source, var/mob/target, var/except_flags) + for(var/datum/language/L in source.languages) + if(L.flags & except_flags) + continue + target.add_language(L.name) + #undef SCRAMBLE_CACHE_LEN diff --git a/code/modules/mob/language/station.dm b/code/modules/mob/language/station.dm index 77cb8f1ad5..b69c9cca5f 100644 --- a/code/modules/mob/language/station.dm +++ b/code/modules/mob/language/station.dm @@ -1,6 +1,6 @@ -/datum/language/diona - name = "Rootspeak" - desc = "A creaking, subvocal language spoken instinctively by the Dionaea. Due to the unique makeup of the average Diona, a phrase of Rootspeak can be a combination of anywhere from one to twelve individual voices and notes." +/datum/language/diona_local + name = LANGUAGE_ROOTLOCAL + desc = "A complex language known instinctively by Dionaea, 'spoken' by emitting modulated radio waves. This version uses high frequency waves for quick communication at short ranges." speech_verb = "creaks and rustles" ask_verb = "creaks" exclaim_verb = "rustles" @@ -9,13 +9,19 @@ flags = RESTRICTED syllables = list("hs","zt","kr","st","sh") -/datum/language/diona/get_random_name() +/datum/language/diona_local/get_random_name() var/new_name = "[pick(list("To Sleep Beneath","Wind Over","Embrace of","Dreams of","Witnessing","To Walk Beneath","Approaching the"))]" new_name += " [pick(list("the Void","the Sky","Encroaching Night","Planetsong","Starsong","the Wandering Star","the Empty Day","Daybreak","Nightfall","the Rain"))]" return new_name +/datum/language/diona_global + name = LANGUAGE_ROOTGLOBAL + desc = "A complex language known instinctively by Dionaea, 'spoken' by emitting modulated radio waves. This version uses low frequency waves for slow communication at long ranges." + key = "w" + flags = RESTRICTED | HIVEMIND + /datum/language/unathi - name = "Sinta'unathi" + name = LANGUAGE_UNATHI desc = "The common language of Moghes, composed of sibilant hisses and rattles. Spoken natively by Unathi." speech_verb = "hisses" ask_verb = "hisses" @@ -42,7 +48,7 @@ return capitalize(new_name) /datum/language/tajaran - name = "Siik" + name = LANGUAGE_SIIK desc = "The most prevalant language of Meralar, composed of expressive yowls and chirps. Native to the Tajaran." speech_verb = "mrowls" ask_verb = "mrowls" @@ -65,7 +71,7 @@ return new_name /datum/language/skrell - name = "Skrellian" + name = LANGUAGE_SKRELLIAN desc = "A melodic and complex language spoken by the Skrell of Qerrbalak. Some of the notes are inaudible to humans." speech_verb = "warbles" ask_verb = "warbles" @@ -76,7 +82,7 @@ syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix","*","!") /datum/language/human - name = "Sol Common" + name = LANGUAGE_SOL_COMMON desc = "A bastardized hybrid of informal English and elements of Mandarin Chinese; the common language of the Sol system." speech_verb = "says" whisper_verb = "whispers" @@ -104,8 +110,8 @@ return ..() /datum/language/machine - name = "Encoded Audio Language" - desc = "A efficient language of encoded tones developed by synthetics and cyborgs." + name = LANGUAGE_EAL + desc = "An efficient language of encoded tones developed by synthetics and cyborgs." speech_verb = "whistles" ask_verb = "chirps" exclaim_verb = "whistles loudly" @@ -127,7 +133,7 @@ return pick(ai_names) /datum/language/seromi - name = "Schechi" + name = LANGUAGE_SCHECHI desc = "A trilling language spoken by the diminutive Teshari." speech_verb = "chirps" ask_verb = "chirrups" diff --git a/code/modules/mob/living/carbon/alien/diona/diona.dm b/code/modules/mob/living/carbon/alien/diona/diona.dm index ba8932ebf9..ebcd4d7774 100644 --- a/code/modules/mob/living/carbon/alien/diona/diona.dm +++ b/code/modules/mob/living/carbon/alien/diona/diona.dm @@ -7,9 +7,11 @@ speak_emote = list("chirrups") icon_state = "nymph" item_state = "nymph" - language = "Rootspeak" + language = LANGUAGE_ROOTLOCAL + species_language = LANGUAGE_ROOTLOCAL + only_species_language = 1 death_msg = "expires with a pitiful chirrup..." - universal_understand = 1 + universal_understand = 0 universal_speak = 0 // Dionaea do not need to speak to people other than other dionaea. can_pull_size = ITEMSIZE_SMALL @@ -22,6 +24,8 @@ ..() species = all_species["Diona"] + add_language(LANGUAGE_ROOTGLOBAL) + add_language(LANGUAGE_GALCOM) verbs += /mob/living/carbon/alien/diona/proc/merge /mob/living/carbon/alien/diona/put_in_hands(var/obj/item/W) // No hands. diff --git a/code/modules/mob/living/carbon/alien/progression.dm b/code/modules/mob/living/carbon/alien/progression.dm index 371058511b..4a22c34c6d 100644 --- a/code/modules/mob/living/carbon/alien/progression.dm +++ b/code/modules/mob/living/carbon/alien/progression.dm @@ -28,6 +28,8 @@ adult.set_species(new_species) show_evolution_blurb() + transfer_languages(src, adult) + if(mind) mind.transfer_to(adult) if (can_namepick_as_adult) diff --git a/code/modules/mob/living/carbon/alien/say.dm b/code/modules/mob/living/carbon/alien/say.dm index 28ae01391f..b92b5dc06d 100644 --- a/code/modules/mob/living/carbon/alien/say.dm +++ b/code/modules/mob/living/carbon/alien/say.dm @@ -17,9 +17,6 @@ var/datum/language/speaking = parse_language(message) - if(speaking) - message = copytext(message, 2+length(speaking.key)) - message = trim(message) if(!message || stat) diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index 27cdc59d80..8060e328ee 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -177,7 +177,7 @@ /obj/item/device/mmi/digital/New() src.brainmob = new(src) src.brainmob.add_language("Robot Talk") - src.brainmob.add_language("Encoded Audio Language") + src.brainmob.add_language(LANGUAGE_EAL) src.brainmob.loc = src src.brainmob.container = src src.brainmob.stat = 0 diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 5ca686cae3..b0110137f1 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -4,6 +4,8 @@ ingested = new/datum/reagents/metabolism(1000, src, CHEM_INGEST) touching = new/datum/reagents/metabolism(1000, src, CHEM_TOUCH) reagents = bloodstr + if (!default_language && species_language) + default_language = all_languages[species_language] ..() /mob/living/carbon/Life() diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm index 948f338297..7a27e3c341 100644 --- a/code/modules/mob/living/carbon/human/human_powers.dm +++ b/code/modules/mob/living/carbon/human/human_powers.dm @@ -114,11 +114,15 @@ set name = "Split" set desc = "Split your humanoid form into its constituent nymphs." set category = "Abilities" + diona_split_into_nymphs(5) // Separate proc to void argments being supplied when used as a verb +/mob/living/carbon/human/proc/diona_split_into_nymphs(var/number_of_resulting_nymphs) var/turf/T = get_turf(src) var/mob/living/carbon/alien/diona/S = new(T) S.set_dir(dir) + transfer_languages(src, S) + if(mind) mind.transfer_to(S) @@ -129,12 +133,14 @@ for(var/mob/living/carbon/alien/diona/D in src) nymphs++ - D.loc = T + D.forceMove(T) + transfer_languages(src, D, WHITELISTED|RESTRICTED) D.set_dir(pick(NORTH, SOUTH, EAST, WEST)) - if(nymphs < 5) - for(var/i in nymphs to 4) + if(nymphs < number_of_resulting_nymphs) + for(var/i in nymphs to (number_of_resulting_nymphs - 1)) var/mob/M = new /mob/living/carbon/alien/diona(T) + transfer_languages(src, M, WHITELISTED|RESTRICTED) M.set_dir(pick(NORTH, SOUTH, EAST, WEST)) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 42ec14d46b..7b53d86214 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -40,13 +40,13 @@ var/max_age = 70 // Language/culture vars. - var/default_language = "Galactic Common" // Default language is used when 'say' is used without modifiers. - var/language = "Galactic Common" // Default racial language, if any. + var/default_language = LANGUAGE_GALCOM // Default language is used when 'say' is used without modifiers. + var/language = LANGUAGE_GALCOM // Default racial language, if any. var/list/secondary_langs = list() // The names of secondary languages that are available to this species. var/list/speech_sounds // A list of sounds to potentially play when speaking. var/list/speech_chance // The likelihood of a speech sound playing. var/num_alternate_languages = 0 // How many secondary languages are available to select at character creation - var/name_language = "Galactic Common" // The language to use when determining names for this species, or null to use the first name/last name generator + var/name_language = LANGUAGE_GALCOM // The language to use when determining names for this species, or null to use the first name/last name generator // Combat vars. var/total_health = 100 // Point at which the mob will enter crit. diff --git a/code/modules/mob/living/carbon/human/species/station/seromi.dm b/code/modules/mob/living/carbon/human/species/station/seromi.dm index 9316eaecad..c7ba7ae0eb 100644 --- a/code/modules/mob/living/carbon/human/species/station/seromi.dm +++ b/code/modules/mob/living/carbon/human/species/station/seromi.dm @@ -7,8 +7,8 @@ are only recently becoming known on human stations after reaching space with Skrell assistance." num_alternate_languages = 3 - secondary_langs = list("Schechi", "Skrellian") - name_language = "Schechi" + secondary_langs = list(LANGUAGE_SCHECHI, LANGUAGE_SKRELLIAN) + name_language = LANGUAGE_SCHECHI min_age = 12 max_age = 45 health_hud_intensity = 3 diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 6393ef4720..2109dfdcdd 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -9,7 +9,7 @@ interests, rampant cyber and bio-augmentation and secretive factions make life on most human \ worlds tumultous at best." num_alternate_languages = 3 - secondary_langs = list("Sol Common") + secondary_langs = list(LANGUAGE_SOL_COMMON) name_language = null // Use the first-name last-name generator rather than a language scrambler min_age = 17 max_age = 110 @@ -35,8 +35,8 @@ slowdown = 0.5 brute_mod = 0.8 num_alternate_languages = 3 - secondary_langs = list("Sinta'unathi") - name_language = "Sinta'unathi" + secondary_langs = list(LANGUAGE_UNATHI) + name_language = LANGUAGE_UNATHI health_hud_intensity = 2.5 min_age = 18 @@ -96,8 +96,8 @@ burn_mod = 1.15 gluttonous = 1 num_alternate_languages = 3 - secondary_langs = list("Siik") - name_language = "Siik" + secondary_langs = list(LANGUAGE_SIIK) + name_language = LANGUAGE_SIIK health_hud_intensity = 2.5 min_age = 17 @@ -152,8 +152,8 @@ herbivores on the whole and tend to be co-operative with the other species of the galaxy, although they rarely reveal \ the secrets of their empire to their allies." num_alternate_languages = 3 - secondary_langs = list("Skrellian", "Schechi") - name_language = "Skrellian" + secondary_langs = list(LANGUAGE_SKRELLIAN, LANGUAGE_SCHECHI) + name_language = LANGUAGE_SKRELLIAN health_hud_intensity = 2 min_age = 19 @@ -197,7 +197,7 @@ name_plural = "Dionaea" icobase = 'icons/mob/human_races/r_diona.dmi' deform = 'icons/mob/human_races/r_def_plant.dmi' - language = "Rootspeak" + language = LANGUAGE_ROOTLOCAL unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/diona) //primitive_form = "Nymph" slowdown = 5 @@ -206,7 +206,8 @@ siemens_coefficient = 0.3 show_ssd = "completely quiescent" num_alternate_languages = 2 - name_language = "Rootspeak" + secondary_langs = list(LANGUAGE_ROOTGLOBAL) + name_language = LANGUAGE_ROOTLOCAL health_hud_intensity = 2.5 min_age = 1 diff --git a/code/modules/mob/living/default_language.dm b/code/modules/mob/living/default_language.dm index 5204fb879b..b9eae4b5a1 100644 --- a/code/modules/mob/living/default_language.dm +++ b/code/modules/mob/living/default_language.dm @@ -5,11 +5,18 @@ set name = "Set Default Language" set category = "IC" - if(language && !can_speak(language)) - src << "You are unable to speak that language." - return + if (only_species_language && language != all_languages[src.species_language]) + to_chat(src, "You can only speak your species language, [src.species_language].") + return 0 + + if(language == all_languages[src.species_language]) + to_chat(src, "You will now speak your standard default language, [language], if you do not specify a language when speaking.") + else if (language) + + if(language && !can_speak(language)) + to_chat(src, "You are unable to speak that language.") + return - if(language) src << "You will now speak [language] if you do not specify a language when speaking." else src << "You will now speak whatever your standard default language is if you do not specify one when speaking." diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index fd38776dd5..2ef6e62c9d 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -148,15 +148,16 @@ var/list/ai_verbs_hidden = list( // For why this exists, refer to https://xkcd.c //Languages add_language("Robot Talk", 1) - add_language("Galactic Common", 1) - add_language("Sol Common", 0) - add_language("Sinta'unathi", 0) - add_language("Siik", 0) - add_language("Skrellian", 0) - add_language("Tradeband", 1) - add_language("Gutter", 0) - add_language("Encoded Audio Language", 1) - add_language("Schechi", 0) + add_language(LANGUAGE_GALCOM, 1) + add_language(LANGUAGE_SOL_COMMON, 0) + add_language(LANGUAGE_UNATHI, 0) + add_language(LANGUAGE_SIIK, 0) + add_language(LANGUAGE_SKRELLIAN, 0) + add_language(LANGUAGE_TRADEBAND, 1) + add_language(LANGUAGE_GUTTER, 0) + add_language(LANGUAGE_EAL, 1) + add_language(LANGUAGE_SCHECHI, 0) + add_language(LANGUAGE_SIGN, 0) if(!safety)//Only used by AIize() to successfully spawn an AI. if (!B)//If there is no player/brain inside. diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 57a9dd837b..7ba76ecfb5 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -89,10 +89,11 @@ radio = card.radio //Default languages without universal translator software - add_language("Sol Common", 1) - add_language("Tradeband", 1) - add_language("Gutter", 1) - add_language("Encoded Audio Language", 1) + add_language(LANGUAGE_SOL_COMMON, 1) + add_language(LANGUAGE_TRADEBAND, 1) + add_language(LANGUAGE_GUTTER, 1) + add_language(LANGUAGE_EAL, 1) + add_language(LANGUAGE_SIGN, 0) verbs += /mob/living/silicon/pai/proc/choose_chassis verbs += /mob/living/silicon/pai/proc/choose_verbs diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm index 1b11e4e984..83f68056b7 100644 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -468,13 +468,15 @@ // Sol Common, Tradeband and Gutter are added with New() and are therefore the current default, always active languages user.translator_on = !user.translator_on if(user.translator_on) - user.add_language("Sinta'unathi") - user.add_language("Siik") - user.add_language("Skrellian") + user.add_language(LANGUAGE_UNATHI) + user.add_language(LANGUAGE_SIIK) + user.add_language(LANGUAGE_SKRELLIAN) + user.add_language(LANGUAGE_SCHECHI) else - user.remove_language("Sinta'unathi") - user.remove_language("Siik") - user.remove_language("Skrellian") + user.remove_language(LANGUAGE_UNATHI) + user.remove_language(LANGUAGE_SIIK) + user.remove_language(LANGUAGE_SKRELLIAN) + user.remove_language(LANGUAGE_SCHECHI) is_active(mob/living/silicon/pai/user) return user.translator_on diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 27a98d5d01..1059e270a4 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -99,7 +99,7 @@ spark_system.attach(src) add_language("Robot Talk", 1) - add_language("Encoded Audio Language", 1) + add_language(LANGUAGE_EAL, 1) wires = new(src) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 45af995df8..e4b4ff9427 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -23,7 +23,7 @@ var/global/list/robot_modules = list( var/hide_on_manifest = 0 var/channels = list() var/networks = list() - var/languages = list(LANGUAGE_SOL_COMMON = 1, LANGUAGE_TRADEBAND = 1, LANGUAGE_UNATHI = 0, LANGUAGE_SIIK = 0, LANGUAGE_SKRELLIAN = 0, LANGUAGE_GUTTER = 0, LANGUAGE_SCHECHI = 0) + var/languages = list(LANGUAGE_SOL_COMMON = 1, LANGUAGE_TRADEBAND = 1, LANGUAGE_UNATHI = 0, LANGUAGE_SIIK = 0, LANGUAGE_SKRELLIAN = 0, LANGUAGE_GUTTER = 0, LANGUAGE_SCHECHI = 0, LANGUAGE_SIGN = 0) var/sprites = list() var/can_be_pushed = 1 var/no_slip = 0 @@ -478,10 +478,12 @@ var/global/list/robot_modules = list( LANGUAGE_UNATHI = 1, LANGUAGE_SIIK = 1, LANGUAGE_SKRELLIAN = 1, - LANGUAGE_ROOTSPEAK = 1, + LANGUAGE_ROOTLOCAL = 0, LANGUAGE_TRADEBAND = 1, LANGUAGE_GUTTER = 1, - LANGUAGE_SCHECHI = 1 + LANGUAGE_SCHECHI = 1, + LANGUAGE_EAL = 1, + LANGUAGE_SIGN = 0 ) /obj/item/weapon/robot_module/robot/clerical/butler @@ -631,9 +633,11 @@ var/global/list/robot_modules = list( LANGUAGE_UNATHI = 0, LANGUAGE_SIIK = 0, LANGUAGE_SKRELLIAN = 0, - LANGUAGE_ROOTSPEAK = 0, + LANGUAGE_ROOTLOCAL = 0, LANGUAGE_GUTTER = 1, - LANGUAGE_SCHECHI = 0 + LANGUAGE_SCHECHI = 0, + LANGUAGE_EAL = 1, + LANGUAGE_SIGN = 0 ) sprites = list( "Dread" = "securityrobot", diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm index fadfafc458..6ef066a257 100644 --- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm +++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm @@ -43,8 +43,8 @@ /mob/living/simple_animal/spiderbot/New() ..() - add_language("Galactic Common") - default_language = all_languages["Galactic Common"] + add_language(LANGUAGE_GALCOM) + default_language = all_languages[LANGUAGE_GALCOM] verbs |= /mob/living/proc/ventcrawl verbs |= /mob/living/proc/hide diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 47bbdcd3a6..6a5e39e961 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -90,6 +90,8 @@ var/list/pinned = list() // List of things pinning this creature to walls (see living_defense.dm) var/list/embedded = list() // Embedded items, since simple mobs don't have organs. var/list/languages = list() // For speaking/listening. + var/species_language = null // For species who want reset to use a specified default. + var/only_species_language = 0 // For species who can only speak their default and no other languages. Does not affect understanding. var/list/speak_emote = list("says") // Verbs used when speaking. Defaults to 'say' if speak_emote is null. var/emote_type = 1 // Define emote default type, 1 for seen emotes, 2 for heard emotes var/facing_dir = null // Used for the ancient art of moonwalking. diff --git a/code/modules/research/prosfab_designs.dm b/code/modules/research/prosfab_designs.dm index 43e933c00c..02a05eb64d 100644 --- a/code/modules/research/prosfab_designs.dm +++ b/code/modules/research/prosfab_designs.dm @@ -44,7 +44,7 @@ H.real_name = "Synthmorph #[rand(100,999)]" H.name = H.real_name H.dir = 2 - H.add_language("Encoded Audio Language") + H.add_language(LANGUAGE_EAL) return H //////////////////// Prosthetics //////////////////// diff --git a/html/changelogs/Anewbe - Languages.yml b/html/changelogs/Anewbe - Languages.yml new file mode 100644 index 0000000000..df087346dc --- /dev/null +++ b/html/changelogs/Anewbe - Languages.yml @@ -0,0 +1,36 @@ +################################ +# 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 +################################# + +# Your name. +author: FTangSteve + +# 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: + - wip: "RootSpeak is now split into a local and a global variant. For now the global acts as a hivemind." \ No newline at end of file