From 66acb4bd54cda774e982a9dea1879a63cc9d3784 Mon Sep 17 00:00:00 2001 From: Geeves Date: Mon, 3 Jan 2022 23:23:19 +0200 Subject: [PATCH] Crit Whisper Fix (#12887) --- code/modules/mob/living/carbon/human/say.dm | 4 ++-- code/modules/mob/living/say.dm | 6 +++--- code/modules/mob/living/silicon/say.dm | 12 ++++++------ .../mob/living/simple_animal/friendly/spiderbot.dm | 7 ++++--- html/changelogs/geeves-crit_whisper_fix.yml | 6 ++++++ 5 files changed, 21 insertions(+), 14 deletions(-) create mode 100644 html/changelogs/geeves-crit_whisper_fix.yml diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 7147eafe889..b4ab24eb1f1 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -161,8 +161,8 @@ return headsets[headsets[1]] return null -/mob/living/carbon/human/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio) - if(paralysis || InStasis()) +/mob/living/carbon/human/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio, whisper) + if(!whisper && (paralysis || InStasis())) whisper(message, speaking) return TRUE switch(message_mode) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 6a8a607418a..d9249931616 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -124,13 +124,13 @@ proc/get_radio_key_from_channel(var/channel) returns[4] = world.view return returns -/mob/living/proc/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio) +/mob/living/proc/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio, whisper) if(message_mode == "intercom") for(var/obj/item/device/radio/intercom/I in view(1, null)) used_radios += I if(I.talk_into(src, message, verb, speaking)) successful_radio += I - if(message_mode == "whisper") + if(message_mode == "whisper" && !whisper) whisper(message, speaking) return TRUE return 0 @@ -245,7 +245,7 @@ proc/get_radio_key_from_channel(var/channel) var/list/obj/item/used_radios = new var/list/successful_radio = new // passes a list because standard vars don't work when passed - if(handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio)) + if(handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio, whisper)) return 1 var/list/handle_v = handle_speech_sound() diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index cc5eba6d2c1..3712740cf5c 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -20,8 +20,8 @@ returns[4] = world.view return returns -/mob/living/silicon/robot/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) - if(message_mode == "whisper") +/mob/living/silicon/robot/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio, whisper) + if(message_mode == "whisper" && !whisper) whisper(message, speaking) return TRUE if(message_mode) @@ -36,8 +36,8 @@ /mob/living/silicon/robot/drone/handle_message_mode() return null -/mob/living/silicon/ai/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) - if(message_mode == "whisper") +/mob/living/silicon/ai/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio, whisper) + if(message_mode == "whisper" && !whisper) whisper(message, speaking) return TRUE if(message_mode == "department") @@ -52,9 +52,9 @@ log_say("[key_name(src)] : [message]",ckey=key_name(src)) return ai_radio.talk_into(src, message, message_mode, verb, speaking) -/mob/living/silicon/pai/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) +/mob/living/silicon/pai/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio, whisper) if(message_mode) - if(message_mode == "whisper") + if(message_mode == "whisper" && !whisper) whisper(message, speaking) return TRUE if(message_mode == "general") diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm index 34f3d984684..0b36c275454 100644 --- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm +++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm @@ -316,11 +316,12 @@ /mob/living/simple_animal/spiderbot/get_bullet_impact_effect_type(var/def_zone) return BULLET_IMPACT_METAL -/mob/living/simple_animal/spiderbot/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) +/mob/living/simple_animal/spiderbot/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio, whisper) switch(message_mode) if("whisper") - whisper(message, speaking) - return TRUE + if(!whisper) + whisper(message, speaking) + return TRUE if("headset") radio.talk_into(src, message, null, verb, speaking) used_radios += radio diff --git a/html/changelogs/geeves-crit_whisper_fix.yml b/html/changelogs/geeves-crit_whisper_fix.yml new file mode 100644 index 00000000000..255e2133576 --- /dev/null +++ b/html/changelogs/geeves-crit_whisper_fix.yml @@ -0,0 +1,6 @@ +author: Geeves + +delete-after: True + +changes: + - bugfix: "Speaking while in crit will no longer recursively whisper your wails." \ No newline at end of file