From 93e3aed26e30375058aa44482236410ff31484f0 Mon Sep 17 00:00:00 2001 From: nikthechampiongr <32041239+nikthechampiongr@users.noreply.github.com> Date: Sun, 24 Mar 2024 02:48:16 +0200 Subject: [PATCH] Restrict door remotes to only being able to manipulate doors relevant to their type (#26371) Restrict door remotes to only being able to manipulate doors relevant to their type. --- Content.Server/Remotes/DoorRemoteSystem.cs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/Content.Server/Remotes/DoorRemoteSystem.cs b/Content.Server/Remotes/DoorRemoteSystem.cs index 57ca0988d945..67160650871d 100644 --- a/Content.Server/Remotes/DoorRemoteSystem.cs +++ b/Content.Server/Remotes/DoorRemoteSystem.cs @@ -47,10 +47,8 @@ private void OnBeforeInteract(Entity 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(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); @@ -60,10 +58,7 @@ private void OnBeforeInteract(Entity 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: @@ -71,7 +66,7 @@ private void OnBeforeInteract(Entity entity, ref BeforeRang { 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"); } }