diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm
index 7491a88c9a8..b4286afa676 100644
--- a/code/game/machinery/bots/bots.dm
+++ b/code/game/machinery/bots/bots.dm
@@ -109,7 +109,9 @@
/obj/machinery/bot/Destroy()
aibots -= src
qdel(Radio)
+ Radio = null
qdel(botcard)
+ botcard = null
return ..()
/obj/machinery/bot/proc/add_to_beacons(bot_filter) //Master filter control for bots. Must be placed in the bot's local New() to support map spawned bots.
diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm
index d9e640258a6..8df634c0b50 100644
--- a/code/game/machinery/bots/mulebot.dm
+++ b/code/game/machinery/bots/mulebot.dm
@@ -82,6 +82,9 @@ var/global/mulebot_count = 0
unload(0)
qdel(wires)
wires = null
+ if(cell)
+ qdel(cell)
+ cell = null
return ..()
// attack by item
diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm
index 19a5d8e59ee..9f1238c56d2 100644
--- a/code/game/machinery/computer/station_alert.dm
+++ b/code/game/machinery/computer/station_alert.dm
@@ -25,6 +25,7 @@
/obj/machinery/computer/station_alert/Destroy()
alarm_monitor.unregister(src)
qdel(alarm_monitor)
+ alarm_monitor = null
return ..()
/obj/machinery/computer/station_alert/attack_ai(mob/user)
diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm
index 8588baa80df..f50bc1327dd 100644
--- a/code/game/mecha/mech_bay.dm
+++ b/code/game/mecha/mech_bay.dm
@@ -116,6 +116,8 @@
recharge_console.voltage = MC * 10
/obj/machinery/mech_bay_recharge_port/Destroy()
+ qdel(pr_recharger)
+ pr_recharger = null
recharge_console.recharge_port = null
recharge_floor.recharge_port = null
return ..()
diff --git a/code/game/objects/items/devices/sensor_device.dm b/code/game/objects/items/devices/sensor_device.dm
index 730f81f0bdb..6172a603ce5 100644
--- a/code/game/objects/items/devices/sensor_device.dm
+++ b/code/game/objects/items/devices/sensor_device.dm
@@ -1,5 +1,5 @@
/obj/item/device/sensor_device
- name = "handheld crew monitor"
+ name = "handheld crew monitor"
desc = "A miniature machine that tracks suit sensors across the station."
icon = 'icons/obj/device.dmi'
icon_state = "scanner"
@@ -7,10 +7,15 @@
slot_flags = SLOT_BELT
origin_tech = "biotech=3;materials=3;magnets=3"
var/datum/nano_module/crew_monitor/crew_monitor
-
+
/obj/item/device/sensor_device/New()
crew_monitor = new(src)
+/obj/item/device/sensor_device/Destroy()
+ qdel(crew_monitor)
+ crew_monitor = null
+ return ..()
+
/obj/item/device/sensor_device/attack_self(mob/user as mob)
ui_interact(user)
diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm
index 40ac8e93bdd..8524a6cbcf2 100644
--- a/code/game/objects/items/weapons/flamethrower.dm
+++ b/code/game/objects/items/weapons/flamethrower.dm
@@ -25,10 +25,13 @@
/obj/item/weapon/flamethrower/Destroy()
if(weldtool)
qdel(weldtool)
+ weldtool = null
if(igniter)
qdel(igniter)
+ igniter = null
if(ptank)
qdel(ptank)
+ ptank = null
return ..()
diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm
index 2b7e7b7f854..d8ef1d9591b 100644
--- a/code/game/objects/items/weapons/grenades/smokebomb.dm
+++ b/code/game/objects/items/weapons/grenades/smokebomb.dm
@@ -15,6 +15,7 @@
Destroy()
qdel(smoke)
+ smoke = null
return ..()
prime()
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index dc560095e3d..bc65d324d82 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -1,6 +1,5 @@
/obj
//var/datum/module/mod //not used
- var/w_amt = 0 // waster amounts
var/origin_tech = null //Used by R&D to determine what research bonuses it grants.
var/reliability = 100 //Used by SOME devices to determine how reliable they are.
var/crit_fail = 0
diff --git a/code/modules/assembly/igniter.dm b/code/modules/assembly/igniter.dm
index ceb621e2e18..29c13f4a6bc 100644
--- a/code/modules/assembly/igniter.dm
+++ b/code/modules/assembly/igniter.dm
@@ -3,34 +3,43 @@
desc = "A small electronic device able to ignite combustable substances."
icon_state = "igniter"
materials = list(MAT_METAL=500, MAT_GLASS=50)
- w_amt = 10
origin_tech = "magnets=1"
+ var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread
- describe()
- return "The igniter is [secured?"secured.":"unsecured."]"
+/obj/item/device/assembly/igniter/New()
+ ..()
+ sparks.set_up(2, 0, src)
+ sparks.attach(src)
+/obj/item/device/assembly/igniter/Destroy()
+ qdel(sparks)
+ sparks = null
+ return ..()
+
+
+/obj/item/device/assembly/igniter/describe()
+ return "The igniter is [secured?"secured.":"unsecured."]"
+
+
+/obj/item/device/assembly/igniter/activate()
+ if(!..()) return 0//Cooldown check
+ var/turf/location = get_turf(loc)
+ if(location) location.hotspot_expose(1000,1000)
+ if (istype(src.loc,/obj/item/device/assembly_holder))
+ if (istype(src.loc.loc, /obj/structure/reagent_dispensers/fueltank/))
+ var/obj/structure/reagent_dispensers/fueltank/tank = src.loc.loc
+ if (tank)
+ tank.explode()
+ if (istype(src.loc.loc, /obj/item/weapon/reagent_containers/glass/beaker/))
+ var/obj/item/weapon/reagent_containers/glass/beaker/beakerbomb = src.loc.loc
+ if(beakerbomb)
+ beakerbomb.heat_beaker()
+
+ sparks.start()
+ return 1
+
+
+/obj/item/device/assembly/igniter/attack_self(mob/user as mob)
activate()
- if(!..()) return 0//Cooldown check
- var/turf/location = get_turf(loc)
- if(location) location.hotspot_expose(1000,1000)
- if (istype(src.loc,/obj/item/device/assembly_holder))
- if (istype(src.loc.loc, /obj/structure/reagent_dispensers/fueltank/))
- var/obj/structure/reagent_dispensers/fueltank/tank = src.loc.loc
- if (tank)
- tank.explode()
- if (istype(src.loc.loc, /obj/item/weapon/reagent_containers/glass/beaker/))
- var/obj/item/weapon/reagent_containers/glass/beaker/beakerbomb = src.loc.loc
- if(beakerbomb)
- beakerbomb.heat_beaker()
-
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(3, 1, src)
- s.start()
-
- return 1
-
-
- attack_self(mob/user as mob)
- activate()
- add_fingerprint(user)
- return
\ No newline at end of file
+ add_fingerprint(user)
+ return
\ No newline at end of file
diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm
index 70a822cd8fb..d34dc9e4c76 100644
--- a/code/modules/assembly/shock_kit.dm
+++ b/code/modules/assembly/shock_kit.dm
@@ -11,7 +11,9 @@
/obj/item/assembly/shock_kit/Destroy()
qdel(part1)
+ part1 = null
qdel(part2)
+ part2 = null
return ..()
/obj/item/assembly/shock_kit/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm
index 86b4037b1b9..fe33be50f48 100644
--- a/code/modules/assembly/signaler.dm
+++ b/code/modules/assembly/signaler.dm
@@ -27,6 +27,12 @@
spawn(1) // For things that set the frequency directly
set_frequency(frequency)
return
+
+ Destroy()
+ if(radio_controller)
+ radio_controller.remove_object(src,frequency)
+ return ..()
+
describe()
return "\The [src]'s power light is [receiving?"on":"off"]"
diff --git a/code/modules/examine/descriptions/engineering.dm b/code/modules/examine/descriptions/engineering.dm
index c3f9b9b21fa..c8842c21bc7 100644
--- a/code/modules/examine/descriptions/engineering.dm
+++ b/code/modules/examine/descriptions/engineering.dm
@@ -1,4 +1,4 @@
-/obj/machinery/power/supermatter
+/obj/machinery/power/supermatter_shard
description_info = "When energized by a laser (or something hitting it), it emits radiation and heat. If the heat reaches above 7000 kelvin, it will send an alert and start taking damage. \
After integrity falls to zero percent, it will delaminate, causing a massive explosion, station-wide radiation spikes, and hallucinations. \
Supermatter reacts badly to oxygen in the atmosphere. It'll also heat up really quick if it is in vacuum.
\
diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm
index c3e4ed577f9..37f675f532e 100644
--- a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm
+++ b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm
@@ -161,7 +161,7 @@
..()
qdel(src)
-/mob/living/simple_animal/hostile/retaliate/malf_drone/Destroy()
+/mob/living/simple_animal/hostile/retaliate/malf_drone/Destroy() //Seriously, what the actual hell.
//some random debris left behind
if(has_loot)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm
index 5f902a9eeb4..a1478496ff7 100644
--- a/code/modules/mob/login.dm
+++ b/code/modules/mob/login.dm
@@ -30,7 +30,9 @@
client.images = null //remove the images such as AIs being unable to see runes
client.screen = list() //remove hud items just in case
- if(hud_used) qdel(hud_used) //remove the hud objects
+ if(hud_used)
+ qdel(hud_used) //remove the hud objects
+ hud_used = null
hud_used = new /datum/hud(src)
next_move = 1
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 10157afd00a..85f5b0e167d 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -3,6 +3,7 @@
dead_mob_list -= src
living_mob_list -= src
qdel(hud_used)
+ hud_used = null
if(mind && mind.current == src)
spellremove(src)
ghostize()
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index c4170888d3d..338f3830766 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -45,6 +45,7 @@
/obj/singularity/Destroy()
processing_objects.Remove(src)
singularities -= src
+ target = null
return ..()
/obj/singularity/Move(atom/newloc, direct)
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index f9b97b7f26a..597a078b320 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -72,6 +72,7 @@
/obj/machinery/power/supermatter_shard/Destroy()
investigate_log("has been destroyed.", "supermatter")
qdel(radio)
+ radio = null
return ..()
/obj/machinery/power/supermatter_shard/proc/explode()
@@ -233,7 +234,7 @@
/obj/machinery/power/supermatter_shard/attack_ai(mob/user as mob)
ui_interact(user)
-
+
/obj/machinery/power/supermatter_shard/attack_ghost(mob/user as mob)
ui_interact(user)
@@ -242,16 +243,16 @@
"You reach out and touch \the [src]. Everything starts burning and all you can hear is ringing. Your last thought is \"That was not a wise decision.\"",\
"You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.")
- playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1)
-
+ playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1)
+
Consume(user)
-
+
/obj/machinery/power/supermatter_shard/proc/get_integrity()
var/integrity = damage / explosion_point
integrity = round(100 - integrity * 100)
integrity = integrity < 0 ? 0 : integrity
return integrity
-
+
// This is purely informational UI that may be accessed by AIs or robots
/obj/machinery/power/supermatter_shard/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
var/data[0]