Skip to content

Commit

Permalink
Fix: minor tts stuff (#943)
Browse files Browse the repository at this point in the history
<!-- Пишите **НИЖЕ** заголовков и **ВЫШЕ** комментариев, иначе что то
может пойти не так. -->
<!-- Вы можете прочитать Contributing.MD, если хотите узнать больше. -->

## Что этот PR делает

<!-- Вкратце опишите изменения, которые вносите. -->
<!-- Опишите **все** изменения, так как противное может сказаться на
рассмотрении этого PR'а! -->
<!-- Если вы исправляете Issue, добавьте "Fixes #1234" (где 1234 - номер
Issue) где-нибудь в описании PR'а. Это автоматически закроет Issue после
принятия PR'а. -->

## Почему это хорошо для игры

<!-- Опишите, почему, по вашему, следует добавить эти изменения в игру.
-->

## Изображения изменений
<!-- Если вы не меняли карту или спрайты, можете опустить эту секцию.
Если хотите, можете вставить видео. -->

## Тестирование
<!-- Как вы тестировали свой PR, если делали это вовсе? -->

## Changelog

:cl:
fix: Санитайз +(ударение) в сообщениях
fix: Перевод названий работ в озвучке
/:cl:

<!-- Оба :cl:'а должны быть на месте, что-бы чейнджлог работал! Вы
можете написать свой ник справа от первого :cl:, если хотите. Иначе
будет использован ваш ник на ГитХабе. -->
<!-- Вы можете использовать несколько записей с одинаковым префиксом
(Они используются только для иконки в игре) и удалить ненужные. Помните,
что чейнджлог должен быть понятен обычным игроком. -->
<!-- Если чейнджлог не влияет на игроков(например, это рефактор), вы
можете исключить всю секцию. -->

---------

Co-authored-by: Mikhail Dzianishchyts <[email protected]>
  • Loading branch information
Furrior and m-dzianishchyts authored Jan 29, 2024
1 parent a7c06d8 commit b1aef02
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 82 deletions.
4 changes: 4 additions & 0 deletions modular_ss220/text_to_speech/code/hear.dm
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@
return trim(msg)


/mob/combine_message(list/message_pieces, verb, mob/speaker, always_stars)
. = ..()
return replace_characters(., list("+"))

/mob/hear_say(list/message_pieces, verb, italics, mob/speaker, sound/speech_sound, sound_vol, sound_frequency, use_voice)
. = ..()
if(!can_hear())
Expand Down
160 changes: 78 additions & 82 deletions modular_ss220/text_to_speech/code/tts_subsystem.dm
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,75 @@ SUBSYSTEM_DEF(tts220)

var/debug_mode_enabled = FALSE

var/static/tts_acronym_replacements = list(
"нт" = "Эн Тэ",
"смо" = "Эс Мэ О",
"гп" = "Гэ Пэ",
"рд" = "Эр Дэ",
"гсб" = "Гэ Эс Бэ",
"срп" = "Эс Эр Пэ",
"цк" = "Цэ Каа",
"рнд" = "Эр Эн Дэ",
"сб" = "Эс Бэ",
"рцд" = "Эр Цэ Дэ",
"брпд" = "Бэ Эр Пэ Дэ",
"рпд" = "Эр Пэ Дэ",
"рпед" = "Эр Пед",
"тсф" = "Тэ Эс Эф",
"срт" = "Эс Эр Тэ",
"обр" = "О Бэ Эр",
"кпк" = "Кэ Пэ Каа",
"пда" = "Пэ Дэ А",
"id" = "Ай Ди",
"мщ" = "Эм Ще",
"вт" = "Вэ Тэ",
"ерп" = "Йе Эр Пэ",
"се" = "Эс Йе",
"апц" = "А Пэ Цэ",
"лкп" = "Эл Ка Пэ",
"см" = "Эс Эм",
"ека" = "Йе Ка",
"ка" = "Кэ А",
"бса" = "Бэ Эс Аа",
"днк" = "Дэ Эн Ка",
"тк" = "Тэ Ка",
"бфл" = "Бэ Эф Эл",
"бщ" = "Бэ Щэ",
"кк" = "Кэ Ка",
"ск" = "Эс Ка",
"зк" = "Зэ Ка",
"ерт" = "Йе Эр Тэ",
"вкд" = "Вэ Ка Дэ",
"нтр" = "Эн Тэ Эр",
"пнт" = "Пэ Эн Тэ",
"авд" = "А Вэ Дэ",
"пнв" = "Пэ Эн Вэ",
"ссд" = "Эс Эс Дэ",
"кпб" = "Кэ Пэ Бэ",
"сссп" = "Эс Эс Эс Пэ",
"крб" = "Ка Эр Бэ",
"бд" = "Бэ Дэ",
"сст" = "Эс Эс Тэ",
"скс" = "Эс Ка Эс",
"икн" = "И Ка Эн",
"нсс" = "Эн Эс Эс",
"емп" = "Йе Эм Пэ",
"бс" = "Бэ Эс",
"цкс" = "Цэ Ка Эс",
"срд" = "Эс Эр Дэ",
"жпс" = "Джи Пи Эс",
"gps" = "Джи Пи Эс",
"ннксс" = "Эн Эн Ка Эс Эс",
"ss" = "Эс Эс",
"сс" = "Эс Эс",
"тесла" = "тэсла",
"трейзен" = "трэйзэн",
"нанотрейзен" = "нанотрэйзэн",
"мед" = "м ед",
"меде" = "м еде",
"кз" = "Кэ Зэ",
)

var/static/list/tts_job_replacements = list(
"nanotrasen navy field officer" = "Полевой офицер флота Нанотрэйзен",
"nanotrasen navy officer" = "Офицер флота nanotrasen",
Expand Down Expand Up @@ -115,18 +184,18 @@ SUBSYSTEM_DEF(tts220)
"warden" = "Смотритель",
"detective" = "Детектив",
"forensic technician" = "Криминалист",
"junior security officer" = "Младший офицер службы безопасности",
"security officer" = "Офицер службы безопасности",
"security trainer" = "Тренер службы безопасности",
"junior security officer" = "Младший офицер службы безопасности",
"security cadet" = "Кадет службы безопасности",
"Security Assistant" = "Ассистент службы безопасности",
"Security Graduate" = "Выпускник кадетской академии",
"brig physician" = "Врач брига",
"security pod pilot" = "Пилот пода службы безопасности",
"captain" = "Капитан",
"ai" = "И И",
"cyborg" = "Киборг",
"robot" = "Робот",
"captain" = "Капитан",
"head of personnel" = "Глава персонала",
"nanotrasen representative" = "Представитель Нанотрэйзен",
"blueshield" = "Блюшилд",
Expand Down Expand Up @@ -471,106 +540,33 @@ SUBSYSTEM_DEF(tts220)
sanitized_messages_cache_miss++
. = message
. = trim(.)

var/static/regex/punctuation_check = new(@"[.,?!]\Z")
if(!punctuation_check.Find(.))
. += "."

var/static/regex/html_tags = new(@"<[^>]*>", "g")
. = html_tags.Replace(., "")
. = html_decode(.)

var/static/regex/forbidden_symbols = new(@"[^a-zA-Z0-9а-яА-ЯёЁ,!?+./ \r\n\t:—()-]", "g")
. = forbidden_symbols.Replace(., "")

var/static/regex/words = new(@"(?<![a-zA-Zа-яёА-ЯЁ])[a-zA-Zа-яёА-ЯЁ]+?(?![a-zA-Zа-яёА-ЯЁ])", "igm")
. = replacetext(., words, /proc/tts_word_replacer)
var/static/regex/acronyms = new(@"(?<![a-zA-Zа-яёА-ЯЁ])[a-zA-Zа-яёА-ЯЁ]+?(?![a-zA-Zа-яёА-ЯЁ])", "gm")
. = replacetext_char(., acronyms, /proc/tts_acronym_replacer)
for(var/job in tts_job_replacements)
. = replacetext(., regex(job, "igm"), tts_job_replacements[job])
. = replacetext_char(., job, tts_job_replacements[job])
. = rustg_ss220_latin_to_cyrillic(.)

var/static/regex/decimals = new(@"-?\d+\.\d+", "g")
. = replacetext(., decimals, /proc/dec_in_words)
. = replacetext_char(., decimals, /proc/dec_in_words)

var/static/regex/numbers = new(@"-?\d+", "g")
. = replacetext(., numbers, /proc/num_in_words)
. = replacetext_char(., numbers, /proc/num_in_words)
if(sanitized_messages_caching)
sanitized_messages_cache[hash] = .

/proc/tts_cast(atom/speaker, mob/listener, message, seed_name, is_local = TRUE, effect = SOUND_EFFECT_NONE, traits = TTS_TRAIT_RATE_FASTER, preSFX = null, postSFX = null)
SStts220.get_tts(speaker, listener, message, seed_name, is_local, effect, traits, preSFX, postSFX)

/proc/tts_word_replacer(word)
var/static/list/tts_replacement_list
if(!tts_replacement_list)
tts_replacement_list = list(
"нт" = "Эн Тэ",
"смо" = "Эс Мэ О",
"гп" = "Гэ Пэ",
"рд" = "Эр Дэ",
"гсб" = "Гэ Эс Бэ",
"срп" = "Эс Эр Пэ",
"цк" = "Цэ Каа",
"рнд" = "Эр Эн Дэ",
"сб" = "Эс Бэ",
"рцд" = "Эр Цэ Дэ",
"брпд" = "Бэ Эр Пэ Дэ",
"рпд" = "Эр Пэ Дэ",
"рпед" = "Эр Пед",
"тсф" = "Тэ Эс Эф",
"срт" = "Эс Эр Тэ",
"обр" = "О Бэ Эр",
"кпк" = "Кэ Пэ Каа",
"пда" = "Пэ Дэ А",
"id" = "Ай Ди",
"мщ" = "Эм Ще",
"вт" = "Вэ Тэ",
"ерп" = "Йе Эр Пэ",
"се" = "Эс Йе",
"апц" = "А Пэ Цэ",
"лкп" = "Эл Ка Пэ",
"см" = "Эс Эм",
"ека" = "Йе Ка",
"ка" = "Кэ А",
"бса" = "Бэ Эс Аа",
"тк" = "Тэ Ка",
"бфл" = "Бэ Эф Эл",
"бщ" = "Бэ Щэ",
"кк" = "Кэ Ка",
"ск" = "Эс Ка",
"зк" = "Зэ Ка",
"ерт" = "Йе Эр Тэ",
"вкд" = "Вэ Ка Дэ",
"нтр" = "Эн Тэ Эр",
"пнт" = "Пэ Эн Тэ",
"авд" = "А Вэ Дэ",
"пнв" = "Пэ Эн Вэ",
"ссд" = "Эс Эс Дэ",
"кпб" = "Кэ Пэ Бэ",
"сссп" = "Эс Эс Эс Пэ",
"крб" = "Ка Эр Бэ",
"бд" = "Бэ Дэ",
"сст" = "Эс Эс Тэ",
"скс" = "Эс Ка Эс",
"икн" = "И Ка Эн",
"нсс" = "Эн Эс Эс",
"емп" = "Йе Эм Пэ",
"бс" = "Бэ Эс",
"цкс" = "Цэ Ка Эс",
"срд" = "Эс Эр Дэ",
"жпс" = "Джи Пи Эс",
"gps" = "Джи Пи Эс",
"ннксс" = "Эн Эн Ка Эс Эс",
"ss" = "Эс Эс",
"сс" = "Эс Эс",
"тесла" = "тэсла",
"трейзен" = "трэйзэн",
"нанотрейзен" = "нанотрэйзэн",
"мед" = "м ед",
"меде" = "м еде",
"кз" = "Кэ Зэ",
)
var/match = tts_replacement_list[lowertext(word)]
/proc/tts_acronym_replacer(word)
var/match = SStts220.tts_acronym_replacements[lowertext(word)]
if(match)
return match
return word

0 comments on commit b1aef02

Please sign in to comment.