diff --git a/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml b/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml
index 0c01875bd..58f1a40c6 100644
--- a/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml
+++ b/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml
@@ -261,7 +261,7 @@
-
+
diff --git a/Barotrauma/BarotraumaShared/Content/Items/Reactor/reactor.xml b/Barotrauma/BarotraumaShared/Content/Items/Reactor/reactor.xml
index 840b56a18..eb7db5017 100644
--- a/Barotrauma/BarotraumaShared/Content/Items/Reactor/reactor.xml
+++ b/Barotrauma/BarotraumaShared/Content/Items/Reactor/reactor.xml
@@ -21,7 +21,7 @@
-
+
diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Power/Powered.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Power/Powered.cs
index d56c18ff2..02924fb61 100644
--- a/Barotrauma/BarotraumaShared/Source/Items/Components/Power/Powered.cs
+++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Power/Powered.cs
@@ -33,8 +33,7 @@ namespace Barotrauma.Items.Components
get { return powerConsumption; }
set { powerConsumption = value; }
}
-
-
+
[Serialize(false, true)]
public override bool IsActive
{
@@ -60,6 +59,13 @@ namespace Barotrauma.Items.Components
set { voltage = Math.Max(0.0f, value); }
}
+ [Editable(ToolTip = "Can the item be damaged by electomagnetic pulses."), Serialize(true, true)]
+ public bool VulnerableToEMP
+ {
+ get;
+ set;
+ }
+
public Powered(Item item, XElement element)
: base(item, element)
{
diff --git a/Barotrauma/BarotraumaShared/Source/Map/Explosion.cs b/Barotrauma/BarotraumaShared/Source/Map/Explosion.cs
index a11ce2b95..121fe5417 100644
--- a/Barotrauma/BarotraumaShared/Source/Map/Explosion.cs
+++ b/Barotrauma/BarotraumaShared/Source/Map/Explosion.cs
@@ -78,15 +78,13 @@ namespace Barotrauma
{
float distSqr = Vector2.DistanceSquared(item.WorldPosition, worldPosition);
if (distSqr > displayRangeSqr) continue;
-
- //ignore reactors (don't want to blow them up)
- if (item.GetComponent() != null) continue;
-
+
float distFactor = 1.0f - (float)Math.Sqrt(distSqr) / displayRange;
//damage repairable power-consuming items
- var powerTransfer = item.GetComponent();
- if (powerTransfer != null && item.FixRequirements.Count > 0)
+ var powered = item.GetComponent();
+ if (powered == null || !powered.VulnerableToEMP) continue;
+ if (item.FixRequirements.Count > 0)
{
item.Condition -= 100 * empStrength * distFactor;
}