April sync (#360)
* Maps and things no code/icons * helpers defines globalvars * Onclick world.dm orphaned_procs * subsystems Round vote and shuttle autocall done here too * datums * Game folder * Admin - chatter modules * clothing - mining * modular computers - zambies * client * mob level 1 * mob stage 2 + simple_animal * silicons n brains * mob stage 3 + Alien/Monkey * human mobs * icons updated * some sounds * emitter y u no commit * update tgstation.dme * compile fixes * travis fixes Also removes Fast digest mode, because reasons. * tweaks for travis Mentors are broke again Also fixes Sizeray guns * oxygen loss fix for vore code. * removes unused code * some code updates * bulk fixes * further fixes * outside things * whoops. * Maint bar ported * GLOBs.
This commit is contained in:
+32
-39
@@ -3,7 +3,7 @@
|
||||
This file has the basic atom/movable level speech procs.
|
||||
And the base of the send_speech() proc, which is the core of saycode.
|
||||
*/
|
||||
var/list/freqtospan = list(
|
||||
GLOBAL_LIST_INIT(freqtospan, list(
|
||||
"1351" = "sciradio",
|
||||
"1355" = "medradio",
|
||||
"1357" = "engradio",
|
||||
@@ -13,33 +13,38 @@ var/list/freqtospan = list(
|
||||
"1353" = "comradio",
|
||||
"1447" = "aiprivradio",
|
||||
"1213" = "syndradio",
|
||||
"1337" = "centcomradio"
|
||||
)
|
||||
"1337" = "centcomradio",
|
||||
"1215" = "redteamradio",
|
||||
"1217" = "blueteamradio"
|
||||
))
|
||||
|
||||
/atom/movable/proc/say(message)
|
||||
/atom/movable/proc/say(message, datum/language/language = null)
|
||||
if(!can_speak())
|
||||
return
|
||||
if(message == "" || !message)
|
||||
return
|
||||
var/list/spans = get_spans()
|
||||
send_speech(message, 7, src, , spans)
|
||||
if(!language)
|
||||
language = get_default_language()
|
||||
send_speech(message, 7, src, , spans, message_language=language)
|
||||
|
||||
/atom/movable/proc/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans)
|
||||
/atom/movable/proc/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode)
|
||||
return
|
||||
|
||||
/atom/movable/proc/can_speak()
|
||||
return 1
|
||||
|
||||
/atom/movable/proc/send_speech(message, range = 7, obj/source = src, bubble_type, list/spans)
|
||||
var/rendered = compose_message(src, languages_spoken, message, , spans)
|
||||
for(var/atom/movable/AM in get_hearers_in_view(range, src))
|
||||
AM.Hear(rendered, src, languages_spoken, message, , spans)
|
||||
/atom/movable/proc/send_speech(message, range = 7, obj/source = src, bubble_type, list/spans, datum/language/message_language = null, message_mode)
|
||||
var/rendered = compose_message(src, message_language, message, , spans)
|
||||
for(var/_AM in get_hearers_in_view(range, source))
|
||||
var/atom/movable/AM = _AM
|
||||
AM.Hear(rendered, src, message_language, message, , spans)
|
||||
|
||||
//To get robot span classes, stuff like that.
|
||||
/atom/movable/proc/get_spans()
|
||||
return list()
|
||||
|
||||
/atom/movable/proc/compose_message(atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans)
|
||||
/atom/movable/proc/compose_message(atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode)
|
||||
//This proc uses text() because it is faster than appending strings. Thanks BYOND.
|
||||
//Basic span
|
||||
var/spanpart1 = "<span class='[radio_freq ? get_radio_span(radio_freq) : "game say"]'>"
|
||||
@@ -48,13 +53,13 @@ var/list/freqtospan = list(
|
||||
//Radio freq/name display
|
||||
var/freqpart = radio_freq ? "\[[get_radio_name(radio_freq)]\] " : ""
|
||||
//Speaker name
|
||||
var/namepart = "[speaker.GetVoice()][speaker.get_alt_name()]"
|
||||
var/namepart = "[speaker.GetVoice()][speaker.get_alt_name()]"
|
||||
//End name span.
|
||||
var/endspanpart = "</span>"
|
||||
//Message
|
||||
var/messagepart = " <span class='message'>[lang_treat(speaker, message_langs, raw_message, spans)]</span></span>"
|
||||
var/messagepart = " <span class='message'>[lang_treat(speaker, message_language, raw_message, spans, message_mode)]</span></span>"
|
||||
|
||||
return "[spanpart1][spanpart2][freqpart][compose_track_href(speaker, namepart)][namepart][compose_job(speaker, message_langs, raw_message, radio_freq)][endspanpart][messagepart]"
|
||||
return "[spanpart1][spanpart2][freqpart][compose_track_href(speaker, namepart)][namepart][compose_job(speaker, message_language, raw_message, radio_freq)][endspanpart][messagepart]"
|
||||
|
||||
/atom/movable/proc/compose_track_href(atom/movable/speaker, message_langs, raw_message, radio_freq)
|
||||
return ""
|
||||
@@ -62,7 +67,7 @@ var/list/freqtospan = list(
|
||||
/atom/movable/proc/compose_job(atom/movable/speaker, message_langs, raw_message, radio_freq)
|
||||
return ""
|
||||
|
||||
/atom/movable/proc/say_quote(input, list/spans=list())
|
||||
/atom/movable/proc/say_quote(input, list/spans=list(), message_mode)
|
||||
if(!input)
|
||||
return "says, \"...\"" //not the best solution, but it will stop a large number of runtimes. The cause is somewhere in the Tcomms code
|
||||
var/ending = copytext(input, length(input))
|
||||
@@ -77,46 +82,34 @@ var/list/freqtospan = list(
|
||||
|
||||
return "[verb_say], \"[input]\""
|
||||
|
||||
/atom/movable/proc/lang_treat(atom/movable/speaker, message_langs, raw_message, list/spans)
|
||||
if(languages_understood & message_langs)
|
||||
/atom/movable/proc/lang_treat(atom/movable/speaker, datum/language/language, raw_message, list/spans, message_mode)
|
||||
if(has_language(language))
|
||||
var/atom/movable/AM = speaker.GetSource()
|
||||
if(AM) //Basically means "if the speaker is virtual"
|
||||
if(AM.verb_say != speaker.verb_say || AM.verb_ask != speaker.verb_ask || AM.verb_exclaim != speaker.verb_exclaim || AM.verb_yell != speaker.verb_yell) //If the saymod was changed
|
||||
return speaker.say_quote(raw_message, spans)
|
||||
return AM.say_quote(raw_message, spans)
|
||||
return speaker.say_quote(raw_message, spans, message_mode)
|
||||
return AM.say_quote(raw_message, spans, message_mode)
|
||||
else
|
||||
return speaker.say_quote(raw_message, spans)
|
||||
else if((message_langs & HUMAN) || (message_langs & RATVAR)) //it's human or ratvar language
|
||||
return speaker.say_quote(raw_message, spans, message_mode)
|
||||
else if(language)
|
||||
var/atom/movable/AM = speaker.GetSource()
|
||||
if(message_langs & HUMAN)
|
||||
raw_message = stars(raw_message)
|
||||
if(message_langs & RATVAR)
|
||||
raw_message = text2ratvar(raw_message)
|
||||
var/datum/language/D = new language
|
||||
raw_message = D.scramble(raw_message)
|
||||
if(AM)
|
||||
return AM.say_quote(raw_message, spans)
|
||||
return AM.say_quote(raw_message, spans, message_mode)
|
||||
else
|
||||
return speaker.say_quote(raw_message, spans)
|
||||
else if(message_langs & MONKEY)
|
||||
return "chimpers."
|
||||
else if(message_langs & ALIEN)
|
||||
return "hisses."
|
||||
else if(message_langs & ROBOT)
|
||||
return "beeps rapidly."
|
||||
else if(message_langs & DRONE)
|
||||
return "chitters."
|
||||
else if(message_langs & SWARMER)
|
||||
return "hums."
|
||||
return speaker.say_quote(raw_message, spans, message_mode)
|
||||
else
|
||||
return "makes a strange sound."
|
||||
|
||||
/proc/get_radio_span(freq)
|
||||
var/returntext = freqtospan["[freq]"]
|
||||
var/returntext = GLOB.freqtospan["[freq]"]
|
||||
if(returntext)
|
||||
return returntext
|
||||
return "radio"
|
||||
|
||||
/proc/get_radio_name(freq)
|
||||
var/returntext = radiochannelsreverse["[freq]"]
|
||||
var/returntext = GLOB.reverseradiochannels["[freq]"]
|
||||
if(returntext)
|
||||
return returntext
|
||||
return "[copytext("[freq]", 1, 4)].[copytext("[freq]", 4, 5)]"
|
||||
|
||||
Reference in New Issue
Block a user