Explosion subsystem (#17499)

* Initial port

* pause air

* decoupled input from processing

* explosion condition tweak

* closer to original recursive code

* accurate explosions

* better defer calls

* glob fix

* fix

* DON'T DO THAT

* initial deferral code

* small explosions ignored

* lower thresholds

* better thresholds again

* forbid powernet defer during init, explosions too

* don't block your own network regen

* use procs

* better thresholds, always defer at least

* admin notice

* subsytem updated

* Allow removal from networks

* defer till rebuild

* dir

* Update breaker_box.dm

* no init means no init

* then flag it...

---------

Co-authored-by: Selis <12716288+ItsSelis@users.noreply.github.com>
Co-authored-by: C.L. <killer65311@gmail.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
Will
2025-08-15 16:55:19 -04:00
committed by GitHub
parent 5fa1055b7c
commit eba43f278c
17 changed files with 388 additions and 220 deletions
+5 -1
View File
@@ -276,7 +276,7 @@ ADMIN_VERB(stealth, R_STEALTH, "Stealth Mode", "Toggle stealth.", "Admin.Game")
set desc = "Cause an explosion of varying strength at your location."
var/turf/epicenter = mob.loc
var/list/choices = list("Small Bomb", "Medium Bomb", "Big Bomb", "Custom Bomb", "Cancel")
var/list/choices = list("Small Bomb", "Medium Bomb", "Big Bomb", "Maxcap Bomb", "SM Blast", "Custom Bomb", "Cancel")
var/choice = tgui_input_list(usr, "What size explosion would you like to produce?", "Explosion Choice", choices)
switch(choice)
if(null)
@@ -289,6 +289,10 @@ ADMIN_VERB(stealth, R_STEALTH, "Stealth Mode", "Toggle stealth.", "Admin.Game")
explosion(epicenter, 2, 3, 4, 4)
if("Big Bomb")
explosion(epicenter, 3, 5, 7, 5)
if("Maxcap Bomb") // Being able to test what players can legally make themselves sounds good, no?~
explosion(epicenter, BOMBCAP_DVSTN_RADIUS, BOMBCAP_HEAVY_RADIUS, BOMBCAP_LIGHT_RADIUS, BOMBCAP_FLASH_RADIUS)
if("SM Blast")
explosion(epicenter, 8, 16, 24, 32)
if("Custom Bomb")
var/devastation_range = tgui_input_number(usr, "Devastation range (in tiles):")
var/heavy_impact_range = tgui_input_number(usr, "Heavy impact range (in tiles):")