This commit is contained in:
Archie
2021-06-02 04:20:23 -03:00
parent 7e250ce9ee
commit 966da5dbbf
4 changed files with 164 additions and 1 deletions
@@ -777,4 +777,14 @@
weight = 5
repeatable = TRUE
repeatable_weight_decrease = 3
occurances_max = 3
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")
@@ -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 = "<span class='boldwarning'>Oxygen clouds condense above and around the station...</span>"
weather_message = "<span class='userdanger'><i>Liquid oxygen pours down around you! It's freezing!</i></span>"
weather_overlay = "oxygen_rain"
weather_duration_lower = 600
weather_duration_upper = 1500
end_duration = 100
end_message = "<span class='boldannounce'>The downpour gradually slows to a light shower before fading away...</span>"
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.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

+1
View File
@@ -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"