diff --git a/Content.Server/Administration/UI/AdminAnnounceEui.cs b/Content.Server/Administration/UI/AdminAnnounceEui.cs
index e6d17b5af4..aa3c7f8dc9 100644
--- a/Content.Server/Administration/UI/AdminAnnounceEui.cs
+++ b/Content.Server/Administration/UI/AdminAnnounceEui.cs
@@ -55,8 +55,7 @@ namespace Content.Server.Administration.UI
break;
// TODO: Per-station announcement support
case AdminAnnounceType.Station:
- _announcer.SendAnnouncement(_announcer.GetAnnouncementId("Announce"), Filter.Broadcast(),
- doAnnounce.Announcement, doAnnounce.Announcer, Color.Gold);
+ _announcer.SendAnnouncement(_announcer.GetAnnouncementId("Announce"), doAnnounce.Announcement, doAnnounce.Announcer, colorOverride:Color.Gold);
break;
}
diff --git a/Content.Server/AlertLevel/AlertLevelSystem.cs b/Content.Server/AlertLevel/AlertLevelSystem.cs
index 46b02c0e97..de57841bc0 100644
--- a/Content.Server/AlertLevel/AlertLevelSystem.cs
+++ b/Content.Server/AlertLevel/AlertLevelSystem.cs
@@ -161,10 +161,11 @@ public sealed class AlertLevelSystem : EntitySystem
announcement = locAnnouncement;
var alert = $"alert{char.ToUpperInvariant(level[0]) + level[1..]}";
+ var filter = _stationSystem.GetInOwningStation(station);
if (playSound)
- _announcer.SendAnnouncementAudio(alert, _stationSystem.GetInOwningStation(station));
+ _announcer.SendAnnouncementAudio(alert, filter);
if (announce)
- _announcer.SendAnnouncementMessage(alert, "alert-level-announcement", null, detail.Color, null, null,
+ _announcer.SendAnnouncementMessage(alert, "alert-level-announcement", null, filter, detail.Color, null, null,
("name", name), ("announcement", announcement));
RaiseLocalEvent(new AlertLevelChangedEvent(station, level));
diff --git a/Content.Server/Announcements/AnnounceCommand.cs b/Content.Server/Announcements/AnnounceCommand.cs
index 088764ad27..c829fdd440 100644
--- a/Content.Server/Announcements/AnnounceCommand.cs
+++ b/Content.Server/Announcements/AnnounceCommand.cs
@@ -26,16 +26,16 @@ namespace Content.Server.Announcements
shell.WriteError("Not enough arguments! Need at least 1.");
return;
case 1:
- announcer.SendAnnouncement(announcer.GetAnnouncementId("CommandReport"), Filter.Broadcast(),
- args[0], "Central Command", Color.Gold);
+ announcer.SendAnnouncement(announcer.GetAnnouncementId("CommandReport"),
+ args[0], Loc.GetString("chat-manager-sender-announcement"), colorOverride: Color.Gold);
break;
case 2:
- announcer.SendAnnouncement(announcer.GetAnnouncementId("CommandReport"), Filter.Broadcast(),
- args[1], args[0], Color.Gold);
+ announcer.SendAnnouncement(announcer.GetAnnouncementId("CommandReport"),
+ args[1], args[0], colorOverride: Color.Gold);
break;
case 3:
- announcer.SendAnnouncement(announcer.GetAnnouncementId(args[2]), Filter.Broadcast(), args[1],
- args[0], Color.Gold);
+ announcer.SendAnnouncement(announcer.GetAnnouncementId(args[2]), args[1],
+ args[0], colorOverride: Color.Gold);
break;
case 4:
if (!proto.TryIndex(args[3], out AnnouncerPrototype? prototype))
@@ -43,8 +43,8 @@ namespace Content.Server.Announcements
shell.WriteError($"No announcer prototype with ID {args[3]} found!");
return;
}
- announcer.SendAnnouncement(args[2], Filter.Broadcast(), args[1], args[0], Color.Gold, null,
- prototype);
+ announcer.SendAnnouncement(args[2], args[1], args[0], colorOverride: Color.Gold,
+ announcerOverride: prototype);
break;
}
diff --git a/Content.Server/Announcements/Systems/AnnouncerSystem.Announce.cs b/Content.Server/Announcements/Systems/AnnouncerSystem.Announce.cs
index 3342bc9aef..33edf951a7 100644
--- a/Content.Server/Announcements/Systems/AnnouncerSystem.Announce.cs
+++ b/Content.Server/Announcements/Systems/AnnouncerSystem.Announce.cs
@@ -30,8 +30,9 @@ public sealed partial class AnnouncerSystem
/// ID of the announcement to get information from
/// Who hears the announcement audio
/// Uses this announcer instead of the current global one
- public void SendAnnouncementAudio(string announcementId, Filter filter, AnnouncerPrototype? announcerOverride = null)
+ public void SendAnnouncementAudio(string announcementId, Filter? filter = null, AnnouncerPrototype? announcerOverride = null)
{
+ filter ??= Filter.Empty().AddWhere(GameTicker.UserHasJoinedGame);
var ev = new AnnouncementSendEvent(
announcerOverride?.ID ?? Announcer.ID,
announcementId,
@@ -48,15 +49,24 @@ public sealed partial class AnnouncerSystem
/// ID of the announcement to get information from
/// Text to send in the announcement
/// Who to show as the announcement announcer, defaults to the current announcer's name
+ /// Who hears the announcement
/// What color the announcement should be
/// Station ID to send the announcement to
/// Uses this announcer instead of the current global one
/// Locale arguments to pass to the announcement message
- public void SendAnnouncementMessage(string announcementId, string locale, string? sender = null,
- Color? colorOverride = null, EntityUid? station = null, AnnouncerPrototype? announcerOverride = null,
- params (string, object)[] localeArgs)
+ public void SendAnnouncementMessage(
+ string announcementId,
+ string locale,
+ string? sender = null,
+ Filter? filter = null,
+ Color? colorOverride = null,
+ EntityUid? station = null,
+ AnnouncerPrototype? announcerOverride = null,
+ params (string, object)[] localeArgs
+ )
{
sender ??= Loc.GetString($"announcer-{announcerOverride?.ID ?? Announcer.ID}-name");
+ filter ??= Filter.Empty().AddWhere(GameTicker.UserHasJoinedGame);
// If the announcement has a message override, use that instead of the message parameter
if (GetAnnouncementMessage(announcementId, announcerOverride?.ID ?? Announcer.ID) is { } announcementMessage)
@@ -68,29 +78,33 @@ public sealed partial class AnnouncerSystem
if (string.IsNullOrEmpty(locale))
return;
- // If there is a station, send the announcement to the station, otherwise send it to everyone
- if (station == null)
- _chat.DispatchGlobalAnnouncement(locale, sender, false, colorOverride: colorOverride);
- else
- _chat.DispatchStationAnnouncement(station.Value, locale, sender, false, colorOverride: colorOverride);
+ _chat.DispatchFilteredAnnouncement(filter, locale, station, sender, false, colorOverride: colorOverride);
}
///
/// Sends an announcement with a message and audio
///
/// ID of the announcement to get information from
- /// Who hears the announcement audio
/// Text to send in the announcement
/// Who to show as the announcement announcer, defaults to the current announcer's name
+ /// Who hears the announcement
/// What color the announcement should be
/// Station ID to send the announcement to
/// Uses this announcer instead of the current global one
/// Locale arguments to pass to the announcement message
- public void SendAnnouncement(string announcementId, Filter filter, string locale, string? sender = null,
- Color? colorOverride = null, EntityUid? station = null, AnnouncerPrototype? announcerOverride = null,
- params (string, object)[] localeArgs)
+ public void SendAnnouncement(
+ string announcementId,
+ string locale,
+ string? sender = null,
+ Filter? filter = null,
+ Color? colorOverride = null,
+ EntityUid? station = null,
+ AnnouncerPrototype? announcerOverride = null,
+ params (string, object)[] localeArgs
+ )
{
+ filter ??= Filter.Empty().AddWhere(GameTicker.UserHasJoinedGame);
SendAnnouncementAudio(announcementId, filter, announcerOverride);
- SendAnnouncementMessage(announcementId, locale, sender, colorOverride, station, announcerOverride, localeArgs);
+ SendAnnouncementMessage(announcementId, locale, sender, filter, colorOverride, station, announcerOverride, localeArgs);
}
}
diff --git a/Content.Server/Announcements/Systems/AnnouncerSystem.cs b/Content.Server/Announcements/Systems/AnnouncerSystem.cs
index 1770a2ce93..946ed3cd54 100644
--- a/Content.Server/Announcements/Systems/AnnouncerSystem.cs
+++ b/Content.Server/Announcements/Systems/AnnouncerSystem.cs
@@ -1,4 +1,5 @@
using Content.Server.Chat.Systems;
+using Content.Server.GameTicking;
using Content.Shared.GameTicking;
using Content.Shared.Announcements.Prototypes;
using Content.Shared.Announcements.Systems;
@@ -13,6 +14,7 @@ public sealed partial class AnnouncerSystem : SharedAnnouncerSystem
[Dependency] private readonly IConfigurationManager _config = default!;
[Dependency] private readonly IPrototypeManager _proto = default!;
[Dependency] private readonly ChatSystem _chat = default!;
+ [Dependency] private readonly GameTicker GameTicker = default!;
///
/// The currently selected announcer
diff --git a/Content.Server/Chat/Systems/AnnounceOnSpawnSystem.cs b/Content.Server/Chat/Systems/AnnounceOnSpawnSystem.cs
index 08910c9564..1edd2e5958 100644
--- a/Content.Server/Chat/Systems/AnnounceOnSpawnSystem.cs
+++ b/Content.Server/Chat/Systems/AnnounceOnSpawnSystem.cs
@@ -17,7 +17,7 @@ public sealed class AnnounceOnSpawnSystem : EntitySystem
private void OnInit(EntityUid uid, AnnounceOnSpawnComponent comp, MapInitEvent args)
{
var sender = comp.Sender != null ? Loc.GetString(comp.Sender) : Loc.GetString("chat-manager-sender-announcement");
- _announcer.SendAnnouncement(_announcer.GetAnnouncementId("SpawnAnnounceCaptain"), Filter.Broadcast(),
- comp.Message, sender, comp.Color);
+ _announcer.SendAnnouncement(_announcer.GetAnnouncementId("SpawnAnnounceCaptain"),
+ comp.Message, sender, colorOverride: comp.Color);
}
}
diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs
index 2a26d9f11f..cdad834f13 100644
--- a/Content.Server/Chat/Systems/ChatSystem.cs
+++ b/Content.Server/Chat/Systems/ChatSystem.cs
@@ -364,11 +364,41 @@ public sealed partial class ChatSystem : SharedChatSystem
_chatManager.ChatMessageToAll(ChatChannel.Radio, message, wrappedMessage, default, false, true, colorOverride);
if (playSound)
{
- _audio.PlayGlobal(announcementSound != null ? announcementSound.ToString() : DefaultAnnouncementSound, Filter.Broadcast(), true, AudioParams.Default.WithVolume(-2f));
+ _audio.PlayGlobal(announcementSound == null ? DefaultAnnouncementSound : _audio.GetSound(announcementSound), Filter.Broadcast(), true, AudioParams.Default.WithVolume(-2f));
}
_adminLogger.Add(LogType.Chat, LogImpact.Low, $"Global station announcement from {sender}: {message}");
}
+ ///
+ /// Dispatches an announcement to players selected by filter.
+ ///
+ /// Filter to select players who will recieve the announcement
+ /// The contents of the message
+ /// The entity making the announcement (used to determine the station)
+ /// The sender (Communications Console in Communications Console Announcement)
+ /// Play the announcement sound
+ /// Sound to play
+ /// Optional color for the announcement message
+ public void DispatchFilteredAnnouncement(
+ Filter filter,
+ string message,
+ EntityUid? source = null,
+ string? sender = null,
+ bool playSound = true,
+ SoundSpecifier? announcementSound = null,
+ Color? colorOverride = null)
+ {
+ sender ??= Loc.GetString("chat-manager-sender-announcement");
+
+ var wrappedMessage = Loc.GetString("chat-manager-sender-announcement-wrap-message", ("sender", sender), ("message", FormattedMessage.EscapeText(message)));
+ _chatManager.ChatMessageToManyFiltered(filter, ChatChannel.Radio, message, wrappedMessage, source ?? default, false, true, colorOverride);
+ if (playSound)
+ {
+ _audio.PlayGlobal(announcementSound?.ToString() ?? DefaultAnnouncementSound, filter, true, AudioParams.Default.WithVolume(-2f));
+ }
+ _adminLogger.Add(LogType.Chat, LogImpact.Low, $"Station Announcement from {sender}: {message}");
+ }
+
///
/// Dispatches an announcement on a specific station
///
@@ -404,7 +434,7 @@ public sealed partial class ChatSystem : SharedChatSystem
if (playDefaultSound)
{
- _audio.PlayGlobal(announcementSound != null ? announcementSound.ToString() : DefaultAnnouncementSound, filter, true, AudioParams.Default.WithVolume(-2f));
+ _audio.PlayGlobal(announcementSound?.ToString() ?? DefaultAnnouncementSound, filter, true, AudioParams.Default.WithVolume(-2f));
}
_adminLogger.Add(LogType.Chat, LogImpact.Low, $"Station Announcement on {station} from {sender}: {message}");
diff --git a/Content.Server/Communications/CommsHackerSystem.cs b/Content.Server/Communications/CommsHackerSystem.cs
index 4d149ca1ad..da8ef6c94f 100644
--- a/Content.Server/Communications/CommsHackerSystem.cs
+++ b/Content.Server/Communications/CommsHackerSystem.cs
@@ -82,7 +82,7 @@ public sealed class CommsHackerSystem : SharedCommsHackerSystem
public void CallInThreat(NinjaHackingThreatPrototype ninjaHackingThreat)
{
_gameTicker.StartGameRule(ninjaHackingThreat.Rule, out _);
- _announcer.SendAnnouncement(_announcer.GetAnnouncementId("NinjaHacking"), Filter.Broadcast(),
+ _announcer.SendAnnouncement(_announcer.GetAnnouncementId("NinjaHacking"),
ninjaHackingThreat.Announcement, colorOverride: Color.Red);
}
}
diff --git a/Content.Server/Communications/CommunicationsConsoleSystem.cs b/Content.Server/Communications/CommunicationsConsoleSystem.cs
index 5d8e15e209..4049e000e0 100644
--- a/Content.Server/Communications/CommunicationsConsoleSystem.cs
+++ b/Content.Server/Communications/CommunicationsConsoleSystem.cs
@@ -267,15 +267,14 @@ namespace Content.Server.Communications
msg += $"\n{Loc.GetString("comms-console-announcement-sent-by")} {author}";
if (comp.Global)
{
- _announcer.SendAnnouncement("announce", Filter.Broadcast(), msg, title, comp.Color);
+ _announcer.SendAnnouncement("announce", msg, title, colorOverride: comp.Color);
_adminLogger.Add(LogType.Chat, LogImpact.Low, $"{ToPrettyString(message.Actor):player} has sent the following global announcement: {msg}");
return;
}
if (TryComp(_stationSystem.GetOwningStation(uid), out var stationData))
- _announcer.SendAnnouncement("announce", _stationSystem.GetInStation(stationData), msg, title,
- comp.Color);
+ _announcer.SendAnnouncement("announce", msg, title, _stationSystem.GetInStation(stationData), comp.Color);
_adminLogger.Add(LogType.Chat, LogImpact.Low, $"{ToPrettyString(message.Actor):player} has sent the following station announcement: {msg}");
diff --git a/Content.Server/Dragon/DragonRiftSystem.cs b/Content.Server/Dragon/DragonRiftSystem.cs
index b0dd87d3fd..e916a8ceab 100644
--- a/Content.Server/Dragon/DragonRiftSystem.cs
+++ b/Content.Server/Dragon/DragonRiftSystem.cs
@@ -72,7 +72,7 @@ public sealed class DragonRiftSystem : EntitySystem
comp.State = DragonRiftState.AlmostFinished;
Dirty(uid, comp);
- _announcer.SendAnnouncement(_announcer.GetAnnouncementId("CarpRift"), Filter.Broadcast(),
+ _announcer.SendAnnouncement(_announcer.GetAnnouncementId("CarpRift"),
"carp-rift-warning", colorOverride: Color.Red, localeArgs: ("location", FormattedMessage.RemoveMarkupPermissive(_navMap.GetNearestBeaconString((uid, xform)))));
_navMap.SetBeaconEnabled(uid, true);
}
diff --git a/Content.Server/GameTicking/GameTicker.RoundFlow.cs b/Content.Server/GameTicking/GameTicker.RoundFlow.cs
index b84fc4ebfa..dd99eeec3a 100644
--- a/Content.Server/GameTicking/GameTicker.RoundFlow.cs
+++ b/Content.Server/GameTicking/GameTicker.RoundFlow.cs
@@ -590,7 +590,7 @@ namespace Content.Server.GameTicking
DisallowLateJoin = false;
_playerGameStatuses.Clear();
-
+
foreach (var session in _playerManager.Sessions)
_playerGameStatuses[session.UserId] = LobbyEnabled ? PlayerGameStatus.NotReadyToPlay : PlayerGameStatus.ReadyToPlay;
}
@@ -651,8 +651,7 @@ namespace Content.Server.GameTicking
var proto = _robustRandom.Pick(options);
- _announcer.SendAnnouncement(_announcer.GetAnnouncementId(proto.ID), Filter.Broadcast(),
- proto.Message ?? "game-ticker-welcome-to-the-station");
+ _announcer.SendAnnouncement(_announcer.GetAnnouncementId(proto.ID), proto.Message ?? "game-ticker-welcome-to-the-station");
}
private async void SendRoundStartedDiscordMessage()
diff --git a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs b/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs
index c967edac22..e2491f44d3 100644
--- a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs
+++ b/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs
@@ -123,7 +123,7 @@ public sealed class ZombieRuleSystem : GameRuleSystem
foreach (var station in _station.GetStations())
{
_announcer.SendAnnouncement(_announcer.GetAnnouncementId("ShuttleCalled"),
- _station.GetInOwningStation(station), "zombie-shuttle-call",
+ "zombie-shuttle-call", filter: _station.GetInOwningStation(station),
colorOverride: Color.Crimson);
}
_roundEnd.RequestRoundEnd(null, false);
diff --git a/Content.Server/Nuke/NukeCodePaperSystem.cs b/Content.Server/Nuke/NukeCodePaperSystem.cs
index f1d3f2ff97..c802336567 100644
--- a/Content.Server/Nuke/NukeCodePaperSystem.cs
+++ b/Content.Server/Nuke/NukeCodePaperSystem.cs
@@ -80,7 +80,7 @@ namespace Content.Server.Nuke
}
if (wasSent)
- _announcer.SendAnnouncement(_announcer.GetAnnouncementId("NukeCodes"), Filter.Broadcast(),
+ _announcer.SendAnnouncement(_announcer.GetAnnouncementId("NukeCodes"),
"nuke-component-announcement-send-codes", colorOverride: Color.Red);
return wasSent;
diff --git a/Content.Server/Nuke/NukeSystem.cs b/Content.Server/Nuke/NukeSystem.cs
index 653be7ccb5..8b3a6574b1 100644
--- a/Content.Server/Nuke/NukeSystem.cs
+++ b/Content.Server/Nuke/NukeSystem.cs
@@ -459,10 +459,12 @@ public sealed class NukeSystem : EntitySystem
_announcer.GetAnnouncementId("NukeArm"),
"nuke-component-announcement-armed",
Loc.GetString("nuke-component-announcement-sender"),
+ null,
Color.Red,
stationUid ?? uid,
null,
- ("time", (int) component.RemainingTime), ("location", FormattedMessage.RemoveMarkupPermissive(_navMap.GetNearestBeaconString((uid, nukeXform))))
+ ("time", (int) component.RemainingTime),
+ ("location", FormattedMessage.RemoveMarkupPermissive(_navMap.GetNearestBeaconString((uid, nukeXform))))
);
_sound.PlayGlobalOnStation(uid, _audio.GetSound(component.ArmSound));
diff --git a/Content.Server/NukeOps/WarDeclaratorSystem.cs b/Content.Server/NukeOps/WarDeclaratorSystem.cs
index 04f0b069f1..2536697557 100644
--- a/Content.Server/NukeOps/WarDeclaratorSystem.cs
+++ b/Content.Server/NukeOps/WarDeclaratorSystem.cs
@@ -74,7 +74,7 @@ public sealed class WarDeclaratorSystem : EntitySystem
if (ev.Status == WarConditionStatus.WarReady)
{
var title = Loc.GetString(ent.Comp.SenderTitle);
- _announcer.SendAnnouncement("war", Filter.Broadcast(), ent.Comp.Message, title, ent.Comp.Color);
+ _announcer.SendAnnouncement("war", ent.Comp.Message, title, colorOverride: ent.Comp.Color);
_adminLogger.Add(LogType.Chat, LogImpact.Low, $"{ToPrettyString(args.Actor):player} has declared war with this text: {ent.Comp.Message}");
}
diff --git a/Content.Server/PowerSink/PowerSinkSystem.cs b/Content.Server/PowerSink/PowerSinkSystem.cs
index 903cb7ce12..06f87b8665 100644
--- a/Content.Server/PowerSink/PowerSinkSystem.cs
+++ b/Content.Server/PowerSink/PowerSinkSystem.cs
@@ -128,9 +128,12 @@ namespace Content.Server.PowerSink
if (station == null)
return;
- _announcer.SendAnnouncement(_announcer.GetAnnouncementId("PowerSinkExplosion"),
- _station.GetInOwningStation(station.Value), "powersink-immiment-explosion-announcement",
- colorOverride: Color.Yellow, station: station.Value);
+ _announcer.SendAnnouncement(
+ _announcer.GetAnnouncementId("PowerSinkExplosion"),
+ "powersink-immiment-explosion-announcement",
+ filter: _station.GetInOwningStation(station.Value),
+ colorOverride: Color.Yellow,
+ station: station.Value);
}
}
}
diff --git a/Content.Server/RoundEnd/RoundEndSystem.cs b/Content.Server/RoundEnd/RoundEndSystem.cs
index fe05f69d4a..00daa7a41e 100644
--- a/Content.Server/RoundEnd/RoundEndSystem.cs
+++ b/Content.Server/RoundEnd/RoundEndSystem.cs
@@ -182,15 +182,12 @@ namespace Content.Server.RoundEnd
units = "eta-units-minutes";
}
- _announcer.SendAnnouncement(_announcer.GetAnnouncementId("ShuttleCalled"),
- Filter.Broadcast(),
+ _announcer.SendAnnouncement(
+ _announcer.GetAnnouncementId("ShuttleCalled"),
text,
name,
- Color.Gold,
- null,
- null,
- ("time", time),
- ("units", Loc.GetString(units))
+ colorOverride: Color.Gold,
+ localeArgs: [("time", time), ("units", Loc.GetString(units)), ]
);
LastCountdownStart = _gameTiming.CurTime;
@@ -238,10 +235,9 @@ namespace Content.Server.RoundEnd
_announcer.SendAnnouncement(
_announcer.GetAnnouncementId("ShuttleRecalled"),
- Filter.Broadcast(),
"round-end-system-shuttle-recalled-announcement",
Loc.GetString("Station"),
- Color.Gold
+ colorOverride: Color.Gold
);
LastCountdownStart = null;
@@ -323,10 +319,9 @@ namespace Content.Server.RoundEnd
{
_announcer.SendAnnouncement(
_announcer.GetAnnouncementId("ShuttleCalled"),
- Filter.Broadcast(),
textAnnounce,
Loc.GetString(sender),
- Color.Gold
+ colorOverride: Color.Gold
);
}
else
diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs
index 6252d58edd..faa0d10ee1 100644
--- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs
+++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs
@@ -221,10 +221,8 @@ public sealed partial class EmergencyShuttleSystem
ShuttlesLeft = true;
_announcer.SendAnnouncement(
_announcer.GetAnnouncementId("ShuttleLeft"),
- Filter.Broadcast(),
"emergency-shuttle-left",
- null, null, null, null,
- ("transitTime", $"{TransitTime:0}")
+ localeArgs: [("transitTime", $"{TransitTime:0}"), ]
);
Timer.Spawn((int) (TransitTime * 1000) + _bufferTime.Milliseconds, () => _roundEnd.EndRound(), _roundEndCancelToken?.Token ?? default);
@@ -273,10 +271,8 @@ public sealed partial class EmergencyShuttleSystem
_logger.Add(LogType.EmergencyShuttle, LogImpact.High, $"Emergency shuttle early launch REPEAL ALL by {args.Actor:user}");
_announcer.SendAnnouncement(
_announcer.GetAnnouncementId("ShuttleAuthRevoked"),
- Filter.Broadcast(),
"emergency-shuttle-console-auth-revoked",
- null, null, null, null,
- ("remaining", component.AuthorizationsRequired)
+ localeArgs: [("remaining", component.AuthorizationsRequired), ]
);
component.AuthorizedEntities.Clear();
UpdateAllEmergencyConsoles();
@@ -308,10 +304,8 @@ public sealed partial class EmergencyShuttleSystem
var remaining = component.AuthorizationsRequired - component.AuthorizedEntities.Count;
_announcer.SendAnnouncement(
_announcer.GetAnnouncementId("ShuttleAuthRevoked"),
- Filter.Broadcast(),
"emergency-shuttle-console-auth-revoked",
- null, null, null, null,
- ("remaining", remaining)
+ localeArgs: [("remaining", remaining), ]
);
CheckForLaunch(component);
UpdateAllEmergencyConsoles();
@@ -335,13 +329,11 @@ public sealed partial class EmergencyShuttleSystem
var remaining = component.AuthorizationsRequired - component.AuthorizedEntities.Count;
if (remaining > 0)
- _announcer.SendAnnouncement(_announcer.GetAnnouncementId("ShuttleAuthAdded"),
- Filter.Broadcast(),
+ _announcer.SendAnnouncement(
+ _announcer.GetAnnouncementId("ShuttleAuthAdded"),
"emergency-shuttle-console-auth-left",
- null,
- DangerColor,
- null, null,
- ("remaining", remaining)
+ colorOverride: DangerColor,
+ localeArgs: [("remaining", remaining), ]
);
if (!CheckForLaunch(component))
@@ -446,10 +438,8 @@ public sealed partial class EmergencyShuttleSystem
_announced = true;
_announcer.SendAnnouncement(
_announcer.GetAnnouncementId("ShuttleAlmostLaunching"),
- Filter.Broadcast(),
"emergency-shuttle-launch-time",
- null, null, null, null,
- ("consoleAccumulator", $"{_consoleAccumulator:0}")
+ localeArgs: [("consoleAccumulator", $"{_consoleAccumulator:0}"), ]
);
}
diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs
index ee0875b7a4..98174b17ec 100644
--- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs
+++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs
@@ -277,8 +277,10 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem
if (targetGrid == null)
{
_logger.Add(LogType.EmergencyShuttle, LogImpact.High, $"Emergency shuttle {ToPrettyString(stationUid)} unable to dock with station {ToPrettyString(stationUid)}");
- _announcer.SendAnnouncement(_announcer.GetAnnouncementId("ShuttleGoodLuck"), Filter.Broadcast(),
- "emergency-shuttle-good-luck", colorOverride: DangerColor);
+ _announcer.SendAnnouncement(
+ _announcer.GetAnnouncementId("ShuttleGoodLuck"),
+ "emergency-shuttle-good-luck",
+ colorOverride: DangerColor);
return;
}
@@ -293,7 +295,11 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem
_announcer.SendAnnouncementMessage(
_announcer.GetAnnouncementId("ShuttleDock"),
"emergency-shuttle-docked",
- null, null, null, null,
+ null,
+ null,
+ null,
+ null,
+ null,
("time", $"{_consoleAccumulator:0}"),
("direction", angle.GetDir()),
("location", location)
@@ -318,7 +324,7 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem
}
_logger.Add(LogType.EmergencyShuttle, LogImpact.High, $"Emergency shuttle {ToPrettyString(stationUid)} docked with stations");
- _announcer.SendAnnouncementAudio(_announcer.GetAnnouncementId("ShuttleDock"), Filter.Broadcast());
+ _announcer.SendAnnouncementAudio(_announcer.GetAnnouncementId("ShuttleDock"));
}
else
{
@@ -333,6 +339,7 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem
null,
null,
null,
+ null,
("time", $"{_consoleAccumulator:0}"),
("direction", angle.GetDir()),
("location", location)
@@ -341,7 +348,7 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem
}
_logger.Add(LogType.EmergencyShuttle, LogImpact.High, $"Emergency shuttle {ToPrettyString(stationUid)} unable to find a valid docking port for {ToPrettyString(stationUid)}");
- _announcer.SendAnnouncementAudio(_announcer.GetAnnouncementId("ShuttleNearby"), Filter.Broadcast());
+ _announcer.SendAnnouncementAudio(_announcer.GetAnnouncementId("ShuttleNearby"));
}
}
diff --git a/Content.Server/StationEvents/Events/AirlockVirusRule.cs b/Content.Server/StationEvents/Events/AirlockVirusRule.cs
index cf2ed9ef56..481bb65c87 100644
--- a/Content.Server/StationEvents/Events/AirlockVirusRule.cs
+++ b/Content.Server/StationEvents/Events/AirlockVirusRule.cs
@@ -49,10 +49,7 @@ public sealed class AirlockVirusRule : StationEventSystem
_announcer.SendAnnouncement(
_announcer.GetAnnouncementId(args.RuleId),
- Filter.Broadcast(),
component.Announce,
- null,
- stationEvent.StartAnnouncementColor,
- null, null,
- ("sender", Loc.GetString(component.Sender)),
+ colorOverride: stationEvent.StartAnnouncementColor,
+ localeArgs:
+ [
+ ("sender", Loc.GetString(component.Sender)),
("description", Loc.GetString(component.Description)),
- ("dest", Loc.GetString(component.Dest))
+ ("dest", Loc.GetString(component.Dest)),
+ ]
);
}
diff --git a/Content.Server/StationEvents/Events/FalseAlarmRule.cs b/Content.Server/StationEvents/Events/FalseAlarmRule.cs
index 1ecbdd7a61..a2c9fd5212 100644
--- a/Content.Server/StationEvents/Events/FalseAlarmRule.cs
+++ b/Content.Server/StationEvents/Events/FalseAlarmRule.cs
@@ -23,13 +23,10 @@ public sealed class FalseAlarmRule : StationEventSystem
_announcer.SendAnnouncement(
_announcer.GetAnnouncementId(picked.Key.ID),
- Filter.Broadcast(),
_announcer.GetEventLocaleString(_announcer.GetAnnouncementId(picked.Key.ID)),
- null,
- picked.Value.StartAnnouncementColor,
- null, null,
+ colorOverride: picked.Value.StartAnnouncementColor,
//TODO This isn't a good solution, but I can't think of something better
- ("data", Loc.GetString($"random-sentience-event-data-{RobustRandom.Next(1, 6)}"))
+ localeArgs: [("data", Loc.GetString($"random-sentience-event-data-{RobustRandom.Next(1, 6)}")), ]
);
}
}
diff --git a/Content.Server/StationEvents/Events/StationEventSystem.cs b/Content.Server/StationEvents/Events/StationEventSystem.cs
index 06ba9c7ec6..e789c0120a 100644
--- a/Content.Server/StationEvents/Events/StationEventSystem.cs
+++ b/Content.Server/StationEvents/Events/StationEventSystem.cs
@@ -58,7 +58,6 @@ public abstract class StationEventSystem : GameRuleSystem where T : ICompo
{
_announcer.SendAnnouncement(
_announcer.GetAnnouncementId(args.RuleId),
- Filter.Broadcast(),
_announcer.GetEventLocaleString(_announcer.GetAnnouncementId(args.RuleId)),
colorOverride: Color.Gold
);
@@ -88,7 +87,6 @@ public abstract class StationEventSystem : GameRuleSystem where T : ICompo
{
_announcer.SendAnnouncement(
_announcer.GetAnnouncementId(args.RuleId, true),
- Filter.Broadcast(),
_announcer.GetEventLocaleString(_announcer.GetAnnouncementId(args.RuleId, true)),
colorOverride: Color.Gold);
}
diff --git a/Content.Server/_Goobstation/GameTicking/Rules/BlobRuleSystem.cs b/Content.Server/_Goobstation/GameTicking/Rules/BlobRuleSystem.cs
index 547591ef31..87c3b57c3b 100644
--- a/Content.Server/_Goobstation/GameTicking/Rules/BlobRuleSystem.cs
+++ b/Content.Server/_Goobstation/GameTicking/Rules/BlobRuleSystem.cs
@@ -118,10 +118,9 @@ public sealed class BlobRuleSystem : GameRuleSystem
_announcer.SendAnnouncement(
"blob-recall-shuttle",
- Filter.Broadcast(),
Loc.GetString("blob-alert-recall-shuttle"),
- station: stationUid,
- colorOverride: Color.Red
+ colorOverride: Color.Red,
+ station: stationUid
);
}
@@ -132,10 +131,9 @@ public sealed class BlobRuleSystem : GameRuleSystem
_announcer.SendAnnouncement(
"blob-detect",
- Filter.Broadcast(),
Loc.GetString("blob-alert-detect"),
- station: stationUid,
- colorOverride: Color.Red
+ colorOverride: Color.Red,
+ station: stationUid
);
// blobRuleComp.DetectedAudio,
@@ -158,10 +156,9 @@ public sealed class BlobRuleSystem : GameRuleSystem
_announcer.SendAnnouncement(
"blob-critical",
- Filter.Broadcast(),
Loc.GetString("blob-alert-critical"),
- station: stationUid,
- colorOverride: Color.Red
+ colorOverride: Color.Red,
+ station: stationUid
);
// blobRuleComp.CriticalAudio
}
@@ -171,7 +168,6 @@ public sealed class BlobRuleSystem : GameRuleSystem
_announcer.SendAnnouncement(
"blob-critical-no-nuke",
- Filter.Broadcast(),
Loc.GetString("blob-alert-critical-NoNukeCode"),
colorOverride: Color.Red
);