diff --git a/code/datums/components/field_of_vision.dm b/code/datums/components/field_of_vision.dm
index 5fb7b2596c..4c03346639 100644
--- a/code/datums/components/field_of_vision.dm
+++ b/code/datums/components/field_of_vision.dm
@@ -327,7 +327,7 @@
/atom/movable/fov_holder/has_gravity(turf/T)
return FALSE
-/atom/movable/fov_holder/ex_act(severity)
+/atom/movable/fov_holder/ex_act(severity, target, origin)
return FALSE
/atom/movable/fov_holder/singularity_act()
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 75c84bd2a8..b59bf98190 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -439,7 +439,7 @@
mob_occupant.copy_from_prefs_vr()
go_out()
-/obj/machinery/clonepod/ex_act(severity, target)
+/obj/machinery/clonepod/ex_act(severity, target, origin)
..()
if(!QDELETED(src))
go_out()
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 9ff03cd387..d1781d9477 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -407,7 +407,7 @@
if(!stat) //Opens only powered doors.
open() //Open everything!
-/obj/machinery/door/ex_act(severity, target)
+/obj/machinery/door/ex_act(severity, target, origin)
//if it blows up a wall it should blow up a door
..(severity ? max(1, severity - 1) : 0, target)
diff --git a/code/game/machinery/doors/passworddoor.dm b/code/game/machinery/doors/passworddoor.dm
index 0c64151bca..c4f01e58b5 100644
--- a/code/game/machinery/doors/passworddoor.dm
+++ b/code/game/machinery/doors/passworddoor.dm
@@ -69,7 +69,7 @@
/obj/machinery/door/password/emp_act(severity)
return
-/obj/machinery/door/password/ex_act(severity, target)
+/obj/machinery/door/password/ex_act(severity, target, origin)
return
/obj/machinery/door/password/wave_ex_act(power, datum/wave_explosion/explosion, dir)
diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm
index 8c7fc692bc..e1c0843f55 100644
--- a/code/game/machinery/doors/poddoor.dm
+++ b/code/game/machinery/doors/poddoor.dm
@@ -68,7 +68,7 @@
return ..()
//"BLAST" doors are obviously stronger than regular doors when it comes to BLASTS.
-/obj/machinery/door/poddoor/ex_act(severity, target)
+/obj/machinery/door/poddoor/ex_act(severity, target, origin)
if(severity == 3)
return
..()
diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm
index 4009b1b56b..3bee98b51d 100644
--- a/code/game/machinery/syndicatebomb.dm
+++ b/code/game/machinery/syndicatebomb.dm
@@ -270,7 +270,7 @@
var/range_light = 17
var/range_flame = 17
-/obj/item/bombcore/ex_act(severity, target) // Little boom can chain a big boom.
+/obj/item/bombcore/ex_act(severity, target, origin) // Little boom can chain a big boom.
detonate()
diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm
index 93a030a004..9cc1f7d98d 100644
--- a/code/game/mecha/mecha_defense.dm
+++ b/code/game/mecha/mecha_defense.dm
@@ -111,7 +111,7 @@
mecha_log_message("Hit by projectile. Type: [Proj.name]([Proj.flag]).", color="red")
. = ..()
-/obj/mecha/ex_act(severity, target)
+/obj/mecha/ex_act(severity, target, origin)
mecha_log_message("Affected by explosion of severity: [severity].", color="red")
if(prob(deflect_chance))
severity++
diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm
index 66579c90f3..39f68bc97c 100644
--- a/code/game/objects/effects/anomalies.dm
+++ b/code/game/objects/effects/anomalies.dm
@@ -69,7 +69,7 @@
/obj/effect/anomaly/proc/detonate()
return
-/obj/effect/anomaly/ex_act(severity, target)
+/obj/effect/anomaly/ex_act(severity, target, origin)
if(severity == 1)
qdel(src)
diff --git a/code/game/objects/effects/countdown.dm b/code/game/objects/effects/countdown.dm
index 6017e8fc07..b425946789 100644
--- a/code/game/objects/effects/countdown.dm
+++ b/code/game/objects/effects/countdown.dm
@@ -60,7 +60,7 @@
STOP_PROCESSING(SSfastprocess, src)
. = ..()
-/obj/effect/countdown/ex_act(severity, target) //immune to explosions
+/obj/effect/countdown/ex_act(severity, target, origin) //immune to explosions
return
/obj/effect/countdown/syndicatebomb
diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm
index 5a6d5e54e9..57ad11e6c4 100644
--- a/code/game/objects/effects/decals/cleanable.dm
+++ b/code/game/objects/effects/decals/cleanable.dm
@@ -77,10 +77,10 @@
else
return ..()
-/obj/effect/decal/cleanable/ex_act()
+/obj/effect/decal/cleanable/ex_act(severity, target, origin)
if(reagents)
for(var/datum/reagent/R in reagents.reagent_list)
- R.on_ex_act()
+ R.on_ex_act(severity)
..()
/obj/effect/decal/cleanable/fire_act(exposed_temperature, exposed_volume)
diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm
index 4b63cbecc8..09fbdb6528 100644
--- a/code/game/objects/effects/decals/cleanable/gibs.dm
+++ b/code/game/objects/effects/decals/cleanable/gibs.dm
@@ -36,7 +36,7 @@
. = ..()
return /obj/effect/decal/cleanable/blood/gibs/old
-/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target)
+/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target, origin)
return
/obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L)
diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm
index fe4ab20617..62e4dbf5f3 100644
--- a/code/game/objects/effects/decals/cleanable/misc.dm
+++ b/code/game/objects/effects/decals/cleanable/misc.dm
@@ -47,7 +47,7 @@
. = ..()
setDir(pick(GLOB.cardinals))
-/obj/effect/decal/cleanable/glass/ex_act()
+/obj/effect/decal/cleanable/glass/ex_act(severity, target, origin)
qdel(src)
/obj/effect/decal/cleanable/glass/wave_ex_act(power, datum/wave_explosion/explosion, dir)
diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm
index 9dd3c2a852..1eb3533f71 100644
--- a/code/game/objects/effects/decals/cleanable/robots.dm
+++ b/code/game/objects/effects/decals/cleanable/robots.dm
@@ -32,7 +32,7 @@
if (!step_to(src, get_step(src, direction), 0))
break
-/obj/effect/decal/cleanable/robot_debris/ex_act()
+/obj/effect/decal/cleanable/robot_debris/ex_act(severity, target, origin)
return
/obj/effect/decal/cleanable/robot_debris/limb
diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm
index 5f312f2bf3..cdf16468f4 100644
--- a/code/game/objects/effects/decals/decal.dm
+++ b/code/game/objects/effects/decals/decal.dm
@@ -17,7 +17,7 @@
/obj/effect/decal/proc/NeverShouldHaveComeHere(turf/T)
return isclosedturf(T) || isgroundlessturf(T)
-/obj/effect/decal/ex_act(severity, target)
+/obj/effect/decal/ex_act(severity, target, origin)
qdel(src)
/obj/effect/decal/fire_act(exposed_temperature, exposed_volume)
diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm
index 979b811bc5..fb245f7607 100644
--- a/code/game/objects/effects/effects.dm
+++ b/code/game/objects/effects/effects.dm
@@ -30,7 +30,7 @@
/obj/effect/experience_pressure_difference()
return
-/obj/effect/ex_act(severity, target)
+/obj/effect/ex_act(severity, target, origin)
if(target == src)
qdel(src)
else
@@ -51,7 +51,7 @@
/obj/effect/ConveyorMove()
return
-/obj/effect/abstract/ex_act(severity, target)
+/obj/effect/abstract/ex_act(severity, target, origin)
return
/obj/effect/abstract/singularity_pull()
diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm
index a484f78b41..8ff4017b8c 100644
--- a/code/game/objects/effects/landmarks.dm
+++ b/code/game/objects/effects/landmarks.dm
@@ -11,7 +11,7 @@
return
// Please stop bombing the Observer-Start landmark.
-/obj/effect/landmark/ex_act()
+/obj/effect/landmark/ex_act(severity, target, origin)
return
/obj/effect/landmark/singularity_pull()
diff --git a/code/game/objects/effects/temporary_visuals/temporary_visual.dm b/code/game/objects/effects/temporary_visuals/temporary_visual.dm
index 615f392a86..9a4c26111f 100644
--- a/code/game/objects/effects/temporary_visuals/temporary_visual.dm
+++ b/code/game/objects/effects/temporary_visuals/temporary_visual.dm
@@ -25,7 +25,7 @@
/obj/effect/temp_visual/singularity_pull()
return
-/obj/effect/temp_visual/ex_act()
+/obj/effect/temp_visual/ex_act(severity, target, origin)
return
/obj/effect/temp_visual/dir_setting
diff --git a/code/game/objects/items/chrono_eraser.dm b/code/game/objects/items/chrono_eraser.dm
index c104d5c62a..04838103f9 100644
--- a/code/game/objects/items/chrono_eraser.dm
+++ b/code/game/objects/items/chrono_eraser.dm
@@ -266,7 +266,7 @@
/obj/effect/chrono_field/singularity_pull()
return
-/obj/effect/chrono_field/ex_act()
+/obj/effect/chrono_field/ex_act(severity, target, origin)
return
/obj/effect/chrono_field/blob_act(obj/structure/blob/B)
diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm
index a45f26062b..8656cc21f1 100644
--- a/code/game/objects/items/devices/chameleonproj.dm
+++ b/code/game/objects/items/devices/chameleonproj.dm
@@ -144,8 +144,8 @@
/obj/effect/dummy/chameleon/attack_alien()
master.disrupt()
-/obj/effect/dummy/chameleon/ex_act(S, T)
- contents_explosion(S, T)
+/obj/effect/dummy/chameleon/ex_act(severity, target, origin)
+ contents_explosion(severity, target, origin)
master.disrupt()
/obj/effect/dummy/chameleon/bullet_act()
diff --git a/code/game/objects/items/devices/doorCharge.dm b/code/game/objects/items/devices/doorCharge.dm
index c38eb46baf..5ebb34eeed 100644
--- a/code/game/objects/items/devices/doorCharge.dm
+++ b/code/game/objects/items/devices/doorCharge.dm
@@ -14,7 +14,7 @@
attack_verb = list("blown up", "exploded", "detonated")
custom_materials = list(/datum/material/iron=50, /datum/material/glass=30)
-/obj/item/doorCharge/ex_act(severity, target)
+/obj/item/doorCharge/ex_act(severity, target, origin)
switch(severity)
if(EXPLODE_DEVASTATE)
visible_message("[src] detonates!")
diff --git a/code/game/objects/items/devices/portable_chem_mixer.dm b/code/game/objects/items/devices/portable_chem_mixer.dm
index c773699b1d..8ffd978c59 100644
--- a/code/game/objects/items/devices/portable_chem_mixer.dm
+++ b/code/game/objects/items/devices/portable_chem_mixer.dm
@@ -27,7 +27,7 @@
QDEL_NULL(beaker)
return ..()
-/obj/item/storage/portable_chem_mixer/ex_act(severity, target)
+/obj/item/storage/portable_chem_mixer/ex_act(severity, target, origin)
if(severity < 3)
..()
diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm
index b2f8b4bee2..64a7973f11 100644
--- a/code/game/objects/items/latexballoon.dm
+++ b/code/game/objects/items/latexballoon.dm
@@ -31,7 +31,7 @@
user.update_inv_hands()
loc.assume_air(air_contents)
-/obj/item/latexballon/ex_act(severity, target)
+/obj/item/latexballon/ex_act(severity, target, origin)
burst()
switch(severity)
if (1)
diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm
index dbfeb9d08f..29593cae06 100644
--- a/code/game/objects/items/melee/misc.dm
+++ b/code/game/objects/items/melee/misc.dm
@@ -557,7 +557,7 @@
..()
balanced = 0
-/obj/item/melee/supermatter_sword/ex_act(severity, target)
+/obj/item/melee/supermatter_sword/ex_act(severity, target, origin)
visible_message("The blast wave smacks into [src] and rapidly flashes to ash.",\
"You hear a loud crack as you are washed with a wave of heat.")
consume_everything()
diff --git a/code/game/objects/items/puzzle_pieces.dm b/code/game/objects/items/puzzle_pieces.dm
index 345f3185da..3f3e81604e 100644
--- a/code/game/objects/items/puzzle_pieces.dm
+++ b/code/game/objects/items/puzzle_pieces.dm
@@ -54,7 +54,7 @@
/obj/machinery/door/keycard/emp_act(severity)
return
-/obj/machinery/door/keycard/ex_act(severity, target)
+/obj/machinery/door/keycard/ex_act(severity, target, origin)
return
/obj/machinery/door/keycard/try_to_activate_door(mob/user)
diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm
index 15fd102878..95a651b50e 100644
--- a/code/game/objects/obj_defense.dm
+++ b/code/game/objects/obj_defense.dm
@@ -56,7 +56,7 @@
throwdamage = 0
take_damage(throwdamage, BRUTE, "melee", 1, get_dir(src, AM))
-/obj/ex_act(severity, target)
+/obj/ex_act(severity, target, origin)
if(resistance_flags & INDESTRUCTIBLE)
return
..() //contents explosion
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
index ff3f4d8793..bfb86b087b 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
@@ -21,7 +21,7 @@
if(.) //if we actually closed the locker
recursive_organ_check(src)
-/obj/structure/closet/secure_closet/freezer/ex_act()
+/obj/structure/closet/secure_closet/freezer/ex_act(severity, target, origin)
if(!jones)
jones = TRUE
else
diff --git a/code/game/objects/structures/reflector.dm b/code/game/objects/structures/reflector.dm
index 8174f6a82e..944e1dac9c 100644
--- a/code/game/objects/structures/reflector.dm
+++ b/code/game/objects/structures/reflector.dm
@@ -249,7 +249,7 @@
P.setAngle(rotation_angle)
return ..()
-/obj/structure/reflector/ex_act()
+/obj/structure/reflector/ex_act(severity, target, origin)
if(admin)
return
else
diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm
index 55eb100b21..beacee827c 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -84,7 +84,7 @@ FLOOR SAFES
/obj/structure/safe/blob_act(obj/structure/blob/B)
return
-/obj/structure/safe/ex_act(severity, target)
+/obj/structure/safe/ex_act(severity, target, origin)
if(((severity == 2 && target == src) || severity == 1) && explosion_count < BROKEN_THRESHOLD)
explosion_count++
switch(explosion_count)
diff --git a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm
index 82e946a2f4..3d6cbd8fbd 100644
--- a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm
+++ b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm
@@ -50,7 +50,7 @@
empty_pod(location)
qdel(src)
-/obj/structure/transit_tube_pod/ex_act(severity, target)
+/obj/structure/transit_tube_pod/ex_act(severity, target, origin)
..()
if(!QDELETED(src))
empty_pod()
diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm
index 199e7767f1..c831faca61 100644
--- a/code/game/turfs/simulated/floor/plating.dm
+++ b/code/game/turfs/simulated/floor/plating.dm
@@ -195,7 +195,7 @@
return TRUE
return FALSE
-/turf/open/floor/plating/foam/ex_act()
+/turf/open/floor/plating/foam/ex_act(severity, target, origin)
..()
ScrapeAway(flags = CHANGETURF_INHERIT_AIR)
diff --git a/code/game/turfs/simulated/floor/plating/asteroid.dm b/code/game/turfs/simulated/floor/plating/asteroid.dm
index ab2effa1ab..2770d12454 100644
--- a/code/game/turfs/simulated/floor/plating/asteroid.dm
+++ b/code/game/turfs/simulated/floor/plating/asteroid.dm
@@ -89,7 +89,7 @@
for(var/obj/item/stack/ore/O in src)
SEND_SIGNAL(W, COMSIG_PARENT_ATTACKBY, O)
-/turf/open/floor/plating/asteroid/ex_act(severity, target)
+/turf/open/floor/plating/asteroid/ex_act(severity, target, origin)
. = SEND_SIGNAL(src, COMSIG_ATOM_EX_ACT, severity, target)
contents_explosion(severity, target)
diff --git a/code/game/turfs/simulated/floor/plating/misc_plating.dm b/code/game/turfs/simulated/floor/plating/misc_plating.dm
index d834272bea..e49b6b78d3 100644
--- a/code/game/turfs/simulated/floor/plating/misc_plating.dm
+++ b/code/game/turfs/simulated/floor/plating/misc_plating.dm
@@ -120,7 +120,7 @@
/turf/open/floor/plating/beach/try_replace_tile(obj/item/stack/tile/T, mob/user, params)
return
-/turf/open/floor/plating/beach/ex_act(severity, target)
+/turf/open/floor/plating/beach/ex_act(severity, target, origin)
contents_explosion(severity, target)
/turf/open/floor/plating/beach/sand
diff --git a/code/game/turfs/simulated/floor/reinf_floor.dm b/code/game/turfs/simulated/floor/reinf_floor.dm
index 2d03624354..32eda3bdb7 100644
--- a/code/game/turfs/simulated/floor/reinf_floor.dm
+++ b/code/game/turfs/simulated/floor/reinf_floor.dm
@@ -53,7 +53,7 @@
acidpwr = min(acidpwr, 50) //we reduce the power so reinf floor never get melted.
. = ..()
-/turf/open/floor/engine/ex_act(severity,target)
+/turf/open/floor/engine/ex_act(severity,target, origin)
var/shielded = is_shielded()
contents_explosion(severity, target)
if(severity != 1 && shielded && target != src)
diff --git a/code/game/turfs/simulated/lava.dm b/code/game/turfs/simulated/lava.dm
index e7471478fb..8d7da15761 100644
--- a/code/game/turfs/simulated/lava.dm
+++ b/code/game/turfs/simulated/lava.dm
@@ -18,8 +18,8 @@
clawfootstep = FOOTSTEP_LAVA
heavyfootstep = FOOTSTEP_LAVA
-/turf/open/lava/ex_act(severity, target)
- contents_explosion(severity, target)
+/turf/open/lava/ex_act(severity, target, origin)
+ contents_explosion(severity, target, origin)
/turf/open/lava/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent)
return
diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm
index 4a5b9f43de..48e7fa8f8a 100644
--- a/code/game/turfs/simulated/minerals.dm
+++ b/code/game/turfs/simulated/minerals.dm
@@ -171,7 +171,7 @@
/turf/closed/mineral/acid_melt()
ScrapeAway()
-/turf/closed/mineral/ex_act(severity, target)
+/turf/closed/mineral/ex_act(severity, target, origin)
..()
switch(severity)
if(3)
@@ -661,7 +661,7 @@
/turf/closed/mineral/strong/acid_melt()
return
-/turf/closed/mineral/strong/ex_act(severity, target)
+/turf/closed/mineral/strong/ex_act(severity, target, origin)
return
#undef MINING_MESSAGE_COOLDOWN
diff --git a/code/game/turfs/simulated/wall/mineral_walls.dm b/code/game/turfs/simulated/wall/mineral_walls.dm
index ed48c24462..f59b90a62a 100644
--- a/code/game/turfs/simulated/wall/mineral_walls.dm
+++ b/code/game/turfs/simulated/wall/mineral_walls.dm
@@ -272,12 +272,10 @@
icon_state = "map-overspace"
fixed_underlay = list("space"=1)
-/turf/closed/wall/mineral/plastitanium/explosive/ex_act(severity)
+/turf/closed/wall/mineral/plastitanium/explosive/ex_act(severity, target, origin)
var/datum/explosion/acted_explosion = null
- for(var/datum/explosion/E in GLOB.explosions)
- if(E.explosion_id == explosion_id)
- acted_explosion = E
- break
+ if(istype(origin, /datum/explosion))
+ acted_explosion = origin
if(acted_explosion && istype(acted_explosion.explosion_source, /obj/item/bombcore))
var/obj/item/bombcore/large/bombcore = new(get_turf(src))
bombcore.detonate()
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index 3a150d1a71..6303b33afa 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -88,7 +88,7 @@
if(1)
//SN src = null
var/turf/NT = ScrapeAway()
- NT.contents_explosion(severity, target)
+ NT.contents_explosion(severity, target, origin)
return
if(2)
if (prob(50))
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index 72ec804d28..a0a1da9584 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -1592,7 +1592,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
light_range = 2
duration = 9
-/obj/effect/temp_visual/target/ex_act()
+/obj/effect/temp_visual/target/ex_act(severity, target, origin)
return
/obj/effect/temp_visual/target/Initialize(mapload, list/flame_hit)
diff --git a/code/modules/antagonists/blob/blob/blobs/core.dm b/code/modules/antagonists/blob/blob/blobs/core.dm
index 38484c70b0..ef7c01a781 100644
--- a/code/modules/antagonists/blob/blob/blobs/core.dm
+++ b/code/modules/antagonists/blob/blob/blobs/core.dm
@@ -45,7 +45,7 @@
GLOB.poi_list -= src
return ..()
-/obj/structure/blob/core/ex_act(severity, target)
+/obj/structure/blob/core/ex_act(severity, target, origin)
var/damage = 50 - 10 * severity //remember, the core takes half brute damage, so this is 20/15/10 damage based on severity
take_damage(damage, BRUTE, "bomb", 0)
diff --git a/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm b/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm
index 97d2935a86..7e2fd1e11c 100644
--- a/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm
+++ b/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm
@@ -8,7 +8,7 @@
linked.examine(user)
return ..()
-/obj/effect/clockwork/overlay/ex_act()
+/obj/effect/clockwork/overlay/ex_act(severity, target, origin)
return FALSE
/obj/effect/clockwork/overlay/singularity_act()
diff --git a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm
index 1e8c7242ad..d7facb7f2d 100644
--- a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm
+++ b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm
@@ -36,7 +36,7 @@
return TRUE
. = ..()
-/obj/effect/clockwork/sigil/ex_act(severity)
+/obj/effect/clockwork/sigil/ex_act(severity, target, origin)
visible_message("[src] scatters into thousands of particles.")
qdel(src)
@@ -204,7 +204,7 @@
. = ..()
update_icon()
-/obj/effect/clockwork/sigil/transmission/ex_act(severity)
+/obj/effect/clockwork/sigil/transmission/ex_act(severity, target, origin)
if(severity == 3)
adjust_clockwork_power(500) //Light explosions charge the network!
visible_message("[src] flares a brilliant orange!")
diff --git a/code/modules/antagonists/clockcult/clock_effects/servant_blocker.dm b/code/modules/antagonists/clockcult/clock_effects/servant_blocker.dm
index ce6e315cd8..6fc2bde9d8 100644
--- a/code/modules/antagonists/clockcult/clock_effects/servant_blocker.dm
+++ b/code/modules/antagonists/clockcult/clock_effects/servant_blocker.dm
@@ -38,7 +38,7 @@
/obj/effect/clockwork/servant_blocker/singularity_pull()
return
-/obj/effect/clockwork/servant_blocker/ex_act(severity, target)
+/obj/effect/clockwork/servant_blocker/ex_act(severity, target, origin)
return
/obj/effect/clockwork/servant_blocker/safe_throw_at()
diff --git a/code/modules/antagonists/clockcult/clock_effects/spatial_gateway.dm b/code/modules/antagonists/clockcult/clock_effects/spatial_gateway.dm
index ab8c7abd0a..f2aa443f82 100644
--- a/code/modules/antagonists/clockcult/clock_effects/spatial_gateway.dm
+++ b/code/modules/antagonists/clockcult/clock_effects/spatial_gateway.dm
@@ -102,7 +102,7 @@
return TRUE
return ..()
-/obj/effect/clockwork/spatial_gateway/ex_act(severity)
+/obj/effect/clockwork/spatial_gateway/ex_act(severity, target, origin)
if(severity == 1 && uses)
uses = 0
visible_message("[src] is disrupted!")
@@ -251,7 +251,7 @@
name = "stable gateway"
is_stable = TRUE
-/obj/effect/clockwork/spatial_gateway/stable/ex_act(severity)
+/obj/effect/clockwork/spatial_gateway/stable/ex_act(severity, target, origin)
if(severity == 1)
start_shutdown() //Yes, you can chain devastation-level explosions to delay a gateway shutdown, if you somehow manage to do it without breaking the obelisk. Is it worth it? Probably not.
return TRUE
diff --git a/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm b/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm
index 6a53097922..e748da8765 100644
--- a/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm
+++ b/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm
@@ -214,5 +214,5 @@
sleep(3) //so the animation completes properly
qdel(src)
-/obj/effect/clockwork/judicial_marker/ex_act(severity)
+/obj/effect/clockwork/judicial_marker/ex_act(severity, target, origin)
return
diff --git a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
index 6204871a77..2391658613 100644
--- a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
@@ -197,7 +197,7 @@
glow = new /obj/effect/clockwork/overlay/gateway_glow(get_turf(src))
glow.linked = src
-/obj/structure/destructible/clockwork/massive/celestial_gateway/ex_act(severity)
+/obj/structure/destructible/clockwork/massive/celestial_gateway/ex_act(severity, target, origin)
var/damage = max((obj_integrity * 0.7) / severity, 100) //requires multiple bombs to take down
take_damage(damage, BRUTE, "bomb", 0)
diff --git a/code/modules/antagonists/devil/true_devil/_true_devil.dm b/code/modules/antagonists/devil/true_devil/_true_devil.dm
index ac1e5630da..fd7e6fb98d 100644
--- a/code/modules/antagonists/devil/true_devil/_true_devil.dm
+++ b/code/modules/antagonists/devil/true_devil/_true_devil.dm
@@ -179,7 +179,7 @@
/mob/living/carbon/true_devil/is_literate()
return 1
-/mob/living/carbon/true_devil/ex_act(severity, ex_target)
+/mob/living/carbon/true_devil/ex_act(severity, target, origin)
if(!ascended)
var/b_loss
switch (severity)
diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm
index 537c714966..f05321487f 100644
--- a/code/modules/antagonists/revenant/revenant.dm
+++ b/code/modules/antagonists/revenant/revenant.dm
@@ -174,7 +174,7 @@
//Immunities
-/mob/living/simple_animal/revenant/ex_act(severity, target)
+/mob/living/simple_animal/revenant/ex_act(severity, target, origin)
return 1 //Immune to the effects of explosions.
/mob/living/simple_animal/revenant/wave_ex_act(power, datum/wave_explosion/explosion, dir)
diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm
index 09e97fba06..c468862c8b 100644
--- a/code/modules/antagonists/slaughter/slaughter.dm
+++ b/code/modules/antagonists/slaughter/slaughter.dm
@@ -249,7 +249,7 @@
released and fully healed, because in the end it's just a jape, \
sibling!"
-/mob/living/simple_animal/slaughter/laughter/ex_act(severity)
+/mob/living/simple_animal/slaughter/laughter/ex_act(severity, target, origin)
switch(severity)
if(1)
death()
diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm
index 434dc673f7..962abc59fd 100644
--- a/code/modules/awaymissions/mission_code/stationCollision.dm
+++ b/code/modules/awaymissions/mission_code/stationCollision.dm
@@ -149,5 +149,5 @@ GLOBAL_VAR_INIT(sc_safecode5, "[rand(0,9)]")
if(prob(25))
mezzer()
-/obj/singularity/narsie/mini/ex_act()
+/obj/singularity/narsie/mini/ex_act(severity, target, origin)
return
diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm
index 3d2264a593..59f36cc2a5 100644
--- a/code/modules/cargo/supplypod.dm
+++ b/code/modules/cargo/supplypod.dm
@@ -187,7 +187,7 @@
else
..()
-/obj/structure/closet/supplypod/ex_act() //Explosions dont do SHIT TO US! This is because supplypods create explosions when they land.
+/obj/structure/closet/supplypod/ex_act(severity, target, origin) //Explosions dont do SHIT TO US! This is because supplypods create explosions when they land.
return
/obj/structure/closet/supplypod/contents_explosion() //Supplypods also protect their contents from the harmful effects of fucking exploding.
diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm
index a9ee0f5412..2712e69362 100644
--- a/code/modules/events/immovable_rod.dm
+++ b/code/modules/events/immovable_rod.dm
@@ -99,7 +99,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
walk(src,0)
walk_towards(src, destination, 1)
-/obj/effect/immovablerod/ex_act(severity, target)
+/obj/effect/immovablerod/ex_act(severity, target, origin)
return 0
/obj/effect/immovablerod/singularity_act()
diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm
index 6fcaa5e6b0..ed6a087cd9 100644
--- a/code/modules/events/spacevine.dm
+++ b/code/modules/events/spacevine.dm
@@ -507,7 +507,7 @@
if(master)
master.spawn_spacevine_piece(stepturf, src)
-/obj/structure/spacevine/ex_act(severity, target)
+/obj/structure/spacevine/ex_act(severity, target, origin)
if(istype(target, type)) //if its agressive spread vine dont do anything
return
var/i
diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm
index e94cc17041..49a5c607ec 100644
--- a/code/modules/holodeck/computer.dm
+++ b/code/modules/holodeck/computer.dm
@@ -203,7 +203,7 @@
return
emergency_shutdown()
-/obj/machinery/computer/holodeck/ex_act(severity, target)
+/obj/machinery/computer/holodeck/ex_act(severity, target, origin)
emergency_shutdown()
return ..()
diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm
index e199c2c6b1..b0af08d515 100644
--- a/code/modules/hydroponics/grown/citrus.dm
+++ b/code/modules/hydroponics/grown/citrus.dm
@@ -173,7 +173,7 @@
var/mob/M = loc
M.dropItemToGround(src)
-/obj/item/reagent_containers/food/snacks/grown/firelemon/ex_act(severity)
+/obj/item/reagent_containers/food/snacks/grown/firelemon/ex_act(severity, target, origin)
qdel(src) //Ensuring that it's deleted by its own explosion
/obj/item/reagent_containers/food/snacks/grown/firelemon/proc/prime(mob/living/lanced_by)
diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm
index e7298e67be..4e6a4f0765 100644
--- a/code/modules/hydroponics/grown/misc.dm
+++ b/code/modules/hydroponics/grown/misc.dm
@@ -224,7 +224,7 @@
if(!QDELETED(src))
qdel(src)
-/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/ex_act(severity)
+/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/ex_act(severity, target, origin)
qdel(src) //Ensuring that it's deleted by its own explosion. Also prevents mass chain reaction with piles of cherry bombs
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/prime(mob/living/lanced_by)
@@ -500,7 +500,7 @@
log_game("Coconut bomb detonation at [AREACOORD(T)], location [loc]")
qdel(src)
-/obj/item/reagent_containers/food/snacks/grown/coconut/ex_act(severity)
+/obj/item/reagent_containers/food/snacks/grown/coconut/ex_act(severity, target, origin)
qdel(src)
/obj/item/reagent_containers/food/snacks/grown/coconut/deconstruct(disassembled = TRUE)
diff --git a/code/modules/lighting/emissive_blocker.dm b/code/modules/lighting/emissive_blocker.dm
index 46dc44792b..1b4fec4e3b 100644
--- a/code/modules/lighting/emissive_blocker.dm
+++ b/code/modules/lighting/emissive_blocker.dm
@@ -26,7 +26,7 @@
color = GLOB.em_block_color
-/atom/movable/emissive_blocker/ex_act(severity)
+/atom/movable/emissive_blocker/ex_act(severity, target, origin)
return FALSE
/atom/movable/emissive_blocker/singularity_act()
diff --git a/code/modules/lighting/lighting_object.dm b/code/modules/lighting/lighting_object.dm
index 6551b1e336..bd6bfdd177 100644
--- a/code/modules/lighting/lighting_object.dm
+++ b/code/modules/lighting/lighting_object.dm
@@ -124,7 +124,7 @@
// Variety of overrides so the overlays don't get affected by weird things.
-/atom/movable/lighting_object/ex_act(severity)
+/atom/movable/lighting_object/ex_act(severity, target, origin)
return 0
/atom/movable/lighting_object/singularity_act()
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index e64505df7e..b005822438 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -484,7 +484,7 @@
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
anchored = TRUE
-/obj/effect/warp_cube/ex_act(severity, target)
+/obj/effect/warp_cube/ex_act(severity, target, origin)
return
//Meat Hook
@@ -607,7 +607,7 @@
/obj/effect/immortality_talisman/attackby()
return
-/obj/effect/immortality_talisman/ex_act()
+/obj/effect/immortality_talisman/ex_act(severity, target, origin)
return
/obj/effect/immortality_talisman/singularity_pull()
diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm
index 1adc951447..eabab35c3b 100644
--- a/code/modules/mining/machine_redemption.dm
+++ b/code/modules/mining/machine_redemption.dm
@@ -346,7 +346,7 @@
to_chat(usr, "Required access not found.")
return TRUE
-/obj/machinery/mineral/ore_redemption/ex_act(severity, target)
+/obj/machinery/mineral/ore_redemption/ex_act(severity, target, origin)
do_sparks(5, TRUE, src)
..()
diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm
index b1bde7d454..c7ddaebe2d 100644
--- a/code/modules/mining/machine_vending.dm
+++ b/code/modules/mining/machine_vending.dm
@@ -270,7 +270,7 @@
SSblackbox.record_feedback("tally", "crusher_voucher_redeemed", 1, selection)
qdel(voucher)
-/obj/machinery/mineral/equipment_vendor/ex_act(severity, target)
+/obj/machinery/mineral/equipment_vendor/ex_act(severity, target, origin)
do_sparks(5, TRUE, src)
if(prob(50 / severity) && severity < 3)
qdel(src)
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index 71f84e898c..264da96a27 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -152,7 +152,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
C.forcesay("*scream")
qdel(src)
-/obj/item/stack/ore/glass/ex_act(severity, target)
+/obj/item/stack/ore/glass/ex_act(severity, target, origin)
if (severity == EXPLODE_NONE)
return
qdel(src)
@@ -314,7 +314,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
GibtoniteReaction(P.firer)
. = ..()
-/obj/item/gibtonite/ex_act()
+/obj/item/gibtonite/ex_act(severity, target, origin)
GibtoniteReaction(null, 1)
/obj/item/gibtonite/proc/GibtoniteReaction(mob/user, triggered_by = 0)
@@ -356,7 +356,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
pixel_x = initial(pixel_x) + rand(0, 16) - 8
pixel_y = initial(pixel_y) + rand(0, 8) - 8
-/obj/item/stack/ore/ex_act(severity, target)
+/obj/item/stack/ore/ex_act(severity, target, origin)
if (!severity || severity >= 2)
return
qdel(src)
diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm
index b66158db8a..13803a63d2 100644
--- a/code/modules/mob/living/bloodcrawl.dm
+++ b/code/modules/mob/living/bloodcrawl.dm
@@ -11,7 +11,7 @@
/obj/effect/dummy/phased_mob/slaughter/relaymove(mob/user, direction)
forceMove(get_step(src,direction))
-/obj/effect/dummy/phased_mob/slaughter/ex_act()
+/obj/effect/dummy/phased_mob/slaughter/ex_act(severity, target, origin)
return
/obj/effect/dummy/phased_mob/slaughter/wave_ex_act(power, datum/wave_explosion/explosion, dir)
diff --git a/code/modules/mob/living/brain/brain.dm b/code/modules/mob/living/brain/brain.dm
index 8ffcce248b..91fab5f2ec 100644
--- a/code/modules/mob/living/brain/brain.dm
+++ b/code/modules/mob/living/brain/brain.dm
@@ -43,7 +43,7 @@
/mob/living/brain/update_mobility()
return ((mobility_flags = (container?.in_contents_of(/obj/mecha)? MOBILITY_FLAGS_DEFAULT : NONE)))
-/mob/living/brain/ex_act() //you cant blow up brainmobs because it makes transfer_to() freak out when borgs blow up.
+/mob/living/brain/ex_act(severity, target, origin) //you cant blow up brainmobs because it makes transfer_to() freak out when borgs blow up.
return
/mob/living/brain/wave_ex_act(power, datum/wave_explosion/explosion, dir)
diff --git a/code/modules/mob/living/silicon/ai/ai_defense.dm b/code/modules/mob/living/silicon/ai/ai_defense.dm
index b05b5f1aaf..b8a0a15e70 100644
--- a/code/modules/mob/living/silicon/ai/ai_defense.dm
+++ b/code/modules/mob/living/silicon/ai/ai_defense.dm
@@ -28,7 +28,7 @@
if(2)
SSshuttle.requestEvac(src,"ALERT: Energy surge detected in AI core! Station integrity may be compromised! Initiati--%m091#ar-BZZT")
-/mob/living/silicon/ai/ex_act(severity, target)
+/mob/living/silicon/ai/ex_act(severity, target, origin)
switch(severity)
if(1)
gib()
diff --git a/code/modules/mob/living/silicon/pai/pai_defense.dm b/code/modules/mob/living/silicon/pai/pai_defense.dm
index ca5d3ce459..9e81725731 100644
--- a/code/modules/mob/living/silicon/pai/pai_defense.dm
+++ b/code/modules/mob/living/silicon/pai/pai_defense.dm
@@ -13,7 +13,7 @@
emitter_next_use = world.time + emitter_emp_cd
//Need more effects that aren't instadeath or permanent law corruption.
-/mob/living/silicon/pai/ex_act(severity, target)
+/mob/living/silicon/pai/ex_act(severity, target, origin)
take_holo_damage(severity * 50)
switch(severity)
if(1) //RIP
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index 5342638c03..d5a1058a61 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -184,7 +184,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real
gib()
return TRUE
-/mob/living/silicon/robot/ex_act(severity, target)
+/mob/living/silicon/robot/ex_act(severity, target, origin)
switch(severity)
if(1)
gib()
diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm
index b287b854a3..077e31062a 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -138,7 +138,7 @@
add_overlay(load)
return
-/mob/living/simple_animal/bot/mulebot/ex_act(severity)
+/mob/living/simple_animal/bot/mulebot/ex_act(severity, target, origin)
unload(0)
switch(severity)
if(1)
diff --git a/code/modules/mob/living/simple_animal/friendly/cockroach.dm b/code/modules/mob/living/simple_animal/friendly/cockroach.dm
index f65b2bab9b..b0d66a1209 100644
--- a/code/modules/mob/living/simple_animal/friendly/cockroach.dm
+++ b/code/modules/mob/living/simple_animal/friendly/cockroach.dm
@@ -60,5 +60,5 @@
else
visible_message("[src] avoids getting crushed.")
-/mob/living/simple_animal/cockroach/ex_act() //Explosions are a terrible way to handle a cockroach.
+/mob/living/simple_animal/cockroach/ex_act(severity, target, origin) //Explosions are a terrible way to handle a cockroach.
return
diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm
index ec11a3e83e..6faf8f0db5 100644
--- a/code/modules/mob/living/simple_animal/guardian/guardian.dm
+++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm
@@ -273,10 +273,13 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
summoner.adjustCloneLoss(amount * 0.5) //dying hosts take 50% bonus damage as cloneloss
update_health_hud()
-/mob/living/simple_animal/hostile/guardian/ex_act(severity, target)
+/mob/living/simple_animal/hostile/guardian/ex_act(severity, target, origin)
switch(severity)
if(1)
- gib()
+ if(istype(origin, /datum/explosion))
+ gib(was_explosion = origin)
+ else
+ gib()
return
if(2)
adjustBruteLoss(60)
@@ -286,10 +289,10 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
/mob/living/simple_animal/hostile/guardian/wave_ex_act(power, datum/wave_explosion/explosion, dir)
adjustBruteLoss(EXPLOSION_POWER_STANDARD_SCALE_MOB_DAMAGE(power, explosion.mob_damage_mod * 0.33))
-/mob/living/simple_animal/hostile/guardian/gib()
+/mob/living/simple_animal/hostile/guardian/gib(no_brain, no_organs, no_bodyparts, datum/explosion/was_explosion)
if(summoner)
to_chat(summoner, "Your [src] was blown up!")
- summoner.gib()
+ summoner.gib(was_explosion = was_explosion)
ghostize()
qdel(src)
diff --git a/code/modules/mob/living/simple_animal/guardian/types/protector.dm b/code/modules/mob/living/simple_animal/guardian/types/protector.dm
index b3d9f01ebb..00d56edd55 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/protector.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/protector.dm
@@ -11,7 +11,7 @@
toggle_button_type = /atom/movable/screen/guardian/ToggleMode
var/toggle = FALSE
-/mob/living/simple_animal/hostile/guardian/protector/ex_act(severity)
+/mob/living/simple_animal/hostile/guardian/protector/ex_act(severity, target, origin)
if(severity == 1)
adjustBruteLoss(400) //if in protector mode, will do 20 damage and not actually necessarily kill the summoner
else
diff --git a/code/modules/mob/living/simple_animal/hostile/banana_spider.dm b/code/modules/mob/living/simple_animal/hostile/banana_spider.dm
index a88593ed74..802f55a934 100644
--- a/code/modules/mob/living/simple_animal/hostile/banana_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/banana_spider.dm
@@ -87,7 +87,7 @@
else
visible_message("[src] avoids getting crushed.")
-/mob/living/simple_animal/banana_spider/ex_act()
+/mob/living/simple_animal/banana_spider/ex_act(severity, target, origin)
return
/mob/living/simple_animal/banana_spider/start_pulling()
diff --git a/code/modules/mob/living/simple_animal/hostile/bread.dm b/code/modules/mob/living/simple_animal/hostile/bread.dm
index 70c8b0c540..1fe1a13e75 100644
--- a/code/modules/mob/living/simple_animal/hostile/bread.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bread.dm
@@ -62,7 +62,7 @@
user.transfer_ckey(src, FALSE)
density = TRUE
-/mob/living/simple_animal/hostile/bread/ex_act()
+/mob/living/simple_animal/hostile/bread/ex_act(severity, target, origin)
return
/mob/living/simple_animal/hostile/bread/start_pulling()
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
index 4e7d493c3b..c28fa99054 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
@@ -132,7 +132,7 @@ Difficulty: Medium
return FALSE
return ..()
-/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/ex_act(severity, target)
+/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/ex_act(severity, target, origin)
if(dash())
return
return ..()
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
index b80e6cc72f..9bcc21efa6 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
@@ -154,7 +154,7 @@ Difficulty: Hard
return 0
return ..()
-/mob/living/simple_animal/hostile/megafauna/bubblegum/ex_act(severity, target)
+/mob/living/simple_animal/hostile/megafauna/bubblegum/ex_act(severity, target, origin)
if(severity >= EXPLODE_LIGHT)
return
severity = EXPLODE_LIGHT // puny mortals
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index 7ca2f6c561..0135984be9 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -421,7 +421,7 @@ Difficulty: Very Hard
if(ismob(AM))
ActivationReaction(AM, ACTIVATE_MOB_BUMP)
-/obj/machinery/anomalous_crystal/ex_act()
+/obj/machinery/anomalous_crystal/ex_act(severity, target, origin)
ActivationReaction(null, ACTIVATE_BOMB)
/obj/machinery/anomalous_crystal/honk //Strips and equips you as a clown. I apologize for nothing
@@ -740,7 +740,7 @@ Difficulty: Very Hard
/obj/structure/closet/stasis/emp_act()
return
-/obj/structure/closet/stasis/ex_act()
+/obj/structure/closet/stasis/ex_act(severity, target, origin)
return
/obj/structure/closet/stasis/handle_lock_addition()
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
index 1aa0957fee..a5fc918181 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
@@ -147,7 +147,7 @@ Difficulty: Extremely Hard
if(isturf(target) || isobj(target))
target.ex_act(EXPLODE_HEAVY)
-/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner/ex_act(severity, target)
+/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner/ex_act(severity, target, origin)
adjustBruteLoss(30 * severity - 120)
visible_message("[src] absorbs the explosion!", "You absorb the explosion!")
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
index a3d51744b9..dc13d870c5 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
@@ -79,7 +79,7 @@ Difficulty: Medium
. = ..()
internal = new/obj/item/gps/internal/dragon(src)
-/mob/living/simple_animal/hostile/megafauna/dragon/ex_act(severity, target)
+/mob/living/simple_animal/hostile/megafauna/dragon/ex_act(severity, target, origin)
if(severity == 3)
return
..()
@@ -387,7 +387,7 @@ Difficulty: Medium
light_range = 2
duration = 13
-/obj/effect/temp_visual/lava_warning/ex_act()
+/obj/effect/temp_visual/lava_warning/ex_act(severity, target, origin)
return
/obj/effect/temp_visual/lava_warning/Initialize(mapload, var/reset_time = 10)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
index e4c087b1e1..c1aea8db9d 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
@@ -674,7 +674,7 @@ Difficulty: Normal
layer = LOW_OBJ_LAYER
anchored = TRUE
-/obj/effect/hierophant/ex_act()
+/obj/effect/hierophant/ex_act(severity, target, origin)
return
/obj/effect/hierophant/attackby(obj/item/I, mob/user, params)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
index 79111d3de2..d4fed7685f 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
@@ -138,7 +138,7 @@
adjustBruteLoss(-L.maxHealth/2)
L.gib()
-/mob/living/simple_animal/hostile/megafauna/ex_act(severity, target)
+/mob/living/simple_animal/hostile/megafauna/ex_act(severity, target, origin)
switch (severity)
if (EXPLODE_DEVASTATE)
adjustBruteLoss(250)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
index 24e595ef7e..c5be239b3b 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
@@ -50,7 +50,7 @@
if(isliving(target) && !target.Adjacent(targets_from) && ranged_cooldown <= world.time)//No more being shot at point blank or spammed with RNG beams
OpenFire(target)
-/mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity, target)
+/mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity, target, origin)
switch(severity)
if(1)
gib()
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index dc892364c4..dd7c946d3c 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -307,7 +307,7 @@
if((bodytemperature < minbodytemp) || (bodytemperature > maxbodytemp))
adjustHealth(unsuitable_atmos_damage)
-/mob/living/simple_animal/gib()
+/mob/living/simple_animal/gib(no_brain, no_organs, no_bodyparts, datum/explosion/was_explosion)
if(butcher_results)
var/atom/Tsec = drop_location()
for(var/path in butcher_results)
diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm
index 090bf1c7fc..da60657f7e 100644
--- a/code/modules/modular_computers/computers/machinery/modular_computer.dm
+++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm
@@ -124,9 +124,9 @@
// Stronger explosions cause serious damage to internal components
// Minor explosions are mostly mitigitated by casing.
-/obj/machinery/modular_computer/ex_act(severity)
+/obj/machinery/modular_computer/ex_act(severity, target, origin)
if(cpu)
- cpu.ex_act(severity)
+ cpu.ex_act(severity, target, origin)
// switch(severity)
// if(EXPLODE_DEVASTATE)
// SSexplosions.high_mov_atom += cpu
diff --git a/code/modules/power/antimatter/containment_jar.dm b/code/modules/power/antimatter/containment_jar.dm
index 0ccbba5a0c..3066755690 100644
--- a/code/modules/power/antimatter/containment_jar.dm
+++ b/code/modules/power/antimatter/containment_jar.dm
@@ -15,7 +15,7 @@
var/stability = 100//TODO: add all the stability things to this so its not very safe if you keep hitting in on things
-/obj/item/am_containment/ex_act(severity, target)
+/obj/item/am_containment/ex_act(severity, target, origin)
switch(severity)
if(1)
explosion(get_turf(src), 1, 2, 3, 5)//Should likely be larger but this works fine for now I guess
diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm
index 17c5bc0e4c..f8f31f6990 100644
--- a/code/modules/power/antimatter/control.dm
+++ b/code/modules/power/antimatter/control.dm
@@ -114,7 +114,7 @@
check_stability()
return
-/obj/machinery/power/am_control_unit/ex_act(severity, target)
+/obj/machinery/power/am_control_unit/ex_act(severity, target, origin)
stability -= (80 - (severity * 20))
check_stability()
return
diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm
index 100998d7c6..52478e532e 100644
--- a/code/modules/power/antimatter/shielding.dm
+++ b/code/modules/power/antimatter/shielding.dm
@@ -94,7 +94,7 @@
/obj/machinery/am_shielding/emp_act()//Immune due to not really much in the way of electronics.
return
-/obj/machinery/am_shielding/ex_act(severity, target)
+/obj/machinery/am_shielding/ex_act(severity, target, origin)
stability -= (80 - (severity * 20))
check_stability()
return
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index 0af16013ec..8d83fa60e4 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -142,7 +142,7 @@
if(charge < 0)
charge = 0
-/obj/item/stock_parts/cell/ex_act(severity, target)
+/obj/item/stock_parts/cell/ex_act(severity, target, origin)
..()
if(!QDELETED(src))
switch(severity)
diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm
index 3fe03978bd..3d07b60c41 100644
--- a/code/modules/power/gravitygenerator.dm
+++ b/code/modules/power/gravitygenerator.dm
@@ -31,7 +31,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
/obj/machinery/gravity_generator/safe_throw_at(atom/target, range, speed, mob/thrower, spin = TRUE, diagonals_first = FALSE, datum/callback/callback, force = MOVE_FORCE_STRONG, gentle = FALSE)
return FALSE
-/obj/machinery/gravity_generator/ex_act(severity, target)
+/obj/machinery/gravity_generator/ex_act(severity, target, origin)
if(severity >= EXPLODE_DEVASTATE) // Very sturdy.
set_broken()
diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm
index c19927e84c..10219c29c1 100644
--- a/code/modules/power/rtg.dm
+++ b/code/modules/power/rtg.dm
@@ -115,7 +115,7 @@
/obj/machinery/power/rtg/abductor/blob_act(obj/structure/blob/B)
overload()
-/obj/machinery/power/rtg/abductor/ex_act()
+/obj/machinery/power/rtg/abductor/ex_act(severity, target, origin)
if(going_kaboom)
qdel(src)
else
diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm
index 2ca9b7513c..ff6cf99411 100644
--- a/code/modules/power/singularity/containment_field.dm
+++ b/code/modules/power/singularity/containment_field.dm
@@ -42,7 +42,7 @@
/obj/machinery/field/containment/blob_act(obj/structure/blob/B)
return FALSE
-/obj/machinery/field/containment/ex_act(severity, target)
+/obj/machinery/field/containment/ex_act(severity, target, origin)
return FALSE
/obj/machinery/field/containment/attack_animal(mob/living/simple_animal/M)
diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm
index 0ebbce53cf..08d2ff5c84 100644
--- a/code/modules/power/singularity/narsie.dm
+++ b/code/modules/power/singularity/narsie.dm
@@ -143,7 +143,7 @@
A.narsie_act()
-/obj/singularity/narsie/ex_act() //No throwing bombs at her either.
+/obj/singularity/narsie/ex_act(severity, target, origin) //No throwing bombs at her either.
return
diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm
index 7ecde364ae..58c338e44a 100644
--- a/code/modules/power/singularity/particle_accelerator/particle.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle.dm
@@ -49,7 +49,7 @@
toxmob(A)
-/obj/effect/accelerated_particle/ex_act(severity, target)
+/obj/effect/accelerated_particle/ex_act(severity, target, origin)
qdel(src)
/obj/effect/accelerated_particle/singularity_pull()
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index ee4b9ce6ba..256e128ff4 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -97,7 +97,7 @@
return
return ..()
-/obj/singularity/ex_act(severity, target)
+/obj/singularity/ex_act(severity, target, origin)
switch(severity)
if(1)
if(current_size <= STAGE_TWO)
diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm
index 5d7bb9a8b6..2c8583b447 100644
--- a/code/modules/power/tesla/energy_ball.dm
+++ b/code/modules/power/tesla/energy_ball.dm
@@ -39,7 +39,7 @@
if(!is_miniball)
set_light(10, 7, "#EEEEFF")
-/obj/singularity/energy_ball/ex_act(severity, target)
+/obj/singularity/energy_ball/ex_act(severity, target, origin)
return
/obj/singularity/energy_ball/consume(severity, target)
diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm
index 60b7565333..64cffe52e7 100644
--- a/code/modules/projectiles/guns/misc/blastcannon.dm
+++ b/code/modules/projectiles/guns/misc/blastcannon.dm
@@ -156,5 +156,5 @@
mediumr = max(mediumr - 1, 0)
lightr = max(lightr - 1, 0)
-/obj/item/projectile/blastwave/ex_act()
+/obj/item/projectile/blastwave/ex_act(severity, target, origin)
return
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index 22aadc06f4..5c3b328862 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -165,7 +165,7 @@
obj_flags |= EMAGGED
return TRUE
-/obj/machinery/chem_dispenser/ex_act(severity, target)
+/obj/machinery/chem_dispenser/ex_act(severity, target, origin)
if(severity < 3)
..()
diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm
index 285ef70433..7e9f418bad 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -46,7 +46,7 @@
for(var/obj/item/reagent_containers/glass/beaker/B in component_parts)
reagents.maximum_volume += B.reagents.maximum_volume
-/obj/machinery/chem_master/ex_act(severity, target)
+/obj/machinery/chem_master/ex_act(severity, target, origin)
if(severity < 3)
..()
diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index 9b8ff7b262..8744af7b28 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -88,10 +88,10 @@
return 0
return 1
-/obj/item/reagent_containers/ex_act()
+/obj/item/reagent_containers/ex_act(severity, target, origin)
if(reagents)
for(var/datum/reagent/R in reagents.reagent_list)
- R.on_ex_act()
+ R.on_ex_act(severity)
if(!QDELETED(src))
..()
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index db82e5cdb2..8215c9d8db 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -151,7 +151,7 @@
/obj/structure/reagent_dispensers/fueltank/blob_act(obj/structure/blob/B)
boom()
-/obj/structure/reagent_dispensers/fueltank/ex_act()
+/obj/structure/reagent_dispensers/fueltank/ex_act(severity, target, origin)
boom()
/obj/structure/reagent_dispensers/fueltank/fire_act(exposed_temperature, exposed_volume)
diff --git a/code/modules/recycling/disposal/holder.dm b/code/modules/recycling/disposal/holder.dm
index f739057699..bce1b3d98d 100644
--- a/code/modules/recycling/disposal/holder.dm
+++ b/code/modules/recycling/disposal/holder.dm
@@ -130,5 +130,5 @@
/obj/structure/disposalholder/AllowDrop()
return TRUE
-/obj/structure/disposalholder/ex_act(severity, target)
+/obj/structure/disposalholder/ex_act(severity, target, origin)
return
diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm
index 87f9b55aa9..05450fd7c2 100644
--- a/code/modules/shuttle/special.dm
+++ b/code/modules/shuttle/special.dm
@@ -44,7 +44,7 @@
/obj/machinery/power/emitter/energycannon/magical/attackby(obj/item/W, mob/user, params)
return
-/obj/machinery/power/emitter/energycannon/magical/ex_act(severity)
+/obj/machinery/power/emitter/energycannon/magical/ex_act(severity, target, origin)
return
/obj/machinery/power/emitter/energycannon/magical/emag_act(mob/user)
diff --git a/code/modules/spells/spell_types/ethereal_jaunt.dm b/code/modules/spells/spell_types/ethereal_jaunt.dm
index 7a05583071..1bc3a054b7 100644
--- a/code/modules/spells/spell_types/ethereal_jaunt.dm
+++ b/code/modules/spells/spell_types/ethereal_jaunt.dm
@@ -105,7 +105,7 @@
forceMove(newLoc)
-/obj/effect/dummy/phased_mob/spell_jaunt/ex_act(blah)
+/obj/effect/dummy/phased_mob/spell_jaunt/ex_act(severity, target, origin)
return
/obj/effect/dummy/phased_mob/spell_jaunt/wave_ex_act(power, datum/wave_explosion/explosion, dir)
diff --git a/code/modules/spells/spell_types/shadow_walk.dm b/code/modules/spells/spell_types/shadow_walk.dm
index 821bf73425..9b311ee1a6 100644
--- a/code/modules/spells/spell_types/shadow_walk.dm
+++ b/code/modules/spells/spell_types/shadow_walk.dm
@@ -87,7 +87,7 @@
qdel(src)
check_light_level()
-/obj/effect/dummy/phased_mob/shadow/ex_act()
+/obj/effect/dummy/phased_mob/shadow/ex_act(severity, target, origin)
return
/obj/effect/dummy/phased_mob/shadow/wave_ex_act(power, datum/wave_explosion/explosion, dir)
diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm
index cb1fdcfc2e..2f0cba0056 100644
--- a/code/modules/station_goals/bsa.dm
+++ b/code/modules/station_goals/bsa.dm
@@ -226,7 +226,7 @@
invisibility = INVISIBILITY_ABSTRACT
var/obj/machinery/parent
-/obj/structure/filler/ex_act()
+/obj/structure/filler/ex_act(severity, target, origin)
return
/obj/machinery/computer/bsa_control