Iterative Explosions (#3838)

This PR replaces recursive explosions with a new spreading engine: iterative explosions.
Should behave similarly, but also be more reliable, potentially faster.

Iterative explosions also support simple-explosion-esque directional explosion sounds/shake, and will now traverse Z-levels if the explosion is strong enough.

Also changes playsound() to transmit sounds across Z-levels. Uses BYOND's 3rd coordinate on /sound to make sound sound above/below the player if they're using headphones. Removed for now, can't get Z-falloff working right.

Fixes #2199.
This commit is contained in:
Lohikar
2017-12-30 04:38:12 +02:00
committed by Erki
parent ba57b5a5e5
commit 6debd29cb7
12 changed files with 269 additions and 93 deletions
@@ -17,6 +17,8 @@ var/datum/controller/subsystem/atlas/SSatlas
var/map_override // If set, SSatlas will forcibly load this map. If the map does not exist, mapload will fail and SSatlas will panic.
var/list/spawn_locations = list()
var/list/connected_z_cache = list()
/datum/controller/subsystem/atlas/New()
NEW_SS_GLOBAL(SSatlas)
@@ -103,6 +105,8 @@ var/datum/controller/subsystem/atlas/SSatlas
var/obj/effect/landmark/map_data/marker = thing
marker.setup()
connected_z_cache.Cut()
/datum/controller/subsystem/atlas/proc/get_selected_map()
if (config.override_map)
if (known_maps[config.override_map])