diff --git a/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml b/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml
index 5914f3b77..4da203057 100644
--- a/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml
+++ b/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml
@@ -249,7 +249,8 @@
-
+
+
diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Power/PowerTransfer.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Power/PowerTransfer.cs
index a85bf451a..575b0b4c8 100644
--- a/Barotrauma/BarotraumaShared/Source/Items/Components/Power/PowerTransfer.cs
+++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Power/PowerTransfer.cs
@@ -30,6 +30,12 @@ namespace Barotrauma.Items.Components
get { return powerLoad; }
}
+ //can the component transfer power
+ public virtual bool CanTransfer
+ {
+ get { return IsActive; }
+ }
+
public PowerTransfer(Item item, XElement element)
: base(item, element)
{
@@ -40,6 +46,8 @@ namespace Barotrauma.Items.Components
public override void Update(float deltaTime, Camera cam)
{
+ if (!CanTransfer) return;
+
if (updateTimer > 0)
{
//this junction box has already been updated this frame
@@ -135,6 +143,7 @@ namespace Barotrauma.Items.Components
PowerTransfer powerTransfer = powered as PowerTransfer;
if (powerTransfer != null)
{
+ if (!powerTransfer.CanTransfer) continue;
powerTransfer.CheckJunctions(deltaTime);
continue;
}
diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Signal/RelayComponent.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Signal/RelayComponent.cs
index 7af937a68..175169d02 100644
--- a/Barotrauma/BarotraumaShared/Source/Items/Components/Signal/RelayComponent.cs
+++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Signal/RelayComponent.cs
@@ -9,6 +9,8 @@ namespace Barotrauma.Items.Components
{
private float maxPower;
+ private bool isOn;
+
[Editable, HasDefaultValue(1000.0f, true)]
public float MaxPower
{
@@ -18,31 +20,36 @@ namespace Barotrauma.Items.Components
maxPower = Math.Max(0.0f, value);
}
}
-
- private bool isOn;
-
+
[Editable, HasDefaultValue(false, true)]
public bool IsOn
{
get
{
- return IsActive;
+ return isOn;
}
set
{
isOn = value;
- IsActive = value;
- if (!IsActive)
+ if (!isOn)
{
currPowerConsumption = 0.0f;
}
}
}
+ public override bool CanTransfer
+ {
+ get
+ {
+ return isOn;
+ }
+ }
+
public RelayComponent(Item item, XElement element)
: base (item, element)
{
- IsActive = isOn;
+ IsActive = true;
}
public override void Update(float deltaTime, Camera cam)