Ignite.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using Content.Server.Atmos.Components;
  2. using Content.Server.Atmos.EntitySystems;
  3. using Content.Shared.Database;
  4. using Content.Shared.EntityEffects;
  5. using Robust.Shared.Prototypes;
  6. namespace Content.Server.EntityEffects.Effects;
  7. /// <summary>
  8. /// Ignites a mob.
  9. /// </summary>
  10. public sealed partial class Ignite : EntityEffect
  11. {
  12. public override bool ShouldLog => true;
  13. protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
  14. => Loc.GetString("reagent-effect-guidebook-ignite", ("chance", Probability));
  15. public override LogImpact LogImpact => LogImpact.Medium;
  16. public override void Effect(EntityEffectBaseArgs args)
  17. {
  18. if (!args.EntityManager.TryGetComponent(args.TargetEntity, out FlammableComponent? flammable))
  19. return;
  20. var flamSys = args.EntityManager.System<FlammableSystem>();
  21. if (args is EntityEffectReagentArgs reagentArgs)
  22. {
  23. flamSys.Ignite(reagentArgs.TargetEntity, reagentArgs.OrganEntity ?? reagentArgs.TargetEntity, flammable: flammable);
  24. }
  25. else
  26. {
  27. flamSys.Ignite(args.TargetEntity, args.TargetEntity, flammable: flammable);
  28. }
  29. }
  30. }