Add EmpReactionEffect (#18248)

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
This commit is contained in:
mhamster
2023-08-05 11:31:14 +07:00
committed by GitHub
parent f8a48319a6
commit 7b3f2cd0d4
3 changed files with 73 additions and 0 deletions

View File

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

View File

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

View File

@@ -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: