| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- using Robust.Shared.Audio;
- using Robust.Shared.GameStates;
- namespace Content.Shared.Prying.Components;
- [RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
- public sealed partial class PryingComponent : Component
- {
- /// <summary>
- /// Whether the entity can pry open powered doors
- /// </summary>
- [DataField, AutoNetworkedField]
- public bool PryPowered;
- /// <summary>
- /// Whether the tool can bypass certain restrictions when prying.
- /// For example door bolts.
- /// </summary>
- [DataField]
- public bool Force;
- /// <summary>
- /// Modifier on the prying time.
- /// Lower values result in more time.
- /// </summary>
- [DataField, AutoNetworkedField]
- public float SpeedModifier = 1.0f;
- /// <summary>
- /// What sound to play when prying is finished.
- /// </summary>
- [DataField]
- public SoundSpecifier UseSound = new SoundPathSpecifier("/Audio/Items/crowbar.ogg");
- /// <summary>
- /// Whether the entity can currently pry things.
- /// </summary>
- [DataField]
- public bool Enabled = true;
- }
- /// <summary>
- /// Raised directed on an entity before prying it.
- /// Cancel to stop the entity from being pried open.
- /// </summary>
- [ByRefEvent]
- public record struct BeforePryEvent(EntityUid User, bool PryPowered, bool Force, bool StrongPry)
- {
- public readonly EntityUid User = User;
- /// <summary>
- /// Whether prying should be allowed even if whatever is being pried is powered.
- /// </summary>
- public readonly bool PryPowered = PryPowered;
- /// <summary>
- /// Whether prying should be allowed to go through under most circumstances. (E.g. airlock is bolted).
- /// Systems may still wish to ignore this occasionally.
- /// </summary>
- public readonly bool Force = Force;
- /// <summary>
- /// Whether anything other than bare hands were used. This should only be false if prying is being performed without a prying comp.
- /// </summary>
- public readonly bool StrongPry = StrongPry;
- public string? Message;
- public bool Cancelled;
- }
- /// <summary>
- /// Raised directed on an entity that has been pried.
- /// </summary>
- [ByRefEvent]
- public readonly record struct PriedEvent(EntityUid User)
- {
- public readonly EntityUid User = User;
- }
- /// <summary>
- /// Raised to determine how long the door's pry time should be modified by.
- /// Multiply PryTimeModifier by the desired amount.
- /// </summary>
- [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;
- }
- }
|