ParacusiaComponent.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using Robust.Shared.Audio;
  2. using Robust.Shared.GameStates;
  3. using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
  4. namespace Content.Shared.Traits.Assorted;
  5. /// <summary>
  6. /// This component is used for paracusia, which causes auditory hallucinations.
  7. /// </summary>
  8. [RegisterComponent, NetworkedComponent]
  9. [AutoGenerateComponentState]
  10. [Access(typeof(SharedParacusiaSystem))]
  11. public sealed partial class ParacusiaComponent : Component
  12. {
  13. /// <summary>
  14. /// The maximum time between incidents in seconds
  15. /// </summary>
  16. [DataField("maxTimeBetweenIncidents", required: true), ViewVariables(VVAccess.ReadWrite)]
  17. [AutoNetworkedField]
  18. public float MaxTimeBetweenIncidents = 60f;
  19. /// <summary>
  20. /// The minimum time between incidents in seconds
  21. /// </summary>
  22. [DataField("minTimeBetweenIncidents", required: true), ViewVariables(VVAccess.ReadWrite)]
  23. [AutoNetworkedField]
  24. public float MinTimeBetweenIncidents = 30f;
  25. /// <summary>
  26. /// How far away at most can the sound be?
  27. /// </summary>
  28. [DataField("maxSoundDistance", required: true), ViewVariables(VVAccess.ReadWrite)]
  29. [AutoNetworkedField]
  30. public float MaxSoundDistance;
  31. /// <summary>
  32. /// The sounds to choose from
  33. /// </summary>
  34. [DataField("sounds", required: true)]
  35. [AutoNetworkedField]
  36. public SoundSpecifier Sounds = default!;
  37. [DataField("timeBetweenIncidents", customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)]
  38. public TimeSpan NextIncidentTime;
  39. public EntityUid? Stream;
  40. }