diff --git a/Content.Server/Backmen/Atmos/Reactions/BZProductionReaction.cs b/Content.Server/Backmen/Atmos/Reactions/BZProductionReaction.cs
index eafb4dfb881..0c5b1f7dc29 100644
--- a/Content.Server/Backmen/Atmos/Reactions/BZProductionReaction.cs
+++ b/Content.Server/Backmen/Atmos/Reactions/BZProductionReaction.cs
@@ -17,10 +17,10 @@ public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, Atmos
var initialNitrousOxide = mixture.GetMoles(Gas.NitrousOxide);
var initialPlasma = mixture.GetMoles(Gas.Plasma);
- var environmentEfficiency = mixture.Volume / mixture.Pressure;
+ var environmentEfficiency = mixture.Volume / mixture.Pressure * Atmospherics.BZFormationPressurePenalty;
var ratioEfficiency = Math.Min(initialNitrousOxide / initialPlasma, 1);
- var bZFormed = Math.Min(0.01f * ratioEfficiency * environmentEfficiency, Math.Min(initialNitrousOxide * 0.4f, initialPlasma * 0.8f));
+ var bZFormed = Math.Min(ratioEfficiency * environmentEfficiency * 0.5f, Math.Min(initialNitrousOxide * 0.4f, initialPlasma * 0.8f));
if (initialNitrousOxide - bZFormed * 0.4f < 0 || initialPlasma - (0.8f - bZFormed) < 0 || bZFormed <= 0)
return ReactionResult.NoReaction;
diff --git a/Content.Server/Backmen/Atmos/Reactions/HalonFrezonDecompositionReaction.cs b/Content.Server/Backmen/Atmos/Reactions/HalonFrezonDecompositionReaction.cs
new file mode 100644
index 00000000000..a8ed2e368c3
--- /dev/null
+++ b/Content.Server/Backmen/Atmos/Reactions/HalonFrezonDecompositionReaction.cs
@@ -0,0 +1,43 @@
+using Content.Server.Atmos.EntitySystems;
+using Content.Shared.Atmos;
+using Content.Shared.Atmos.Reactions;
+using JetBrains.Annotations;
+
+namespace Content.Server.Atmos.Reactions;
+
+[UsedImplicitly]
+public sealed partial class HalonFrezonDecompositionReaction : IGasReactionEffect
+{
+ public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
+ {
+ var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
+ if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
+ return ReactionResult.NoReaction;
+
+ var initialHalon = mixture.GetMoles(Gas.Halon);
+ var initialFrezon = mixture.GetMoles(Gas.Frezon);
+
+ var environmentEfficiency = mixture.Pressure * Atmospherics.HalonFrezonDecompositionPressureBonus / mixture.Volume;
+ var ratioEfficiency = Math.Min(initialHalon / initialFrezon, 1);
+
+ var producedAmount = Math.Min(ratioEfficiency * environmentEfficiency * 2f, Math.Min(initialFrezon * 0.5f, initialHalon * 0.5f));
+
+ if (producedAmount <= 0 || initialHalon - producedAmount * 0.5f < 0 || initialFrezon - producedAmount * 0.5f < 0)
+ return ReactionResult.NoReaction;
+
+ var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true);
+ mixture.AdjustMoles(Gas.Halon, -producedAmount * 0.5f);
+ mixture.AdjustMoles(Gas.Frezon, -producedAmount * 0.5f);
+ mixture.AdjustMoles(Gas.Helium, producedAmount * 1f);
+ mixture.AdjustMoles(Gas.CarbonDioxide, producedAmount * 0.25f);
+ mixture.AdjustMoles(Gas.Hydrogen, producedAmount * 2f);
+
+ var energyReleased = producedAmount * Atmospherics.HalonFrezonDecompositionEnergy;
+
+ var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true);
+ if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
+ mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB);
+
+ return ReactionResult.Reacting;
+ }
+}
diff --git a/Content.Server/Backmen/Atmos/Reactions/HalonOxygenAbsorptionReaction.cs b/Content.Server/Backmen/Atmos/Reactions/HalonOxygenAbsorptionReaction.cs
index 624cf1963b9..02ccc58022a 100644
--- a/Content.Server/Backmen/Atmos/Reactions/HalonOxygenAbsorptionReaction.cs
+++ b/Content.Server/Backmen/Atmos/Reactions/HalonOxygenAbsorptionReaction.cs
@@ -18,8 +18,7 @@ public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, Atmos
var initialOxygen = mixture.GetMoles(Gas.Oxygen);
var temperature = mixture.Temperature;
-
- var heatEfficiency = Math.Min(temperature / (Atmospherics.FireMinimumTemperatureToExist * 10f), Math.Min(initialHalon, initialOxygen * 20f));
+ var heatEfficiency = Math.Min(temperature / (Atmospherics.FireMinimumTemperatureToExist * Atmospherics.HalonOxygenAbsorptionEfficiency), Math.Min(initialHalon, initialOxygen * 20f));
if (heatEfficiency <= 0f || initialHalon - heatEfficiency < 0f || initialOxygen - heatEfficiency * 20f < 0f)
return ReactionResult.NoReaction;
@@ -32,7 +31,7 @@ public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, Atmos
var energyUsed = heatEfficiency * Atmospherics.HalonCombustionEnergy;
var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
- mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyUsed) / newHeatCapacity, Atmospherics.TCMB);
+ mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity - energyUsed) / newHeatCapacity, Atmospherics.TCMB);
return ReactionResult.Reacting;
}
diff --git a/Content.Server/Backmen/Atmos/Reactions/HalonProductionReaction.cs b/Content.Server/Backmen/Atmos/Reactions/HalonProductionReaction.cs
new file mode 100644
index 00000000000..baf74793fbf
--- /dev/null
+++ b/Content.Server/Backmen/Atmos/Reactions/HalonProductionReaction.cs
@@ -0,0 +1,39 @@
+using Content.Server.Atmos.EntitySystems;
+using Content.Shared.Atmos;
+using Content.Shared.Atmos.Reactions;
+using JetBrains.Annotations;
+
+namespace Content.Server.Atmos.Reactions;
+
+[UsedImplicitly]
+public sealed partial class HalonProductionReaction : IGasReactionEffect
+{
+ public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
+ {
+ var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
+ if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
+ return ReactionResult.NoReaction;
+
+ var initialBZ = mixture.GetMoles(Gas.BZ);
+ var initialTritium = mixture.GetMoles(Gas.Tritium);
+ var initialHalon = mixture.GetMoles(Gas.Halon);
+
+ var producedAmount = Math.Min(Atmospherics.HalonMaxRate, Math.Min(initialTritium * 0.5f, initialBZ * 0.2f));
+
+ if (producedAmount <= 0 || initialBZ - producedAmount * 0.2f < 0 || initialTritium - producedAmount * 0.5f < 0 || initialBZ > initialTritium + initialHalon)
+ return ReactionResult.NoReaction;
+
+ var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true);
+
+ mixture.AdjustMoles(Gas.BZ, -producedAmount * 0.2f);
+ mixture.AdjustMoles(Gas.Tritium, -producedAmount * 0.5f);
+ mixture.AdjustMoles(Gas.Halon, producedAmount * 0.7f);
+
+ var energyReleased = producedAmount * Atmospherics.HalonFormationEnergy;
+ var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true);
+ if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
+ mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB);
+
+ return ReactionResult.Reacting;
+ }
+}
diff --git a/Content.Server/Backmen/Atmos/Reactions/HealiumProductionReaction.cs b/Content.Server/Backmen/Atmos/Reactions/HealiumProductionReaction.cs
index 64be7a35333..3aa1de74a0b 100644
--- a/Content.Server/Backmen/Atmos/Reactions/HealiumProductionReaction.cs
+++ b/Content.Server/Backmen/Atmos/Reactions/HealiumProductionReaction.cs
@@ -18,7 +18,7 @@ public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, Atmos
var initialFrezon = mixture.GetMoles(Gas.Frezon);
var temperature = mixture.Temperature;
- var heatEfficiency = Math.Min(temperature * 0.3f, Math.Min(initialFrezon * 2.75f, initialBZ * 0.25f));
+ var heatEfficiency = Math.Min(temperature * 0.08f, Math.Min(initialFrezon * 2.75f, initialBZ * 0.25f));
if (heatEfficiency <= 0 || initialFrezon - heatEfficiency * 2.75f < 0 || initialBZ - heatEfficiency * 0.25f < 0)
return ReactionResult.NoReaction;
diff --git a/Content.Server/Backmen/Atmos/Reactions/HyperNobliumProductionReaction.cs b/Content.Server/Backmen/Atmos/Reactions/HyperNobliumProductionReaction.cs
index 441bb8453bf..72f2698c3c2 100644
--- a/Content.Server/Backmen/Atmos/Reactions/HyperNobliumProductionReaction.cs
+++ b/Content.Server/Backmen/Atmos/Reactions/HyperNobliumProductionReaction.cs
@@ -10,15 +10,12 @@ public sealed partial class HyperNobliumProductionReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
{
- var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
- if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
- return ReactionResult.NoReaction;
-
var initialNitrogen = mixture.GetMoles(Gas.Nitrogen);
var initialTritium = mixture.GetMoles(Gas.Tritium);
var initialBZ = mixture.GetMoles(Gas.BZ);
+ var temperature = mixture.Temperature;
- var nobFormed = Math.Min((initialNitrogen + initialTritium) * 0.01f, Math.Min(initialTritium * 5f, initialNitrogen * 10f));
+ var nobFormed = Math.Min(Atmospherics.NobliumFormationTemperatureBonus * temperature, Math.Min(initialTritium * 5f, initialNitrogen * 10f));
if (nobFormed <= 0 || (initialTritium - 5f) * nobFormed < 0 || (initialNitrogen - 10f) * nobFormed < 0)
return ReactionResult.NoReaction;
diff --git a/Content.Server/Backmen/Atmos/Reactions/PluoxiumProductionReaction.cs b/Content.Server/Backmen/Atmos/Reactions/PluoxiumProductionReaction.cs
index 4c02418a208..e5123f9aa74 100644
--- a/Content.Server/Backmen/Atmos/Reactions/PluoxiumProductionReaction.cs
+++ b/Content.Server/Backmen/Atmos/Reactions/PluoxiumProductionReaction.cs
@@ -18,16 +18,16 @@ public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, Atmos
var initialOxygen = mixture.GetMoles(Gas.Oxygen);
var initialTritium = mixture.GetMoles(Gas.Tritium);
- var producedAmount = Math.Min(Atmospherics.PluoxiumMaxRate, Math.Min(initialCarbonDioxide, Math.Min(initialOxygen * 0.5f, initialTritium * 0.01f)));
+ var producedAmount = Math.Min(Atmospherics.PluoxiumMaxRate, Math.Min(initialCarbonDioxide, Math.Min(initialOxygen * 0.5f, initialTritium * Atmospherics.PluoxiumTritiumConversion)));
- if (producedAmount <= 0 || initialCarbonDioxide - producedAmount < 0 || initialOxygen - producedAmount * 0.5f < 0 || initialTritium - producedAmount * 0.01f < 0)
+ if (producedAmount <= 0 || initialCarbonDioxide - producedAmount < 0 || initialOxygen - producedAmount * 0.5f < 0 || initialTritium - producedAmount * Atmospherics.PluoxiumTritiumConversion < 0)
return ReactionResult.NoReaction;
mixture.AdjustMoles(Gas.CarbonDioxide, -producedAmount);
mixture.AdjustMoles(Gas.Oxygen, -producedAmount * 0.5f);
- mixture.AdjustMoles(Gas.Tritium, -producedAmount * 0.01f);
+ mixture.AdjustMoles(Gas.Tritium, -producedAmount * Atmospherics.PluoxiumTritiumConversion);
mixture.AdjustMoles(Gas.Pluoxium, producedAmount);
- mixture.AdjustMoles(Gas.Hydrogen, producedAmount * 0.01f);
+ mixture.AdjustMoles(Gas.Hydrogen, producedAmount * Atmospherics.PluoxiumTritiumConversion);
var energyReleased = producedAmount * Atmospherics.PluoxiumFormationEnergy;
diff --git a/Content.Server/Backmen/Atmos/Reactions/ZaukerProductionReaction.cs b/Content.Server/Backmen/Atmos/Reactions/ZaukerProductionReaction.cs
index c1e101bcb15..caebdca6c3d 100644
--- a/Content.Server/Backmen/Atmos/Reactions/ZaukerProductionReaction.cs
+++ b/Content.Server/Backmen/Atmos/Reactions/ZaukerProductionReaction.cs
@@ -10,10 +10,6 @@ public sealed partial class ZaukerProductionReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
{
- var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
- if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
- return ReactionResult.NoReaction;
-
var initialHypernoblium = mixture.GetMoles(Gas.HyperNoblium);
var initialNitrium = mixture.GetMoles(Gas.Nitrium);
diff --git a/Content.Shared/Atmos/Atmospherics.cs b/Content.Shared/Atmos/Atmospherics.cs
index a824bb856ab..40e9bbcf84d 100644
--- a/Content.Shared/Atmos/Atmospherics.cs
+++ b/Content.Shared/Atmos/Atmospherics.cs
@@ -159,6 +159,19 @@ public static class Atmospherics
[Gas.Plasma] = Loc.GetString("gas-plasma-abbreviation"),
[Gas.Tritium] = Loc.GetString("gas-tritium-abbreviation"),
[Gas.WaterVapor] = Loc.GetString("gas-water-vapor-abbreviation"),
+ // start-backmen: gases
+ [Gas.BZ] = Loc.GetString("gas-bz-abbreviation"),
+ [Gas.Pluoxium] = Loc.GetString("gas-pluoxium-abbreviation"),
+ [Gas.Hydrogen] = Loc.GetString("gas-hydrogen-abbreviation"),
+ [Gas.Nitrium] = Loc.GetString("gas-nitrium-abbreviation"),
+ [Gas.Healium] = Loc.GetString("gas-healium-abbreviation"),
+ [Gas.HyperNoblium] = Loc.GetString("gas-hyper-nobilium-abbreviation"),
+ [Gas.ProtoNitrate] = Loc.GetString("gas-proto-nitrate-abbreviation"),
+ [Gas.Zauker] = Loc.GetString("gas-zauker-abbreviation"),
+ [Gas.Halon] = Loc.GetString("gas-halon-abbreviation"),
+ [Gas.Helium] = Loc.GetString("gas-helium-abbreviation"),
+ [Gas.AntiNoblium] = Loc.GetString("gas-anti-nobilium-abbreviation"),
+ // end-backmen: gases
};
#region Excited Groups
@@ -341,7 +354,12 @@ public static class Atmospherics
///
/// Defines energy released in BZ formation.
///
- public const float BZFormationEnergy = 80000f;
+ public const float BZFormationEnergy = 10000f;
+
+ ///
+ /// Defines the multiplier to penalty high pressure.
+ ///
+ public const float BZFormationPressurePenalty = 0.1f;
///
/// Defines energy released in N2O decomposition reaction.
@@ -351,37 +369,102 @@ public static class Atmospherics
///
/// Defines energy released in Pluoxium formation.
///
- public const float PluoxiumFormationEnergy = 250f;
+ public const float PluoxiumFormationEnergy = 750f;
///
/// The maximum amount of pluoxium that can form per reaction tick.
///
- public const float PluoxiumMaxRate = 5f;
- public const float FireH2EnergyReleased = 2800000f;
+ public const float PluoxiumMaxRate = 3f;
+
+ ///
+ /// Amount of tritium that will be converted to Hydrogen during Pluoxium creation.
+ ///
+ public const float PluoxiumTritiumConversion = 0.1f;
+
+ ///
+ /// Amount of energy consumed during Halon Oxygen Absorption.
+ ///
+ public const float HalonCombustionEnergy = 2500f;
+
+ ///
+ /// Efficiency for Halon Oxygen Absorption.
+ ///
+ public const float HalonOxygenAbsorptionEfficiency = 2f;
+
+ ///
+ /// The maximum amount of Halon that can form per reaction tick.
+ ///
+ public const float HalonMaxRate = 4f;
+
+ ///
+ /// Defines energy released in Halon formation.
+ ///
+ public const float HalonFormationEnergy = 1000f;
+
+ ///
+ /// Defines energy released in Halon and Frezon decomposition.
+ ///
+ public const float HalonFrezonDecompositionEnergy = 20000f;
+
+ ///
+ /// Defines the multiplier to penalty high pressure.
+ ///
+ public const float HalonFrezonDecompositionPressureBonus = 10f;
+
+ ///
+ /// Amount of releasing heat per every mole of Hydrogen.
+ ///
+ public const float FireH2EnergyReleased = 2800e3f; // 10 times stronger than tritium (maybe should be equal instead?)
+
public const float H2OxygenFullBurn = 10f;
+
public const float FireH2BurnRateDelta = 2f;
- public const float H2MinimumBurnTemperature = T0C + 100f;
+
public const float NitriumFormationTempDivisor = (T0C + 100f) * 8f;
- public const float NitriumFormationEnergy = 100000f;
+
public const float NitriumDecompositionTempDivisor = (T0C + 100f) * 8f;
+
+ ///
+ /// Energy released during Nitrium formation.
+ ///
+ public const float NitriumFormationEnergy = 10000f;
+
+ ///
+ /// Energy released during Nitrium decomposion.
+ ///
public const float NitriumDecompositionEnergy = 30000f;
- public const float NitriumDecompositionMaxTemp = T0C + 70f;
- public const float NobliumFormationEnergy = 20000000f;
- public const float ReactionOpperssionThreshold = 5f;
- public const float HalonFormationEnergy = 300f;
- public const float HalonCombustionEnergy = 2500f;
+
+ ///
+ /// Energy released during Nobilium formation.
+ /// Gets lower when more BZ is added.
+ ///
+ public const float NobliumFormationEnergy = 200e3f; // Is actually close to tritium energy release
+
+ ///
+ /// Scales Nobilium formation speed per lower temperature.
+ ///
+ public const float NobliumFormationTemperatureBonus = 0.08f;
+
public const float HealiumFormationEnergy = 9000f;
+
public const float ZaukerFormationEnergy = 5000f;
+
public const float ZaukerFormationTemperatureScale = 0.000005f;
+
public const float ZaukerDecompositionMaxRate = 20f;
+
public const float ZaukerDecompositionEnergy = 460f;
- public const float ProtoNitrateTemperatureScale = 0.005f;
+
public const float ProtoNitrateFormationEnergy = 650f;
- public const float ProtoNitrateHydrogenConversionThreshold = 150f;
+
public const float ProtoNitrateHydrogenConversionMaxRate = 5f;
+
public const float ProtoNitrateHydrogenConversionEnergy = 2500f;
+
public const float ProtoNitrateTritiumConversionEnergy = 10000f;
+
public const float ProtoNitrateBZaseConversionEnergy = 60000f;
+
#endregion
}
diff --git a/Resources/Locale/en-US/atmos/gases.ftl b/Resources/Locale/en-US/atmos/gases.ftl
index 5c540c46dfc..dc4acbe28ab 100644
--- a/Resources/Locale/en-US/atmos/gases.ftl
+++ b/Resources/Locale/en-US/atmos/gases.ftl
@@ -1,10 +1,23 @@
gas-ammonia-abbreviation = NH₃
gas-carbon-dioxide-abbreviation = CO₂
-gas-frezon-abbreviation = F
+gas-frezon-abbreviation = Fr # backmen change
gas-nitrogen-abbreviation = N₂
gas-nitrous-oxide-abbreviation = N₂O
gas-oxygen-abbreviation = O₂
-gas-plasma-abbreviation = P
+gas-plasma-abbreviation = Pl # backmen change
gas-tritium-abbreviation = T
gas-water-vapor-abbreviation = H₂O
gas-unknown-abbreviation = X
+
+# backmen gases
+gas-bz-abbreviation = Bz
+gas-pluoxium-abbreviation = Pu
+gas-hydrogen-abbreviation = H₂
+gas-nitrium-abbreviation = Ni
+gas-healium-abbreviation = Hi
+gas-hyper-nobilium-abbreviation = No
+gas-proto-nitrate-abbreviation = Pn
+gas-zauker-abbreviation = Zk
+gas-halon-abbreviation = Hl
+gas-helium-abbreviation = He
+gas-anti-nobilium-abbreviation = An
diff --git a/Resources/Locale/ru-RU/atmos/gases.ftl b/Resources/Locale/ru-RU/atmos/gases.ftl
index 5c540c46dfc..dc4acbe28ab 100644
--- a/Resources/Locale/ru-RU/atmos/gases.ftl
+++ b/Resources/Locale/ru-RU/atmos/gases.ftl
@@ -1,10 +1,23 @@
gas-ammonia-abbreviation = NH₃
gas-carbon-dioxide-abbreviation = CO₂
-gas-frezon-abbreviation = F
+gas-frezon-abbreviation = Fr # backmen change
gas-nitrogen-abbreviation = N₂
gas-nitrous-oxide-abbreviation = N₂O
gas-oxygen-abbreviation = O₂
-gas-plasma-abbreviation = P
+gas-plasma-abbreviation = Pl # backmen change
gas-tritium-abbreviation = T
gas-water-vapor-abbreviation = H₂O
gas-unknown-abbreviation = X
+
+# backmen gases
+gas-bz-abbreviation = Bz
+gas-pluoxium-abbreviation = Pu
+gas-hydrogen-abbreviation = H₂
+gas-nitrium-abbreviation = Ni
+gas-healium-abbreviation = Hi
+gas-hyper-nobilium-abbreviation = No
+gas-proto-nitrate-abbreviation = Pn
+gas-zauker-abbreviation = Zk
+gas-halon-abbreviation = Hl
+gas-helium-abbreviation = He
+gas-anti-nobilium-abbreviation = An
diff --git a/Resources/Prototypes/_Backmen/Atmospherics/gases.yml b/Resources/Prototypes/_Backmen/Atmospherics/gases.yml
index 836fe83bd6a..14549359d43 100644
--- a/Resources/Prototypes/_Backmen/Atmospherics/gases.yml
+++ b/Resources/Prototypes/_Backmen/Atmospherics/gases.yml
@@ -24,6 +24,8 @@
specificHeat: 15
heatCapacityRatio: 1.4
molarMass: 2
+ gasOverlaySprite: /Textures/Effects/atmospherics.rsi
+ gasOverlayState: hydrogen
color: FFFFFF
reagent: Hydrogen
pricePerMole: 5
diff --git a/Resources/Prototypes/_Backmen/Atmospherics/reactions.yml b/Resources/Prototypes/_Backmen/Atmospherics/reactions.yml
index 0fc040143c6..ab8015b267d 100644
--- a/Resources/Prototypes/_Backmen/Atmospherics/reactions.yml
+++ b/Resources/Prototypes/_Backmen/Atmospherics/reactions.yml
@@ -6,11 +6,11 @@
- 0 # oxygen
- 0 # nitrogen
- 0 # carbon dioxide
- - 10 # plasma
+ - 0.01 # plasma
- 0 # tritium
- 0 # vapor
- 0 # miasma
- - 10 # n2o
+ - 0.01 # n2o
- 0 # frezon
- 0 # bz
effects:
@@ -59,18 +59,18 @@
- type: gasReaction
id: NitriumProduction
priority: 5
- minimumTemperature: 1500
+ minimumTemperature: 1000
minimumRequirements:
- 0 # oxygen
- - 10 # nitrogen
+ - 0.01 # nitrogen
- 0 # carbon dioxide
- 0 # plasma
- - 20 # tritium
+ - 0.01 # tritium
- 0 # vapor
- 0 # miasma
- 0 # n2o
- 0 # frezon
- - 5 # bz
+ - 0.01 # bz
- 0 # pluoxium
- 0 # hydrogen
- 0 # nitrium
@@ -115,14 +115,14 @@
- type: gasReaction
id: HyperNobliumProduction
priority: 7
- minimumTemperature: 2.7
- maximumTemperature: 15
+ minimumTemperature: 2.7 # TCMB
+ maximumTemperature: 24.15 # Reachable with Frezon and Nitrogen
minimumRequirements:
- 0 # oxygen
- - 10 # nitrogen
+ - 0.01 # nitrogen
- 0 # carbon dioxide
- 0 # plasma
- - 5 # tritium
+ - 0.01 # tritium
- 0 # vapor
- 0 # miasma
- 0 # n2o
@@ -199,8 +199,64 @@
- !type:HealiumProductionReaction {}
- type: gasReaction
- id: ZaukerProduction
+ id: HalonProduction
priority: 9
+ minimumTemperature: 23.15
+ maximumTemperature: 73.15
+ minimumRequirements:
+ - 0 # oxygen
+ - 0 # nitrogen
+ - 0 # carbon dioxide
+ - 0 # plasma
+ - 0.01 # tritium
+ - 0 # vapor
+ - 0 # miasma
+ - 0 # n2o
+ - 0 # frezon
+ - 0.01 # bz
+ - 0 # pluoxium
+ - 0 # hydrogen
+ - 0 # nitrium
+ - 0 # healium
+ - 0 # hyper-noblium
+ - 0 # proto-nitrate
+ - 0 # zauker
+ - 0 # halon
+ - 0 # helium
+ - 0 # anti-noblium
+ effects:
+ - !type:HalonProductionReaction {}
+
+- type: gasReaction
+ id: HalonFrezonDecomposition
+ priority: 10
+ minimumRequirements:
+ - 0 # oxygen
+ - 0 # nitrogen
+ - 0 # carbon dioxide
+ - 0 # plasma
+ - 0 # tritium
+ - 0 # vapor
+ - 0 # miasma
+ - 0 # n2o
+ - 0.01 # frezon
+ - 0 # bz
+ - 0 # pluoxium
+ - 0 # hydrogen
+ - 0 # nitrium
+ - 0 # healium
+ - 0 # hyper-noblium
+ - 0 # proto-nitrate
+ - 0 # zauker
+ - 0.01 # halon
+ - 0 # helium
+ - 0 # anti-noblium
+ effects:
+ - !type:HalonFrezonDecompositionReaction {}
+
+- type: gasReaction
+ id: ZaukerProduction
+ priority: 11
minimumTemperature: 50000
maximumTemperature: 75000
minimumRequirements:
@@ -229,7 +285,7 @@
- type: gasReaction
id: ZaukerDecomposition
- priority: 10
+ priority: 12
minimumRequirements:
- 0 # oxygen
- 0.01 # nitrogen
@@ -256,7 +312,7 @@
- type: gasReaction
id: ProtoNitrateProduction
- priority: 11
+ priority: 13
minimumTemperature: 5000
maximumTemperature: 10000
minimumRequirements:
@@ -285,7 +341,7 @@
- type: gasReaction
id: ProtoNitrateHydrogenConversion
- priority: 12
+ priority: 14
minimumRequirements:
- 0 # oxygen
- 0 # nitrogen
@@ -312,7 +368,7 @@
- type: gasReaction
id: ProtoNitrateTritiumDeirradiation
- priority: 13
+ priority: 15
minimumTemperature: 150
maximumTemperature: 340
minimumRequirements:
@@ -341,7 +397,7 @@
- type: gasReaction
id: ProtoNitrateBZaseAction
- priority: 14
+ priority: 16
minimumTemperature: 260
maximumTemperature: 280
minimumRequirements:
diff --git a/Resources/Textures/Effects/atmospherics.rsi/hydrogen.png b/Resources/Textures/Effects/atmospherics.rsi/hydrogen.png
new file mode 100644
index 00000000000..3d2a1cc2b3f
Binary files /dev/null and b/Resources/Textures/Effects/atmospherics.rsi/hydrogen.png differ
diff --git a/Resources/Textures/Effects/atmospherics.rsi/meta.json b/Resources/Textures/Effects/atmospherics.rsi/meta.json
index df795db8fc8..411d04d3df1 100644
--- a/Resources/Textures/Effects/atmospherics.rsi/meta.json
+++ b/Resources/Textures/Effects/atmospherics.rsi/meta.json
@@ -93,6 +93,10 @@
{
"name": "halon",
"delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]
+ },
+ {
+ "name": "hydrogen",
+ "delays": [[0.1, 0.1, 0.1]]
}
]
}