FlashComponent.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using Robust.Shared.Audio;
  2. using Robust.Shared.GameStates;
  3. using Robust.Shared.Serialization;
  4. namespace Content.Shared.Flash.Components
  5. {
  6. [RegisterComponent, NetworkedComponent, Access(typeof(SharedFlashSystem))]
  7. public sealed partial class FlashComponent : Component
  8. {
  9. [DataField("duration")]
  10. [ViewVariables(VVAccess.ReadWrite)]
  11. public int FlashDuration { get; set; } = 5000;
  12. /// <summary>
  13. /// How long a target is stunned when a melee flash is used.
  14. /// If null, melee flashes will not stun at all
  15. /// </summary>
  16. [DataField]
  17. public TimeSpan? MeleeStunDuration = TimeSpan.FromSeconds(1.5);
  18. [DataField("range")]
  19. [ViewVariables(VVAccess.ReadWrite)]
  20. public float Range { get; set; } = 7f;
  21. [ViewVariables(VVAccess.ReadWrite)]
  22. [DataField("aoeFlashDuration")]
  23. public int AoeFlashDuration { get; set; } = 2000;
  24. [DataField("slowTo")]
  25. [ViewVariables(VVAccess.ReadWrite)]
  26. public float SlowTo { get; set; } = 0.5f;
  27. [ViewVariables(VVAccess.ReadWrite)]
  28. [DataField("sound")]
  29. public SoundSpecifier Sound { get; set; } = new SoundPathSpecifier("/Audio/Weapons/flash.ogg")
  30. {
  31. Params = AudioParams.Default.WithVolume(1f).WithMaxDistance(3f)
  32. };
  33. public bool Flashing;
  34. [DataField]
  35. public float Probability = 1f;
  36. }
  37. [Serializable, NetSerializable]
  38. public enum FlashVisuals : byte
  39. {
  40. BaseLayer,
  41. LightLayer,
  42. Burnt,
  43. Flashing,
  44. }
  45. }