mirror of
https://github.com/WWhiteDreamProject/wwdpublic.git
synced 2026-04-17 05:27:38 +03:00
Don't show Station Event announcements to players in the lobby. (#30886)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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}");
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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}");
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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}");
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}"), ]
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -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"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)}")), ]
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -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))), ]
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -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)}")), ]
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -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)),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -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)}")), ]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user