mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-25 14:00:18 +01:00
fixes some talking related bugs (#13147)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user