forked from space-syndicate/space-station-14
-
Notifications
You must be signed in to change notification settings - Fork 70
/
Copy pathPryingComponent.cs
97 lines (82 loc) · 2.61 KB
/
PryingComponent.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
namespace Content.Shared.Prying.Components;
[RegisterComponent, NetworkedComponent]
public sealed partial class PryingComponent : Component
{
/// <summary>
/// Whether the entity can pry open powered doors
/// </summary>
[DataField]
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]
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 float Neglect = 5f; // CORVAX-NEXT
public GetPryTimeModifierEvent(EntityUid user)
{
User = user;
}
}