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)