private void OnDoorAutoCloseCheck(EntityUid uid, AirlockComponent component, BeforeDoorAutoCloseEvent args)
 {
     if (!component.AutoClose)
     {
         args.Cancel();
     }
 }
예제 #2
0
        /// <summary>
        /// Updates the auto close timer.
        /// </summary>
        public void UpdateAutoClose(EntityUid uid, AirlockComponent?airlock = null, DoorComponent?door = null)
        {
            if (!Resolve(uid, ref airlock, ref door))
            {
                return;
            }

            if (door.State != DoorState.Open)
            {
                return;
            }

            if (!airlock.CanChangeState())
            {
                return;
            }

            var autoev = new BeforeDoorAutoCloseEvent();

            RaiseLocalEvent(uid, autoev, false);
            if (autoev.Cancelled)
            {
                return;
            }

            DoorSystem.SetNextStateChange(uid, airlock.AutoCloseDelay * airlock.AutoCloseDelayModifier);
        }
 private void OnAutoClose(EntityUid uid, DockingComponent component, BeforeDoorAutoCloseEvent args)
 {
     // We'll just pin the door open when docked.
     if (component.Docked)
     {
         args.Cancel();
     }
 }
예제 #4
0
 private void OnBeforeDoorAutoclose(EntityUid uid, FirelockComponent component, BeforeDoorAutoCloseEvent args)
 {
     // Make firelocks autoclose, but only if the last alarm type it
     // remembers was a danger. This is to prevent people from
     // flooding hallways with endless bad air/fire.
     if (!EntityManager.TryGetComponent(uid, out AtmosAlarmableComponent? alarmable))
     {
         args.Cancel();
         return;
     }
     if (alarmable.HighestNetworkState != AtmosMonitorAlarmType.Danger)
     {
         args.Cancel();
     }
 }
예제 #5
0
 private void OnBeforeDoorAutoclose(EntityUid uid, FirelockComponent component, BeforeDoorAutoCloseEvent args)
 {
     // Firelocks can't autoclose, they must be manually closed
     args.Cancel();
 }