Merge pull request #1217 from ArchieBeepBoop/rainingin

It's raining in Layenia?
This commit is contained in:
Dahlular
2021-06-02 03:05:28 -06:00
committed by GitHub
14 changed files with 134 additions and 2 deletions
+1 -1
View File
@@ -19,7 +19,7 @@
area_type = /area/layenia
target_trait = ZTRAIT_STATION
probability = 100
probability = 98
barometer_predictable = TRUE
@@ -777,4 +777,16 @@
weight = 5
repeatable = TRUE
repeatable_weight_decrease = 3
occurances_max = 3
occurances_max = 3
/* Unused, testing purposes only.
/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,119 @@
/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 = 300
telegraph_message = "<span class='boldwarning'>Oxygen clouds condense above and around the station...</span>"
telegraph_overlay = "rain_med"
weather_message = "<span class='userdanger'><i>Liquid oxygen pours down around you! It's freezing!</i></span>"
weather_overlay = "rain_high"
weather_duration_lower = 600
weather_duration_upper = 1200
end_duration = 300
end_message = "<span class='boldannounce'>The downpour gradually slows to a light shower before fading away...</span>"
end_overlay = "rain_low"
area_type = /area/layenia
target_trait = ZTRAIT_STATION
immunity_type = "storm" // temp
probability = 2 //The chances of this happening are very low after all. We'll rarely see it, but it's worth it.
barometer_predictable = 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()
. = ..()
priority_announce("[station_name()]: A large quantity of condensed oxygen clouds has been detected around and above the station. A liquid oxygen downpour is expected.",
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, 'hyperstation/sound/ambience/embrace.ogg', 40, FALSE, pressure_affected = FALSE)
/*
"Sappheiros - Embrace" is under a Creative Commons license (CC BY 3.0)
https://www.youtube.com/channel/UCxLKyBhC6igFhLEb0gxvQNg
Music promoted by BreakingCopyright: https://youtu.be/DzYp5uqixz0
*/
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_wo.output_atoms = outside_areas
sound_wi.output_atoms = inside_areas
sound_wo.start()
sound_wi.start()
/datum/weather/oxygen_rain/start()
. = ..()
/datum/weather/oxygen_rain/wind_down()
. = ..()
/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/weak_outside_oxygenrain
mid_sounds = list(
'sound/weather/oxygenrain/outside/weak_mid1.ogg'=1,
'sound/weather/oxygenrain/outside/weak_mid2.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
)
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
/* Unused code for testing purposes.
/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()]: A large quantity of condensed oxygen clouds has been detected around and above the station. A liquid oxygen downpour is expected.",
sound = 'sound/misc/notice2.ogg',
sender_override = "Kinaris Meteorology Division")
*/
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
View File
@@ -3050,6 +3050,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"