ChemCleanBloodstream.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using Content.Server.Body.Systems;
  2. using Content.Shared.EntityEffects;
  3. using JetBrains.Annotations;
  4. using Robust.Shared.Prototypes;
  5. namespace Content.Server.EntityEffects.Effects;
  6. /// <summary>
  7. /// Basically smoke and foam reactions.
  8. /// </summary>
  9. [UsedImplicitly]
  10. public sealed partial class ChemCleanBloodstream : EntityEffect
  11. {
  12. [DataField]
  13. public float CleanseRate = 3.0f;
  14. protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
  15. => Loc.GetString("reagent-effect-guidebook-chem-clean-bloodstream", ("chance", Probability));
  16. public override void Effect(EntityEffectBaseArgs args)
  17. {
  18. var cleanseRate = CleanseRate;
  19. var bloodstreamSys = args.EntityManager.System<BloodstreamSystem>();
  20. if (args is EntityEffectReagentArgs reagentArgs)
  21. {
  22. if (reagentArgs.Source == null || reagentArgs.Reagent == null)
  23. return;
  24. cleanseRate *= reagentArgs.Scale.Float();
  25. bloodstreamSys.FlushChemicals(args.TargetEntity, reagentArgs.Reagent.ID, cleanseRate);
  26. }
  27. else
  28. {
  29. bloodstreamSys.FlushChemicals(args.TargetEntity, "", cleanseRate);
  30. }
  31. }
  32. }