From b4741c166804f4c2c151f40f7f07d109fa091712 Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Wed, 8 Mar 2023 11:49:15 +1000 Subject: [PATCH] Merge pull request #14592 from Heroman3003/indicator-hopefully-fix Hopefully fixes stuck typing indicators when changing bubble mid-typing --- code/modules/mob/living/carbon/brain/brain.dm | 8 ++++++-- code/modules/mob/mob_defines.dm | 1 + code/modules/mob/typing_indicator.dm | 6 +++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index d4c40c6179..8743d0b7e4 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -66,11 +66,15 @@ init_typing_indicator("[cur_bubble_appearance]_typing") if(state && !typing) - loc.add_overlay(typing_indicator, TRUE) + add_overlay(typing_indicator, TRUE) typing = TRUE + typing_indicator_active = typing_indicator else if(typing) - loc.cut_overlay(typing_indicator, TRUE) + cut_overlay(typing_indicator_active, TRUE) typing = FALSE + if(typing_indicator_active != typing_indicator) + qdel(typing_indicator_active) + typing_indicator_active = null return state diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 2529936a7a..f729cb8c7e 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -218,6 +218,7 @@ var/typing var/obj/effect/decal/typing_indicator + var/obj/effect/decal/typing_indicator_active var/cur_typing_indicator var/custom_speech_bubble = "default" diff --git a/code/modules/mob/typing_indicator.dm b/code/modules/mob/typing_indicator.dm index 5bbce21356..79907c74f9 100644 --- a/code/modules/mob/typing_indicator.dm +++ b/code/modules/mob/typing_indicator.dm @@ -35,9 +35,13 @@ if(state && !typing) add_overlay(typing_indicator, TRUE) typing = TRUE + typing_indicator_active = typing_indicator else if(typing) - cut_overlay(typing_indicator, TRUE) + cut_overlay(typing_indicator_active, TRUE) typing = FALSE + if(typing_indicator_active != typing_indicator) + qdel(typing_indicator_active) + typing_indicator_active = null return state