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]] } ] }