From bde9ed571d30d499d9c8de74b98ba1a202ded3c4 Mon Sep 17 00:00:00 2001
From: A-Mironov <65418470+Alexnov33X@users.noreply.github.com>
Date: Sat, 27 Sep 2025 00:55:16 +0300
Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=BE=D1=80=D0=BC=D0=B0=D0=BB=D1=8C?=
=?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D0=B0=D0=BA=D1=86=D0=B5=D0=BD=D1=82=20+?=
=?UTF-8?q?=20=D1=84=D0=B8=D0=BA=D1=81=D1=8B=20=D0=A2=D0=A2=D0=A1=20(#3225?=
=?UTF-8?q?)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Vigers Ray <60344369+VigersRay@users.noreply.github.com>
---
.../Components/FormalAccentComponent.cs | 11 ++
.../EntitySystems/FormalAccentSystem.cs | 36 ++++++
Content.Shared/_Sunrise/TTS/TTSComponent.cs | 2 +-
.../Locale/en-US/_strings/accent/accents.ftl | 102 +++++++++++++++++
.../Locale/en-US/_strings/accent/formal.ftl | 103 +++++++++++++++++
.../Locale/en-US/_strings/traits/traits.ftl | 5 +
.../_sunrise/speech/speech-chatsan.ftl | 2 +-
.../Locale/ru-RU/_strings/accent/accents.ftl | 102 +++++++++++++++++
.../Locale/ru-RU/_strings/accent/formal.ftl | 105 ++++++++++++++++++
.../Locale/ru-RU/_strings/traits/traits.ftl | 4 +
.../Prototypes/Accents/word_replacements.yml | 51 +++++++++
.../Prototypes/Entities/Mobs/Player/clone.yml | 1 +
Resources/Prototypes/Traits/speech.yml | 10 ++
13 files changed, 532 insertions(+), 2 deletions(-)
create mode 100644 Content.Server/_Sunrise/Speech/Components/FormalAccentComponent.cs
create mode 100644 Content.Server/_Sunrise/Speech/EntitySystems/FormalAccentSystem.cs
create mode 100644 Resources/Locale/en-US/_strings/accent/formal.ftl
create mode 100644 Resources/Locale/ru-RU/_strings/accent/formal.ftl
diff --git a/Content.Server/_Sunrise/Speech/Components/FormalAccentComponent.cs b/Content.Server/_Sunrise/Speech/Components/FormalAccentComponent.cs
new file mode 100644
index 0000000000..59b2d8a900
--- /dev/null
+++ b/Content.Server/_Sunrise/Speech/Components/FormalAccentComponent.cs
@@ -0,0 +1,11 @@
+using Content.Server._Sunrise.Speech.EntitySystems;
+using Content.Server.Speech.EntitySystems;
+
+namespace Content.Server._Sunrise.Speech.Components;
+
+///
+/// Formal accent expands abbreviations to their full formal meanings.
+///
+[RegisterComponent]
+[Access(typeof(FormalAccentSystem))]
+public sealed partial class FormalAccentComponent : Component {} // Fish-edit
diff --git a/Content.Server/_Sunrise/Speech/EntitySystems/FormalAccentSystem.cs b/Content.Server/_Sunrise/Speech/EntitySystems/FormalAccentSystem.cs
new file mode 100644
index 0000000000..0673b6c49d
--- /dev/null
+++ b/Content.Server/_Sunrise/Speech/EntitySystems/FormalAccentSystem.cs
@@ -0,0 +1,36 @@
+using Content.Server._Sunrise.Speech.Components;
+using Content.Server.Speech.Components;
+using Content.Server.Speech.EntitySystems;
+using Content.Shared.Speech;
+
+namespace Content.Server._Sunrise.Speech.EntitySystems;
+
+///
+/// System that gives the speaker a formal accent by expanding abbreviations.
+///
+public sealed class FormalAccentSystem : EntitySystem // Fish-edit
+{
+ [Dependency] private readonly ReplacementAccentSystem _replacement = default!;
+
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ SubscribeLocalEvent(OnAccentGet);
+ }
+
+ public string Accentuate(string message, FormalAccentComponent component)
+ {
+ var msg = message;
+
+ // Apply the formal accent word replacements
+ msg = _replacement.ApplyReplacements(msg, "formal");
+
+ return msg;
+ }
+
+ private void OnAccentGet(EntityUid uid, FormalAccentComponent component, AccentGetEvent args)
+ {
+ args.Message = Accentuate(args.Message, component);
+ }
+} // Fish-edit
diff --git a/Content.Shared/_Sunrise/TTS/TTSComponent.cs b/Content.Shared/_Sunrise/TTS/TTSComponent.cs
index af30ab4bb0..5c37efc25f 100644
--- a/Content.Shared/_Sunrise/TTS/TTSComponent.cs
+++ b/Content.Shared/_Sunrise/TTS/TTSComponent.cs
@@ -15,5 +15,5 @@ public sealed partial class TTSComponent : Component
///
[ViewVariables(VVAccess.ReadWrite)]
[DataField("voice", customTypeSerializer: typeof(PrototypeIdSerializer))]
- public string? VoicePrototypeId { get; set; }
+ public string? VoicePrototypeId { get; set; } = "Voljin"; // Fish-edit: Default voice when component is freshly added
}
diff --git a/Resources/Locale/en-US/_strings/accent/accents.ftl b/Resources/Locale/en-US/_strings/accent/accents.ftl
index 75644c8b2e..4bef420825 100644
--- a/Resources/Locale/en-US/_strings/accent/accents.ftl
+++ b/Resources/Locale/en-US/_strings/accent/accents.ftl
@@ -153,3 +153,105 @@ accent-words-scurret-17 = Waaaaaa.
accent-words-scurret-18 = Waaaaaa!
accent-words-scurret-19 = Waaaaaa?
accent-words-scurret-20 = Waaaaaa...
+
+# Formal accent - expands abbreviations to full meanings
+accent-words-formal-1 = HOP
+accent-words-formal-2 = CMO
+accent-words-formal-3 = CE
+accent-words-formal-4 = RD
+accent-words-formal-5 = QM
+accent-words-formal-6 = HOS
+accent-words-formal-7 = WARDEN
+accent-words-formal-8 = DET
+accent-words-formal-9 = OFFICER
+accent-words-formal-10 = MD
+accent-words-formal-11 = EMT
+accent-words-formal-12 = PARAMEDIC
+accent-words-formal-13 = CHEMIST
+accent-words-formal-14 = GENETICIST
+accent-words-formal-15 = VIROLOGIST
+accent-words-formal-16 = SURGEON
+accent-words-formal-17 = PSYCHOLOGIST
+accent-words-formal-18 = CLOWN
+accent-words-formal-19 = MIME
+accent-words-formal-20 = JANITOR
+accent-words-formal-21 = CHEF
+accent-words-formal-22 = BOTANIST
+accent-words-formal-23 = BARTENDER
+accent-words-formal-24 = CHAPLAIN
+accent-words-formal-25 = CURATOR
+accent-words-formal-26 = LAWYER
+accent-words-formal-27 = REPORTER
+accent-words-formal-28 = ASSISTANT
+accent-words-formal-29 = CAPTAIN
+accent-words-formal-30 = AI
+accent-words-formal-31 = CYBORG
+accent-words-formal-32 = ROBOT
+accent-words-formal-33 = PDA
+accent-words-formal-34 = ID
+accent-words-formal-35 = EVA
+accent-words-formal-36 = EVA SUIT
+accent-words-formal-37 = ATMOS
+accent-words-formal-38 = ATMOSPHERICS
+accent-words-formal-39 = MAINT
+accent-words-formal-40 = MAINTENANCE
+accent-words-formal-41 = SEC
+accent-words-formal-42 = MED
+accent-words-formal-43 = ENG
+accent-words-formal-44 = SCI
+accent-words-formal-45 = CARGO
+accent-words-formal-46 = COMMAND
+accent-words-formal-47 = SERVICE
+accent-words-formal-48 = SUPPLY
+accent-words-formal-49 = BRIG
+accent-words-formal-50 = PERMA
+accent-words-formal-51 = PERMABRIG
+accent-words-formal-52 = SHUTTLE
+accent-words-formal-53 = EMERGENCY SHUTTLE
+accent-words-formal-54 = ESCAPE SHUTTLE
+accent-words-formal-55 = NUKIE
+accent-words-formal-56 = SYNDIE
+accent-words-formal-57 = SYNDICATE
+accent-words-formal-58 = NT
+accent-words-formal-59 = NANOTRASEN
+accent-words-formal-60 = CENTCOM
+accent-words-formal-61 = CENTRAL COMMAND
+accent-words-formal-62 = SOL
+accent-words-formal-63 = SOL SYSTEM
+accent-words-formal-64 = SS13
+accent-words-formal-65 = SS14
+accent-words-formal-66 = BYOND
+accent-words-formal-67 = TG
+accent-words-formal-68 = BAY
+accent-words-formal-69 = FULP
+accent-words-formal-70 = PARADISE
+accent-words-formal-71 = GOON
+accent-words-formal-72 = VG
+accent-words-formal-73 = YOG
+accent-words-formal-74 = BEE
+accent-words-formal-75 = TAU CETI
+accent-words-formal-76 = TAU CETI SYSTEM
+accent-words-formal-77 = LAVALAND
+accent-words-formal-78 = MINING
+accent-words-formal-79 = MINER
+accent-words-formal-80 = XENO
+accent-words-formal-81 = XENOMORPH
+accent-words-formal-82 = ALIEN
+accent-words-formal-83 = SLIME
+accent-words-formal-84 = SLIME PERSON
+accent-words-formal-85 = LIZARD
+accent-words-formal-86 = LIZARDPERSON
+accent-words-formal-87 = UNATHI
+accent-words-formal-88 = TAJARA
+accent-words-formal-89 = TAJARAN
+accent-words-formal-90 = VULP
+accent-words-formal-91 = VULPKANIN
+accent-words-formal-92 = VOX
+accent-words-formal-93 = VOX PRATEORIAN
+accent-words-formal-94 = VOX PRATEORIAN
+accent-words-formal-95 = VOX PRATEORIAN
+accent-words-formal-96 = VOX PRATEORIAN
+accent-words-formal-97 = VOX PRATEORIAN
+accent-words-formal-98 = VOX PRATEORIAN
+accent-words-formal-99 = VOX PRATEORIAN
+accent-words-formal-100 = VOX PRATEORIAN
\ No newline at end of file
diff --git a/Resources/Locale/en-US/_strings/accent/formal.ftl b/Resources/Locale/en-US/_strings/accent/formal.ftl
new file mode 100644
index 0000000000..d3dc6e6321
--- /dev/null
+++ b/Resources/Locale/en-US/_strings/accent/formal.ftl
@@ -0,0 +1,103 @@
+# Fish-edit-start
+# Formal accent - expands abbreviations to full meanings
+# This accent makes speech more formal by expanding common abbreviations
+
+# Russian abbreviations moved from chatsanitize
+accent-formal-words-101 = авд
+accent-formal-words-replace-101 = агент внутренних дел
+accent-formal-words-102 = адик
+accent-formal-words-replace-102 = адъютант
+accent-formal-words-103 = вв
+accent-formal-words-replace-103 = ведущий врач
+accent-formal-words-104 = ви
+accent-formal-words-replace-104 = ведущий инженер
+accent-formal-words-105 = ву
+accent-formal-words-replace-105 = ведущий учёный
+accent-formal-words-106 = гп
+accent-formal-words-replace-106 = глава персонала
+accent-formal-words-107 = хоп
+accent-formal-words-replace-107 = глава персонала
+accent-formal-words-108 = гсб
+accent-formal-words-replace-108 = глава службы безопасности
+accent-formal-words-109 = хос
+accent-formal-words-replace-109 = глава службы безопасности
+accent-formal-words-110 = гв
+accent-formal-words-replace-110 = главный врач
+accent-formal-words-111 = смо
+accent-formal-words-replace-111 = главный врач
+accent-formal-words-112 = хопа
+accent-formal-words-replace-112 = главы персонала
+accent-formal-words-113 = хоса
+accent-formal-words-replace-113 = главы службы безопасности
+accent-formal-words-114 = дек
+accent-formal-words-replace-114 = детектив
+accent-formal-words-115 = дет
+accent-formal-words-replace-115 = детектив
+accent-formal-words-116 = дэк
+accent-formal-words-replace-116 = детектив
+accent-formal-words-117 = дека
+accent-formal-words-replace-117 = детектива
+accent-formal-words-118 = дэка
+accent-formal-words-replace-118 = детектива
+accent-formal-words-119 = деку
+accent-formal-words-replace-119 = детективу
+accent-formal-words-120 = дэку
+accent-formal-words-replace-120 = детективу
+accent-formal-words-121 = км
+accent-formal-words-replace-121 = квартирмейстер
+accent-formal-words-122 = кма
+accent-formal-words-replace-122 = квартирмейстера
+accent-formal-words-123 = ксщ
+accent-formal-words-replace-123 = командир синего щита
+accent-formal-words-124 = лобр
+accent-formal-words-replace-124 = лидер отряда быстрого реагирования
+accent-formal-words-125 = нр
+accent-formal-words-replace-125 = научный руководитель
+accent-formal-words-126 = рд
+accent-formal-words-replace-126 = научный руководитель
+accent-formal-words-127 = ншцк
+accent-formal-words-replace-127 = начальник штаба центрального командования
+accent-formal-words-128 = карго
+accent-formal-words-replace-128 = отдел снабжения
+accent-formal-words-129 = обр
+accent-formal-words-replace-129 = отряд быстрого реагирования
+accent-formal-words-130 = рхбзз
+accent-formal-words-replace-130 = отряд радиационной химической биологической и зомби защиты
+accent-formal-words-131 = овн
+accent-formal-words-replace-131 = офицер внутреннего надзора
+accent-formal-words-132 = исн
+accent-formal-words-replace-132 = офицер исполнительной судебно-надзорной службы
+accent-formal-words-133 = осщ
+accent-formal-words-replace-133 = офицер синего щита
+accent-formal-words-134 = осо
+accent-formal-words-replace-134 = офицер спецопераций
+accent-formal-words-135 = оцк
+accent-formal-words-replace-135 = офицер центрального командования
+accent-formal-words-136 = исны
+accent-formal-words-replace-136 = офицеры исполнительной судебно-надзорной службы
+accent-formal-words-137 = пнт
+accent-formal-words-replace-137 = представитель NanoTrasen
+accent-formal-words-138 = пункт
+accent-formal-words-replace-138 = пунктураз
+accent-formal-words-139 = нио
+accent-formal-words-replace-139 = рнд
+accent-formal-words-140 = варденом
+accent-formal-words-replace-140 = смотрителем
+accent-formal-words-141 = вард
+accent-formal-words-replace-141 = смотритель
+accent-formal-words-142 = варден
+accent-formal-words-replace-142 = смотритель
+accent-formal-words-143 = вардену
+accent-formal-words-replace-143 = смотрителю
+accent-formal-words-144 = вардена
+accent-formal-words-replace-144 = смотрителя
+accent-formal-words-145 = сии
+accent-formal-words-replace-145 = станционный ИИ
+accent-formal-words-146 = пцк
+accent-formal-words-replace-146 = представитель центрального командования
+accent-formal-words-147 = нра
+accent-formal-words-replace-147 = научного руководителя
+accent-formal-words-148 = нру
+accent-formal-words-replace-148 = научному руководителю
+# Fish-edit-end
+
diff --git a/Resources/Locale/en-US/_strings/traits/traits.ftl b/Resources/Locale/en-US/_strings/traits/traits.ftl
index 3895ce162d..ca92596ce2 100644
--- a/Resources/Locale/en-US/_strings/traits/traits.ftl
+++ b/Resources/Locale/en-US/_strings/traits/traits.ftl
@@ -63,6 +63,11 @@ trait-french-desc = Your accent seems to have a certain «je ne sais quoi».
trait-spanish-name = Spanish accent
trait-spanish-desc = Hola señor, donde esta la biblioteca.
+# Fish-edit-start
+trait-formal-name = Formal accent
+trait-formal-desc = You speak in a very formal manner, expanding abbreviations into their full meanings.
+# Fish-edit-end
+
trait-painnumbness-name = Numb
trait-painnumbness-desc = You lack any sense of feeling pain, being unaware of how hurt you may be.
diff --git a/Resources/Locale/ru-RU/_strings/_sunrise/speech/speech-chatsan.ftl b/Resources/Locale/ru-RU/_strings/_sunrise/speech/speech-chatsan.ftl
index 74ea726a1f..20e3873663 100644
--- a/Resources/Locale/ru-RU/_strings/_sunrise/speech/speech-chatsan.ftl
+++ b/Resources/Locale/ru-RU/_strings/_sunrise/speech/speech-chatsan.ftl
@@ -587,4 +587,4 @@ russian-chatsan-replacement-293 = представитель центральн
russian-chatsan-word-294 = нра
russian-chatsan-replacement-294 = научного руководителя
russian-chatsan-word-295 = нру
-russian-chatsan-replacement-295 = научному руководителю
+russian-chatsan-replacement-295 = научному руководителю
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/_strings/accent/accents.ftl b/Resources/Locale/ru-RU/_strings/accent/accents.ftl
index 03d29f4ae2..5f61acbf33 100644
--- a/Resources/Locale/ru-RU/_strings/accent/accents.ftl
+++ b/Resources/Locale/ru-RU/_strings/accent/accents.ftl
@@ -113,3 +113,105 @@ accent-words-tomato-2 = Тротект
accent-words-tomato-3 = Мастет?
accent-words-tomato-4 = Реати!
accent-words-tomato-5 = Вода...
+
+# Formal accent - expands abbreviations to full meanings
+accent-words-formal-1 = ГП
+accent-words-formal-2 = ГМО
+accent-words-formal-3 = ГИ
+accent-words-formal-4 = ДИ
+accent-words-formal-5 = КМ
+accent-words-formal-6 = ГСБ
+accent-words-formal-7 = НАДЗИРАТЕЛЬ
+accent-words-formal-8 = ДЕТЕКТИВ
+accent-words-formal-9 = ОФИЦЕР
+accent-words-formal-10 = ВРАЧ
+accent-words-formal-11 = ПАРАМЕДИК
+accent-words-formal-12 = ПАРАМЕДИК
+accent-words-formal-13 = ХИМИК
+accent-words-formal-14 = ГЕНЕТИК
+accent-words-formal-15 = ВИРУСОЛОГ
+accent-words-formal-16 = ХИРУРГ
+accent-words-formal-17 = ПСИХОЛОГ
+accent-words-formal-18 = КЛОУН
+accent-words-formal-19 = МИМ
+accent-words-formal-20 = УБОРЩИК
+accent-words-formal-21 = ПОВАР
+accent-words-formal-22 = БОТАНИК
+accent-words-formal-23 = БАРМЕН
+accent-words-formal-24 = КАПЕЛЛАН
+accent-words-formal-25 = КУРАТОР
+accent-words-formal-26 = АДВОКАТ
+accent-words-formal-27 = РЕПОРТЕР
+accent-words-formal-28 = АССИСТЕНТ
+accent-words-formal-29 = КАПИТАН
+accent-words-formal-30 = ИИ
+accent-words-formal-31 = КИБОРГ
+accent-words-formal-32 = РОБОТ
+accent-words-formal-33 = КПК
+accent-words-formal-34 = УДОСТОВЕРЕНИЕ
+accent-words-formal-35 = ВКД
+accent-words-formal-36 = СКАФАНДР ВКД
+accent-words-formal-37 = АТМОС
+accent-words-formal-38 = АТМОСФЕРИКА
+accent-words-formal-39 = ТЕХОБСЛУЖИВАНИЕ
+accent-words-formal-40 = ТЕХОБСЛУЖИВАНИЕ
+accent-words-formal-41 = СБ
+accent-words-formal-42 = МЕД
+accent-words-formal-43 = ИНЖ
+accent-words-formal-44 = НАУКА
+accent-words-formal-45 = ГРУЗ
+accent-words-formal-46 = КОМАНДА
+accent-words-formal-47 = СЕРВИС
+accent-words-formal-48 = СНАБЖЕНИЕ
+accent-words-formal-49 = ТЮРЬМА
+accent-words-formal-50 = ПЕРМА
+accent-words-formal-51 = ПЕРМА
+accent-words-formal-52 = ШАТТЛ
+accent-words-formal-53 = АВАРИЙНЫЙ ШАТТЛ
+accent-words-formal-54 = ЭВАКУАЦИОННЫЙ ШАТТЛ
+accent-words-formal-55 = ЯДЕРЩИК
+accent-words-formal-56 = СИНДИКАТЩИК
+accent-words-formal-57 = СИНДИКАТ
+accent-words-formal-58 = НТ
+accent-words-formal-59 = НАНОТРАСЕН
+accent-words-formal-60 = ЦЕНТКОМ
+accent-words-formal-61 = ЦЕНТРАЛЬНОЕ КОМАНДОВАНИЕ
+accent-words-formal-62 = СОЛНЦЕ
+accent-words-formal-63 = СОЛНЕЧНАЯ СИСТЕМА
+accent-words-formal-64 = КС13
+accent-words-formal-65 = КС14
+accent-words-formal-66 = БАЙОНД
+accent-words-formal-67 = ТГ
+accent-words-formal-68 = БЭЙ
+accent-words-formal-69 = ФУЛП
+accent-words-formal-70 = РАЙ
+accent-words-formal-71 = ГУН
+accent-words-formal-72 = ВГ
+accent-words-formal-73 = ЙОГ
+accent-words-formal-74 = БИ
+accent-words-formal-75 = ТАУ КИТА
+accent-words-formal-76 = СИСТЕМА ТАУ КИТА
+accent-words-formal-77 = ЛАВАЛЕНД
+accent-words-formal-78 = ДОБЫЧА
+accent-words-formal-79 = ШАХТЕР
+accent-words-formal-80 = КСЕНО
+accent-words-formal-81 = КСЕНОМОРФ
+accent-words-formal-82 = ЧУЖОЙ
+accent-words-formal-83 = СЛАЙМ
+accent-words-formal-84 = СЛАЙМ-ПЕРСОНА
+accent-words-formal-85 = ЯЩЕР
+accent-words-formal-86 = ЯЩЕРО-ПЕРСОНА
+accent-words-formal-87 = УНАТИ
+accent-words-formal-88 = ТАДЖАРА
+accent-words-formal-89 = ТАДЖАРА
+accent-words-formal-90 = ВУЛЬП
+accent-words-formal-91 = ВУЛЬПКАНИН
+accent-words-formal-92 = ВОКС
+accent-words-formal-93 = ВОКС ПРЕТОРИАНЕЦ
+accent-words-formal-94 = ВОКС ПРЕТОРИАНЕЦ
+accent-words-formal-95 = ВОКС ПРЕТОРИАНЕЦ
+accent-words-formal-96 = ВОКС ПРЕТОРИАНЕЦ
+accent-words-formal-97 = ВОКС ПРЕТОРИАНЕЦ
+accent-words-formal-98 = ВОКС ПРЕТОРИАНЕЦ
+accent-words-formal-99 = ВОКС ПРЕТОРИАНЕЦ
+accent-words-formal-100 = ВОКС ПРЕТОРИАНЕЦ
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/_strings/accent/formal.ftl b/Resources/Locale/ru-RU/_strings/accent/formal.ftl
new file mode 100644
index 0000000000..90e35f4a70
--- /dev/null
+++ b/Resources/Locale/ru-RU/_strings/accent/formal.ftl
@@ -0,0 +1,105 @@
+# Fish-edit-start
+# Formal accent - expands abbreviations to full meanings
+# This accent makes speech more formal by expanding common abbreviations
+
+# Russian abbreviations moved from chatsanitize
+accent-formal-words-97 = рнд
+accent-formal-words-replace-97 = Научный отдел
+accent-formal-words-98 = сб
+accent-formal-words-replace-98 = служба безопасности
+accent-formal-words-99 = кеп
+accent-formal-words-replace-99 = капитан
+accent-formal-words-100 = кэп
+accent-formal-words-replace-100 = капитан
+accent-formal-words-101 = авд
+accent-formal-words-replace-101 = агент внутренних дел
+accent-formal-words-102 = адик
+accent-formal-words-replace-102 = адъютант
+accent-formal-words-106 = гп
+accent-formal-words-replace-106 = глава персонала
+accent-formal-words-107 = хоп
+accent-formal-words-replace-107 = глава персонала
+accent-formal-words-108 = гсб
+accent-formal-words-replace-108 = глава службы безопасности
+accent-formal-words-109 = хос
+accent-formal-words-replace-109 = глава службы безопасности
+accent-formal-words-110 = гв
+accent-formal-words-replace-110 = главный врач
+accent-formal-words-111 = смо
+accent-formal-words-replace-111 = главный врач
+accent-formal-words-112 = хопа
+accent-formal-words-replace-112 = главы персонала
+accent-formal-words-113 = хоса
+accent-formal-words-replace-113 = главы службы безопасности
+accent-formal-words-114 = дек
+accent-formal-words-replace-114 = детектив
+accent-formal-words-115 = дет
+accent-formal-words-replace-115 = детектив
+accent-formal-words-116 = дэк
+accent-formal-words-replace-116 = детектив
+accent-formal-words-117 = дека
+accent-formal-words-replace-117 = детектива
+accent-formal-words-118 = дэка
+accent-formal-words-replace-118 = детектива
+accent-formal-words-119 = деку
+accent-formal-words-replace-119 = детективу
+accent-formal-words-120 = дэку
+accent-formal-words-replace-120 = детективу
+accent-formal-words-121 = км
+accent-formal-words-replace-121 = квартирмейстер
+accent-formal-words-122 = кма
+accent-formal-words-replace-122 = квартирмейстера
+accent-formal-words-123 = ксщ
+accent-formal-words-replace-123 = командир синего щита
+accent-formal-words-124 = лобр
+accent-formal-words-replace-124 = лидер отряда быстрого реагирования
+accent-formal-words-125 = нр
+accent-formal-words-replace-125 = научный руководитель
+accent-formal-words-126 = рд
+accent-formal-words-replace-126 = научный руководитель
+accent-formal-words-127 = ншцк
+accent-formal-words-replace-127 = начальник штаба центрального командования
+accent-formal-words-128 = карго
+accent-formal-words-replace-128 = отдел снабжения
+accent-formal-words-129 = обр
+accent-formal-words-replace-129 = отряд быстрого реагирования
+accent-formal-words-130 = рхбзз
+accent-formal-words-replace-130 = отряд радиационной химической биологической и зомби защиты
+accent-formal-words-131 = овн
+accent-formal-words-replace-131 = офицер внутреннего надзора
+accent-formal-words-132 = исн
+accent-formal-words-replace-132 = офицер исполнительной судебно-надзорной службы
+accent-formal-words-133 = осщ
+accent-formal-words-replace-133 = офицер синего щита
+accent-formal-words-134 = осо
+accent-formal-words-replace-134 = офицер спецопераций
+accent-formal-words-135 = оцк
+accent-formal-words-replace-135 = офицер центрального командования
+accent-formal-words-136 = исны
+accent-formal-words-replace-136 = офицеры исполнительной судебно-надзорной службы
+accent-formal-words-137 = пнт
+accent-formal-words-replace-137 = представитель NanoTrasen
+accent-formal-words-138 = пункт
+accent-formal-words-replace-138 = пунктураз
+accent-formal-words-139 = нио
+accent-formal-words-replace-139 = научный отдел
+accent-formal-words-140 = варденом
+accent-formal-words-replace-140 = смотрителем
+accent-formal-words-141 = вард
+accent-formal-words-replace-141 = смотритель
+accent-formal-words-142 = варден
+accent-formal-words-replace-142 = смотритель
+accent-formal-words-143 = вардену
+accent-formal-words-replace-143 = смотрителю
+accent-formal-words-144 = вардена
+accent-formal-words-replace-144 = смотрителя
+accent-formal-words-145 = сии
+accent-formal-words-replace-145 = станционный ИИ
+accent-formal-words-146 = пцк
+accent-formal-words-replace-146 = представитель центрального командования
+accent-formal-words-147 = нра
+accent-formal-words-replace-147 = научного руководителя
+accent-formal-words-148 = нру
+accent-formal-words-replace-148 = научному руководителю
+# Fish-edit-end
+
diff --git a/Resources/Locale/ru-RU/_strings/traits/traits.ftl b/Resources/Locale/ru-RU/_strings/traits/traits.ftl
index 4f89410fe0..afe0952422 100644
--- a/Resources/Locale/ru-RU/_strings/traits/traits.ftl
+++ b/Resources/Locale/ru-RU/_strings/traits/traits.ftl
@@ -43,3 +43,7 @@ trait-painnumbness-name = Оцепенение
trait-painnumbness-desc = Вы не чувствуете боли, не осознавая, насколько вам больно.
trait-moldovan-name = Молдавский диалект
trait-moldovan-desc = Цыгания дам ын спацию космик!
+# Fish-edit-start
+trait-formal-name = Формальный акцент
+trait-formal-desc = Вы говорите очень формально, разворачивая сокращения в полные значения.
+# Fish-edit-end
diff --git a/Resources/Prototypes/Accents/word_replacements.yml b/Resources/Prototypes/Accents/word_replacements.yml
index 88ece96236..277492a9a1 100644
--- a/Resources/Prototypes/Accents/word_replacements.yml
+++ b/Resources/Prototypes/Accents/word_replacements.yml
@@ -854,3 +854,54 @@
accent-moldovan-words-31: accent-moldovan-words-replace-31
accent-moldovan-words-32: accent-moldovan-words-replace-32
accent-moldovan-words-33: accent-moldovan-words-replace-33
+
+# Sunrise-start
+- type: accent
+ id: formal
+ wordReplacements:
+ accent-formal-words-101: accent-formal-words-replace-101 # авд -> агент внутренних дел
+ accent-formal-words-102: accent-formal-words-replace-102 # адик -> адъютант
+ accent-formal-words-106: accent-formal-words-replace-106 # гп -> глава персонала
+ accent-formal-words-107: accent-formal-words-replace-107 # хоп -> глава персонала
+ accent-formal-words-108: accent-formal-words-replace-108 # гсб -> глава службы безопасности
+ accent-formal-words-109: accent-formal-words-replace-109 # хос -> глава службы безопасности
+ accent-formal-words-110: accent-formal-words-replace-110 # гв -> главный врач
+ accent-formal-words-111: accent-formal-words-replace-111 # смо -> главный врач
+ accent-formal-words-112: accent-formal-words-replace-112 # хопа -> главы персонала
+ accent-formal-words-113: accent-formal-words-replace-113 # хоса -> главы службы безопасности
+ accent-formal-words-114: accent-formal-words-replace-114 # дек -> детектив
+ accent-formal-words-115: accent-formal-words-replace-115 # дет -> детектив
+ accent-formal-words-116: accent-formal-words-replace-116 # дэк -> детектив
+ accent-formal-words-117: accent-formal-words-replace-117 # дека -> детектива
+ accent-formal-words-118: accent-formal-words-replace-118 # дэка -> детектива
+ accent-formal-words-119: accent-formal-words-replace-119 # деку -> детективу
+ accent-formal-words-120: accent-formal-words-replace-120 # дэку -> детективу
+ accent-formal-words-121: accent-formal-words-replace-121 # км -> квартирмейстер
+ accent-formal-words-122: accent-formal-words-replace-122 # кма -> квартирмейстера
+ accent-formal-words-123: accent-formal-words-replace-123 # ксщ -> командир синего щита
+ accent-formal-words-124: accent-formal-words-replace-124 # лобр -> лидер отряда быстрого реагирования
+ accent-formal-words-125: accent-formal-words-replace-125 # нр -> научный руководитель
+ accent-formal-words-126: accent-formal-words-replace-126 # рд -> научный руководитель
+ accent-formal-words-127: accent-formal-words-replace-127 # ншцк -> начальник штаба центрального командования
+ accent-formal-words-128: accent-formal-words-replace-128 # карго -> отдел снабжения
+ accent-formal-words-129: accent-formal-words-replace-129 # обр -> отряд быстрого реагирования
+ accent-formal-words-130: accent-formal-words-replace-130 # рхбзз -> отряд радиационной химической биологической и зомби защиты
+ accent-formal-words-131: accent-formal-words-replace-131 # овн -> офицер внутреннего надзора
+ accent-formal-words-132: accent-formal-words-replace-132 # исн -> офицер исполнительной судебно-надзорной службы
+ accent-formal-words-133: accent-formal-words-replace-133 # осщ -> офицер синего щита
+ accent-formal-words-134: accent-formal-words-replace-134 # осо -> офицер спецопераций
+ accent-formal-words-135: accent-formal-words-replace-135 # оцк -> офицер центрального командования
+ accent-formal-words-136: accent-formal-words-replace-136 # исны -> офицеры исполнительной судебно-надзорной службы
+ accent-formal-words-137: accent-formal-words-replace-137 # пнт -> представитель NanoTrasen
+ accent-formal-words-138: accent-formal-words-replace-138 # пункт -> пунктураз
+ accent-formal-words-139: accent-formal-words-replace-139 # нио -> рнд
+ accent-formal-words-140: accent-formal-words-replace-140 # варденом -> смотрителем
+ accent-formal-words-141: accent-formal-words-replace-141 # вард -> смотритель
+ accent-formal-words-142: accent-formal-words-replace-142 # варден -> смотритель
+ accent-formal-words-143: accent-formal-words-replace-143 # вардену -> смотрителю
+ accent-formal-words-144: accent-formal-words-replace-144 # вардена -> смотрителя
+ accent-formal-words-145: accent-formal-words-replace-145 # сии -> станционный ИИ
+ accent-formal-words-146: accent-formal-words-replace-146 # пцк -> представитель центрального командования
+ accent-formal-words-147: accent-formal-words-replace-147 # нра -> научного руководителя
+ accent-formal-words-148: accent-formal-words-replace-148 # нру -> научному руководителю
+# Sunrise-end
diff --git a/Resources/Prototypes/Entities/Mobs/Player/clone.yml b/Resources/Prototypes/Entities/Mobs/Player/clone.yml
index 5661117b12..a15afb4694 100644
--- a/Resources/Prototypes/Entities/Mobs/Player/clone.yml
+++ b/Resources/Prototypes/Entities/Mobs/Player/clone.yml
@@ -42,6 +42,7 @@
- BarkAccent
- BleatingAccent
- DamagedSiliconAccent
+ - FormalAccent # Fish-edit
- FrenchAccent
- FrontalLisp
- GermanAccent
diff --git a/Resources/Prototypes/Traits/speech.yml b/Resources/Prototypes/Traits/speech.yml
index e8f799631a..cf13b4c91a 100644
--- a/Resources/Prototypes/Traits/speech.yml
+++ b/Resources/Prototypes/Traits/speech.yml
@@ -18,6 +18,7 @@
- type: MothAccent
- type: ReplacementAccent
accent: dwarf
+ - type: FormalAccent # Fish-edit
# 1 Cost
@@ -106,6 +107,15 @@
- type: ReplacementAccent
accent: moldovan
+- type: trait
+ id: FormalAccent
+ name: trait-formal-name
+ description: trait-formal-desc
+ category: SpeechTraits
+ cost: 1
+ components:
+ - type: FormalAccent # Fish-edit
+
# 2 Cost
- type: trait