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
+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)