Add EmpReactionEffect (#18248)
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
using Content.Server.Emp;
|
||||
using Content.Shared.Chemistry.Reagent;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server.Chemistry.ReactionEffects;
|
||||
|
||||
|
||||
[DataDefinition]
|
||||
public sealed class EmpReactionEffect : ReagentEffect
|
||||
{
|
||||
/// <summary>
|
||||
/// Impulse range per unit of reagent
|
||||
/// </summary>
|
||||
[DataField("rangePerUnit")]
|
||||
public float EmpRangePerUnit = 0.5f;
|
||||
|
||||
/// <summary>
|
||||
/// Maximum impulse range
|
||||
/// </summary>
|
||||
[DataField("maxRange")]
|
||||
public float EmpMaxRange = 10;
|
||||
|
||||
/// <summary>
|
||||
/// How much energy will be drain from sources
|
||||
/// </summary>
|
||||
[DataField("energyConsumption")]
|
||||
public float EnergyConsumption = 12500;
|
||||
|
||||
/// <summary>
|
||||
/// Amount of time entities will be disabled
|
||||
/// </summary>
|
||||
[DataField("duration")]
|
||||
public float DisableDuration = 15;
|
||||
|
||||
protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
|
||||
=> Loc.GetString("reagent-effect-guidebook-emp-reaction-effect", ("chance", Probability));
|
||||
|
||||
public override void Effect(ReagentEffectArgs args)
|
||||
{
|
||||
var transform = args.EntityManager.GetComponent<TransformComponent>(args.SolutionEntity);
|
||||
var range = MathF.Min((float) (args.Quantity*EmpRangePerUnit), EmpMaxRange);
|
||||
|
||||
args.EntityManager.System<EmpSystem>().EmpPulse(
|
||||
transform.MapPosition,
|
||||
range,
|
||||
EnergyConsumption,
|
||||
DisableDuration);
|
||||
}
|
||||
}
|
||||
@@ -31,6 +31,12 @@ reagent-effect-guidebook-explosion-reaction-effect =
|
||||
*[other] cause
|
||||
} an explosion
|
||||
|
||||
reagent-effect-guidebook-emp-reaction-effect =
|
||||
{ $chance ->
|
||||
[1] Causes
|
||||
*[other] cause
|
||||
} an electromagnetic pulse
|
||||
|
||||
reagent-effect-guidebook-foam-area-reaction-effect =
|
||||
{ $chance ->
|
||||
[1] Creates
|
||||
|
||||
@@ -177,6 +177,24 @@
|
||||
sound:
|
||||
path: /Audio/Effects/extinguish.ogg
|
||||
|
||||
- type: reaction
|
||||
id: UraniumEmpExplosion
|
||||
impact: High
|
||||
priority: 20
|
||||
reactants:
|
||||
Iron:
|
||||
amount: 1
|
||||
Uranium:
|
||||
amount: 1
|
||||
Aluminium:
|
||||
amount: 1
|
||||
effects:
|
||||
- !type:EmpReactionEffect
|
||||
rangePerUnit: 0.2
|
||||
maxRange: 6
|
||||
energyConsumption: 12500
|
||||
duration: 15
|
||||
|
||||
- type: reaction
|
||||
id: TableSalt
|
||||
reactants:
|
||||
|
||||
Reference in New Issue
Block a user