using Content.Shared.Stunnable; using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects; public sealed partial class Paralyze : EntityEffect { [DataField] public double ParalyzeTime = 2; /// /// true - refresh paralyze time, false - accumulate paralyze time /// [DataField] public bool Refresh = true; protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) => Loc.GetString( "reagent-effect-guidebook-paralyze", ("chance", Probability), ("time", ParalyzeTime) ); public override void Effect(EntityEffectBaseArgs args) { var paralyzeTime = ParalyzeTime; if (args is EntityEffectReagentArgs reagentArgs) { paralyzeTime *= (double)reagentArgs.Scale; } var stunSystem = args.EntityManager.System(); _ = Refresh ? stunSystem.TryUpdateParalyzeDuration(args.TargetEntity, TimeSpan.FromSeconds(paralyzeTime)) : stunSystem.TryAddParalyzeDuration(args.TargetEntity, TimeSpan.FromSeconds(paralyzeTime)); } }