Fixed Emag wiping door access without bolting open (#25836)
This commit is contained in:
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user