From 30f8e8d4d8364dfcb1a56f3db50218129cff5dfd Mon Sep 17 00:00:00 2001
From: Ligyb <65973111+Lgibb18@users.noreply.github.com>
Date: Tue, 22 Jul 2025 21:54:25 +0500
Subject: [PATCH] =?UTF-8?q?=D0=BE=D1=82=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?=
=?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=82=D1=82=D1=81=20=D1=80=D0=B0=D1=86?=
=?UTF-8?q?=D0=B8=D0=B8=20=D1=83=20=D0=B3=D0=BE=D1=81=D1=82=D0=BE=D0=B2=20?=
=?UTF-8?q?(#2629)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Content.Client/Options/UI/Tabs/ExtraTab.xaml | 1 +
.../Options/UI/Tabs/ExtraTab.xaml.cs | 1 +
Content.Client/_Sunrise/TTS/TTSSystem.cs | 26 ++++++++++++++++---
.../_Sunrise/SunriseCCVars/SunriseCCVars.cs | 3 +++
.../_strings/escape-menu/ui/options-menu.ftl | 1 +
5 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/Content.Client/Options/UI/Tabs/ExtraTab.xaml b/Content.Client/Options/UI/Tabs/ExtraTab.xaml
index ade4292b6c..cf771a9623 100644
--- a/Content.Client/Options/UI/Tabs/ExtraTab.xaml
+++ b/Content.Client/Options/UI/Tabs/ExtraTab.xaml
@@ -25,6 +25,7 @@
+
diff --git a/Content.Client/Options/UI/Tabs/ExtraTab.xaml.cs b/Content.Client/Options/UI/Tabs/ExtraTab.xaml.cs
index 58c5e478cc..cd0332f1f5 100644
--- a/Content.Client/Options/UI/Tabs/ExtraTab.xaml.cs
+++ b/Content.Client/Options/UI/Tabs/ExtraTab.xaml.cs
@@ -39,6 +39,7 @@ public sealed partial class ExtraTab : Control
Control.AddOptionCheckBox(SunriseCCVars.TTSClientEnabled, TtsClientCheckBox);
Control.AddOptionCheckBox(SunriseCCVars.TTSClientQueueEnabled, TtsClientCheckBoxQueue);
+ Control.AddOptionCheckBox(SunriseCCVars.TTSRadioGhostEnabled, TtsRadioGhostCheckBox);
Control.AddOptionCheckBox(SunriseCCVars.TapePlayerClientEnabled, TapePlayerClientCheckBox);
Control.AddOptionCheckBox(SunriseCCVars.JumpSoundDisable, JumpSoundDisableCheckBox);
Control.AddOptionCheckBox(SunriseCCVars.VoteMusicDisable, VoteMusicDisableCheckBox);
diff --git a/Content.Client/_Sunrise/TTS/TTSSystem.cs b/Content.Client/_Sunrise/TTS/TTSSystem.cs
index 468f93c118..6772cf7a97 100644
--- a/Content.Client/_Sunrise/TTS/TTSSystem.cs
+++ b/Content.Client/_Sunrise/TTS/TTSSystem.cs
@@ -1,7 +1,9 @@
using Content.Shared._Sunrise.SunriseCCVars;
using Content.Shared._Sunrise.TTS;
using Content.Shared.CCVar;
+using Content.Shared.Ghost;
using Robust.Client.Audio;
+using Robust.Client.Player;
using Robust.Client.ResourceManagement;
using Robust.Shared;
using Robust.Shared.Audio;
@@ -25,6 +27,7 @@ public sealed class TTSSystem : EntitySystem
[Dependency] private readonly SharedAudioSystem _sharedAudio = default!;
[Dependency] private readonly IResourceCache _resourceCache = default!;
[Dependency] private readonly IDependencyCollection _dependencyCollection = default!;
+ [Dependency] private readonly IPlayerManager _playerManager = default!;
private ISawmill _sawmill = default!;
private static readonly MemoryContentRoot ContentRoot = new();
@@ -35,6 +38,7 @@ public sealed class TTSSystem : EntitySystem
private int _fileIdx;
private float _volumeAnnounce;
private bool _isQueueEnabled;
+ private bool _ghostRadioEnabled;
private readonly Queue _ttsQueue = new();
private (EntityUid Entity, AudioComponent Component)? _currentPlaying;
private static readonly AudioResource EmptyAudioResource = new();
@@ -62,6 +66,7 @@ public sealed class TTSSystem : EntitySystem
_cfg.OnValueChanged(SunriseCCVars.TTSAnnounceVolume, OnTtsAnnounceVolumeChanged, true);
_cfg.OnValueChanged(SunriseCCVars.TTSClientEnabled, OnTtsClientOptionChanged, true);
_cfg.OnValueChanged(SunriseCCVars.TTSClientQueueEnabled, OnTTSQueueOptionChanged, true);
+ _cfg.OnValueChanged(SunriseCCVars.TTSRadioGhostEnabled, OnTtsRadioGhostChanged, true);
SubscribeNetworkEvent(OnPlayTTS);
SubscribeNetworkEvent(OnAnnounceTTSPlay);
}
@@ -74,6 +79,7 @@ public sealed class TTSSystem : EntitySystem
_cfg.UnsubValueChanged(SunriseCCVars.TTSAnnounceVolume, OnTtsAnnounceVolumeChanged);
_cfg.UnsubValueChanged(SunriseCCVars.TTSClientEnabled, OnTtsClientOptionChanged);
_cfg.UnsubValueChanged(SunriseCCVars.TTSClientQueueEnabled, OnTTSQueueOptionChanged);
+ _cfg.UnsubValueChanged(SunriseCCVars.TTSRadioGhostEnabled, OnTtsRadioGhostChanged);
ContentRoot.Clear();
_currentPlaying = null;
@@ -109,6 +115,11 @@ public sealed class TTSSystem : EntitySystem
RaiseNetworkEvent(new ClientOptionTTSEvent(option));
}
+ private void OnTtsRadioGhostChanged(bool option)
+ {
+ _ghostRadioEnabled = option;
+ }
+
private void OnAnnounceTTSPlay(AnnounceTtsEvent ev)
{
if (_volumeAnnounce == 0)
@@ -158,12 +169,19 @@ public sealed class TTSSystem : EntitySystem
if (volume == 0)
return;
- if (ev.IsRadio && _isQueueEnabled)
+ if (ev.IsRadio)
{
- var entry = new QueuedTts(ev.Data, TtsType.Radio);
+ var localEntity = _playerManager.LocalEntity;
+ if(!_ghostRadioEnabled && localEntity.HasValue && HasComp(localEntity.Value))
+ return;
- _ttsQueue.Enqueue(entry);
- return;
+ if (_isQueueEnabled)
+ {
+ var entry = new QueuedTts(ev.Data, TtsType.Radio);
+
+ _ttsQueue.Enqueue(entry);
+ return;
+ }
}
volume = SharedAudioSystem.GainToVolume(volume * ev.VolumeModifier);
diff --git a/Content.Shared/_Sunrise/SunriseCCVars/SunriseCCVars.cs b/Content.Shared/_Sunrise/SunriseCCVars/SunriseCCVars.cs
index 6c97324bbb..b1f0c2b87c 100644
--- a/Content.Shared/_Sunrise/SunriseCCVars/SunriseCCVars.cs
+++ b/Content.Shared/_Sunrise/SunriseCCVars/SunriseCCVars.cs
@@ -39,6 +39,9 @@ public sealed partial class SunriseCCVars : CVars
public static readonly CVarDef TTSClientEnabled =
CVarDef.Create("tts.client_enabled", true, CVar.CLIENTONLY | CVar.ARCHIVE);
+ public static readonly CVarDef TTSRadioGhostEnabled =
+ CVarDef.Create("tts.radio_ghost_enabled", false, CVar.CLIENTONLY | CVar.ARCHIVE);
+
///
/// Option to disable TTS queue in radio for client
///
diff --git a/Resources/Locale/ru-RU/_strings/escape-menu/ui/options-menu.ftl b/Resources/Locale/ru-RU/_strings/escape-menu/ui/options-menu.ftl
index 9ebe525dc2..d49f268758 100644
--- a/Resources/Locale/ru-RU/_strings/escape-menu/ui/options-menu.ftl
+++ b/Resources/Locale/ru-RU/_strings/escape-menu/ui/options-menu.ftl
@@ -41,6 +41,7 @@ ui-options-admin-sounds = Музыка админов
ui-options-bwoink-sound = Воспроизводить звук уведомления АХелп
ui-options-tts-enabled = ТТС интеграция
ui-options-tts-queue = Использовать очередь для TTS рации?
+ui-options-tts-radio-ghost-enabled = ТТС рации в призраке
ui-options-volume-label = Громкость
## Graphics menu