diff --git a/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs b/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs index 6542f44207..b3c4cede7d 100644 --- a/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs +++ b/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs @@ -48,13 +48,14 @@ namespace Content.Server.GameObjects.Components.Doors { _powerWiresPulsed = value; UpdateWiresStatus(); + UpdatePowerCutStatus(); } } private void UpdateWiresStatus() { var powerMessage = "A yellow light is on."; - if (_powerWiresPulsed) + if (PowerWiresPulsed) { powerMessage = "A yellow light is blinking rapidly."; } else if (_wires.IsWireCut(Wires.MainPower) && @@ -65,6 +66,13 @@ namespace Content.Server.GameObjects.Components.Doors _wires.SetStatus(WiresStatus.PowerIndicator, _localizationMgr.GetString(powerMessage)); } + private void UpdatePowerCutStatus() + { + _powerDevice.IsPowerCut = PowerWiresPulsed || + _wires.IsWireCut(Wires.MainPower) || + _wires.IsWireCut(Wires.BackupPower); + } + protected override DoorState State { set @@ -163,6 +171,7 @@ namespace Content.Server.GameObjects.Components.Doors } UpdateWiresStatus(); + UpdatePowerCutStatus(); } public override bool CanOpen() @@ -186,15 +195,6 @@ namespace Content.Server.GameObjects.Components.Doors private bool IsPowered() { - if (PowerWiresPulsed) - { - return false; - } - if (_wires.IsWireCut(Wires.MainPower) && - _wires.IsWireCut(Wires.BackupPower)) - { - return false; - } return _powerDevice.Powered; } diff --git a/Content.Server/GameObjects/Components/Power/PowerDevice.cs b/Content.Server/GameObjects/Components/Power/PowerDevice.cs index fa13d16d74..102ef20924 100644 --- a/Content.Server/GameObjects/Components/Power/PowerDevice.cs +++ b/Content.Server/GameObjects/Components/Power/PowerDevice.cs @@ -76,7 +76,7 @@ namespace Content.Server.GameObjects.Components.Power /// Is an internal power source currently available? /// [ViewVariables] - public bool InternalPowered + protected bool InternalPowered { get => _internalPowered; set @@ -98,6 +98,17 @@ namespace Content.Server.GameObjects.Components.Power } private Powernet.Priority _priority = Powernet.Priority.Medium; + [ViewVariables] + public bool IsPowerCut + { + get => _isPowerCut; + set + { + _isPowerCut = value; + UpdatePowered(); + } + } + private float _load = 100; //arbitrary magic number to start /// /// Power load from this entity. @@ -117,6 +128,7 @@ namespace Content.Server.GameObjects.Components.Power private PowerProviderComponent _provider; + private bool _isPowerCut; /// /// A power provider that will handle our load, if we are linked to any @@ -239,7 +251,7 @@ namespace Content.Server.GameObjects.Components.Power private void UpdatePowered() { var oldPowered = Powered; - Powered = ExternalPowered || InternalPowered; + Powered = !IsPowerCut && (ExternalPowered || InternalPowered); if (oldPowered != Powered) { if (Powered)