From df1a99ed8dbb9949aff36bba9c9b58abd958e59b Mon Sep 17 00:00:00 2001 From: Jittai Date: Sun, 4 Feb 2018 03:12:22 -0500 Subject: [PATCH] [READY] Fixes de-initialization of cleanables-ash (#35191) * Fixes de-initialization of cleanables-ash * boop * :x * better execution * prevent pile-up * special ash * comment cleanup * cleanup 2 --- 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 d24a278b411..d7a3b1a3f94 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 00d977deeba..d26dbb72e7d 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 3b931b218fd..2415ecd3ce9 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)