using Content.Server.Emp; using Content.Shared.Chemistry.Reagent; using Robust.Shared.Prototypes; namespace Content.Server.Chemistry.ReactionEffects; [DataDefinition] public sealed partial class EmpReactionEffect : ReagentEffect { /// /// Impulse range per unit of reagent /// [DataField("rangePerUnit")] public float EmpRangePerUnit = 0.5f; /// /// Maximum impulse range /// [DataField("maxRange")] public float EmpMaxRange = 10; /// /// How much energy will be drain from sources /// [DataField] public float EnergyConsumption = 12500; /// /// Amount of time entities will be disabled /// [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(args.SolutionEntity); var range = MathF.Min((float) (args.Quantity*EmpRangePerUnit), EmpMaxRange); args.EntityManager.System().EmpPulse( transform.MapPosition, range, EnergyConsumption, DisableDuration); } }