mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-26 13:37:58 +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
@@ -82,7 +82,7 @@ SUBSYSTEM_DEF(weather)
|
||||
var/datum/weather/A
|
||||
for(var/V in processing)
|
||||
var/datum/weather/W = V
|
||||
if((z in W.impacted_z_levels) && W.area_type == active_area.type)
|
||||
if((z in W.impacted_z_levels) && W.area_type == active_area)
|
||||
A = W
|
||||
break
|
||||
return A
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -528,6 +528,14 @@
|
||||
loc = S1.loc
|
||||
dir = S1.dir
|
||||
|
||||
//update mining and labor shuttle ash storm audio
|
||||
if(id in list("mining", "laborcamp"))
|
||||
var/mining_zlevel = level_name_to_num(MINING)
|
||||
var/datum/weather/ash_storm/W = SSweather.get_weather(mining_zlevel, /area/lavaland/surface/outdoors)
|
||||
if(W)
|
||||
W.update_eligible_areas()
|
||||
W.update_audio()
|
||||
|
||||
unlockPortDoors(S1)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user