diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 91eb0c71b23..e77151bf38b 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -199,7 +199,7 @@
/atom/proc/ex_act(severity, target)
contents_explosion(severity, target)
-/atom/proc/blob_act()
+/atom/proc/blob_act(obj/effect/blob/B)
return
/atom/proc/fire_act()
diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm
index 1f5a893bbde..7f433d5fc36 100644
--- a/code/game/gamemodes/blob/blobs/blob_mobs.dm
+++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm
@@ -29,7 +29,7 @@
overmind.blob_mobs -= src
return ..()
-/mob/living/simple_animal/hostile/blob/blob_act()
+/mob/living/simple_animal/hostile/blob/blob_act(obj/effect/blob/B)
if(stat != DEAD && health < maxHealth)
for(var/i in 1 to 2)
var/obj/effect/overlay/temp/heal/H = PoolOrNew(/obj/effect/overlay/temp/heal, get_turf(src)) //hello yes you are being healed
diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm
index 0c5bdde1651..d2460d93376 100644
--- a/code/game/gamemodes/blob/overmind.dm
+++ b/code/game/gamemodes/blob/overmind.dm
@@ -140,7 +140,7 @@
/mob/camera/blob/emote(act,m_type=1,message = null)
return
-/mob/camera/blob/blob_act()
+/mob/camera/blob/blob_act(obj/effect/blob/B)
return
/mob/camera/blob/Stat()
diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm
index 16638eef0b3..1ff18339458 100644
--- a/code/game/gamemodes/blob/theblob.dm
+++ b/code/game/gamemodes/blob/theblob.dm
@@ -117,9 +117,9 @@
/obj/effect/blob/proc/ConsumeTile()
for(var/atom/A in loc)
- A.blob_act()
+ A.blob_act(src)
if(istype(loc, /turf/closed/wall))
- loc.blob_act() //don't ask how a wall got on top of the core, just eat it
+ loc.blob_act(src) //don't ask how a wall got on top of the core, just eat it
/obj/effect/blob/proc/blob_attack_animation(atom/A = null, controller) //visually attacks an atom
var/obj/effect/overlay/temp/blob/O = PoolOrNew(/obj/effect/overlay/temp/blob, src.loc)
@@ -155,11 +155,11 @@
ConsumeTile() //hit the tile we're in, making sure there are no border objects blocking us
if(!T.CanPass(src, T, 5)) //is the target turf impassable
make_blob = FALSE
- T.blob_act() //hit the turf if it is
+ T.blob_act(src) //hit the turf if it is
for(var/atom/A in T)
if(!A.CanPass(src, T, 5)) //is anything in the turf impassable
make_blob = FALSE
- A.blob_act() //also hit everything in the turf
+ A.blob_act(src) //also hit everything in the turf
if(make_blob) //well, can we?
var/obj/effect/blob/B = new /obj/effect/blob/normal(src.loc)
@@ -177,7 +177,7 @@
return B
else
blob_attack_animation(T, controller)
- T.blob_act() //if we can't move in hit the turf again
+ T.blob_act(src) //if we can't move in hit the turf again
qdel(B) //we should never get to this point, since we checked before moving in. destroy the blob so we don't have two blobs on one tile
return null
else
diff --git a/code/game/gamemodes/gang/dominator.dm b/code/game/gamemodes/gang/dominator.dm
index 83f6da190fe..e2c6276dbb6 100644
--- a/code/game/gamemodes/gang/dominator.dm
+++ b/code/game/gamemodes/gang/dominator.dm
@@ -149,7 +149,7 @@
take_damage(damage_amount, P.damage_type, 0)
-/obj/machinery/dominator/blob_act()
+/obj/machinery/dominator/blob_act(obj/effect/blob/B)
take_damage(110, BRUTE, 0)
/obj/machinery/dominator/attack_hand(mob/user)
diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
index 4bebddd1564..4a47acdeaa3 100644
--- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
+++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
@@ -396,7 +396,7 @@
/obj/effect/swarmer/destructible/ex_act()
qdel(src)
-/obj/effect/swarmer/destructible/blob_act()
+/obj/effect/swarmer/destructible/blob_act(obj/effect/blob/B)
qdel(src)
/obj/effect/swarmer/destructible/emp_act()
diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm
index ac3816d8a0d..6d9e107a652 100644
--- a/code/game/gamemodes/miniantags/revenant/revenant.dm
+++ b/code/game/gamemodes/miniantags/revenant/revenant.dm
@@ -153,7 +153,7 @@
/mob/living/simple_animal/revenant/ex_act(severity, target)
return 1 //Immune to the effects of explosions.
-/mob/living/simple_animal/revenant/blob_act()
+/mob/living/simple_animal/revenant/blob_act(obj/effect/blob/B)
return //blah blah blobs aren't in tune with the spirit world, or something.
/mob/living/simple_animal/revenant/singularity_act()
diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm
index fe266c02cbf..8a14dfe1a10 100644
--- a/code/game/gamemodes/nuclear/nuclearbomb.dm
+++ b/code/game/gamemodes/nuclear/nuclearbomb.dm
@@ -326,7 +326,7 @@ var/bomb_set
/obj/machinery/nuclearbomb/ex_act(severity, target)
return
-/obj/machinery/nuclearbomb/blob_act()
+/obj/machinery/nuclearbomb/blob_act(obj/effect/blob/B)
if (timing == -1)
return
else
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 4766816ab0f..68cc017cfd3 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -81,12 +81,12 @@
open_machine()
..(severity)
-/obj/machinery/sleeper/blob_act()
+/obj/machinery/sleeper/blob_act(obj/effect/blob/B)
if(prob(75))
var/turf/T = get_turf(src)
for(var/atom/movable/A in src)
A.forceMove(T)
- A.blob_act()
+ A.blob_act(B)
qdel(src)
/obj/machinery/sleeper/MouseDrop_T(mob/target, mob/user)
diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm
index 10ecad63863..ce484c4b05e 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -79,7 +79,7 @@
if(2)
take_damage(25, BRUTE, 0)
-/obj/structure/barricade/blob_act()
+/obj/structure/barricade/blob_act(obj/effect/blob/B)
take_damage(25, BRUTE, 0)
/obj/structure/barricade/CanPass(atom/movable/mover, turf/target, height=0)//So bullets will fly over and stuff.
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 09e955a44d3..d567dd34c35 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -179,7 +179,7 @@ obj/machinery/door/proc/try_to_crowbar(obj/item/I, mob/user)
-/obj/machinery/door/blob_act()
+/obj/machinery/door/blob_act(obj/effect/blob/B)
if(prob(40))
qdel(src)
return
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index eda017941d8..7751dcb8bb6 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -187,7 +187,7 @@ Class Procs:
updateUsrDialog()
update_icon()
-/obj/machinery/blob_act()
+/obj/machinery/blob_act(obj/effect/blob/B)
if(!density)
qdel(src)
if(prob(75))
diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm
index 1868e966e5a..88af11c1875 100644
--- a/code/game/machinery/shieldgen.dm
+++ b/code/game/machinery/shieldgen.dm
@@ -53,7 +53,7 @@
if(2)
take_damage(50, BRUTE, 0)
-/obj/machinery/shield/blob_act()
+/obj/machinery/shield/blob_act(obj/effect/blob/B)
qdel(src)
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index cbc30cb5ede..30cce02c00d 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -111,7 +111,7 @@
if(prob(25))
malfunction()
-/obj/machinery/vending/blob_act()
+/obj/machinery/vending/blob_act(obj/effect/blob/B)
malfunction()
..()
diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm
index badf0ee4804..6c6ecde299b 100644
--- a/code/game/mecha/mecha_defense.dm
+++ b/code/game/mecha/mecha_defense.dm
@@ -143,7 +143,7 @@
check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1)
return
-/obj/mecha/blob_act()
+/obj/mecha/blob_act(obj/effect/blob/B)
take_damage(30, "brute")
return
diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm
index 4ec3efe5a33..9fc0dfea92f 100644
--- a/code/game/objects/effects/aliens.dm
+++ b/code/game/objects/effects/aliens.dm
@@ -110,7 +110,7 @@
if(3)
take_damage(50, BRUTE, 0)
-/obj/structure/alien/blob_act()
+/obj/structure/alien/blob_act(obj/effect/blob/B)
take_damage(50, BRUTE, 0)
/obj/structure/alien/resin/hitby(atom/movable/AM)
diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm
index 4441b6fe219..54e57af855e 100644
--- a/code/game/objects/effects/effect_system/effects_foam.dm
+++ b/code/game/objects/effects/effect_system/effects_foam.dm
@@ -208,7 +208,7 @@
qdel(src)
-/obj/structure/foamedmetal/blob_act()
+/obj/structure/foamedmetal/blob_act(obj/effect/blob/B)
qdel(src)
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index e2350ead3b8..4af7e0f7769 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -134,7 +134,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
qdel(X)
return ..()
-/obj/item/blob_act()
+/obj/item/blob_act(obj/effect/blob/B)
qdel(src)
/obj/item/ex_act(severity, target)
diff --git a/code/game/objects/items/weapons/chrono_eraser.dm b/code/game/objects/items/weapons/chrono_eraser.dm
index b325e95844f..71542183b71 100644
--- a/code/game/objects/items/weapons/chrono_eraser.dm
+++ b/code/game/objects/items/weapons/chrono_eraser.dm
@@ -259,7 +259,7 @@
/obj/effect/chrono_field/ex_act()
return
-/obj/effect/chrono_field/blob_act()
+/obj/effect/chrono_field/blob_act(obj/effect/blob/B)
return
diff --git a/code/game/objects/items/weapons/holosign_creator.dm b/code/game/objects/items/weapons/holosign_creator.dm
index ffec2d25ea5..97a9278a63d 100644
--- a/code/game/objects/items/weapons/holosign_creator.dm
+++ b/code/game/objects/items/weapons/holosign_creator.dm
@@ -97,7 +97,7 @@
..()
take_damage(I.force * 0.5, I.damtype)
-/obj/effect/overlay/holograph/blob_act()
+/obj/effect/overlay/holograph/blob_act(obj/effect/blob/B)
qdel(src)
/obj/effect/overlay/holograph/attack_animal(mob/living/simple_animal/M)
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index 406e079ffbb..f8b5263cba1 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -91,7 +91,7 @@
user << "It feels [descriptive]."
-/obj/item/weapon/tank/blob_act()
+/obj/item/weapon/tank/blob_act(obj/effect/blob/B)
if(prob(50))
var/turf/location = src.loc
if (!( istype(location, /turf) ))
diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm
index c543499ea08..7b7e4bcfc6e 100644
--- a/code/game/objects/structures.dm
+++ b/code/game/objects/structures.dm
@@ -15,7 +15,7 @@
if(ticker)
cameranet.updateVisibility(src)
-/obj/structure/blob_act()
+/obj/structure/blob_act(obj/effect/blob/B)
if(!density)
qdel(src)
if(prob(50))
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 9dad7dabba2..638e24bdab0 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -206,7 +206,7 @@
visible_message("[user] destroys \the [src].")
qdel(src)
-/obj/structure/closet/blob_act()
+/obj/structure/closet/blob_act(obj/effect/blob/B)
if(prob(75))
qdel(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm
index 69c639694f2..4c053c6caa6 100644
--- a/code/game/objects/structures/crates_lockers/closets/statue.dm
+++ b/code/game/objects/structures/crates_lockers/closets/statue.dm
@@ -120,7 +120,7 @@
if(user.environment_smash)
shatter()
-/obj/structure/closet/statue/blob_act()
+/obj/structure/closet/statue/blob_act(obj/effect/blob/B)
shatter()
/obj/structure/closet/statue/attacked_by(obj/item/I, mob/living/user)
diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm
index 6ca97bb58a3..ccc043c0188 100644
--- a/code/game/objects/structures/displaycase.dm
+++ b/code/game/objects/structures/displaycase.dm
@@ -48,7 +48,7 @@
showpiece.loc = src.loc
showpiece = null
-/obj/structure/displaycase/blob_act()
+/obj/structure/displaycase/blob_act(obj/effect/blob/B)
if (prob(75))
new /obj/item/weapon/shard( src.loc )
dump()
diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm
index dbc85a06870..0b1b1c52781 100644
--- a/code/game/objects/structures/fireaxe.dm
+++ b/code/game/objects/structures/fireaxe.dm
@@ -82,7 +82,7 @@
take_damage(P.damage, P.damage_type, 0)
-/obj/structure/fireaxecabinet/blob_act()
+/obj/structure/fireaxecabinet/blob_act(obj/effect/blob/B)
if(fireaxe)
fireaxe.loc = src.loc
qdel(src)
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index f24bea92dec..359b80ef881 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -261,7 +261,7 @@
var/atom/movable/mover = caller
. = . || mover.checkpass(PASSGRILLE)
-/obj/structure/girder/blob_act()
+/obj/structure/girder/blob_act(obj/effect/blob/B)
if(prob(40))
qdel(src)
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index d34a261a8f2..5da6f3aaaa7 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -23,7 +23,7 @@
else
take_damage(rand(5,10), BRUTE, 0)
-/obj/structure/grille/blob_act()
+/obj/structure/grille/blob_act(obj/effect/blob/B)
qdel(src)
/obj/structure/grille/Bumped(atom/user)
diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm
index 013d6220591..c676d5882ce 100644
--- a/code/game/objects/structures/lattice.dm
+++ b/code/game/objects/structures/lattice.dm
@@ -28,7 +28,7 @@
stored = null
return ..()
-/obj/structure/lattice/blob_act()
+/obj/structure/lattice/blob_act(obj/effect/blob/B)
return
/obj/structure/lattice/ex_act(severity, target)
diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm
index f06ef7a8b34..a381119c3c8 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -164,7 +164,7 @@ FLOOR SAFES
return ..()
-obj/structure/safe/blob_act()
+obj/structure/safe/blob_act(obj/effect/blob/B)
return
obj/structure/safe/ex_act(severity, target)
diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm
index d0cf5161932..b699da49dd3 100644
--- a/code/game/objects/structures/signs.dm
+++ b/code/game/objects/structures/signs.dm
@@ -13,7 +13,7 @@
/obj/structure/sign/ex_act(severity, target)
qdel(src)
-/obj/structure/sign/blob_act()
+/obj/structure/sign/blob_act(obj/effect/blob/B)
qdel(src)
return
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 60e5094e930..1a1ece0837b 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -53,7 +53,7 @@
if(3)
take_damage(rand(40,80), BRUTE, 0)
-/obj/structure/table/blob_act()
+/obj/structure/table/blob_act(obj/effect/blob/B)
if(prob(75))
qdel(src)
@@ -408,7 +408,7 @@
if(3)
take_damage(rand(5,25), BRUTE, 0)
-/obj/structure/rack/blob_act()
+/obj/structure/rack/blob_act(obj/effect/blob/B)
if(prob(75))
qdel(src)
else
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 162efa790e3..e701e606b97 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -61,7 +61,7 @@
if(3)
take_damage(rand(25,75), BRUTE, 0)
-/obj/structure/window/blob_act()
+/obj/structure/window/blob_act(obj/effect/blob/B)
shatter()
/obj/structure/window/narsie_act()
diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm
index 7054deac01c..ed76a82b149 100644
--- a/code/game/turfs/simulated/floor.dm
+++ b/code/game/turfs/simulated/floor.dm
@@ -88,7 +88,7 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","
if(A.level == 3)
return 1
-/turf/open/floor/blob_act()
+/turf/open/floor/blob_act(obj/effect/blob/B)
return
/turf/open/floor/proc/update_icon()
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index b0df9ac3edc..bcfeae80afd 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -80,7 +80,7 @@
..()
return
-/turf/closed/wall/blob_act()
+/turf/closed/wall/blob_act(obj/effect/blob/B)
if(prob(50))
dismantle_wall()
diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm
index 00d7fab4602..100b9af99b7 100644
--- a/code/modules/atmospherics/machinery/portable/canister.dm
+++ b/code/modules/atmospherics/machinery/portable/canister.dm
@@ -203,7 +203,7 @@
air_update_turf() // Update the environment if needed.
update_icon()
-/obj/machinery/portable_atmospherics/canister/blob_act()
+/obj/machinery/portable_atmospherics/canister/blob_act(obj/effect/blob/B)
take_damage(100, BRUTE, 0)
/obj/machinery/portable_atmospherics/canister/bullet_act(obj/item/projectile/P)
diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm
index d19129b3ad1..cc50f155f0b 100644
--- a/code/modules/holodeck/computer.dm
+++ b/code/modules/holodeck/computer.dm
@@ -204,6 +204,6 @@
emergency_shutdown()
..()
-/obj/machinery/computer/holodeck/blob_act()
+/obj/machinery/computer/holodeck/blob_act(obj/effect/blob/B)
emergency_shutdown()
..()
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm
index dfb499b163c..3fd3661ffcf 100644
--- a/code/modules/mob/living/carbon/brain/brain.dm
+++ b/code/modules/mob/living/carbon/brain/brain.dm
@@ -38,7 +38,7 @@
/mob/living/carbon/brain/ex_act() //you cant blow up brainmobs because it makes transfer_to() freak out when borgs blow up.
return
-/mob/living/carbon/brain/blob_act()
+/mob/living/carbon/brain/blob_act(obj/effect/blob/B)
return
/mob/living/carbon/brain/UnarmedAttack(atom/A)//Stops runtimes due to attack_animal being the default
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 260f981cf55..fc6dd9ddb0d 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -341,7 +341,7 @@
/mob/living/carbon/is_muzzled()
return(istype(src.wear_mask, /obj/item/clothing/mask/muzzle))
-/mob/living/carbon/blob_act()
+/mob/living/carbon/blob_act(obj/effect/blob/B)
if (stat == DEAD)
return
else
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 00ecdd0ff92..49381eb5445 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -153,7 +153,7 @@
..()
-/mob/living/carbon/human/blob_act()
+/mob/living/carbon/human/blob_act(obj/effect/blob/B)
if(stat == DEAD)
return
show_message("The blob attacks you!")
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 91b5b987139..58d25079b3e 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -350,7 +350,7 @@ var/list/ai_list = list()
SSshuttle.cancelEvac(src)
return
-/mob/living/silicon/ai/blob_act()
+/mob/living/silicon/ai/blob_act(obj/effect/blob/B)
if (stat != DEAD)
adjustBruteLoss(60)
updatehealth()
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index 7533a4233bb..ec801c34740 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -92,7 +92,7 @@
else
stat(null, text("Systems nonfunctional"))
-/mob/living/silicon/pai/blob_act()
+/mob/living/silicon/pai/blob_act(obj/effect/blob/B)
return 0
/mob/living/silicon/pai/restrained()
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 8901ae54d2c..b89d21228af 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -352,7 +352,7 @@
if(thruster_button)
thruster_button.icon_state = "ionpulse[ionpulse_on]"
-/mob/living/silicon/robot/blob_act()
+/mob/living/silicon/robot/blob_act(obj/effect/blob/B)
if (stat != 2)
adjustBruteLoss(60)
updatehealth()
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 87ff3e831d1..887a1ab0275 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -235,7 +235,7 @@
..()
-/mob/living/simple_animal/blob_act()
+/mob/living/simple_animal/blob_act(obj/effect/blob/B)
adjustBruteLoss(20)
return
diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm
index a2b9add6e23..2d9e29abe11 100644
--- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm
+++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm
@@ -121,7 +121,7 @@ It is possible to destroy the net by the occupant or someone else.
if(3)
take_damage(rand(10,25), BRUTE, 0)
-/obj/effect/energy_net/blob_act()
+/obj/effect/energy_net/blob_act(obj/effect/blob/B)
qdel(src)
/obj/effect/energy_net/hitby(atom/movable/AM)
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 337aee4034c..8247ce2ee37 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -309,7 +309,7 @@
toner = 0
-/obj/machinery/photocopier/blob_act()
+/obj/machinery/photocopier/blob_act(obj/effect/blob/B)
if(prob(50))
qdel(src)
else
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 46b263aabc6..6bf97bb6cb2 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -1095,7 +1095,7 @@
if(prob(25))
set_broken()
-/obj/machinery/power/apc/blob_act()
+/obj/machinery/power/apc/blob_act(obj/effect/blob/B)
set_broken()
/obj/machinery/power/apc/disconnect_terminal()
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index 65dfbadb407..d5d7b12abd0 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -155,7 +155,7 @@
corrupt()
-/obj/item/weapon/stock_parts/cell/blob_act()
+/obj/item/weapon/stock_parts/cell/blob_act(obj/effect/blob/B)
ex_act(1)
/obj/item/weapon/stock_parts/cell/proc/get_electrocute_damage()
diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm
index caa7e9291be..a9780a6f25e 100644
--- a/code/modules/power/gravitygenerator.dm
+++ b/code/modules/power/gravitygenerator.dm
@@ -32,7 +32,7 @@ var/const/GRAV_NEEDS_WRENCH = 3
if(severity == 1) // Very sturdy.
set_broken()
-/obj/machinery/gravity_generator/blob_act()
+/obj/machinery/gravity_generator/blob_act(obj/effect/blob/B)
if(prob(20))
set_broken()
diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm
index cb4d7e439f1..0ddbd973c4a 100644
--- a/code/modules/power/singularity/containment_field.dm
+++ b/code/modules/power/singularity/containment_field.dm
@@ -27,7 +27,7 @@
return 1
-/obj/machinery/field/containment/blob_act()
+/obj/machinery/field/containment/blob_act(obj/effect/blob/B)
return 0
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index 378d179e08b..1f0694daec7 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -138,7 +138,7 @@ field_generator power level display
return 0
-/obj/machinery/field/generator/blob_act()
+/obj/machinery/field/generator/blob_act(obj/effect/blob/B)
if(active)
return 0
else
diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
index c7efcc2278e..333aa77cc3b 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
@@ -149,7 +149,7 @@
master.toggle_power()
investigate_log("was moved whilst active; it powered down.","singulo")
-/obj/structure/particle_accelerator/blob_act()
+/obj/structure/particle_accelerator/blob_act(obj/effect/blob/B)
if(prob(50))
qdel(src)
diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm
index ea7d03a694b..b83a1b34a96 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_control.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm
@@ -320,7 +320,7 @@
..()
-/obj/machinery/particle_accelerator/control_box/blob_act()
+/obj/machinery/particle_accelerator/control_box/blob_act(obj/effect/blob/B)
if(prob(50))
qdel(src)
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index ed16922795a..befe71b8071 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -63,7 +63,7 @@
/obj/singularity/Process_Spacemove() //The singularity stops drifting for no man!
return 0
-/obj/singularity/blob_act(severity)
+/obj/singularity/blob_act(obj/effect/blob/B)
return
/obj/singularity/ex_act(severity, target)
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index 9b953b22373..48553748ed3 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -537,7 +537,7 @@
if(3)
take_damage(rand(10,20), BRUTE, 0)
-/obj/machinery/power/solar_control/blob_act()
+/obj/machinery/power/solar_control/blob_act(obj/effect/blob/B)
if (prob(75))
set_broken()
src.density = 0
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index 1a33fd56a1f..a2cf5498555 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -225,6 +225,19 @@
qdel(src)
return(gain)
+/obj/machinery/power/supermatter_shard/blob_act(obj/effect/blob/B)
+ if(B && !istype(loc, /turf/open/space)) //does nothing in space
+ playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1)
+ damage += B.health * 0.5 //take damage equal to 50% of remaining blob health before it tried to eat us
+ if(B.health > 100)
+ B.visible_message("\The [B] strikes at \the [src] and flinches away!",\
+ "You hear a loud crack as you are washed with a wave of heat.")
+ B.take_damage(100, BURN, src)
+ else
+ B.visible_message("\The [B] strikes at \the [src] and rapidly flashes to ash.",\
+ "You hear a loud crack as you are washed with a wave of heat.")
+ Consume(B)
+
/obj/machinery/power/supermatter_shard/attack_paw(mob/user)
return attack_hand(user)
@@ -293,7 +306,7 @@
investigate_log("has consumed [key_name(user)].", "supermatter")
user.dust()
power += 200
- else if(isobj(AM) && !istype(AM, /obj/effect))
+ else if(isobj(AM) && (!istype(AM, /obj/effect) || istype(AM, /obj/effect/blob)))
investigate_log("has consumed [AM].", "supermatter")
qdel(AM)
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index 758a41d0d64..c36bcf88bc9 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -69,7 +69,7 @@
if(severity < 3)
..()
-/obj/machinery/chem_dispenser/blob_act()
+/obj/machinery/chem_dispenser/blob_act(obj/effect/blob/B)
if(prob(50))
qdel(src)
diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm
index 3343bee85cd..8aba55937ef 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -21,7 +21,7 @@
if(severity < 3)
..()
-/obj/machinery/chem_master/blob_act()
+/obj/machinery/chem_master/blob_act(obj/effect/blob/B)
if (prob(50))
qdel(src)
diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm
index 5218b3c4f82..6f516dfa48a 100644
--- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm
@@ -416,7 +416,7 @@
if(isliving(cause))
B.visible_message("The blob retaliates, lashing out!")
for(var/atom/A in range(1, B))
- A.blob_act()
+ A.blob_act(B)
return ..()
//does low burn damage and stamina damage and cools targets down
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index 128ab849252..8745fce43a2 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -23,7 +23,7 @@
else
return
-/obj/structure/reagent_dispensers/blob_act()
+/obj/structure/reagent_dispensers/blob_act(obj/effect/blob/B)
if(prob(50))
qdel(src)
@@ -70,7 +70,7 @@
else
return
-/obj/structure/reagent_dispensers/watertank/blob_act()
+/obj/structure/reagent_dispensers/watertank/blob_act(obj/effect/blob/B)
if(prob(50))
PoolOrNew(/obj/effect/particle_effect/water, loc)
qdel(src)
@@ -98,7 +98,7 @@
if(src)
qdel(src)
-/obj/structure/reagent_dispensers/fueltank/blob_act()
+/obj/structure/reagent_dispensers/fueltank/blob_act(obj/effect/blob/B)
boom()
@@ -169,7 +169,7 @@
..()
reagents.add_reagent("beer",1000)
-/obj/structure/reagent_dispensers/beerkeg/blob_act()
+/obj/structure/reagent_dispensers/beerkeg/blob_act(obj/effect/blob/B)
explosion(src.loc,0,3,5,7,10)
diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm
index 0f6cb9cb2a3..b113b49127d 100644
--- a/code/modules/research/circuitprinter.dm
+++ b/code/modules/research/circuitprinter.dm
@@ -54,7 +54,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
T += M.rating
efficiency_coeff = 2 ** (T - 1) //Only 1 manipulator here, you're making runtimes Razharas
-/obj/machinery/r_n_d/circuit_imprinter/blob_act()
+/obj/machinery/r_n_d/circuit_imprinter/blob_act(obj/effect/blob/B)
if (prob(50))
qdel(src)
diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm
index 9377ac45165..dc2192aa25e 100644
--- a/code/modules/research/server.dm
+++ b/code/modules/research/server.dm
@@ -86,7 +86,7 @@
..()
-/obj/machinery/r_n_d/server/blob_act()
+/obj/machinery/r_n_d/server/blob_act(obj/effect/blob/B)
griefProtection()
..()