Skip to content

Commit

Permalink
Restrict door remotes to only being able to manipulate doors relevant…
Browse files Browse the repository at this point in the history
… to their type (#26371)

Restrict door remotes to only being able to manipulate doors relevant to
their type.
  • Loading branch information
nikthechampiongr authored Mar 24, 2024
1 parent 141e4e4 commit 93e3aed
Showing 1 changed file with 3 additions and 8 deletions.
11 changes: 3 additions & 8 deletions Content.Server/Remotes/DoorRemoteSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,8 @@ private void OnBeforeInteract(Entity<DoorRemoteComponent> entity, ref BeforeRang
return;
}

// Holding the door remote grants you access to the relevant doors IN ADDITION to what ever access you had.
// This access is enforced in _doorSystem.HasAccess when it calls _accessReaderSystem.IsAllowed
if (TryComp<AccessReaderComponent>(args.Target, out var accessComponent)
&& !_doorSystem.HasAccess(args.Target.Value, args.User, doorComp, accessComponent))
&& !_doorSystem.HasAccess(args.Target.Value, args.Used, doorComp, accessComponent))
{
_doorSystem.Deny(args.Target.Value, doorComp, args.User);
Popup.PopupEntity(Loc.GetString("door-remote-denied"), args.User, args.User);
Expand All @@ -60,18 +58,15 @@ private void OnBeforeInteract(Entity<DoorRemoteComponent> entity, ref BeforeRang
switch (entity.Comp.Mode)
{
case OperatingMode.OpenClose:
// Note we provide args.User here to TryToggleDoor as the "user"
// This means that the door will look at all access items carryed by the player for access, including
// this remote, but also including anything else they are carrying such as a PDA or ID card.
if (_doorSystem.TryToggleDoor(args.Target.Value, doorComp, args.User))
if (_doorSystem.TryToggleDoor(args.Target.Value, doorComp, args.Used))
_adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(args.User):player} used {ToPrettyString(args.Used)} on {ToPrettyString(args.Target.Value)}: {doorComp.State}");
break;
case OperatingMode.ToggleBolts:
if (TryComp<DoorBoltComponent>(args.Target, out var boltsComp))
{
if (!boltsComp.BoltWireCut)
{
_doorSystem.SetBoltsDown((args.Target.Value, boltsComp), !boltsComp.BoltsDown, args.User);
_doorSystem.SetBoltsDown((args.Target.Value, boltsComp), !boltsComp.BoltsDown, args.Used);
_adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(args.User):player} used {ToPrettyString(args.Used)} on {ToPrettyString(args.Target.Value)} to {(boltsComp.BoltsDown ? "" : "un")}bolt it");
}
}
Expand Down

0 comments on commit 93e3aed

Please sign in to comment.