diff --git a/Content.Shared/Trigger/Components/Effects/LockOnTriggerComponent.cs b/Content.Shared/Trigger/Components/Effects/LockOnTriggerComponent.cs
index 38eea0a461..6dbec86c5d 100644
--- a/Content.Shared/Trigger/Components/Effects/LockOnTriggerComponent.cs
+++ b/Content.Shared/Trigger/Components/Effects/LockOnTriggerComponent.cs
@@ -1,19 +1,27 @@
+using Content.Shared.Lock;
using Robust.Shared.GameStates;
using Robust.Shared.Serialization;
namespace Content.Shared.Trigger.Components.Effects;
+///
+/// Will lock, unlock or toggle an entity with the .
+/// If TargetUser is true then they will be (un)locked instead.
+///
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class LockOnTriggerComponent : BaseXOnTriggerComponent
{
+ ///
+ /// If the trigger will lock, unlock or toggle the lock.
+ ///
[DataField, AutoNetworkedField]
- public LockAction LockOnTrigger = LockAction.Toggle;
+ public LockAction LockMode = LockAction.Toggle;
}
[Serializable, NetSerializable]
public enum LockAction
{
- Lock = 0,
+ Lock = 0,
Unlock = 1,
Toggle = 2,
}
diff --git a/Content.Shared/Trigger/Systems/LockOnTriggerSystem.cs b/Content.Shared/Trigger/Systems/LockOnTriggerSystem.cs
index 8726ede899..2056d5fe51 100644
--- a/Content.Shared/Trigger/Systems/LockOnTriggerSystem.cs
+++ b/Content.Shared/Trigger/Systems/LockOnTriggerSystem.cs
@@ -19,16 +19,21 @@ public sealed class LockOnTriggerSystem : EntitySystem
if (args.Key != null && !ent.Comp.KeysIn.Contains(args.Key))
return;
- switch (ent.Comp.LockOnTrigger)
+ var target = ent.Comp.TargetUser ? args.User : ent.Owner;
+
+ if (!TryComp(target, out var lockComp))
+ return; // prevent the Resolve in Lock/Unlock/ToggleLock from logging errors in case the user does not have the component
+
+ switch (ent.Comp.LockMode)
{
case LockAction.Lock:
- _lock.Lock(ent.Owner, args.User);
+ _lock.Lock(target.Value, args.User, lockComp);
break;
case LockAction.Unlock:
- _lock.Unlock(ent, args.User);
+ _lock.Unlock(target.Value, args.User, lockComp);
break;
case LockAction.Toggle:
- _lock.ToggleLock(ent, args.User);
+ _lock.ToggleLock(target.Value, args.User, lockComp);
break;
}
}