mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-24 04:27:35 +01:00
Ash storms are no longer audible on mining/labor shuttles when in transit or docked on station (#17905)
* Change get_weather to use type instead of instance * Stop storm audio on shuttle when docked at station * Realize that the labor camp shuttle exists * Fix a comment * Apply suggestions from code review Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
This commit is contained in:
co-authored by
AffectedArc07
parent
f33d1da673
commit
ca0f0ed9e8
@@ -30,13 +30,28 @@
|
||||
var/datum/looping_sound/weak_outside_ashstorm/sound_wo = new(list(), FALSE, TRUE)
|
||||
var/datum/looping_sound/weak_inside_ashstorm/sound_wi = new(list(), FALSE, TRUE)
|
||||
|
||||
/datum/weather/ash_storm/telegraph()
|
||||
. = ..()
|
||||
/datum/weather/ash_storm/proc/is_shuttle_docked(shuttleId, dockId)
|
||||
var/obj/docking_port/mobile/M = SSshuttle.getShuttle(shuttleId)
|
||||
var/obj/docking_port/stationary/S = M.get_docked()
|
||||
|
||||
return S.id == dockId
|
||||
|
||||
/datum/weather/ash_storm/proc/update_eligible_areas()
|
||||
var/list/inside_areas = list()
|
||||
var/list/outside_areas = list()
|
||||
var/list/eligible_areas = list()
|
||||
for(var/z in impacted_z_levels)
|
||||
eligible_areas += GLOB.space_manager.areas_in_z["[z]"]
|
||||
|
||||
// Don't play storm audio to shuttles that are not at lavaland
|
||||
var/miningShuttleDocked = is_shuttle_docked("mining", "mining_away")
|
||||
if(!miningShuttleDocked)
|
||||
eligible_areas -= get_areas(/area/shuttle/mining)
|
||||
|
||||
var/laborShuttleDocked = is_shuttle_docked("laborcamp", "laborcamp_away")
|
||||
if(!laborShuttleDocked)
|
||||
eligible_areas -= get_areas(/area/shuttle/siberia)
|
||||
|
||||
for(var/i in 1 to eligible_areas.len)
|
||||
var/area/place = eligible_areas[i]
|
||||
if(place.outdoors)
|
||||
@@ -50,29 +65,46 @@
|
||||
sound_wo.output_atoms = outside_areas
|
||||
sound_wi.output_atoms = inside_areas
|
||||
|
||||
sound_wo.start()
|
||||
sound_wi.start()
|
||||
/datum/weather/ash_storm/proc/update_audio()
|
||||
switch(stage)
|
||||
if(STARTUP_STAGE)
|
||||
sound_wo.start()
|
||||
sound_wi.start()
|
||||
|
||||
if(MAIN_STAGE)
|
||||
sound_wo.stop()
|
||||
sound_wi.stop()
|
||||
|
||||
sound_ao.start()
|
||||
sound_ai.start()
|
||||
|
||||
if(WIND_DOWN_STAGE)
|
||||
sound_ao.stop()
|
||||
sound_ai.stop()
|
||||
|
||||
sound_wo.start()
|
||||
sound_wi.start()
|
||||
|
||||
if(END_STAGE)
|
||||
sound_wo.stop()
|
||||
sound_wi.stop()
|
||||
|
||||
/datum/weather/ash_storm/telegraph()
|
||||
. = ..()
|
||||
update_eligible_areas()
|
||||
update_audio()
|
||||
|
||||
/datum/weather/ash_storm/start()
|
||||
. = ..()
|
||||
sound_wo.stop()
|
||||
sound_wi.stop()
|
||||
|
||||
sound_ao.start()
|
||||
sound_ai.start()
|
||||
update_audio()
|
||||
|
||||
/datum/weather/ash_storm/wind_down()
|
||||
. = ..()
|
||||
sound_ao.stop()
|
||||
sound_ai.stop()
|
||||
|
||||
sound_wo.start()
|
||||
sound_wi.start()
|
||||
update_audio()
|
||||
|
||||
/datum/weather/ash_storm/end()
|
||||
. = ..()
|
||||
sound_wo.stop()
|
||||
sound_wi.stop()
|
||||
update_audio()
|
||||
|
||||
/datum/weather/ash_storm/proc/is_ash_immune(atom/L)
|
||||
while(L && !isturf(L))
|
||||
|
||||
Reference in New Issue
Block a user