From b067cf2b4eab6b26d498f3282eedec5326e61d71 Mon Sep 17 00:00:00 2001 From: Alberyk Date: Sat, 26 Jan 2019 14:14:18 -0200 Subject: [PATCH] Fixes recorders translating mice and cult speak (#5955) This fixes recorders being able to translate languages like cult, neither translate simple animals message, with some exceptions. --- code/game/objects/items/devices/taperecorder.dm | 6 ++++++ code/modules/integrated_electronics/subtypes/input.dm | 6 ++++++ code/modules/mob/language/language.dm | 1 + code/modules/mob/language/monkey.dm | 5 +++++ code/modules/mob/language/outsider.dm | 3 +++ html/changelogs/alberyk-recorder.yml | 6 ++++++ 6 files changed, 27 insertions(+) create mode 100644 html/changelogs/alberyk-recorder.yml diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 336b6bf4f72..d2226d8e1a8 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -29,10 +29,16 @@ return ..() /obj/item/device/taperecorder/hear_talk(mob/living/M as mob, msg, var/verb="says", datum/language/speaking=null) + if(isanimal(M)) + if(!M.universal_speak) + return + if(recording) timestamp += timerecorded if(speaking) + if(!speaking.machine_understands) + msg = speaking.scramble(msg) storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] [speaking.format_message_plain(msg, verb)]" else storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] [verb], \"[msg]\"" diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index 1da1b29143e..94203018305 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -350,9 +350,15 @@ return ..() /obj/item/integrated_circuit/input/microphone/hear_talk(mob/living/M, msg, var/verb="says", datum/language/speaking=null) + if(isanimal(M)) + if(!M.universal_speak) + return + var/translated = FALSE if(M && msg) if(speaking) + if(!speaking.machine_understands) + msg = speaking.scramble(msg) if(!istype(speaking, /datum/language/common)) translated = TRUE set_pin_data(IC_OUTPUT, 1, M.GetVoice()) diff --git a/code/modules/mob/language/language.dm b/code/modules/mob/language/language.dm index 01ece82de4f..970fc75c86a 100644 --- a/code/modules/mob/language/language.dm +++ b/code/modules/mob/language/language.dm @@ -19,6 +19,7 @@ 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/list/partial_understanding // List of languages that can /somehwat/ understand it, format is: name = chance of understanding a word + var/machine_understands = TRUE // Whether machines can parse and understand this language /datum/language/proc/get_random_name(var/gender, name_count=2, syllable_count=4, syllable_divisor=2) if(!syllables || !syllables.len) diff --git a/code/modules/mob/language/monkey.dm b/code/modules/mob/language/monkey.dm index 678af61495c..e5b29d0ff1e 100644 --- a/code/modules/mob/language/monkey.dm +++ b/code/modules/mob/language/monkey.dm @@ -5,21 +5,25 @@ ask_verb = "chimpers" exclaim_verb = "screeches" key = "6" + machine_understands = FALSE /datum/language/skrell/monkey name = LANGUAGE_NEAERA desc = "Squik squik squik." key = "8" + machine_understands = FALSE /datum/language/unathi/monkey name = LANGUAGE_STOK desc = "Hiss hiss hiss." key = "7" + machine_understands = FALSE /datum/language/tajaran/monkey name = LANGUAGE_FARWA desc = "Meow meow meow." key = "^" + machine_understands = FALSE /datum/language/bug/monkey name = LANGUAGE_BUG @@ -31,3 +35,4 @@ syllables = list("vaur","uyek","uyit","avek","sc'theth","k'ztak","teth","wre'ge","lii","dra'","zo'","ra'","k'lax'","zz","vh","ik","ak", "uhk","zir","sc'orth","sc'er","thc'yek","th'zirk","th'esk","k'ayek","ka'mil","sc'","ik'yir","yol","kig","k'zit","'","'","zrk","krg","isk'yet","na'k", "sc'azz","th'sc","nil","n'ahk","sc'yeth","aur'sk","iy'it","azzg","a'","i'","o'","u'","a","i","o","u","zz","kr","ak","nrk") + machine_understands = FALSE diff --git a/code/modules/mob/language/outsider.dm b/code/modules/mob/language/outsider.dm index f35d1a841e2..6f2a3842fe4 100644 --- a/code/modules/mob/language/outsider.dm +++ b/code/modules/mob/language/outsider.dm @@ -8,6 +8,7 @@ key = "z" flags = RESTRICTED syllables = list("sss","sSs","SSS") + machine_understands = FALSE /datum/language/xenos name = LANGUAGE_HIVEMIND @@ -79,6 +80,7 @@ flags = WHITELISTED syllables = list("ti","ti","ti","hi","hi","ki","ki","ki","ki","ya","ta","ha","ka","ya","chi","cha","kah", \ "SKRE","AHK","EHK","RAWK","KRA","AAA","EEE","KI","II","KRI","KA") + machine_understands = FALSE /datum/language/vox/get_random_name() return ..(FEMALE,1,6) @@ -100,6 +102,7 @@ "sektath", "mal'zua", "zasan", "therium", "viortia", "kla'atu", "barada", "nikt'o", "fwe'sh", "mah", "erl", "nyag", "r'ya", \ "gal'h'rfikk", "harfrandid", "mud'gib", "fuu", "ma'jin", "dedo", "ol'btoh", "n'ath", "reth", "sh'yro", "eth", \ "d'rekkathnor", "khari'd", "gual'te", "nikka", "nikt'o", "barada", "kla'atu", "barhah", "hra" ,"zar'garis") + machine_understands = FALSE /datum/language/cultcommon/get_random_name() var/new_name = "[pick(list("Anguished", "Blasphemous", "Corrupt", "Cruel", "Depraved", "Despicable", "Disturbed", "Exacerbated", "Foul", "Hateful", "Inexorable", "Implacable", "Impure", "Malevolent", "Malignant", "Malicious", "Pained", "Profane", "Profligate", "Relentless", "Resentful", "Restless", "Spiteful", "Tormented", "Unclean", "Unforgiving", "Vengeful", "Vindictive", "Wicked", "Wronged"))]" diff --git a/html/changelogs/alberyk-recorder.yml b/html/changelogs/alberyk-recorder.yml new file mode 100644 index 00000000000..46d496b3749 --- /dev/null +++ b/html/changelogs/alberyk-recorder.yml @@ -0,0 +1,6 @@ +author: Alberyk + +delete-after: True + +changes: + - tweak: "Recorders are no longer able to translate unknown languages, such as cult."