diff --git a/code/game/objects/items/implants/implant_explosive.dm b/code/game/objects/items/implants/implant_explosive.dm index b93c9419a3..bf8d215a11 100644 --- a/code/game/objects/items/implants/implant_explosive.dm +++ b/code/game/objects/items/implants/implant_explosive.dm @@ -82,8 +82,9 @@ /obj/item/implant/explosive/proc/boom_goes_the_weasel() explosion(get_turf(imp_in ? imp_in : src), heavy, medium, weak, weak, flame_range = weak) - imp_in?.gib(TRUE) - qdel(src) + if(!QDELETED(imp_in)) + imp_in.gib(TRUE) + qdel(src) /obj/item/implant/explosive/macro name = "macrobomb implant" diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 460c6a52c9..bd0b85a498 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -171,7 +171,7 @@ var/turf/T = user.loc //get user's location for delay checks //the istype cascade has been spread among various procs for easy overriding - if(try_clean(W, user, T) || try_wallmount(W, user, T) || try_decon(W, user, T) || try_destroy(W, user, T)) + if(try_clean(W, user, T) || try_wallmount(W, user, T) || try_decon(W, user, T) || (iswall(src) && try_destroy(W, user, T))) return return ..() diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 3ca732eb0b..eeea961037 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -57,9 +57,10 @@ fire_delay = shot.delay /obj/item/gun/energy/Destroy() - QDEL_NULL(cell) - QDEL_LIST(ammo_type) - STOP_PROCESSING(SSobj, src) + if(flags_1 & INITIALIZED_1) + QDEL_NULL(cell) + QDEL_LIST(ammo_type) + STOP_PROCESSING(SSobj, src) return ..() /obj/item/gun/energy/process()