SubscribeLocalEvent<DoorComponent, WeldableChangedEvent>(OnWeldChanged);
SubscribeLocalEvent<DoorComponent, GetPryTimeModifierEvent>(OnPryTimeModifier);
+ SubscribeLocalEvent<DoorComponent, OnAttemptEmagEvent>(OnAttemptEmag);
SubscribeLocalEvent<DoorComponent, GotEmaggedEvent>(OnEmagged);
}
_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))
+ {
+ args.Handled = true;
return;
+ }
if (IsBolted(uid) || !airlock.Powered)
+ {
+ args.Handled = true;
return;
+ }
- if (door.State == DoorState.Closed)
+ if (door.State != DoorState.Closed)
{
- if (!SetState(uid, DoorState.Emagging, door))
- return;
- Audio.PlayPredicted(door.SparkSound, uid, args.UserUid, AudioParams.Default.WithVolume(8));
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
private void OnHandleState(Entity<DoorComponent> ent, ref AfterAutoHandleStateEvent args)
{