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
|
*[other] cause
|
||||||
} an explosion
|
} an explosion
|
||||||
|
|
||||||
|
reagent-effect-guidebook-emp-reaction-effect =
|
||||||
|
{ $chance ->
|
||||||
|
[1] Causes
|
||||||
|
*[other] cause
|
||||||
|
} an electromagnetic pulse
|
||||||
|
|
||||||
reagent-effect-guidebook-foam-area-reaction-effect =
|
reagent-effect-guidebook-foam-area-reaction-effect =
|
||||||
{ $chance ->
|
{ $chance ->
|
||||||
[1] Creates
|
[1] Creates
|
||||||
|
|||||||
@@ -177,6 +177,24 @@
|
|||||||
sound:
|
sound:
|
||||||
path: /Audio/Effects/extinguish.ogg
|
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
|
- type: reaction
|
||||||
id: TableSalt
|
id: TableSalt
|
||||||
reactants:
|
reactants:
|
||||||
|
|||||||
Reference in New Issue
Block a user