This commit is contained in:
Shifty/Anthomansland
2020-06-14 13:54:23 +02:00
parent eaf124a77c
commit 3869a50318
5 changed files with 41 additions and 15 deletions

View File

@@ -95,8 +95,8 @@
if (!ismob(target))
extra_classes |= "small"
// Append radio icon if from a virtual speaker
if (extra_classes.Find("virtual-speaker"))
// Append radio icon if comes from a radio
if (extra_classes.Find("spoken_into_radio"))
var/image/r_icon = image('icons/chat_icons.dmi', icon_state = "radio")
text = "\icon[r_icon] " + text
@@ -172,13 +172,14 @@
* * spans - Additional classes to be added to the message
* * message_mode - Bitflags relating to the mode of the message
*/
/mob/proc/create_chat_message(atom/movable/speaker, datum/language/message_language, raw_message, mode)
var/extra_classes = list()
/mob/proc/create_chat_message(atom/movable/speaker, datum/language/message_language, raw_message, mode, list/existing_extra_classes)
// Check for virtual speakers (aka hearing a message through a radio)
if (istype(speaker, /atom/movable/virtualspeaker))
if (existing_extra_classes.Find("radio"))
return
var/list/extra_classes = list()
extra_classes += existing_extra_classes
if (mode == SPEECH_MODE_WHISPER)
extra_classes |= "small"
@@ -249,3 +250,9 @@
return "[rgb(x,m,c)]C8"
if(5)
return "[rgb(c,m,x)]C8"
/client/verb/toggle_runechat_outline()
set category = "OOC"
set name = "Toggle Runechat Outlines"
toggle_runechat_outlines = !toggle_runechat_outlines
to_chat(mob, "<span class='notice'>Runechat outlines are now [toggle_runechat_outlines ? "enabled" : "disabled"].</span>")

View File

@@ -164,5 +164,7 @@
if(data)
wrapper_classes=data.Copy()
wrapper_classes.Add("radio")
/datum/speech/proc/set_language(var/lang_id)
language = all_languages[lang_id]

View File

@@ -546,9 +546,3 @@ NOTE: You will only be polled about this role once per round. To change your ch
/client/proc/handle_hear_voice(var/mob/origin)
if(prefs.hear_voicesound)
mob.playsound_local(get_turf(origin), get_sfx("voice"),50,1)
/client/verb/toggle_runechat_outlight()
set category = "OOC"
set name = "Toggle Runechat Outlines"
toggle_runechat_outlines = !toggle_runechat_outlines
to_chat(mob, "<span class='notice'>Runechat outlines are now [toggle_runechat_outlines ? "enabled" : "disabled"].</span>")

View File

@@ -46,6 +46,6 @@
say_testing(src, "/mob/dead/observer/Hear(): CHAT_GHOSTRADIO is disabled, blocking. ([client.prefs.toggles] & [CHAT_GHOSTRADIO]) = [client.prefs.toggles & CHAT_GHOSTRADIO]")
return
if (client?.prefs.mob_chat_on_map && (client.prefs.obj_chat_on_map || ismob(speech.speaker)))
create_chat_message(speech.speaker, speech.language, speech.message, speech.mode)
create_chat_message(speech.speaker, speech.language, speech.message, speech.mode, speech.wrapper_classes)
to_chat(src, "<a href='?src=\ref[src];follow=\ref[source]'>(Follow)</a> [rendered_speech]")

View File

@@ -74,6 +74,19 @@ var/list/department_radio_keys = list(
":&" = "borerchat", "#&" = "borerchat", ".&" = "borerchat",
)
var/list/headset_modes = list(
"Response Team",
"Command",
"Service",
"Engineering",
"Security",
"Syndicate",
"Supply",
"Medical",
"Science",
"department",
)
/mob/living/proc/get_default_language()
if(!default_language)
if(languages && languages.len)
@@ -181,6 +194,8 @@ var/list/department_radio_keys = list(
treat_speech(speech)
var/radio_return = get_speech_flags(message_mode)
if (speech_was_spoken_into_radio(message_mode))
speech.wrapper_classes.Add("spoken_into_radio")
if(radio_return & NOPASS) //There's a whisper() message_mode, no need to continue the proc if that is called
whisper(speech.message, speech.language)
returnToPool(speech)
@@ -263,9 +278,9 @@ var/list/department_radio_keys = list(
// Runechat messages
if (ismob(speech.speaker) && client?.prefs.mob_chat_on_map && stat != UNCONSCIOUS && !is_deaf())
create_chat_message(speech.speaker, speech.language, speech.message, speech.mode)
create_chat_message(speech.speaker, speech.language, speech.message, speech.mode, speech.wrapper_classes)
else if (client?.prefs.obj_chat_on_map && stat != UNCONSCIOUS && !is_deaf())
create_chat_message(speech.speaker, speech.language, speech.message, speech.mode)
create_chat_message(speech.speaker, speech.language, speech.message, speech.mode, speech.wrapper_classes)
if (ismob(speech.speaker))
show_message(rendered_message, type, deaf_message, deaf_type, src)
else if (!client.prefs.no_goonchat_for_obj || length_char(speech.message) > client?.prefs.max_chat_length) // Objects : only display if no goonchat on map or if the runemessage is too small.
@@ -463,6 +478,14 @@ var/list/department_radio_keys = list(
return 0
/mob/living/proc/speech_was_spoken_into_radio(var/message_mode)
if (message_mode in headset_modes)
return TRUE
switch (message_mode)
if(MODE_HEADSET, MODE_SECURE_HEADSET, MODE_R_HAND, MODE_L_HAND, MODE_INTERCOM, MODE_BINARY)
return TRUE
return FALSE
/mob/living/proc/radio(var/datum/speech/speech, var/message_mode)
switch(message_mode)
if(MODE_R_HAND)