using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Traits.Assorted; /// /// This component is used for paracusia, which causes auditory hallucinations. /// [RegisterComponent, NetworkedComponent] [AutoGenerateComponentState] [Access(typeof(SharedParacusiaSystem))] public sealed partial class ParacusiaComponent : Component { /// /// The maximum time between incidents in seconds /// [DataField("maxTimeBetweenIncidents", required: true), ViewVariables(VVAccess.ReadWrite)] [AutoNetworkedField] public float MaxTimeBetweenIncidents = 60f; /// /// The minimum time between incidents in seconds /// [DataField("minTimeBetweenIncidents", required: true), ViewVariables(VVAccess.ReadWrite)] [AutoNetworkedField] public float MinTimeBetweenIncidents = 30f; /// /// How far away at most can the sound be? /// [DataField("maxSoundDistance", required: true), ViewVariables(VVAccess.ReadWrite)] [AutoNetworkedField] public float MaxSoundDistance; /// /// The sounds to choose from /// [DataField("sounds", required: true)] [AutoNetworkedField] public SoundSpecifier Sounds = default!; [DataField("timeBetweenIncidents", customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] public TimeSpan NextIncidentTime; public EntityUid? Stream; }