Improper forced qdel cleanup, some expanded del all verbs (#66595)

* Removes all supurfolus uses of QDEL_HINT_LETMELIVE

This define exists to allow abstract, sturucturally important things to
opt out of being qdeleted.
It does not exist to be a "Immune to everything" get out of jail free
card.
We have systems for this, and it's not appropriate here.

This change is inherently breaking, because things might be improperly
qdeling these things. Those issues will need to be resolved in future,
as they pop up

* Changes all needless uses of COMSIG_PARENT_PREQDELETED

It exists for things that want to block the qdel. If that's not you,
don't use it

* Adds force and hard del verbs, for chip and break glass cases
respectively

The harddel verb comes with two options before it's run, to let you
tailor it to your level of fucked

* Damn you nova

Adds proper parent returns instead of . = ..()

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>

* Ensures immortality talismans cannot delete their human if something goes fuckey. Thanks ath/oro for pointing this out

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
This commit is contained in:
LemonInTheDark
2022-05-06 17:52:45 -07:00
committed by GitHub
parent d61fa9df81
commit 0504c0a2b4
20 changed files with 153 additions and 98 deletions
@@ -53,11 +53,8 @@
AddElement(/datum/element/connect_loc, loc_connections)
/obj/structure/necropolis_gate/Destroy(force)
if(force)
qdel(sight_blocker, TRUE)
. = ..()
else
return QDEL_HINT_LETMELIVE
qdel(sight_blocker)
return ..()
/obj/structure/necropolis_gate/singularity_pull()
return 0
@@ -92,13 +89,7 @@
anchored = TRUE
/obj/structure/opacity_blocker/singularity_pull()
return 0
/obj/structure/opacity_blocker/Destroy(force)
if(force)
. = ..()
else
return QDEL_HINT_LETMELIVE
return FALSE
//ATTACK HAND IGNORING PARENT RETURN VALUE
/obj/structure/necropolis_gate/attack_hand(mob/user, list/modifiers)
@@ -162,12 +153,9 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate)
GLOB.necropolis_gate = src
/obj/structure/necropolis_gate/legion_gate/Destroy(force)
if(force)
if(GLOB.necropolis_gate == src)
GLOB.necropolis_gate = null
. = ..()
else
return QDEL_HINT_LETMELIVE
if(GLOB.necropolis_gate == src)
GLOB.necropolis_gate = null
return ..()
//ATTACK HAND IGNORING PARENT RETURN VALUE
/obj/structure/necropolis_gate/legion_gate/attack_hand(mob/user, list/modifiers)
@@ -241,12 +229,6 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate)
/obj/structure/necropolis_arch/singularity_pull()
return 0
/obj/structure/necropolis_arch/Destroy(force)
if(force)
. = ..()
else
return QDEL_HINT_LETMELIVE
#define STABLE 0 //The tile is stable and won't collapse/sink when crossed.
#define COLLAPSE_ON_CROSS 1 //The tile is unstable and will temporary become unusable when crossed.
#define DESTROY_ON_CROSS 2 //The tile is nearly broken and will permanently become unusable when crossed.
@@ -273,12 +255,6 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate)
)
AddElement(/datum/element/connect_loc, loc_connections)
/obj/structure/stone_tile/Destroy(force)
if(force || fallen)
. = ..()
else
return QDEL_HINT_LETMELIVE
/obj/structure/stone_tile/singularity_pull()
return