ReflectComponent.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using Robust.Shared.Audio;
  2. using Robust.Shared.GameStates;
  3. namespace Content.Shared.Weapons.Reflect;
  4. /// <summary>
  5. /// Entities with this component have a chance to reflect projectiles and hitscan shots
  6. /// Uses <c>ItemToggleComponent</c> to control reflection.
  7. /// </summary>
  8. [RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
  9. public sealed partial class ReflectComponent : Component
  10. {
  11. /// <summary>
  12. /// What we reflect.
  13. /// </summary>
  14. [ViewVariables(VVAccess.ReadWrite), DataField("reflects")]
  15. public ReflectType Reflects = ReflectType.Energy | ReflectType.NonEnergy;
  16. /// <summary>
  17. /// Probability for a projectile to be reflected.
  18. /// </summary>
  19. [DataField("reflectProb"), ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
  20. public float ReflectProb = 0.25f;
  21. [DataField("spread"), ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
  22. public Angle Spread = Angle.FromDegrees(45);
  23. [DataField("soundOnReflect")]
  24. public SoundSpecifier? SoundOnReflect = new SoundPathSpecifier("/Audio/Weapons/Guns/Hits/laser_sear_wall.ogg");
  25. }
  26. [Flags]
  27. public enum ReflectType : byte
  28. {
  29. None = 0,
  30. NonEnergy = 1 << 0,
  31. Energy = 1 << 1,
  32. }