]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Plasma still creates tritium down to 1 to 32 concentration (#16517)
authorTom Leys <tom@crump-leys.com>
Wed, 17 May 2023 19:22:56 +0000 (07:22 +1200)
committerGitHub <noreply@github.com>
Wed, 17 May 2023 19:22:56 +0000 (13:22 -0600)
- But it's less efficient

Content.Server/Atmos/Reactions/PlasmaFireReaction.cs
Content.Shared/Atmos/Atmospherics.cs

index c0e830f250f5e28ebafce7d920d6de693a1b8210..cd8a773344c1b7c749bb888601df1666d41dd564 100644 (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);
index e2be8d73ff9b472d188347c6464b71c7b1c6a5ff..293866ed77321ac1966d1bb704047d9d62fce99b 100644 (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);