diff --git a/code/controllers/supply_shuttle.dm b/code/controllers/supply_shuttle.dm index 20cf6e4ad3f..c347ddb4e89 100644 --- a/code/controllers/supply_shuttle.dm +++ b/code/controllers/supply_shuttle.dm @@ -46,7 +46,7 @@ var/global/datum/controller/supply_shuttle/supply_shuttle return 0 return ..() -/obj/structure/plasticflaps/ex_act(severity) +/obj/structure/plasticflaps/ex_act(severity, specialty) ..() switch(severity) if (1) diff --git a/code/game/dna.dm b/code/game/dna.dm index 8a0f7709843..86357542466 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -520,26 +520,6 @@ toggle_open(user) add_fingerprint(user) - - -/obj/machinery/dna_scannernew/ex_act(severity) - ..() - switch(severity) - if(1.0) - qdel(src) - return - if(2.0) - if(prob(50)) - qdel(src) - return - if(3.0) - if(prob(25)) - qdel(src) - return - else - return - - /obj/machinery/dna_scannernew/blob_act() if(prob(75)) qdel(src) diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index 8be659cf9c6..ce290d754f1 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -126,7 +126,7 @@ A.blob_act() return 1 -/obj/effect/blob/ex_act(severity) +/obj/effect/blob/ex_act(severity, specialty) ..() var/damage = 150 health -= ((damage/brute_resist) - (severity * 5)) diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 6b7cefc3cc8..0d5dfc22397 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -149,7 +149,7 @@ var/bomb_set if ((M.client && M.machine == src)) src.attack_hand(M) -/obj/machinery/nuclearbomb/ex_act(severity) +/obj/machinery/nuclearbomb/ex_act(severity, specialty) return /obj/machinery/nuclearbomb/blob_act() diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index c61c3cface5..4881f8a2658 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -84,12 +84,9 @@ default_deconstruction_crowbar(I) -/obj/machinery/sleeper/ex_act(severity) +/obj/machinery/sleeper/ex_act(severity, specialty) + go_out() ..() - if(prob(100 / (2 * severity))) - for(var/atom/movable/A in src) - A.loc = loc - qdel(src) /obj/machinery/sleeper/emp_act(severity) if(stat & (BROKEN|NOPOWER)) diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 82df3de7554..b21f8e75145 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -204,7 +204,7 @@ update_flag healthcheck() ..() -/obj/machinery/portable_atmospherics/canister/ex_act(severity) +/obj/machinery/portable_atmospherics/canister/ex_act(severity, specialty) switch(severity) if(1.0) if(destroyed || prob(30)) diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm index 2ab61787ed0..4ebdc7d0a51 100644 --- a/code/game/machinery/bots/bots.dm +++ b/code/game/machinery/bots/bots.dm @@ -286,7 +286,7 @@ healthcheck() return -/obj/machinery/bot/ex_act(severity) +/obj/machinery/bot/ex_act(severity, specialty) switch(severity) if(1.0) explode() diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index d95864d65d8..98f9c7525c6 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -141,12 +141,13 @@ var/global/mulebot_count = 0 /obj/machinery/bot/mulebot/ex_act(var/severity) unload(0) switch(severity) + if(1) + qdel(src) if(2) for(var/i = 1; i < 3; i++) wires.RandomCut() if(3) wires.RandomCut() - ..() return /obj/machinery/bot/mulebot/bullet_act() diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 04113b154b5..28c7bf2c642 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -93,11 +93,11 @@ ..() -/obj/machinery/camera/ex_act(severity) +/obj/machinery/camera/ex_act(severity, specialty) if(src.invuln) return else - ..(severity) + ..() return /obj/machinery/camera/blob_act() diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index dc9a5006628..b81d9261591 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -361,12 +361,10 @@ if(prob(100/(severity*efficiency))) malfunction() ..() -/obj/machinery/clonepod/ex_act(severity) +/obj/machinery/clonepod/ex_act(severity, specialty) ..() - if(prob(100 / (2 ** (severity - 1)))) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - qdel(src) + if(!gc_destroyed) + go_out() /* * Diskette Box diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index 2bc54d7d2d5..f851aaa7981 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -146,7 +146,7 @@ ..() -/obj/machinery/computer/HolodeckControl/ex_act(severity) +/obj/machinery/computer/HolodeckControl/ex_act(severity, specialty) emergencyShutdown() ..() diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index b4ec5461cb0..db7e501ea0a 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -26,7 +26,7 @@ ..() -/obj/machinery/computer/ex_act(severity) +/obj/machinery/computer/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 17dbd21c1a6..3989ee35d2c 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -91,8 +91,7 @@ for reference: qdel(src) ..() -/obj/structure/barricade/wooden/ex_act(severity) - ..() +/obj/structure/barricade/wooden/ex_act(severity, specialty) switch(severity) if(1.0) visible_message("The barricade is blown apart!") @@ -211,8 +210,7 @@ for reference: src.explode() ..() -/obj/machinery/deployable/barrier/ex_act(severity) - ..() +/obj/machinery/deployable/barrier/ex_act(severity, specialty) switch(severity) if(1.0) src.explode() diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 91890d4b665..b27c2fda20c 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -171,7 +171,7 @@ ..() -/obj/machinery/door/ex_act(severity) +/obj/machinery/door/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 9010bbf1d73..4135b1d5a7d 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -165,7 +165,7 @@ qdel(src) return -/obj/machinery/door/window/ex_act(severity) +/obj/machinery/door/window/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 3c1548ad369..bb2cab0a197 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -162,8 +162,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ stat |= ~NOPOWER //Destruction procs. -/obj/machinery/hologram/ex_act(severity) - ..() +/obj/machinery/hologram/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index ca155f495df..525eaf1f894 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -176,9 +176,18 @@ Class Procs: update_icon() /obj/machinery/ex_act(severity, specialty = 0) - ..() - if(prob(100 / (2 ** severity - 1) + 25 * specialty)) - qdel(src) + switch(severity) + if(1) + qdel(src) + if(2) + if(prob(50)) + qdel(src) + if(3) + if(prob(25)) + qdel(src) + if(!gc_destroyed) + contents_explosion(src, severity, specialty) + /obj/machinery/blob_act() if(prob(50)) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index e627b9c4add..f933cb9366e 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -220,8 +220,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co src.update_icon() -/obj/machinery/newscaster/ex_act(severity) - ..() +/obj/machinery/newscaster/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index d1f6a11ccc3..886d5485726 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -370,8 +370,7 @@ ..() -/obj/machinery/porta_turret/ex_act(severity) - ..() +/obj/machinery/porta_turret/ex_act(severity, specialty) if(severity >= 3) //turret dies if an explosion touches it! qdel(src) else diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index c4a9baff1a4..aabb4e0dc20 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -66,7 +66,7 @@ open_machine() ..(severity) -/obj/machinery/recharge_station/ex_act(severity) +/obj/machinery/recharge_station/ex_act(severity, specialty) if(occupier) open_machine() ..() diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index c09d2df37b1..87c62079b33 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -64,7 +64,7 @@ opacity = 1 spawn(20) if(src) opacity = 0 -/obj/machinery/shield/ex_act(severity) +/obj/machinery/shield/ex_act(severity, specialty) switch(severity) if(1.0) if (prob(75)) @@ -181,7 +181,7 @@ update_icon() return -/obj/machinery/shieldgen/ex_act(severity) +/obj/machinery/shieldgen/ex_act(severity, specialty) switch(severity) if(1.0) src.health -= 75 @@ -567,7 +567,7 @@ return -/obj/machinery/shieldwall/ex_act(severity) +/obj/machinery/shieldwall/ex_act(severity, specialty) if(needs_power) var/obj/machinery/shieldwallgen/G switch(severity) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 2cacd1b075e..47782404352 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -124,7 +124,7 @@ dump_everything() update_icon() -/obj/machinery/suit_storage_unit/ex_act(severity) +/obj/machinery/suit_storage_unit/ex_act(severity, specialty) switch(severity) if(1.0) if(prob(50)) @@ -428,7 +428,7 @@ var/mob/living/user = usr if(islocked) user.changeNext_move(CLICK_CD_BREAKOUT) - user.last_special = world.time + CLICK_CD_BREAKOUT + user.last_special = world.time + CLICK_CD_BREAKOUT var/breakout_time = 2 user << "You start kicking against the doors to escape! (This will take about [breakout_time] minutes.)" visible_message("You see [user] kicking against the doors of the [src]!") diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 668f94b2327..7459017d183 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -180,7 +180,7 @@ origin_tech = "syndicate=6;combat=5" var/adminlog = null -/obj/item/weapon/bombcore/ex_act(severity) //Little boom can chain a big boom +/obj/item/weapon/bombcore/ex_act(severity, specialty) //Little boom can chain a big boom src.detonate() /obj/item/weapon/bombcore/proc/detonate() diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 221abd0a052..59b2387aeb4 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -292,7 +292,7 @@ power_change() ..() -/obj/machinery/turret/ex_act(severity) +/obj/machinery/turret/ex_act(severity, specialty) if(severity < 3) src.die() @@ -362,7 +362,7 @@ ..() take_damage(0) //check your health -/obj/machinery/gun_turret/ex_act(severity) +/obj/machinery/gun_turret/ex_act(severity, specialty) switch(severity) if(1) die() diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index d9897ac3a00..aa25b385202 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -77,19 +77,11 @@ for(var/obj/item/weapon/vending_refill/VR in component_parts) refill_inventory(VR, product_records) -/obj/machinery/vending/ex_act(severity) - switch(severity) - if(1.0) - qdel(src) - return - if(2.0) - if(prob(50)) - qdel(src) - return - if(3.0) - if(prob(25)) - malfunction() - +/obj/machinery/vending/ex_act(severity, specialty) + ..() + if(!gc_destroyed) + if(prob(25)) + malfunction() /obj/machinery/vending/blob_act() if(prob(75)) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 8a157571d22..8bfe88b7f6e 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -572,7 +572,7 @@ obj/mecha/proc/can_use(mob/user) Proj.on_hit(src) return -/obj/mecha/ex_act(severity) +/obj/mecha/ex_act(severity, specialty) src.log_message("Affected by explosion of severity: [severity].",1) if(prob(src.deflect_chance)) severity++ diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index 496a2e965cf..0b0979c96d3 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -79,7 +79,7 @@ healthcheck() -/obj/structure/alien/resin/ex_act(severity) +/obj/structure/alien/resin/ex_act(severity, specialty) switch(severity) if(1.0) health -= 150 @@ -211,7 +211,7 @@ new /obj/structure/alien/weeds(T, linked_node) -/obj/structure/alien/weeds/ex_act(severity) +/obj/structure/alien/weeds/ex_act(severity, specialty) qdel(src) diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index cea1d7b2922..521d5d0387b 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -58,7 +58,7 @@ icon_state = "gibbl5" random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") -/obj/effect/decal/cleanable/blood/gibs/ex_act(severity) +/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, specialty) return /obj/effect/decal/cleanable/blood/gibs/remove_ex_blood() diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm index 77765bb8465..73cfb8fa566 100644 --- a/code/game/objects/effects/decals/decal.dm +++ b/code/game/objects/effects/decals/decal.dm @@ -2,5 +2,5 @@ name = "decal" icon = 'icons/effects/effects.dmi' -/obj/effect/decal/ex_act(severity) +/obj/effect/decal/ex_act(severity, specialty) qdel(src) \ No newline at end of file diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 4f95e1664b3..c31a54f6662 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -944,7 +944,7 @@ steam.start() -- spawns the effect icon_state = "ironfoam" -/obj/structure/foamedmetal/ex_act(severity) +/obj/structure/foamedmetal/ex_act(severity, specialty) qdel(src) /obj/structure/foamedmetal/blob_act() diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index 949d04d20ad..36fb5897365 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -117,7 +117,7 @@ endurance -= W.force CheckEndurance() -/obj/effect/glowshroom/ex_act(severity) +/obj/effect/glowshroom/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 43f78938077..14f54676cab 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -8,7 +8,7 @@ var/health = 15 //similar to weeds, but only barfed out by nurses manually -/obj/effect/spider/ex_act(severity) +/obj/effect/spider/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 7fb8ac6ea7b..4b5a9a0675b 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -51,12 +51,6 @@ m.unEquip(src, 1) return ..() -/obj/item/ex_act(severity, specialty = 0) - if(prob(100 / (2 ** severity - 1) + 25 * specialty)) - qdel(src) - else - ..(severity, specialty) - /obj/item/blob_act() qdel(src) diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm index 54f19b659f3..01a11fabe4c 100644 --- a/code/game/objects/items/latexballoon.dm +++ b/code/game/objects/items/latexballoon.dm @@ -26,7 +26,7 @@ item_state = "lgloves" loc.assume_air(air_contents) -/obj/item/latexballon/ex_act(severity) +/obj/item/latexballon/ex_act(severity, specialty) burst() switch(severity) if (1) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 324bef5da10..23c4a390bbd 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -123,6 +123,20 @@ /obj/proc/hide(h) return +/obj/ex_act(severity, specialty) + var/survivability = specialty * 15 + switch(severity) + if(1) + qdel(src) + if(2) + if(prob(50 + survivability)) + qdel(src) + if(3) + if(prob(25 + survivability)) + qdel(src) + if(!gc_destroyed) + ..() + //If a mob logouts/logins in side of an object you can use this proc /obj/proc/on_log() ..() diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 52693e6125e..3f76a0ef90f 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -5,12 +5,6 @@ if(prob(50)) qdel(src) -/obj/structure/ex_act(severity, specialty = 0) - if(prob(100 / (2 ** severity - 1) + 25 * specialty)) - qdel(src) - else - ..(severity, specialty) - /obj/structure/Destroy() if(opacity) UpdateAffectingLights() diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 913c791812f..e498f4fab23 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -127,10 +127,9 @@ return src.open() // this should probably use dump_contents() -/obj/structure/closet/ex_act(severity) - contents_explosion(src, severity) +/obj/structure/closet/ex_act(severity, specialty) + open() ..() - return /obj/structure/closet/bullet_act(var/obj/item/projectile/Proj) ..() diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm index f203d352608..787e5233572 100644 --- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm +++ b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm @@ -101,7 +101,7 @@ spawn(10) update_icon() -/obj/structure/closet/fireaxecabinet/ex_act(severity) +/obj/structure/closet/fireaxecabinet/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 0c4558d1bac..453260d5e1b 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -10,7 +10,7 @@ var/occupied = 1 var/destroyed = 0 -/obj/structure/displaycase/ex_act(severity) +/obj/structure/displaycase/ex_act(severity, specialty) switch(severity) if (1) new /obj/item/weapon/shard( src.loc ) diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm index c2948acd275..10cdc963a66 100644 --- a/code/game/objects/structures/extinguisher.dm +++ b/code/game/objects/structures/extinguisher.dm @@ -9,7 +9,7 @@ var/opened = 0 -/obj/structure/extinguisher_cabinet/ex_act(severity) +/obj/structure/extinguisher_cabinet/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index aedaa52e3b0..46e9cd35496 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -198,7 +198,7 @@ qdel(src) -/obj/structure/girder/ex_act(severity) +/obj/structure/girder/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) @@ -229,7 +229,7 @@ state = 2 girderpasschance = 0 -/obj/structure/girder/reinforced/ex_act(severity) +/obj/structure/girder/reinforced/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) @@ -285,7 +285,7 @@ qdel(src) -/obj/structure/cultgirder/ex_act(severity) +/obj/structure/cultgirder/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 902956ccecd..c292996cb6e 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -17,7 +17,7 @@ stored = new/obj/item/stack/rods(src) stored.amount = 2 -/obj/structure/grille/ex_act(severity) +/obj/structure/grille/ex_act(severity, specialty) qdel(src) /obj/structure/grille/blob_act() diff --git a/code/game/objects/structures/lamarr_cage.dm b/code/game/objects/structures/lamarr_cage.dm index b95ec7128c4..acba01c197e 100644 --- a/code/game/objects/structures/lamarr_cage.dm +++ b/code/game/objects/structures/lamarr_cage.dm @@ -10,7 +10,7 @@ var/occupied = 1 var/destroyed = 0 -/obj/structure/lamarr/ex_act(severity) +/obj/structure/lamarr/ex_act(severity, specialty) switch(severity) if (1) new /obj/item/weapon/shard( src.loc ) diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 8e3db180cea..d2bc62a39ea 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -38,7 +38,7 @@ qdel(src) return -/obj/structure/lattice/ex_act(severity) +/obj/structure/lattice/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 33a08d1b6de..37ae9ca2a84 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -165,7 +165,7 @@ FLOOR SAFES obj/structure/safe/blob_act() return -obj/structure/safe/ex_act(severity) +obj/structure/safe/ex_act(severity, specialty) return diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index 2d16a640c30..87a97897862 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -5,7 +5,7 @@ density = 0 layer = 3.5 -/obj/structure/sign/ex_act(severity) +/obj/structure/sign/ex_act(severity, specialty) qdel(src) /obj/structure/sign/blob_act() diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm index efbff04cfed..1877e3b3b07 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm @@ -6,7 +6,7 @@ anchored = 1.0 pressure_resistance = 15 -/obj/structure/stool/ex_act(severity) +/obj/structure/stool/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 4fdb7c61e1a..f6ecde8cd8d 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -180,7 +180,7 @@ else dir = 2 -/obj/structure/table/ex_act(severity) +/obj/structure/table/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) @@ -510,7 +510,7 @@ throwpass = 1 //You can throw objects over this, despite it's density. var/health = 5 -/obj/structure/rack/ex_act(severity) +/obj/structure/rack/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) diff --git a/code/game/objects/structures/transit_tubes/transit_tube.dm b/code/game/objects/structures/transit_tubes/transit_tube.dm index 77a27930d44..d269915b63c 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube.dm @@ -25,11 +25,12 @@ return !density // When destroyed by explosions, properly handle contents. -obj/structure/transit_tube/ex_act(severity) +obj/structure/transit_tube/ex_act(severity, specialty) if(3 - severity >= 0) + var/oldloc = loc ..(severity + 1) for(var/atom/movable/AM in contents) - AM.loc = loc + AM.loc = oldloc /obj/structure/transit_tube/New(loc) ..(loc) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index c31423e2d85..3c49dc4f365 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -27,7 +27,7 @@ return -/obj/structure/window/ex_act(severity) +/obj/structure/window/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm index 554442622f9..6352043f6a4 100644 --- a/code/game/turfs/simulated/floor/misc_floor.dm +++ b/code/game/turfs/simulated/floor/misc_floor.dm @@ -64,7 +64,7 @@ name = "Beach" icon = 'icons/misc/beach.dmi' -/turf/simulated/floor/beach/ex_act(severity) +/turf/simulated/floor/beach/ex_act(severity, specialty) contents_explosion(src, severity) /turf/simulated/floor/beach/sand @@ -90,7 +90,7 @@ icon = 'icons/turf/snow.dmi' icon_state = "snow" -/turf/simulated/floor/plating/snow/ex_act(severity) +/turf/simulated/floor/plating/snow/ex_act(severity, specialty) contents_explosion(src, severity) /turf/simulated/floor/noslip diff --git a/code/modules/events/ninja.dm b/code/modules/events/ninja.dm index 1807484bf64..7a7867e6458 100644 --- a/code/modules/events/ninja.dm +++ b/code/modules/events/ninja.dm @@ -2680,7 +2680,7 @@ It is possible to destroy the net by the occupant or someone else. healthcheck() ..() -/obj/effect/energy_net/ex_act(severity) +/obj/effect/energy_net/ex_act(severity, specialty) switch(severity) if(1.0) health-=50 diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index e9ce64822c5..c2bc53dc00c 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -500,7 +500,7 @@ */ -/obj/effect/spacevine/ex_act(severity) +/obj/effect/spacevine/ex_act(severity, specialty) switch(severity) if(1.0) Destroy() diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index c599033bd35..ec79365b417 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -104,7 +104,7 @@ update_icon() -/obj/structure/bookcase/ex_act(severity) +/obj/structure/bookcase/ex_act(severity, specialty) ..() if(!gc_destroyed) for(var/obj/item/weapon/book/b in contents) diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index c8be448c05a..c892a659e7b 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -192,7 +192,7 @@ updateUsrDialog() return -/obj/machinery/mineral/ore_redemption/ex_act(severity) +/obj/machinery/mineral/ore_redemption/ex_act(severity, specialty) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() @@ -357,7 +357,7 @@ new /obj/item/device/t_scanner/adv_mining_scanner(src.loc) qdel(voucher) -/obj/machinery/mineral/equipment_vendor/ex_act(severity) +/obj/machinery/mineral/equipment_vendor/ex_act(severity, specialty) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index c696c8de1eb..265172faf29 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -18,7 +18,7 @@ var/scan_state = null //Holder for the image we display when we're pinged by a mining scanner var/hidden = 1 -/turf/simulated/mineral/ex_act(severity) +/turf/simulated/mineral/ex_act(severity, specialty) ..() switch(severity) if(3.0) @@ -494,8 +494,8 @@ /turf/simulated/floor/plating/asteroid/burn_tile() return -/turf/simulated/floor/plating/asteroid/ex_act(severity) - ..() +/turf/simulated/floor/plating/asteroid/ex_act(severity, specialty) + contents_explosion(src, severity, specialty) switch(severity) if(3.0) return diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm index 63dd643d300..1b8394cbce1 100644 --- a/code/modules/mining/satchel_ore_boxdm.dm +++ b/code/modules/mining/satchel_ore_boxdm.dm @@ -83,6 +83,6 @@ src.updateUsrDialog() return -obj/structure/ore_box/ex_act(severity) +obj/structure/ore_box/ex_act(severity, specialty) if(prob(100 / severity) && severity < 3) qdel(src) //nothing but ores can get inside unless its a bug and ores just return nothing on ex_act, not point in calling it on them \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 122659f2c5a..42bdc619170 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -51,7 +51,7 @@ if(l_store) l_store.emp_act(severity) ..() -/mob/living/carbon/alien/humanoid/ex_act(severity) +/mob/living/carbon/alien/humanoid/ex_act(severity, specialty) ..() var/shielded = 0 diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 699f17c1f00..190efb392ed 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -55,7 +55,7 @@ ..(amount) -/mob/living/carbon/alien/larva/ex_act(severity) +/mob/living/carbon/alien/larva/ex_act(severity, specialty) ..() var/b_loss = null diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 9df56ed3037..580b8ace75a 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -146,7 +146,7 @@ stat("Energy Charge", round(wear_suit:cell:charge/100)) -/mob/living/carbon/human/ex_act(severity) +/mob/living/carbon/human/ex_act(severity, specialty) ..() var/shielded = 0 diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index d9343f483b7..ef2953e7e76 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -215,7 +215,7 @@ /mob/living/carbon/monkey/var/co2overloadtime = null /mob/living/carbon/monkey/var/temperature_resistance = T0C+75 -/mob/living/carbon/monkey/ex_act(severity) +/mob/living/carbon/monkey/ex_act(severity, specialty) ..() switch(severity) if(1.0) diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm index f67af292ae8..0103ea58388 100644 --- a/code/modules/mob/living/carbon/slime/slime.dm +++ b/code/modules/mob/living/carbon/slime/slime.dm @@ -186,7 +186,7 @@ powerlevel = 0 // oh no, the power! ..() -/mob/living/carbon/slime/ex_act(severity) +/mob/living/carbon/slime/ex_act(severity, specialty) ..() var/b_loss = null diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 67cc768bb78..9cc9384382f 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -44,7 +44,7 @@ /mob/living/proc/InCritical() return (src.health < 0 && src.health > -95.0 && stat == UNCONSCIOUS) -/mob/living/ex_act(severity) +/mob/living/ex_act(severity, specialty) ..() if(client && !blinded) flick("flash", src.flash) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index ca1c3fec17b..b777d9fc3b8 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -309,7 +309,7 @@ var/list/ai_list = list() ai_call_shuttle() ..() -/mob/living/silicon/ai/ex_act(severity) +/mob/living/silicon/ai/ex_act(severity, specialty) ..() switch(severity) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 4c773abce50..f5537bf988e 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -137,7 +137,7 @@ if(3) src << "You feel an electric surge run through your circuitry and become acutely aware at how lucky you are that you can still feel at all." -/mob/living/silicon/pai/ex_act(severity) +/mob/living/silicon/pai/ex_act(severity, specialty) ..() switch(severity) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index ebfaf30121a..af763539e46 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -325,7 +325,7 @@ return 0 -/mob/living/silicon/robot/ex_act(severity) +/mob/living/silicon/robot/ex_act(severity, specialty) ..() switch(severity) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index f4313a84f77..9d39a19cc07 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -99,7 +99,7 @@ visible_message("The [src.name]'s stare chills [L.name] to the bone!") return -/mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity) +/mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity, specialty) switch(severity) if(1.0) gib() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index fd6d8205476..fc70dd153d6 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -412,7 +412,7 @@ Die() -/mob/living/simple_animal/ex_act(severity) +/mob/living/simple_animal/ex_act(severity, specialty) ..() switch (severity) if (1.0) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index c3482e4c7e0..b4cda2bbbb0 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -269,7 +269,7 @@ copy = null updateUsrDialog() -/obj/machinery/photocopier/ex_act(severity) +/obj/machinery/photocopier/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) diff --git a/code/modules/power/antimatter/containment_jar.dm b/code/modules/power/antimatter/containment_jar.dm index d5ad645f288..82258e1dac5 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/weapon/am_containment/ex_act(severity) +/obj/item/weapon/am_containment/ex_act(severity, specialty) switch(severity) if(1.0) 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 c5033ff5ef5..0c4831fda0c 100644 --- a/code/modules/power/antimatter/control.dm +++ b/code/modules/power/antimatter/control.dm @@ -112,7 +112,7 @@ return -/obj/machinery/power/am_control_unit/ex_act(severity) +/obj/machinery/power/am_control_unit/ex_act(severity, specialty) stability -= (80 - (severity * 20)) check_stability() return diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm index 16ea0fbc48f..be52c6ea443 100644 --- a/code/modules/power/antimatter/shielding.dm +++ b/code/modules/power/antimatter/shielding.dm @@ -100,7 +100,7 @@ proc/cardinalrange(var/center) return -/obj/machinery/am_shielding/ex_act(severity) +/obj/machinery/am_shielding/ex_act(severity, specialty) stability -= (80 - (severity * 20)) check_stability() return diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index d64ca32e9dc..5adebd7b81f 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1183,13 +1183,16 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on) environ = 3 ..() -/obj/machinery/power/apc/ex_act(severity) - if(severity == 1) - qdel(src) - else - if(prob(100/ (2 ** (severity - 1)))) - set_broken() - cell.ex_act(severity) +/obj/machinery/power/apc/ex_act(severity, specialty) + ..() + if(!gc_destroyed) + switch(severity) + if(2) + if(prob(50)) + set_broken() + if(3) + if(prob(25)) + set_broken() /obj/machinery/power/apc/blob_act() if (prob(75)) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index fe8b5bb8735..757389627f4 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -83,8 +83,8 @@ By design, d1 is the smallest direction and d2 is the highest cable_list += src //add it to the global cable list if(d1) - stored = new/obj/item/stack/cable_coil(src,2,cable_color) - else stored = new/obj/item/stack/cable_coil(src,1,cable_color) + stored = new/obj/item/stack/cable_coil(null,2,cable_color) + else stored = new/obj/item/stack/cable_coil(null,1,cable_color) /obj/structure/cable/Destroy() // called when a cable is deleted if(powernet) @@ -174,13 +174,16 @@ By design, d1 is the smallest direction and d2 is the highest return 0 //explosion handling -/obj/structure/cable/ex_act(severity) - - if(severity == 1) - qdel() - else - if(prob(100 / (2 ** (severity - 1)))) - Deconstruct() +/obj/structure/cable/ex_act(severity, specialty) + ..() + if(!gc_destroyed) + switch(severity) + if(2) + if(prob(50)) + Deconstruct() + if(3) + if(prob(25)) + Deconstruct() /obj/structure/cable/singularity_pull(S, current_size) if(current_size >= STAGE_FIVE) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index c47686777e1..2d884754143 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -118,12 +118,17 @@ reliability -= 10 / severity ..() -/obj/item/weapon/stock_parts/cell/ex_act(severity) - if(prob(100 / (2 ** (severity - 1)))) - qdel(src) - else - if(prob(100 / (2 ** (severity - 1)))) - corrupt() +/obj/item/weapon/stock_parts/cell/ex_act(severity, specialty) + ..() + if(!gc_destroyed) + switch(severity) + if(2) + if(prob(50)) + corrupt() + if(3) + if(prob(25)) + corrupt() + /obj/item/weapon/stock_parts/cell/blob_act() ex_act(1) diff --git a/code/modules/power/engine.dm b/code/modules/power/engine.dm index a1abafa61ad..696d2bbd63a 100644 --- a/code/modules/power/engine.dm +++ b/code/modules/power/engine.dm @@ -4,11 +4,16 @@ /turf/simulated/floor/engine/attack_hand(var/mob/user as mob) user.Move_Pulled(src) -/turf/simulated/floor/engine/ex_act(severity) - ..() - if(prob(100 / (2**severity)) && severity < 3) - ChangeTurf(/turf/space) - qdel(src) +/turf/simulated/floor/engine/ex_act(severity, specialty) + contents_explosion(src, severity, specialty) + switch(severity) + if(1) + ChangeTurf(/turf/space) + if(2) + if(prob(50)) + ChangeTurf(/turf/space) + else + return /turf/simulated/floor/engine/blob_act() if (prob(25)) diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 3df8abca2a1..026279d3c00 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -28,7 +28,7 @@ var/const/GRAV_NEEDS_WRENCH = 3 unacidable = 1 var/sprite_number = 0 -/obj/machinery/gravity_generator/ex_act(severity) +/obj/machinery/gravity_generator/ex_act(severity, specialty) if(severity == 1) // Very sturdy. set_broken() diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 0fa95d055d2..1e4dd2f0e7d 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -572,12 +572,16 @@ // explosion effect // destroy the whole light fixture or just shatter it -/obj/machinery/light/ex_act(severity) - if(severity == 1) - qdel(src) - else - if(prob(100 - 25 * (severity - 1))) - broken() +/obj/machinery/light/ex_act(severity, specialty) + ..() + if(!gc_destroyed) + switch(severity) + if(2) + if(prob(50)) + broken() + if(3) + if(prob(25)) + broken() //blob effect diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 59d54c9c525..80050def4fd 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -106,7 +106,7 @@ var/global/list/rad_collectors = list() return 1 -/obj/machinery/power/rad_collector/ex_act(severity) +/obj/machinery/power/rad_collector/ex_act(severity, specialty) switch(severity) if(2, 3) eject() diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index 2e89562a8f9..151c8cd05e8 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -33,7 +33,7 @@ return 0 -/obj/machinery/field/containment/ex_act(severity) +/obj/machinery/field/containment/ex_act(severity, specialty) return 0 diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index c9cf44a4578..756d5a83858 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -49,7 +49,7 @@ return -/obj/effect/accelerated_particle/ex_act(severity) +/obj/effect/accelerated_particle/ex_act(severity, specialty) loc = null return diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index 3a717c23ee9..5c2cbfb70ce 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -143,10 +143,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin master.toggle_power() investigate_log("was moved whilst active; it powered down.","singulo") -/obj/structure/particle_accelerator/ex_act(severity) - if(prob(100 / (2 ** (severity - 1)))) - qdel(src) - /obj/structure/particle_accelerator/blob_act() if(prob(50)) qdel(src) @@ -319,10 +315,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin ..() return -/obj/machinery/particle_accelerator/ex_act(severity) - if(prob(100 / (2 ** (severity - 1)))) - qdel(src) - /obj/machinery/particle_accelerator/blob_act() if(prob(50)) qdel(src) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 6c538429169..4f082bd3920 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -59,7 +59,7 @@ /obj/machinery/singularity/blob_act(severity) return -/obj/machinery/singularity/ex_act(severity) +/obj/machinery/singularity/ex_act(severity, specialty) switch(severity) if(1.0) if(current_size <= STAGE_TWO) diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index e39a3e20c2f..c281b1f97fd 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -146,14 +146,18 @@ var/list/solars_list = list() return -/obj/machinery/power/solar/ex_act(severity) +/obj/machinery/power/solar/ex_act(severity, specialty) if(prob(25)) new /obj/item/weapon/shard(src.loc) - if(prob(100 / severity ** (severity - 1)) && severity < 3) - qdel(src) - else - if(prob(100 / (2 ** (severity - 1)))) - broken() + ..() + if(!gc_destroyed) + switch(severity) + if(2) + if(prob(50)) + broken() + if(3) + if(prob(25)) + broken() /obj/machinery/power/solar/blob_act() if(prob(75)) @@ -510,12 +514,16 @@ var/list/solars_list = list() update_icon() -/obj/machinery/power/solar_control/ex_act(severity) - if(severity == 1) - qdel(src) - else - if(prob(100 / (2 ** (severity - 1)))) - broken() +/obj/machinery/power/solar_control/ex_act(severity, specialty) + ..() + if(!gc_destroyed) + switch(severity) + if(2) + if(prob(50)) + broken() + if(3) + if(prob(25)) + broken() /obj/machinery/power/solar_control/blob_act() if (prob(75)) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 3fc37362cc5..2a71f6b5394 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -51,9 +51,9 @@ recharge() dispensable_reagents = sortList(dispensable_reagents) -/obj/machinery/chem_dispenser/ex_act(severity) - if((severity < 3) && prob(100 / (2 ** (severity - 1)))) - qdel(src) +/obj/machinery/chem_dispenser/ex_act(severity, specialty) + if(severity < 3) + ..() /obj/machinery/chem_dispenser/blob_act() if(prob(50)) @@ -254,9 +254,9 @@ create_reagents(100) overlays += "waitlight" -/obj/machinery/chem_master/ex_act(severity) - if(severity < 3 && prob(100 / 2 ** (severity - 1))) - qdel(src) +/obj/machinery/chem_master/ex_act(severity, specialty) + if(severity < 3) + ..() /obj/machinery/chem_master/blob_act() if (prob(50)) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 3181f68cd7c..b023db294d2 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -10,7 +10,7 @@ var/amount_per_transfer_from_this = 10 var/possible_transfer_amounts = list(10,25,50,100) -/obj/structure/reagent_dispensers/ex_act(severity) +/obj/structure/reagent_dispensers/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) @@ -60,7 +60,7 @@ ..() reagents.add_reagent("water",1000) -/obj/structure/reagent_dispensers/watertank/ex_act(severity) +/obj/structure/reagent_dispensers/watertank/ex_act(severity, specialty) switch(severity) if(1.0) qdel(src) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 9d5adfd8d2a..7495ed90d80 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -793,7 +793,7 @@ // pipe affected by explosion -/obj/structure/disposalpipe/ex_act(severity) +/obj/structure/disposalpipe/ex_act(severity, specialty) //pass on ex_act to our contents before calling it on ourself var/obj/structure/disposalholder/H = locate() in src diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index b5d05a946f3..b4f29e0529f 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -80,7 +80,7 @@ ..() -/obj/machinery/r_n_d/server/ex_act(severity) +/obj/machinery/r_n_d/server/ex_act(severity, specialty) griefProtection() ..()