From d4c270fe4aa838ba10f0922be38b9dc811db55fc Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 5 Feb 2018 03:20:09 -0600 Subject: [PATCH] [MIRROR] [READY] Fixes de-initialization of cleanables-ash (#5295) * [READY] Fixes de-initialization of cleanables-ash * Update morgue.dm * Update morgue.dm --- code/game/objects/effects/decals/cleanable/misc.dm | 4 ++++ code/game/objects/effects/decals/decal.dm | 3 ++- code/game/objects/structures/morgue.dm | 8 ++------ 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 902b5652fd..3ff1bdc19f 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -17,6 +17,10 @@ pixel_x = rand(-5, 5) pixel_y = rand(-5, 5) +/obj/effect/decal/cleanable/ash/crematorium +//crematoriums need their own ash cause default ash deletes itself if created in an obj + turf_loc_check = FALSE + /obj/effect/decal/cleanable/ash/large name = "large pile of ashes" icon_state = "big_ash" diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm index 00d977deeb..d26dbb72e7 100644 --- a/code/game/objects/effects/decals/decal.dm +++ b/code/game/objects/effects/decals/decal.dm @@ -2,10 +2,11 @@ name = "decal" anchored = TRUE resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF + var/turf_loc_check = TRUE /obj/effect/decal/Initialize() . = ..() - if(!isturf(loc) || NeverShouldHaveComeHere(loc)) + if(turf_loc_check && (!isturf(loc) || NeverShouldHaveComeHere(loc))) return INITIALIZE_HINT_QDEL /obj/effect/decal/blob_act(obj/structure/blob/B) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 922bc51f77..4f841751e2 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -241,15 +241,11 @@ GLOBAL_LIST_EMPTY(crematoriums) M.ghostize() qdel(M) - var/ash_check = FALSE for(var/obj/O in conts) //conts defined above, ignores crematorium and tray - if(istype(O,/obj/effect/decal/cleanable/ash)) ash_check = TRUE//creates the illusion of ash piling up qdel(O) - var/obj/effect/decal/cleanable/ash/a - if(ash_check) a=new/obj/effect/decal/cleanable/ash/large(src)//cont. illusion of more ash - else a=new/obj/effect/decal/cleanable/ash(src) - a.layer = connected.layer//Makes the ash the same layer as the tray. + if(!locate(/obj/effect/decal/cleanable/ash) in get_step(src, dir))//prevent pile-up + new/obj/effect/decal/cleanable/ash/crematorium(src) sleep(30)