diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index 4da1103f4c7..0c835aa6e89 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -29,6 +29,10 @@ #define MODE_WHISPER "whisper" #define MODE_WHISPER_CRIT "whispercrit" +//SKYRAT custom verb +#define MODE_CUSTOM_SAY "custom_say" +//SKYRAT custom sayverb end. + #define MODE_DEPARTMENT "department" #define MODE_KEY_DEPARTMENT "h" #define MODE_TOKEN_DEPARTMENT ":h" diff --git a/code/game/say.dm b/code/game/say.dm index 507edb2fc43..b1f3402831a 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -79,7 +79,7 @@ GLOBAL_LIST_INIT(freqtospan, list( /atom/movable/proc/compose_job(atom/movable/speaker, message_langs, raw_message, radio_freq) return "" -/atom/movable/proc/say_mod(input, list/message_mods = list()) +/atom/movable/proc/say_mod(input, message_mods) //SKYRAT custom sayverb old code: /atom/movable/proc/say_mod(input, list/message_mods = list()) var/ending = copytext_char(input, -1) if(copytext_char(input, -2) == "!!") return verb_yell @@ -100,23 +100,32 @@ GLOBAL_LIST_INIT(freqtospan, list( spans |= SPAN_YELL var/spanned = attach_spans(input, spans) - return "[say_mod(input, message_mods)], \"[spanned]\"" + return "[say_mod(input, message_mods)][spanned ? ", \"[spanned]\"" : ""]" +//SKYRAT custom verb edit. [spanned ? ", \"[spanned]\"" : ""]" + +//SKYRAT custom sayverb +/atom/movable/proc/quoteless_say_quote(input, list/spans = list(speech_span), message_mods) + if((input[1] == "!") && (length_char(input) > 1)) + return "" + var/pos = findtext(input, "*") + return pos? copytext(input, pos + 1) : input +//SKYRAT custom sayverb end. /atom/movable/proc/lang_treat(atom/movable/speaker, datum/language/language, raw_message, list/spans, list/message_mods = list(), no_quote = FALSE) if(has_language(language)) var/atom/movable/AM = speaker.GetSource() if(AM) //Basically means "if the speaker is virtual" - return no_quote ? raw_message : AM.say_quote(raw_message, spans, message_mods) + return no_quote ? AM.quoteless_say_quote(raw_message, spans, message_mods) : AM.say_quote(raw_message, spans, message_mods) //SKYRAT custom sayverb old code: return no_quote ? raw_message : AM.say_quote(raw_message, spans, message_mods) else - return no_quote ? raw_message : speaker.say_quote(raw_message, spans, message_mods) + return no_quote ? speaker.quoteless_say_quote(raw_message, spans, message_mods) : speaker.say_quote(raw_message, spans, message_mods) //SKYRAT custom sayverb old code: return no_quote ? raw_message : speaker.say_quote(raw_message, spans, message_mods) else if(language) var/atom/movable/AM = speaker.GetSource() var/datum/language/D = GLOB.language_datum_instances[language] raw_message = D.scramble(raw_message) if(AM) - return no_quote ? raw_message : AM.say_quote(raw_message, spans, message_mods) + return no_quote ? AM.quoteless_say_quote(raw_message, spans, message_mods) : AM.say_quote(raw_message, spans, message_mods) //SKYRAT custom sayverb old code: return no_quote ? raw_message : AM.say_quote(raw_message, spans, message_mods) else - return no_quote ? raw_message : speaker.say_quote(raw_message, spans, message_mods) + return no_quote ? speaker.quoteless_say_quote(raw_message, spans, message_mods) : speaker.say_quote(raw_message, spans, message_mods) //SKYRAT custom sayverb old code: return no_quote ? raw_message : speaker.say_quote(raw_message, spans, message_mods) else return "makes a strange sound." @@ -132,8 +141,22 @@ GLOBAL_LIST_INIT(freqtospan, list( return returntext return "[copytext_char("[freq]", 1, 4)].[copytext_char("[freq]", 4, 5)]" +//SKYRAT custom sayverb +/atom/movable/proc/attach_spans(input, list/spans) + if((input[1] == "!") && (length(input) > 2)) + return + var/customsayverb = findtext(input, "*") + if(customsayverb) + input = capitalize(copytext(input, customsayverb + length(input[customsayverb]))) + if(input) + return "[message_spans_start(spans)][input]" + else + return +//SKYRAT custom sayverb end. +/* Old code: /proc/attach_spans(input, list/spans) return "[message_spans_start(spans)][input]" +*/ /proc/message_spans_start(list/spans) var/output = "