Don't show Station Event announcements to players in the lobby. (#30886)

This commit is contained in:
Mervill
2024-08-11 09:09:33 +03:00
committed by Spatison
parent 1e1b7fa468
commit e6fa747f95
27 changed files with 141 additions and 121 deletions

View File

@@ -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;
}

View File

@@ -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));

View File

@@ -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;
}

View File

@@ -30,8 +30,9 @@ public sealed partial class AnnouncerSystem
/// <param name="announcementId">ID of the announcement to get information from</param>
/// <param name="filter">Who hears the announcement audio</param>
/// <param name="announcerOverride">Uses this announcer instead of the current global one</param>
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
/// <param name="announcementId">ID of the announcement to get information from</param>
/// <param name="locale">Text to send in the announcement</param>
/// <param name="sender">Who to show as the announcement announcer, defaults to the current announcer's name</param>
/// <param name="filter">Who hears the announcement</param>
/// <param name="colorOverride">What color the announcement should be</param>
/// <param name="station">Station ID to send the announcement to</param>
/// <param name="announcerOverride">Uses this announcer instead of the current global one</param>
/// <param name="localeArgs">Locale arguments to pass to the announcement message</param>
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);
}
/// <summary>
/// Sends an announcement with a message and audio
/// </summary>
/// <param name="announcementId">ID of the announcement to get information from</param>
/// <param name="filter">Who hears the announcement audio</param>
/// <param name="locale">Text to send in the announcement</param>
/// <param name="sender">Who to show as the announcement announcer, defaults to the current announcer's name</param>
/// <param name="filter">Who hears the announcement</param>
/// <param name="colorOverride">What color the announcement should be</param>
/// <param name="station">Station ID to send the announcement to</param>
/// <param name="announcerOverride">Uses this announcer instead of the current global one</param>
/// <param name="localeArgs">Locale arguments to pass to the announcement message</param>
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);
}
}

View File

@@ -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!;
/// <summary>
/// The currently selected announcer

View File

@@ -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);
}
}

View File

@@ -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}");
}
/// <summary>
/// Dispatches an announcement to players selected by filter.
/// </summary>
/// <param name="filter">Filter to select players who will recieve the announcement</param>
/// <param name="message">The contents of the message</param>
/// <param name="source">The entity making the announcement (used to determine the station)</param>
/// <param name="sender">The sender (Communications Console in Communications Console Announcement)</param>
/// <param name="playDefaultSound">Play the announcement sound</param>
/// <param name="announcementSound">Sound to play</param>
/// <param name="colorOverride">Optional color for the announcement message</param>
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}");
}
/// <summary>
/// Dispatches an announcement on a specific station
/// </summary>
@@ -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}");

View File

@@ -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);
}
}

View File

@@ -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<StationDataComponent>(_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}");

View File

@@ -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);
}

View File

@@ -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()

View File

@@ -123,7 +123,7 @@ public sealed class ZombieRuleSystem : GameRuleSystem<ZombieRuleComponent>
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);

View File

@@ -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;

View File

@@ -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));

View File

@@ -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}");
}

View File

@@ -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);
}
}
}

View File

@@ -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

View File

@@ -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}"), ]
);
}

View File

@@ -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"));
}
}

View File

@@ -49,10 +49,7 @@ public sealed class AirlockVirusRule : StationEventSystem<AirlockVirusRuleCompon
_announcer.SendAnnouncement(
_announcer.GetAnnouncementId(args.RuleId),
Filter.Broadcast(),
"airlock-virus-event-announcement",
null,
Color.FromHex("#18abf5"),
null, null);
colorOverride: Color.FromHex("#18abf5"));
}
}

View File

@@ -21,12 +21,9 @@ public sealed class AnomalySpawnRule : StationEventSystem<AnomalySpawnRuleCompon
_announcer.SendAnnouncement(
_announcer.GetAnnouncementId(args.RuleId),
Filter.Broadcast(),
"anomaly-spawn-event-announcement",
null,
stationEvent.StartAnnouncementColor,
null, null,
("sighting", Loc.GetString($"anomaly-spawn-sighting-{RobustRandom.Next(1, 6)}"))
colorOverride: stationEvent.StartAnnouncementColor,
localeArgs: [("sighting", Loc.GetString($"anomaly-spawn-sighting-{RobustRandom.Next(1, 6)}")), ]
);
}

View File

@@ -19,12 +19,9 @@ public sealed class BluespaceArtifactRule : StationEventSystem<BluespaceArtifact
_announcer.SendAnnouncement(
_announcer.GetAnnouncementId(args.RuleId),
Filter.Broadcast(),
"bluespace-artifact-event-announcement",
null,
stationEvent.StartAnnouncementColor,
null, null,
("sighting", Loc.GetString(RobustRandom.Pick(component.PossibleSighting)))
colorOverride: stationEvent.StartAnnouncementColor,
localeArgs: [("sighting", Loc.GetString(RobustRandom.Pick(component.PossibleSighting))), ]
);
}

View File

@@ -24,12 +24,9 @@ public sealed class BreakerFlipRule : StationEventSystem<BreakerFlipRuleComponen
_announcer.SendAnnouncement(
_announcer.GetAnnouncementId(args.RuleId),
Filter.Broadcast(),
"station-event-breaker-flip-announcement",
null,
stationEvent.StartAnnouncementColor,
null, null,
("data", Loc.GetString($"random-sentience-event-data-{RobustRandom.Next(1, 6)}"))
colorOverride: stationEvent.StartAnnouncementColor,
localeArgs: [("data", Loc.GetString($"random-sentience-event-data-{RobustRandom.Next(1, 6)}")), ]
);
}

View File

@@ -27,14 +27,14 @@ public sealed class CargoGiftsRule : StationEventSystem<CargoGiftsRuleComponent>
_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)),
]
);
}

View File

@@ -23,13 +23,10 @@ public sealed class FalseAlarmRule : StationEventSystem<FalseAlarmRuleComponent>
_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)}")), ]
);
}
}

View File

@@ -58,7 +58,6 @@ public abstract class StationEventSystem<T> : GameRuleSystem<T> 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<T> : GameRuleSystem<T> where T : ICompo
{
_announcer.SendAnnouncement(
_announcer.GetAnnouncementId(args.RuleId, true),
Filter.Broadcast(),
_announcer.GetEventLocaleString(_announcer.GetAnnouncementId(args.RuleId, true)),
colorOverride: Color.Gold);
}

View File

@@ -118,10 +118,9 @@ public sealed class BlobRuleSystem : GameRuleSystem<BlobRuleComponent>
_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<BlobRuleComponent>
_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<BlobRuleComponent>
_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<BlobRuleComponent>
_announcer.SendAnnouncement(
"blob-critical-no-nuke",
Filter.Broadcast(),
Loc.GetString("blob-alert-critical-NoNukeCode"),
colorOverride: Color.Red
);