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:
@@ -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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user