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
+3 -3
View File
@@ -1026,15 +1026,15 @@ var/list/admin_verbs_cciaa = list(
if (!check_rights(R_SERVER|R_DEBUG))
return
var/ans = alert(src, "This will force explosions to run in the [config.use_recursive_explosions ? "old manner (non-recursive)" : "new, realistic manner (recursive)"]. Do you want to proceed?", "Switch explosion type", "Yes", "Cancel")
var/ans = alert(src, "This will force explosions to run in the [config.use_spreading_explosions ? "old manner (circular)" : "new, realistic manner (spreading)"]. Do you want to proceed?", "Switch explosion type", "Yes", "Cancel")
if (!ans || ans == "Cancel")
src << "<span class='notice'>Cancelled.</span>"
return
config.use_recursive_explosions = !config.use_recursive_explosions
config.use_spreading_explosions = !config.use_spreading_explosions
log_and_message_admins("has toggled explosions to be [config.use_recursive_explosions ? "recursive" : "non-recursive"].")
log_and_message_admins("has toggled explosions to be [config.use_spreading_explosions ? "iterative/spreading" : "simple/circular"].")
feedback_add_details("admin_verb", "TRE")
/client/proc/wipe_ai()