Plasma still creates tritium down to 1 to 32 concentration (#16517)
- But it's less efficient
This commit is contained in:
@@ -34,7 +34,11 @@ namespace Content.Server.Atmos.Reactions
|
|||||||
var initialPlasmaMoles = mixture.GetMoles(Gas.Plasma);
|
var initialPlasmaMoles = mixture.GetMoles(Gas.Plasma);
|
||||||
|
|
||||||
// Supersaturation makes tritium.
|
// 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)
|
if (initialOxygenMoles > initialPlasmaMoles * Atmospherics.PlasmaOxygenFullburn)
|
||||||
plasmaBurnRate = initialPlasmaMoles * temperatureScale / Atmospherics.PlasmaBurnRateDelta;
|
plasmaBurnRate = initialPlasmaMoles * temperatureScale / Atmospherics.PlasmaBurnRateDelta;
|
||||||
@@ -46,7 +50,10 @@ namespace Content.Server.Atmos.Reactions
|
|||||||
plasmaBurnRate = MathF.Min(plasmaBurnRate, MathF.Min(initialPlasmaMoles, initialOxygenMoles / oxygenBurnRate));
|
plasmaBurnRate = MathF.Min(plasmaBurnRate, MathF.Min(initialPlasmaMoles, initialOxygenMoles / oxygenBurnRate));
|
||||||
mixture.SetMoles(Gas.Plasma, initialPlasmaMoles - plasmaBurnRate);
|
mixture.SetMoles(Gas.Plasma, initialPlasmaMoles - plasmaBurnRate);
|
||||||
mixture.SetMoles(Gas.Oxygen, initialOxygenMoles - plasmaBurnRate * oxygenBurnRate);
|
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;
|
energyReleased += Atmospherics.FirePlasmaEnergyReleased * plasmaBurnRate;
|
||||||
mixture.ReactionResults[GasReaction.Fire] += plasmaBurnRate * (1 + oxygenBurnRate);
|
mixture.ReactionResults[GasReaction.Fire] += plasmaBurnRate * (1 + oxygenBurnRate);
|
||||||
|
|||||||
@@ -187,6 +187,7 @@ namespace Content.Shared.Atmos
|
|||||||
public const float FireGrowthRate = 40000f;
|
public const float FireGrowthRate = 40000f;
|
||||||
|
|
||||||
public const float SuperSaturationThreshold = 96f;
|
public const float SuperSaturationThreshold = 96f;
|
||||||
|
public const float SuperSaturationEnds = SuperSaturationThreshold / 3;
|
||||||
|
|
||||||
public const float OxygenBurnRateBase = 1.4f;
|
public const float OxygenBurnRateBase = 1.4f;
|
||||||
public const float PlasmaMinimumBurnTemperature = (100f+T0C);
|
public const float PlasmaMinimumBurnTemperature = (100f+T0C);
|
||||||
|
|||||||
Reference in New Issue
Block a user