ExtinguishReaction.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using Content.Server.Atmos.Components;
  2. using Content.Server.Atmos.EntitySystems;
  3. using Content.Shared.EntityEffects;
  4. using JetBrains.Annotations;
  5. using Robust.Shared.Prototypes;
  6. namespace Content.Server.EntityEffects.Effects
  7. {
  8. [UsedImplicitly]
  9. public sealed partial class ExtinguishReaction : EntityEffect
  10. {
  11. /// <summary>
  12. /// Amount of firestacks reduced.
  13. /// </summary>
  14. [DataField]
  15. public float FireStacksAdjustment = -1.5f;
  16. protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
  17. => Loc.GetString("reagent-effect-guidebook-extinguish-reaction", ("chance", Probability));
  18. public override void Effect(EntityEffectBaseArgs args)
  19. {
  20. if (!args.EntityManager.TryGetComponent(args.TargetEntity, out FlammableComponent? flammable)) return;
  21. var flammableSystem = args.EntityManager.System<FlammableSystem>();
  22. flammableSystem.Extinguish(args.TargetEntity, flammable);
  23. if (args is EntityEffectReagentArgs reagentArgs)
  24. {
  25. flammableSystem.AdjustFireStacks(reagentArgs.TargetEntity, FireStacksAdjustment * (float) reagentArgs.Quantity, flammable);
  26. } else
  27. {
  28. flammableSystem.AdjustFireStacks(args.TargetEntity, FireStacksAdjustment, flammable);
  29. }
  30. }
  31. }
  32. }