diff --git a/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs b/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs
index 1bb48d76a0..8abba18f55 100644
--- a/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs
+++ b/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs
@@ -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);
diff --git a/Content.Shared/Atmos/Atmospherics.cs b/Content.Shared/Atmos/Atmospherics.cs
index 3c3fbdeef0..e2be8d73ff 100644
--- a/Content.Shared/Atmos/Atmospherics.cs
+++ b/Content.Shared/Atmos/Atmospherics.cs
@@ -225,6 +225,14 @@ namespace Content.Shared.Atmos
///
public const float FrezonProductionNitrogenRatio = 10f;
+ ///
+ /// 1 mol of Tritium is required per X mol of oxygen.
+ ///
+ public const float FrezonProductionTritRatio = 50.0f;
+
+ ///
+ /// 1 / X of the tritium is converted into Frezon each tick
+ ///
public const float FrezonProductionConversionRate = 50f;
///