From 5754c4edf75ddd69e2f77aea13e7b477c71639d3 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Wed, 17 Jun 2015 06:50:08 +0300 Subject: [PATCH] Fixes #9211 Instead of several minutes long spawn, blood is added to processing for drying out now. Processing proc itself is just compraing two vars so shouldn't be as bad. This way it doesn't get referenced by unnamed proc and can be qdel'd properly. --- code/game/objects/effects/decals/Cleanable/humans.dm | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index b81089d9fb4..1c723c04ada 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -20,10 +20,12 @@ var/global/list/image/splatter_cache=list() var/basecolor="#A10808" // Color when wet. var/list/datum/disease2/disease/virus2 = list() var/amount = 5 + var/drytime /obj/effect/decal/cleanable/blood/Destroy() for(var/datum/disease/D in viruses) D.cure(0) + processing_objects -= src return ..() /obj/effect/decal/cleanable/blood/New() @@ -38,7 +40,11 @@ var/global/list/image/splatter_cache=list() if (B.blood_DNA) blood_DNA |= B.blood_DNA.Copy() qdel(B) - spawn(DRYING_TIME * (amount+1)) + drytime = world.time + DRYING_TIME * (amount+1) + processing_objects += src + +/obj/effect/decal/cleanable/blood/process() + if(world.time > drytime) dry() /obj/effect/decal/cleanable/blood/update_icon() @@ -91,6 +97,7 @@ var/global/list/image/splatter_cache=list() desc = drydesc color = adjust_brightness(color, -50) amount = 0 + processing_objects -= src /obj/effect/decal/cleanable/blood/attack_hand(mob/living/carbon/human/user) ..() @@ -125,8 +132,7 @@ var/global/list/image/splatter_cache=list() /obj/effect/decal/cleanable/blood/drip/New() ..() - spawn(1) - drips |= icon_state + drips |= icon_state /obj/effect/decal/cleanable/blood/writing icon_state = "tracks"