Added "VulnerableToEMP" property to Powered. Can be edited in sub editor. Reactors and relays are not affected by EMP by default. Closes #495

This commit is contained in:
Joonas Rikkonen
2018-07-18 15:07:21 +03:00
parent d6ec1bc339
commit 30a453191f
4 changed files with 14 additions and 10 deletions

View File

@@ -261,7 +261,7 @@
<Sprite texture="signalcomp.png" depth="0.8" sourcerect="48,16,16,16"/>
<RelayComponent canbeselected = "true">
<RelayComponent canbeselected="true" vulnerabletoemp="false">
<GuiFrame rect="0,0,200,160" alignment="Center" style="ItemUI"/>
</RelayComponent>

View File

@@ -21,7 +21,7 @@
<Sprite texture = "reactor.png" sourcerect="0,0,321,192" depth="0.8"/>
<Reactor canbeselected = "true">
<Reactor canbeselected="true" vulnerabletoemp="false">
<GuiFrame rect="0,0,760,460" alignment="Center" style="ItemUI"/>
<RequiredSkill name="Construction" level="30"/>
<StatusEffect type="InWater" target="This" Temperature="-500.0"/>

View File

@@ -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)
{

View File

@@ -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<Reactor>() != null) continue;
float distFactor = 1.0f - (float)Math.Sqrt(distSqr) / displayRange;
//damage repairable power-consuming items
var powerTransfer = item.GetComponent<Powered>();
if (powerTransfer != null && item.FixRequirements.Count > 0)
var powered = item.GetComponent<Powered>();
if (powered == null || !powered.VulnerableToEMP) continue;
if (item.FixRequirements.Count > 0)
{
item.Condition -= 100 * empStrength * distFactor;
}