using Content.Server.Buckle.Systems; using Content.Shared.Alert; using Content.Shared.Buckle.Components; using Robust.Shared.Audio; namespace Content.Server.Buckle.Components; [RegisterComponent] [ComponentReference(typeof(SharedStrapComponent))] [Access(typeof(BuckleSystem))] public sealed class StrapComponent : SharedStrapComponent { /// /// The angle in degrees to rotate the player by when they get strapped /// [DataField("rotation")] public int Rotation { get; set; } /// /// The size of the strap which is compared against when buckling entities /// [DataField("size")] public int Size { get; set; } = 100; /// /// If disabled, nothing can be buckled on this object, and it will unbuckle anything that's already buckled /// public bool Enabled { get; set; } = true; /// /// You can specify the offset the entity will have after unbuckling. /// [DataField("unbuckleOffset", required: false)] public Vector2 UnbuckleOffset = Vector2.Zero; /// /// The sound to be played when a mob is buckled /// [DataField("buckleSound")] public SoundSpecifier BuckleSound { get; } = new SoundPathSpecifier("/Audio/Effects/buckle.ogg"); /// /// The sound to be played when a mob is unbuckled /// [DataField("unbuckleSound")] public SoundSpecifier UnbuckleSound { get; } = new SoundPathSpecifier("/Audio/Effects/unbuckle.ogg"); /// /// ID of the alert to show when buckled /// [DataField("buckledAlertType")] public AlertType BuckledAlertType { get; } = AlertType.Buckled; /// /// The sum of the sizes of all the buckled entities in this strap /// public int OccupiedSize { get; set; } }