From a4a02953126804a2ba5f8164e2a026818b37d5a1 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 7 Jun 2020 21:27:36 -0700 Subject: [PATCH] ok --- code/datums/chatmessage.dm | 2 +- code/game/say.dm | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/code/datums/chatmessage.dm b/code/datums/chatmessage.dm index 7a78e1d001..73d3e69ac4 100644 --- a/code/datums/chatmessage.dm +++ b/code/datums/chatmessage.dm @@ -114,7 +114,7 @@ // BYOND Bug #2563917 // Construct text var/static/regex/html_metachars = new(@"&[A-Za-z]{1,7};", "g") - var/complete_text = "[text]" + var/complete_text = "[owner.say_emphasis(text)]" var/mheight = WXH_TO_HEIGHT(owned_by.MeasureText(replacetext(complete_text, html_metachars, "m"), null, CHAT_MESSAGE_WIDTH)) approx_lines = max(1, mheight / CHAT_MESSAGE_APPROX_LHEIGHT) diff --git a/code/game/say.dm b/code/game/say.dm index 187994f432..3fee6eaee2 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -59,7 +59,7 @@ GLOBAL_LIST_INIT(freqtospan, list( var/endspanpart = "" //Message - var/messagepart = " [lang_treat(speaker, message_language, raw_message, spans, message_mode)]" + var/messagepart = " [say_emphasis(lang_treat(speaker, message_language, raw_message, spans, message_mode))]" var/languageicon = "" var/datum/language/D = GLOB.language_datum_instances[message_language] @@ -96,6 +96,21 @@ GLOBAL_LIST_INIT(freqtospan, list( return "[say_mod(input, message_mode)][spanned ? ", \"[spanned]\"" : ""]" // Citadel edit [spanned ? ", \"[spanned]\"" : ""]" +/atom/movable/proc/say_emphasis(input) + input = encode_html_emphasis(input, "|", "i") + input = encode_html_emphasis(input, "_", "u") + input = encode_html_emphasis(input, "+", "b") + return input + +/** + * Replaces a character inside message with html tags. Note that html var must not include brackets. + * Will not create an open html tag if it would not have a closing one. + */ +/atom/movable/proc/encode_html_emphasis(input, char, html) + var/regex/search = regex("([REGEX_QUOTE(char)])(\\b.*\\b)([REGEX_QUOTE(char)])", "g") + return search.Replace_char(message, "<[html]>$2") + + /// Quirky citadel proc for our custom sayverbs to strip the verb out. Snowflakey as hell, say rewrite 3.0 when? /atom/movable/proc/quoteless_say_quote(input, list/spans = list(speech_span), message_mode) var/pos = findtext(input, "*")