fixes some talking related bugs (#13147)

This commit is contained in:
Casper3667
2022-02-15 23:23:22 +01:00
committed by GitHub
parent 014fa3886d
commit 644fbda38e
5 changed files with 34 additions and 11 deletions
+1 -1
View File
@@ -12,7 +12,7 @@
var/list/ask_verb = list("asks") // Used when sentence ends in a ?
var/list/exclaim_verb = list("exclaims") // Used when sentence ends in a !
var/list/shout_verb = list("shouts", "yells", "screams") //Used when a sentence ends in !!
var/list/whisper_verb = list("says quietly", "says softly", "whispers") // Optional. When not specified speech_verb + quietly/softly is used instead.
var/list/whisper_verb = null // Optional. When not specified speech_verb + quietly/softly is used instead.
var/list/signlang_verb = list("signs") // list of emotes that might be displayed if this language has NONVERBAL or SIGNLANG flags
var/list/sing_verb = list("sings")
var/list/sign_adv_length = list(" briefly", " a short message", " a message", " a lengthy message", " a very lengthy message") // 5 messages changing depending on the length of the signed language. A space should be added before the sentence as shown
+3 -3
View File
@@ -161,7 +161,7 @@
return headsets[headsets[1]]
return null
/mob/living/carbon/human/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio, whisper)
/mob/living/carbon/human/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio, whisper, var/is_singing = FALSE)
if(!whisper && (paralysis || InStasis()))
whisper(message, speaking)
return TRUE
@@ -218,12 +218,12 @@
if(R.talk_into(src,message,null,verb,speaking))
successful_radio += R
if("whisper")
whisper(message, speaking)
whisper(message, speaking, is_singing)
return TRUE
else if(message_mode)
var/obj/item/device/radio/R = get_radio()
if(R)
used_radios += l_ear
used_radios += R
if(R.talk_into(src, message, message_mode, verb, speaking))
successful_radio += R
+5 -4
View File
@@ -156,7 +156,7 @@ proc/get_radio_key_from_channel(var/channel)
return FONT_SIZE_LARGE
return null
/mob/living/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/say(var/message, var/datum/language/speaking = null, var/verb, var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE)
if(stat)
if(stat == DEAD)
return say_dead(message)
@@ -209,8 +209,9 @@ proc/get_radio_key_from_channel(var/channel)
return
speaking.broadcast(src,trim(message))
return 1
verb = say_quote(message, speaking, is_singing, whisper)
if(!verb)
verb = say_quote(message, speaking, is_singing, whisper)
if(is_muzzled())
to_chat(src, "<span class='danger'>You're muzzled and cannot speak!</span>")
@@ -245,7 +246,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, whisper))
if(handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name, successful_radio, whisper, is_singing))
return 1
var/list/handle_v = handle_speech_sound()
+17 -3
View File
@@ -16,13 +16,24 @@
whisper(message)
/mob/living/proc/whisper(var/message, var/datum/language/speaking)
/mob/living/proc/whisper(var/message, var/datum/language/speaking, var/is_singing = FALSE)
if(is_muzzled())
to_chat(src, SPAN_DANGER("You're muzzled and cannot speak!"))
return
var/had_speaking = !!speaking
speaking = speaking ? speaking : parse_language(message)
if(!had_speaking)
if(speaking)
message = copytext(message,2+length(speaking.key))
else
speaking = get_default_language()
if(length(message) >= 1 && copytext(message, 1, 2) == "%")
if(speaking?.sing_verb)
is_singing = TRUE
var/message_range = 1
var/eavesdropping_range = 2
var/watching_range = 5
@@ -35,8 +46,11 @@
not_heard = "[whisper_text] something"
else
var/adverb = pick("quietly", "softly")
whisper_text = "[speaking.speech_verb] [adverb]"
not_heard = "[speaking.speech_verb] something [adverb]"
var/speak_text = pick(speaking.speech_verb)
if(is_singing && speaking?.sing_verb)
speak_text = pick(speaking.sing_verb)
whisper_text = "[speak_text] [adverb]"
not_heard = "[speak_text] something [adverb]"
var/list/listening = list(src)