From d3926b7c4b8b0e560b8e56ec52b8c2d9befee7c8 Mon Sep 17 00:00:00 2001
From: EmoGarbage404 <98561806+EmoGarbage404@users.noreply.github.com>
Date: Fri, 17 Jun 2022 23:53:02 -0400
Subject: [PATCH] Silent Station Events (#8938)
---
.../StationEvents/Events/DiseaseOutbreak.cs | 4 ++++
Content.Server/StationEvents/Events/KudzuGrowth.cs | 2 ++
.../StationEvents/Events/MouseMigration.cs | 2 ++
Content.Server/StationEvents/Events/StationEvent.cs | 13 +++++++++----
Content.Server/StationEvents/Events/VentCritters.cs | 2 ++
.../StationEvents/Events/ZombieOutbreak.cs | 6 ++++--
6 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/Content.Server/StationEvents/Events/DiseaseOutbreak.cs b/Content.Server/StationEvents/Events/DiseaseOutbreak.cs
index e78cd0a1c4..756fa3f912 100644
--- a/Content.Server/StationEvents/Events/DiseaseOutbreak.cs
+++ b/Content.Server/StationEvents/Events/DiseaseOutbreak.cs
@@ -37,6 +37,8 @@ public sealed class DiseaseOutbreak : StationEvent
public override SoundSpecifier? StartAudio => new SoundPathSpecifier("/Audio/Announcements/outbreak7.ogg");
protected override float EndAfter => 1.0f;
+ public override bool AnnounceEvent => false;
+
///
/// Finds 2-5 random, alive entities that can host diseases
/// and gives them a randomly selected disease.
@@ -79,6 +81,8 @@ public sealed class DiseaseOutbreak : StationEvent
stationsToNotify.Add((EntityUid) station);
}
+ if (!AnnounceEvent)
+ return;
foreach (var station in stationsToNotify)
{
chatSystem.DispatchStationAnnouncement(station, Loc.GetString("station-event-disease-outbreak-announcement"),
diff --git a/Content.Server/StationEvents/Events/KudzuGrowth.cs b/Content.Server/StationEvents/Events/KudzuGrowth.cs
index 497b4a98d0..11153e2a88 100644
--- a/Content.Server/StationEvents/Events/KudzuGrowth.cs
+++ b/Content.Server/StationEvents/Events/KudzuGrowth.cs
@@ -27,6 +27,8 @@ public sealed class KudzuGrowth : StationEvent
// Give crew at least 9 minutes to either have it gone, or to suffer another event. Kudzu is not actually required to be dead for another event to roll.
protected override float EndAfter => 60*4;
+ public override bool AnnounceEvent => false;
+
private EntityUid _targetGrid;
private Vector2i _targetTile;
diff --git a/Content.Server/StationEvents/Events/MouseMigration.cs b/Content.Server/StationEvents/Events/MouseMigration.cs
index ee831de699..ee7510e6ee 100644
--- a/Content.Server/StationEvents/Events/MouseMigration.cs
+++ b/Content.Server/StationEvents/Events/MouseMigration.cs
@@ -25,6 +25,8 @@ public sealed class MouseMigration : StationEvent
public override int? MaxOccurrences => 1;
+ public override bool AnnounceEvent => false;
+
protected override float StartAfter => 30f;
protected override float EndAfter => 60;
diff --git a/Content.Server/StationEvents/Events/StationEvent.cs b/Content.Server/StationEvents/Events/StationEvent.cs
index 0f8872a1e0..427d67a0f7 100644
--- a/Content.Server/StationEvents/Events/StationEvent.cs
+++ b/Content.Server/StationEvents/Events/StationEvent.cs
@@ -107,6 +107,11 @@ namespace Content.Server.StationEvents.Events
///
public virtual int? MaxOccurrences { get; } = null;
+ ///
+ /// Whether or not the event is announced when it is run
+ ///
+ public virtual bool AnnounceEvent { get; } = true;
+
///
/// Has the startup time elapsed?
///
@@ -139,13 +144,13 @@ namespace Content.Server.StationEvents.Events
IoCManager.Resolve()
.Add(LogType.EventAnnounced, $"Event announce: {Name}");
- if (StartAnnouncement != null)
+ if (AnnounceEvent && StartAnnouncement != null)
{
var chatSystem = IoCManager.Resolve().GetEntitySystem();
chatSystem.DispatchGlobalStationAnnouncement(StartAnnouncement, playDefaultSound: false, colorOverride: Color.Gold);
}
- if (StartAudio != null)
+ if (AnnounceEvent && StartAudio != null)
{
SoundSystem.Play(StartAudio.GetSound(), Filter.Broadcast(), AudioParams);
}
@@ -162,13 +167,13 @@ namespace Content.Server.StationEvents.Events
IoCManager.Resolve()
.Add(LogType.EventStopped, $"Event shutdown: {Name}");
- if (EndAnnouncement != null)
+ if (AnnounceEvent && EndAnnouncement != null)
{
var chatSystem = IoCManager.Resolve().GetEntitySystem();
chatSystem.DispatchGlobalStationAnnouncement(EndAnnouncement, playDefaultSound: false, colorOverride: Color.Gold);
}
- if (EndAudio != null)
+ if (AnnounceEvent && EndAudio != null)
{
SoundSystem.Play(EndAudio.GetSound(), Filter.Broadcast(), AudioParams);
}
diff --git a/Content.Server/StationEvents/Events/VentCritters.cs b/Content.Server/StationEvents/Events/VentCritters.cs
index fa288f7820..9788aab126 100644
--- a/Content.Server/StationEvents/Events/VentCritters.cs
+++ b/Content.Server/StationEvents/Events/VentCritters.cs
@@ -32,6 +32,8 @@ public sealed class VentCritters : StationEvent
protected override float EndAfter => 60;
+ public override bool AnnounceEvent => false;
+
public override void Startup()
{
base.Startup();
diff --git a/Content.Server/StationEvents/Events/ZombieOutbreak.cs b/Content.Server/StationEvents/Events/ZombieOutbreak.cs
index 891171833b..1025aafaf8 100644
--- a/Content.Server/StationEvents/Events/ZombieOutbreak.cs
+++ b/Content.Server/StationEvents/Events/ZombieOutbreak.cs
@@ -19,11 +19,10 @@ namespace Content.Server.StationEvents.Events
public override string Name => "ZombieOutbreak";
public override int EarliestStart => 50;
public override float Weight => WeightLow / 2;
-
public override SoundSpecifier? StartAudio => new SoundPathSpecifier("/Audio/Announcements/bloblarm.ogg");
protected override float EndAfter => 1.0f;
-
public override int? MaxOccurrences => 1;
+ public override bool AnnounceEvent => false;
///
/// Finds 1-3 random, dead entities accross the station
@@ -61,6 +60,9 @@ namespace Content.Server.StationEvents.Events
if(station == null) continue;
stationsToNotify.Add((EntityUid) station);
}
+
+ if (!AnnounceEvent)
+ return;
foreach (var station in stationsToNotify)
{
chatSystem.DispatchStationAnnouncement((EntityUid) station, Loc.GetString("station-event-zombie-outbreak-announcement"),