diff --git a/Content.Server/Atmos/Reactions/MiasmaOxygenReaction.cs b/Content.Server/Atmos/Reactions/MiasmaOxygenReaction.cs
new file mode 100644
index 0000000000..0d4e1ef71f
--- /dev/null
+++ b/Content.Server/Atmos/Reactions/MiasmaOxygenReaction.cs
@@ -0,0 +1,33 @@
+using Content.Server.Atmos.EntitySystems;
+using Content.Shared.Atmos;
+using JetBrains.Annotations;
+
+namespace Content.Server.Atmos.Reactions;
+
+[UsedImplicitly]
+public sealed partial class MiasmaOxygenReaction : IGasReactionEffect
+{
+ public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
+ {
+ var nMiasma = mixture.GetMoles(Gas.Miasma);
+ var nOxygen = mixture.GetMoles(Gas.Oxygen);
+ var nTotal = mixture.TotalMoles;
+
+ // Concentration-dependent reaction rate
+ var fMiasma = nMiasma/nTotal;
+ var fOxygen = nOxygen/nTotal;
+ var rate = MathF.Pow(fMiasma, 2) * MathF.Pow(fOxygen, 2);
+
+ var deltaMoles = nMiasma / Atmospherics.MiasmaOxygenReactionRate * 2 * rate;
+
+ if (deltaMoles <= 0 || nMiasma - deltaMoles < 0)
+ return ReactionResult.NoReaction;
+
+ mixture.AdjustMoles(Gas.Miasma, -deltaMoles);
+ mixture.AdjustMoles(Gas.Oxygen, -deltaMoles);
+ mixture.AdjustMoles(Gas.NitrousOxide, deltaMoles / 2);
+ mixture.AdjustMoles(Gas.WaterVapor, deltaMoles * 1.5f);
+
+ return ReactionResult.Reacting;
+ }
+}
diff --git a/Content.Shared/Atmos/Atmospherics.cs b/Content.Shared/Atmos/Atmospherics.cs
index 24fa5ada20..71908326cc 100644
--- a/Content.Shared/Atmos/Atmospherics.cs
+++ b/Content.Shared/Atmos/Atmospherics.cs
@@ -241,6 +241,11 @@ namespace Content.Shared.Atmos
///
public const float MiasmicSubsumationMaxConversionRate = 5f;
+ ///
+ /// Divisor for Miasma Oxygen reaction so that it doesn't happen instantaneously.
+ ///
+ public const float MiasmaOxygenReactionRate = 10f;
+
///
/// Determines at what pressure the ultra-high pressure red icon is displayed.
///
diff --git a/Resources/Prototypes/Atmospherics/reactions.yml b/Resources/Prototypes/Atmospherics/reactions.yml
index a01bf80f31..6553ae551b 100644
--- a/Resources/Prototypes/Atmospherics/reactions.yml
+++ b/Resources/Prototypes/Atmospherics/reactions.yml
@@ -74,6 +74,23 @@
effects:
- !type:MiasmicSubsumationReaction {}
+- type: gasReaction
+ id: MiasmaOxygenReaction
+ priority: 2
+ minimumTemperature: 323.149
+ minimumRequirements:
+ - 0.01 # oxygen
+ - 0 # nitrogen
+ - 0 # carbon dioxide
+ - 0 # plasma
+ - 0 # tritium
+ - 0 # vapor
+ - 0.01 # miasma
+ - 0 # n2o
+ - 0 # frezon
+ effects:
+ - !type:MiasmaOxygenReaction {}
+
#- type: gasReaction
# id: WaterVaporPuddle
# priority: 1