* Fix firelock prediction issues with periodic pulses of closing lights For some reason this function was setting a time for the next state which was triggering the door system to try to close the firelock. This does not happen serverside because the function only fires from an event called clientside apparently. It appears to be an attempt to stop firelocks from closing instantly that did not function properly, and I cannot discern any other purpose. As such I have removed it. * Remove redundant serverside check This became redundant with commit 439a87f2
86 lines
3.1 KiB
C#
86 lines
3.1 KiB
C#
using Robust.Shared.GameStates;
|
|
|
|
namespace Content.Shared.Doors.Components
|
|
{
|
|
/// <summary>
|
|
/// Companion component to <see cref="DoorComponent"/> that handles firelock-specific behavior, including
|
|
/// auto-closing on depressurization, air/fire alarm interactions, and preventing normal door functions when
|
|
/// retaining pressure..
|
|
/// </summary>
|
|
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
|
|
public sealed partial class FirelockComponent : Component
|
|
{
|
|
#region Settings
|
|
|
|
/// <summary>
|
|
/// Pry time modifier to be used when the firelock is currently closed due to fire or pressure.
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[DataField("lockedPryTimeModifier"), ViewVariables(VVAccess.ReadWrite)]
|
|
public float LockedPryTimeModifier = 1.5f;
|
|
|
|
/// <summary>
|
|
/// Maximum pressure difference before the firelock will refuse to open, in kPa.
|
|
/// </summary>
|
|
[DataField("pressureThreshold"), ViewVariables(VVAccess.ReadWrite)]
|
|
public float PressureThreshold = 20;
|
|
|
|
/// <summary>
|
|
/// Maximum temperature difference before the firelock will refuse to open, in k.
|
|
/// </summary>
|
|
[DataField("temperatureThreshold"), ViewVariables(VVAccess.ReadWrite)]
|
|
public float TemperatureThreshold = 330;
|
|
// this used to check for hot-spots, but because accessing that data is a a mess this now just checks
|
|
// temperature. This does mean a cold room will trigger hot-air pop-ups
|
|
|
|
/// <summary>
|
|
/// If true, and if this door has an <see cref="AtmosAlarmableComponent"/>, then it will only auto-close if the
|
|
/// alarm is set to danger.
|
|
/// </summary>
|
|
[DataField("alarmAutoClose"), ViewVariables(VVAccess.ReadWrite)]
|
|
public bool AlarmAutoClose = true;
|
|
|
|
/// <summary>
|
|
/// The cooldown duration before a firelock can automatically close due to a hazardous environment after it has
|
|
/// been pried open. Measured in seconds.
|
|
/// </summary>
|
|
[DataField]
|
|
public TimeSpan EmergencyCloseCooldownDuration = TimeSpan.FromSeconds(2);
|
|
|
|
#endregion
|
|
|
|
#region Set by system
|
|
|
|
/// <summary>
|
|
/// When the firelock will be allowed to automatically close again due to a hazardous environment.
|
|
/// </summary>
|
|
[DataField]
|
|
public TimeSpan? EmergencyCloseCooldown;
|
|
|
|
/// <summary>
|
|
/// Whether the firelock can open, or is locked due to its environment.
|
|
/// </summary>
|
|
public bool IsLocked => Pressure || Temperature;
|
|
|
|
/// <summary>
|
|
/// Whether the firelock is holding back a hazardous pressure.
|
|
/// </summary>
|
|
[DataField, AutoNetworkedField]
|
|
public bool Pressure;
|
|
|
|
/// <summary>
|
|
/// Whether the firelock is holding back extreme temperatures.
|
|
/// </summary>
|
|
[DataField, AutoNetworkedField]
|
|
public bool Temperature;
|
|
|
|
/// <summary>
|
|
/// Whether the airlock is powered.
|
|
/// </summary>
|
|
[DataField, AutoNetworkedField]
|
|
public bool Powered;
|
|
|
|
#endregion
|
|
}
|
|
}
|