1
0

Paralyze.cs 1.0 KB

123456789101112131415161718192021222324252627282930313233
  1. using Content.Server.Stunnable;
  2. using Content.Shared.EntityEffects;
  3. using Robust.Shared.Prototypes;
  4. namespace Content.Server.EntityEffects.Effects;
  5. public sealed partial class Paralyze : EntityEffect
  6. {
  7. [DataField] public double ParalyzeTime = 2;
  8. /// <remarks>
  9. /// true - refresh paralyze time, false - accumulate paralyze time
  10. /// </remarks>
  11. [DataField] public bool Refresh = true;
  12. protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
  13. => Loc.GetString("reagent-effect-guidebook-paralyze",
  14. ("chance", Probability),
  15. ("time", ParalyzeTime));
  16. public override void Effect(EntityEffectBaseArgs args)
  17. {
  18. var paralyzeTime = ParalyzeTime;
  19. if (args is EntityEffectReagentArgs reagentArgs)
  20. {
  21. paralyzeTime *= (double)reagentArgs.Scale;
  22. }
  23. args.EntityManager.System<StunSystem>().TryParalyze(args.TargetEntity, TimeSpan.FromSeconds(paralyzeTime), Refresh);
  24. }
  25. }