diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 1bef5237d43..c6e8fbfaf43 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -40,13 +40,6 @@ /atom/proc/CheckParts() return -/atom/Destroy() - if(reagents) - reagents.delete() - qdel(reagents) - invisibility = 101 - // Do not call ..() - /atom/proc/assume_air(datum/gas_mixture/giver) del(giver) return null diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 5e3b58dc474..6d60e1c7835 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -32,10 +32,14 @@ ..() /atom/movable/Destroy() - loc = null // can never null their loc enough really + if(reagents) + qdel(reagents) for(var/atom/movable/AM in contents) qdel(AM) - ..() + tag = null + loc = null + invisibility = 101 + // Do not call ..() // Previously known as HasEntered() // This is automatically called when something enters your square diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index d68fa7266c9..e95d6c5b50d 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -49,8 +49,17 @@ deactivate() /obj/machinery/camera/Destroy() + deactivate(null, 0) //kick anyone viewing out + if(assembly) + qdel(assembly) + assembly = null if(istype(bug)) bug.bugged_cameras -= src.c_tag + if(bug.current == src) + bug.current = null + bug = null + qdel(wires) + cameranet.removeCamera(src) //Will handle removal from the camera network and the chunks, so we don't need to worry about that ..() /obj/machinery/camera/emp_act(severity) @@ -130,10 +139,16 @@ else if(istype(W, /obj/item/weapon/weldingtool) && wires.CanDeconstruct()) if(weld(W, user)) - if(assembly) - assembly.loc = src.loc - assembly.state = 1 + user << "You unweld the camera leaving it as just a frame screwed to the wall." + if(!assembly) + assembly = new() + assembly.loc = src.loc + assembly.state = 1 + assembly.dir = src.dir + assembly.update_icon() + assembly = null qdel(src) + return else if(istype(W, /obj/item/device/analyzer) && panel_open) //XRay if(!isXRay()) upgradeXRay() @@ -216,7 +231,7 @@ status = !( src.status ) if (!(src.status)) if(user) - visible_message("\red [user] has deactivated [src]!") + visible_message("\red [user] deactivates [src]!") add_hiddenprint(user) else visible_message("\red \The [src] deactivates!") @@ -225,10 +240,10 @@ else if(user) - visible_message("\red [user] has reactivated [src]!") + visible_message("\red [user] reactivates [src]!") add_hiddenprint(user) else - visible_message("\red \the [src] reactivates!") + visible_message("\red \The [src] reactivates!") playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) icon_state = initial(icon_state) @@ -312,7 +327,7 @@ return 0 // Do after stuff here - user << "You start to weld the [src].." + user << "You start to weld [src]." playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) WT.eyecheck(user) busy = 1 diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm index 9f5d95f7ccd..ff201432fc4 100644 --- a/code/game/machinery/camera/camera_assembly.dm +++ b/code/game/machinery/camera/camera_assembly.dm @@ -48,7 +48,7 @@ else if(istype(W, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "You unattach the assembly from it's place." + user << "You unattach the assembly from its place." anchored = 0 update_icon() state = 0 @@ -66,7 +66,7 @@ else if(istype(W, /obj/item/weapon/weldingtool)) if(weld(W, user)) - user << "You unweld the assembly from it's place." + user << "You unweld the assembly from its place." state = 1 anchored = 1 return diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index 4d7049c3375..039f0cb2151 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -44,6 +44,23 @@ ..() processing_objects += src +/obj/item/device/camera_bug/Destroy() + if(expansion) + qdel(expansion) + expansion = null + del(src) +/* Easier to just call del() than this nonsense + get_cameras() + for(var/cam_tag in bugged_cameras) + var/obj/machinery/camera/camera = bugged_cameras[cam_tag] + if(camera.bug == src) + camera.bug = null + bugged_cameras = list() + if(tracking) + tracking = null + ..() +*/ + /obj/item/device/camera_bug/interact(var/mob/user = usr) var/datum/browser/popup = new(user, "camerabug","Camera Bug",nref=src) popup.set_content(menu(get_cameras())) diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm index 1a4226b70a3..5ba0e73fa7d 100644 --- a/code/game/objects/items/weapons/grenades/smokebomb.dm +++ b/code/game/objects/items/weapons/grenades/smokebomb.dm @@ -12,6 +12,10 @@ src.smoke = new /datum/effect/effect/system/bad_smoke_spread src.smoke.attach(src) +/obj/item/weapon/grenade/smokebomb/Destroy() + qdel(smoke) + ..() + /obj/item/weapon/grenade/smokebomb/prime() update_mob() playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3)