| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- using Content.Shared.Damage;
- using Robust.Shared.Audio;
- using Robust.Shared.GameStates;
- using Robust.Shared.Prototypes;
- namespace Content.Shared.Cuffs.Components;
- [RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
- [Access(typeof(SharedCuffableSystem))]
- public sealed partial class HandcuffComponent : Component
- {
- /// <summary>
- /// The time it takes to cuff an entity.
- /// </summary>
- [DataField, ViewVariables(VVAccess.ReadWrite)]
- public float CuffTime = 3.5f;
- /// <summary>
- /// The time it takes to uncuff an entity.
- /// </summary>
- [DataField, ViewVariables(VVAccess.ReadWrite)]
- public float UncuffTime = 3.5f;
- /// <summary>
- /// The time it takes for a cuffed entity to uncuff itself.
- /// </summary>
- [DataField, ViewVariables(VVAccess.ReadWrite)]
- public float BreakoutTime = 15f;
- /// <summary>
- /// If an entity being cuffed is stunned, this amount of time is subtracted from the time it takes to add/remove their cuffs.
- /// </summary>
- [DataField, ViewVariables(VVAccess.ReadWrite)]
- public float StunBonus = 2f;
- /// <summary>
- /// Will the cuffs break when removed?
- /// </summary>
- [DataField, ViewVariables(VVAccess.ReadWrite)]
- public bool BreakOnRemove;
- /// <summary>
- /// Will the cuffs break when removed?
- /// </summary>
- [DataField, ViewVariables(VVAccess.ReadWrite)]
- public EntProtoId? BrokenPrototype;
- /// <summary>
- /// Whether or not these cuffs are in the process of being removed.
- /// Used simply to prevent spawning multiple <see cref="BrokenPrototype"/>.
- /// </summary>
- [DataField]
- public bool Removing;
- /// <summary>
- /// Whether the cuffs are currently being used to cuff someone.
- /// We need the extra information for when the virtual item is deleted because that can happen when you simply stop
- /// pulling them on the ground.
- /// </summary>
- [DataField]
- public bool Used;
- /// <summary>
- /// The path of the RSI file used for the player cuffed overlay.
- /// </summary>
- [DataField, ViewVariables(VVAccess.ReadWrite)]
- public string? CuffedRSI = "Objects/Misc/handcuffs.rsi";
- /// <summary>
- /// The iconstate used with the RSI file for the player cuffed overlay.
- /// </summary>
- [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
- public string? BodyIconState = "body-overlay";
- /// <summary>
- /// An opptional color specification for <see cref="BodyIconState"/>
- /// </summary>
- [DataField, ViewVariables(VVAccess.ReadWrite)]
- public Color Color = Color.White;
- [DataField, ViewVariables(VVAccess.ReadWrite)]
- public SoundSpecifier StartCuffSound = new SoundPathSpecifier("/Audio/Items/Handcuffs/cuff_start.ogg");
- [DataField, ViewVariables(VVAccess.ReadWrite)]
- public SoundSpecifier EndCuffSound = new SoundPathSpecifier("/Audio/Items/Handcuffs/cuff_end.ogg");
- [DataField, ViewVariables(VVAccess.ReadWrite)]
- public SoundSpecifier StartBreakoutSound = new SoundPathSpecifier("/Audio/Items/Handcuffs/cuff_breakout_start.ogg");
- [DataField, ViewVariables(VVAccess.ReadWrite)]
- public SoundSpecifier StartUncuffSound = new SoundPathSpecifier("/Audio/Items/Handcuffs/cuff_takeoff_start.ogg");
- [DataField, ViewVariables(VVAccess.ReadWrite)]
- public SoundSpecifier EndUncuffSound = new SoundPathSpecifier("/Audio/Items/Handcuffs/cuff_takeoff_end.ogg");
- }
- /// <summary>
- /// Event fired on the User when the User attempts to uncuff the Target.
- /// Should generate popups on the User.
- /// </summary>
- [ByRefEvent]
- public record struct UncuffAttemptEvent(EntityUid User, EntityUid Target)
- {
- public readonly EntityUid User = User;
- public readonly EntityUid Target = Target;
- public bool Cancelled = false;
- }
- /// <summary>
- /// Event raised on an entity being uncuffed to determine any modifiers to the amount of time it takes to uncuff them.
- /// </summary>
- [ByRefEvent]
- public record struct ModifyUncuffDurationEvent(EntityUid User, EntityUid Target, float Duration);
|