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:
@@ -261,7 +261,7 @@
|
|||||||
|
|
||||||
<Sprite texture="signalcomp.png" depth="0.8" sourcerect="48,16,16,16"/>
|
<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"/>
|
<GuiFrame rect="0,0,200,160" alignment="Center" style="ItemUI"/>
|
||||||
</RelayComponent>
|
</RelayComponent>
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
<Sprite texture = "reactor.png" sourcerect="0,0,321,192" depth="0.8"/>
|
<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"/>
|
<GuiFrame rect="0,0,760,460" alignment="Center" style="ItemUI"/>
|
||||||
<RequiredSkill name="Construction" level="30"/>
|
<RequiredSkill name="Construction" level="30"/>
|
||||||
<StatusEffect type="InWater" target="This" Temperature="-500.0"/>
|
<StatusEffect type="InWater" target="This" Temperature="-500.0"/>
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ namespace Barotrauma.Items.Components
|
|||||||
set { powerConsumption = value; }
|
set { powerConsumption = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[Serialize(false, true)]
|
[Serialize(false, true)]
|
||||||
public override bool IsActive
|
public override bool IsActive
|
||||||
{
|
{
|
||||||
@@ -60,6 +59,13 @@ namespace Barotrauma.Items.Components
|
|||||||
set { voltage = Math.Max(0.0f, value); }
|
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)
|
public Powered(Item item, XElement element)
|
||||||
: base(item, element)
|
: base(item, element)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -79,14 +79,12 @@ namespace Barotrauma
|
|||||||
float distSqr = Vector2.DistanceSquared(item.WorldPosition, worldPosition);
|
float distSqr = Vector2.DistanceSquared(item.WorldPosition, worldPosition);
|
||||||
if (distSqr > displayRangeSqr) continue;
|
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;
|
float distFactor = 1.0f - (float)Math.Sqrt(distSqr) / displayRange;
|
||||||
|
|
||||||
//damage repairable power-consuming items
|
//damage repairable power-consuming items
|
||||||
var powerTransfer = item.GetComponent<Powered>();
|
var powered = item.GetComponent<Powered>();
|
||||||
if (powerTransfer != null && item.FixRequirements.Count > 0)
|
if (powered == null || !powered.VulnerableToEMP) continue;
|
||||||
|
if (item.FixRequirements.Count > 0)
|
||||||
{
|
{
|
||||||
item.Condition -= 100 * empStrength * distFactor;
|
item.Condition -= 100 * empStrength * distFactor;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user