From 3b2e27c8717d31d1122df555f2977fa2f8b0a052 Mon Sep 17 00:00:00 2001 From: Raeschen Date: Sat, 2 Mar 2024 13:12:34 +0100 Subject: [PATCH] Chatmessage runtime (#15795) * Chatmessage runtimes (#7863) * no QDEL_IN_STOPPABLE, default behavior for you, neat. --- code/datums/chat_message.dm | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/code/datums/chat_message.dm b/code/datums/chat_message.dm index 4dd8d42537a..40a1239acc9 100644 --- a/code/datums/chat_message.dm +++ b/code/datums/chat_message.dm @@ -51,6 +51,9 @@ var/list/runechat_image_cache = list() /// If we are currently processing animation and cleanup at EOL var/ending_life + /// deletion timer + var/timer_delete + /** * Constructs a chat message overlay * @@ -72,11 +75,14 @@ var/list/runechat_image_cache = list() generate_image(text, target, owner, extra_classes, lifespan) /datum/chatmessage/Destroy() - if(owned_by) + if(timer_delete) + deltimer(timer_delete) + timer_delete = null + if(!QDELETED(owned_by)) UnregisterSignal(owned_by, COMSIG_PARENT_QDELETING) LAZYREMOVEASSOC(owned_by.seen_messages, message_loc, src) owned_by.images.Remove(message) - if(message_loc) + if(!QDELETED(message_loc)) UnregisterSignal(message_loc, COMSIG_PARENT_QDELETING) owned_by = null message_loc = null @@ -219,8 +225,7 @@ var/list/runechat_image_cache = list() return ending_life = TRUE animate(message, alpha = 0, time = fadetime, flags = ANIMATION_PARALLEL) - spawn(fadetime) - qdel(src) + timer_delete = QDEL_IN(src, fadetime) /** * Creates a message overlay at a defined location for a given speaker