Plasma still creates tritium down to 1 to 32 concentration (#16517)

- But it's less efficient
This commit is contained in:
Tom Leys
2023-05-18 07:22:56 +12:00
committed by GitHub
parent 4c9c3e75ec
commit e4ccd13845
2 changed files with 10 additions and 2 deletions

View File

@@ -34,7 +34,11 @@ namespace Content.Server.Atmos.Reactions
var initialPlasmaMoles = mixture.GetMoles(Gas.Plasma);
// Supersaturation makes tritium.
var supersaturation = initialOxygenMoles / initialPlasmaMoles > Atmospherics.SuperSaturationThreshold;
var oxyRatio = initialOxygenMoles / initialPlasmaMoles;
// Efficiency of reaction decreases from 1% Plasma to 3% plasma:
var supersaturation = Math.Clamp((oxyRatio - Atmospherics.SuperSaturationEnds) /
(Atmospherics.SuperSaturationThreshold -
Atmospherics.SuperSaturationEnds), 0.0f, 1.0f);
if (initialOxygenMoles > initialPlasmaMoles * Atmospherics.PlasmaOxygenFullburn)
plasmaBurnRate = initialPlasmaMoles * temperatureScale / Atmospherics.PlasmaBurnRateDelta;
@@ -46,7 +50,10 @@ namespace Content.Server.Atmos.Reactions
plasmaBurnRate = MathF.Min(plasmaBurnRate, MathF.Min(initialPlasmaMoles, initialOxygenMoles / oxygenBurnRate));
mixture.SetMoles(Gas.Plasma, initialPlasmaMoles - plasmaBurnRate);
mixture.SetMoles(Gas.Oxygen, initialOxygenMoles - plasmaBurnRate * oxygenBurnRate);
mixture.AdjustMoles(supersaturation ? Gas.Tritium : Gas.CarbonDioxide, plasmaBurnRate);
// supersaturation adjusts the ratio of produced tritium to unwanted CO2
mixture.AdjustMoles(Gas.Tritium, plasmaBurnRate * supersaturation);
mixture.AdjustMoles(Gas.CarbonDioxide, plasmaBurnRate * (1.0f - supersaturation));
energyReleased += Atmospherics.FirePlasmaEnergyReleased * plasmaBurnRate;
mixture.ReactionResults[GasReaction.Fire] += plasmaBurnRate * (1 + oxygenBurnRate);

View File

@@ -187,6 +187,7 @@ namespace Content.Shared.Atmos
public const float FireGrowthRate = 40000f;
public const float SuperSaturationThreshold = 96f;
public const float SuperSaturationEnds = SuperSaturationThreshold / 3;
public const float OxygenBurnRateBase = 1.4f;
public const float PlasmaMinimumBurnTemperature = (100f+T0C);