diff --git a/code/datums/ores.dm b/code/datums/ores.dm
index 997b68b3b3f..fc418979539 100644
--- a/code/datums/ores.dm
+++ b/code/datums/ores.dm
@@ -193,7 +193,7 @@
deltimer(explosion_callback)
stage = GIBTONITE_DETONATE
- explosion(source, 1, 3, 5, adminlog = notify_admins)
+ explosion(source, 1, 3, 5, adminlog = notify_admins, cause = "Gibtonite")
if(!istype(source))
return
diff --git a/code/datums/spells/alien_spells/lay_alien_eggs.dm b/code/datums/spells/alien_spells/lay_alien_eggs.dm
index 75bb9bd170f..a02c5c75c79 100644
--- a/code/datums/spells/alien_spells/lay_alien_eggs.dm
+++ b/code/datums/spells/alien_spells/lay_alien_eggs.dm
@@ -35,5 +35,5 @@
/datum/spell/alien_spell/combust_facehuggers/proc/blow_it_up(obj/target, mob/user)
add_attack_logs(user, target, "Caused it to explode")
- explosion(get_turf(target), 0, 2, 3, 3, cause = user)
+ explosion(get_turf(target), 0, 2, 3, 3, cause = "[user.ckey]: [name]")
to_chat(user, "[target] has detonated!")
diff --git a/code/datums/spells/wizard_spells.dm b/code/datums/spells/wizard_spells.dm
index c62f868f401..1449bd95abf 100644
--- a/code/datums/spells/wizard_spells.dm
+++ b/code/datums/spells/wizard_spells.dm
@@ -497,7 +497,7 @@
var/turf/corpse_turf = get_turf(target)
new /obj/effect/temp_visual/corpse_explosion(get_turf(target))
target.gib()
- explosion(corpse_turf, 0, 0, 0, 0, silent = TRUE, breach = FALSE)
+ explosion(corpse_turf, 0, 0, 0, 0, silent = TRUE, cause = name, breach = FALSE)
for(var/mob/living/M in range(4, corpse_turf))
if(M == user)
continue
diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm
index 982dc756404..2f1d5abad74 100644
--- a/code/datums/status_effects/neutral.dm
+++ b/code/datums/status_effects/neutral.dm
@@ -72,7 +72,7 @@
/datum/status_effect/high_five/proc/wiz_effect(mob/living/carbon/user, mob/living/carbon/highfived)
user.status_flags |= GODMODE
highfived.status_flags |= GODMODE
- explosion(get_turf(user), 5, 2, 1, 3, cause = id)
+ explosion(get_turf(user), 5, 2, 1, 3, cause = "Wizard high-five")
// explosions have a spawn so this makes sure that we don't get gibbed
addtimer(CALLBACK(src, PROC_REF(wiz_cleanup), user, highfived), 0.3 SECONDS) // I want to be sure this lasts long enough, with lag.
add_attack_logs(user, highfived, "caused a wizard [id] explosion")
diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm
index 209d537f3a8..3cc9ca000c2 100644
--- a/code/game/gamemodes/malfunction/Malf_Modules.dm
+++ b/code/game/gamemodes/malfunction/Malf_Modules.dm
@@ -473,7 +473,7 @@
/datum/spell/ai_spell/ranged/overload_machine/proc/detonate_machine(obj/machinery/M)
if(M && !QDELETED(M))
- explosion(get_turf(M), 0, 2, 3, 0)
+ explosion(get_turf(M), 0, 2, 3, 0, cause = "Malf AI: [name]")
if(M) //to check if the explosion killed it before we try to delete it
qdel(M)
diff --git a/code/game/gamemodes/miniantags/pulsedemon/pulsedemon_abilities.dm b/code/game/gamemodes/miniantags/pulsedemon/pulsedemon_abilities.dm
index 97c86faf060..f73166576c1 100644
--- a/code/game/gamemodes/miniantags/pulsedemon/pulsedemon_abilities.dm
+++ b/code/game/gamemodes/miniantags/pulsedemon/pulsedemon_abilities.dm
@@ -198,7 +198,7 @@
/datum/spell/pulse_demon/overload/proc/detonate(obj/machinery/target)
if(!QDELETED(target))
- explosion(get_turf(target), 0, 1, 1, 0)
+ explosion(get_turf(target), 0, 1, 1, 0, cause = "Pulse Demon: [name]")
if(!QDELETED(target))
qdel(target)
diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm
index 087734dee17..9851f7f41af 100644
--- a/code/game/gamemodes/wizard/spellbook.dm
+++ b/code/game/gamemodes/wizard/spellbook.dm
@@ -1016,7 +1016,7 @@
/obj/item/spellbook/oneuse/fireball/recoil(mob/user as mob)
..()
- explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2)
+ explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2, cause = "[user]: Self-fireball from oneuse [name]")
qdel(src)
/obj/item/spellbook/oneuse/smoke
diff --git a/code/game/machinery/camera/camera_presets.dm b/code/game/machinery/camera/camera_presets.dm
index 34f90ce2f40..d03d4965aa9 100644
--- a/code/game/machinery/camera/camera_presets.dm
+++ b/code/game/machinery/camera/camera_presets.dm
@@ -93,7 +93,7 @@
/obj/machinery/camera/tracking_head/proc/explode_the_camera()
if(QDELETED(src))
return
- explosion(loc, -1, -1, 2, flame_range = 4)
+ explosion(loc, -1, -1, 2, flame_range = 4, cause = "Exploding DVORAK Camera")
qdel(src)
/obj/effect/camera_head
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index 76fa090b1e1..3f9b21e95b5 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -45,7 +45,7 @@
num_of_prizes = rand(0,2)
for(var/i = num_of_prizes; i > 0; i--)
prizevend()
- explosion(get_turf(src), -1, 0, 1+num_of_prizes, flame_range = 1+num_of_prizes)
+ explosion(get_turf(src), -1, 0, 1+num_of_prizes, flame_range = 1+num_of_prizes, cause = "EMP'd arcade machine")
/obj/machinery/computer/arcade/battle
@@ -1012,7 +1012,7 @@
playsound(loc, 'sound/machines/buzz-sigh.ogg', 25, TRUE)
sleep(3.6)
visible_message("[src] explodes!")
- explosion(src.loc, 1,2,4, flame_range = 3)
+ explosion(src.loc, 1,2,4, flame_range = 3, cause = "Orion Ship Minibomb")
qdel(src)
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 259b0ec4ab1..bb71aacf8eb 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -555,7 +555,7 @@
/obj/machinery/zap_act(power, zap_flags)
if(prob(85) && (zap_flags & ZAP_MACHINE_EXPLOSIVE) && !(resistance_flags & INDESTRUCTIBLE))
- explosion(src, 1, 2, 4, flame_range = 2, adminlog = FALSE, smoke = FALSE)
+ explosion(src, 1, 2, 4, flame_range = 2, adminlog = FALSE, smoke = FALSE, cause = "Random Zap Explosion")
else if(zap_flags & ZAP_OBJ_DAMAGE)
take_damage(power * 0.0005, BURN, ENERGY)
if(prob(40))
diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm
index d0841d27591..2e5e9e9f265 100644
--- a/code/game/machinery/syndicatebomb.dm
+++ b/code/game/machinery/syndicatebomb.dm
@@ -341,7 +341,7 @@
if(adminlog)
message_admins(adminlog)
log_game(adminlog)
- explosion(get_turf(src), range_heavy, range_medium, range_light, flame_range = range_flame, adminlog = admin_log)
+ explosion(get_turf(src), range_heavy, range_medium, range_light, flame_range = range_flame, adminlog = admin_log, cause = "[name]: bombcore explosion")
if(loc && istype(loc, /obj/machinery/syndicatebomb))
qdel(loc)
qdel(src)
diff --git a/code/game/objects/effects/effect_system/effects_other.dm b/code/game/objects/effects/effect_system/effects_other.dm
index 076a749af06..404df9a31bf 100644
--- a/code/game/objects/effects/effect_system/effects_other.dm
+++ b/code/game/objects/effects/effect_system/effects_other.dm
@@ -120,7 +120,7 @@
for(var/mob/M in viewers(8, location))
to_chat(M, "The solution violently explodes.")
- explosion(location, devastation, heavy, light, flash)
+ explosion(location, devastation, heavy, light, flash, cause = "Reagents Explosion")
/datum/effect_system/reagents_explosion/proc/holder_damage(atom/holder)
if(holder)
diff --git a/code/game/objects/effects/meteors.dm b/code/game/objects/effects/meteors.dm
index ac396492750..6af792175a6 100644
--- a/code/game/objects/effects/meteors.dm
+++ b/code/game/objects/effects/meteors.dm
@@ -243,7 +243,7 @@ GLOBAL_LIST_INIT(meteors_gore, list(/obj/effect/meteor/meaty = 5, /obj/effect/me
/obj/effect/meteor/medium/meteor_effect()
..()
- explosion(loc, 0, 1, 2, 3, 0)
+ explosion(loc, 0, 1, 2, 3, 0, cause = name)
//Large-sized
/obj/effect/meteor/big
@@ -255,7 +255,7 @@ GLOBAL_LIST_INIT(meteors_gore, list(/obj/effect/meteor/meaty = 5, /obj/effect/me
/obj/effect/meteor/big/meteor_effect()
..()
- explosion(loc, 1, 2, 3, 4, 0)
+ explosion(loc, 1, 2, 3, 4, 0, cause = name)
//Flaming meteor
/obj/effect/meteor/flaming
@@ -268,7 +268,7 @@ GLOBAL_LIST_INIT(meteors_gore, list(/obj/effect/meteor/meaty = 5, /obj/effect/me
/obj/effect/meteor/flaming/meteor_effect()
..()
- explosion(loc, 1, 2, 3, 4, 0, 0, 5)
+ explosion(loc, 1, 2, 3, 4, 0, 0, 5, cause = name)
//Radiation meteor
/obj/effect/meteor/irradiated
@@ -280,7 +280,7 @@ GLOBAL_LIST_INIT(meteors_gore, list(/obj/effect/meteor/meaty = 5, /obj/effect/me
/obj/effect/meteor/irradiated/meteor_effect()
..()
- explosion(loc, 0, 0, 4, 3, 0)
+ explosion(loc, 0, 0, 4, 3, 0, cause = name)
new /obj/effect/decal/cleanable/greenglow(get_turf(src))
radiation_pulse(src, 20000, 7, ALPHA_RAD)
for(var/turf/target_turf in range(loc, 3))
@@ -296,7 +296,7 @@ GLOBAL_LIST_INIT(meteors_gore, list(/obj/effect/meteor/meaty = 5, /obj/effect/me
/obj/effect/meteor/bananium/meteor_effect()
..()
- explosion(loc, 0, 0, 3, 2, 0)
+ explosion(loc, 0, 0, 3, 2, 0, cause = name)
var/turf/current_turf = get_turf(src)
new /obj/item/grown/bananapeel(current_turf)
for(var/obj/target in range(4, current_turf))
@@ -321,12 +321,12 @@ GLOBAL_LIST_INIT(meteors_gore, list(/obj/effect/meteor/meaty = 5, /obj/effect/me
/obj/effect/meteor/tunguska/meteor_effect()
..()
- explosion(loc, 5, 10, 15, 20, 0)
+ explosion(loc, 5, 10, 15, 20, 0, cause = "[name]: End explosion")
/obj/effect/meteor/tunguska/Bump()
..()
if(prob(20))
- explosion(loc, 2, 4, 6, 8)
+ explosion(loc, 2, 4, 6, 8, cause = "[name]: Bump explosion")
//Meaty Ore
/obj/effect/meteor/meaty
diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
index 9a322c3974e..01c71c99980 100644
--- a/code/game/objects/effects/mines.dm
+++ b/code/game/objects/effects/mines.dm
@@ -51,7 +51,7 @@
var/range_flash = 3
/obj/effect/mine/explosive/mineEffect(mob/living/victim)
- explosion(loc, range_devastation, range_heavy, range_light, range_flash)
+ explosion(loc, range_devastation, range_heavy, range_light, range_flash, cause = name)
/obj/effect/mine/stun
name = "stun mine"
@@ -68,7 +68,7 @@
var/area/syndicate_depot/core/depotarea = get_area(src)
if(istype(depotarea))
if(depotarea.mine_triggered(victim))
- explosion(loc, 1, 0, 0, 1) // devastate the tile you are on, but leave everything else untouched
+ explosion(loc, 1, 0, 0, 1, cause = "depot sentry mine") // devastate the tile you are on, but leave everything else untouched
/obj/effect/mine/dnascramble
name = "Radiation Mine"
diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm
index 80fa25b0f73..2a57bece0ce 100644
--- a/code/game/objects/explosion.dm
+++ b/code/game/objects/explosion.dm
@@ -8,7 +8,7 @@
#define FREQ_UPPER 40 //The upper limit for the randomly selected frequency.
#define FREQ_LOWER 25 //The lower of the above.
-/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range = 0, silent = 0, smoke = 1, cause = null, breach = TRUE)
+/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range = 0, silent = 0, smoke = 1, cause = "Unknown Cause!", breach = TRUE)
epicenter = get_turf(epicenter)
if(!epicenter)
return
@@ -49,8 +49,8 @@
var/list/cached_exp_block = list()
if(adminlog)
- message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] [cause ? "(Cause: [cause])" : ""] [ADMIN_COORDJMP(epicenter)] ")
- log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] [cause ? "(Cause: [cause])" : ""] [COORD(epicenter)] ")
+ message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] (Cause: [cause]) [ADMIN_COORDJMP(epicenter)] ")
+ log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] (Cause: [cause]) [COORD(epicenter)] ")
var/x0 = epicenter.x
var/y0 = epicenter.y
diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm
index 41968cf6af4..ed23a48e85e 100644
--- a/code/game/objects/items/devices/powersink.dm
+++ b/code/game/objects/items/devices/powersink.dm
@@ -147,7 +147,7 @@
if(power_drained >= max_power)
STOP_PROCESSING(SSobj, src)
- explosion(src.loc, 4,8,16,32)
+ explosion(src.loc, 4,8,16,32, cause = "Powersink Explosion")
qdel(src)
#undef DISCONNECTED
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index c39f0c5d412..bf58a5abf28 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -1111,11 +1111,11 @@
/obj/item/toy/plushie/borgplushie/item_interaction(mob/living/user, obj/item/used, list/modifiers)
if(!istype(used, /obj/item/borg/upgrade/reset))
return ..()
-
+
if(!plushie_module_selected)
to_chat(user, "[src] is already in standard mode!")
return ITEM_INTERACT_COMPLETE
-
+
borg_plushie_overlay = "plushie_borgassist"
update_icon()
to_chat(user, "The fabric on [src] changes color, reverting it back to standard mode.")
@@ -1232,7 +1232,7 @@
visible_message("[src] explodes!")
if(grenade)
explosive_betrayal(grenade)
- explosion(get_turf(src), -1, 0, 1, 1, flame_range = 1)
+ explosion(get_turf(src), -1, 0, 1, 1, flame_range = 1, cause = "Plasmaman plushie caught on fire")
if(!QDELETED(src))
qdel(src)
diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm
index 8d0b3df881e..ec2cedef256 100644
--- a/code/game/objects/items/weapons/RCD.dm
+++ b/code/game/objects/items/weapons/RCD.dm
@@ -702,7 +702,7 @@
* Called in `/obj/item/rcd/proc/detonate_pulse()` via callback.
*/
/obj/item/rcd/proc/detonate_pulse_explode()
- explosion(src, 0, 0, 3, 1, flame_range = 1)
+ explosion(src, 0, 0, 3, 1, flame_range = 1, cause = "RCD Explosion")
qdel(src)
/obj/item/rcd/preloaded
diff --git a/code/game/objects/items/weapons/bio_chips/bio_chip_explosive.dm b/code/game/objects/items/weapons/bio_chips/bio_chip_explosive.dm
index 3cc32727228..c81144883dc 100644
--- a/code/game/objects/items/weapons/bio_chips/bio_chip_explosive.dm
+++ b/code/game/objects/items/weapons/bio_chips/bio_chip_explosive.dm
@@ -40,7 +40,7 @@
if(!imp_in)
return
- explosion(src, heavy, medium, weak, weak, flame_range = weak)
+ explosion(src, heavy, medium, weak, weak, flame_range = weak, cause = name)
// In case something happens to the implantee between now and the
// self-destruct
diff --git a/code/game/objects/items/weapons/caution.dm b/code/game/objects/items/weapons/caution.dm
index 46e3b9da43c..a158b2ddb30 100644
--- a/code/game/objects/items/weapons/caution.dm
+++ b/code/game/objects/items/weapons/caution.dm
@@ -54,7 +54,7 @@
if(C.m_intent != MOVE_INTENT_WALK)
visible_message("[src] beeps, \"Sign says walk, asshole.\"")
playsound(src, 'sound/misc/sign_says_walk.ogg', 40)
- explosion(src.loc,-1,0,2)
+ explosion(src.loc,-1,0,2, cause = "Exploding wet floor sign")
if(ishuman(C))
dead_legs(C)
if(src)
diff --git a/code/game/objects/items/weapons/dice.dm b/code/game/objects/items/weapons/dice.dm
index 6bbda189516..02a5817119f 100644
--- a/code/game/objects/items/weapons/dice.dm
+++ b/code/game/objects/items/weapons/dice.dm
@@ -221,7 +221,7 @@
if(8)
//Fueltank Explosion
T.visible_message("An explosion bursts into existence around [user]!")
- explosion(get_turf(user), -1, 0, 2, flame_range = 2)
+ explosion(get_turf(user), -1, 0, 2, flame_range = 2, cause = "Die of fate: fuel tank explosion")
if(9)
//Cold
var/datum/disease/D = new /datum/disease/cold()
@@ -406,7 +406,7 @@
var/turf/epicenter = get_turf(src)
var/area/A = get_area(epicenter)
- explosion(epicenter, round(result * 0.25), round(result * 0.5), round(result), round(result * 1.5), TRUE, capped)
+ explosion(epicenter, round(result * 0.25), round(result * 0.5), round(result), round(result * 1.5), TRUE, capped, cause = "E20 explosion")
investigate_log("E20 detonated at [A.name] ([epicenter.x],[epicenter.y],[epicenter.z]) with a roll of [actual_result]. Triggered by: [key_name(user)]", INVESTIGATE_BOMB)
log_game("E20 detonated at [A.name] ([epicenter.x],[epicenter.y],[epicenter.z]) with a roll of [actual_result]. Triggered by: [key_name(user)]")
add_attack_logs(user, src, "detonated with a roll of [actual_result]", ATKLOG_FEW)
diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm
index 9cdfefdfcb0..0974fa4dc76 100644
--- a/code/game/objects/items/weapons/explosives.dm
+++ b/code/game/objects/items/weapons/explosives.dm
@@ -203,7 +203,7 @@
if(location)
if(shaped && aim_dir)
location = get_step(get_step(location, aim_dir), aim_dir) //Move the explosion location two steps away from the target when using a shaped c4
- explosion(location, ex_devastate, ex_heavy, ex_light, breach = ex_breach)
+ explosion(location, ex_devastate, ex_heavy, ex_light, breach = ex_breach, cause = name)
qdel(src)
diff --git a/code/game/objects/items/weapons/grenades/frag.dm b/code/game/objects/items/weapons/grenades/frag.dm
index d77a761f61e..676477a6900 100644
--- a/code/game/objects/items/weapons/grenades/frag.dm
+++ b/code/game/objects/items/weapons/grenades/frag.dm
@@ -13,7 +13,7 @@
/obj/item/grenade/frag/prime()
update_mob()
- explosion(loc, 0, 1, DEFAULT_SHRAPNEL_RANGE, breach = FALSE)
+ explosion(loc, 0, 1, DEFAULT_SHRAPNEL_RANGE, cause = name, breach = FALSE)
create_shrapnel(loc, shrapnel_contained, shrapnel_type = embedded_type)
qdel(src)
diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm
index 2fa84566638..b07a088e566 100644
--- a/code/game/objects/items/weapons/grenades/ghettobomb.dm
+++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm
@@ -63,5 +63,5 @@
/obj/item/grenade/iedcasing/prime() //Blowing that can up
update_mob()
- explosion(loc, -1, -1, 2, flame_range = 4) // small explosion, plus a very large fireball.
+ explosion(loc, -1, -1, 2, flame_range = 4, cause = "IED grenade") // small explosion, plus a very large fireball.
qdel(src)
diff --git a/code/game/objects/items/weapons/grenades/syndieminibomb.dm b/code/game/objects/items/weapons/grenades/syndieminibomb.dm
index 4bd01c7f883..642463b50c0 100644
--- a/code/game/objects/items/weapons/grenades/syndieminibomb.dm
+++ b/code/game/objects/items/weapons/grenades/syndieminibomb.dm
@@ -5,14 +5,16 @@
icon_state = "syndicate"
item_state = "grenade"
origin_tech = "materials=3;magnets=4;syndicate=3"
+ var/explosion_cause = "Syndicate minibomb"
/obj/item/grenade/syndieminibomb/prime()
update_mob()
- explosion(loc, 1, 2, 4, flame_range = 2)
+ explosion(loc, 1, 2, 4, flame_range = 2, cause = explosion_cause)
qdel(src)
/obj/item/grenade/syndieminibomb/fake
origin_tech = "materials=3;magnets=4;syndicate=1" // no clown, this bomb not exactly the same
+ explosion_cause = "Trick Syndicate minibomb"
/obj/item/grenade/syndieminibomb/fake/examine(mob/user)
. = ..()
@@ -32,6 +34,7 @@
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "pen"
item_state = "pen"
+ explosion_cause = "Syndicate minibomb (disguised as a black pen)"
/obj/item/grenade/syndieminibomb/pen/attack_self__legacy__attackchain(mob/user)
if(!active)
diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm
index 436fc8d1bd8..ddba4c304f0 100644
--- a/code/game/objects/items/weapons/storage/backpack.dm
+++ b/code/game/objects/items/weapons/storage/backpack.dm
@@ -91,7 +91,7 @@
/obj/item/storage/backpack/holding/singularity_act(current_size)
var/dist = max((current_size - 2), 1)
- explosion(loc, dist, (dist * 2), (dist * 4))
+ explosion(loc, dist, (dist * 2), (dist * 4), cause = "Bag of Holding (singularity_act)")
/obj/item/storage/backpack/santabag
name = "Santa's Gift Bag"
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index fcfb23970f5..ee0d349b907 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -250,7 +250,7 @@
// to_chat(world, "Exploding Pressure: [pressure] kPa, intensity: [range]")
- explosion(epicenter, round(range*0.25), round(range*0.5), round(range), round(range*1.5))
+ explosion(epicenter, round(range*0.25), round(range*0.5), round(range), round(range*1.5), cause = "Exploding tank rupture")
if(istype(loc,/obj/item/transfer_valve))
qdel(loc)
else
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 1151a82f805..693a7fbc911 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -205,7 +205,7 @@
add_attack_logs(user, src, "has detonated", ATKLOG_MOST)
for(var/atom/movable/AM in src)
qdel(AM)
- explosion(get_turf(src), 0, 1, 5, 5)
+ explosion(get_turf(src), 0, 1, 5, 5, cause = "Tamper-proof secure crate")
qdel(src)
/obj/structure/closet/crate/secure/can_open()
diff --git a/code/game/objects/structures/depot_structures.dm b/code/game/objects/structures/depot_structures.dm
index 4df2db803f1..05e380643c3 100644
--- a/code/game/objects/structures/depot_structures.dm
+++ b/code/game/objects/structures/depot_structures.dm
@@ -113,7 +113,7 @@
M.gib()
for(var/obj/mecha/E in range(30, T))
E.take_damage(E.max_integrity)
- explosion(get_turf(src), 25, 35, 45, 55, 1, 1, 60, 0)
+ explosion(get_turf(src), 25, 35, 45, 55, 1, 1, 60, 0, cause = "Depot Explosion")
STOP_PROCESSING(SSobj, src)
qdel(src)
diff --git a/code/game/objects/structures/grey_autocloner.dm b/code/game/objects/structures/grey_autocloner.dm
index 29419720460..a45fd1d8a7d 100644
--- a/code/game/objects/structures/grey_autocloner.dm
+++ b/code/game/objects/structures/grey_autocloner.dm
@@ -124,7 +124,7 @@
/obj/machinery/grey_autocloner/proc/messy_explode()
if(occupant)
occupant.forceMove(get_turf(src))
- explosion(get_turf(src), 1, 2, 4, flame_range = 2)
+ explosion(get_turf(src), 1, 2, 4, flame_range = 2, cause = "Grey Autocloner Self-destruct")
qdel(src)
/obj/machinery/grey_autocloner/deconstruct(disassembled)
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 2e6ac9eba6b..cf8139689b7 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -194,7 +194,7 @@
/turf/bullet_act(obj/item/projectile/Proj)
if(istype(Proj, /obj/item/projectile/bullet/gyro))
- explosion(src, -1, 0, 2)
+ explosion(src, -1, 0, 2, cause = "[Proj.type] fired by [key_name(Proj.firer)] (hit turf)")
..()
return FALSE
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 9ee5dcafec9..138aee6736c 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -702,11 +702,11 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
if(null)
return 0
if("Small Bomb")
- explosion(epicenter, 1, 2, 3, 3)
+ explosion(epicenter, 1, 2, 3, 3, cause = "[ckey]: Drop Bomb command")
if("Medium Bomb")
- explosion(epicenter, 2, 3, 4, 4)
+ explosion(epicenter, 2, 3, 4, 4, cause = "[ckey]: Drop Bomb command")
if("Big Bomb")
- explosion(epicenter, 3, 5, 7, 5)
+ explosion(epicenter, 3, 5, 7, 5, cause = "[ckey]: Drop Bomb command")
if("Custom Bomb")
var/devastation_range = tgui_input_number(src, "Devastation range (in tiles):", "Custom Bomb", max_value = 255)
if(isnull(devastation_range))
@@ -720,7 +720,7 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
var/flash_range = tgui_input_number(src, "Flash range (in tiles):", "Custom Bomb", max_value = 255)
if(isnull(flash_range))
return
- explosion(epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, 1, 1)
+ explosion(epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, 1, 1, cause = "[ckey]: Drop Bomb command")
log_admin("[key_name(usr)] created an admin explosion at [epicenter.loc]")
message_admins("[key_name_admin(usr)] created an admin explosion at [epicenter.loc]")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Drop Bomb") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index d9ee5c3e4c8..ae4931641d2 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -737,7 +737,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(alert(src, "Are you sure you want to do this? It will laaag.", "Confirmation", "Yes", "No") == "No")
return
- explosion(O, devastation, heavy, light, flash, null, null,flames)
+ explosion(O, devastation, heavy, light, flash, null, null,flames, cause = "[ckey]: Explosion command")
log_admin("[key_name(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at ([O.x],[O.y],[O.z])")
message_admins("[key_name_admin(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at ([O.x],[O.y],[O.z])")
SSblackbox.record_feedback("tally", "admin_verb", 1, "EXPL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
diff --git a/code/modules/antagonists/changeling/powers/become_headslug.dm b/code/modules/antagonists/changeling/powers/become_headslug.dm
index 130439c092f..208b29c6215 100644
--- a/code/modules/antagonists/changeling/powers/become_headslug.dm
+++ b/code/modules/antagonists/changeling/powers/become_headslug.dm
@@ -40,7 +40,7 @@
for(var/obj/item/organ/internal/I in organs)
I.remove(user, TRUE)
- explosion(get_turf(user), 0, 0, 2, 0, silent = TRUE)
+ explosion(get_turf(user), 0, 0, 2, 0, silent = TRUE, cause = "Headslug explosion")
for(var/mob/living/carbon/human/H in range(2, user))
to_chat(H, "You are blinded by a shower of blood!")
H.KnockDown(4 SECONDS)
diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm
index 5af40484a39..2d601bd5312 100644
--- a/code/modules/assembly/bomb.dm
+++ b/code/modules/assembly/bomb.dm
@@ -134,11 +134,11 @@
strength = (fuel_moles / 15)
if(strength >=1)
- explosion(ground_zero, round(strength,1), round(strength*2,1), round(strength*3,1), round(strength*4,1))
+ explosion(ground_zero, round(strength,1), round(strength*2,1), round(strength*3,1), round(strength*4,1), cause = "Toxins Tank Explosion")
else if(strength >=0.5)
- explosion(ground_zero, 0, 1, 2, 4)
+ explosion(ground_zero, 0, 1, 2, 4, cause = "Toxins Tank Explosion")
else if(strength >=0.2)
- explosion(ground_zero, -1, 0, 1, 2)
+ explosion(ground_zero, -1, 0, 1, 2, cause = "Toxins Tank Explosion")
else
ground_zero.blind_release_air(air_contents)
ground_zero.hotspot_expose(1000, 125)
@@ -147,9 +147,9 @@
strength = (fuel_moles/20)
if(strength >=1)
- explosion(ground_zero, 0, round(strength, 1), round(strength * 2, 1), round(strength * 3, 1))
+ explosion(ground_zero, 0, round(strength, 1), round(strength * 2, 1), round(strength * 3, 1), cause = "Toxins Tank Explosion")
else if(strength >=0.5)
- explosion(ground_zero, -1, 0, 1, 2)
+ explosion(ground_zero, -1, 0, 1, 2, cause = "Toxins Tank Explosion")
else
ground_zero.blind_release_air(air_contents)
ground_zero.hotspot_expose(1000, 125)
@@ -158,7 +158,7 @@
strength = (fuel_moles / 25)
if(strength >= 1)
- explosion(ground_zero, -1, 0, round(strength, 1), round(strength * 3, 1))
+ explosion(ground_zero, -1, 0, round(strength, 1), round(strength * 3, 1), cause = "Toxins Tank Explosion")
else
ground_zero.blind_release_air(air_contents)
ground_zero.hotspot_expose(1000, 125)
diff --git a/code/modules/awaymissions/mission_code/ruins/telecomns.dm b/code/modules/awaymissions/mission_code/ruins/telecomns.dm
index 818d15ba88a..2a4916f3b87 100644
--- a/code/modules/awaymissions/mission_code/ruins/telecomns.dm
+++ b/code/modules/awaymissions/mission_code/ruins/telecomns.dm
@@ -41,7 +41,7 @@ GLOBAL_LIST_EMPTY(telecomms_trap_tank)
var/your_doom = get_turf(src)
new /obj/item/grenade/frag(your_doom)
internal_tank.forceMove(your_doom)
- explosion(your_doom, 1, 0, 0, 6, FALSE, 6)
+ explosion(your_doom, 1, 0, 0, 6, FALSE, 6, cause = "DVORAK Doomba")
qdel(decorative_eye)
qdel(src)
@@ -187,7 +187,7 @@ GLOBAL_LIST_EMPTY(telecomms_trap_tank)
explode()
/obj/structure/telecomms_trap_tank/proc/explode()
- explosion(loc, 1, 4, 6, flame_range = 6)
+ explosion(loc, 1, 4, 6, flame_range = 6, cause = "Telecomms trap tank")
qdel(src)
/obj/structure/telecomms_doomsday_device
@@ -286,7 +286,7 @@ GLOBAL_LIST_EMPTY(telecomms_trap_tank)
loc.invisibility = 90
for(var/turf/simulated/wall/indestructible/riveted/R in urange(25, get_turf(src)))
R.ChangeTurf(/turf/space)
- explosion(get_turf(src), 30, 40, 50, 60, 1, 1, 65, 0)
+ explosion(get_turf(src), 30, 40, 50, 60, 1, 1, 65, 0, cause = "DVORAK Doomsday Device")
sleep(3 SECONDS)
var/obj/singularity/S = new /obj/singularity(get_turf(src))
S.consumedSupermatter = TRUE // woe large supermatter to eat the remains apon thee
@@ -426,7 +426,7 @@ GLOBAL_LIST_EMPTY(telecomms_trap_tank)
addtimer(CALLBACK(src, PROC_REF(prime)), 5 SECONDS)
/obj/item/remote_ai_upload/proc/prime()
- explosion(loc, -1, -1, 2, 4, flame_range = 4)
+ explosion(loc, -1, -1, 2, 4, flame_range = 4, cause = "Remote AI Upload explosion")
qdel(src)
/obj/effect/spawner/random/telecomms_core_table
diff --git a/code/modules/buildmode/submodes/boom.dm b/code/modules/buildmode/submodes/boom.dm
index fccb6dc74dc..b895590d099 100644
--- a/code/modules/buildmode/submodes/boom.dm
+++ b/code/modules/buildmode/submodes/boom.dm
@@ -24,10 +24,10 @@
flash = tgui_input_number(user, "Range of Flash", "Flash", -1, min_value = -1)
flames = tgui_input_number(user, "Range of Flames", "Flames", -1, min_value = -1)
-/datum/buildmode_mode/boom/handle_click(user, params, obj/object)
+/datum/buildmode_mode/boom/handle_click(mob/user, params, obj/object)
var/list/pa = params2list(params)
var/left_click = pa.Find("left")
if(left_click)
log_admin("Build Mode: [key_name(user)] created an explosion at ([object.x],[object.y],[object.z])")
- explosion(object, devastation, heavy, light, flash, null, TRUE, flames)
+ explosion(object, devastation, heavy, light, flash, null, TRUE, flames, cause = "[user.ckey]: Buildmode boom")
diff --git a/code/modules/events/brand_intelligence.dm b/code/modules/events/brand_intelligence.dm
index b46d710c89f..d7af1044ebc 100644
--- a/code/modules/events/brand_intelligence.dm
+++ b/code/modules/events/brand_intelligence.dm
@@ -63,7 +63,7 @@
M.speak = rampant_speeches.Copy()
M.speak_chance = 15
else
- explosion(upriser.loc, -1, 1, 2, 4, 0)
+ explosion(upriser.loc, -1, 1, 2, 4, 0, cause = "Brand Intelligence Uprising")
qdel(upriser)
log_debug("Brand intelligence: The last vendor has been infected.")
diff --git a/code/modules/events/meaty_ores.dm b/code/modules/events/meaty_ores.dm
index 16624b38ca9..6c18e9de0d3 100644
--- a/code/modules/events/meaty_ores.dm
+++ b/code/modules/events/meaty_ores.dm
@@ -34,7 +34,7 @@
if(prob(45))
new /obj/item/food/meat(where)
else if(prob(10))
- explosion(where, 0, pick(0,1), pick(2,3), 0)
+ explosion(where, 0, pick(0,1), pick(2,3), 0, cause = "Meaty space dust")
else
new /mob/living/simple_animal/cow(where)
diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm
index 5cb7f6e964a..f04d7242353 100644
--- a/code/modules/events/spacevine.dm
+++ b/code/modules/events/spacevine.dm
@@ -217,7 +217,7 @@
return TRUE
/datum/spacevine_mutation/explosive/on_death(obj/structure/spacevine/holder, mob/hitter, obj/item/I)
- explosion(holder.loc, 0, 0, severity, 0, 0)
+ explosion(holder.loc, 0, 0, severity, 0, 0, cause = "Explosive Spacevines")
/datum/spacevine_mutation/fire_proof
name = "fire proof"
diff --git a/code/modules/food_and_drinks/food/foods/baked_goods.dm b/code/modules/food_and_drinks/food/foods/baked_goods.dm
index 035ad095c77..412a691d620 100644
--- a/code/modules/food_and_drinks/food/foods/baked_goods.dm
+++ b/code/modules/food_and_drinks/food/foods/baked_goods.dm
@@ -1144,7 +1144,7 @@
if(do_after_once(user, 4 SECONDS, target = src))
visible_message("[src] suddenly combust!")
to_chat(user, "You combust [src] with your mind!")
- explosion(get_turf(src), light_impact_range = 2, flash_range = 2)
+ explosion(get_turf(src), light_impact_range = 2, flash_range = 2, cause = "[user.ckey]: blows up pancakes with mind")
add_attack_logs(user, src, "blew up [src] with TK", ATKLOG_ALL)
qdel(src)
return
diff --git a/code/modules/food_and_drinks/food/foods/pizza.dm b/code/modules/food_and_drinks/food/foods/pizza.dm
index 3714831e641..47b0ebefd29 100644
--- a/code/modules/food_and_drinks/food/foods/pizza.dm
+++ b/code/modules/food_and_drinks/food/foods/pizza.dm
@@ -580,7 +580,7 @@
visible_message("[src] violently explodes!")
message_admins("A pizza bomb set by [key_name_admin(armer)] and opened by [key_name_admin(opener)] has detonated at [ADMIN_JMP(loc)].")
log_game("Pizza bomb set by [key_name(armer)] and opened by [key_name(opener)]) detonated at ([loc.x],[loc.y],[loc.z]).")
- explosion(loc, 1, 2, 4, flame_range = 2) //Identical to a minibomb
+ explosion(loc, 1, 2, 4, flame_range = 2, cause = "Pizza bomb") //Identical to a minibomb
qdel(src)
/obj/item/pizzabox/pizza_bomb/cmag_act(mob/user)
diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm
index 7bb115ee6d6..c4ee41cafa9 100644
--- a/code/modules/hydroponics/grown/citrus.dm
+++ b/code/modules/hydroponics/grown/citrus.dm
@@ -143,21 +143,21 @@
switch(seed.potency) //Combustible lemons are alot like IEDs, lots of flame, very little bang.
if(0 to 30)
update_mob()
- explosion(loc,-1,-1,2, flame_range = 1)
+ explosion(loc,-1,-1,2, flame_range = 1, cause = name)
qdel(src)
if(31 to 50)
update_mob()
- explosion(loc,-1,-1,2, flame_range = 2)
+ explosion(loc,-1,-1,2, flame_range = 2, cause = name)
qdel(src)
if(51 to 70)
update_mob()
- explosion(loc,-1,-1,2, flame_range = 3)
+ explosion(loc,-1,-1,2, flame_range = 3, cause = name)
qdel(src)
if(71 to 90)
update_mob()
- explosion(loc,-1,-1,2, flame_range = 4)
+ explosion(loc,-1,-1,2, flame_range = 4, cause = name)
qdel(src)
else
update_mob()
- explosion(loc,-1,-1,2, flame_range = 5)
+ explosion(loc,-1,-1,2, flame_range = 5, cause = name)
qdel(src)
diff --git a/code/modules/mining/equipment/mining_charges.dm b/code/modules/mining/equipment/mining_charges.dm
index 719a238fbd1..934d31cdedd 100644
--- a/code/modules/mining/equipment/mining_charges.dm
+++ b/code/modules/mining/equipment/mining_charges.dm
@@ -109,7 +109,7 @@
else
location = get_atom_on_turf(src)
if(location)
- explosion(location, boom_sizes[1], boom_sizes[2], boom_sizes[3], cause = src)
+ explosion(location, boom_sizes[1], boom_sizes[2], boom_sizes[3], cause = name)
location.ex_act(EXPLODE_HEAVY, target)
qdel(src)
diff --git a/code/modules/mining/lavaland/loot/legion_loot.dm b/code/modules/mining/lavaland/loot/legion_loot.dm
index afbbc627a47..4eef64984e4 100644
--- a/code/modules/mining/lavaland/loot/legion_loot.dm
+++ b/code/modules/mining/lavaland/loot/legion_loot.dm
@@ -165,7 +165,7 @@
"A thunderbolt strikes [target]!",
"A thundercrack fills the air!"
)
- explosion(target, -1, -1, light_impact_range = (boosted ? 1 : 0), flame_range = (boosted ? 2 : 1), silent = TRUE)
+ explosion(target, -1, -1, light_impact_range = (boosted ? 1 : 0), flame_range = (boosted ? 2 : 1), silent = TRUE, cause = name)
/obj/effect/temp_visual/thunderbolt_targeting
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index a649e58ca86..732fb9f9e4a 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -361,11 +361,11 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
spawn(det_time)
if(primed)
if(quality == GIBTONITE_QUALITY_HIGH)
- explosion(loc, 2, 4, 9, adminlog = notify_admins)
+ explosion(loc, 2, 4, 9, adminlog = notify_admins, cause = "Movable Gibtonite")
if(quality == GIBTONITE_QUALITY_MEDIUM)
- explosion(loc, 1, 2, 5, adminlog = notify_admins)
+ explosion(loc, 1, 2, 5, adminlog = notify_admins, cause = "Movable Gibtonite")
if(quality == GIBTONITE_QUALITY_LOW)
- explosion(loc, -1, 1, 3, adminlog = notify_admins)
+ explosion(loc, -1, 1, 3, adminlog = notify_admins, cause = "Movable Gibtonite")
qdel(src)
diff --git a/code/modules/mob/living/carbon/human/species/golem.dm b/code/modules/mob/living/carbon/human/species/golem.dm
index 47c2d40e3c6..cb47c382414 100644
--- a/code/modules/mob/living/carbon/human/species/golem.dm
+++ b/code/modules/mob/living/carbon/human/species/golem.dm
@@ -131,7 +131,7 @@
boom_warning = FALSE
if(H.bodytemperature > 850 && H.on_fire && prob(25))
- explosion(get_turf(H), 1, 2, 4, flame_range = 5)
+ explosion(get_turf(H), 1, 2, 4, flame_range = 5, cause = "Burning Plasma golem")
msg_admin_attack("Plasma Golem ([H.name]) exploded with radius 1, 2, 4 (flame_range: 5) at ([H.x],[H.y],[H.z]). User Ckey: [key_name_admin(H)]", ATKLOG_FEW)
log_game("Plasma Golem ([H.name]) exploded with radius 1, 2, 4 (flame_range: 5) at ([H.x],[H.y],[H.z]). User Ckey: [key_name_admin(H)]", ATKLOG_FEW)
if(H)
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 8fd188c22c7..2ad44d96520 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -97,7 +97,7 @@
"\The [source] arc flashes and electrocutes you!",
"You hear a lightning-like crack!")
playsound(loc, 'sound/effects/eleczap.ogg', 50, TRUE, -1)
- explosion(loc, -1, 0, 2, 2)
+ explosion(loc, -1, 0, 2, 2, cause = "Extreme Electrocution from [source]")
else
apply_damage(shock_damage, STAMINA)
visible_message(
diff --git a/code/modules/mob/living/silicon/ai/ai_death.dm b/code/modules/mob/living/silicon/ai/ai_death.dm
index b2dbf6e8bda..3a8149e2f00 100644
--- a/code/modules/mob/living/silicon/ai/ai_death.dm
+++ b/code/modules/mob/living/silicon/ai/ai_death.dm
@@ -32,7 +32,7 @@
if(explosive)
spawn(10) // REEEEEEEE
- explosion(src.loc, 3, 6, 12, 15)
+ explosion(src.loc, 3, 6, 12, 15, cause = "Adminbus explosive AI")
for(var/obj/machinery/ai_status_display/O as anything in GLOB.ai_displays) //change status
O.mode = AI_DISPLAY_MODE_BSOD
diff --git a/code/modules/mob/living/silicon/robot/robot_mob.dm b/code/modules/mob/living/silicon/robot/robot_mob.dm
index 926d1e7324d..a7bfe8796b1 100644
--- a/code/modules/mob/living/silicon/robot/robot_mob.dm
+++ b/code/modules/mob/living/silicon/robot/robot_mob.dm
@@ -1422,9 +1422,9 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
/mob/living/silicon/robot/proc/self_destruct()
if(emagged)
- explosion(src.loc,1,2,4,flame_range = 2)
+ explosion(src.loc,1,2,4,flame_range = 2, cause = "Self-destruct emagged cyborg")
else
- explosion(src.loc,-1,0,2)
+ explosion(src.loc,-1,0,2, cause = "Self-destruct cyborg")
gib()
return
diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm
index 345da7051ee..9bac2802d85 100644
--- a/code/modules/mob/living/simple_animal/friendly/dog.dm
+++ b/code/modules/mob/living/simple_animal/friendly/dog.dm
@@ -608,7 +608,7 @@
/mob/living/simple_animal/pet/dog/corgi/borgi/proc/explode()
visible_message("[src] makes an odd whining noise.")
- explosion(get_turf(src), 0, 1, 4, 7)
+ explosion(get_turf(src), 0, 1, 4, 7, cause = "Emagged E-N explosion")
death()
/mob/living/simple_animal/pet/dog/corgi/borgi/proc/shootAt(atom/movable/target)
diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm
index 782ce23fe38..2d4805ed83d 100644
--- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm
+++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm
@@ -41,7 +41,7 @@
/mob/living/simple_animal/spiderbot/Destroy()
if(emagged)
QDEL_NULL(mmi)
- explosion(get_turf(src), -1, -1, 3, 5)
+ explosion(get_turf(src), -1, -1, 3, 5, cause = "Emagged spiderbot destruction")
else
eject_brain()
return ..()
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm
index 0ce36c72ad3..db41ea229fd 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm
@@ -494,7 +494,7 @@ Difficulty: Hard
addtimer(CALLBACK(src, PROC_REF(kaboom)), 10 SECONDS)
/mob/living/simple_animal/hostile/megafauna/ancient_robot/proc/kaboom()
- explosion(get_turf(src), -1, 7, 15, 20)
+ explosion(get_turf(src), -1, 7, 15, 20, cause = "[name] death")
health = 0
death(allowed = TRUE)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining/elites/goliath_broodmother.dm b/code/modules/mob/living/simple_animal/hostile/mining/elites/goliath_broodmother.dm
index 204e21a3c66..75a0295bb4b 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining/elites/goliath_broodmother.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining/elites/goliath_broodmother.dm
@@ -209,7 +209,7 @@
if(!QDELETED(mother))
mother.children_list -= src
visible_message("[src] explodes!")
- explosion(src, flame_range = 3, adminlog = FALSE)
+ explosion(src, flame_range = 3, adminlog = FALSE, cause = "[name] death")
new /obj/item/stack/sheet/animalhide/goliath_hide(loc)
new /obj/effect/gibspawner/human(get_turf(src))
qdel(src)
diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm b/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm
index d620ef8b375..72c9092f354 100644
--- a/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm
+++ b/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm
@@ -325,7 +325,7 @@
/mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/space/death()
visible_message("[src] explodes!")
playsound(loc, 'sound/items/timer.ogg', 30, FALSE)
- explosion(src, 0, 4, 4, flame_range = 2, adminlog = FALSE)
+ explosion(src, 0, 4, 4, flame_range = 2, adminlog = FALSE, cause = "[name] autogib")
qdel(src)
/mob/living/simple_animal/hostile/syndicate/melee/space
diff --git a/code/modules/pda/PDA.dm b/code/modules/pda/PDA.dm
index 4603acd0526..0221d913c90 100644
--- a/code/modules/pda/PDA.dm
+++ b/code/modules/pda/PDA.dm
@@ -359,7 +359,7 @@ GLOBAL_LIST_EMPTY(PDAs)
if(T)
T.hotspot_expose(700,125)
- explosion(T, -1, -1, 2, 3)
+ explosion(T, -1, -1, 2, 3, cause = "Exploding PDA")
qdel(src)
return
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index d9f9b545fc6..16b6cf251bf 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -137,7 +137,7 @@
log_admin("LOG: Rigged power cell explosion, last touched by [fingerprintslast]")
message_admins("LOG: Rigged power cell explosion, last touched by [fingerprintslast]")
- explosion(T, devastation_range, heavy_impact_range, light_impact_range, flash_range)
+ explosion(T, devastation_range, heavy_impact_range, light_impact_range, flash_range, cause = "Powercell explosion")
charge = 0 //Extra safety in the event the cell does not QDEL right
qdel(src)
diff --git a/code/modules/power/engines/singularity/singularity.dm b/code/modules/power/engines/singularity/singularity.dm
index 0940b61362c..6b2bfcb7b5e 100644
--- a/code/modules/power/engines/singularity/singularity.dm
+++ b/code/modules/power/engines/singularity/singularity.dm
@@ -511,7 +511,7 @@ GLOBAL_VAR_INIT(global_singulo_id, 1)
/obj/singularity/singularity_act()
var/gain = (energy/2)
var/dist = max((current_size - 2), 1)
- explosion(loc, (dist), (dist * 2), (dist * 4))
+ explosion(loc, (dist), (dist * 2), (dist * 4), cause = "singularity on singularity violence")
qdel(src)
return(gain)
diff --git a/code/modules/power/engines/supermatter/supermatter.dm b/code/modules/power/engines/supermatter/supermatter.dm
index 671eef843d3..7c1ce835678 100644
--- a/code/modules/power/engines/supermatter/supermatter.dm
+++ b/code/modules/power/engines/supermatter/supermatter.dm
@@ -410,7 +410,7 @@
//Dear mappers, balance the sm max explosion radius to 17.5, 37, 39, 41
if(forced_gasmix_power_ratio)
gasmix_power_ratio = forced_gasmix_power_ratio
- explosion(get_turf(T), explosion_power * max(gasmix_power_ratio, 0.205) * 0.5 , explosion_power * max(gasmix_power_ratio, 0.205) + 2, explosion_power * max(gasmix_power_ratio, 0.205) + 4 , explosion_power * max(gasmix_power_ratio, 0.205) + 6, 1, 1)
+ explosion(get_turf(T), explosion_power * max(gasmix_power_ratio, 0.205) * 0.5 , explosion_power * max(gasmix_power_ratio, 0.205) + 2, explosion_power * max(gasmix_power_ratio, 0.205) + 4 , explosion_power * max(gasmix_power_ratio, 0.205) + 6, 1, 1, cause = "Exploding Supermatter")
qdel(src)
/obj/machinery/atmospherics/supermatter_crystal/process_atmos()
diff --git a/code/modules/power/generators/portable generators/pacman.dm b/code/modules/power/generators/portable generators/pacman.dm
index 5527ce08c72..2d35da9501f 100644
--- a/code/modules/power/generators/portable generators/pacman.dm
+++ b/code/modules/power/generators/portable generators/pacman.dm
@@ -339,7 +339,7 @@
/obj/machinery/power/port_gen/pacman/super/explode()
//a nice burst of radiation
radiation_pulse(get_turf(src), 2000, ALPHA_RAD)
- explosion(loc, 3, 3, 5, 3)
+ explosion(loc, 3, 3, 5, 3, cause = "Exploding [name]")
qdel(src)
/obj/machinery/power/port_gen/pacman/mrs
@@ -372,7 +372,7 @@
/obj/machinery/power/port_gen/pacman/mrs/explode()
//no special effects, but the explosion is pretty big (same as a supermatter shard).
- explosion(loc, 3, 6, 12, 16, 1)
+ explosion(loc, 3, 6, 12, 16, 1, cause = "Exploding [name]")
qdel(src)
#undef SHEET_VOLUME
diff --git a/code/modules/power/generators/portable generators/port_gen.dm b/code/modules/power/generators/portable generators/port_gen.dm
index 45e11ce9ac2..aa2afd20152 100644
--- a/code/modules/power/generators/portable generators/port_gen.dm
+++ b/code/modules/power/generators/portable generators/port_gen.dm
@@ -78,5 +78,5 @@
stat &= ~EMPED
/obj/machinery/power/port_gen/proc/explode()
- explosion(loc, -1, 3, 5, -1)
+ explosion(loc, -1, 3, 5, -1, cause = "Exploding [name]")
qdel(src)
diff --git a/code/modules/power/lights.dm b/code/modules/power/lights.dm
index b2d9ecc0684..ac003e321a0 100644
--- a/code/modules/power/lights.dm
+++ b/code/modules/power/lights.dm
@@ -936,7 +936,7 @@
zap_flags &= ~(ZAP_MACHINE_EXPLOSIVE | ZAP_OBJ_DAMAGE)
. = ..()
if(explosive)
- explosion(src, 0, 0, 0, flame_range = 5, adminlog = FALSE)
+ explosion(src, 0, 0, 0, flame_range = 5, cause = "Exploding light")
qdel(src)
// timed process
@@ -963,7 +963,7 @@
/obj/machinery/light/proc/actually_explode()
var/turf/T = get_turf(loc)
- explosion(T, 0, 0, 2, 2)
+ explosion(T, 0, 0, 2, 2, cause = "exploding light")
qdel(src)
/obj/machinery/light/extinguish_light(force = FALSE)
diff --git a/code/modules/projectiles/guns/chaos_bolt.dm b/code/modules/projectiles/guns/chaos_bolt.dm
index 6f56dacd7d0..1f4be0bc7d0 100644
--- a/code/modules/projectiles/guns/chaos_bolt.dm
+++ b/code/modules/projectiles/guns/chaos_bolt.dm
@@ -145,7 +145,7 @@
qdel(H)
if("exploded")
H.visible_message("[H] explodes!", "Boom!")
- explosion(get_turf(H), 1, 1, 1, cause = "staff of chaos lethal explosion effect")
+ explosion(get_turf(H), 1, 1, 1, cause = "staff of chaos lethal explosion effect, fired by [key_name(firer)]")
if("cheese morphed")
H.visible_message("[H] transforms into cheese!", "You've been transformed into cheese!")
new /obj/item/food/sliced/cheesewedge(get_turf(H))
@@ -192,7 +192,7 @@
if("fireballed")
H.visible_message("[H] is hit by a fireball! ", "You get hit by a fireball!")
H.apply_damage(CHAOS_STAFF_DAMAGE / 3, BRUTE)
- explosion(get_turf(H), -1, 0, 2, 3, flame_range = 2, cause = "staff of chaos fireball effect")
+ explosion(get_turf(H), -1, 0, 2, 3, flame_range = 2, cause = "staff of chaos fireball effect, fired by [key_name(firer)]")
if("ice spiked")
H.visible_message("[H]'s chest get pierced by an ice spike!", "An ice spike pierces your chest!")
H.apply_damage(CHAOS_STAFF_DAMAGE, BRUTE, "chest")
diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm
index 3e3d488741d..74685d08d4a 100644
--- a/code/modules/projectiles/guns/magic/wand.dm
+++ b/code/modules/projectiles/guns/magic/wand.dm
@@ -188,7 +188,7 @@ CONTENTS:
max_charges = 8 //8, 4, 4, 3
/obj/item/gun/magic/wand/fireball/zap_self(mob/living/user)
- explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2)
+ explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2, cause = "Self-fireball")
charges--
..()
@@ -234,7 +234,7 @@ CONTENTS:
"Unsure which end of [src] is which, you accidentally zap yourself with a fireball!",
"You hear a firey explosion!"
)
- explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2)
+ explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2, cause = "Fireball to the face from failed cigarette lighting")
charges--
return TRUE
diff --git a/code/modules/projectiles/guns/medbeam.dm b/code/modules/projectiles/guns/medbeam.dm
index 992051934a2..e2cce3d1dda 100644
--- a/code/modules/projectiles/guns/medbeam.dm
+++ b/code/modules/projectiles/guns/medbeam.dm
@@ -106,7 +106,7 @@
for(var/obj/effect/ebeam/medical/B in turf)// Don't cross the str-beams!
if(B.owner != current_beam)
turf.visible_message("The medbeams cross and EXPLODE!")
- explosion(B.loc,0,3,5,8)
+ explosion(B.loc,0,3,5,8, cause = "Crossed beams")
qdel(dummy)
return FALSE
qdel(dummy)
diff --git a/code/modules/projectiles/projectile/homing_projectiles.dm b/code/modules/projectiles/projectile/homing_projectiles.dm
index 93d07b648ab..f3c0d87c971 100644
--- a/code/modules/projectiles/projectile/homing_projectiles.dm
+++ b/code/modules/projectiles/projectile/homing_projectiles.dm
@@ -68,6 +68,6 @@
/obj/item/projectile/homing/magic/homing_fireball/on_hit(mob/living/target)
. = ..()
- explosion(get_turf(target), explosion_devastate, explosion_heavy, explosion_light, explosion_flash, 0, flame_range = explosion_fire)
+ explosion(get_turf(target), explosion_devastate, explosion_heavy, explosion_light, explosion_flash, 0, flame_range = explosion_fire, cause = "Homing Fireball")
if(istype(target)) //multiple flavors of pain
target.adjustFireLoss(10) // does 20 brute, and 10 burn + explosion. Pretty brutal.
diff --git a/code/modules/projectiles/projectile/magic_projectiles.dm b/code/modules/projectiles/projectile/magic_projectiles.dm
index f9ff52c7b03..456caa8412e 100644
--- a/code/modules/projectiles/projectile/magic_projectiles.dm
+++ b/code/modules/projectiles/projectile/magic_projectiles.dm
@@ -102,7 +102,7 @@
if(!.)
return .
var/turf/T = get_turf(target)
- explosion(T, exp_devastate, exp_heavy, exp_light, exp_flash, 0, flame_range = exp_fire)
+ explosion(T, exp_devastate, exp_heavy, exp_light, exp_flash, 0, flame_range = exp_fire, cause = name)
if(ismob(target)) //multiple flavors of pain
var/mob/living/M = target
M.take_overall_damage(0,10) //between this 10 burn, the 10 brute, the explosion brute, and the onfire burn, your at about 65 damage if you stop drop and roll immediately
diff --git a/code/modules/projectiles/projectile/special_projectiles.dm b/code/modules/projectiles/projectile/special_projectiles.dm
index a33f148c00e..7aa798a0fde 100644
--- a/code/modules/projectiles/projectile/special_projectiles.dm
+++ b/code/modules/projectiles/projectile/special_projectiles.dm
@@ -215,7 +215,7 @@
/obj/item/projectile/bullet/frag12/on_hit(atom/target, blocked = 0)
..()
- explosion(target, -1, 0, 1)
+ explosion(target, -1, 0, 1, cause = "frag 12 fired by [key_name(firer)]")
return TRUE
/obj/item/projectile/bullet/confetti
diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm
index a7f4361161d..4a362f04797 100644
--- a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm
+++ b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm
@@ -141,7 +141,7 @@
fireflash_sm(T, radius, 2200 + radius * 250, radius * 50)
if(will_explode)
var/boomrange = min(max(min_explosion_radius, round(volume * volume_explosion_radius_multiplier + volume_explosion_radius_modifier)), max_explosion_radius)
- explosion(T, -1, -1, boomrange, 1)
+ explosion(T, -1, -1, boomrange, 1, cause = "Hot Welding Fuel Reagent")
/datum/reagent/fuel/reaction_turf(turf/T, volume) //Don't spill the fuel, or you'll regret it
if(isspaceturf(T))
diff --git a/code/modules/reagents/chemistry/recipes/drugs_reactions.dm b/code/modules/reagents/chemistry/recipes/drugs_reactions.dm
index 661d4b0c73c..8a73079bde5 100644
--- a/code/modules/reagents/chemistry/recipes/drugs_reactions.dm
+++ b/code/modules/reagents/chemistry/recipes/drugs_reactions.dm
@@ -20,7 +20,7 @@
/datum/chemical_reaction/crank/on_reaction(datum/reagents/holder, created_volume)
var/turf/T = get_turf(holder.my_atom)
fireflash(holder.my_atom, 1)
- explosion(T, 0, 0, 2)
+ explosion(T, 0, 0, 2, cause = "Crank reaction")
/datum/chemical_reaction/krokodil
name = "Krokodil"
@@ -81,7 +81,7 @@
/datum/chemical_reaction/mephedrone/on_reaction(datum/reagents/holder) //Will make it harder for botany, need a chem heater or will suffer, and mixing in plants wont work
var/turf/T = get_turf(holder.my_atom)
fireflash(holder.my_atom, 3, 500)
- explosion(T, 0, 0, 2, 2, flame_range = 2)
+ explosion(T, 0, 0, 2, 2, flame_range = 2, cause = "Mephedrone reaction")
/datum/chemical_reaction/jenkem
name = "Jenkem"
diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
index 98c1b7ea6dd..52e3e83378d 100644
--- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
+++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
@@ -172,9 +172,9 @@
var/ex_light = round(created_volume / 20)
var/ex_flash = round(created_volume / 8)
if(istype(holder.my_atom)) //ensures the explosion happens at the container, not where its primed at
- explosion(holder.my_atom.loc, ex_severe, ex_heavy,ex_light, ex_flash, 1)
+ explosion(holder.my_atom.loc, ex_severe, ex_heavy,ex_light, ex_flash, 1, cause = "Blackpowder Explosion")
else
- explosion(prime_location, ex_severe, ex_heavy,ex_light, ex_flash, 1)
+ explosion(prime_location, ex_severe, ex_heavy,ex_light, ex_flash, 1, cause = "Blackpowder Explosion")
// If this black powder is in a decal, remove the decal, because it just exploded
if(istype(holder.my_atom, /obj/effect/decal/cleanable/dirt/blackpowder))
qdel(holder.my_atom)
@@ -342,7 +342,7 @@
/datum/chemical_reaction/azide/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
- explosion(location, 0, 1, 4)
+ explosion(location, 0, 1, 4, cause = "Azide reaction")
/datum/chemical_reaction/firefighting_foam
name = "firefighting_foam"
@@ -364,7 +364,7 @@
/datum/chemical_reaction/clf3_firefighting/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
- explosion(location, -1, 0, 2)
+ explosion(location, -1, 0, 2, cause = "CLF3 reaction")
/datum/chemical_reaction/shock_explosion
name = "shock_explosion"
diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
index f0879389dc8..b87c881b7a5 100644
--- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm
+++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
@@ -536,7 +536,7 @@
var/turf/extract_turf = get_turf(extract)
message_admins("[who] triggered an oil slime explosion at [COORD(extract_turf)].")
log_game("[who] triggered an oil slime explosion at [COORD(extract_turf)].")
- explosion(extract_turf, 1, 3, 6)
+ explosion(extract_turf, 1, 3, 6, cause = "Oil Slime explosion")
/datum/chemical_reaction/oil_slick
name = "Oil Potion"
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index 8c9c7ef4e0b..cb395ed749b 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -275,7 +275,7 @@
reagent_id = "beer"
/obj/structure/reagent_dispensers/beerkeg/blob_act(obj/structure/blob/B)
- explosion(loc, 0, 3, 5, 7, 10)
+ explosion(loc, 0, 3, 5, 7, 10, cause = "Blob caused [src] to explode.")
if(!QDELETED(src))
qdel(src)
diff --git a/code/modules/research/strange_objects.dm b/code/modules/research/strange_objects.dm
index 1d76e92c9e7..5b60b0b8b58 100644
--- a/code/modules/research/strange_objects.dm
+++ b/code/modules/research/strange_objects.dm
@@ -185,7 +185,7 @@
/obj/item/relic/proc/explode_callback(mob/user)
if(loc == user)
visible_message("[src]'s top opens, releasing a powerful blast!")
- explosion(user.loc, -1, rand(1,5), rand(1,5), rand(1,5), rand(1,5), flame_range = 2)
+ explosion(user.loc, -1, rand(1,5), rand(1,5), rand(1,5), rand(1,5), flame_range = 2, cause = "Exploding relic")
warn_admins(user, "Explosion")
qdel(src)
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index f9985ae38ae..91077b379f9 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -230,7 +230,7 @@
var/turf/T = get_turf(loc)
if(T)
T.hotspot_expose(700, 125)
- explosion(T, -1, -1, 2, 3)
+ explosion(T, -1, -1, 2, 3, cause = "Repeated Sentience Potion")
qdel(src)
return
var/reason_text = tgui_input_text(user, "Enter reason for giving sentience", "Reason for sentience potion")
diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm
index bb84a5781d6..67f69aab290 100644
--- a/code/modules/station_goals/bsa.dm
+++ b/code/modules/station_goals/bsa.dm
@@ -219,7 +219,7 @@
message_admins("[key_name_admin(user)] has launched an artillery strike.")//Admin BSA firing, just targets a room, which the explosion says
log_admin("[key_name(user)] has launched an artillery strike.") // Line below handles logging the explosion to disk
- explosion(bullseye,ex_power,ex_power*2,ex_power*4)
+ explosion(bullseye,ex_power,ex_power*2,ex_power*4, cause = "BSA strike")
reload()
diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm
index 3e17ce220f3..83e0b114e91 100644
--- a/code/modules/surgery/organs/organ_external.dm
+++ b/code/modules/surgery/organs/organ_external.dm
@@ -933,7 +933,7 @@ Note that amputating the affected organ does in fact remove the infection from t
"\The [victim]'s [name] explodes violently!",\
"Your [name] explodes!",\
"You hear an explosion!")
- explosion(get_turf(victim), -1, -1, 2, 3)
+ explosion(get_turf(victim), -1, -1, 2, 3, cause = "Sabotaged robotic limb")
do_sparks(5, 0, victim)
qdel(src)