]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Frezon reaction requires 50:1 Oxy:Trit ratio (#16295)
authorTom Leys <tom@crump-leys.com>
Wed, 10 May 2023 03:27:23 +0000 (15:27 +1200)
committerGitHub <noreply@github.com>
Wed, 10 May 2023 03:27:23 +0000 (20:27 -0700)
Content.Server/Atmos/Reactions/FrezonProductionReaction.cs
Content.Shared/Atmos/Atmospherics.cs

index 1bb48d76a08bf8ebfb30bbca4da6bda3e87a0c17..8abba18f552da36f9a66c3bbc738f24122585530 100644 (file)
@@ -20,14 +20,18 @@ public sealed class FrezonProductionReaction : IGasReactionEffect
         var efficiency = mixture.Temperature / Atmospherics.FrezonProductionMaxEfficiencyTemperature;
         var loss = 1 - efficiency;
 
+        // How much the catalyst (N2) will allow us to produce
         // Less N2 is required the more efficient it is.
-        var minimumN2 = (initialOxy + initialTrit) / (Atmospherics.FrezonProductionNitrogenRatio * efficiency);
+        var catalystLimit = initialN2 * (Atmospherics.FrezonProductionNitrogenRatio / efficiency);
+        var oxyLimit = Math.Min(initialOxy, catalystLimit) / Atmospherics.FrezonProductionTritRatio;
 
-        if (initialN2 < minimumN2)
-            return ReactionResult.NoReaction;
+        // Amount of tritium & oxygen that are reacting
+        var tritBurned = Math.Min(oxyLimit, initialTrit);
+        var oxyBurned = tritBurned * Atmospherics.FrezonProductionTritRatio;
+        var burnRatio = tritBurned / initialTrit;
 
-        var oxyConversion = initialOxy / Atmospherics.FrezonProductionConversionRate;
-        var tritConversion = initialTrit / Atmospherics.FrezonProductionConversionRate;
+        var oxyConversion = oxyBurned / Atmospherics.FrezonProductionConversionRate;
+        var tritConversion = tritBurned / Atmospherics.FrezonProductionConversionRate;
         var total = oxyConversion + tritConversion;
 
         mixture.AdjustMoles(Gas.Oxygen, -oxyConversion);
index 3c3fbdeef0a79595e574eca2a64356581bbac92b..e2be8d73ff9b472d188347c6464b71c7b1c6a5ff 100644 (file)
@@ -225,6 +225,14 @@ namespace Content.Shared.Atmos
         /// </summary>
         public const float FrezonProductionNitrogenRatio = 10f;
 
+        /// <summary>
+        ///     1 mol of Tritium is required per X mol of oxygen.
+        /// </summary>
+        public const float FrezonProductionTritRatio = 50.0f;
+
+        /// <summary>
+        ///     1 / X of the tritium is converted into Frezon each tick
+        /// </summary>
         public const float FrezonProductionConversionRate = 50f;
 
         /// <summary>