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; }