From 68ba68c82379afd3733072faa77e0f1262a5336c Mon Sep 17 00:00:00 2001 From: Daeberdir <115735095+Daeberdir@users.noreply.github.com> Date: Wed, 21 Feb 2024 16:39:25 +0200 Subject: [PATCH] refactor: two-character keys for languages. (#4215) --- code/__DEFINES/language.dm | 45 ++- code/__HELPERS/global_lists.dm | 16 +- code/datums/datumvars.dm | 2 +- code/datums/mind.dm | 2 +- code/datums/outfits/outfit_admin.dm | 4 +- code/datums/outfits/outfit_security_clown.dm | 2 +- code/defines/procs/announce.dm | 4 +- code/game/gamemodes/clockwork/cogscarab.dm | 4 +- code/game/gamemodes/heist/heist.dm | 6 +- .../gamemodes/miniantags/abduction/gland.dm | 2 +- code/game/gamemodes/miniantags/borer/borer.dm | 4 +- .../gamemodes/miniantags/bot_swarm/swarmer.dm | 2 +- code/game/gamemodes/shadowling/shadowling.dm | 6 +- .../shadowling/shadowling_abilities.dm | 2 +- .../special_shadowling_abilities.dm | 2 +- code/game/jobs/job/support.dm | 2 +- code/game/machinery/tcomms/core.dm | 2 +- code/game/machinery/tcomms/nttc.dm | 16 +- .../objects/items/devices/radio/headset.dm | 4 +- code/modules/admin/verbs/honksquad.dm | 2 +- .../changeling/changeling_datum.dm | 12 +- .../antagonists/changeling/powers/hivemind.dm | 22 +- .../antagonists/changeling/powers/linglink.dm | 6 +- .../ghost_role_spawners/oldstation.dm | 6 +- .../mission_code/ruins/USSP_gorky17.dm | 2 +- .../mission_code/ruins/oldstation.dm | 4 +- code/modules/client/preference/preferences.dm | 25 +- code/modules/mob/language.dm | 285 +++++++++++------- code/modules/mob/living/carbon/alien/alien.dm | 2 +- .../living/carbon/alien/humanoid/humanoid.dm | 4 +- .../mob/living/carbon/alien/larva/larva.dm | 4 +- code/modules/mob/living/carbon/brain/brain.dm | 2 +- .../living/carbon/human/species/_species.dm | 12 +- .../living/carbon/human/species/abductor.dm | 8 +- .../mob/living/carbon/human/species/diona.dm | 2 +- .../mob/living/carbon/human/species/drask.dm | 2 +- .../mob/living/carbon/human/species/golem.dm | 8 +- .../mob/living/carbon/human/species/grey.dm | 2 +- .../mob/living/carbon/human/species/human.dm | 2 +- .../mob/living/carbon/human/species/kidan.dm | 2 +- .../living/carbon/human/species/machine.dm | 2 +- .../mob/living/carbon/human/species/monkey.dm | 12 +- .../mob/living/carbon/human/species/moth.dm | 2 +- .../living/carbon/human/species/nucleation.dm | 2 +- .../mob/living/carbon/human/species/skrell.dm | 2 +- .../mob/living/carbon/human/species/slime.dm | 2 +- .../living/carbon/human/species/tajaran.dm | 2 +- .../mob/living/carbon/human/species/unathi.dm | 6 +- .../mob/living/carbon/human/species/vox.dm | 2 +- .../living/carbon/human/species/vulpkanin.dm | 2 +- .../mob/living/carbon/human/species/wryn.dm | 4 +- code/modules/mob/living/default_language.dm | 8 +- code/modules/mob/living/living_say.dm | 51 ++-- code/modules/mob/living/silicon/ai/ai.dm | 36 +-- code/modules/mob/living/silicon/pai/pai.dm | 10 +- .../silicon/pai/software/pai_toggles.dm | 48 +-- .../mob/living/silicon/robot/drone/drone.dm | 8 +- .../living/silicon/robot/drone/drone_say.dm | 2 +- .../modules/mob/living/silicon/robot/robot.dm | 4 +- .../mob/living/silicon/robot/robot_modules.dm | 69 ++--- code/modules/mob/living/silicon/silicon.dm | 30 +- .../mob/living/simple_animal/bot/bot.dm | 12 +- .../mob/living/simple_animal/friendly/cat.dm | 2 +- .../living/simple_animal/friendly/diona.dm | 2 +- .../mob/living/simple_animal/friendly/fox.dm | 2 +- .../hostile/terror_spiders/terror_spiders.dm | 6 +- .../mob/living/simple_animal/slime/slime.dm | 2 +- code/modules/mob/mob_say.dm | 12 +- code/modules/mob/new_player/new_player.dm | 4 +- code/modules/paperwork/paper.dm | 4 +- .../projectiles/guns/projectile/automatic.dm | 2 +- .../reagents/chemistry/reagents/alcohol.dm | 2 +- .../reagents/chemistry/reagents/misc.dm | 2 +- code/modules/ruins/ussp_base.dm | 22 +- code/modules/surgery/organs/subtypes/grey.dm | 4 +- code/modules/surgery/organs/subtypes/xenos.dm | 8 +- 76 files changed, 521 insertions(+), 410 deletions(-) diff --git a/code/__DEFINES/language.dm b/code/__DEFINES/language.dm index e944bc746eb..b065d72c431 100644 --- a/code/__DEFINES/language.dm +++ b/code/__DEFINES/language.dm @@ -1,4 +1,46 @@ -//Language flags. +// Language keys. +#define LANGUAGE_NONE "None" +#define LANGUAGE_NOISE "Noise" +#define LANGUAGE_UNATHI "Sinta'unathi" +#define LANGUAGE_TAJARAN "Siik'tajr" +#define LANGUAGE_VULPKANIN "Canilunzt" +#define LANGUAGE_SKRELL "Skrellian" +#define LANGUAGE_VOX "Vox-pidgin" +#define LANGUAGE_DIONA "Rootspeak" +#define LANGUAGE_TRINARY "Trinary" +#define LANGUAGE_KIDAN "Chittin" +#define LANGUAGE_SLIME "Bubblish" +#define LANGUAGE_GREY "Psionic Communication" +#define LANGUAGE_DRASK "Orluum" +#define LANGUAGE_MOTH "Tkachi" +#define LANGUAGE_GALACTIC_COMMON "Galactic Common" +#define LANGUAGE_SOL_COMMON "Sol Common" +#define LANGUAGE_TRADER "Tradeband" +#define LANGUAGE_GUTTER "Gutter" +#define LANGUAGE_CLOWN "Clownish" +#define LANGUAGE_NEO_RUSSIAN "Neo-Russkiya" +#define LANGUAGE_WRYN "Wryn Hivemind" +#define LANGUAGE_XENOS "Xenomorph" +#define LANGUAGE_HIVE_XENOS "Xenomorph Hivemind" +#define LANGUAGE_HIVE_TERRORSPIDER "Spider Hivemind" +#define LANGUAGE_HIVE_CHANGELING "Changeling Hivemind" +#define LANGUAGE_HIVE_EVENTLING "Infiltrated Changeling Hivemind" +#define LANGUAGE_HIVE_SHADOWLING "Shadowling Hivemind" +#define LANGUAGE_HIVE_ABDUCTOR "Abductor Mindlink" +#define LANGUAGE_HIVE_GOLEM "Golem Mindlink" +#define LANGUAGE_HIVE_BORER "Cortical Link" +#define LANGUAGE_BINARY "Robot Talk" +#define LANGUAGE_DRONE_BINARY "Drone Talk" +#define LANGUAGE_DRONE "Drone" +#define LANGUAGE_HIVE_SWARMER "Swarmer" +#define LANGUAGE_MONKEY_HUMAN "Chimpanzee" +#define LANGUAGE_MONKEY_SKRELL "Neara" +#define LANGUAGE_MONKEY_UNATHI "Stok" +#define LANGUAGE_MONKEY_TAJARAN "Farwa" +#define LANGUAGE_MONKEY_VULPKANIN "Wolpin" + + +// Language flags. #define WHITELISTED (1<<0) // Language is available if the speaker is whitelisted. #define RESTRICTED (1<<1) // Language can only be accquired by spawning or an admin. #define HIVEMIND (1<<4) // Broadcast to all mobs with this language. @@ -7,6 +49,7 @@ #define NO_TALK_MSG (1<<7) // Do not show the "\The [speaker] talks into \the [radio]" message #define NO_STUTTER (1<<8) // No stuttering, slurring, or other speech problems #define NOBABEL (1<<9) // Not granted by book of babel. Typically antag languages. +#define UNIQUE (1<<10) // Secondary languages for species. //Auto-accent level defines. #define AUTOHISS_OFF 0 diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 8183767ec15..1dd34ff1a1c 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -44,14 +44,14 @@ // Setup languages for(var/language_name in GLOB.all_languages) - var/datum/language/L = GLOB.all_languages[language_name] - if(!(L.flags & NONGLOBAL)) - GLOB.language_keys[":[lowertext(L.key)]"] = L - GLOB.language_keys[".[lowertext(L.key)]"] = L - GLOB.language_keys["#[lowertext(L.key)]"] = L - GLOB.language_keys[":[sanitize_english_string_to_russian(L.key)]"] = L - GLOB.language_keys[".[sanitize_english_string_to_russian(L.key)]"] = L - GLOB.language_keys["#[sanitize_english_string_to_russian(L.key)]"] = L + var/datum/language/language = GLOB.all_languages[language_name] + if(!(language.flags & NONGLOBAL)) + GLOB.language_keys[":[lowertext(language.key)]"] = language + GLOB.language_keys[".[lowertext(language.key)]"] = language + GLOB.language_keys["#[lowertext(language.key)]"] = language + GLOB.language_keys[":[sanitize_english_string_to_russian(language.key)]"] = language + GLOB.language_keys[".[sanitize_english_string_to_russian(language.key)]"] = language + GLOB.language_keys["#[sanitize_english_string_to_russian(language.key)]"] = language var/rkey = 0 for(var/spath in subtypesof(/datum/species)) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 3191d873d02..cd78cee5c9f 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -1144,7 +1144,7 @@ to_chat(usr, "Mob doesn't exist anymore") return - if(H.remove_language(rem_language.name)) + if(H.remove_language(rem_language)) to_chat(usr, "Removed [rem_language] from [H].") log_and_message_admins("has removed language [rem_language] from [key_name(H)]") else diff --git a/code/datums/mind.dm b/code/datums/mind.dm index f0066e38c3d..ebed4a37b6c 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -2732,7 +2732,7 @@ SSticker.mode.shadows -= src special_role = null current.spellremove(current) - current.remove_language("Shadowling Hivemind") + current.remove_language(LANGUAGE_HIVE_SHADOWLING) else if(src in SSticker.mode.shadowling_thralls) SSticker.mode.remove_thrall(src,0) diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm index d61c287aad7..0454c304237 100644 --- a/code/datums/outfits/outfit_admin.dm +++ b/code/datums/outfits/outfit_admin.dm @@ -716,8 +716,8 @@ H.rename_character(null, "[rank_list.len ? pick(rank_list) : "[H.gender==FEMALE ? pick(GLOB.first_names_female) : pick(GLOB.first_names_male)]"] [H.gender==FEMALE ? pick(GLOB.last_names_female) : pick(GLOB.last_names)]") - H.add_language("Neo-Russkiya") - H.set_default_language(GLOB.all_languages["Neo-Russkiya"]) + H.add_language(LANGUAGE_NEO_RUSSIAN) + H.set_default_language(GLOB.all_languages[LANGUAGE_NEO_RUSSIAN]) var/obj/item/card/id/I = H.wear_id if(istype(I)) diff --git a/code/datums/outfits/outfit_security_clown.dm b/code/datums/outfits/outfit_security_clown.dm index dea615cdc30..fc0a5e2fffb 100644 --- a/code/datums/outfits/outfit_security_clown.dm +++ b/code/datums/outfits/outfit_security_clown.dm @@ -107,7 +107,7 @@ genemutcheck(H, GLOB.comicblock, null, MUTCHK_FORCED) H.dna.default_blocks.Add(GLOB.comicblock) H.check_mutations = TRUE - H.add_language("Clownish") + H.add_language(LANGUAGE_CLOWN) var/clownsecurity_rank = pick("Офицер", "Кадет", "Новобранец", "Рядовой", "Ефрейтор", "Сержант", "Детектив", "Оперуполномоченный", "Расследователь", "Охранник", "Полевой офицер") if(is_physician) diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index 45f27e5481a..e124d06c5f9 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -12,7 +12,7 @@ GLOBAL_DATUM_INIT(event_announcement, /datum/announcement/priority/command/event var/channel_name = "Station Announcements" var/announcement_type = "Оповещение" var/admin_announcement = 0 // Admin announcements are received regardless of being in range of a radio, unless you're in the lobby to prevent metagaming - var/language = "Galactic Common" + var/language = LANGUAGE_GALACTIC_COMMON /datum/announcement/New(var/do_log = 0, var/new_sound = null, var/do_newscast = 0) sound = new_sound @@ -44,7 +44,7 @@ GLOBAL_DATUM_INIT(event_announcement, /datum/announcement/priority/command/event title = "Оповещение о безопасности" announcement_type = "Оповещение о безопасности" -/datum/announcement/proc/Announce(var/message as text, var/new_title = "", var/new_sound = null, var/do_newscast = newscast, var/msg_sanitized = 0, var/from, var/msg_language) +/datum/announcement/proc/Announce(message as text, new_title = "", new_sound = null, do_newscast = newscast, msg_sanitized = 0, from, msg_language) if(!message) return diff --git a/code/game/gamemodes/clockwork/cogscarab.dm b/code/game/gamemodes/clockwork/cogscarab.dm index b866143694c..c63b78796ff 100644 --- a/code/game/gamemodes/clockwork/cogscarab.dm +++ b/code/game/gamemodes/clockwork/cogscarab.dm @@ -55,8 +55,8 @@ /mob/living/silicon/robot/cogscarab/Initialize(mapload) . = ..() - remove_language("Robot Talk") - add_language("Drone Talk", 1) + remove_language(LANGUAGE_BINARY) + add_language(LANGUAGE_DRONE_BINARY, 1) if(radio) radio.wires.cut(WIRE_RADIO_TRANSMIT) diff --git a/code/game/gamemodes/heist/heist.dm b/code/game/gamemodes/heist/heist.dm index 896d17f0462..b642c35c58a 100644 --- a/code/game/gamemodes/heist/heist.dm +++ b/code/game/gamemodes/heist/heist.dm @@ -101,9 +101,9 @@ GLOBAL_LIST_EMPTY(cortical_stacks) //Stacks for 'leave nobody behind' objective. vox.s_tone = rand(1, 6) vox.languages = list() // Removing language from chargen. vox.flavor_text = "" - vox.add_language("Vox-pidgin") - vox.add_language("Galactic Common") - vox.add_language("Tradeband") + vox.add_language(LANGUAGE_VOX) + vox.add_language(LANGUAGE_GALACTIC_COMMON) + vox.add_language(LANGUAGE_TRADER) head_organ.h_style = "Short Vox Quills" head_organ.f_style = "Shaved" vox.change_hair_color(97, 79, 25) //Same as the species default colour. diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm index 5d558132598..9b070793273 100644 --- a/code/game/gamemodes/miniantags/abduction/gland.dm +++ b/code/game/gamemodes/miniantags/abduction/gland.dm @@ -129,7 +129,7 @@ /obj/item/organ/internal/heart/gland/slime/insert(mob/living/carbon/M, special = ORGAN_MANIPULATION_DEFAULT) ..() owner.faction |= "slime" - owner.add_language("Bubblish") + owner.add_language(LANGUAGE_SLIME) /obj/item/organ/internal/heart/gland/slime/activate() to_chat(owner, "You feel nauseous!") diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm index 4de7b12abf4..d42c937ac03 100644 --- a/code/game/gamemodes/miniantags/borer/borer.dm +++ b/code/game/gamemodes/miniantags/borer/borer.dm @@ -120,7 +120,7 @@ ..(newloc) remove_from_all_data_huds() generation = gen - add_language("Cortical Link") + add_language(LANGUAGE_HIVE_BORER) notify_ghosts("Мозговой червь появился в [get_area(src)]!", enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK) real_name = "Cortical Borer [rand(1000,9999)]" truename = "[borer_names[min(generation, borer_names.len)]] [rand(1000,9999)]" @@ -157,7 +157,7 @@ /mob/living/simple_animal/borer/say(message, verb = "says", sanitize = TRUE, ignore_speech_problems = FALSE, ignore_atmospherics = FALSE, ignore_languages = FALSE) var/list/message_pieces = parse_languages(message) for(var/datum/multilingual_say_piece/S in message_pieces) - if(!istype(S.speaking, /datum/language/corticalborer) && loc == host && !talk_inside_host) + if(S.speaking != GLOB.all_languages[LANGUAGE_HIVE_BORER] && loc == host && !talk_inside_host) Communicate(message) return return ..() diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm index 8b0e46464f2..0b97571fa65 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm @@ -116,7 +116,7 @@ /mob/living/simple_animal/hostile/swarmer/New() ..() - add_language("Swarmer", 1) + add_language(LANGUAGE_HIVE_SWARMER, 1) verbs -= /mob/living/verb/pulled for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) diag_hud.add_to_hud(src) diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm index f6c877338e7..398ee971a71 100644 --- a/code/game/gamemodes/shadowling/shadowling.dm +++ b/code/game/gamemodes/shadowling/shadowling.dm @@ -147,7 +147,7 @@ Made by Xhuis var/mob/living/carbon/human/S = shadow_mind.current shadow_mind.AddSpell(new /obj/effect/proc_holder/spell/shadowling_hatch(null)) spawn(0) - shadow_mind.current.add_language("Shadowling Hivemind") + shadow_mind.current.add_language(LANGUAGE_HIVE_SHADOWLING) update_shadow_icons_added(shadow_mind) if(shadow_mind.assigned_role == "Clown") to_chat(S, "Your alien nature has allowed you to overcome your clownishness.") @@ -161,7 +161,7 @@ Made by Xhuis new_thrall_mind.special_role = SPECIAL_ROLE_SHADOWLING_THRALL update_shadow_icons_added(new_thrall_mind) add_conversion_logs(new_thrall_mind.current, "Became a Shadow thrall") - new_thrall_mind.current.add_language("Shadowling Hivemind") + new_thrall_mind.current.add_language(LANGUAGE_HIVE_SHADOWLING) //If you add spells to thrall, be sure to remove them on dethrallize new_thrall_mind.AddSpell(new /obj/effect/proc_holder/spell/shadowling_guise(null)) new_thrall_mind.AddSpell(new /obj/effect/proc_holder/spell/shadowling_vision/thrall(null)) @@ -191,7 +191,7 @@ Made by Xhuis //If you add spells to thrall, be sure to remove them on dethrallize thrall_mind.RemoveSpell(/obj/effect/proc_holder/spell/shadowling_guise) thrall_mind.RemoveSpell(/obj/effect/proc_holder/spell/shadowling_vision/thrall) - thrall_mind.current.remove_language("Shadowling Hivemind") + thrall_mind.current.remove_language(LANGUAGE_HIVE_SHADOWLING) if(kill && ishuman(thrall_mind.current)) //If dethrallization surgery fails, kill the mob as well as dethralling them var/mob/living/carbon/human/H = thrall_mind.current H.visible_message("[H] jerks violently and falls still.", \ diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index 20d0bc969fd..1f21b499f66 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -935,7 +935,7 @@ to_chat(target, "An agonizing spike of pain drives into your mind, and--") SSticker.mode.add_thrall(target.mind) target.mind.special_role = SPECIAL_ROLE_SHADOWLING_THRALL - target.add_language("Shadowling Hivemind") + target.add_language(LANGUAGE_HIVE_SHADOWLING) diff --git a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm index 38e95cd9904..5ba00f56936 100644 --- a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm @@ -282,7 +282,7 @@ GLOBAL_LIST_INIT(possibleShadowlingNames, list("U'ruan", "Y`shej", "Nex", "Hel-u undershirt = "None" socks = "None" faction |= "faithless" - add_language("Shadowling Hivemind") + add_language(LANGUAGE_HIVE_SHADOWLING) set_species(/datum/species/shadow/ling) equip_to_slot_or_del(new /obj/item/clothing/under/shadowling(src), slot_w_uniform) diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm index 914f1f20e71..81194e467c3 100644 --- a/code/game/jobs/job/support.dm +++ b/code/game/jobs/job/support.dm @@ -322,7 +322,7 @@ genemutcheck(H, GLOB.comicblock, null, MUTCHK_FORCED) H.dna.default_blocks.Add(GLOB.comicblock) H.check_mutations = TRUE - H.add_language("Clownish") + H.add_language(LANGUAGE_CLOWN) //action given to antag clowns /datum/action/innate/toggle_clumsy diff --git a/code/game/machinery/tcomms/core.dm b/code/game/machinery/tcomms/core.dm index ef724227950..5a7570a6d7e 100644 --- a/code/game/machinery/tcomms/core.dm +++ b/code/game/machinery/tcomms/core.dm @@ -265,7 +265,7 @@ if(!new_language) return if(new_language == "--DISABLE--") - nttc.setting_language = null + nttc.setting_language = LANGUAGE_NONE to_chat(usr, span_notice("Language conversion disabled.")) else nttc.setting_language = new_language diff --git a/code/game/machinery/tcomms/nttc.dm b/code/game/machinery/tcomms/nttc.dm index d1b519e827d..c069a0cfc77 100644 --- a/code/game/machinery/tcomms/nttc.dm +++ b/code/game/machinery/tcomms/nttc.dm @@ -107,7 +107,7 @@ var/toggle_command_bold = FALSE /* Strings */ - var/setting_language = null + var/setting_language = LANGUAGE_NONE var/job_indicator_type = null // This tells the datum what is safe to serialize and what's not. It also applies to deserialization. @@ -151,9 +151,9 @@ job_indicator_type = initial(job_indicator_type) /datum/nttc_configuration/proc/update_languages() - for(var/language in GLOB.all_languages) - var/datum/language/L = GLOB.all_languages[language] - if(L.flags & HIVEMIND) + for(var/language_name in GLOB.all_languages) + var/datum/language/language = GLOB.all_languages[language_name] + if(language.flags & (HIVEMIND|NONGLOBAL)) continue valid_languages[language] = TRUE @@ -260,18 +260,18 @@ var/datum/multilingual_say_piece/S = message_pieces[I] if(!S.message) continue - if(I == 1 && !istype(S.speaking, /datum/language/noise)) // Capitalise the first section only, unless it's an emote. + if(I == 1 && S.speaking != GLOB.all_languages[LANGUAGE_NOISE]) // Capitalise the first section only, unless it's an emote. S.message = "[capitalize(S.message)]" S.message = "[S.message]" // Make everything bolded // Language Conversion if(setting_language && valid_languages[setting_language]) if(setting_language == "--DISABLE--") - setting_language = null + setting_language = LANGUAGE_NONE else for(var/datum/multilingual_say_piece/S in message_pieces) - if(S.speaking != GLOB.all_languages["Noise"]) // check if they are emoting, these do not need to be translated - S.speaking = GLOB.all_languages[setting_language] + if(S.speaking != GLOB.all_languages[LANGUAGE_NOISE]) // check if they are emoting, these do not need to be translated + S.speaking = setting_language return tcm diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 58c73fcbb45..bf5cf828ba5 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -60,11 +60,11 @@ /obj/item/radio/headset/handle_message_mode(mob/living/M, list/message_pieces, channel) if(channel == "special") if(translate_binary) - var/datum/language/binary = GLOB.all_languages["Robot Talk"] + var/datum/language/binary = GLOB.all_languages[LANGUAGE_BINARY] binary.broadcast(M, strip_prefixes(multilingual_to_message(message_pieces))) return RADIO_CONNECTION_NON_SUBSPACE if(translate_hive) - var/datum/language/hivemind = GLOB.all_languages["Hivemind"] + var/datum/language/hivemind = GLOB.all_languages[LANGUAGE_HIVE_XENOS] hivemind.broadcast(M, strip_prefixes(multilingual_to_message(message_pieces))) return RADIO_CONNECTION_NON_SUBSPACE return RADIO_CONNECTION_FAIL diff --git a/code/modules/admin/verbs/honksquad.dm b/code/modules/admin/verbs/honksquad.dm index 7ea997d11b1..bbb27a3be88 100644 --- a/code/modules/admin/verbs/honksquad.dm +++ b/code/modules/admin/verbs/honksquad.dm @@ -97,7 +97,7 @@ GLOBAL_VAR_INIT(sent_clownsequritysquad, 0) new_honksquad.mind.assigned_role = SPECIAL_ROLE_HONKSQUAD new_honksquad.mind.special_role = SPECIAL_ROLE_HONKSQUAD new_honksquad.mind.offstation_role = TRUE - new_honksquad.add_language("Clownish") + new_honksquad.add_language(LANGUAGE_CLOWN) new_honksquad.change_voice() SSticker.mode.traitors |= new_honksquad.mind//Adds them to current traitor list. Which is really the extra antagonist list. new_honksquad.equip_honksquad(honk_leader_selected, rankName) diff --git a/code/modules/antagonists/changeling/changeling_datum.dm b/code/modules/antagonists/changeling/changeling_datum.dm index 8deac41e17f..abcaeda0bf5 100644 --- a/code/modules/antagonists/changeling/changeling_datum.dm +++ b/code/modules/antagonists/changeling/changeling_datum.dm @@ -343,7 +343,7 @@ GLOBAL_LIST_INIT(possible_changeling_IDs, list("Alpha","Beta","Gamma","Delta","E for(var/datum/language/language in new_languages) if(is_type_in_UID_list(language, absorbed_languages)) continue - owner.current.add_language("[language.name]") + owner.current.add_language(language.name) absorbed_languages += language.UID() @@ -352,8 +352,8 @@ GLOBAL_LIST_INIT(possible_changeling_IDs, list("Alpha","Beta","Gamma","Delta","E */ /datum/antagonist/changeling/proc/update_languages() for(var/lang_UID in absorbed_languages) - var/datum/language/lang = locateUID(lang_UID) - owner.current.add_language("[lang.name]") + var/datum/language/language = locateUID(lang_UID) + owner.current.add_language(language.name) /** @@ -378,10 +378,10 @@ GLOBAL_LIST_INIT(possible_changeling_IDs, list("Alpha","Beta","Gamma","Delta","E ignored_languages += human_user.dna.species.secondary_langs for(var/lang_UID in absorbed_languages) - var/datum/language/lang = locateUID(lang_UID) - if(lang.name in ignored_languages) + var/datum/language/language = locateUID(lang_UID) + if(language.name in ignored_languages) continue - user.remove_language("[lang.name]") + user.remove_language(language.name) /** diff --git a/code/modules/antagonists/changeling/powers/hivemind.dm b/code/modules/antagonists/changeling/powers/hivemind.dm index 4193596a411..113716a6494 100644 --- a/code/modules/antagonists/changeling/powers/hivemind.dm +++ b/code/modules/antagonists/changeling/powers/hivemind.dm @@ -35,11 +35,11 @@ GLOBAL_LIST_EMPTY(hivemind_bank) linglink.cling = cling linglink.Grant(user)*/ - if(!((GLOB.all_languages["Changeling"] in user.languages)||(GLOB.all_languages["Infiltrated changeling"] in user.languages))) + if(!((GLOB.all_languages[LANGUAGE_HIVE_CHANGELING] in user.languages)||(GLOB.all_languages[LANGUAGE_HIVE_EVENTLING] in user.languages))) if(!cling.evented) - user.add_language("Changeling") + user.add_language(LANGUAGE_HIVE_CHANGELING) else - user.add_language("Infiltrated changeling") + user.add_language(LANGUAGE_HIVE_EVENTLING) /datum/action/changeling/hivemind_pick/Remove(mob/user) @@ -52,10 +52,10 @@ GLOBAL_LIST_EMPTY(hivemind_bank) linglink.Remove(user) QDEL_NULL(linglink)*/ - if(GLOB.all_languages["Changeling"] in user.languages) - user.remove_language("Changeling") - if(GLOB.all_languages["Infiltrated changeling"] in user.languages) - user.remove_language("Infiltrated changeling") + if(GLOB.all_languages[LANGUAGE_HIVE_CHANGELING] in user.languages) + user.remove_language(LANGUAGE_HIVE_CHANGELING) + if(GLOB.all_languages[LANGUAGE_HIVE_EVENTLING] in user.languages) + user.remove_language(LANGUAGE_HIVE_EVENTLING) ..() @@ -67,10 +67,10 @@ GLOBAL_LIST_EMPTY(hivemind_bank) QDEL_NULL(linglink)*/ - if(owner && (GLOB.all_languages["Changeling"] in owner.languages)) - owner.remove_language("Changeling") - if(owner && (GLOB.all_languages["Infiltrated changeling"] in owner.languages)) - owner.remove_language("Infiltrated changeling") + if(owner && (GLOB.all_languages[LANGUAGE_HIVE_CHANGELING] in owner.languages)) + owner.remove_language(LANGUAGE_HIVE_CHANGELING) + if(owner && (GLOB.all_languages[LANGUAGE_HIVE_EVENTLING] in owner.languages)) + owner.remove_language(LANGUAGE_HIVE_EVENTLING) return ..() diff --git a/code/modules/antagonists/changeling/powers/linglink.dm b/code/modules/antagonists/changeling/powers/linglink.dm index 867600317bd..c33cfd6ffa9 100644 --- a/code/modules/antagonists/changeling/powers/linglink.dm +++ b/code/modules/antagonists/changeling/powers/linglink.dm @@ -76,11 +76,11 @@ to_chat(target, "You can now communicate in the changeling hivemind, say \":g message\" to communicate!") for(var/mob/ling in GLOB.mob_list) - if(GLOB.all_languages["Changeling"] in ling.languages) + if(GLOB.all_languages[LANGUAGE_HIVE_CHANGELING] in ling.languages) to_chat(ling, span_changeling("We can sense a foreign presence in the hivemind...")) cling?.is_linking = FALSE - target.add_language("Changeling") + target.add_language(LANGUAGE_HIVE_CHANGELING) target.say(":g AAAAARRRRGGGGGHHHHH!!") target.reagents.add_reagent("salbutamol", 40) // So they don't choke to death while you interrogate them @@ -95,7 +95,7 @@ if(QDELETED(target)) return - target.remove_language("Changeling") + target.remove_language(LANGUAGE_HIVE_CHANGELING) to_chat(target, span_userdanger("The link cannot be sustained any longer, your connection to the hivemind has faded!")) if(!QDELETED(user)) diff --git a/code/modules/awaymissions/mission_code/ghost_role_spawners/oldstation.dm b/code/modules/awaymissions/mission_code/ghost_role_spawners/oldstation.dm index db62708fbbb..f067c68b895 100644 --- a/code/modules/awaymissions/mission_code/ghost_role_spawners/oldstation.dm +++ b/code/modules/awaymissions/mission_code/ghost_role_spawners/oldstation.dm @@ -100,9 +100,9 @@ /datum/outfit/oldstation/post_equip(mob/living/carbon/human/H) . = ..() - H.remove_language("Galactic Common") - H.set_default_language(GLOB.all_languages["Sol Common"]) - H.dna.species.default_language = "Sol Common" + H.remove_language(LANGUAGE_GALACTIC_COMMON) + H.set_default_language(GLOB.all_languages[LANGUAGE_SOL_COMMON]) + H.dna.species.default_language = LANGUAGE_SOL_COMMON /datum/outfit/oldstation/officer name = "Old station officer" diff --git a/code/modules/awaymissions/mission_code/ruins/USSP_gorky17.dm b/code/modules/awaymissions/mission_code/ruins/USSP_gorky17.dm index 1f8cfc6ff85..76ea3476529 100644 --- a/code/modules/awaymissions/mission_code/ruins/USSP_gorky17.dm +++ b/code/modules/awaymissions/mission_code/ruins/USSP_gorky17.dm @@ -342,7 +342,7 @@ /////////////////// Paper notes /obj/item/paper/gorky17 - language = "Neo-Russkiya" + language = LANGUAGE_NEO_RUSSIAN /obj/item/paper/gorky17/talisman name = "Проклятый талисман" info = "

НЕ ТРОГАЙ ЭТУ ХРЕНЬ ИЗ ЯЩИКА!
\ diff --git a/code/modules/awaymissions/mission_code/ruins/oldstation.dm b/code/modules/awaymissions/mission_code/ruins/oldstation.dm index 59480303a93..c75ca6f45d7 100644 --- a/code/modules/awaymissions/mission_code/ruins/oldstation.dm +++ b/code/modules/awaymissions/mission_code/ruins/oldstation.dm @@ -104,7 +104,7 @@ // Papers /obj/item/paper/fluff/ruins/oldstation name = "Cryo Awakening Alert" - language = "Sol Common" + language = LANGUAGE_SOL_COMMON info = "**WARNING**

Catastrophic damage sustained to station. Powernet exhausted to reawaken crew.

Immediate Objectives

1: Activate emergency power generator
2: Lift station lockdown on the bridge

Please locate the 'Damage Report' on the bridge for a detailed situation report." /obj/item/paper/fluff/ruins/oldstation/damagereport @@ -152,7 +152,7 @@ *eep th* *e**l of **m..

The last words completly faded." // yep, the temperature overheat, some players set power to 5 and make the gen to blow up, rip oldstation. /obj/item/paper/ruins/oldstation - language = "Sol Common" + language = LANGUAGE_SOL_COMMON /obj/item/paper/ruins/oldstation/protoinventory name = "Theta RnD Prototype Inventory Secure Storage" diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm index f976ade0de9..0f4169430a5 100644 --- a/code/modules/client/preference/preferences.dm +++ b/code/modules/client/preference/preferences.dm @@ -140,7 +140,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts var/e_colour = "#000000" //Eye color var/alt_head = "None" //Alt head style. var/species = "Human" - var/language = "None" //Secondary language + var/language = "None" //Secondary language for choise. var/autohiss_mode = AUTOHISS_FULL //Species autohiss level. OFF, BASIC, FULL. var/tts_seed = null @@ -309,7 +309,6 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts species = initial(species) S = GLOB.all_species[species] random_character() - dat += "

" dat += "
" dat += "Name: " @@ -1547,6 +1546,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts species = tgui_input_list(user, "Please select a species", "Character Generation", sortTim(new_species, cmp = /proc/cmp_text_asc)) if(!species) + species = prev_species return var/datum/species/NS = GLOB.all_species[species] if(!istype(NS)) //The species was invalid. Notify the user and fail out. @@ -1614,7 +1614,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts alt_head = "None" //No alt heads on species that don't have them. speciesprefs = 0 //My Vox tank shouldn't change how my future Grey talks. - + language = LANGUAGE_NONE body_accessory = null //no vulptail on humans damnit body_accessory = random_body_accessory(NS.name, NS.optional_body_accessory) @@ -1641,14 +1641,18 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts alert(user, "There are not currently any available secondary languages.") else */ - for(var/L in GLOB.all_languages) - var/datum/language/lang = GLOB.all_languages[L] - if(!(lang.flags & RESTRICTED)) - new_languages += lang.name - - language = tgui_input_list(user, "Please select a secondary language", "Character Generation", sortTim(new_languages, cmp = /proc/cmp_text_asc)) - if(!language) + for(var/language_name in GLOB.all_languages) + var/datum/language/lang = GLOB.all_languages[language_name] + if(lang.flags & UNIQUE) + if(language_name in S.secondary_langs) + new_languages += language_name + else if(!(lang.flags & RESTRICTED)) + new_languages += language_name + + var/new_language = tgui_input_list(user, "Please select a secondary language", "Character Generation", sortTim(new_languages, cmp = /proc/cmp_text_asc)) + if(!new_language) return + language = new_language if("autohiss_mode") if(S.autohiss_basic_map) @@ -2614,6 +2618,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts else if(firstspace == name_length) real_name += "[character.gender==FEMALE ? pick(GLOB.last_names_female) : pick(GLOB.last_names)]" + character.add_language(language) diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index a930408f626..7ee5a2169cc 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -1,35 +1,64 @@ #define SCRAMBLE_CACHE_LEN 20 - /* + When creating new 2 letter language keys, use the following naming scheme: + For languages with a compound name, use the first letter of each word whenever possible, for example: Sol Common = "sc". + For racial languages, whenever possible, use the first two letters of the race name or use euphony for associative rows, for example: Vulpkanin = "vu" or Canilunzt = "ca". + Also don't forget about code/__DEFINES/language.dm + + Datum based languages. Easily editable and modular. Busy letters for language: - a b d f g j k o q v x y - aa as bo db fa fm fn fs vu + un ta vu sk vo di tr ki sl gr dr ni + xm db wr xh ts ch hs sh ab gl bo bi dt + sw gc sc tb gt cl nr mo ne st fa wo + + + Busy letters by radio(eng): + c e h i l m n p r s t u w x + - Busy symbols for language: - 0 1 2 3 4 5 6 7 8 9 - % ? ^ + Busy letters by radio(rus): + б г д е ё з к р с т у ц ч ш ы ь я э - CAUTION! The key must not repeat the key of the radio channel - and must not contain prohibited characters + + Busy symbols by radio: + ~ , $ _ - + * 1 2 3 + + CAUTION! The key must not repeat the key of the radio channel + and must not contain prohibited characters! */ /datum/language - var/name = "an unknown language" // Fluff name of language if any. - var/desc = "A language." // Short description for 'Check Languages'. - var/speech_verb = "says" // 'says', 'hisses', 'farts'. - var/ask_verb = "asks" // Used when sentence ends in a ? - var/list/exclaim_verbs = list("exclaims") // Used when sentence ends in a ! - var/whisper_verb // Optional. When not specified speech_verb + quietly/softly is used instead. - var/colour = "body" // CSS style to use for strings in this language. - var/key = "x" // Character used to speak in language eg. :o for Unathi. - var/flags = 0 // Various language flags. - var/native // If set, non-native speakers will have trouble speaking. - var/list/syllables // Used when scrambling text for a non-speaker. - var/list/space_chance = 55 // Likelihood of getting a space in the random scramble string. - var/follow = 0 // Applies to HIVEMIND languages - should a follow link be included for dead mobs? - var/english_names = 0 // Do we want English names by default, no matter what? + /// Fluff name of language if any. + var/name = "an unknown language" + /// Short description for 'Check Languages'. + var/desc = "A language." + /// 'says', 'hisses', 'farts'. + var/speech_verb = "says" + /// Used when sentence ends in a '?'. + var/ask_verb = "asks" + /// Used when sentence ends in a '!'. + var/list/exclaim_verbs = list("exclaims") + /// Optional. When not specified speech_verb + quietly/softly is used instead. + var/whisper_verb + /// CSS style to use for strings in this language. + var/colour = "body" + /// Character used to speak in language eg. '"un"' for Unathi. + var/key = "key" + /// Various language flags. + var/flags = 0 + /// If set, non-native speakers will have trouble speaking. + var/native + /// Used when scrambling text for a non-speaker. + var/list/syllables + /// Likelihood of getting a space in the random scramble string. + var/list/space_chance = 55 + /// Applies to HIVEMIND languages - should a follow link be included for dead mobs? + var/follow = FALSE + /// Do we want English names by default, no matter what? + var/english_names = FALSE + /// List that saves sentences spoken in this language, so as not to generate different scrambles of syllables for the same sentences. var/list/scramble_cache = list() /// Do we want to override the word-join character for scrambled text? If null, defaults to " " or ". " var/join_override @@ -65,20 +94,20 @@ var/input_size = length(input) var/scrambled_text = "" - var/capitalize = 1 + var/capitalize = TRUE while(length(scrambled_text) < input_size) var/next = pick(syllables) if(capitalize) next = capitalize(next) - capitalize = 0 + capitalize = FALSE scrambled_text += next var/chance = rand(100) if(join_override) scrambled_text += join_override else if(chance <= 5) scrambled_text += ". " - capitalize = 1 + capitalize = TRUE else if(chance > 5 && chance <= space_chance) scrambled_text += " " @@ -116,7 +145,7 @@ if(!speaker_mask) speaker_mask = speaker.name - var/msg = "[name], [speaker_mask] [get_spoken_verb(message)], [format_message(message)]" + var/msg = "[name], [speaker_mask] [genderize_decode(speaker, get_spoken_verb(message))], [format_message(message)]" for(var/mob/player in GLOB.player_list) if(istype(player,/mob/dead) && follow) @@ -145,8 +174,7 @@ /datum/language/noise name = "Noise" desc = "Noises" - key = "" - flags = RESTRICTED|NONGLOBAL|INNATE|NO_TALK_MSG|NO_STUTTER + flags = RESTRICTED|NONGLOBAL|INNATE|NO_TALK_MSG|NO_STUTTER|NOBABEL /datum/language/noise/format_message(message) return "[message]" @@ -165,7 +193,7 @@ ask_verb = "hisses" exclaim_verbs = list("roars") colour = "soghun" - key = "o" + key = "un" flags = RESTRICTED syllables = list("za","az","ze","ez","zi","iz","zo","oz","zu","uz","zs","sz","ha","ah","he","eh","hi","ih", \ "ho","oh","hu","uh","hs","sh","la","al","le","el","li","il","lo","ol","lu","ul","ls","sl","ka","ak","ke","ek", \ @@ -186,7 +214,7 @@ ask_verb = "mrowls" exclaim_verbs = list("yowls") colour = "tajaran" - key = "j" + key = "ta" flags = RESTRICTED syllables = list("rr","rr","tajr","kir","raj","kii","mir","kra","ahk","nal","vah","khaz","jri","ran","darr", \ "mi","jri","dynh","manq","rhe","zar","rrhaz","kal","chur","eech","thaa","dra","jurl","mah","sanu","dra","ii'r", \ @@ -198,7 +226,7 @@ var/list/ru_name_syllables = list("кан","тай","кир","раи","кии","мир","кра","тэк","нал","вар","хар","марр","ран","дарр", \ "мирк","ири","дин","манг","рик","зар","раз","кель","шера","тар","кей","ар","но","маи","зир","кер","нир","ра",\ "ми","рир","сей","эка","гир","ари","нэй","нре","ак","таир","эрай","жин","мра","зур","рин","сар","кин","рид","эра","ри","эна") - var/apostrophe = "’" + var/apostrophe = "'" var/new_name = "" var/full_name = "" @@ -226,7 +254,7 @@ ask_verb = "rurs" exclaim_verbs = list("barks") colour = "vulpkanin" - key = "7" + key = "vu" flags = RESTRICTED syllables = list("rur","ya","cen","rawr","bar","kuk","tek","qat","uk","wu","vuh","tah","tch","schz","auch", \ "ist","ein","entch","zwichs","tut","mir","wo","bis","es","vor","nic","gro","lll","enem","zandt","tzch","noch", \ @@ -240,7 +268,7 @@ ask_verb = "warbles" exclaim_verbs = list("warbles") colour = "skrell" - key = "k" + key = "sk" flags = RESTRICTED syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix","*","!") @@ -251,7 +279,7 @@ ask_verb = "creels" exclaim_verbs = list("loudly skrees") colour = "vox" - key = "v" + key = "vo" flags = RESTRICTED | WHITELISTED syllables = list("ti","ti","ti","hi","hi","ki","ki","ki","ki","ya","ta","ha","ka","ya","yi","chi","cha","kah", \ "SKRE","AHK","EHK","RAWK","KRA","AAA","EEE","KI","II","KRI","KA") @@ -273,7 +301,7 @@ ask_verb = "creaks" exclaim_verbs = list("rustles") colour = "diona" - key = "q" + key = "di" flags = RESTRICTED syllables = list("hs","zt","kr","st","sh") @@ -289,7 +317,7 @@ ask_verb = "queries" exclaim_verbs = list("exclaims") colour = "trinary" - key = "5" + key = "tr" flags = RESTRICTED | WHITELISTED syllables = list("0+2+0+1+1","0+1+2+2+2","1+0+1+0+0","1+0+2+1+0","2+1+0+1+2","0+2+0+1+1","2+1+2+0+0","1+0+0+2","2+0+0+1","0+0+0+2","0+0+1+2","0+0+1+2","0+0+0","1+2+0","1+2+1","2+0+1","2+2+0","1+0","1+1","0") @@ -308,7 +336,7 @@ ask_verb = "rubs their antennae together" exclaim_verbs = list("rubs their antennae together") colour = "kidan" - key = "4" + key = "ki" flags = RESTRICTED | WHITELISTED syllables = list("click","clack") @@ -328,7 +356,7 @@ ask_verb = "bubbles and pops" exclaim_verbs = list("bubbles and pops") colour = "slime" - key = "f" + key = "sl" flags = RESTRICTED | WHITELISTED syllables = list("blob","plop","pop","bop","boop") @@ -339,7 +367,7 @@ ask_verb = "inquires" exclaim_verbs = list("imparts") colour = "abductor" - key = "^" + key = "gr" flags = RESTRICTED | HIVEMIND follow = TRUE @@ -374,7 +402,7 @@ ask_verb = "hums" exclaim_verbs = list("rumbles") colour = "drask" - key = "%" + key = "dr" flags = RESTRICTED | WHITELISTED syllables = list("hoorb","vrrm","ooorm","urrrum","ooum","ee","ffm","hhh","mn","ongg") @@ -391,7 +419,7 @@ ask_verb = "flaps" exclaim_verbs = list("chatters") colour = "moth" - key = "#" + key = "ni" flags = RESTRICTED | WHITELISTED join_override = "-" syllables = list("år", "i", "går", "sek", "mo", "ff", "ok", "gj", "ø", "gå", "la", "le", @@ -412,10 +440,10 @@ speech_verb = "says" exclaim_verbs = list("exclaims", "shouts", "yells") whisper_verb = "whispers" - key = "9" + key = "gc" flags = RESTRICTED syllables = list("blah","blah","blah","bleh","meh","neh","nah","wah") - english_names = 1 + english_names = TRUE /datum/language/human name = "Sol Common" @@ -424,10 +452,10 @@ exclaim_verbs = list("exclaims", "shouts", "yells") whisper_verb = "whispers" colour = "solcom" - key = "1" + key = "sc" flags = RESTRICTED syllables = list("tao","shi","tzu","yi","com","be","is","i","op","vi","ed","lec","mo","cle","te","dis","e") - english_names = 1 + english_names = TRUE // Galactic common languages (systemwide accepted standards). /datum/language/trader @@ -435,7 +463,7 @@ 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" - key = "2" + key = "tb" space_chance = 100 syllables = list("lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit", "sed", "do", "eiusmod", "tempor", "incididunt", "ut", "labore", "et", "dolore", @@ -453,7 +481,7 @@ ask_verb = "gnarls" exclaim_verbs = list("snarls") colour = "gutter" - key = "3" + key = "gt" syllables = list ("gra","ba","ba","breh","bra","rah","dur","ra","ro","gro","go","ber","bar","geh","heh","gra") /datum/language/clown @@ -463,7 +491,7 @@ ask_verb = "honks" exclaim_verbs = list("toots", "wubs", "honks") colour = "clown" - key = "0" + key = "cl" syllables = list ("honk","squeak","bonk","toot","narf","zub","wee","wub","norf") /datum/language/com_srus @@ -473,9 +501,9 @@ whisper_verb = "mutters" exclaim_verbs = list("exaggerates") colour = "com_srus" - key = "?" + key = "nr" space_chance = 65 - english_names = 1 + english_names = TRUE syllables = list("dyen","bar","bota","vyek","tvo","slov","slav","syen","doup","vah","laz","gloz","yet", "nyet","da","sky","glav","glaz","netz","doomat","zat","moch","boz", "comy","vrad","vrade","tay","bli","ay","nov","livn","tolv","glaz","gliz", @@ -493,7 +521,7 @@ ask_verb = "chitters" exclaim_verbs = list("buzzes") colour = "alien" - key = "y" + key = "wr" flags = RESTRICTED | HIVEMIND | NOBABEL follow = TRUE @@ -513,18 +541,18 @@ speech_verb = "hisses" ask_verb = "hisses" exclaim_verbs = list("hisses") - key = "6" + key = "xm" flags = RESTRICTED syllables = list("sss","sSs","SSS") /datum/language/xenos - name = "Hivemind" + name = "Xenomorph Hivemind" desc = "Xenomorphs have the strange ability to commune over a psychic hivemind." speech_verb = "hisses" ask_verb = "hisses" exclaim_verbs = list("hisses") colour = "alien" - key = "a" + key = "xh" flags = RESTRICTED | HIVEMIND | NOBABEL follow = TRUE @@ -535,17 +563,17 @@ ask_verb = "chitters" exclaim_verbs = list("chitters") colour = "terrorspider" - key = "as" + key = "ts" flags = RESTRICTED | HIVEMIND | NOBABEL follow = TRUE /datum/language/ling - name = "Changeling" + name = "Changeling Hivemind" desc = "Although they are normally wary and suspicious of each other, changelings can commune over a distance." speech_verb = "says" colour = "changeling" - key = "g" + key = "ch" flags = RESTRICTED | HIVEMIND | NOBABEL follow = TRUE @@ -558,11 +586,11 @@ ..(speaker,message) /datum/language/eventling - name = "Infiltrated changeling" + name = "Infiltrated Changeling Hivemind" desc = "Although they are normally wary and suspicious of each other, changelings can commune over a distance." speech_verb = "says" colour = "changeling" - key = "gi" + key = "hs" flags = RESTRICTED | HIVEMIND | NOBABEL follow = TRUE @@ -579,7 +607,7 @@ desc = "Shadowlings and their thralls are capable of communicating over a psychic hivemind." speech_verb = "says" colour = "shadowling" - key = "8" + key = "sh" flags = RESTRICTED | HIVEMIND | NOBABEL follow = TRUE @@ -598,7 +626,7 @@ ask_verb = "gibbers" exclaim_verbs = list("gibbers") colour = "abductor" - key = "aa" //doesn't matter, this is their default and only language + key = "ab" flags = RESTRICTED | HIVEMIND | NOBABEL follow = TRUE @@ -613,15 +641,21 @@ return TRUE return FALSE -/datum/language/abductor/golem +/datum/language/golem name = "Golem Mindlink" desc = "Communicate with other alien alloy golems through a psychic link." + speech_verb = "gibbers" + ask_verb = "gibbers" + exclaim_verbs = list("gibbers") + colour = "abductor" + key = "gl" + flags = RESTRICTED | HIVEMIND | NOBABEL follow = TRUE -/datum/language/abductor/golem/check_special_condition(mob/living/carbon/human/other, mob/living/carbon/human/speaker) - return TRUE +/datum/language/golem/broadcast(mob/living/speaker, message, speaker_mask) + ..(speaker,message,speaker.real_name) -/datum/language/corticalborer +/datum/language/borer name = "Cortical Link" desc = "Cortical borers possess a strange link between their tiny minds." speech_verb = "sings" @@ -632,7 +666,7 @@ flags = RESTRICTED | HIVEMIND | NOBABEL follow = TRUE -/datum/language/corticalborer/broadcast(mob/living/speaker, message, speaker_mask) +/datum/language/borer/broadcast(mob/living/speaker, message, speaker_mask) var/mob/living/simple_animal/borer/B if(iscarbon(speaker)) @@ -652,7 +686,7 @@ speech_verb = "states" ask_verb = "queries" exclaim_verbs = list("declares") - key = "b" + key = "bi" flags = RESTRICTED | HIVEMIND | NOBABEL follow = TRUE var/drone_only @@ -699,7 +733,7 @@ ask_verb = "transmits" exclaim_verbs = list("transmits") colour = "say_quote" - key = "d" + key = "dt" flags = RESTRICTED | HIVEMIND | NOBABEL drone_only = TRUE follow = TRUE @@ -722,35 +756,44 @@ ask_verb = "tones" exclaim_verbs = list("tones") colour = "say_quote" - key = "as"//Zwarmer...Or Zerg! + key = "sw"//Zwarmer...Or Zerg! flags = RESTRICTED | HIVEMIND | NOBABEL follow = TRUE -// Language handling. -/mob/proc/add_language(language) - var/datum/language/new_language = GLOB.all_languages[language] +/datum/language/human/monkey + name = "Chimpanzee" + desc = "Ook ook ook." + speech_verb = "chimpers" + ask_verb = "chimpers" + exclaim_verbs = list("screeches") + key = "mo" - if(!istype(new_language) || (new_language in languages)) - return FALSE +/datum/language/skrell/monkey + name = "Neara" + desc = "Squik squik squik." + key = "ne" - languages |= new_language - return TRUE +/datum/language/unathi/monkey + name = "Stok" + desc = "Hiss hiss hiss." + key = "st" -/mob/proc/remove_language(rem_language) - var/datum/language/L = GLOB.all_languages[rem_language] - . = (L in languages) - languages.Remove(L) +/datum/language/tajaran/monkey + name = "Farwa" + desc = "Meow meow meow." + key = "fa" + +/datum/language/vulpkanin/monkey + name = "Wolpin" + desc = "Bark bark bark." + key = "wo" -/mob/living/remove_language(rem_language) - var/datum/language/L = GLOB.all_languages[rem_language] - if(default_language == L) - default_language = null - return ..() // Can we speak this language, as opposed to just understanding it? /mob/proc/can_speak_language(datum/language/speaking) return universal_speak || (speaking && speaking.flags & INNATE) || (speaking in languages) + //TBD /mob/proc/check_lang_data() . = "" @@ -759,6 +802,7 @@ if(!(L.flags & NONGLOBAL)) . += "[L.name] (:[L.key])
[L.desc]

" + /mob/living/check_lang_data() . = "" @@ -770,7 +814,8 @@ if(L == default_language) . += "[L.name] (:[L.key]) - default - reset
[L.desc]

" else - . += "[L.name] (:[L.key]) - set default
[L.desc]

" + . += "[L.name] (:[L.key]) - set default
[L.desc]

" + /mob/verb/check_languages() set name = "Check Known Languages" @@ -781,6 +826,7 @@ popup.set_content(check_lang_data()) popup.open() + /mob/living/Topic(href, href_list) . = ..() if(.) @@ -795,33 +841,43 @@ check_languages() return TRUE -/datum/language/human/monkey - name = "Chimpanzee" - desc = "Ook ook ook." - speech_verb = "chimpers" - ask_verb = "chimpers" - exclaim_verbs = list("screeches") - key = "fm" -/datum/language/skrell/monkey - name = "Neara" - desc = "Squik squik squik." - key = "fn" +// Language handling. +/mob/proc/add_language(language_name) + var/datum/language/new_language = GLOB.all_languages[language_name] + if(new_language in languages) + return FALSE + if(!istype(new_language)) + new_language = GLOB.all_languages[convert_lang_key_to_name(language_name)] + if(!istype(new_language)) + return FALSE -/datum/language/unathi/monkey - name = "Stok" - desc = "Hiss hiss hiss." - key = "fs" + languages |= new_language + return TRUE -/datum/language/tajaran/monkey - name = "Farwa" - desc = "Meow meow meow." - key = "fa" -/datum/language/vulpkanin/monkey - name = "Wolpin" - desc = "Bark bark bark." - key = "vu" +/mob/proc/remove_language(language_name) + var/datum/language/rem_language = GLOB.all_languages[language_name] + if(!istype(rem_language)) + rem_language = GLOB.all_languages[convert_lang_key_to_name(language_name)] + if(!istype(rem_language)) + return FALSE + + . = (rem_language in languages) + languages.Remove(rem_language) + + +/mob/living/remove_language(language_name) + var/datum/language/rem_language = GLOB.all_languages[language_name] + if(!istype(rem_language)) + rem_language = GLOB.all_languages[convert_lang_key_to_name(language_name)] + if(!istype(rem_language)) + return FALSE + + if(default_language == rem_language) + default_language = null + return ..() + /mob/proc/grant_all_babel_languages() for(var/la in GLOB.all_languages) @@ -830,8 +886,19 @@ continue languages |= new_language + /mob/proc/grant_all_languages() for(var/la in GLOB.all_languages) add_language(la) + +/proc/convert_lang_key_to_name(language_key) + var/static/list/language_keys_and_names = list() + if(!language_keys_and_names.len) + for(var/language_name in GLOB.all_languages) + var/datum/language/language = GLOB.all_languages[language_name] + language_keys_and_names[language.key] = language_name + return language_keys_and_names[language_key] + + #undef SCRAMBLE_CACHE_LEN diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 102026c0f0b..ee98ba30d46 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -89,7 +89,7 @@ /mob/living/carbon/alien/get_default_language() if(default_language) return default_language - return GLOB.all_languages["Xenomorph"] + return GLOB.all_languages[LANGUAGE_XENOS] /mob/living/carbon/alien/say_quote(var/message, var/datum/language/speaking = null) var/verb = "hisses" diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 6517c1543da..209dec3988c 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -20,8 +20,8 @@ if(name == "alien") name = text("alien ([rand(1, 1000)])") real_name = name - add_language("Xenomorph") - add_language("Hivemind") + add_language(LANGUAGE_XENOS) + add_language(LANGUAGE_HIVE_XENOS) ..() AddSpell(new /obj/effect/proc_holder/spell/alien_spell/regurgitate) AddComponent(/datum/component/footstep, FOOTSTEP_MOB_CLAW, 0.5, -11) diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 715d8f9efe3..a7b92f1a0ab 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -25,8 +25,8 @@ name = "alien larva ([rand(1, 1000)])" real_name = name regenerate_icons() - add_language("Xenomorph") - add_language("Hivemind") + add_language(LANGUAGE_XENOS) + add_language(LANGUAGE_HIVE_XENOS) hide_action = new hide_action.Grant(src) ..() diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index 6a1f291fa3c..bbfc5d718fc 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -9,7 +9,7 @@ /mob/living/carbon/brain/New() ..() - add_language("Galactic Common") + add_language(LANGUAGE_GALACTIC_COMMON) /mob/living/carbon/brain/Destroy() diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index ca48bd80510..b1c1e7f3d31 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -132,12 +132,12 @@ "задерживает дыхание!") // 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/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/scream_verb = "крич%(ит,ат)%" // Special symbols used to apply correct gender. See [/proc/genderize_decode] for more info. + var/default_language = LANGUAGE_GALACTIC_COMMON // Default language is used when 'say' is used without modifiers. + var/language = LANGUAGE_GALACTIC_COMMON // Default racial language, if any. + var/secondary_langs = list() // The keys 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/scream_verb = "крич%(ит,ат)%" // Special symbols used to apply correct gender. See [/proc/genderize_decode] for more info. var/female_giggle_sound = list('sound/voice/giggle_female_1.ogg','sound/voice/giggle_female_2.ogg','sound/voice/giggle_female_3.ogg') var/male_giggle_sound = list('sound/voice/giggle_male_1.ogg','sound/voice/giggle_male_2.ogg') var/male_scream_sound = list('sound/goonstation/voice/male_scream.ogg') diff --git a/code/modules/mob/living/carbon/human/species/abductor.dm b/code/modules/mob/living/carbon/human/species/abductor.dm index c76dfbebea1..326c270790e 100644 --- a/code/modules/mob/living/carbon/human/species/abductor.dm +++ b/code/modules/mob/living/carbon/human/species/abductor.dm @@ -4,8 +4,8 @@ a = "an" icobase = 'icons/mob/human_races/r_abductor.dmi' deform = 'icons/mob/human_races/r_abductor.dmi' - language = "Abductor Mindlink" - default_language = "Abductor Mindlink" + language = LANGUAGE_HIVE_ABDUCTOR + default_language = LANGUAGE_HIVE_ABDUCTOR eyes = "blank_eyes" has_organ = list( INTERNAL_ORGAN_HEART = /obj/item/organ/internal/heart, @@ -42,8 +42,8 @@ ..() H.gender = NEUTER H.languages.Cut() //Under no condition should you be able to speak any language - H.add_language("Abductor Mindlink") //other than over the abductor's own mindlink - H.add_language("Psionic Communication") // still grey enouhg to speak in psi link + H.add_language(LANGUAGE_HIVE_ABDUCTOR) //other than over the abductor's own mindlink + H.add_language(LANGUAGE_GREY) // still grey enouhg to speak in psi link var/datum/atom_hud/abductor_hud = GLOB.huds[DATA_HUD_ABDUCTOR] abductor_hud.add_hud_to(H) diff --git a/code/modules/mob/living/carbon/human/species/diona.dm b/code/modules/mob/living/carbon/human/species/diona.dm index 2611b5f8a6e..7778d5d34f5 100644 --- a/code/modules/mob/living/carbon/human/species/diona.dm +++ b/code/modules/mob/living/carbon/human/species/diona.dm @@ -3,7 +3,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_DIONA speech_sounds = list('sound/voice/dionatalk1.ogg') //Credit https://www.youtube.com/watch?v=ufnvlRjsOTI [0:13 - 0:16] speech_chance = 20 unarmed_type = /datum/unarmed_attack/diona diff --git a/code/modules/mob/living/carbon/human/species/drask.dm b/code/modules/mob/living/carbon/human/species/drask.dm index 4646a5c7a46..9552da20cbd 100644 --- a/code/modules/mob/living/carbon/human/species/drask.dm +++ b/code/modules/mob/living/carbon/human/species/drask.dm @@ -3,7 +3,7 @@ name_plural = "Drask" icobase = 'icons/mob/human_races/r_drask.dmi' deform = 'icons/mob/human_races/r_drask.dmi' - language = "Orluum" + language = LANGUAGE_DRASK eyes = "drask_eyes_s" speech_sounds = list('sound/voice/drasktalk.ogg') diff --git a/code/modules/mob/living/carbon/human/species/golem.dm b/code/modules/mob/living/carbon/human/species/golem.dm index 10fb1bb2cec..0d5cb77a5ce 100644 --- a/code/modules/mob/living/carbon/human/species/golem.dm +++ b/code/modules/mob/living/carbon/human/species/golem.dm @@ -412,8 +412,8 @@ name = "Голем из инопланетных сплавов" golem_colour = rgb(51, 51, 51) skinned_type = /obj/item/stack/sheet/mineral/abductor - language = "Golem Mindlink" - default_language = "Golem Mindlink" + language = LANGUAGE_HIVE_GOLEM + default_language = LANGUAGE_HIVE_GOLEM speed_mod = 1 //faster info_text = "Будучи големом из инопланетных сплавов, вы быстрее двигаетесь и со временем регенерируете. Однако, вы можете разговаривать только с големами из того же материала, что и вы." prefix = "Инопланетн" //неполное окончание т.к. гендеризация идет через другую функцию (/datum/species/golem/get_random_name()) @@ -441,8 +441,8 @@ /datum/species/golem/alloy/on_species_gain(mob/living/carbon/human/H) ..() H.languages.Cut() - H.add_language("Golem Mindlink") - H.add_language("Psionic Communication") // still grey enouhg to speak in psi link + H.add_language(LANGUAGE_HIVE_GOLEM) + H.add_language(LANGUAGE_GREY) // still grey enouhg to speak in psi link //Regenerates like dionas, less resistant /datum/species/golem/wood diff --git a/code/modules/mob/living/carbon/human/species/grey.dm b/code/modules/mob/living/carbon/human/species/grey.dm index e37bd321c08..3c464c0a042 100644 --- a/code/modules/mob/living/carbon/human/species/grey.dm +++ b/code/modules/mob/living/carbon/human/species/grey.dm @@ -3,7 +3,7 @@ name_plural = "Greys" icobase = 'icons/mob/human_races/r_grey.dmi' deform = 'icons/mob/human_races/r_def_grey.dmi' - language = "Psionic Communication" + language = LANGUAGE_GREY eyes = "grey_eyes_s" butt_sprite = "grey" diff --git a/code/modules/mob/living/carbon/human/species/human.dm b/code/modules/mob/living/carbon/human/species/human.dm index 784a49f2145..f1ff075a0b6 100644 --- a/code/modules/mob/living/carbon/human/species/human.dm +++ b/code/modules/mob/living/carbon/human/species/human.dm @@ -4,7 +4,7 @@ icobase = 'icons/mob/human_races/r_human.dmi' deform = 'icons/mob/human_races/r_def_human.dmi' primitive_form = /datum/species/monkey - language = "Sol Common" + language = LANGUAGE_SOL_COMMON species_traits = list(LIPS) skinned_type = /obj/item/stack/sheet/animalhide/human clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS diff --git a/code/modules/mob/living/carbon/human/species/kidan.dm b/code/modules/mob/living/carbon/human/species/kidan.dm index 942eafc42cf..33d2da40f10 100644 --- a/code/modules/mob/living/carbon/human/species/kidan.dm +++ b/code/modules/mob/living/carbon/human/species/kidan.dm @@ -6,7 +6,7 @@ name_plural = "Kidan" icobase = 'icons/mob/human_races/r_kidan.dmi' deform = 'icons/mob/human_races/r_def_kidan.dmi' - language = "Chittin" + language = LANGUAGE_KIDAN unarmed_type = /datum/unarmed_attack/claws brute_mod = 0.8 diff --git a/code/modules/mob/living/carbon/human/species/machine.dm b/code/modules/mob/living/carbon/human/species/machine.dm index 76450d06c93..3df1176a6c1 100644 --- a/code/modules/mob/living/carbon/human/species/machine.dm +++ b/code/modules/mob/living/carbon/human/species/machine.dm @@ -10,7 +10,7 @@ icobase = 'icons/mob/human_races/r_machine.dmi' deform = 'icons/mob/human_races/r_machine.dmi' - language = "Trinary" + language = LANGUAGE_TRINARY remains_type = /obj/effect/decal/remains/robot skinned_type = /obj/item/stack/sheet/metal // Let's grind up IPCs for station resources! diff --git a/code/modules/mob/living/carbon/human/species/monkey.dm b/code/modules/mob/living/carbon/human/species/monkey.dm index 3e0d87ae678..1b1bc2be776 100644 --- a/code/modules/mob/living/carbon/human/species/monkey.dm +++ b/code/modules/mob/living/carbon/human/species/monkey.dm @@ -8,8 +8,8 @@ damage_overlays = 'icons/mob/human_races/masks/dam_monkey.dmi' damage_mask = 'icons/mob/human_races/masks/dam_mask_monkey.dmi' blood_mask = 'icons/mob/human_races/masks/blood_monkey.dmi' - language = "Galactic Common" - default_language = "Chimpanzee" + language = LANGUAGE_GALACTIC_COMMON + default_language = LANGUAGE_MONKEY_HUMAN species_traits = list(NO_EXAMINE) skinned_type = /obj/item/stack/sheet/animalhide/monkey greater_form = /datum/species/human @@ -88,7 +88,7 @@ deform = 'icons/mob/human_races/monkeys/r_farwa.dmi' greater_form = /datum/species/tajaran - default_language = "Farwa" + default_language = LANGUAGE_MONKEY_TAJARAN blood_species = "Tajaran" flesh_color = "#AFA59E" base_color = "#000000" @@ -133,7 +133,7 @@ deform = 'icons/mob/human_races/monkeys/r_wolpin.dmi' greater_form = /datum/species/vulpkanin - default_language = "Wolpin" + default_language = LANGUAGE_MONKEY_VULPKANIN blood_species = "Vulpkanin" flesh_color = "#966464" base_color = "#000000" @@ -177,7 +177,7 @@ deform = 'icons/mob/human_races/monkeys/r_neara.dmi' greater_form = /datum/species/skrell - default_language = "Neara" + default_language = LANGUAGE_MONKEY_SKRELL blood_species = "Skrell" flesh_color = "#8CD7A3" blood_color = "#1D2CBF" @@ -230,7 +230,7 @@ tail = "stoktail" greater_form = /datum/species/unathi - default_language = "Stok" + default_language = LANGUAGE_MONKEY_UNATHI blood_species = "Unathi" flesh_color = "#34AF10" base_color = "#000000" diff --git a/code/modules/mob/living/carbon/human/species/moth.dm b/code/modules/mob/living/carbon/human/species/moth.dm index c4febf4511b..75a2ca4f18e 100644 --- a/code/modules/mob/living/carbon/human/species/moth.dm +++ b/code/modules/mob/living/carbon/human/species/moth.dm @@ -8,7 +8,7 @@ /datum/species/moth name = "Nian" name_plural = "Nianae" - language = "Tkachi" + language = LANGUAGE_MOTH icobase = 'icons/mob/human_races/r_moth.dmi' deform = 'icons/mob/human_races/r_moth.dmi' inherent_factions = list("moth") diff --git a/code/modules/mob/living/carbon/human/species/nucleation.dm b/code/modules/mob/living/carbon/human/species/nucleation.dm index d8e2fd45f43..2953c547869 100644 --- a/code/modules/mob/living/carbon/human/species/nucleation.dm +++ b/code/modules/mob/living/carbon/human/species/nucleation.dm @@ -10,7 +10,7 @@ obselete. Ionizing radiation seems to cause resonance in some of their crystals, which seems to encourage regeneration \ and produces a calming effect on the individual. Nucleations are highly stigmatized, and are treated much in the same \ way as lepers were back on Earth." - language = "Sol Common" + language = LANGUAGE_SOL_COMMON burn_mod = 4 // holy shite, poor guys wont survive half a second cooking smores brute_mod = 2 // damn, double wham, double dam species_traits = list(LIPS, IS_WHITELISTED, NO_BREATHE, NO_BLOOD, NO_PAIN, NO_PAIN_FEEL, NO_SCAN, RADIMMUNE, VIRUSIMMUNE, NO_GERMS) diff --git a/code/modules/mob/living/carbon/human/species/skrell.dm b/code/modules/mob/living/carbon/human/species/skrell.dm index 73e8bf812ce..26615a8f232 100644 --- a/code/modules/mob/living/carbon/human/species/skrell.dm +++ b/code/modules/mob/living/carbon/human/species/skrell.dm @@ -3,7 +3,7 @@ name_plural = "Skrell" icobase = 'icons/mob/human_races/r_skrell.dmi' deform = 'icons/mob/human_races/r_def_skrell.dmi' - language = "Skrellian" + language = LANGUAGE_SKRELL primitive_form = /datum/species/monkey/skrell blurb = "An amphibious species, Skrell come from the star system known as Qerr'Vallis, which translates to 'Star of \ diff --git a/code/modules/mob/living/carbon/human/species/slime.dm b/code/modules/mob/living/carbon/human/species/slime.dm index 38662dfe077..718a0877707 100644 --- a/code/modules/mob/living/carbon/human/species/slime.dm +++ b/code/modules/mob/living/carbon/human/species/slime.dm @@ -11,7 +11,7 @@ /datum/species/slime name = "Slime People" name_plural = "Slime People" - language = "Bubblish" + language = LANGUAGE_SLIME icobase = 'icons/mob/human_races/r_slime.dmi' deform = 'icons/mob/human_races/r_slime.dmi' remains_type = /obj/effect/decal/remains/slime diff --git a/code/modules/mob/living/carbon/human/species/tajaran.dm b/code/modules/mob/living/carbon/human/species/tajaran.dm index 6dc7561b9e7..6653346f4f9 100644 --- a/code/modules/mob/living/carbon/human/species/tajaran.dm +++ b/code/modules/mob/living/carbon/human/species/tajaran.dm @@ -3,7 +3,7 @@ name_plural = "Tajaran" icobase = 'icons/mob/human_races/r_tajaran.dmi' deform = 'icons/mob/human_races/r_def_tajaran.dmi' - language = "Siik'tajr" + language = LANGUAGE_TAJARAN tail = "tajtail" skinned_type = /obj/item/stack/sheet/fur unarmed_type = /datum/unarmed_attack/claws diff --git a/code/modules/mob/living/carbon/human/species/unathi.dm b/code/modules/mob/living/carbon/human/species/unathi.dm index aacb8f8505d..53369bfb68b 100644 --- a/code/modules/mob/living/carbon/human/species/unathi.dm +++ b/code/modules/mob/living/carbon/human/species/unathi.dm @@ -3,7 +3,7 @@ name_plural = "Unathi" icobase = 'icons/mob/human_races/r_lizard.dmi' deform = 'icons/mob/human_races/r_def_lizard.dmi' - language = "Sinta'unathi" + language = LANGUAGE_UNATHI tail = "sogtail" speech_sounds = list('sound/voice/unathitalk.mp3', 'sound/voice/unathitalk2.mp3', 'sound/voice/unathitalk4.mp3') speech_chance = 33 @@ -152,8 +152,8 @@ blurb = "Пеплоходцы — рептильные гуманоиды, по-видимому, родственные унати. Но кажутся значительно менее развитыми. \ Они бродят по пустошам Лаваленда, поклоняются мёртвому городу и ловят ничего не подозревающих шахтёров." - language = "Sinta'unathi" - default_language = "Sinta'unathi" + language = LANGUAGE_UNATHI + default_language = LANGUAGE_UNATHI speed_mod = -0.80 species_traits = list(NOGUNS, LIPS, PIERCEIMMUNE) diff --git a/code/modules/mob/living/carbon/human/species/vox.dm b/code/modules/mob/living/carbon/human/species/vox.dm index 75f48ccf266..b37ef8d384d 100644 --- a/code/modules/mob/living/carbon/human/species/vox.dm +++ b/code/modules/mob/living/carbon/human/species/vox.dm @@ -4,7 +4,7 @@ icobase = 'icons/mob/human_races/vox/r_vox.dmi' deform = 'icons/mob/human_races/vox/r_def_vox.dmi' dangerous_existence = TRUE - language = "Vox-pidgin" + language = LANGUAGE_VOX tail = "voxtail" speech_sounds = list('sound/voice/shriek1.ogg') speech_chance = 20 diff --git a/code/modules/mob/living/carbon/human/species/vulpkanin.dm b/code/modules/mob/living/carbon/human/species/vulpkanin.dm index 23acc7ada8f..6df149c451e 100644 --- a/code/modules/mob/living/carbon/human/species/vulpkanin.dm +++ b/code/modules/mob/living/carbon/human/species/vulpkanin.dm @@ -3,7 +3,7 @@ name_plural = "Vulpkanin" icobase = 'icons/mob/human_races/r_vulpkanin.dmi' deform = 'icons/mob/human_races/r_vulpkanin.dmi' - language = "Canilunzt" + language = LANGUAGE_VULPKANIN primitive_form = /datum/species/monkey/vulpkanin tail = "vulptail" skinned_type = /obj/item/stack/sheet/fur diff --git a/code/modules/mob/living/carbon/human/species/wryn.dm b/code/modules/mob/living/carbon/human/species/wryn.dm index a5d144f9c5b..3e56459e92e 100644 --- a/code/modules/mob/living/carbon/human/species/wryn.dm +++ b/code/modules/mob/living/carbon/human/species/wryn.dm @@ -4,7 +4,7 @@ icobase = 'icons/mob/human_races/r_wryn.dmi' deform = 'icons/mob/human_races/r_wryn.dmi' blacklisted = TRUE - language = "Wryn Hivemind" + language = LANGUAGE_WRYN tail = "wryntail" punchdamagelow = 0 punchdamagehigh = 1 @@ -180,7 +180,7 @@ user.visible_message("[user] начина[pluralize_ru(user.gender,"ет","ют")] яростно отрывать усики [target].") to_chat(target, "[user] схватил[genderize_ru(user.gender,"","а","о","и")] ваши усики и яростно тян[pluralize_ru(user.gender,"ет","ут")] их!") if(do_mob(user, target, 250)) - target.remove_language("Wryn Hivemind") + target.remove_language(LANGUAGE_WRYN) node.remove(target) node.forceMove(get_turf(target)) to_chat(user, "Вы слышите громкий хруст, когда безжалостно отрываете усики [target].") diff --git a/code/modules/mob/living/default_language.dm b/code/modules/mob/living/default_language.dm index f6c9c3abc0e..de181396eba 100644 --- a/code/modules/mob/living/default_language.dm +++ b/code/modules/mob/living/default_language.dm @@ -6,9 +6,9 @@ set category = "IC" if(language) - to_chat(src, "You will now speak [language] if you do not specify a language when speaking.") + to_chat(src, span_notice("You will now speak [language] if you do not specify a language when speaking.")) else - to_chat(src, "You will now speak whatever your standard default language is if you do not specify one when speaking.") + to_chat(src, span_notice("You will now speak whatever your standard default language is if you do not specify one when speaking.")) default_language = language // Silicons can't neccessarily speak everything in their languages list @@ -20,6 +20,6 @@ set category = "IC" if(default_language) - to_chat(src, "You are currently speaking [default_language] by default.") + to_chat(src, span_notice("You are currently speaking [default_language] by default.")) else - to_chat(src, "Your current default language is your species or mob type default.") + to_chat(src, span_notice("Your current default language is your species or mob type default.")) diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm index cc73ee1149f..3ee7bede863 100644 --- a/code/modules/mob/living/living_say.dm +++ b/code/modules/mob/living/living_say.dm @@ -1,26 +1,24 @@ GLOBAL_LIST_INIT(department_radio_keys, list( /* Busy letters by languages: - a b d f g j k o q v x y - aa as bo db fa fm fn fs vu + un ta vu sk vo di tr ki sl gr dr ni + xm db wr xh ts ch hs sh ab gl bo bi dt + sw gc sc tb gt cl nr mo ne st fa wo - Busy symbols by languages: - 0 1 2 3 4 5 6 7 8 9 - % ? ^ ' Busy letters by radio(eng): c e h i l m n p r s t u w x Busy letters by radio(rus): - б г д е ё з к р с т у ц ч ш ы ь я Э + б г д е ё з к р с т у ц ч ш ы ь я э Busy symbols by radio: ~ , $ _ - + * 1 2 3 - CAUTION! The key must not repeat the key of the languages (language.dm) - and must not contain prohibited characters + CAUTION! The key must not repeat the key of the languages (language.dm) + and must not contain prohibited characters! */ // English text lowercase ":r" = "right ear", "#r" = "right ear", "№r" = "right ear", ".r" = "right ear", @@ -213,20 +211,9 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key) return say_dead(message) return FALSE - var/message_mode = parse_message_mode(message, "headset") - if(copytext(message, 1, 2) == "*") return emote(copytext(message, 2), intentional = TRUE) - //parse the radio code and consume it - if(message_mode) - if(message_mode == "headset") - message = copytext_char(message, 2) //it would be really nice if the parse procs could do this for us. - else - message = copytext_char(message, 3) - - message = trim_left(message) - var/ending = copytext(message, length(message)) if(!(ending in list("!", "?", ",", ".")) && length(message) != 0) message += "." @@ -238,15 +225,28 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key) else message_pieces = parse_languages(message) - if(istype(message_pieces, /datum/multilingual_say_piece)) // Little quirk to just easily deal with HIVEMIND languages - var/datum/multilingual_say_piece/S = message_pieces // Yay BYOND's hilarious typecasting - S.speaking.broadcast(src, S.message) - return TRUE - if(!LAZYLEN(message_pieces)) . = FALSE CRASH("Message failed to generate pieces. [message] - [json_encode(message_pieces)]") + var/datum/multilingual_say_piece/first_piece = message_pieces[1] + + if(first_piece.speaking?.flags & HIVEMIND) + first_piece.speaking.broadcast(src, first_piece.message) + return TRUE + + var/message_mode = parse_message_mode(first_piece.message, "headset") + + //parse the radio code and consume it + if(message_mode) + if(message_mode == "headset") + first_piece.message = copytext_char(first_piece.message, 2) //it would be really nice if the parse procs could do this for us. + else + first_piece.message = copytext_char(first_piece.message, 3) + + first_piece.message = trim_left(first_piece.message) + verb = say_quote(message, first_piece.speaking) + if(message_mode == "cords") if(iscarbon(src)) var/mob/living/carbon/C = src @@ -256,9 +256,6 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key) V.speak_with(message) //words come before actions return TRUE - var/datum/multilingual_say_piece/first_piece = message_pieces[1] - verb = say_quote(message, first_piece.speaking) - if(is_muzzled()) var/obj/item/clothing/mask/muzzle/G = wear_mask if(G.mute == MUZZLE_MUTE_ALL) //if the mask is supposed to mute you completely or just muffle you diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 60351913f9f..574e554454b 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -171,24 +171,24 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( add_ai_verbs(src) //Languages - add_language("Robot Talk", 1) - add_language("Galactic Common", 1) - add_language("Sol Common", 1) - add_language("Tradeband", 1) - add_language("Neo-Russkiya", 1) - add_language("Gutter", 1) - add_language("Sinta'unathi", 1) - add_language("Siik'tajr", 1) - add_language("Canilunzt", 1) - add_language("Skrellian", 1) - add_language("Vox-pidgin", 1) - add_language("Orluum", 1) - add_language("Rootspeak", 1) - add_language("Trinary", 1) - add_language("Chittin", 1) - add_language("Bubblish", 1) - add_language("Clownish", 1) - add_language("Tkachi", 1) + add_language(LANGUAGE_BINARY, 1) + add_language(LANGUAGE_GALACTIC_COMMON, 1) + add_language(LANGUAGE_SOL_COMMON, 1) + add_language(LANGUAGE_TRADER, 1) + add_language(LANGUAGE_NEO_RUSSIAN, 1) + add_language(LANGUAGE_GUTTER, 1) + add_language(LANGUAGE_UNATHI, 1) + add_language(LANGUAGE_TAJARAN, 1) + add_language(LANGUAGE_VULPKANIN, 1) + add_language(LANGUAGE_SKRELL, 1) + add_language(LANGUAGE_VOX, 1) + add_language(LANGUAGE_DRASK, 1) + add_language(LANGUAGE_DIONA, 1) + add_language(LANGUAGE_TRINARY, 1) + add_language(LANGUAGE_KIDAN, 1) + add_language(LANGUAGE_SLIME, 1) + add_language(LANGUAGE_CLOWN, 1) + add_language(LANGUAGE_MOTH, 1) 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 44947315756..63e53a4c169 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -122,11 +122,11 @@ radio_name = name //Default languages without universal translator software - add_language("Galactic Common", 1) - add_language("Sol Common", 1) - add_language("Tradeband", 1) - add_language("Gutter", 1) - add_language("Trinary", 1) + add_language(LANGUAGE_GALACTIC_COMMON, 1) + add_language(LANGUAGE_SOL_COMMON, 1) + add_language(LANGUAGE_TRADER, 1) + add_language(LANGUAGE_GUTTER, 1) + add_language(LANGUAGE_TRINARY, 1) //Verbs for pAI mobile form, chassis and Say flavor text verbs += /mob/living/silicon/pai/proc/choose_chassis diff --git a/code/modules/mob/living/silicon/pai/software/pai_toggles.dm b/code/modules/mob/living/silicon/pai/software/pai_toggles.dm index a83fd1df484..1122585fefc 100644 --- a/code/modules/mob/living/silicon/pai/software/pai_toggles.dm +++ b/code/modules/mob/living/silicon/pai/software/pai_toggles.dm @@ -48,31 +48,31 @@ // Galactic Common, Sol Common, Tradeband, Gutter and Trinary 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'tajr") - user.add_language("Canilunzt") - user.add_language("Skrellian") - user.add_language("Vox-pidgin") - user.add_language("Rootspeak") - user.add_language("Chittin") - user.add_language("Bubblish") - user.add_language("Orluum") - user.add_language("Clownish") - user.add_language("Neo-Russkiya") - user.add_language("Tkachi") + user.add_language(LANGUAGE_UNATHI) + user.add_language(LANGUAGE_TAJARAN) + user.add_language(LANGUAGE_VULPKANIN) + user.add_language(LANGUAGE_SKRELL) + user.add_language(LANGUAGE_VOX) + user.add_language(LANGUAGE_DIONA) + user.add_language(LANGUAGE_KIDAN) + user.add_language(LANGUAGE_SLIME) + user.add_language(LANGUAGE_DRASK) + user.add_language(LANGUAGE_CLOWN) + user.add_language(LANGUAGE_NEO_RUSSIAN) + user.add_language(LANGUAGE_MOTH) else - user.remove_language("Sinta'unathi") - user.remove_language("Siik'tajr") - user.remove_language("Canilunzt") - user.remove_language("Skrellian") - user.remove_language("Vox-pidgin") - user.remove_language("Rootspeak") - user.remove_language("Chittin") - user.remove_language("Bubblish") - user.remove_language("Orluum") - user.remove_language("Clownish") - user.remove_language("Neo-Russkiya") - user.remove_language("Tkachi") + user.remove_language(LANGUAGE_UNATHI) + user.remove_language(LANGUAGE_TAJARAN) + user.remove_language(LANGUAGE_VULPKANIN) + user.remove_language(LANGUAGE_SKRELL) + user.remove_language(LANGUAGE_VOX) + user.remove_language(LANGUAGE_DIONA) + user.remove_language(LANGUAGE_KIDAN) + user.remove_language(LANGUAGE_SLIME) + user.remove_language(LANGUAGE_DRASK) + user.remove_language(LANGUAGE_CLOWN) + user.remove_language(LANGUAGE_NEO_RUSSIAN) + user.remove_language(LANGUAGE_MOTH) /datum/pai_software/translator/is_active(mob/living/silicon/pai/user) return user.translator_on diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 72c78236e10..ae7e9a244b8 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -57,10 +57,10 @@ /mob/living/silicon/robot/drone/New() ..() - remove_language("Robot Talk") - remove_language("Galactic Common") - add_language("Drone Talk", 1) - add_language("Drone", 1) + remove_language(LANGUAGE_BINARY) + remove_language(LANGUAGE_GALACTIC_COMMON) + add_language(LANGUAGE_DRONE_BINARY, 1) + add_language(LANGUAGE_DRONE, 1) // Disable the microphone wire on Drones if(radio) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_say.dm b/code/modules/mob/living/silicon/robot/drone/drone_say.dm index a5418634b81..226be34b2e3 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_say.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_say.dm @@ -12,5 +12,5 @@ /mob/living/silicon/robot/drone/get_default_language() if(default_language) return default_language - return GLOB.all_languages["Drone"] + return GLOB.all_languages[LANGUAGE_DRONE] diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index d0b654d4ee6..cbd1ab7538a 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -124,7 +124,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( spark_system.set_up(5, 0, src) spark_system.attach(src) - add_language("Robot Talk", 1) + add_language(LANGUAGE_BINARY, 1) wires = new(src) @@ -561,7 +561,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( for(var/obj/item/borg/upgrade/upgrade in upgrades) //remove all upgrades, cuz we reseting qdel(upgrade) - add_language("Robot Talk", 1) + add_language(LANGUAGE_BINARY, 1) status_flags |= CANPUSH //for borg hotkeys, here module refers to borg inv slot, not core module diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 603efce8a89..ae3d3426064 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -120,23 +120,23 @@ /obj/item/robot_module/proc/add_languages(mob/living/silicon/robot/R) //full set of languages - R.add_language("Galactic Common", 1) - R.add_language("Sol Common", 1) - R.add_language("Tradeband", 1) - R.add_language("Gutter", 0) - R.add_language("Neo-Russkiya", 0) - R.add_language("Sinta'unathi", 0) - R.add_language("Siik'tajr", 0) - R.add_language("Canilunzt", 0) - R.add_language("Skrellian", 0) - R.add_language("Vox-pidgin", 0) - R.add_language("Rootspeak", 0) - R.add_language("Trinary", 1) - R.add_language("Chittin", 0) - R.add_language("Bubblish", 0) - R.add_language("Orluum", 0) - R.add_language("Clownish",0) - R.add_language("Tkachi", 0) + R.add_language(LANGUAGE_GALACTIC_COMMON, 1) + R.add_language(LANGUAGE_SOL_COMMON, 1) + R.add_language(LANGUAGE_TRADER, 1) + R.add_language(LANGUAGE_GUTTER, 0) + R.add_language(LANGUAGE_NEO_RUSSIAN, 0) + R.add_language(LANGUAGE_UNATHI, 0) + R.add_language(LANGUAGE_TAJARAN, 0) + R.add_language(LANGUAGE_VULPKANIN, 0) + R.add_language(LANGUAGE_SKRELL, 0) + R.add_language(LANGUAGE_VOX, 0) + R.add_language(LANGUAGE_DIONA, 0) + R.add_language(LANGUAGE_TRINARY, 1) + R.add_language(LANGUAGE_KIDAN, 0) + R.add_language(LANGUAGE_SLIME, 0) + R.add_language(LANGUAGE_DRASK, 0) + R.add_language(LANGUAGE_CLOWN,0) + R.add_language(LANGUAGE_MOTH, 0) /obj/item/robot_module/proc/add_subsystems_and_actions(mob/living/silicon/robot/R) R.verbs |= subsystems @@ -477,22 +477,23 @@ /obj/item/robot_module/butler/add_languages(var/mob/living/silicon/robot/R) //full set of languages - R.add_language("Galactic Common", 1) - R.add_language("Sol Common", 1) - R.add_language("Tradeband", 1) - R.add_language("Gutter", 1) - R.add_language("Sinta'unathi", 1) - R.add_language("Siik'tajr", 1) - R.add_language("Canilunzt", 1) - R.add_language("Skrellian", 1) - R.add_language("Vox-pidgin", 1) - R.add_language("Rootspeak", 1) - R.add_language("Trinary", 1) - R.add_language("Chittin", 1) - R.add_language("Bubblish", 1) - R.add_language("Clownish",1) - R.add_language("Neo-Russkiya", 1) - R.add_language("Tkachi", 1) + R.add_language(LANGUAGE_GALACTIC_COMMON, 1) + R.add_language(LANGUAGE_SOL_COMMON, 1) + R.add_language(LANGUAGE_TRADER, 1) + R.add_language(LANGUAGE_GUTTER, 1) + R.add_language(LANGUAGE_NEO_RUSSIAN, 1) + R.add_language(LANGUAGE_UNATHI, 1) + R.add_language(LANGUAGE_TAJARAN, 1) + R.add_language(LANGUAGE_VULPKANIN, 1) + R.add_language(LANGUAGE_SKRELL, 1) + R.add_language(LANGUAGE_VOX, 1) + R.add_language(LANGUAGE_DIONA, 1) + R.add_language(LANGUAGE_TRINARY, 1) + R.add_language(LANGUAGE_KIDAN, 1) + R.add_language(LANGUAGE_SLIME, 1) + R.add_language(LANGUAGE_DRASK, 1) + R.add_language(LANGUAGE_CLOWN,1) + R.add_language(LANGUAGE_MOTH, 1) /obj/item/robot_module/butler/handle_death(mob/living/silicon/robot/R, gibbed) var/obj/item/storage/bag/tray/cyborg/T = locate(/obj/item/storage/bag/tray/cyborg) in modules @@ -778,7 +779,7 @@ /obj/item/robot_module/hunter/add_languages(var/mob/living/silicon/robot/R) ..() - R.add_language("xenocommon", 1) + R.add_language(LANGUAGE_XENOS, 1) /obj/item/robot_module/drone name = "Drone" diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 7cf2583c3e7..216c5672927 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -39,7 +39,7 @@ /mob/living/silicon/New() GLOB.silicon_mob_list |= src ..() - add_language("Galactic Common") + add_language(LANGUAGE_GALACTIC_COMMON) init_subsystems() RegisterSignal(SSalarm, COMSIG_TRIGGERED_ALARM, PROC_REF(alarm_triggered)) RegisterSignal(SSalarm, COMSIG_CANCELLED_ALARM, PROC_REF(alarm_cancelled)) @@ -283,19 +283,19 @@ //Silicon mob language procs /mob/living/silicon/can_speak_language(datum/language/speaking) - return universal_speak || (speaking in src.speech_synthesizer_langs) //need speech synthesizer support to vocalize a language + return universal_speak || (speaking in speech_synthesizer_langs) //need speech synthesizer support to vocalize a language -/mob/living/silicon/add_language(var/language, var/can_speak=1) +/mob/living/silicon/add_language(language, can_speak = TRUE) if(..(language) && can_speak) speech_synthesizer_langs.Add(GLOB.all_languages[language]) - return 1 + return TRUE -/mob/living/silicon/remove_language(var/rem_language) - ..(rem_language) +/mob/living/silicon/remove_language(language_name) + ..(language_name) - for(var/datum/language/L in speech_synthesizer_langs) - if(L.name == rem_language) - speech_synthesizer_langs -= L + for(var/datum/language/language in speech_synthesizer_langs) + if(language.name == language_name) + speech_synthesizer_langs -= language /mob/living/silicon/check_lang_data() . = "" @@ -303,16 +303,16 @@ if(default_language) . += "Current default language: [default_language] - reset

" - for(var/datum/language/L in languages) - if(!(L.flags & NONGLOBAL)) + for(var/datum/language/language in languages) + if(!(language.flags & NONGLOBAL)) var/default_str - if(L == default_language) + if(language == default_language) default_str = " - default - reset" else - default_str = " - set default" + default_str = " - set default" - var/synth = (L in speech_synthesizer_langs) - . += "[L.name] (:[L.key])[synth ? default_str : null]
Speech Synthesizer: [synth ? "YES" : "NOT SUPPORTED"]
[L.desc]

" + var/synth = (language in speech_synthesizer_langs) + . += "[language.name] (:[language.key])[synth ? default_str : null]
Speech Synthesizer: [synth ? "YES" : "NOT SUPPORTED"]
[language.desc]

" // this function displays the stations manifest in a separate window diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 990d08d0782..363d2068fa6 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -198,12 +198,12 @@ set_custom_texts() Radio = new/obj/item/radio/headset/bot(src) Radio.follow_target = src - add_language("Galactic Common", TRUE) - add_language("Sol Common", TRUE) - add_language("Tradeband", TRUE) - add_language("Gutter", TRUE) - add_language("Trinary", TRUE) - default_language = GLOB.all_languages["Galactic Common"] + add_language(LANGUAGE_GALACTIC_COMMON, TRUE) + add_language(LANGUAGE_SOL_COMMON, TRUE) + add_language(LANGUAGE_TRADER, TRUE) + add_language(LANGUAGE_GUTTER, TRUE) + add_language(LANGUAGE_TRINARY, TRUE) + default_language = GLOB.all_languages[LANGUAGE_GALACTIC_COMMON] bot_core = new bot_core_type(src) addtimer(CALLBACK(src, PROC_REF(add_bot_filter)), 3 SECONDS) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index f3f43bf46df..3842ae4ccc5 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -220,7 +220,7 @@ /mob/living/simple_animal/pet/cat/Syndi/Initialize(mapload) . = ..() - add_language("Galactic Common") + add_language(LANGUAGE_GALACTIC_COMMON) /mob/living/simple_animal/pet/cat/cak name = "Keeki" diff --git a/code/modules/mob/living/simple_animal/friendly/diona.dm b/code/modules/mob/living/simple_animal/friendly/diona.dm index 1d4986ba224..7d20b768b46 100644 --- a/code/modules/mob/living/simple_animal/friendly/diona.dm +++ b/code/modules/mob/living/simple_animal/friendly/diona.dm @@ -85,7 +85,7 @@ if(name == initial(name)) //To stop Pun-Pun becoming generic. name = "[name] ([rand(1, 1000)])" real_name = name - add_language("Rootspeak") + add_language(LANGUAGE_DIONA) merge_action.Grant(src) evolve_action.Grant(src) steal_blood_action.Grant(src) diff --git a/code/modules/mob/living/simple_animal/friendly/fox.dm b/code/modules/mob/living/simple_animal/friendly/fox.dm index 1f266fe9fe2..e40266c3d91 100644 --- a/code/modules/mob/living/simple_animal/friendly/fox.dm +++ b/code/modules/mob/living/simple_animal/friendly/fox.dm @@ -58,7 +58,7 @@ /mob/living/simple_animal/pet/dog/fox/Syndifox/Initialize(mapload) . = ..() - add_language("Galactic Common") + add_language(LANGUAGE_GALACTIC_COMMON) //Central Command Fox /mob/living/simple_animal/pet/dog/fox/alisa diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm index 3626dfb15ca..98fa0a940ae 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm @@ -237,13 +237,13 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) /mob/living/simple_animal/hostile/poison/terror_spider/New() ..() GLOB.ts_spiderlist += src - add_language("Spider Hivemind") + add_language(LANGUAGE_HIVE_TERRORSPIDER) for(var/spell in special_abillity) src.AddSpell(new spell) if(spider_tier >= TS_TIER_2) - add_language("Galactic Common") - default_language = GLOB.all_languages["Spider Hivemind"] + add_language(LANGUAGE_GALACTIC_COMMON) + default_language = GLOB.all_languages[LANGUAGE_HIVE_TERRORSPIDER] if(web_type) web_action = new() diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 724ddda9db6..d18dd571e88 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -99,7 +99,7 @@ set_colour(new_colour) . = ..() set_nutrition(new_set_nutrition) - add_language("Bubblish") + add_language(LANGUAGE_SLIME) /mob/living/simple_animal/slime/Destroy() for(var/A in actions) diff --git a/code/modules/mob/mob_say.dm b/code/modules/mob/mob_say.dm index 3ef9748704e..1f39d5e92b5 100644 --- a/code/modules/mob/mob_say.dm +++ b/code/modules/mob/mob_say.dm @@ -110,9 +110,8 @@ return TRUE //Language check. - for(var/datum/language/L in languages) - if(speaking.name == L.name) - return TRUE + if(speaking in languages) + return TRUE return FALSE @@ -122,7 +121,7 @@ var/ending = copytext(message, length(message)) if(speaking) - verb = speaking.get_spoken_verb(ending) + verb = genderize_decode(src, speaking.get_spoken_verb(ending)) else if(ending == "!") verb = pick("exclaims", "shouts", "yells") @@ -208,7 +207,7 @@ // Noise language is a snowflake if(copytext(message, 1, 2) == "!" && length(message) > 1) - return list(new /datum/multilingual_say_piece(GLOB.all_languages["Noise"], trim(strip_prefixes(copytext(message, 2))))) + return list(new /datum/multilingual_say_piece(GLOB.all_languages[LANGUAGE_NOISE], trim(strip_prefixes(copytext(message, 2))))) // Scan the message for prefixes var/list/prefix_locations = find_valid_prefixes(message) @@ -221,8 +220,7 @@ // There are a few things that will make us want to ignore all other languages in - namely, HIVEMIND languages. var/datum/language/L = current[1] if(L && L.flags & HIVEMIND) - . = new /datum/multilingual_say_piece(L, trim(strip_prefixes(message))) - break + return list(new /datum/multilingual_say_piece(L, trim(strip_prefixes(message)))) if(i + 1 > length(prefix_locations)) // We are out of lookaheads, that means the rest of the message is in cur lang var/spoke_message = handle_autohiss(trim(copytext_char(message, current[3])), L) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 2e28c860428..36a5fc909ff 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -670,9 +670,9 @@ var/datum/language/chosen_language if(client.prefs.language) chosen_language = GLOB.all_languages[client.prefs.language] - if((chosen_language == null && client.prefs.language != "None") || (chosen_language && chosen_language.flags & RESTRICTED)) + if((!chosen_language && client.prefs.language != LANGUAGE_NONE) || (chosen_language && chosen_language.flags & RESTRICTED)) log_runtime(EXCEPTION("[src] had language [client.prefs.language], though they weren't supposed to. Setting to None."), src) - client.prefs.language = "None" + client.prefs.language = LANGUAGE_NONE /mob/new_player/proc/ViewManifest() GLOB.generic_crew_manifest.ui_interact(usr, state = GLOB.always_state) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 3523f3f43a5..710632b7b94 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -31,7 +31,7 @@ var/info_links //A different version of the paper which includes html links at fields and EOF var/stamps //The (text for the) stamps on the paper. var/fields = 0 //Amount of user created fields - var/language = "Galactic Common" //The language of paper. For now using only in case of Thetta + var/language = LANGUAGE_GALACTIC_COMMON //The language of paper. For now using only in case of Thetta var/list/stamped var/list/stamp_overlays var/ico[0] //Icons and @@ -744,7 +744,7 @@ name = "paper" header = "


" info = "" - language = "Neo-Russkiya" + language = LANGUAGE_NEO_RUSSIAN /obj/item/paper/solgov name = "paper" diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 689b693a204..be0e48fc05a 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -415,7 +415,7 @@ /obj/item/gun/projectile/automatic/cats/examine(mob/user) . = ..() if(Adjacent(user)) - if(user.say_understands(null, GLOB.all_languages["Sol Common"])) + if(user.say_understands(null, GLOB.all_languages[LANGUAGE_SOL_COMMON])) . += "Вы видите гравировку на прикладе, написанную на Общесолнечном: 'Свобода через тотальное превосходство'" else . += "Вы видите символы на прикладе, но не понимаете что они значат." diff --git a/code/modules/reagents/chemistry/reagents/alcohol.dm b/code/modules/reagents/chemistry/reagents/alcohol.dm index b5a97d102cb..a953065bd2e 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol.dm @@ -2230,7 +2230,7 @@ /datum/reagent/consumable/ethanol/trans_siberian_express/on_mob_life(mob/living/M) . = ..() - var/datum/language/rus_lang = GLOB.all_languages["Neo-Russkiya"] + var/datum/language/rus_lang = GLOB.all_languages[LANGUAGE_NEO_RUSSIAN] if((rus_lang in M.languages) && !(rus_lang in M.temporary_languages)) if(M.default_language != rus_lang) M.default_language = rus_lang diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index a7e149d608d..dbbaca3098d 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -716,5 +716,5 @@ /datum/reagent/monkeylanguage/on_mob_life(mob/living/M) if(volume > 4) - M.add_language("Chimpanzee") + M.add_language(LANGUAGE_MONKEY_HUMAN) return ..() diff --git a/code/modules/ruins/ussp_base.dm b/code/modules/ruins/ussp_base.dm index 1dfc8878033..c1ff55bb4cb 100644 --- a/code/modules/ruins/ussp_base.dm +++ b/code/modules/ruins/ussp_base.dm @@ -61,8 +61,8 @@ return H.rename_character(null, "[pick("Полковник", "Генерал майор", "Генерал лейтенант", "Генерал полковник")] [H.real_name]") - H.add_language("Neo-Russkiya") - H.set_default_language(GLOB.all_languages["Neo-Russkiya"]) + H.add_language(LANGUAGE_NEO_RUSSIAN) + H.set_default_language(GLOB.all_languages[LANGUAGE_NEO_RUSSIAN]) var/obj/item/card/id/I = H.wear_id if(istype(I)) H.sec_hud_set_ID() @@ -124,9 +124,9 @@ return H.rename_character(null, "[pick("Старший сержант", "Старшина", "Прапорщик", "Старший прапорщик")] [H.real_name]") - H.add_language("Neo-Russkiya") - H.remove_language("Galactic Common") - H.set_default_language(GLOB.all_languages["Neo-Russkiya"]) + H.add_language(LANGUAGE_NEO_RUSSIAN) + H.remove_language(LANGUAGE_GALACTIC_COMMON) + H.set_default_language(GLOB.all_languages[LANGUAGE_NEO_RUSSIAN]) var/obj/item/card/id/I = H.wear_id if(istype(I)) H.sec_hud_set_ID() @@ -189,9 +189,9 @@ return H.rename_character(null, "[pick("Сержант", "Старший сержант", "Младший лейтенант")] [H.real_name]") - H.add_language("Neo-Russkiya") - H.remove_language("Galactic Common") - H.set_default_language(GLOB.all_languages["Neo-Russkiya"]) + H.add_language(LANGUAGE_NEO_RUSSIAN) + H.remove_language(LANGUAGE_GALACTIC_COMMON) + H.set_default_language(GLOB.all_languages[LANGUAGE_NEO_RUSSIAN]) var/obj/item/card/id/I = H.wear_id if(istype(I)) H.sec_hud_set_ID() @@ -241,9 +241,9 @@ return H.rename_character(null, "[pick("Прапорщик", "Старший прапорщик", "Младший лейтенант", "Лейтенант")] [H.real_name]") - H.add_language("Neo-Russkiya") - H.remove_language("Galactic Common") - H.set_default_language(GLOB.all_languages["Neo-Russkiya"]) + H.add_language(LANGUAGE_NEO_RUSSIAN) + H.remove_language(LANGUAGE_GALACTIC_COMMON) + H.set_default_language(GLOB.all_languages[LANGUAGE_NEO_RUSSIAN]) var/obj/item/card/id/I = H.wear_id if(istype(I)) H.sec_hud_set_ID() diff --git a/code/modules/surgery/organs/subtypes/grey.dm b/code/modules/surgery/organs/subtypes/grey.dm index 5b3e0dccd2d..513c6048ac0 100644 --- a/code/modules/surgery/organs/subtypes/grey.dm +++ b/code/modules/surgery/organs/subtypes/grey.dm @@ -15,10 +15,10 @@ /obj/item/organ/internal/brain/grey/insert(mob/living/carbon/M, special = ORGAN_MANIPULATION_DEFAULT) . = ..() - M.add_language("Psionic Communication") + M.add_language(LANGUAGE_GREY) /obj/item/organ/internal/brain/grey/remove(mob/living/carbon/M, special = ORGAN_MANIPULATION_DEFAULT) - M.remove_language("Psionic Communication") + M.remove_language(LANGUAGE_GREY) . = ..() /obj/item/organ/internal/eyes/grey diff --git a/code/modules/surgery/organs/subtypes/xenos.dm b/code/modules/surgery/organs/subtypes/xenos.dm index c3eb12b9ff4..0e4a2218995 100644 --- a/code/modules/surgery/organs/subtypes/xenos.dm +++ b/code/modules/surgery/organs/subtypes/xenos.dm @@ -184,14 +184,14 @@ /obj/item/organ/internal/xenos/hivenode/insert(mob/living/carbon/M, special = ORGAN_MANIPULATION_DEFAULT) . = ..() M.faction |= "alien" - M.add_language("Hivemind") - M.add_language("Xenomorph") + M.add_language(LANGUAGE_XENOS) + M.add_language(LANGUAGE_HIVE_XENOS) /obj/item/organ/internal/xenos/hivenode/remove(mob/living/carbon/M, special = ORGAN_MANIPULATION_DEFAULT) M.faction -= "alien" - M.remove_language("Hivemind") - M.remove_language("Xenomorph") + M.remove_language(LANGUAGE_XENOS) + M.remove_language(LANGUAGE_HIVE_XENOS) . = ..()