From 0e8619a2028af421b382b14ed16afd9d4f4232ab Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Wed, 8 Jul 2015 03:39:52 -0400 Subject: [PATCH] Destroy Pass III --- code/game/atoms.dm | 7 ------- code/game/atoms_movable.dm | 10 +++++++++- code/game/objects/effects/effect_system.dm | 3 +-- code/game/objects/items.dm | 14 +++----------- code/modules/events/tgevents/vent_clog.dm | 2 +- code/modules/projectiles/guns/projectile.dm | 2 +- code/modules/reagents/Chemistry-Holder.dm | 19 +++++++------------ code/modules/reagents/Chemistry-Reagents.dm | 5 +---- code/modules/reagents/reagent_containers.dm | 4 ---- 9 files changed, 23 insertions(+), 43 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 67e148b32b3..1be033e2a4b 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -31,13 +31,6 @@ /atom/Destroy() set_opacity(0) - - - if(reagents) - qdel(reagents) - reagents = null - - // Idea by ChuckTheSheep to make the object even more unreferencable. invisibility = 101 return ..() diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index cceb4db37c3..86f9fd93271 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -23,8 +23,16 @@ /atom/movable/Destroy() - ..() + if(reagents) + qdel(reagents) + for(var/atom/movable/AM in contents) + qdel(AM) loc = null + if (pulledby) + if (pulledby.pulling == src) + pulledby.pulling = null + pulledby = null + ..() return QDEL_HINT_QUEUE // Used in shuttle movement and AI eye stuff. diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 3e4abc7c5b7..47cffd8561b 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -42,8 +42,7 @@ would spawn and follow the beaker, even if it is carried or thrown. /obj/effect/proc/delete() loc = null if(reagents) - reagents.my_atom = null - reagents.delete() + qdel(reagents) return diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index e1b8e41baf8..c8056e3d9d5 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -52,17 +52,9 @@ var/list/species_fit = null //This object has a different appearance when worn by these species /obj/item/Destroy() - if(istype(src.loc, /mob)) - var/mob/H = src.loc - H.unEquip(src) // items at the very least get unequipped from their mob before being deleted - if(reagents && istype(reagents)) - reagents.my_atom = null - reagents.delete() - if(hasvar(src, "holder")) - src:holder = null - /* BROKEN, FUCK BYOND - if(hasvar(src, "my_atom")) - src:my_atom = null*/ + if(ismob(loc)) + var/mob/m = loc + m.unEquip(src, 1) return ..() /obj/item/device diff --git a/code/modules/events/tgevents/vent_clog.dm b/code/modules/events/tgevents/vent_clog.dm index 4fac3d0f9fa..092bc544484 100755 --- a/code/modules/events/tgevents/vent_clog.dm +++ b/code/modules/events/tgevents/vent_clog.dm @@ -33,4 +33,4 @@ smoke.set_up(R, rand(1, 2), 0, vent, 0, silent = 1) playsound(vent.loc, 'sound/effects/smoke.ogg', 50, 1, -3) smoke.start(3) - R.delete() //GC the reagents + qdel(R) diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index 94d4869c5ec..81e47aaceed 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -41,7 +41,7 @@ if(AC.reagents && AC.BB.reagents) var/datum/reagents/casting_reagents = AC.reagents casting_reagents.trans_to(AC.BB, casting_reagents.total_volume) //For chemical darts/bullets - casting_reagents.delete() + qdel(casting_reagents) in_chamber = AC.BB //Load projectile into chamber. AC.BB.loc = src //Set projectile loc to gun. AC.update_icon() diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 2acbe837400..680669079b2 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -601,12 +601,6 @@ datum //world << "reagent data set ([reagent_id])" D.data = new_data - delete() - for(var/datum/reagent/R in reagent_list) - R.holder = null - if(my_atom) - my_atom.reagents = null - copy_data(var/datum/reagent/current_reagent) if (!current_reagent || !current_reagent.data) return null if (!istype(current_reagent.data, /list)) return current_reagent.data @@ -636,10 +630,11 @@ atom/proc/create_reagents(var/max_vol) reagents.my_atom = src /datum/reagents/Destroy() - for(var/datum/reagent/reagent in reagent_list) - qdel(reagent) - - if(my_atom) - my_atom = null - + processing_objects.Remove(src) + for(var/datum/reagent/R in reagent_list) + qdel(R) + reagent_list.Cut() + reagent_list = null + if(my_atom && my_atom.reagents == src) + my_atom.reagents = null return ..() \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 9ce3ac077ba..c3191029e4a 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -3235,8 +3235,5 @@ datum /datum/reagent/Destroy() - if(holder) - holder.reagent_list -= src - holder = null - + holder = null return ..() diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 017216887f4..aeda3fcbec3 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -27,10 +27,6 @@ R.my_atom = src processing_objects.Add(src) -/obj/item/weapon/reagent_containers/Destroy() - processing_objects.Remove(src) - return ..() - /obj/item/weapon/reagent_containers/process() if(reagents) reagents.reagent_on_tick()