From e28b29fb63dc8ce9a0bf063cae20b2d5e1b5b3f2 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Sun, 1 Oct 2023 16:42:38 -0700 Subject: [PATCH] // Parkstation-RandomAnnouncers --- .../Administration/UI/AdminAnnounceEui.cs | 4 +- Content.Server/AlertLevel/AlertLevelSystem.cs | 6 ++- .../CommunicationsConsoleSystem.cs | 6 ++- .../GameTicking/GameTicker.RoundFlow.cs | 4 +- .../Nyanotrasen/Fugitive/FugitiveSystem.cs | 4 +- .../Systems/EmergencyShuttleSystem.cs | 48 +++++++++++-------- .../StationEvents/Events/AnomalySpawnRule.cs | 4 +- .../StationEvents/Events/BreakerFlipRule.cs | 4 +- .../StationEvents/Events/FalseAlarmRule.cs | 4 +- .../Events/PowerGridCheckRule.cs | 6 ++- .../Events/RandomSentienceRule.cs | 4 +- .../Events/StationEventSystem.cs | 4 +- 12 files changed, 62 insertions(+), 36 deletions(-) diff --git a/Content.Server/Administration/UI/AdminAnnounceEui.cs b/Content.Server/Administration/UI/AdminAnnounceEui.cs index e053609b80..315f7ba76e 100644 --- a/Content.Server/Administration/UI/AdminAnnounceEui.cs +++ b/Content.Server/Administration/UI/AdminAnnounceEui.cs @@ -17,14 +17,14 @@ public sealed class AdminAnnounceEui : BaseEui [Dependency] private readonly IAdminManager _adminManager = default!; [Dependency] private readonly IChatManager _chatManager = default!; [Dependency] private readonly IPrototypeManager _proto = default!; - private readonly AnnouncerSystem _announcerSystem; + private readonly AnnouncerSystem _announcerSystem; // Parkstation-RandomAnnouncers private readonly ChatSystem _chatSystem; public AdminAnnounceEui() { IoCManager.InjectDependencies(this); _chatSystem = IoCManager.Resolve().GetEntitySystem(); - _announcerSystem = IoCManager.Resolve().GetEntitySystem(); + _announcerSystem = IoCManager.Resolve().GetEntitySystem(); // Parkstation-RandomAnnouncers } public override void Opened() diff --git a/Content.Server/AlertLevel/AlertLevelSystem.cs b/Content.Server/AlertLevel/AlertLevelSystem.cs index 1ddbe299b5..6c9aed7525 100644 --- a/Content.Server/AlertLevel/AlertLevelSystem.cs +++ b/Content.Server/AlertLevel/AlertLevelSystem.cs @@ -15,7 +15,7 @@ public sealed class AlertLevelSystem : EntitySystem [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly ChatSystem _chatSystem = default!; [Dependency] private readonly StationSystem _stationSystem = default!; - [Dependency] private readonly AnnouncerSystem _announcerSystem = default!; + [Dependency] private readonly AnnouncerSystem _announcerSystem = default!; // Parkstation-RandomAnnouncers [Dependency] private readonly IConfigurationManager _cfg = default!; // Until stations are a prototype, this is how it's going to have to be. @@ -173,6 +173,7 @@ public void SetLevel(EntityUid station, string level, bool playSound, bool annou // var playDefault = false; if (playSound) { + // Parkstation-RandomAnnouncers Start // if (detail.Sound != null) // { // var filter = _stationSystem.GetInOwningStation(station); @@ -184,14 +185,17 @@ public void SetLevel(EntityUid station, string level, bool playSound, bool annou // } _announcerSystem.SendAnnouncementAudio($"alert{level}", _stationSystem.GetInOwningStation(station)); + // Parkstation-RandomAnnouncers End } if (announce) { + // Parkstation-RandomAnnouncers Start // _chatSystem.DispatchStationAnnouncement(station, announcementFull, playDefaultSound: playDefault, // colorOverride: detail.Color, sender: stationName); _announcerSystem.SendAnnouncementMessage($"alert{level}", announcementFull, stationName, detail.Color, station); + // Parkstation-RandomAnnouncers End } RaiseLocalEvent(new AlertLevelChangedEvent(station, level)); diff --git a/Content.Server/Communications/CommunicationsConsoleSystem.cs b/Content.Server/Communications/CommunicationsConsoleSystem.cs index 63f36f65e2..46a02773a3 100644 --- a/Content.Server/Communications/CommunicationsConsoleSystem.cs +++ b/Content.Server/Communications/CommunicationsConsoleSystem.cs @@ -38,7 +38,7 @@ public sealed class CommunicationsConsoleSystem : EntitySystem [Dependency] private readonly StationSystem _stationSystem = default!; [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; - [Dependency] private readonly AnnouncerSystem _announcerSystem = default!; + [Dependency] private readonly AnnouncerSystem _announcerSystem = default!; // Parkstation-RandomAnnouncers [Dependency] private readonly UserInterfaceSystem _uiSystem = default!; private const int MaxMessageLength = 256; @@ -273,16 +273,20 @@ private void OnAnnounceMessage(EntityUid uid, CommunicationsConsoleComponent com msg += "\n" + Loc.GetString("comms-console-announcement-sent-by") + " " + author; if (comp.AnnounceGlobal) { + // Parkstation-RandomAnnouncers Start // _chatSystem.DispatchGlobalAnnouncement(msg, title, announcementSound: comp.AnnouncementSound, colorOverride: comp.AnnouncementColor); _announcerSystem.SendAnnouncement("announce", Filter.Broadcast(), msg, title, comp.AnnouncementColor); + // Parkstation-RandomAnnouncers End if (message.Session.AttachedEntity != null) _adminLogger.Add(LogType.Chat, LogImpact.Low, $"{ToPrettyString(message.Session.AttachedEntity.Value):player} has sent the following global announcement: {msg}"); return; } + // Parkstation-RandomAnnouncers Start // _chatSystem.DispatchStationAnnouncement(uid, msg, title, colorOverride: comp.AnnouncementColor); _announcerSystem.SendAnnouncement("announce", Filter.Broadcast(), msg, title, comp.AnnouncementColor); + // Parkstation-RandomAnnouncers End if (message.Session.AttachedEntity != null) _adminLogger.Add(LogType.Chat, LogImpact.Low, $"{ToPrettyString(message.Session.AttachedEntity.Value):player} has sent the following station announcement: {msg}"); diff --git a/Content.Server/GameTicking/GameTicker.RoundFlow.cs b/Content.Server/GameTicking/GameTicker.RoundFlow.cs index 88d78f6e98..12c3bfade1 100644 --- a/Content.Server/GameTicking/GameTicker.RoundFlow.cs +++ b/Content.Server/GameTicking/GameTicker.RoundFlow.cs @@ -27,7 +27,7 @@ namespace Content.Server.GameTicking public sealed partial class GameTicker { [Dependency] private readonly ITaskManager _taskManager = default!; - [Dependency] private readonly AnnouncerSystem _announcerSystem = default!; + [Dependency] private readonly AnnouncerSystem _announcerSystem = default!; // Parkstation-RandomAnnouncers private static readonly Counter RoundNumberMetric = Metrics.CreateCounter( "ss14_round_number", @@ -563,6 +563,7 @@ private void AnnounceRound() var proto = _robustRandom.Pick(options); + // Parkstation-RandomAnnouncers Start // if (proto.Message != null) // _chatSystem.DispatchGlobalAnnouncement(Loc.GetString(proto.Message), playSound: true); // @@ -570,6 +571,7 @@ private void AnnounceRound() // SoundSystem.Play(proto.Sound.GetSound(), Filter.Broadcast()); _announcerSystem.SendAnnouncement(proto.ID, Filter.Broadcast(), Loc.GetString(proto.Message ?? "game-ticker-welcome-to-the-station")); + // Parkstation-RandomAnnouncers End } } diff --git a/Content.Server/Nyanotrasen/Fugitive/FugitiveSystem.cs b/Content.Server/Nyanotrasen/Fugitive/FugitiveSystem.cs index 3e65d6f550..ea676de5fa 100644 --- a/Content.Server/Nyanotrasen/Fugitive/FugitiveSystem.cs +++ b/Content.Server/Nyanotrasen/Fugitive/FugitiveSystem.cs @@ -45,7 +45,7 @@ public sealed class FugitiveSystem : EntitySystem [Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly StunSystem _stun = default!; [Dependency] private readonly AudioSystem _audioSystem = default!; - [Dependency] private readonly AnnouncerSystem _announcerSystem = default!; + [Dependency] private readonly AnnouncerSystem _announcerSystem = default!; // Parkstation-RandomAnnouncers [Dependency] private readonly MindSystem _mindSystem = default!; public override void Initialize() @@ -63,8 +63,10 @@ public override void Update(float frameTime) { if (cd.AnnounceTime != null && _timing.CurTime > cd.AnnounceTime) { + // Parkstation-RandomAnnouncers Start // _chat.DispatchGlobalAnnouncement(Loc.GetString("station-event-fugitive-hunt-announcement"), sender: Loc.GetString("fugitive-announcement-GALPOL"), colorOverride: Color.Yellow); _announcerSystem.SendAnnouncement("commandreport", Filter.Broadcast(), Loc.GetString("station-event-fugitive-hunt-announcement"), Loc.GetString("fugitive-announcement-GALPOL"), Color.Yellow); + // Parkstation-RandomAnnouncers End foreach (var console in EntityQuery()) { diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs index f1dbf7eacd..2d9cd7ce31 100644 --- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs +++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs @@ -54,7 +54,7 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem [Dependency] private readonly ShuttleSystem _shuttle = default!; [Dependency] private readonly StationSystem _station = default!; [Dependency] private readonly UserInterfaceSystem _uiSystem = default!; - [Dependency] private readonly AnnouncerSystem _announcer = default!; + [Dependency] private readonly AnnouncerSystem _announcer = default!; // Parkstation-RandomAnnouncers private ISawmill _sawmill = default!; @@ -188,15 +188,17 @@ public void CallEmergencyShuttle(EntityUid stationUid, StationEmergencyShuttleCo if (targetGrid == null) { _logger.Add(LogType.EmergencyShuttle, LogImpact.High, $"Emergency shuttle {ToPrettyString(stationUid)} unable to dock with station {ToPrettyString(stationUid)}"); + // Parkstation-RandomAnnouncers Start // _chatSystem.DispatchStationAnnouncement(stationUid, Loc.GetString("emergency-shuttle-good-luck"), playDefaultSound: false); - // // TODO: Need filter extensions or something don't blame me. - // _audio.PlayGlobal("/Audio/Misc/notice1.ogg", Filter.Broadcast(), true); + // // TODO: Need filter extensions or something don't blame me. + // _audio.PlayGlobal("/Audio/Misc/notice1.ogg", Filter.Broadcast(), true); - _announcer.SendAnnouncement("shuttledock", Filter.Broadcast(), - Loc.GetString("emergency-shuttle-good-luck"), - Loc.GetString("comms-console-announcement-title-centcom")); - return; - } + _announcer.SendAnnouncement("shuttledock", Filter.Broadcast(), + Loc.GetString("emergency-shuttle-good-luck"), + Loc.GetString("comms-console-announcement-title-centcom")); + // Parkstation-RandomAnnouncers End + return; + } var xformQuery = GetEntityQuery(); @@ -205,24 +207,28 @@ public void CallEmergencyShuttle(EntityUid stationUid, StationEmergencyShuttleCo if (TryComp(targetGrid.Value, out var targetXform)) { var angle = _dock.GetAngle(stationShuttle.EmergencyShuttle.Value, xform, targetGrid.Value, targetXform, xformQuery); + // Parkstation-RandomAnnouncers Start // _chatSystem.DispatchStationAnnouncement(stationUid, Loc.GetString("emergency-shuttle-docked", ("time", $"{_consoleAccumulator:0}"), ("direction", angle.GetDir())), playDefaultSound: false); - _announcer.SendAnnouncementMessage("shuttledock", - Loc.GetString("emergency-shuttle-docked",("time", $"{_consoleAccumulator:0}"), ("direction", angle.GetDir())), - Loc.GetString("comms-console-announcement-title-centcom")); - } + _announcer.SendAnnouncementMessage("shuttledock", + Loc.GetString("emergency-shuttle-docked",("time", $"{_consoleAccumulator:0}"), ("direction", angle.GetDir())), + Loc.GetString("comms-console-announcement-title-centcom")); + // Parkstation-RandomAnnouncers End + } _logger.Add(LogType.EmergencyShuttle, LogImpact.High, $"Emergency shuttle {ToPrettyString(stationUid)} docked with stations"); // TODO: Need filter extensions or something don't blame me. + // Parkstation-RandomAnnouncers Start // _audio.PlayGlobal("/Audio/Announcements/shuttle_dock.ogg", Filter.Broadcast(), true); - _announcer.SendAnnouncementAudio("shuttledock", Filter.Broadcast()); - } - else - { - if (TryComp(targetGrid.Value, out var targetXform)) - { - var angle = _dock.GetAngle(stationShuttle.EmergencyShuttle.Value, xform, targetGrid.Value, targetXform, xformQuery); - _chatSystem.DispatchStationAnnouncement(stationUid, Loc.GetString("emergency-shuttle-nearby", ("direction", angle.GetDir())), playDefaultSound: false); - } + _announcer.SendAnnouncementAudio("shuttledock", Filter.Broadcast()); + // Parkstation-RandomAnnouncers End + } + else + { + if (TryComp(targetGrid.Value, out var targetXform)) + { + var angle = _dock.GetAngle(stationShuttle.EmergencyShuttle.Value, xform, targetGrid.Value, targetXform, xformQuery); + _chatSystem.DispatchStationAnnouncement(stationUid, Loc.GetString("emergency-shuttle-nearby", ("direction", angle.GetDir())), playDefaultSound: false); + } _logger.Add(LogType.EmergencyShuttle, LogImpact.High, $"Emergency shuttle {ToPrettyString(stationUid)} unable to find a valid docking port for {ToPrettyString(stationUid)}"); // TODO: Need filter extensions or something don't blame me. diff --git a/Content.Server/StationEvents/Events/AnomalySpawnRule.cs b/Content.Server/StationEvents/Events/AnomalySpawnRule.cs index eb54d9afb0..e2b4583595 100644 --- a/Content.Server/StationEvents/Events/AnomalySpawnRule.cs +++ b/Content.Server/StationEvents/Events/AnomalySpawnRule.cs @@ -11,7 +11,7 @@ namespace Content.Server.StationEvents.Events; public sealed class AnomalySpawnRule : StationEventSystem { [Dependency] private readonly AnomalySystem _anomaly = default!; - [Dependency] private readonly AnnouncerSystem _announcerSystem = default!; + [Dependency] private readonly AnnouncerSystem _announcerSystem = default!; // Parkstation-RandomAnnouncers protected override void Added(EntityUid uid, AnomalySpawnRuleComponent component, GameRuleComponent gameRule, GameRuleAddedEvent args) { @@ -19,8 +19,10 @@ protected override void Added(EntityUid uid, AnomalySpawnRuleComponent component var str = Loc.GetString("anomaly-spawn-event-announcement", ("sighting", Loc.GetString($"anomaly-spawn-sighting-{RobustRandom.Next(1, 6)}"))); + // Parkstation-RandomAnnouncers Start // ChatSystem.DispatchGlobalAnnouncement(str, colorOverride: Color.FromHex("#18abf5")); _announcerSystem.SendAnnouncement("anomalyspawn", Filter.Broadcast(), str, colorOverride: Color.FromHex("#18abf5")); + // Parkstation-RandomAnnouncers End } protected override void Started(EntityUid uid, AnomalySpawnRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) diff --git a/Content.Server/StationEvents/Events/BreakerFlipRule.cs b/Content.Server/StationEvents/Events/BreakerFlipRule.cs index b73950694f..d9c0a6ebfa 100644 --- a/Content.Server/StationEvents/Events/BreakerFlipRule.cs +++ b/Content.Server/StationEvents/Events/BreakerFlipRule.cs @@ -15,7 +15,7 @@ namespace Content.Server.StationEvents.Events; public sealed class BreakerFlipRule : StationEventSystem { [Dependency] private readonly ApcSystem _apcSystem = default!; - [Dependency] private readonly AnnouncerSystem _announcerSystem = default!; + [Dependency] private readonly AnnouncerSystem _announcerSystem = default!; // Parkstation-RandomAnnouncers protected override void Added(EntityUid uid, BreakerFlipRuleComponent component, GameRuleComponent gameRule, GameRuleAddedEvent args) { @@ -23,7 +23,7 @@ protected override void Added(EntityUid uid, BreakerFlipRuleComponent component, var str = Loc.GetString("station-event-breaker-flip-announcement", ("data", Loc.GetString(Loc.GetString($"random-sentience-event-data-{RobustRandom.Next(1, 6)}")))); - _announcerSystem.SendAnnouncement(args.RuleId, Filter.Broadcast(), str, colorOverride: Color.Gold); + _announcerSystem.SendAnnouncement(args.RuleId, Filter.Broadcast(), str, colorOverride: Color.Gold); // Parkstation-RandomAnnouncers } protected override void Started(EntityUid uid, BreakerFlipRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) diff --git a/Content.Server/StationEvents/Events/FalseAlarmRule.cs b/Content.Server/StationEvents/Events/FalseAlarmRule.cs index c2cb0fcffb..3ea54b6373 100644 --- a/Content.Server/StationEvents/Events/FalseAlarmRule.cs +++ b/Content.Server/StationEvents/Events/FalseAlarmRule.cs @@ -12,7 +12,7 @@ namespace Content.Server.StationEvents.Events; public sealed class FalseAlarmRule : StationEventSystem { [Dependency] private readonly EventManagerSystem _event = default!; - [Dependency] private readonly AnnouncerSystem _announcer = default!; + [Dependency] private readonly AnnouncerSystem _announcer = default!; // Parkstation-RandomAnnouncers protected override void Started(EntityUid uid, FalseAlarmRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) { @@ -23,7 +23,7 @@ protected override void Started(EntityUid uid, FalseAlarmRuleComponent component if (picked.StartAnnouncement != null) { - _announcer.SendAnnouncement(args.RuleId, Filter.Broadcast(), Loc.GetString(picked.StartAnnouncement), colorOverride: Color.Gold); + _announcer.SendAnnouncement(args.RuleId, Filter.Broadcast(), Loc.GetString(picked.StartAnnouncement), colorOverride: Color.Gold); // Parkstation-RandomAnnouncers } } } diff --git a/Content.Server/StationEvents/Events/PowerGridCheckRule.cs b/Content.Server/StationEvents/Events/PowerGridCheckRule.cs index 70785fda25..1266239c87 100644 --- a/Content.Server/StationEvents/Events/PowerGridCheckRule.cs +++ b/Content.Server/StationEvents/Events/PowerGridCheckRule.cs @@ -17,7 +17,7 @@ namespace Content.Server.StationEvents.Events public sealed class PowerGridCheckRule : StationEventSystem { [Dependency] private readonly ApcSystem _apcSystem = default!; - [Dependency] private readonly AnnouncerSystem _announcer = default!; + [Dependency] private readonly AnnouncerSystem _announcer = default!; // Parkstation-RandomAnnouncers public override void Initialize() { @@ -67,8 +67,10 @@ protected override void Ended(EntityUid uid, PowerGridCheckRuleComponent compone component.AnnounceCancelToken = new CancellationTokenSource(); Timer.Spawn(3000, () => { + // Parkstation-RandomAnnouncers Start // Audio.PlayGlobal("/Audio/Announcements/power_on.ogg", Filter.Broadcast(), true, AudioParams.Default.WithVolume(-4f)); - _announcer.SendAnnouncementAudio("powergridcheckcomplete", Filter.Broadcast()); + _announcer.SendAnnouncementAudio("powrgridcheckcomplete", Filter.Broadcast()); + // Parkstation-RandomAnnouncers End }, component.AnnounceCancelToken.Token); component.Unpowered.Clear(); } diff --git a/Content.Server/StationEvents/Events/RandomSentienceRule.cs b/Content.Server/StationEvents/Events/RandomSentienceRule.cs index eb42e3c046..e79af06961 100644 --- a/Content.Server/StationEvents/Events/RandomSentienceRule.cs +++ b/Content.Server/StationEvents/Events/RandomSentienceRule.cs @@ -9,7 +9,7 @@ namespace Content.Server.StationEvents.Events; public sealed class RandomSentienceRule : StationEventSystem { - [Dependency] private readonly AnnouncerSystem _announcerSystem = default!; + [Dependency] private readonly AnnouncerSystem _announcerSystem = default!; // Parkstation-RandomAnnouncers protected override void Started(EntityUid uid, RandomSentienceRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) { @@ -49,6 +49,7 @@ protected override void Started(EntityUid uid, RandomSentienceRuleComponent comp if(station == null) continue; stationsToNotify.Add((EntityUid) station); } + // Parkstation-RandomAnnouncers Start // foreach (var station in stationsToNotify) // { // ChatSystem.DispatchStationAnnouncement( @@ -66,5 +67,6 @@ protected override void Started(EntityUid uid, RandomSentienceRuleComponent comp ("data", Loc.GetString($"random-sentience-event-data-{RobustRandom.Next(1, 6)}")), ("strength", Loc.GetString($"random-sentience-event-strength-{RobustRandom.Next(1, 8)}"))), colorOverride: Color.Gold); + // Parkstation-RandomAnnouncers End } } diff --git a/Content.Server/StationEvents/Events/StationEventSystem.cs b/Content.Server/StationEvents/Events/StationEventSystem.cs index 291944f156..4dd0f16b7e 100644 --- a/Content.Server/StationEvents/Events/StationEventSystem.cs +++ b/Content.Server/StationEvents/Events/StationEventSystem.cs @@ -35,7 +35,7 @@ public abstract class StationEventSystem : GameRuleSystem where T : Compon [Dependency] protected readonly SharedAudioSystem Audio = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] protected readonly StationSystem StationSystem = default!; - [Dependency] private readonly AnnouncerSystem _announcerSystem = default!; + [Dependency] private readonly AnnouncerSystem _announcerSystem = default!; // Parkstation-RandomAnnouncers protected ISawmill Sawmill = default!; @@ -97,8 +97,10 @@ protected override void Ended(EntityUid uid, T component, GameRuleComponent game if (stationEvent.EndAnnouncement != null) { + // Parkstation-RandomAnnouncers Start // ChatSystem.DispatchGlobalAnnouncement(Loc.GetString(stationEvent.EndAnnouncement), playSound: false, colorOverride: Color.Gold); _announcerSystem.SendAnnouncement($"{args.RuleId}complete", Filter.Broadcast(), Loc.GetString(stationEvent.EndAnnouncement), colorOverride: Color.Gold); + // Parkstation-RandomAnnouncers End } // Audio.PlayGlobal(stationEvent.EndAudio, Filter.Broadcast(), true);