diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 086cbe9fa9..c9f30cd3ba 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -219,5 +219,4 @@ var/turf/listed_turf = null //the current turf being examined in the stat panel - var/list/active_genes=list() - var/hud_typing = 0 //set when typing in an input window instead of chatline \ No newline at end of file + var/list/active_genes=list() \ No newline at end of file diff --git a/code/modules/mob/typing_indicator.dm b/code/modules/mob/typing_indicator.dm index 2e6f62943f..32f6bfc13f 100644 --- a/code/modules/mob/typing_indicator.dm +++ b/code/modules/mob/typing_indicator.dm @@ -1,3 +1,10 @@ +#define TYPING_INDICATOR_LIFETIME 30 * 10 //grace period after which typing indicator disappears regardless of text in chatbar + +mob/var/hud_typing = 0 //set when typing in an input window instead of chatline +mob/var/typing +mob/var/last_typed +mob/var/last_typed_time + var/global/image/typing_indicator /mob/proc/set_typing_indicator(var/state) @@ -6,10 +13,13 @@ var/global/image/typing_indicator if(!typing_indicator) typing_indicator = image('icons/mob/talk.dmi',null,"typing") if(state) - if(!(typing_indicator in overlays)) + if(!typing) overlays += typing_indicator + typing = 1 else - overlays -= typing_indicator + if(typing) + overlays -= typing_indicator + typing = 0 return state /mob/verb/say_wrapper() @@ -40,10 +50,19 @@ var/global/image/typing_indicator if(client) if(!(client.prefs.toggles & SHOW_TYPING) && !hud_typing) var/temp = winget(client, "input", "text") + + if (temp != last_typed) + last_typed = temp + last_typed_time = world.time + + if (world.time > last_typed_time + TYPING_INDICATOR_LIFETIME) + set_typing_indicator(0) + return if(length(temp) > 5 && findtext(temp, "Say \"", 1, 7)) set_typing_indicator(1) else if(length(temp) > 3 && findtext(temp, "Me ", 1, 5)) set_typing_indicator(1) + else set_typing_indicator(0) @@ -53,5 +72,5 @@ var/global/image/typing_indicator set desc = "Toggles showing an indicator when you are typing emote or say message." prefs.toggles ^= SHOW_TYPING prefs.save_preferences() - src << "You will [(prefs.toggles & CHAT_OOC) ? "now" : "no longer"] display typing indicator." + src << "You will [(prefs.toggles & CHAT_OOC) ? "no longer" : "now"] display typing indicator." feedback_add_details("admin_verb","TID") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/interface/skin.dmf b/interface/skin.dmf index 51d51e96cb..c83c988676 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -403,11 +403,11 @@ macro "hotkeymode" is-disabled = false elem name = "F3" - command = "say_wrapper" + command = ".say" is-disabled = false elem name = "F4" - command = "me_wrapper" + command = ".me" is-disabled = false elem name = "F5"