forked from Skyrat-SS13/Skyrat-tg
-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathtts_mob_Hear.dm
67 lines (47 loc) · 2.59 KB
/
tts_mob_Hear.dm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/mob/proc/Hear_tts(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, list/message_mods, message_range)
if(!SSttsSilero.is_enabled)
return
if(!isliving(src) && !isobserver(src))
return
if(!client)
return
if(HAS_TRAIT(speaker, TRAIT_SIGN_LANG))
return
if(!message_language)
return
var/is_custom_say_emote_without_message = (MODE_CUSTOM_SAY_ERASE_INPUT in message_mods)
if(is_custom_say_emote_without_message)
return
if(stat == UNCONSCIOUS || stat == HARD_CRIT)
return
if(!radio_freq && !LOCAL_TTS_ENABLED(src) || radio_freq && !RADIO_TTS_ENABLED(src))
return
var/atom/movable/virtualspeaker/virtual_speaker = speaker
var/atom/movable/real_speaker = istype(virtual_speaker) ? virtual_speaker.source : speaker
var/self_radio = radio_freq && src == real_speaker
if(self_radio)
return
var/is_speaker_whispering = (WHISPER_MODE in message_mods)
var/can_hear_whisper = get_dist(speaker, src) <= message_range || isobserver(src)
if(is_speaker_whispering && !can_hear_whisper)
return
var/effect = issilicon(real_speaker) ? SOUND_EFFECT_ROBOT : SOUND_EFFECT_NONE
if(radio_freq)
effect = issilicon(real_speaker) ? SOUND_EFFECT_RADIO_ROBOT : SOUND_EFFECT_RADIO
else if(SPAN_COMMAND in spans)
effect = issilicon(real_speaker) ? SOUND_EFFECT_MEGAPHONE_ROBOT : SOUND_EFFECT_MEGAPHONE
var/traits = TTS_TRAIT_RATE_MEDIUM
if(is_speaker_whispering)
traits &= TTS_TRAIT_PITCH_WHISPER
var/message_tts = translate_language(language = message_language, raw_message = raw_message)
INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(tts_cast), speaker, src, message_tts, real_speaker.tts_seed, !radio_freq, effect, traits)
/mob/living/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, list/message_mods, message_range)
var/static/regex/plus_sign_replace = new(@"\+", "g")
var/plussless_message = plus_sign_replace.Replace(raw_message, "")
. = ..(message, speaker, message_language, plussless_message, radio_freq, spans, message_mods, message_range)
Hear_tts(message, speaker, message_language, raw_message, radio_freq, spans, message_mods, message_range)
/mob/dead/observer/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, list/message_mods, message_range)
var/static/regex/plus_sign_replace = new(@"\+", "g")
var/plussless_message = plus_sign_replace.Replace(raw_message, "")
. = ..(message, speaker, message_language, plussless_message, radio_freq, spans, message_mods, message_range)
Hear_tts(message, speaker, message_language, raw_message, radio_freq, spans, message_mods, message_range)