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() ..()