Make Airlock hacking shut power to the entire PowerDevice.

This makes the power device report as "not powered" in the examine tooltip.
This commit is contained in:
Pieter-Jan Briers
2019-10-13 18:29:57 +02:00
parent bd3fe8f86b
commit d113a738de
2 changed files with 24 additions and 12 deletions

View File

@@ -48,13 +48,14 @@ namespace Content.Server.GameObjects.Components.Doors
{ {
_powerWiresPulsed = value; _powerWiresPulsed = value;
UpdateWiresStatus(); UpdateWiresStatus();
UpdatePowerCutStatus();
} }
} }
private void UpdateWiresStatus() private void UpdateWiresStatus()
{ {
var powerMessage = "A yellow light is on."; var powerMessage = "A yellow light is on.";
if (_powerWiresPulsed) if (PowerWiresPulsed)
{ {
powerMessage = "A yellow light is blinking rapidly."; powerMessage = "A yellow light is blinking rapidly.";
} else if (_wires.IsWireCut(Wires.MainPower) && } else if (_wires.IsWireCut(Wires.MainPower) &&
@@ -65,6 +66,13 @@ namespace Content.Server.GameObjects.Components.Doors
_wires.SetStatus(WiresStatus.PowerIndicator, _localizationMgr.GetString(powerMessage)); _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 protected override DoorState State
{ {
set set
@@ -163,6 +171,7 @@ namespace Content.Server.GameObjects.Components.Doors
} }
UpdateWiresStatus(); UpdateWiresStatus();
UpdatePowerCutStatus();
} }
public override bool CanOpen() public override bool CanOpen()
@@ -186,15 +195,6 @@ namespace Content.Server.GameObjects.Components.Doors
private bool IsPowered() private bool IsPowered()
{ {
if (PowerWiresPulsed)
{
return false;
}
if (_wires.IsWireCut(Wires.MainPower) &&
_wires.IsWireCut(Wires.BackupPower))
{
return false;
}
return _powerDevice.Powered; return _powerDevice.Powered;
} }

View File

@@ -76,7 +76,7 @@ namespace Content.Server.GameObjects.Components.Power
/// Is an internal power source currently available? /// Is an internal power source currently available?
/// </summary> /// </summary>
[ViewVariables] [ViewVariables]
public bool InternalPowered protected bool InternalPowered
{ {
get => _internalPowered; get => _internalPowered;
set set
@@ -98,6 +98,17 @@ namespace Content.Server.GameObjects.Components.Power
} }
private Powernet.Priority _priority = Powernet.Priority.Medium; 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 private float _load = 100; //arbitrary magic number to start
/// <summary> /// <summary>
/// Power load from this entity. /// Power load from this entity.
@@ -117,6 +128,7 @@ namespace Content.Server.GameObjects.Components.Power
private PowerProviderComponent _provider; private PowerProviderComponent _provider;
private bool _isPowerCut;
/// <summary> /// <summary>
/// A power provider that will handle our load, if we are linked to any /// 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() private void UpdatePowered()
{ {
var oldPowered = Powered; var oldPowered = Powered;
Powered = ExternalPowered || InternalPowered; Powered = !IsPowerCut && (ExternalPowered || InternalPowered);
if (oldPowered != Powered) if (oldPowered != Powered)
{ {
if (Powered) if (Powered)