Frezon reaction requires 50:1 Oxy:Trit ratio (#16295)

This commit is contained in:
Tom Leys
2023-05-10 15:27:23 +12:00
committed by GitHub
parent 598d4f9fb9
commit d24e4a6631
2 changed files with 17 additions and 5 deletions

View File

@@ -20,14 +20,18 @@ public sealed class FrezonProductionReaction : IGasReactionEffect
var efficiency = mixture.Temperature / Atmospherics.FrezonProductionMaxEfficiencyTemperature; var efficiency = mixture.Temperature / Atmospherics.FrezonProductionMaxEfficiencyTemperature;
var loss = 1 - efficiency; var loss = 1 - efficiency;
// How much the catalyst (N2) will allow us to produce
// Less N2 is required the more efficient it is. // 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) // Amount of tritium & oxygen that are reacting
return ReactionResult.NoReaction; var tritBurned = Math.Min(oxyLimit, initialTrit);
var oxyBurned = tritBurned * Atmospherics.FrezonProductionTritRatio;
var burnRatio = tritBurned / initialTrit;
var oxyConversion = initialOxy / Atmospherics.FrezonProductionConversionRate; var oxyConversion = oxyBurned / Atmospherics.FrezonProductionConversionRate;
var tritConversion = initialTrit / Atmospherics.FrezonProductionConversionRate; var tritConversion = tritBurned / Atmospherics.FrezonProductionConversionRate;
var total = oxyConversion + tritConversion; var total = oxyConversion + tritConversion;
mixture.AdjustMoles(Gas.Oxygen, -oxyConversion); mixture.AdjustMoles(Gas.Oxygen, -oxyConversion);

View File

@@ -225,6 +225,14 @@ namespace Content.Shared.Atmos
/// </summary> /// </summary>
public const float FrezonProductionNitrogenRatio = 10f; 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; public const float FrezonProductionConversionRate = 50f;
/// <summary> /// <summary>