From 30a453191f79c7ad3f91c9d8db1416ac17ddb90b Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Wed, 18 Jul 2018 15:07:21 +0300 Subject: [PATCH] Added "VulnerableToEMP" property to Powered. Can be edited in sub editor. Reactors and relays are not affected by EMP by default. Closes #495 --- .../Content/Items/Electricity/signalitems.xml | 2 +- .../BarotraumaShared/Content/Items/Reactor/reactor.xml | 2 +- .../Source/Items/Components/Power/Powered.cs | 10 ++++++++-- Barotrauma/BarotraumaShared/Source/Map/Explosion.cs | 10 ++++------ 4 files changed, 14 insertions(+), 10 deletions(-) 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; }