From 81cfcd7af3222eb6d807fd7934030559faf81ff8 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Mon, 12 Oct 2015 02:37:52 -0400 Subject: [PATCH 1/2] More Dereferencing --- code/game/machinery/computer/station_alert.dm | 1 + .../objects/items/devices/sensor_device.dm | 9 ++- code/game/objects/objs.dm | 1 - code/modules/assembly/igniter.dm | 63 +++++++++++-------- code/modules/assembly/shock_kit.dm | 2 + code/modules/assembly/signaler.dm | 6 ++ code/modules/mob/login.dm | 4 +- code/modules/mob/mob.dm | 1 + 8 files changed, 56 insertions(+), 31 deletions(-) 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/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/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/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 084ff2d3935..16cf68ef568 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() From 46f9f68f31d9f619f5503de705a409be28d14e2e Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Mon, 12 Oct 2015 04:18:49 -0400 Subject: [PATCH 2/2] more de-referencing --- code/game/machinery/bots/bots.dm | 2 ++ code/game/machinery/bots/mulebot.dm | 3 +++ code/game/mecha/mech_bay.dm | 2 ++ code/game/objects/items/weapons/flamethrower.dm | 3 +++ code/game/objects/items/weapons/grenades/smokebomb.dm | 1 + code/modules/examine/descriptions/engineering.dm | 2 +- .../living/simple_animal/hostile/retaliate/drone.dm | 2 +- code/modules/power/singularity/singularity.dm | 1 + code/modules/power/supermatter/supermatter.dm | 11 ++++++----- 9 files changed, 20 insertions(+), 7 deletions(-) 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/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/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/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/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]