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.
This commit is contained in:
nikthechampiongr
2024-03-24 02:48:16 +02:00
committed by GitHub
parent 141e4e4da4
commit 93e3aed26e

View File

@@ -47,10 +47,8 @@ namespace Content.Shared.Remotes
return; 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) 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); _doorSystem.Deny(args.Target.Value, doorComp, args.User);
Popup.PopupEntity(Loc.GetString("door-remote-denied"), args.User, args.User); Popup.PopupEntity(Loc.GetString("door-remote-denied"), args.User, args.User);
@@ -60,10 +58,7 @@ namespace Content.Shared.Remotes
switch (entity.Comp.Mode) switch (entity.Comp.Mode)
{ {
case OperatingMode.OpenClose: case OperatingMode.OpenClose:
// Note we provide args.User here to TryToggleDoor as the "user" if (_doorSystem.TryToggleDoor(args.Target.Value, doorComp, args.Used))
// 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))
_adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(args.User):player} used {ToPrettyString(args.Used)} on {ToPrettyString(args.Target.Value)}: {doorComp.State}"); _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(args.User):player} used {ToPrettyString(args.Used)} on {ToPrettyString(args.Target.Value)}: {doorComp.State}");
break; break;
case OperatingMode.ToggleBolts: case OperatingMode.ToggleBolts:
@@ -71,7 +66,7 @@ namespace Content.Shared.Remotes
{ {
if (!boltsComp.BoltWireCut) 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"); _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");
} }
} }