Merge pull request #15371 from DeltaFire15/unintended-devastation

Devastation level explosions no longer delete organs of gibbed humans
This commit is contained in:
Lin
2021-11-17 16:19:23 +00:00
committed by GitHub
125 changed files with 181 additions and 180 deletions
+1 -1
View File
@@ -327,7 +327,7 @@
/atom/movable/fov_holder/has_gravity(turf/T)
return FALSE
/atom/movable/fov_holder/ex_act(severity)
/atom/movable/fov_holder/ex_act(severity, target, origin)
return FALSE
/atom/movable/fov_holder/singularity_act()
+1 -1
View File
@@ -253,7 +253,7 @@ GLOBAL_LIST_EMPTY(explosions)
if(dist > EXPLODE_NONE)
T.explosion_level = max(T.explosion_level, dist) //let the bigger one have it
T.explosion_id = id
T.ex_act(dist)
T.ex_act(dist, origin = src)
exploded_this_tick += T
//--- THROW ITEMS AROUND ---
+3 -3
View File
@@ -610,12 +610,12 @@
user.buckle_message_cooldown = world.time + 50
to_chat(user, "<span class='warning'>You can't move while buckled to [src]!</span>")
/atom/proc/contents_explosion(severity, target)
/atom/proc/contents_explosion(severity, target, origin)
return //For handling the effects of explosions on contents that would not normally be effected
/atom/proc/ex_act(severity, target, datum/explosion/E)
/atom/proc/ex_act(severity, target, origin)
set waitfor = FALSE
contents_explosion(severity, target)
contents_explosion(severity, target, origin)
SEND_SIGNAL(src, COMSIG_ATOM_EX_ACT, severity, target)
/**
+2 -2
View File
@@ -58,9 +58,9 @@
storedpda.forceMove(loc)
storedpda = null
/obj/machinery/pdapainter/contents_explosion(severity, target)
/obj/machinery/pdapainter/contents_explosion(severity, target, origin)
if(storedpda)
storedpda.ex_act(severity, target)
storedpda.ex_act(severity, target, origin)
/obj/machinery/pdapainter/handle_atom_del(atom/A)
if(A == storedpda)
+2 -2
View File
@@ -405,9 +405,9 @@ Class Procs:
update_appearance()
return TRUE
/obj/machinery/contents_explosion(severity, target)
/obj/machinery/contents_explosion(severity, target, origin)
if(occupant)
occupant.ex_act(severity, target)
occupant.ex_act(severity, target, origin)
/obj/machinery/handle_atom_del(atom/A)
if(A == occupant)
+2 -2
View File
@@ -55,9 +55,9 @@
storedpart.forceMove(loc)
storedpart = null
/obj/machinery/aug_manipulator/contents_explosion(severity, target)
/obj/machinery/aug_manipulator/contents_explosion(severity, target, origin)
if(storedpart)
storedpart.ex_act(severity, target)
storedpart.ex_act(severity, target, origin)
/obj/machinery/aug_manipulator/handle_atom_del(atom/A)
if(A == storedpart)
+1 -1
View File
@@ -125,7 +125,7 @@
M.reset_perspective(null)
to_chat(M, "The screen bursts into static.")
/obj/machinery/camera/ex_act(severity, target)
/obj/machinery/camera/ex_act(severity, target, origin)
if(invuln)
return
..()
+1 -1
View File
@@ -439,7 +439,7 @@
mob_occupant.copy_from_prefs_vr()
go_out()
/obj/machinery/clonepod/ex_act(severity, target)
/obj/machinery/clonepod/ex_act(severity, target, origin)
..()
if(!QDELETED(src))
go_out()
+1 -4
View File
@@ -158,12 +158,9 @@
name = "Circuit board (Cryogenic Oversight Console)"
build_path = "/obj/machinery/computer/cryopod"
/obj/machinery/computer/cryopod/contents_explosion()
/obj/machinery/computer/cryopod/contents_explosion(severity, target, origin)
return
/obj/machinery/computer/cryopod/contents_explosion()
return //don't blow everyone's shit up.
/// The box
/obj/item/storage/box/blue/cryostorage_items
w_class = WEIGHT_CLASS_HUGE
+1 -1
View File
@@ -407,7 +407,7 @@
if(!stat) //Opens only powered doors.
open() //Open everything!
/obj/machinery/door/ex_act(severity, target)
/obj/machinery/door/ex_act(severity, target, origin)
//if it blows up a wall it should blow up a door
..(severity ? max(1, severity - 1) : 0, target)
+1 -1
View File
@@ -69,7 +69,7 @@
/obj/machinery/door/password/emp_act(severity)
return
/obj/machinery/door/password/ex_act(severity, target)
/obj/machinery/door/password/ex_act(severity, target, origin)
return
/obj/machinery/door/password/wave_ex_act(power, datum/wave_explosion/explosion, dir)
+1 -1
View File
@@ -68,7 +68,7 @@
return ..()
//"BLAST" doors are obviously stronger than regular doors when it comes to BLASTS.
/obj/machinery/door/poddoor/ex_act(severity, target)
/obj/machinery/door/poddoor/ex_act(severity, target, origin)
if(severity == 3)
return
..()
+1 -1
View File
@@ -270,7 +270,7 @@
var/range_light = 17
var/range_flame = 17
/obj/item/bombcore/ex_act(severity, target) // Little boom can chain a big boom.
/obj/item/bombcore/ex_act(severity, target, origin) // Little boom can chain a big boom.
detonate()
+5 -5
View File
@@ -111,23 +111,23 @@
mecha_log_message("Hit by projectile. Type: [Proj.name]([Proj.flag]).", color="red")
. = ..()
/obj/mecha/ex_act(severity, target)
/obj/mecha/ex_act(severity, target, origin)
mecha_log_message("Affected by explosion of severity: [severity].", color="red")
if(prob(deflect_chance))
severity++
log_append_to_last("Armor saved, changing severity to [severity].")
. = ..()
/obj/mecha/contents_explosion(severity, target)
/obj/mecha/contents_explosion(severity, target, origin)
severity++
for(var/X in equipment)
var/obj/item/mecha_parts/mecha_equipment/ME = X
ME.ex_act(severity,target)
ME.ex_act(severity, target, origin)
for(var/Y in trackers)
var/obj/item/mecha_parts/mecha_tracking/MT = Y
MT.ex_act(severity, target)
MT.ex_act(severity, target, origin)
if(occupant)
occupant.ex_act(severity,target)
occupant.ex_act(severity, target, origin)
/obj/mecha/handle_atom_del(atom/A)
if(A == occupant)
+1 -1
View File
@@ -144,7 +144,7 @@
return
/obj/mecha/working/ripley/contents_explosion(severity, target)
/obj/mecha/working/ripley/contents_explosion(severity, target, origin)
for(var/X in cargo)
var/obj/O = X
if(prob(30/severity))
+1 -1
View File
@@ -69,7 +69,7 @@
/obj/effect/anomaly/proc/detonate()
return
/obj/effect/anomaly/ex_act(severity, target)
/obj/effect/anomaly/ex_act(severity, target, origin)
if(severity == 1)
qdel(src)
+1 -1
View File
@@ -60,7 +60,7 @@
STOP_PROCESSING(SSfastprocess, src)
. = ..()
/obj/effect/countdown/ex_act(severity, target) //immune to explosions
/obj/effect/countdown/ex_act(severity, target, origin) //immune to explosions
return
/obj/effect/countdown/syndicatebomb
@@ -77,10 +77,10 @@
else
return ..()
/obj/effect/decal/cleanable/ex_act()
/obj/effect/decal/cleanable/ex_act(severity, target, origin)
if(reagents)
for(var/datum/reagent/R in reagents.reagent_list)
R.on_ex_act()
R.on_ex_act(severity)
..()
/obj/effect/decal/cleanable/fire_act(exposed_temperature, exposed_volume)
@@ -36,7 +36,7 @@
. = ..()
return /obj/effect/decal/cleanable/blood/gibs/old
/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target)
/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target, origin)
return
/obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L)
@@ -47,7 +47,7 @@
. = ..()
setDir(pick(GLOB.cardinals))
/obj/effect/decal/cleanable/glass/ex_act()
/obj/effect/decal/cleanable/glass/ex_act(severity, target, origin)
qdel(src)
/obj/effect/decal/cleanable/glass/wave_ex_act(power, datum/wave_explosion/explosion, dir)
@@ -32,7 +32,7 @@
if (!step_to(src, get_step(src, direction), 0))
break
/obj/effect/decal/cleanable/robot_debris/ex_act()
/obj/effect/decal/cleanable/robot_debris/ex_act(severity, target, origin)
return
/obj/effect/decal/cleanable/robot_debris/limb
+1 -1
View File
@@ -17,7 +17,7 @@
/obj/effect/decal/proc/NeverShouldHaveComeHere(turf/T)
return isclosedturf(T) || isgroundlessturf(T)
/obj/effect/decal/ex_act(severity, target)
/obj/effect/decal/ex_act(severity, target, origin)
qdel(src)
/obj/effect/decal/fire_act(exposed_temperature, exposed_volume)
+2 -2
View File
@@ -30,7 +30,7 @@
/obj/effect/experience_pressure_difference()
return
/obj/effect/ex_act(severity, target)
/obj/effect/ex_act(severity, target, origin)
if(target == src)
qdel(src)
else
@@ -51,7 +51,7 @@
/obj/effect/ConveyorMove()
return
/obj/effect/abstract/ex_act(severity, target)
/obj/effect/abstract/ex_act(severity, target, origin)
return
/obj/effect/abstract/singularity_pull()
+1 -1
View File
@@ -11,7 +11,7 @@
return
// Please stop bombing the Observer-Start landmark.
/obj/effect/landmark/ex_act()
/obj/effect/landmark/ex_act(severity, target, origin)
return
/obj/effect/landmark/singularity_pull()
@@ -25,7 +25,7 @@
/obj/effect/temp_visual/singularity_pull()
return
/obj/effect/temp_visual/ex_act()
/obj/effect/temp_visual/ex_act(severity, target, origin)
return
/obj/effect/temp_visual/dir_setting
+1 -1
View File
@@ -266,7 +266,7 @@
/obj/effect/chrono_field/singularity_pull()
return
/obj/effect/chrono_field/ex_act()
/obj/effect/chrono_field/ex_act(severity, target, origin)
return
/obj/effect/chrono_field/blob_act(obj/structure/blob/B)
@@ -144,8 +144,8 @@
/obj/effect/dummy/chameleon/attack_alien()
master.disrupt()
/obj/effect/dummy/chameleon/ex_act(S, T)
contents_explosion(S, T)
/obj/effect/dummy/chameleon/ex_act(severity, target, origin)
contents_explosion(severity, target, origin)
master.disrupt()
/obj/effect/dummy/chameleon/bullet_act()
@@ -14,7 +14,7 @@
attack_verb = list("blown up", "exploded", "detonated")
custom_materials = list(/datum/material/iron=50, /datum/material/glass=30)
/obj/item/doorCharge/ex_act(severity, target)
/obj/item/doorCharge/ex_act(severity, target, origin)
switch(severity)
if(EXPLODE_DEVASTATE)
visible_message("<span class='warning'>[src] detonates!</span>")
@@ -27,7 +27,7 @@
QDEL_NULL(beaker)
return ..()
/obj/item/storage/portable_chem_mixer/ex_act(severity, target)
/obj/item/storage/portable_chem_mixer/ex_act(severity, target, origin)
if(severity < 3)
..()
+1 -1
View File
@@ -31,7 +31,7 @@
user.update_inv_hands()
loc.assume_air(air_contents)
/obj/item/latexballon/ex_act(severity, target)
/obj/item/latexballon/ex_act(severity, target, origin)
burst()
switch(severity)
if (1)
+1 -1
View File
@@ -557,7 +557,7 @@
..()
balanced = 0
/obj/item/melee/supermatter_sword/ex_act(severity, target)
/obj/item/melee/supermatter_sword/ex_act(severity, target, origin)
visible_message("<span class='danger'>The blast wave smacks into [src] and rapidly flashes to ash.</span>",\
"<span class='italics'>You hear a loud crack as you are washed with a wave of heat.</span>")
consume_everything()
+1 -1
View File
@@ -54,7 +54,7 @@
/obj/machinery/door/keycard/emp_act(severity)
return
/obj/machinery/door/keycard/ex_act(severity, target)
/obj/machinery/door/keycard/ex_act(severity, target, origin)
return
/obj/machinery/door/keycard/try_to_activate_door(mob/user)
+2 -2
View File
@@ -18,10 +18,10 @@
/obj/item/storage/AllowDrop()
return TRUE
/obj/item/storage/contents_explosion(severity, target)
/obj/item/storage/contents_explosion(severity, target, origin)
var/in_storage = istype(loc, /obj/item/storage)? (max(0, severity - 1)) : (severity)
for(var/atom/A in contents)
A.ex_act(in_storage, target)
A.ex_act(in_storage, target, origin)
CHECK_TICK
//Cyberboss says: "USE THIS TO FILL IT, NOT INITIALIZE OR NEW"
+1 -1
View File
@@ -56,7 +56,7 @@
throwdamage = 0
take_damage(throwdamage, BRUTE, "melee", 1, get_dir(src, AM))
/obj/ex_act(severity, target)
/obj/ex_act(severity, target, origin)
if(resistance_flags & INDESTRUCTIBLE)
return
..() //contents explosion
@@ -554,9 +554,9 @@
if(!QDELETED(lockerelectronics))
lockerelectronics.accesses = req_access
/obj/structure/closet/contents_explosion(severity, target)
/obj/structure/closet/contents_explosion(severity, target, origin)
for(var/atom/A in contents)
A.ex_act(severity, target)
A.ex_act(severity, target, origin)
CHECK_TICK
/obj/structure/closet/singularity_act()
@@ -21,7 +21,7 @@
if(.) //if we actually closed the locker
recursive_organ_check(src)
/obj/structure/closet/secure_closet/freezer/ex_act()
/obj/structure/closet/secure_closet/freezer/ex_act(severity, target, origin)
if(!jones)
jones = TRUE
else
+2 -2
View File
@@ -32,9 +32,9 @@
stored_extinguisher = null
return ..()
/obj/structure/extinguisher_cabinet/contents_explosion(severity, target)
/obj/structure/extinguisher_cabinet/contents_explosion(severity, target, origin)
if(stored_extinguisher)
stored_extinguisher.ex_act(severity, target)
stored_extinguisher.ex_act(severity, target, origin)
/obj/structure/extinguisher_cabinet/handle_atom_del(atom/A)
if(A == stored_extinguisher)
+2 -2
View File
@@ -91,9 +91,9 @@
/obj/structure/guncase/handle_atom_del(atom/A)
update_icon()
/obj/structure/guncase/contents_explosion(severity, target)
/obj/structure/guncase/contents_explosion(severity, target, origin)
for(var/atom/A in contents)
A.ex_act(severity++, target)
A.ex_act(severity++, target, origin)
CHECK_TICK
/obj/structure/guncase/shotgun
+1 -1
View File
@@ -249,7 +249,7 @@
P.setAngle(rotation_angle)
return ..()
/obj/structure/reflector/ex_act()
/obj/structure/reflector/ex_act(severity, target, origin)
if(admin)
return
else
+1 -1
View File
@@ -84,7 +84,7 @@ FLOOR SAFES
/obj/structure/safe/blob_act(obj/structure/blob/B)
return
/obj/structure/safe/ex_act(severity, target)
/obj/structure/safe/ex_act(severity, target, origin)
if(((severity == 2 && target == src) || severity == 1) && explosion_count < BROKEN_THRESHOLD)
explosion_count++
switch(explosion_count)
@@ -50,14 +50,14 @@
empty_pod(location)
qdel(src)
/obj/structure/transit_tube_pod/ex_act(severity, target)
/obj/structure/transit_tube_pod/ex_act(severity, target, origin)
..()
if(!QDELETED(src))
empty_pod()
/obj/structure/transit_tube_pod/contents_explosion(severity, target)
/obj/structure/transit_tube_pod/contents_explosion(severity, target, origin)
for(var/atom/movable/AM in contents)
AM.ex_act(severity, target)
AM.ex_act(severity, target, origin)
/obj/structure/transit_tube_pod/singularity_pull(S, current_size)
..()
+1 -1
View File
@@ -72,7 +72,7 @@
if(mapload && prob(66)) // 2/3 instead of 1/3 (default)
MakeDirty()
/turf/open/floor/ex_act(severity, target)
/turf/open/floor/ex_act(severity, target, origin)
var/shielded = is_shielded()
..()
if(severity != 1 && shielded && target != src)
+1 -1
View File
@@ -195,7 +195,7 @@
return TRUE
return FALSE
/turf/open/floor/plating/foam/ex_act()
/turf/open/floor/plating/foam/ex_act(severity, target, origin)
..()
ScrapeAway(flags = CHANGETURF_INHERIT_AIR)
@@ -89,7 +89,7 @@
for(var/obj/item/stack/ore/O in src)
SEND_SIGNAL(W, COMSIG_PARENT_ATTACKBY, O)
/turf/open/floor/plating/asteroid/ex_act(severity, target)
/turf/open/floor/plating/asteroid/ex_act(severity, target, origin)
. = SEND_SIGNAL(src, COMSIG_ATOM_EX_ACT, severity, target)
contents_explosion(severity, target)
@@ -120,7 +120,7 @@
/turf/open/floor/plating/beach/try_replace_tile(obj/item/stack/tile/T, mob/user, params)
return
/turf/open/floor/plating/beach/ex_act(severity, target)
/turf/open/floor/plating/beach/ex_act(severity, target, origin)
contents_explosion(severity, target)
/turf/open/floor/plating/beach/sand
@@ -53,7 +53,7 @@
acidpwr = min(acidpwr, 50) //we reduce the power so reinf floor never get melted.
. = ..()
/turf/open/floor/engine/ex_act(severity,target)
/turf/open/floor/engine/ex_act(severity,target, origin)
var/shielded = is_shielded()
contents_explosion(severity, target)
if(severity != 1 && shielded && target != src)
+2 -2
View File
@@ -18,8 +18,8 @@
clawfootstep = FOOTSTEP_LAVA
heavyfootstep = FOOTSTEP_LAVA
/turf/open/lava/ex_act(severity, target)
contents_explosion(severity, target)
/turf/open/lava/ex_act(severity, target, origin)
contents_explosion(severity, target, origin)
/turf/open/lava/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent)
return
+2 -2
View File
@@ -171,7 +171,7 @@
/turf/closed/mineral/acid_melt()
ScrapeAway()
/turf/closed/mineral/ex_act(severity, target)
/turf/closed/mineral/ex_act(severity, target, origin)
..()
switch(severity)
if(3)
@@ -661,7 +661,7 @@
/turf/closed/mineral/strong/acid_melt()
return
/turf/closed/mineral/strong/ex_act(severity, target)
/turf/closed/mineral/strong/ex_act(severity, target, origin)
return
#undef MINING_MESSAGE_COOLDOWN
@@ -272,12 +272,10 @@
icon_state = "map-overspace"
fixed_underlay = list("space"=1)
/turf/closed/wall/mineral/plastitanium/explosive/ex_act(severity)
/turf/closed/wall/mineral/plastitanium/explosive/ex_act(severity, target, origin)
var/datum/explosion/acted_explosion = null
for(var/datum/explosion/E in GLOB.explosions)
if(E.explosion_id == explosion_id)
acted_explosion = E
break
if(istype(origin, /datum/explosion))
acted_explosion = origin
if(acted_explosion && istype(acted_explosion.explosion_source, /obj/item/bombcore))
var/obj/item/bombcore/large/bombcore = new(get_turf(src))
bombcore.detonate()
+2 -2
View File
@@ -80,7 +80,7 @@
if(girder_type)
new /obj/item/stack/sheet/metal(src)
/turf/closed/wall/ex_act(severity, target)
/turf/closed/wall/ex_act(severity, target, origin)
if(target == src)
dismantle_wall(1,1)
return
@@ -88,7 +88,7 @@
if(1)
//SN src = null
var/turf/NT = ScrapeAway()
NT.contents_explosion(severity, target)
NT.contents_explosion(severity, target, origin)
return
if(2)
if (prob(50))
+2 -2
View File
@@ -451,7 +451,7 @@ GLOBAL_LIST_EMPTY(station_turfs)
/turf/proc/is_shielded()
/turf/contents_explosion(severity, target)
/turf/contents_explosion(severity, target, origin)
var/affecting_level
if(severity == 1)
affecting_level = 1
@@ -469,7 +469,7 @@ GLOBAL_LIST_EMPTY(station_turfs)
var/atom/movable/AM = A
if(!AM.ex_check(explosion_id))
continue
A.ex_act(severity, target)
A.ex_act(severity, target, origin)
CHECK_TICK
/turf/wave_ex_act(power, datum/wave_explosion/explosion, dir)
+1 -1
View File
@@ -1592,7 +1592,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
light_range = 2
duration = 9
/obj/effect/temp_visual/target/ex_act()
/obj/effect/temp_visual/target/ex_act(severity, target, origin)
return
/obj/effect/temp_visual/target/Initialize(mapload, list/flame_hit)
@@ -45,7 +45,7 @@
GLOB.poi_list -= src
return ..()
/obj/structure/blob/core/ex_act(severity, target)
/obj/structure/blob/core/ex_act(severity, target, origin)
var/damage = 50 - 10 * severity //remember, the core takes half brute damage, so this is 20/15/10 damage based on severity
take_damage(damage, BRUTE, "bomb", 0)
@@ -8,7 +8,7 @@
linked.examine(user)
return ..()
/obj/effect/clockwork/overlay/ex_act()
/obj/effect/clockwork/overlay/ex_act(severity, target, origin)
return FALSE
/obj/effect/clockwork/overlay/singularity_act()
@@ -36,7 +36,7 @@
return TRUE
. = ..()
/obj/effect/clockwork/sigil/ex_act(severity)
/obj/effect/clockwork/sigil/ex_act(severity, target, origin)
visible_message("<span class='warning'>[src] scatters into thousands of particles.</span>")
qdel(src)
@@ -204,7 +204,7 @@
. = ..()
update_icon()
/obj/effect/clockwork/sigil/transmission/ex_act(severity)
/obj/effect/clockwork/sigil/transmission/ex_act(severity, target, origin)
if(severity == 3)
adjust_clockwork_power(500) //Light explosions charge the network!
visible_message("<span class='warning'>[src] flares a brilliant orange!</span>")
@@ -38,7 +38,7 @@
/obj/effect/clockwork/servant_blocker/singularity_pull()
return
/obj/effect/clockwork/servant_blocker/ex_act(severity, target)
/obj/effect/clockwork/servant_blocker/ex_act(severity, target, origin)
return
/obj/effect/clockwork/servant_blocker/safe_throw_at()
@@ -102,7 +102,7 @@
return TRUE
return ..()
/obj/effect/clockwork/spatial_gateway/ex_act(severity)
/obj/effect/clockwork/spatial_gateway/ex_act(severity, target, origin)
if(severity == 1 && uses)
uses = 0
visible_message("<span class='warning'>[src] is disrupted!</span>")
@@ -251,7 +251,7 @@
name = "stable gateway"
is_stable = TRUE
/obj/effect/clockwork/spatial_gateway/stable/ex_act(severity)
/obj/effect/clockwork/spatial_gateway/stable/ex_act(severity, target, origin)
if(severity == 1)
start_shutdown() //Yes, you can chain devastation-level explosions to delay a gateway shutdown, if you somehow manage to do it without breaking the obelisk. Is it worth it? Probably not.
return TRUE
@@ -214,5 +214,5 @@
sleep(3) //so the animation completes properly
qdel(src)
/obj/effect/clockwork/judicial_marker/ex_act(severity)
/obj/effect/clockwork/judicial_marker/ex_act(severity, target, origin)
return
@@ -197,7 +197,7 @@
glow = new /obj/effect/clockwork/overlay/gateway_glow(get_turf(src))
glow.linked = src
/obj/structure/destructible/clockwork/massive/celestial_gateway/ex_act(severity)
/obj/structure/destructible/clockwork/massive/celestial_gateway/ex_act(severity, target, origin)
var/damage = max((obj_integrity * 0.7) / severity, 100) //requires multiple bombs to take down
take_damage(damage, BRUTE, "bomb", 0)
@@ -179,7 +179,7 @@
/mob/living/carbon/true_devil/is_literate()
return 1
/mob/living/carbon/true_devil/ex_act(severity, ex_target)
/mob/living/carbon/true_devil/ex_act(severity, target, origin)
if(!ascended)
var/b_loss
switch (severity)
@@ -174,7 +174,7 @@
//Immunities
/mob/living/simple_animal/revenant/ex_act(severity, target)
/mob/living/simple_animal/revenant/ex_act(severity, target, origin)
return 1 //Immune to the effects of explosions.
/mob/living/simple_animal/revenant/wave_ex_act(power, datum/wave_explosion/explosion, dir)
@@ -249,7 +249,7 @@
released and fully healed, because in the end it's just a jape, \
sibling!</B>"
/mob/living/simple_animal/slaughter/laughter/ex_act(severity)
/mob/living/simple_animal/slaughter/laughter/ex_act(severity, target, origin)
switch(severity)
if(1)
death()
@@ -72,10 +72,10 @@
QDEL_NULL(beaker)
return ..()
/obj/machinery/atmospherics/components/unary/cryo_cell/contents_explosion(severity, target)
/obj/machinery/atmospherics/components/unary/cryo_cell/contents_explosion(severity, target, origin)
..()
if(beaker)
beaker.ex_act(severity, target)
beaker.ex_act(severity, target, origin)
/obj/machinery/atmospherics/components/unary/cryo_cell/handle_atom_del(atom/A)
..()
@@ -149,5 +149,5 @@ GLOBAL_VAR_INIT(sc_safecode5, "[rand(0,9)]")
if(prob(25))
mezzer()
/obj/singularity/narsie/mini/ex_act()
/obj/singularity/narsie/mini/ex_act(severity, target, origin)
return
+2 -2
View File
@@ -187,10 +187,10 @@
else
..()
/obj/structure/closet/supplypod/ex_act() //Explosions dont do SHIT TO US! This is because supplypods create explosions when they land.
/obj/structure/closet/supplypod/ex_act(severity, target, origin) //Explosions dont do SHIT TO US! This is because supplypods create explosions when they land.
return
/obj/structure/closet/supplypod/contents_explosion() //Supplypods also protect their contents from the harmful effects of fucking exploding.
/obj/structure/closet/supplypod/contents_explosion(severity, target, origin) //Supplypods also protect their contents from the harmful effects of fucking exploding.
return
/obj/structure/closet/supplypod/toggle(mob/living/user)
+1 -1
View File
@@ -99,7 +99,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
walk(src,0)
walk_towards(src, destination, 1)
/obj/effect/immovablerod/ex_act(severity, target)
/obj/effect/immovablerod/ex_act(severity, target, origin)
return 0
/obj/effect/immovablerod/singularity_act()
+1 -1
View File
@@ -507,7 +507,7 @@
if(master)
master.spawn_spacevine_piece(stepturf, src)
/obj/structure/spacevine/ex_act(severity, target)
/obj/structure/spacevine/ex_act(severity, target, origin)
if(istype(target, type)) //if its agressive spread vine dont do anything
return
var/i
+1 -1
View File
@@ -203,7 +203,7 @@
return
emergency_shutdown()
/obj/machinery/computer/holodeck/ex_act(severity, target)
/obj/machinery/computer/holodeck/ex_act(severity, target, origin)
emergency_shutdown()
return ..()
+2 -2
View File
@@ -27,10 +27,10 @@
QDEL_NULL(beaker)
return ..()
/obj/machinery/biogenerator/contents_explosion(severity, target)
/obj/machinery/biogenerator/contents_explosion(severity, target, origin)
..()
if(beaker)
beaker.ex_act(severity, target)
beaker.ex_act(severity, target, origin)
/obj/machinery/biogenerator/handle_atom_del(atom/A)
..()
+1 -1
View File
@@ -173,7 +173,7 @@
var/mob/M = loc
M.dropItemToGround(src)
/obj/item/reagent_containers/food/snacks/grown/firelemon/ex_act(severity)
/obj/item/reagent_containers/food/snacks/grown/firelemon/ex_act(severity, target, origin)
qdel(src) //Ensuring that it's deleted by its own explosion
/obj/item/reagent_containers/food/snacks/grown/firelemon/proc/prime(mob/living/lanced_by)
+2 -2
View File
@@ -224,7 +224,7 @@
if(!QDELETED(src))
qdel(src)
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/ex_act(severity)
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/ex_act(severity, target, origin)
qdel(src) //Ensuring that it's deleted by its own explosion. Also prevents mass chain reaction with piles of cherry bombs
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/prime(mob/living/lanced_by)
@@ -500,7 +500,7 @@
log_game("Coconut bomb detonation at [AREACOORD(T)], location [loc]")
qdel(src)
/obj/item/reagent_containers/food/snacks/grown/coconut/ex_act(severity)
/obj/item/reagent_containers/food/snacks/grown/coconut/ex_act(severity, target, origin)
qdel(src)
/obj/item/reagent_containers/food/snacks/grown/coconut/deconstruct(disassembled = TRUE)
+1 -1
View File
@@ -26,7 +26,7 @@
color = GLOB.em_block_color
/atom/movable/emissive_blocker/ex_act(severity)
/atom/movable/emissive_blocker/ex_act(severity, target, origin)
return FALSE
/atom/movable/emissive_blocker/singularity_act()
+1 -1
View File
@@ -124,7 +124,7 @@
// Variety of overrides so the overlays don't get affected by weird things.
/atom/movable/lighting_object/ex_act(severity)
/atom/movable/lighting_object/ex_act(severity, target, origin)
return 0
/atom/movable/lighting_object/singularity_act()
@@ -484,7 +484,7 @@
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
anchored = TRUE
/obj/effect/warp_cube/ex_act(severity, target)
/obj/effect/warp_cube/ex_act(severity, target, origin)
return
//Meat Hook
@@ -607,7 +607,7 @@
/obj/effect/immortality_talisman/attackby()
return
/obj/effect/immortality_talisman/ex_act()
/obj/effect/immortality_talisman/ex_act(severity, target, origin)
return
/obj/effect/immortality_talisman/singularity_pull()
+1 -1
View File
@@ -346,7 +346,7 @@
to_chat(usr, "<span class='warning'>Required access not found.</span>")
return TRUE
/obj/machinery/mineral/ore_redemption/ex_act(severity, target)
/obj/machinery/mineral/ore_redemption/ex_act(severity, target, origin)
do_sparks(5, TRUE, src)
..()
+1 -1
View File
@@ -270,7 +270,7 @@
SSblackbox.record_feedback("tally", "crusher_voucher_redeemed", 1, selection)
qdel(voucher)
/obj/machinery/mineral/equipment_vendor/ex_act(severity, target)
/obj/machinery/mineral/equipment_vendor/ex_act(severity, target, origin)
do_sparks(5, TRUE, src)
if(prob(50 / severity) && severity < 3)
qdel(src)
+3 -3
View File
@@ -152,7 +152,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
C.forcesay("*scream")
qdel(src)
/obj/item/stack/ore/glass/ex_act(severity, target)
/obj/item/stack/ore/glass/ex_act(severity, target, origin)
if (severity == EXPLODE_NONE)
return
qdel(src)
@@ -314,7 +314,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
GibtoniteReaction(P.firer)
. = ..()
/obj/item/gibtonite/ex_act()
/obj/item/gibtonite/ex_act(severity, target, origin)
GibtoniteReaction(null, 1)
/obj/item/gibtonite/proc/GibtoniteReaction(mob/user, triggered_by = 0)
@@ -356,7 +356,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
pixel_x = initial(pixel_x) + rand(0, 16) - 8
pixel_y = initial(pixel_y) + rand(0, 8) - 8
/obj/item/stack/ore/ex_act(severity, target)
/obj/item/stack/ore/ex_act(severity, target, origin)
if (!severity || severity >= 2)
return
qdel(src)
+1 -1
View File
@@ -11,7 +11,7 @@
/obj/effect/dummy/phased_mob/slaughter/relaymove(mob/user, direction)
forceMove(get_step(src,direction))
/obj/effect/dummy/phased_mob/slaughter/ex_act()
/obj/effect/dummy/phased_mob/slaughter/ex_act(severity, target, origin)
return
/obj/effect/dummy/phased_mob/slaughter/wave_ex_act(power, datum/wave_explosion/explosion, dir)
+1 -1
View File
@@ -43,7 +43,7 @@
/mob/living/brain/update_mobility()
return ((mobility_flags = (container?.in_contents_of(/obj/mecha)? MOBILITY_FLAGS_DEFAULT : NONE)))
/mob/living/brain/ex_act() //you cant blow up brainmobs because it makes transfer_to() freak out when borgs blow up.
/mob/living/brain/ex_act(severity, target, origin) //you cant blow up brainmobs because it makes transfer_to() freak out when borgs blow up.
return
/mob/living/brain/wave_ex_act(power, datum/wave_explosion/explosion, dir)
@@ -319,7 +319,10 @@
var/atom/A = I
if(!QDELETED(A))
A.ex_act(severity)
gib()
if(istype(origin, /datum/explosion))
gib(was_explosion = origin)
else
gib()
return
else
brute_loss = 500
@@ -28,7 +28,7 @@
if(2)
SSshuttle.requestEvac(src,"ALERT: Energy surge detected in AI core! Station integrity may be compromised! Initiati--%m091#ar-BZZT")
/mob/living/silicon/ai/ex_act(severity, target)
/mob/living/silicon/ai/ex_act(severity, target, origin)
switch(severity)
if(1)
gib()
@@ -13,7 +13,7 @@
emitter_next_use = world.time + emitter_emp_cd
//Need more effects that aren't instadeath or permanent law corruption.
/mob/living/silicon/pai/ex_act(severity, target)
/mob/living/silicon/pai/ex_act(severity, target, origin)
take_holo_damage(severity * 50)
switch(severity)
if(1) //RIP
@@ -184,7 +184,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real
gib()
return TRUE
/mob/living/silicon/robot/ex_act(severity, target)
/mob/living/silicon/robot/ex_act(severity, target, origin)
switch(severity)
if(1)
gib()
+1 -1
View File
@@ -78,7 +78,7 @@
GLOB.silicon_mobs -= src
return ..()
/mob/living/silicon/contents_explosion(severity, target)
/mob/living/silicon/contents_explosion(severity, target, origin)
return
/mob/living/silicon/proc/cancelAlarm()
@@ -138,7 +138,7 @@
add_overlay(load)
return
/mob/living/simple_animal/bot/mulebot/ex_act(severity)
/mob/living/simple_animal/bot/mulebot/ex_act(severity, target, origin)
unload(0)
switch(severity)
if(1)
@@ -60,5 +60,5 @@
else
visible_message("<span class='notice'>[src] avoids getting crushed.</span>")
/mob/living/simple_animal/cockroach/ex_act() //Explosions are a terrible way to handle a cockroach.
/mob/living/simple_animal/cockroach/ex_act(severity, target, origin) //Explosions are a terrible way to handle a cockroach.
return
@@ -273,10 +273,13 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
summoner.adjustCloneLoss(amount * 0.5) //dying hosts take 50% bonus damage as cloneloss
update_health_hud()
/mob/living/simple_animal/hostile/guardian/ex_act(severity, target)
/mob/living/simple_animal/hostile/guardian/ex_act(severity, target, origin)
switch(severity)
if(1)
gib()
if(istype(origin, /datum/explosion))
gib(was_explosion = origin)
else
gib()
return
if(2)
adjustBruteLoss(60)
@@ -286,10 +289,10 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
/mob/living/simple_animal/hostile/guardian/wave_ex_act(power, datum/wave_explosion/explosion, dir)
adjustBruteLoss(EXPLOSION_POWER_STANDARD_SCALE_MOB_DAMAGE(power, explosion.mob_damage_mod * 0.33))
/mob/living/simple_animal/hostile/guardian/gib()
/mob/living/simple_animal/hostile/guardian/gib(no_brain, no_organs, no_bodyparts, datum/explosion/was_explosion)
if(summoner)
to_chat(summoner, "<span class='danger'><B>Your [src] was blown up!</span></B>")
summoner.gib()
summoner.gib(was_explosion = was_explosion)
ghostize()
qdel(src)
@@ -11,7 +11,7 @@
toggle_button_type = /atom/movable/screen/guardian/ToggleMode
var/toggle = FALSE
/mob/living/simple_animal/hostile/guardian/protector/ex_act(severity)
/mob/living/simple_animal/hostile/guardian/protector/ex_act(severity, target, origin)
if(severity == 1)
adjustBruteLoss(400) //if in protector mode, will do 20 damage and not actually necessarily kill the summoner
else
@@ -87,7 +87,7 @@
else
visible_message("<span class='notice'>[src] avoids getting crushed.</span>")
/mob/living/simple_animal/banana_spider/ex_act()
/mob/living/simple_animal/banana_spider/ex_act(severity, target, origin)
return
/mob/living/simple_animal/banana_spider/start_pulling()
@@ -62,7 +62,7 @@
user.transfer_ckey(src, FALSE)
density = TRUE
/mob/living/simple_animal/hostile/bread/ex_act()
/mob/living/simple_animal/hostile/bread/ex_act(severity, target, origin)
return
/mob/living/simple_animal/hostile/bread/start_pulling()
@@ -132,7 +132,7 @@ Difficulty: Medium
return FALSE
return ..()
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/ex_act(severity, target)
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/ex_act(severity, target, origin)
if(dash())
return
return ..()
@@ -154,7 +154,7 @@ Difficulty: Hard
return 0
return ..()
/mob/living/simple_animal/hostile/megafauna/bubblegum/ex_act(severity, target)
/mob/living/simple_animal/hostile/megafauna/bubblegum/ex_act(severity, target, origin)
if(severity >= EXPLODE_LIGHT)
return
severity = EXPLODE_LIGHT // puny mortals
@@ -421,7 +421,7 @@ Difficulty: Very Hard
if(ismob(AM))
ActivationReaction(AM, ACTIVATE_MOB_BUMP)
/obj/machinery/anomalous_crystal/ex_act()
/obj/machinery/anomalous_crystal/ex_act(severity, target, origin)
ActivationReaction(null, ACTIVATE_BOMB)
/obj/machinery/anomalous_crystal/honk //Strips and equips you as a clown. I apologize for nothing
@@ -740,7 +740,7 @@ Difficulty: Very Hard
/obj/structure/closet/stasis/emp_act()
return
/obj/structure/closet/stasis/ex_act()
/obj/structure/closet/stasis/ex_act(severity, target, origin)
return
/obj/structure/closet/stasis/handle_lock_addition()
@@ -147,7 +147,7 @@ Difficulty: Extremely Hard
if(isturf(target) || isobj(target))
target.ex_act(EXPLODE_HEAVY)
/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner/ex_act(severity, target)
/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner/ex_act(severity, target, origin)
adjustBruteLoss(30 * severity - 120)
visible_message("<span class='danger'>[src] absorbs the explosion!</span>", "<span class='userdanger'>You absorb the explosion!</span>")
@@ -79,7 +79,7 @@ Difficulty: Medium
. = ..()
internal = new/obj/item/gps/internal/dragon(src)
/mob/living/simple_animal/hostile/megafauna/dragon/ex_act(severity, target)
/mob/living/simple_animal/hostile/megafauna/dragon/ex_act(severity, target, origin)
if(severity == 3)
return
..()
@@ -387,7 +387,7 @@ Difficulty: Medium
light_range = 2
duration = 13
/obj/effect/temp_visual/lava_warning/ex_act()
/obj/effect/temp_visual/lava_warning/ex_act(severity, target, origin)
return
/obj/effect/temp_visual/lava_warning/Initialize(mapload, var/reset_time = 10)
@@ -674,7 +674,7 @@ Difficulty: Normal
layer = LOW_OBJ_LAYER
anchored = TRUE
/obj/effect/hierophant/ex_act()
/obj/effect/hierophant/ex_act(severity, target, origin)
return
/obj/effect/hierophant/attackby(obj/item/I, mob/user, params)
@@ -138,7 +138,7 @@
adjustBruteLoss(-L.maxHealth/2)
L.gib()
/mob/living/simple_animal/hostile/megafauna/ex_act(severity, target)
/mob/living/simple_animal/hostile/megafauna/ex_act(severity, target, origin)
switch (severity)
if (EXPLODE_DEVASTATE)
adjustBruteLoss(250)
@@ -50,7 +50,7 @@
if(isliving(target) && !target.Adjacent(targets_from) && ranged_cooldown <= world.time)//No more being shot at point blank or spammed with RNG beams
OpenFire(target)
/mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity, target)
/mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity, target, origin)
switch(severity)
if(1)
gib()
@@ -307,7 +307,7 @@
if((bodytemperature < minbodytemp) || (bodytemperature > maxbodytemp))
adjustHealth(unsuitable_atmos_damage)
/mob/living/simple_animal/gib()
/mob/living/simple_animal/gib(no_brain, no_organs, no_bodyparts, datum/explosion/was_explosion)
if(butcher_results)
var/atom/Tsec = drop_location()
for(var/path in butcher_results)
@@ -124,9 +124,9 @@
// Stronger explosions cause serious damage to internal components
// Minor explosions are mostly mitigitated by casing.
/obj/machinery/modular_computer/ex_act(severity)
/obj/machinery/modular_computer/ex_act(severity, target, origin)
if(cpu)
cpu.ex_act(severity)
cpu.ex_act(severity, target, origin)
// switch(severity)
// if(EXPLODE_DEVASTATE)
// SSexplosions.high_mov_atom += cpu

Some files were not shown because too many files have changed in this diff Show More