using Robust.Shared.Audio; using Robust.Shared.GameStates; namespace Content.Shared.Prying.Components; [RegisterComponent, NetworkedComponent] public sealed partial class PryingComponent : Component { /// /// Whether the entity can pry open powered doors /// [DataField("pryPowered")] public bool PryPowered = false; /// /// Whether the tool can bypass certain restrictions when prying. /// For example door bolts. /// [DataField("force")] public bool Force = false; /// /// Modifier on the prying time. /// Lower values result in more time. /// [DataField("speedModifier")] public float SpeedModifier = 1.0f; /// /// What sound to play when prying is finished. /// [DataField("useSound")] public SoundSpecifier UseSound = new SoundPathSpecifier("/Audio/Items/crowbar.ogg"); /// /// Whether the entity can currently pry things. /// [DataField("enabled")] public bool Enabled = true; } /// /// Raised directed on an entity before prying it. /// Cancel to stop the entity from being pried open. /// [ByRefEvent] public record struct BeforePryEvent(EntityUid User, bool PryPowered, bool Force) { public readonly EntityUid User = User; public readonly bool PryPowered = PryPowered; public readonly bool Force = Force; public string? Message; public bool Cancelled; } /// /// Raised directed on an entity that has been pried. /// [ByRefEvent] public readonly record struct PriedEvent(EntityUid User) { public readonly EntityUid User = User; } /// /// Raised to determine how long the door's pry time should be modified by. /// Multiply PryTimeModifier by the desired amount. /// [ByRefEvent] public record struct GetPryTimeModifierEvent { public readonly EntityUid User; public float PryTimeModifier = 1.0f; public float BaseTime = 5.0f; public GetPryTimeModifierEvent(EntityUid user) { User = user; } }