FlammableTileReaction.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using Content.Server.Atmos.EntitySystems;
  2. using Content.Shared.Chemistry.Reaction;
  3. using Content.Shared.Chemistry.Reagent;
  4. using Content.Shared.FixedPoint;
  5. using JetBrains.Annotations;
  6. using Robust.Shared.Map;
  7. namespace Content.Server.Chemistry.TileReactions
  8. {
  9. [UsedImplicitly]
  10. [DataDefinition]
  11. public sealed partial class FlammableTileReaction : ITileReaction
  12. {
  13. [DataField("temperatureMultiplier")] private float _temperatureMultiplier = 1.15f;
  14. public FixedPoint2 TileReact(TileRef tile,
  15. ReagentPrototype reagent,
  16. FixedPoint2 reactVolume,
  17. IEntityManager entityManager,
  18. List<ReagentData>? data)
  19. {
  20. if (reactVolume <= FixedPoint2.Zero || tile.Tile.IsEmpty)
  21. return FixedPoint2.Zero;
  22. var atmosphereSystem = entityManager.System<AtmosphereSystem>();
  23. var environment = atmosphereSystem.GetTileMixture(tile.GridUid, null, tile.GridIndices, true);
  24. if (environment == null || !atmosphereSystem.IsHotspotActive(tile.GridUid, tile.GridIndices))
  25. return FixedPoint2.Zero;
  26. environment.Temperature *= MathF.Max(_temperatureMultiplier * reactVolume.Float(), 1f);
  27. atmosphereSystem.ReactTile(tile.GridUid, tile.GridIndices);
  28. return reactVolume;
  29. }
  30. }
  31. }