diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm
index 195b9ec3..91b4217e 100644
--- a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm
+++ b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm
@@ -777,4 +777,14 @@
weight = 5
repeatable = TRUE
repeatable_weight_decrease = 3
- occurances_max = 3
\ No newline at end of file
+ occurances_max = 3
+
+/datum/dynamic_ruleset/event/oxygen_rain
+ name = "Oxygen Rain"
+ typepath = /datum/round_event/oxygen_rain
+ requirements = list(0,0,0,0,0,0,0,0,0,0)
+ high_population_requirement = 0
+ weight = 1 //This is a rare occurence.
+ repeatable = FALSE
+ occurances_max = 1
+ map_whitelist = list("LayeniaStation.dmm")
diff --git a/hyperstation/code/datums/weather/oxygen_rain.dm b/hyperstation/code/datums/weather/oxygen_rain.dm
new file mode 100644
index 00000000..56397286
--- /dev/null
+++ b/hyperstation/code/datums/weather/oxygen_rain.dm
@@ -0,0 +1,152 @@
+/datum/weather/oxygen_rain
+ name = "oxygen rain"
+ desc = "The weather of Layenia can be quite unpredictable... Given the low temperature outside the station, oxygen condenses into liquid droplets."
+
+ telegraph_duration = 400
+ telegraph_message = "Oxygen clouds condense above and around the station..."
+
+ weather_message = "Liquid oxygen pours down around you! It's freezing!"
+ weather_overlay = "oxygen_rain"
+ weather_duration_lower = 600
+ weather_duration_upper = 1500
+
+ end_duration = 100
+ end_message = "The downpour gradually slows to a light shower before fading away..."
+
+ area_type = /area/layenia/cloudlayer
+ target_trait = ZTRAIT_STATION
+
+ immunity_type = "storm" // temp
+
+ barometer_predictable = TRUE
+
+ var/datum/looping_sound/active_outside_oxygenrain/sound_ao = new(list(), FALSE, TRUE)
+ var/datum/looping_sound/active_inside_oxygenrain/sound_ai = new(list(), FALSE, TRUE)
+ var/datum/looping_sound/weak_outside_oxygenrain/sound_wo = new(list(), FALSE, TRUE)
+ var/datum/looping_sound/weak_inside_oxygenrain/sound_wi = new(list(), FALSE, TRUE)
+
+/datum/weather/oxygen_rain/telegraph()
+ . = ..()
+ var/list/inside_areas = list()
+ var/list/outside_areas = list()
+ var/list/eligible_areas = list()
+ for (var/z in impacted_z_levels)
+ eligible_areas += SSmapping.areas_in_z["[z]"]
+ for(var/i in 1 to eligible_areas.len)
+ var/area/place = eligible_areas[i]
+ if(place.outdoors)
+ outside_areas += place
+ else
+ inside_areas += place
+ CHECK_TICK
+
+ sound_ao.output_atoms = outside_areas
+ sound_ai.output_atoms = inside_areas
+ sound_wo.output_atoms = outside_areas
+ sound_wi.output_atoms = inside_areas
+
+ sound_wo.start()
+ sound_wi.start()
+
+/datum/weather/oxygen_rain/start()
+ . = ..()
+ sound_wo.stop()
+ sound_wi.stop()
+
+ sound_ao.start()
+ sound_ai.start()
+
+/datum/weather/oxygen_rain/wind_down()
+ . = ..()
+ sound_ao.stop()
+ sound_ai.stop()
+
+ sound_wo.start()
+ sound_wi.start()
+
+/datum/weather/oxygen_rain/end()
+ . = ..()
+ sound_wo.stop()
+ sound_wi.stop()
+
+/datum/weather/oxygen_rain/weather_act(mob/living/L)
+ //This is liquid oxygen after all. (-90C)
+ L.adjust_bodytemperature(-rand(5,10))
+
+
+
+
+/datum/looping_sound/active_outside_oxygenrain
+ mid_sounds = list(
+ 'sound/weather/oxygenrain/outside/active_mid1.ogg'=1,
+ 'sound/weather/oxygenrain/outside/active_mid1.ogg'=1,
+ 'sound/weather/oxygenrain/outside/active_mid1.ogg'=1
+ )
+ mid_length = 80
+ start_sound = 'sound/weather/oxygenrain/outside/active_start.ogg'
+ start_length = 130
+ end_sound = 'sound/weather/oxygenrain/outside/active_end.ogg'
+ volume = 60
+
+/datum/looping_sound/active_inside_oxygenrain
+ mid_sounds = list(
+ 'sound/weather/oxygenrain/inside/active_mid1.ogg'=1,
+ 'sound/weather/oxygenrain/inside/active_mid2.ogg'=1,
+ 'sound/weather/oxygenrain/inside/active_mid3.ogg'=1
+ )
+ mid_length = 80
+ start_sound = 'sound/weather/oxygenrain/inside/active_start.ogg'
+ start_length = 130
+ end_sound = 'sound/weather/oxygenrain/inside/active_end.ogg'
+ volume = 20
+
+/datum/looping_sound/weak_outside_oxygenrain
+ mid_sounds = list(
+ 'sound/weather/oxygenrain/outside/weak_mid1.ogg'=1,
+ 'sound/weather/oxygenrain/outside/weak_mid2.ogg'=1,
+ 'sound/weather/oxygenrain/outside/weak_mid3.ogg'=1
+ )
+ mid_length = 80
+ start_sound = 'sound/weather/oxygenrain/outside/weak_start.ogg'
+ start_length = 130
+ end_sound = 'sound/weather/oxygenrain/outside/weak_end.ogg'
+ volume = 50
+
+/datum/looping_sound/weak_inside_oxygenrain
+ mid_sounds = list(
+ 'sound/weather/oxygenrain/inside/weak_mid1.ogg'=1,
+ 'sound/weather/oxygenrain/inside/weak_mid2.ogg'=1,
+ 'sound/weather/oxygenrain/inside/weak_mid3.ogg'=1
+ )
+ mid_length = 80
+ start_sound = 'sound/weather/oxygenrain/inside/weak_start.ogg'
+ start_length = 130
+ end_sound = 'sound/weather/oxygenrain/inside/weak_end.ogg'
+ volume = 30
+
+
+
+
+/datum/round_event_control/oxygen_rain
+ name = "Oxygen Rain"
+ typepath = /datum/round_event/oxygen_rain
+ max_occurrences = 1
+
+/datum/round_event/oxygen_rain
+
+/datum/round_event/oxygen_rain/setup()
+ startWhen = 3
+ endWhen = startWhen + 1
+ announceWhen = 1
+
+/datum/round_event/oxygen_rain/start()
+ SSweather.run_weather(/datum/weather/oxygen_rain)
+
+/datum/round_event/oxygen_rain/announce()
+ priority_announce("[station_name()]: Oxygen Rain Placeholder",
+ sound = 'sound/misc/notice2.ogg',
+ sender_override = "Kinaris Meteorology Division")
+ for(var/V in GLOB.player_list)
+ var/mob/M = V
+ if((M.client.prefs.toggles & SOUND_MIDI) && is_station_level(M.z))
+ M.playsound_local(M, pick('sound/ambience/aurora_caelus_new.ogg','sound/ambience/aurora_caelus.ogg'), 40, FALSE, pressure_affected = FALSE) //ogg is "The Fire is Gone" by Heaven Pierce Her, used in the videogame ULTRAKILL. All respects and credits to the equivalent artists who worked on it.
diff --git a/icons/effects/weather_effects.dmi b/icons/effects/weather_effects.dmi
index a66f5032..6805e960 100644
Binary files a/icons/effects/weather_effects.dmi and b/icons/effects/weather_effects.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 9f689647..f1e27c3d 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -3049,6 +3049,7 @@
#include "hyperstation\code\datums\ruins\lavaland.dm"
#include "hyperstation\code\datums\traits\good.dm"
#include "hyperstation\code\datums\traits\neutral.dm"
+#include "hyperstation\code\datums\weather\oxygen_rain.dm"
#include "hyperstation\code\game\objects\railings.dm"
#include "hyperstation\code\game\objects\items\cosmetics.dm"
#include "hyperstation\code\game\objects\items\storage\big_bag.dm"