Fixed Emag wiping door access without bolting open (#25836)

This commit is contained in:
exincore
2024-03-05 01:20:38 -06:00
committed by GitHub
parent 4b56996fcd
commit 68bb57bbaf

View File

@@ -81,6 +81,7 @@ public abstract partial class SharedDoorSystem : EntitySystem
SubscribeLocalEvent<DoorComponent, WeldableChangedEvent>(OnWeldChanged); SubscribeLocalEvent<DoorComponent, WeldableChangedEvent>(OnWeldChanged);
SubscribeLocalEvent<DoorComponent, GetPryTimeModifierEvent>(OnPryTimeModifier); SubscribeLocalEvent<DoorComponent, GetPryTimeModifierEvent>(OnPryTimeModifier);
SubscribeLocalEvent<DoorComponent, OnAttemptEmagEvent>(OnAttemptEmag);
SubscribeLocalEvent<DoorComponent, GotEmaggedEvent>(OnEmagged); SubscribeLocalEvent<DoorComponent, GotEmaggedEvent>(OnEmagged);
} }
@@ -120,23 +121,34 @@ public abstract partial class SharedDoorSystem : EntitySystem
_activeDoors.Remove(door); _activeDoors.Remove(door);
} }
private void OnEmagged(EntityUid uid, DoorComponent door, ref GotEmaggedEvent args) private void OnAttemptEmag(EntityUid uid, DoorComponent door, ref OnAttemptEmagEvent args)
{ {
if (!TryComp<AirlockComponent>(uid, out var airlock)) if (!TryComp<AirlockComponent>(uid, out var airlock))
{
args.Handled = true;
return; return;
}
if (IsBolted(uid) || !airlock.Powered) if (IsBolted(uid) || !airlock.Powered)
return;
if (door.State == DoorState.Closed)
{ {
if (!SetState(uid, DoorState.Emagging, door)) args.Handled = true;
return; return;
Audio.PlayPredicted(door.SparkSound, uid, args.UserUid, AudioParams.Default.WithVolume(8)); }
if (door.State != DoorState.Closed)
{
args.Handled = true; args.Handled = true;
} }
} }
private void OnEmagged(EntityUid uid, DoorComponent door, ref GotEmaggedEvent args)
{
if (!SetState(uid, DoorState.Emagging, door))
return;
Audio.PlayPredicted(door.SparkSound, uid, args.UserUid, AudioParams.Default.WithVolume(8));
args.Handled = true;
}
#region StateManagement #region StateManagement
private void OnHandleState(Entity<DoorComponent> ent, ref AfterAutoHandleStateEvent args) private void OnHandleState(Entity<DoorComponent> ent, ref AfterAutoHandleStateEvent args)
{ {