From 2e3b21ec418bbc9fcf24e5bb1395ad302e20255c Mon Sep 17 00:00:00 2001 From: Ben <91219575+Ben10083@users.noreply.github.com> Date: Fri, 14 Jun 2024 10:19:45 -0400 Subject: [PATCH] Autohiss/Stutter Repeat Fix (#19335) Autohiss/stutter no longer procs twice when using `say :w` to whisper **PLEASE TESTMERGE THIS BEFORE MERGE**. Say proc is spaghetti so had to touch alot of things to get this to work. Co-authored-by: Ben10083 --- code/modules/mob/living/bot/bot.dm | 2 +- code/modules/mob/living/carbon/brain/say.dm | 2 +- code/modules/mob/living/carbon/human/say.dm | 2 +- code/modules/mob/living/carbon/slime/say.dm | 2 +- code/modules/mob/living/say.dm | 6 +- code/modules/mob/living/silicon/pai/say.dm | 2 +- code/modules/mob/living/silicon/say.dm | 6 +- .../simple_animal/borer/borer_captive.dm | 2 +- .../mob/living/simple_animal/borer/say.dm | 2 +- .../simple_animal/friendly/spiderbot.dm | 2 +- .../mob/living/simple_animal/parrot.dm | 2 +- .../modules/mob/living/simple_animal/shade.dm | 2 +- .../mob/living/simple_animal/simple_animal.dm | 2 +- code/modules/mob/living/whisper.dm | 4 +- code/modules/shareddream/brainghost.dm | 2 +- html/changelogs/Ben10083 - Whisper Fix.yml | 58 +++++++++++++++++++ 16 files changed, 78 insertions(+), 20 deletions(-) create mode 100644 html/changelogs/Ben10083 - Whisper Fix.yml diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index 1783c2cd1ab..11c011e6cc8 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -160,7 +160,7 @@ return return attack_hand(user) -/mob/living/bot/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE) +/mob/living/bot/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE, var/skip_edit = FALSE) ..(message, null, "beeps") /mob/living/bot/Collide(atom/A) diff --git a/code/modules/mob/living/carbon/brain/say.dm b/code/modules/mob/living/carbon/brain/say.dm index 185e7d87503..46098ebef9e 100644 --- a/code/modules/mob/living/carbon/brain/say.dm +++ b/code/modules/mob/living/carbon/brain/say.dm @@ -1,5 +1,5 @@ //TODO: Convert this over for languages. -/mob/living/carbon/brain/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE) +/mob/living/carbon/brain/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE, var/skip_edit = FALSE) if (silent) return diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 2d7d678bd0e..ac46ba54a01 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -238,7 +238,7 @@ used_radios += R R.talk_into(src,message,null,verb,speaking) if("whisper") - whisper(message, speaking, is_singing) + whisper(message, speaking, is_singing, say_verb = TRUE) return TRUE else if(message_mode) diff --git a/code/modules/mob/living/carbon/slime/say.dm b/code/modules/mob/living/carbon/slime/say.dm index 0821a8d241d..eaefd6206e9 100644 --- a/code/modules/mob/living/carbon/slime/say.dm +++ b/code/modules/mob/living/carbon/slime/say.dm @@ -1,4 +1,4 @@ -/mob/living/carbon/slime/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE) +/mob/living/carbon/slime/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE, var/skip_edit = FALSE) verb = say_quote(message) if(copytext(message,1,2) == "*") diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 02383deecd6..9bbe95a1a00 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -150,7 +150,7 @@ var/list/channel_to_radio_key = new I.talk_into(src, message, verb, speaking) if(message_mode == "whisper" && !whisper) - whisper(message, speaking) + whisper(message, speaking, say_verb = TRUE) return TRUE return FALSE @@ -185,7 +185,7 @@ var/list/channel_to_radio_key = new return "statement" -/mob/living/say(var/message, var/datum/language/speaking = null, var/verb, var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE) +/mob/living/say(var/message, var/datum/language/speaking = null, var/verb, var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE, var/skip_edit = FALSE) if(stat) if(stat == DEAD) return say_dead(message) @@ -252,7 +252,7 @@ var/list/channel_to_radio_key = new message = trim_left(message) var/message_range = world.view - if(!(speaking && (speaking.flags & NO_STUTTER))) + if(!skip_edit && !(speaking && (speaking.flags & NO_STUTTER))) message = handle_autohiss(message, speaking) var/list/hsp_params = handle_speech_problems(message, verb, message_mode, message_range) if(hsp_params) diff --git a/code/modules/mob/living/silicon/pai/say.dm b/code/modules/mob/living/silicon/pai/say.dm index f2d8a1c62d1..4fce1281981 100644 --- a/code/modules/mob/living/silicon/pai/say.dm +++ b/code/modules/mob/living/silicon/pai/say.dm @@ -1,4 +1,4 @@ -/mob/living/silicon/pai/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE) +/mob/living/silicon/pai/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE, var/skip_edit = FALSE) if(silence_time) to_chat(src, "Communication circuits remain uninitialized.") return diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index e3ed8c0a3ed..333eaa0889e 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -16,7 +16,7 @@ /mob/living/silicon/robot/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, whisper) if(message_mode == "whisper" && !whisper) - whisper(message, speaking) + whisper(message, speaking, say_verb = TRUE) return TRUE if(message_mode) if(!is_component_functioning("radio")) @@ -32,7 +32,7 @@ /mob/living/silicon/ai/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, whisper) if(message_mode == "whisper" && !whisper) - whisper(message, speaking) + whisper(message, speaking, say_verb = TRUE) return TRUE if(message_mode == "department") log_say("[key_name(src)] : [message]",ckey=key_name(src)) @@ -49,7 +49,7 @@ /mob/living/silicon/pai/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, whisper) if(message_mode) if(message_mode == "whisper" && !whisper) - whisper(message, speaking) + whisper(message, speaking, say_verb = TRUE) return TRUE if(message_mode == "general") message_mode = null diff --git a/code/modules/mob/living/simple_animal/borer/borer_captive.dm b/code/modules/mob/living/simple_animal/borer/borer_captive.dm index d3fe6056364..fe9771c434d 100644 --- a/code/modules/mob/living/simple_animal/borer/borer_captive.dm +++ b/code/modules/mob/living/simple_animal/borer/borer_captive.dm @@ -6,7 +6,7 @@ var/datum/progressbar/resist_bar var/resist_start_time = 0 -/mob/living/captive_brain/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE) +/mob/living/captive_brain/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE, var/skip_edit = FALSE) if(istype(src.loc,/mob/living/simple_animal/borer)) if(!message) return diff --git a/code/modules/mob/living/simple_animal/borer/say.dm b/code/modules/mob/living/simple_animal/borer/say.dm index fb2086077bf..25023c08269 100644 --- a/code/modules/mob/living/simple_animal/borer/say.dm +++ b/code/modules/mob/living/simple_animal/borer/say.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/borer/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE) +/mob/living/simple_animal/borer/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE, var/skip_edit = FALSE) message = capitalize(message) if(!message) diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm index 95ed51bec42..894858d7494 100644 --- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm +++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm @@ -339,7 +339,7 @@ switch(message_mode) if("whisper") if(!whisper) - whisper(message, speaking) + whisper(message, speaking, say_verb = TRUE) return TRUE if("headset") radio.talk_into(src, message, null, verb, speaking) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index efaca594c30..ff76905b94f 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -679,7 +679,7 @@ to_chat(src, SPAN_WARNING("There is no perch nearby to sit on.")) return -/mob/living/simple_animal/parrot/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE) +/mob/living/simple_animal/parrot/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE, var/skip_edit = FALSE) if(stat) return diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index e519dafe25b..0cdb888e8b9 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -204,7 +204,7 @@ heard_dying_message = 0 to_chat(src, SPAN_NOTICE("The soothing echoes of life reinvigorate you.")) -/mob/living/simple_animal/shade/bluespace/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE) +/mob/living/simple_animal/shade/bluespace/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE, var/skip_edit = FALSE) if(!possessive) var/list/words_in_memory = dd_text2List(last_message_heard, " ") var/list/words_in_message = dd_text2List(message, " ") diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index c86d07f9b80..acee0c42f42 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -808,7 +808,7 @@ /mob/living/simple_animal/proc/reset_sound_time() sound_time = TRUE -/mob/living/simple_animal/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE) +/mob/living/simple_animal/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE, var/skip_edit = FALSE) if(speak_emote.len) verb = pick(speak_emote) diff --git a/code/modules/mob/living/whisper.dm b/code/modules/mob/living/whisper.dm index 84af460c616..07a75cf42a5 100644 --- a/code/modules/mob/living/whisper.dm +++ b/code/modules/mob/living/whisper.dm @@ -14,7 +14,7 @@ whisper(message) -/mob/living/whisper(var/message, var/datum/language/speaking, var/is_singing = FALSE) +/mob/living/whisper(var/message, var/datum/language/speaking, var/is_singing = FALSE, var/say_verb = FALSE) if(is_muzzled()) to_chat(src, SPAN_DANGER("You're muzzled and cannot speak!")) return @@ -89,4 +89,4 @@ for (var/mob/M in watching) M.show_message(rendered, 2) - say(message, speaking, whisper_text, whisper = TRUE) + say(message, speaking, whisper_text, whisper = TRUE, skip_edit = say_verb) diff --git a/code/modules/shareddream/brainghost.dm b/code/modules/shareddream/brainghost.dm index a4909c06e0d..34c3de0ef4c 100644 --- a/code/modules/shareddream/brainghost.dm +++ b/code/modules/shareddream/brainghost.dm @@ -80,7 +80,7 @@ awaken_impl(TRUE) body.handle_shared_dreaming(TRUE) -/mob/living/brain_ghost/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE) +/mob/living/brain_ghost/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE, var/skip_edit = FALSE) if(!istype(body) || body.stat!=UNCONSCIOUS) return if(prob(20)) // 1/5 chance to mumble out anything you say in the dream. diff --git a/html/changelogs/Ben10083 - Whisper Fix.yml b/html/changelogs/Ben10083 - Whisper Fix.yml new file mode 100644 index 00000000000..42a9868a04f --- /dev/null +++ b/html/changelogs/Ben10083 - Whisper Fix.yml @@ -0,0 +1,58 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# - (fixes bugs) +# wip +# - (work in progress) +# qol +# - (quality of life) +# soundadd +# - (adds a sound) +# sounddel +# - (removes a sound) +# rscadd +# - (adds a feature) +# rscdel +# - (removes a feature) +# imageadd +# - (adds an image or sprite) +# imagedel +# - (removes an image or sprite) +# spellcheck +# - (fixes spelling or grammar) +# experiment +# - (experimental change) +# balance +# - (balance changes) +# code_imp +# - (misc internal code change) +# refactor +# - (refactors code) +# config +# - (makes a change to the config files) +# admin +# - (makes changes to administrator tools) +# server +# - (miscellaneous changes to server) +################################# + +# Your name. +author: Ben10083 + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - bugfix: "Autohiss and stuttering no longer applies twice when using say :w to whisper."