diff --git a/Robust.Server/Audio/AudioSystem.cs b/Robust.Server/Audio/AudioSystem.cs index 981c01e770e..ae596756b8d 100644 --- a/Robust.Server/Audio/AudioSystem.cs +++ b/Robust.Server/Audio/AudioSystem.cs @@ -101,6 +101,11 @@ public override (EntityUid Entity, AudioComponent Component)? PlayEntity(string? if (TerminatingOrDeleted(uid)) return null; + var ev = new AudioPlayAttempt(); + RaiseLocalEvent(uid, ev, false); + if (ev.Cancelled) + return null; + var entity = SetupAudio(filename, audioParams); // Move it after setting it up XformSystem.SetCoordinates(entity, new EntityCoordinates(uid, Vector2.Zero)); @@ -118,6 +123,11 @@ public override (EntityUid Entity, AudioComponent Component)? PlayPvs(string? fi if (TerminatingOrDeleted(uid)) return null; + var ev = new AudioPlayAttempt(); + RaiseLocalEvent(uid, ev, false); + if (ev.Cancelled) + return null; + var entity = SetupAudio(filename, audioParams); XformSystem.SetCoordinates(entity, new EntityCoordinates(uid, Vector2.Zero)); @@ -162,6 +172,7 @@ public override (EntityUid Entity, AudioComponent Component)? PlayPvs(string? fi if (!coordinates.IsValid(EntityManager)) return null; + // TODO: Transform TryFindGridAt mess + optimisation required. var entity = SetupAudio(filename, audioParams); XformSystem.SetCoordinates(entity, coordinates); diff --git a/Robust.Shared/Audio/Components/AudioComponent.cs b/Robust.Shared/Audio/Components/AudioComponent.cs index 2cb47398445..92feaa2737f 100644 --- a/Robust.Shared/Audio/Components/AudioComponent.cs +++ b/Robust.Shared/Audio/Components/AudioComponent.cs @@ -275,3 +275,8 @@ public enum AudioFlags : byte NoOcclusion = 1 << 1, } + +/// +/// Raised directed at an entity, which is emitting the audio. Raised only when audio played at the entity itself, not the coordinates. +/// +public sealed class AudioPlayAttempt : CancellableEntityEventArgs;