diff --git a/code/game/objects/effects/decals/floor_decals.dm b/code/game/objects/effects/decals/floor_decals.dm index 77c2a924faad..ddd8cacf3b63 100644 --- a/code/game/objects/effects/decals/floor_decals.dm +++ b/code/game/objects/effects/decals/floor_decals.dm @@ -9,6 +9,7 @@ I.pixel_y = pixel_y I.color=color T.AddDecal(I) + I = null qdel(src) /obj/effect/decal/warning_stripes/oldstyle diff --git a/code/modules/maps/spawners/pick_spawner.dm b/code/modules/maps/spawners/pick_spawner.dm index 06706eab2244..07de5e6ab224 100644 --- a/code/modules/maps/spawners/pick_spawner.dm +++ b/code/modules/maps/spawners/pick_spawner.dm @@ -26,7 +26,7 @@ map_pickspawners[category] = list() map_pickspawners[category] += src -/obj/abstract/map/spawner/pick_spawner/Destroy() +/obj/abstract/map/spawner/pick_spawner/kill_spawner() if(category && map_pickspawners[category]) map_pickspawners[category] -= src ..() @@ -45,7 +45,7 @@ var/obj/abstract/map/spawner/pick_spawner/winner = pickweight(possible_spawners) winner.perform_spawn() //It automatically removes itself from the list when spawning. for(var/obj/abstract/map/spawner/pick_spawner/loser in map_pickspawners[category]) - qdel(loser) //They automatically remove themselves from the list in their Destroy(). + loser.kill_spawner() //They automatically remove themselves from the list here. diff --git a/code/modules/maps/spawners/spawners.dm b/code/modules/maps/spawners/spawners.dm index dba792f44888..28497496b908 100644 --- a/code/modules/maps/spawners/spawners.dm +++ b/code/modules/maps/spawners/spawners.dm @@ -24,7 +24,11 @@ else if(prob(chance)) CreateItem(pick(to_spawn)) - qdel(src) + kill_spawner() + +/obj/abstract/map/spawner/proc/kill_spawner() //prevents hard dels + to_spawn = list() + src.forceMove(null, harderforce = TRUE) /obj/abstract/map/spawner/proc/CreateItem(new_item_type) var/obj/spawned = new new_item_type(loc)