From a290281d145a30342318535a0d02ebbafd87b45e Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Wed, 8 Apr 2026 11:52:13 -0400 Subject: [PATCH] Fix Improper Destroys (#22166) We think the culprit behind this one was VSCode autofilling Destroy() with . = ..() which is improper. There's a **surprising** number of improper order Destroy() procs in the repo, so I might as well get all of them in one pass. Several of these files are associated with currently known hard dels, such as the modular computer and organ related dels. More than a couple were my own mistakes, since the Destroy() or Removed() . = ..() behavior on signal registering objects also prevents the signal from being unregistered, which similarly creates a hard del. Signed-off-by: VMSolidus --- code/__HELPERS/paths/jps.dm | 2 +- code/__HELPERS/paths/path.dm | 2 +- code/_onclick/hud/alert.dm | 2 +- code/datums/components/psionics/psi_sensitivity.dm | 4 ++-- code/datums/components/psionics/psi_suppression.dm | 4 ++-- code/game/machinery/stasis_bed.dm | 2 +- code/game/objects/items/defib.dm | 4 ++-- code/game/objects/items/devices/geiger.dm | 2 +- code/game/objects/items/devices/t_scanner.dm | 2 +- code/game/objects/items/stacks/rods.dm | 2 +- code/game/objects/items/weapons/chewables.dm | 2 +- code/game/objects/items/weapons/cloaking_device.dm | 2 +- .../objects/items/weapons/implants/implants/mindshield.dm | 4 ++-- code/game/objects/items/weapons/syndie.dm | 2 +- code/modules/client/preferences.dm | 2 +- code/modules/clothing/shoes/magboots.dm | 2 +- code/modules/custom_ka/core.dm | 2 +- code/modules/materials/material_sheets.dm | 2 +- code/modules/mob/living/silicon/ai/ai.dm | 2 +- code/modules/mob/living/silicon/robot/drone/drone.dm | 2 +- code/modules/mob/living/simple_animal/hostile/changeling.dm | 2 +- .../mob/living/simple_animal/hostile/giant_spider.dm | 2 +- .../mob/living/simple_animal/hostile/hivebots/hivebot.dm | 6 +++--- code/modules/modular_computers/NTNet/NTNRC/user.dm | 2 +- .../modular_computers/computers/subtypes/dev_handheld.dm | 2 +- .../modular_computers/computers/subtypes/preset_laptop.dm | 2 +- .../computers/subtypes/preset_telescreen.dm | 2 +- .../organs/subtypes/augment/augments/auxiliary_heart.dm | 4 ++-- .../organs/subtypes/augment/augments/gravity_adaptations.dm | 4 ++-- .../organs/subtypes/augment/augments/mind_blanker.dm | 4 ++-- .../organs/subtypes/augment/augments/platelet_factories.dm | 4 ++-- .../organs/subtypes/augment/augments/psi_receiver.dm | 4 ++-- .../organs/subtypes/augment/augments/subdermal_carapace.dm | 4 ++-- code/modules/power/sensors/powernet_sensor.dm | 2 +- code/modules/synthesized_instruments/event_manager.dm | 2 +- code/modules/synthesized_instruments/sound_token.dm | 2 +- html/changelogs/hellfirejag-improper-destroy-hard-dels.yml | 4 ++++ 37 files changed, 52 insertions(+), 48 deletions(-) create mode 100644 html/changelogs/hellfirejag-improper-destroy-hard-dels.yml diff --git a/code/__HELPERS/paths/jps.dm b/code/__HELPERS/paths/jps.dm index b03b0129525..0880645fc5d 100644 --- a/code/__HELPERS/paths/jps.dm +++ b/code/__HELPERS/paths/jps.dm @@ -87,10 +87,10 @@ found_turfs = list() /datum/pathfind/jps/Destroy(force) - . = ..() requester = null end = null open = null + return ..() /datum/pathfind/jps/start() start = start || get_turf(requester) diff --git a/code/__HELPERS/paths/path.dm b/code/__HELPERS/paths/path.dm index c8b8e1d5eea..ab73ae9e76d 100644 --- a/code/__HELPERS/paths/path.dm +++ b/code/__HELPERS/paths/path.dm @@ -98,11 +98,11 @@ var/datum/can_pass_info/pass_info /datum/pathfind/Destroy(force) - . = ..() SSpathfinder.active_pathing -= src SSpathfinder.currentrun -= src hand_back(null) avoid = null + return ..() /** * "starts" off the pathfinding, by storing the values this datum will need to work later on diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 6546a7dd43d..c2391b807da 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -258,8 +258,8 @@ return TRUE /atom/movable/screen/alert/Destroy() - . = ..() severity = 0 master = null owner = null screen_loc = "" + return ..() diff --git a/code/datums/components/psionics/psi_sensitivity.dm b/code/datums/components/psionics/psi_sensitivity.dm index 7d7c2cc0c68..78d50d9cd12 100644 --- a/code/datums/components/psionics/psi_sensitivity.dm +++ b/code/datums/components/psionics/psi_sensitivity.dm @@ -28,15 +28,15 @@ RegisterSignal(parent, COMSIG_PSI_CHECK_SENSITIVITY, PROC_REF(modify_sensitivity), override = TRUE) /datum/component/psi_sensitivity/Destroy() - . = ..() if (!parent) - return + return ..() // This is the second half of the fundamental pattern for Entity-Component-Systems (ECS) // When this component is taken away from a datum via RemoveComponent(), such as from a player character // The component tells the character it no longer wishes to do anything when a specific signal happens. // We MUST do this for garbage collection reasons, else we'll get hard deletes. UnregisterSignal(parent, COMSIG_PSI_CHECK_SENSITIVITY) + return ..() /datum/component/psi_sensitivity/proc/modify_sensitivity(var/parent, var/effective_sensitivity) SIGNAL_HANDLER diff --git a/code/datums/components/psionics/psi_suppression.dm b/code/datums/components/psionics/psi_suppression.dm index 75150bd96c2..d79f5fba9c3 100644 --- a/code/datums/components/psionics/psi_suppression.dm +++ b/code/datums/components/psionics/psi_suppression.dm @@ -20,12 +20,12 @@ RegisterSignal(parent, COMSIG_PSI_MIND_POWER, PROC_REF(cancel_power), override = TRUE) /datum/component/psi_suppression/Destroy() - . = ..() if (!parent) - return + return ..() UnregisterSignal(parent, COMSIG_PSI_CHECK_SENSITIVITY) UnregisterSignal(parent, COMSIG_PSI_MIND_POWER) + return ..() /datum/component/psi_suppression/proc/modify_sensitivity(var/parent, var/effective_sensitivity) SIGNAL_HANDLER diff --git a/code/game/machinery/stasis_bed.dm b/code/game/machinery/stasis_bed.dm index ef5b6a0f5c4..801e53d133c 100644 --- a/code/game/machinery/stasis_bed.dm +++ b/code/game/machinery/stasis_bed.dm @@ -56,8 +56,8 @@ update_icon() /obj/machinery/stasis_bed/Destroy() - . = ..() QDEL_NULL(mattress_on) + return ..() /obj/machinery/stasis_bed/attackby(obj/item/attacking_item, mob/user) if(default_part_replacement(user, attacking_item)) diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 50a9ffa59a0..e93775221c7 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -42,9 +42,9 @@ toggle_paddles() /obj/item/defibrillator/Destroy() - . = ..() QDEL_NULL(paddles) QDEL_NULL(bcell) + return ..() /obj/item/defibrillator/loaded //starts with regular power cell for R&D to replace later in the round. bcell = /obj/item/cell @@ -651,9 +651,9 @@ var/fail_counter = 0 /obj/item/shockpaddles/standalone/Destroy() - . = ..() if(fail_counter) STOP_PROCESSING(SSprocessing, src) + return ..() /obj/item/shockpaddles/standalone/check_charge(charge_amt) return TRUE diff --git a/code/game/objects/items/devices/geiger.dm b/code/game/objects/items/devices/geiger.dm index 8f6ddd58d81..c4087591601 100644 --- a/code/game/objects/items/devices/geiger.dm +++ b/code/game/objects/items/devices/geiger.dm @@ -34,9 +34,9 @@ QDEL_NULL(sound_token) /obj/item/geiger/Destroy() - . = ..() STOP_PROCESSING(SSprocessing, src) update_sound(0) + return ..() /obj/item/geiger/process() if(!scanning) diff --git a/code/game/objects/items/devices/t_scanner.dm b/code/game/objects/items/devices/t_scanner.dm index 5262b24c433..6fbf0d806c5 100644 --- a/code/game/objects/items/devices/t_scanner.dm +++ b/code/game/objects/items/devices/t_scanner.dm @@ -24,9 +24,9 @@ var/global/list/overlay_cache = list() /obj/item/t_scanner/Destroy() - . = ..() if(on) set_active(FALSE) + return ..() /obj/item/t_scanner/update_icon() icon_state = "t-ray[on]" diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index af840e5f426..1360eb639aa 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -49,7 +49,7 @@ GLOBAL_LIST_INIT_TYPED(rod_recipes, /datum/stack_recipe, list( . += "Using a welder on two metal rods will recombine them back into a steel sheet." /obj/item/stack/rods/Destroy() - . = ..() + return ..() /obj/item/stack/rods/full/Initialize() . = ..() diff --git a/code/game/objects/items/weapons/chewables.dm b/code/game/objects/items/weapons/chewables.dm index 2be7cb011e9..b3f0441e56c 100644 --- a/code/game/objects/items/weapons/chewables.dm +++ b/code/game/objects/items/weapons/chewables.dm @@ -51,8 +51,8 @@ ..() /obj/item/clothing/mask/chewable/Destroy() - . = ..() STOP_PROCESSING(SSprocessing, src) + return ..() /obj/item/clothing/mask/chewable/proc/chew() chewtime-- diff --git a/code/game/objects/items/weapons/cloaking_device.dm b/code/game/objects/items/weapons/cloaking_device.dm index add8aac6e7f..cc545e74e79 100644 --- a/code/game/objects/items/weapons/cloaking_device.dm +++ b/code/game/objects/items/weapons/cloaking_device.dm @@ -46,8 +46,8 @@ cell = new /obj/item/cell/high(src) /obj/item/cloaking_device/Destroy() - . = ..() GLOB.cloaking_devices -= src + return ..() /obj/item/cloaking_device/equipped(var/mob/user, var/slot) ..() diff --git a/code/game/objects/items/weapons/implants/implants/mindshield.dm b/code/game/objects/items/weapons/implants/implants/mindshield.dm index d6d71228082..8c3941e3ef9 100644 --- a/code/game/objects/items/weapons/implants/implants/mindshield.dm +++ b/code/game/objects/items/weapons/implants/implants/mindshield.dm @@ -42,12 +42,12 @@ return TRUE /obj/item/implant/mindshield/removed() - . = ..() if(!imp_in) - return + return ..() UnregisterSignal(imp_in, COMSIG_PSI_CHECK_SENSITIVITY) UnregisterSignal(imp_in, COMSIG_PSI_MIND_POWER) + return ..() /obj/item/implant/mindshield/proc/modify_sensitivity(var/implantee, var/effective_sensitivity) SIGNAL_HANDLER diff --git a/code/game/objects/items/weapons/syndie.dm b/code/game/objects/items/weapons/syndie.dm index f1958fe8c5b..bdb051085a8 100644 --- a/code/game/objects/items/weapons/syndie.dm +++ b/code/game/objects/items/weapons/syndie.dm @@ -41,8 +41,8 @@ detonator.bomb = src /obj/item/syndie/c4explosive/Destroy() - . = ..() QDEL_NULL(detonator) + return ..() /obj/item/syndie/c4explosive/proc/detonate() icon_state = "c-4[size]_1" diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 0da68585394..68f02e6c991 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -224,8 +224,8 @@ GLOBAL_LIST_EMPTY_TYPED(preferences_datums, /datum/preferences) load_and_update_character() /datum/preferences/Destroy() - . = ..() QDEL_LIST(char_render_holders) + return ..() /datum/preferences/proc/load_and_update_character(var/slot) load_character(slot) diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index 7c7cfb547b0..30f860269d7 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -27,9 +27,9 @@ . += "Its mag-pulse traction system appears to be [state]." /obj/item/clothing/shoes/magboots/Destroy() - . = ..() src.shoes = null src.wearer = null + return ..() /obj/item/clothing/shoes/magboots/proc/set_slowdown(mob/user) slowdown = shoes? max(0, shoes.slowdown): 0 //So you can't put on magboots to make you walk faster. diff --git a/code/modules/custom_ka/core.dm b/code/modules/custom_ka/core.dm index 83e4c261c3e..76c2d024ee8 100644 --- a/code/modules/custom_ka/core.dm +++ b/code/modules/custom_ka/core.dm @@ -277,8 +277,8 @@ queue_icon_update() /obj/item/gun/custom_ka/Destroy() - . = ..() STOP_PROCESSING(SSprocessing, src) + return ..() /obj/item/gun/custom_ka/process() if(installed_cell) diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm index 48a3ce8e72a..847730f016f 100644 --- a/code/modules/materials/material_sheets.dm +++ b/code/modules/materials/material_sheets.dm @@ -316,7 +316,7 @@ icon_has_variants = TRUE /obj/item/stack/material/plasteel/Destroy() - . = ..() + return ..() /obj/item/stack/material/plasteel/full/Initialize() . = ..() diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 965e92d8469..91752127dc1 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -363,8 +363,8 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( use_power_oneoff(1) // Just incase we need to wake up the power system. /obj/machinery/ai_powersupply/Destroy() - . = ..() powered_ai = null + return ..() /obj/machinery/ai_powersupply/process() if(!powered_ai || powered_ai.stat == DEAD) diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index b7f081307d8..ae8ce06fa74 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -264,8 +264,8 @@ request_player() /mob/living/silicon/robot/drone/construction/matriarch/Destroy() - . = ..() SSghostroles.remove_spawn_atom("matriarchmaintdrone", src) + return ..() /mob/living/silicon/robot/drone/construction/matriarch/request_player() SSghostroles.add_spawn_atom("matriarchmaintdrone", src) diff --git a/code/modules/mob/living/simple_animal/hostile/changeling.dm b/code/modules/mob/living/simple_animal/hostile/changeling.dm index adcd2b33365..25e489b1746 100644 --- a/code/modules/mob/living/simple_animal/hostile/changeling.dm +++ b/code/modules/mob/living/simple_animal/hostile/changeling.dm @@ -203,9 +203,9 @@ mind.assigned_role = "Changeling" /mob/living/simple_animal/hostile/lesser_changeling/Destroy() - . = ..() QDEL_NULL(occupant) QDEL_NULL(untransform_occupant) + return ..() /mob/living/simple_animal/hostile/lesser_changeling/proc/add_untransform_verb() if(!occupant) diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 67e18c6dd58..cb25b4672c2 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -179,8 +179,8 @@ SSghostroles.add_spawn_atom("servant", src) /mob/living/simple_animal/hostile/giant_spider/nurse/servant/Destroy() - . = ..() SSghostroles.remove_spawn_atom("servant", src) + return ..() /mob/living/simple_animal/hostile/giant_spider/on_attack_mob(var/mob/hit_mob, var/obj/item/organ/external/limb) . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm index 55aed40526d..a7d86507e4e 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm @@ -250,8 +250,8 @@ SSghostroles.add_spawn_atom("hivebotdestroyer", src) /mob/living/simple_animal/hostile/hivebot/playable/Destroy() - . = ..() SSghostroles.remove_spawn_atom("hivebotdestroyer", src) + return ..() /mob/living/simple_animal/hostile/hivebot/playable/ranged name = "Hivebot marksman" @@ -277,8 +277,8 @@ SSghostroles.add_spawn_atom("hivebotmarksman", src) /mob/living/simple_animal/hostile/hivebot/playable/ranged/Destroy() - . = ..() SSghostroles.remove_spawn_atom("hivebotmarksman", src) + return ..() /mob/living/simple_animal/hostile/hivebot/playable/overseer name = "Hivebot overseer" @@ -303,8 +303,8 @@ SSghostroles.add_spawn_atom("hivebotoverseer", src) /mob/living/simple_animal/hostile/hivebot/playable/overseer/Destroy() - . = ..() SSghostroles.remove_spawn_atom("hivebotoverseer", src) + return ..() /mob/living/simple_animal/hostile/hivebot/playable/overseer/verb/build_bot() set name = "Assemble hivebot" diff --git a/code/modules/modular_computers/NTNet/NTNRC/user.dm b/code/modules/modular_computers/NTNet/NTNRC/user.dm index 51ae518ebee..41016c072a1 100644 --- a/code/modules/modular_computers/NTNet/NTNRC/user.dm +++ b/code/modules/modular_computers/NTNet/NTNRC/user.dm @@ -9,7 +9,6 @@ GLOB.ntnet_global.chat_users.Add(src) /datum/ntnet_user/Destroy(force) - . = ..() //This notifies every client that might have this as a client to deactivate and clear the reference for(var/datum/computer_file/program/chat_client/client as anything in GLOB.ntnet_global.chat_clients) @@ -19,6 +18,7 @@ channels = null dm_channels = null clients = null + return ..() /datum/ntnet_user/proc/generateUsernameIdCard(var/obj/item/card/id/card) if(!card) diff --git a/code/modules/modular_computers/computers/subtypes/dev_handheld.dm b/code/modules/modular_computers/computers/subtypes/dev_handheld.dm index 5cc6b6dafbf..3834df5d4d2 100644 --- a/code/modules/modular_computers/computers/subtypes/dev_handheld.dm +++ b/code/modules/modular_computers/computers/subtypes/dev_handheld.dm @@ -23,7 +23,7 @@ set_icon() /obj/item/modular_computer/handheld/Destroy() - . = ..() + return ..() /obj/item/modular_computer/handheld/proc/set_icon() icon_state_unpowered = icon_state diff --git a/code/modules/modular_computers/computers/subtypes/preset_laptop.dm b/code/modules/modular_computers/computers/subtypes/preset_laptop.dm index 44992286d79..3e0bef3bb46 100644 --- a/code/modules/modular_computers/computers/subtypes/preset_laptop.dm +++ b/code/modules/modular_computers/computers/subtypes/preset_laptop.dm @@ -4,7 +4,7 @@ icon_state = "laptop-closed" /obj/item/modular_computer/laptop/preset/Destroy() - . = ..() + return ..() /obj/item/modular_computer/laptop/preset/install_default_hardware() ..() diff --git a/code/modules/modular_computers/computers/subtypes/preset_telescreen.dm b/code/modules/modular_computers/computers/subtypes/preset_telescreen.dm index 9366a204b6a..6f2977e3433 100644 --- a/code/modules/modular_computers/computers/subtypes/preset_telescreen.dm +++ b/code/modules/modular_computers/computers/subtypes/preset_telescreen.dm @@ -1,5 +1,5 @@ /obj/item/modular_computer/telescreen/preset/Destroy() - . = ..() + return ..() /obj/item/modular_computer/telescreen/preset/install_default_hardware() ..() diff --git a/code/modules/organs/subtypes/augment/augments/auxiliary_heart.dm b/code/modules/organs/subtypes/augment/augments/auxiliary_heart.dm index d8b751103ca..c4c76649bb8 100644 --- a/code/modules/organs/subtypes/augment/augments/auxiliary_heart.dm +++ b/code/modules/organs/subtypes/augment/augments/auxiliary_heart.dm @@ -22,11 +22,11 @@ RegisterSignal(owner, COMSIG_HEART_PUMP_EVENT, PROC_REF(stabilize_circulation), override = TRUE) /obj/item/organ/internal/augment/bioaug/auxiliary_heart/removed() - . = ..() if(!owner) - return + return ..() UnregisterSignal(owner, COMSIG_HEART_PUMP_EVENT) + return ..() /obj/item/organ/internal/augment/bioaug/auxiliary_heart/proc/stabilize_circulation(var/implantee, var/obj/item/organ/internal/heart/heart, var/blood_volume, var/recent_pump, var/pulse_mod, var/min_efficiency) SIGNAL_HANDLER diff --git a/code/modules/organs/subtypes/augment/augments/gravity_adaptations.dm b/code/modules/organs/subtypes/augment/augments/gravity_adaptations.dm index cda2fe0c017..f289121e2ac 100644 --- a/code/modules/organs/subtypes/augment/augments/gravity_adaptations.dm +++ b/code/modules/organs/subtypes/augment/augments/gravity_adaptations.dm @@ -21,11 +21,11 @@ RegisterSignal(owner, COMSIG_GRAVITY_WEAKNESS_EVENT, PROC_REF(negate_weakness), override = TRUE) /obj/item/organ/internal/augment/bioaug/gravity_adaptations/removed() - . = ..() if(!owner) - return + return ..() UnregisterSignal(owner, COMSIG_GRAVITY_WEAKNESS_EVENT) + return ..() /obj/item/organ/internal/augment/bioaug/gravity_adaptations/proc/negate_weakness(var/implantee, var/canceled) SIGNAL_HANDLER diff --git a/code/modules/organs/subtypes/augment/augments/mind_blanker.dm b/code/modules/organs/subtypes/augment/augments/mind_blanker.dm index 79d799cadf9..de0a2c4dd14 100644 --- a/code/modules/organs/subtypes/augment/augments/mind_blanker.dm +++ b/code/modules/organs/subtypes/augment/augments/mind_blanker.dm @@ -24,12 +24,12 @@ RegisterSignal(owner, COMSIG_PSI_CHECK_SENSITIVITY, PROC_REF(modify_sensitivity), override = TRUE) /obj/item/organ/internal/augment/bioaug/mind_blanker/removed() - . = ..() if(!owner) - return + return ..() UnregisterSignal(owner, COMSIG_PSI_MIND_POWER) UnregisterSignal(owner, COMSIG_PSI_CHECK_SENSITIVITY) + return ..() /obj/item/organ/internal/augment/bioaug/mind_blanker/proc/cancel_power(var/implantee, var/caster, var/cancelled, var/cancel_return, var/wide_field) SIGNAL_HANDLER diff --git a/code/modules/organs/subtypes/augment/augments/platelet_factories.dm b/code/modules/organs/subtypes/augment/augments/platelet_factories.dm index 9a0bcd63f2e..a95ca61d5d7 100644 --- a/code/modules/organs/subtypes/augment/augments/platelet_factories.dm +++ b/code/modules/organs/subtypes/augment/augments/platelet_factories.dm @@ -24,12 +24,12 @@ RegisterSignal(owner, COMSIG_HEART_BLEED_EVENT, PROC_REF(reduce_bloodloss), override = TRUE) /obj/item/organ/internal/augment/bioaug/platelet_factories/removed() - . = ..() if(!owner) - return + return ..() UnregisterSignal(owner, COMSIG_HEART_PUMP_EVENT) UnregisterSignal(owner, COMSIG_HEART_BLEED_EVENT) + return ..() /obj/item/organ/internal/augment/bioaug/platelet_factories/proc/stroke_risk(var/implantee, var/obj/item/organ/internal/heart/heart, var/blood_volume, var/recent_pump, var/pulse_mod, var/min_efficiency) SIGNAL_HANDLER diff --git a/code/modules/organs/subtypes/augment/augments/psi_receiver.dm b/code/modules/organs/subtypes/augment/augments/psi_receiver.dm index 0d1972e21fb..df07923b502 100644 --- a/code/modules/organs/subtypes/augment/augments/psi_receiver.dm +++ b/code/modules/organs/subtypes/augment/augments/psi_receiver.dm @@ -34,11 +34,11 @@ RegisterSignal(owner, COMSIG_PSI_CHECK_SENSITIVITY, PROC_REF(modify_sensitivity), override = TRUE) /obj/item/organ/internal/augment/bioaug/psi/removed() - . = ..() if(!owner) - return + return ..() UnregisterSignal(owner, COMSIG_PSI_CHECK_SENSITIVITY) + return ..() /obj/item/organ/internal/augment/bioaug/psi/proc/modify_sensitivity(var/implantee, var/effective_sensitivity) SIGNAL_HANDLER diff --git a/code/modules/organs/subtypes/augment/augments/subdermal_carapace.dm b/code/modules/organs/subtypes/augment/augments/subdermal_carapace.dm index cdf2f235f44..fd9bdd7e462 100644 --- a/code/modules/organs/subtypes/augment/augments/subdermal_carapace.dm +++ b/code/modules/organs/subtypes/augment/augments/subdermal_carapace.dm @@ -22,9 +22,9 @@ owner.AddComponent(/datum/component/armor, list(MELEE = ARMOR_MELEE_SMALL, BULLET = ARMOR_BALLISTIC_MINOR)) /obj/item/organ/internal/augment/bioaug/subdermal_carapace/removed() - . = ..() if(!owner) - return + return ..() var/datum/component/armor/armor_component = owner.GetComponent(/datum/component/armor) qdel(armor_component) + return ..() diff --git a/code/modules/power/sensors/powernet_sensor.dm b/code/modules/power/sensors/powernet_sensor.dm index 916d4716f52..e6929830430 100644 --- a/code/modules/power/sensors/powernet_sensor.dm +++ b/code/modules/power/sensors/powernet_sensor.dm @@ -28,8 +28,8 @@ SSmachinery.all_sensors += src /obj/machinery/power/sensor/Destroy() - . = ..() SSmachinery.all_sensors -= src + return ..() // Proc: auto_set_name() // Parameters: None diff --git a/code/modules/synthesized_instruments/event_manager.dm b/code/modules/synthesized_instruments/event_manager.dm index 09fcf44a229..3cb9ba54fc0 100644 --- a/code/modules/synthesized_instruments/event_manager.dm +++ b/code/modules/synthesized_instruments/event_manager.dm @@ -44,9 +44,9 @@ var/kill_loop = 0 /datum/musical_event_manager/Destroy(force) - . = ..() deactivate() QDEL_LIST(events) + return ..() /datum/musical_event_manager/proc/push_event(datum/sound_player/source, datum/sound_token/token, time, volume) if (istype(source) && istype(token) && volume >= 0 && volume <= 100) diff --git a/code/modules/synthesized_instruments/sound_token.dm b/code/modules/synthesized_instruments/sound_token.dm index 223c4cfe2a3..54c0149356d 100644 --- a/code/modules/synthesized_instruments/sound_token.dm +++ b/code/modules/synthesized_instruments/sound_token.dm @@ -51,6 +51,6 @@ . = ..() /datum/sound_token/instrument/Destroy() - . = ..() player.unsubscribe(src) player = null + return ..() diff --git a/html/changelogs/hellfirejag-improper-destroy-hard-dels.yml b/html/changelogs/hellfirejag-improper-destroy-hard-dels.yml new file mode 100644 index 00000000000..e9b6026d626 --- /dev/null +++ b/html/changelogs/hellfirejag-improper-destroy-hard-dels.yml @@ -0,0 +1,4 @@ +author: Hellfirejag +delete-after: True +changes: + - bugfix: "Fixed some hard dels related to Destroy() procs triggering in the wrong order of operations."