From c95bf87e749c0157421e13689bb8ff081c5bbc3a Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sat, 7 May 2022 15:41:15 +1000 Subject: [PATCH] Add attention.ogg and soundspecifiers for events (#7977) --- .../StationEvents/Events/DiseaseOutbreak.cs | 3 ++- Content.Server/StationEvents/Events/GasLeak.cs | 1 + .../StationEvents/Events/KudzuGrowth.cs | 6 +----- .../StationEvents/Events/MeteorSwarm.cs | 3 ++- .../StationEvents/Events/PowerGridCheck.cs | 3 ++- .../StationEvents/Events/RadiationStorm.cs | 3 ++- .../StationEvents/Events/StationEvent.cs | 9 +++++---- .../StationEvents/Events/VentCritters.cs | 3 ++- .../StationEvents/Events/ZombieOutbreak.cs | 3 ++- Resources/Audio/Announcements/attention.ogg | Bin 0 -> 15909 bytes Resources/Audio/Announcements/license.txt | 6 ++++-- Resources/Audio/Items/license.txt | 2 +- 12 files changed, 24 insertions(+), 18 deletions(-) create mode 100644 Resources/Audio/Announcements/attention.ogg diff --git a/Content.Server/StationEvents/Events/DiseaseOutbreak.cs b/Content.Server/StationEvents/Events/DiseaseOutbreak.cs index 684a3324576..67bae1a03f4 100644 --- a/Content.Server/StationEvents/Events/DiseaseOutbreak.cs +++ b/Content.Server/StationEvents/Events/DiseaseOutbreak.cs @@ -4,6 +4,7 @@ using Content.Server.Disease; using Content.Shared.Disease; using Content.Shared.MobState.Components; +using Content.Shared.Sound; using Robust.Shared.Random; using Robust.Shared.Prototypes; @@ -32,7 +33,7 @@ public sealed class DiseaseOutbreak : StationEvent public override string Name => "DiseaseOutbreak"; public override float Weight => WeightNormal; - public override string? StartAudio => "/Audio/Announcements/outbreak7.ogg"; + public override SoundSpecifier? StartAudio => new SoundPathSpecifier("/Audio/Announcements/outbreak7.ogg"); protected override float EndAfter => 1.0f; /// /// Finds 2-5 random, alive entities that can host diseases diff --git a/Content.Server/StationEvents/Events/GasLeak.cs b/Content.Server/StationEvents/Events/GasLeak.cs index 9b2ff8c0fa8..1b3881f3bf1 100644 --- a/Content.Server/StationEvents/Events/GasLeak.cs +++ b/Content.Server/StationEvents/Events/GasLeak.cs @@ -1,5 +1,6 @@ using Content.Server.Atmos.EntitySystems; using Content.Shared.Atmos; +using Content.Shared.Sound; using Content.Shared.Station; using Robust.Shared.Audio; using Robust.Shared.GameObjects; diff --git a/Content.Server/StationEvents/Events/KudzuGrowth.cs b/Content.Server/StationEvents/Events/KudzuGrowth.cs index 4d6f1627d1c..303d1a86511 100644 --- a/Content.Server/StationEvents/Events/KudzuGrowth.cs +++ b/Content.Server/StationEvents/Events/KudzuGrowth.cs @@ -1,9 +1,5 @@ -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Localization; -using Robust.Shared.Log; +using Content.Shared.Sound; using Robust.Shared.Map; -using Robust.Shared.Maths; using Robust.Shared.Random; namespace Content.Server.StationEvents.Events; diff --git a/Content.Server/StationEvents/Events/MeteorSwarm.cs b/Content.Server/StationEvents/Events/MeteorSwarm.cs index 43fc39b3676..279c66d522e 100644 --- a/Content.Server/StationEvents/Events/MeteorSwarm.cs +++ b/Content.Server/StationEvents/Events/MeteorSwarm.cs @@ -2,6 +2,7 @@ using System.Linq; using Content.Server.GameTicking; using Content.Server.Projectiles.Components; +using Content.Shared.Sound; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Map; @@ -27,7 +28,7 @@ public sealed class MeteorSwarm : StationEvent public override string StartAnnouncement => Loc.GetString("station-event-meteor-swarm-start-announcement"); protected override string EndAnnouncement => Loc.GetString("station-event-meteor-swarm-ebd-announcement"); - public override string? StartAudio => "/Audio/Announcements/meteors.ogg"; + public override SoundSpecifier? StartAudio => new SoundPathSpecifier("/Audio/Announcements/meteors.ogg"); protected override float StartAfter => 30f; protected override float EndAfter => float.MaxValue; diff --git a/Content.Server/StationEvents/Events/PowerGridCheck.cs b/Content.Server/StationEvents/Events/PowerGridCheck.cs index 178882d89ed..25c8445105d 100644 --- a/Content.Server/StationEvents/Events/PowerGridCheck.cs +++ b/Content.Server/StationEvents/Events/PowerGridCheck.cs @@ -1,5 +1,6 @@ using System.Threading; using Content.Server.Power.Components; +using Content.Shared.Sound; using JetBrains.Annotations; using Robust.Shared.Audio; using Robust.Shared.Player; @@ -20,7 +21,7 @@ public sealed class PowerGridCheck : StationEvent public override int? MaxOccurrences => 3; public override string StartAnnouncement => Loc.GetString("station-event-power-grid-check-start-announcement"); protected override string EndAnnouncement => Loc.GetString("station-event-power-grid-check-end-announcement"); - public override string? StartAudio => "/Audio/Announcements/power_off.ogg"; + public override SoundSpecifier? StartAudio => new SoundPathSpecifier("/Audio/Announcements/power_off.ogg"); // If you need EndAudio it's down below. Not set here because we can't play it at the normal time without spamming sounds. diff --git a/Content.Server/StationEvents/Events/RadiationStorm.cs b/Content.Server/StationEvents/Events/RadiationStorm.cs index 3278bec24ff..3bc0058e336 100644 --- a/Content.Server/StationEvents/Events/RadiationStorm.cs +++ b/Content.Server/StationEvents/Events/RadiationStorm.cs @@ -2,6 +2,7 @@ using Content.Server.Radiation; using Content.Server.Station; using Content.Shared.Coordinates; +using Content.Shared.Sound; using Content.Shared.Station; using JetBrains.Annotations; using Robust.Shared.GameObjects; @@ -24,7 +25,7 @@ public sealed class RadiationStorm : StationEvent public override string Name => "RadiationStorm"; public override string StartAnnouncement => Loc.GetString("station-event-radiation-storm-start-announcement"); protected override string EndAnnouncement => Loc.GetString("station-event-radiation-storm-end-announcement"); - public override string StartAudio => "/Audio/Announcements/radiation.ogg"; + public override SoundSpecifier? StartAudio => new SoundPathSpecifier("/Audio/Announcements/radiation.ogg"); protected override float StartAfter => 10.0f; // Event specific details diff --git a/Content.Server/StationEvents/Events/StationEvent.cs b/Content.Server/StationEvents/Events/StationEvent.cs index 7c14e9c7271..53d6b71bb53 100644 --- a/Content.Server/StationEvents/Events/StationEvent.cs +++ b/Content.Server/StationEvents/Events/StationEvent.cs @@ -4,6 +4,7 @@ using Content.Server.Chat.Managers; using Content.Server.Station; using Content.Shared.Database; +using Content.Shared.Sound; using Content.Shared.Station; using Robust.Shared.Audio; using Robust.Shared.GameObjects; @@ -51,12 +52,12 @@ public abstract class StationEvent /// /// Starting audio of the event. /// - public virtual string? StartAudio { get; set; } = null; + public virtual SoundSpecifier? StartAudio { get; set; } = new SoundPathSpecifier("/Audio/Announcements/attention.ogg"); /// /// Ending audio of the event. /// - public virtual string? EndAudio { get; } = null; + public virtual SoundSpecifier? EndAudio { get; } = null; public virtual AudioParams AudioParams { get; } = AudioParams.Default.WithVolume(-10f); @@ -137,7 +138,7 @@ public virtual void Announce() if (StartAudio != null) { - SoundSystem.Play(Filter.Broadcast(), StartAudio, AudioParams); + SoundSystem.Play(Filter.Broadcast(), StartAudio.GetSound(), AudioParams); } Announced = true; @@ -160,7 +161,7 @@ public virtual void Shutdown() if (EndAudio != null) { - SoundSystem.Play(Filter.Broadcast(), EndAudio, AudioParams); + SoundSystem.Play(Filter.Broadcast(), EndAudio.GetSound(), AudioParams); } Started = false; diff --git a/Content.Server/StationEvents/Events/VentCritters.cs b/Content.Server/StationEvents/Events/VentCritters.cs index 8e8dea0cd99..fa288f78204 100644 --- a/Content.Server/StationEvents/Events/VentCritters.cs +++ b/Content.Server/StationEvents/Events/VentCritters.cs @@ -1,5 +1,6 @@ using System.Linq; using Content.Server.StationEvents.Components; +using Content.Shared.Sound; using Robust.Shared.Random; namespace Content.Server.StationEvents.Events; @@ -17,7 +18,7 @@ public sealed class VentCritters : StationEvent public override string? StartAnnouncement => Loc.GetString("station-event-vent-spiders-start-announcement", ("data", Loc.GetString(Loc.GetString($"random-sentience-event-data-{_random.Next(1, 6)}")))); - public override string? StartAudio => "/Audio/Announcements/aliens.ogg"; + public override SoundSpecifier? StartAudio => new SoundPathSpecifier("/Audio/Announcements/aliens.ogg"); public override int EarliestStart => 15; diff --git a/Content.Server/StationEvents/Events/ZombieOutbreak.cs b/Content.Server/StationEvents/Events/ZombieOutbreak.cs index 17cf0f328e7..c6a4509c98a 100644 --- a/Content.Server/StationEvents/Events/ZombieOutbreak.cs +++ b/Content.Server/StationEvents/Events/ZombieOutbreak.cs @@ -2,6 +2,7 @@ using Content.Server.Chat.Managers; using Content.Server.Disease.Zombie.Components; using Content.Shared.MobState.Components; +using Content.Shared.Sound; namespace Content.Server.StationEvents.Events { @@ -18,7 +19,7 @@ public sealed class ZombieOutbreak : StationEvent public override int EarliestStart => 50; public override float Weight => WeightLow / 2; - public override string? StartAudio => "/Audio/Announcements/bloblarm.ogg"; + public override SoundSpecifier? StartAudio => new SoundPathSpecifier("/Audio/Announcements/bloblarm.ogg"); protected override float EndAfter => 1.0f; public override int? MaxOccurrences => 1; diff --git a/Resources/Audio/Announcements/attention.ogg b/Resources/Audio/Announcements/attention.ogg new file mode 100644 index 0000000000000000000000000000000000000000..912be4425ebb3d24ab579493c1f1c2c06ec45d22 GIT binary patch literal 15909 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