Add nitrous oxide decomposition reaction (#22738)
Co-authored-by: whateverusername0 <whateveremail> Co-authored-by: Kevin Zheng <kevinz5000@gmail.com>
This commit is contained in:
28
Content.Server/Atmos/Reactions/N2ODecompositionReaction.cs
Normal file
28
Content.Server/Atmos/Reactions/N2ODecompositionReaction.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using Content.Server.Atmos.EntitySystems;
|
||||
using Content.Shared.Atmos;
|
||||
using JetBrains.Annotations;
|
||||
|
||||
namespace Content.Server.Atmos.Reactions;
|
||||
|
||||
/// <summary>
|
||||
/// Decomposes Nitrous Oxide into Nitrogen and Oxygen.
|
||||
/// </summary>
|
||||
[UsedImplicitly]
|
||||
public sealed partial class N2ODecompositionReaction : IGasReactionEffect
|
||||
{
|
||||
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
|
||||
{
|
||||
var cacheN2O = mixture.GetMoles(Gas.NitrousOxide);
|
||||
|
||||
var burnedFuel = cacheN2O / Atmospherics.N2ODecompositionRate;
|
||||
|
||||
if (burnedFuel <= 0 || cacheN2O - burnedFuel < 0)
|
||||
return ReactionResult.NoReaction;
|
||||
|
||||
mixture.AdjustMoles(Gas.NitrousOxide, -burnedFuel);
|
||||
mixture.AdjustMoles(Gas.Nitrogen, burnedFuel);
|
||||
mixture.AdjustMoles(Gas.Oxygen, burnedFuel / 2);
|
||||
|
||||
return ReactionResult.Reacting;
|
||||
}
|
||||
}
|
||||
@@ -236,6 +236,11 @@ namespace Content.Shared.Atmos
|
||||
/// </summary>
|
||||
public const float FrezonProductionConversionRate = 50f;
|
||||
|
||||
/// <summary>
|
||||
/// The maximum portion of the N2O that can decompose each reaction tick. (50%)
|
||||
/// </summary>
|
||||
public const float N2ODecompositionRate = 2f;
|
||||
|
||||
/// <summary>
|
||||
/// How many mol of frezon can be converted into miasma in one cycle.
|
||||
/// </summary>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
- type: gasReaction
|
||||
- type: gasReaction
|
||||
id: PlasmaFire
|
||||
priority: -2
|
||||
minimumTemperature: 373.149 # Same as Atmospherics.FireMinimumTemperatureToExist
|
||||
@@ -91,6 +91,23 @@
|
||||
effects:
|
||||
- !type:MiasmaOxygenReaction {}
|
||||
|
||||
- type: gasReaction
|
||||
id: N2ODecomposition
|
||||
priority: 0
|
||||
minimumTemperature: 850
|
||||
minimumRequirements:
|
||||
- 0 # oxygen
|
||||
- 0 # nitrogen
|
||||
- 0 # carbon dioxide
|
||||
- 0 # plasma
|
||||
- 0 # tritium
|
||||
- 0 # vapor
|
||||
- 0 # miasma
|
||||
- 0.01 # n2o
|
||||
- 0 # frezon
|
||||
effects:
|
||||
- !type:N2ODecompositionReaction {}
|
||||
|
||||
#- type: gasReaction
|
||||
# id: WaterVaporPuddle
|
||||
# priority: 1
|
||||
|
||||
Reference in New Issue
Block a user