From 960372f6eac90e6ae2498fffa6e14feb3c206977 Mon Sep 17 00:00:00 2001
From: CygnusB <39594514+MalricB@users.noreply.github.com>
Date: Wed, 23 Sep 2020 23:28:48 -0300
Subject: [PATCH] lmao
penis music
---
code/datums/chatmessage.dm | 2 +-
code/game/say.dm | 14 +++++++++++++-
code/modules/mob/living/emote.dm | 1 +
code/modules/mob/say.dm | 2 +-
code/modules/mob/say_vr.dm | 4 ++--
5 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/code/datums/chatmessage.dm b/code/datums/chatmessage.dm
index 695c1477..02f43a12 100644
--- a/code/datums/chatmessage.dm
+++ b/code/datums/chatmessage.dm
@@ -116,7 +116,7 @@
// BYOND Bug #2563917
// Construct text
var/static/regex/html_metachars = new(@"&[A-Za-z]{1,7};", "g")
- var/complete_text = ""
+ var/complete_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 2bb67dfc..9c2ef0a9 100644
--- a/code/game/say.dm
+++ b/code/game/say.dm
@@ -57,7 +57,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]
@@ -94,6 +94,18 @@ GLOBAL_LIST_INIT(freqtospan, list(
return "[say_mod(input, message_mode)][spanned ? ", \"[spanned]\"" : ""]"
// Citadel edit [spanned ? ", \"[spanned]\"" : ""]"
+#define ENCODE_HTML_EPHASIS(input, char, html, varname) \
+ var/static/regex/##varname = regex("[char]{2}(.+?)[char]{2}", "g");\
+ input = varname.Replace_char(input, "<[html]>$1[html]>")
+
+/atom/movable/proc/say_emphasis(input)
+ ENCODE_HTML_EPHASIS(input, "\\|", "i", italics)
+ ENCODE_HTML_EPHASIS(input, "\\+", "b", bold)
+ ENCODE_HTML_EPHASIS(input, "_", "u", underline)
+ return input
+
+#undef ENCODE_HTML_EPHASIS
+
/atom/movable/proc/lang_treat(atom/movable/speaker, datum/language/language, raw_message, list/spans, message_mode, no_quote = FALSE)
if(has_language(language))
var/atom/movable/AM = speaker.GetSource()
diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm
index af65d317..43293556 100644
--- a/code/modules/mob/living/emote.dm
+++ b/code/modules/mob/living/emote.dm
@@ -443,6 +443,7 @@
message = params
if(type_override)
emote_type = type_override
+ message = user.say_emphasis(message)
. = ..()
message = null
emote_type = EMOTE_VISIBLE
diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm
index 5c795242..4d338dd3 100644
--- a/code/modules/mob/say.dm
+++ b/code/modules/mob/say.dm
@@ -69,7 +69,7 @@
if(name != real_name)
alt_name = " (died as [real_name])"
- var/spanned = say_quote(message)
+ var/spanned = say_quote(say_emphasis(message))
message = emoji_parse(message)
var/rendered = "DEAD: [name][alt_name] [emoji_parse(spanned)]"
log_talk(message, LOG_SAY, tag="DEAD")
diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm
index 4bbeef70..3772dae5 100644
--- a/code/modules/mob/say_vr.dm
+++ b/code/modules/mob/say_vr.dm
@@ -99,7 +99,7 @@ proc/get_top_level_mob(var/mob/S)
return FALSE
user.log_message(message, INDIVIDUAL_EMOTE_LOG)
- message = "[user] " + "[message]"
+ message = "[user] " + "[user.say_emphasis(message)]"
for(var/mob/M in GLOB.dead_mob_list)
if(!M.client || isnewplayer(M))
@@ -170,7 +170,7 @@ proc/get_top_level_mob(var/mob/S)
return FALSE
user.log_message(message, INDIVIDUAL_EMOTE_LOG)
- message = "[user] " + "[message]"
+ message = "[user] " + "[user.say_emphasis(message)]"
if(emote_type == EMOTE_AUDIBLE)
user.audible_message(message=message,hearing_distance=1, no_ghosts = TRUE)