From 83253fc1f7a6ae5614aa7c1cef981d03bbbbe66d Mon Sep 17 00:00:00 2001 From: skull132 Date: Thu, 23 Jun 2016 16:44:33 +0300 Subject: [PATCH] Chat markup (#441) Enables you to use Skype/Discord style mark-up in OOC, LOOC, and IC chat. --- code/__HELPERS/text.dm | 25 +++++++++++++++++++++++++ code/controllers/configuration.dm | 6 ++++++ code/game/verbs/ooc.dm | 4 ++++ code/modules/mob/living/say.dm | 2 ++ code/modules/mob/say.dm | 2 ++ config/example/config.txt | 3 +++ html/changelogs/skull132-markup.yml | 6 ++++++ 7 files changed, 48 insertions(+) create mode 100644 html/changelogs/skull132-markup.yml diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index d6b4b8ffe7a..876fb3cb226 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -314,3 +314,28 @@ proc/TextPreview(var/string,var/len=40) if(C && (C.prefs.toggles & CHAT_NOICONS)) return tagdesc return "[tagdesc]" + +// For processing simple markup, similar to what Skype and Discord use. +// Enabled from a config setting. +/proc/process_chat_markup(var/message, var/list/ignore_tags = list()) + if (!config.allow_chat_markup) + return message + + if (!message) + return "" + + var/list/tags = list("*" = list("", ""), + "/" = list("", ""), + "_" = list("", "")) + + if (ignore_tags && ignore_tags.len) + tags -= ignore_tags + + for (var/tag in tags) + var/marker_begin = tags[tag][1] + var/marker_end = tags[tag][2] + + var/regex/markup = new("(\\[tag])(\[^\\[tag]\]*)(\\[tag])", "g") + message = markup.Replace(message, "[marker_begin]$2[marker_end]") + + return message diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 9a1f3606545..1910a7e8cfa 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -222,6 +222,9 @@ var/list/gamemode_cache = list() var/client_warn_version = 0 var/client_warn_message = "" + //Mark-up enabling + var/allow_chat_markup = 0 + /datum/configuration/New() var/list/L = typesof(/datum/game_mode) - /datum/game_mode for (var/T in L) @@ -712,6 +715,9 @@ var/list/gamemode_cache = list() if("client_warn_message") config.client_warn_message = value + if("allow_chat_markup") + config.allow_chat_markup = 1 + else log_misc("Unknown setting in configuration: '[name]'") diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 4cd6dbabe71..050ab7c76f4 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -49,6 +49,8 @@ if(holder.rights & R_ADMIN) ooc_style = "admin" + msg = process_chat_markup(msg, list("*")) + for(var/client/target in clients) if(target.prefs.toggles & CHAT_OOC) var/display_name = src.key @@ -113,6 +115,8 @@ if(source.stat != DEAD) display_name = source.name + msg = process_chat_markup(msg, list("*")) + var/prefix var/admin_stuff for(var/client/target in clients) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index d8629a2187a..01afb8f5876 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -144,6 +144,8 @@ proc/get_radio_key_from_channel(var/channel) var/message_mode = parse_message_mode(message, "headset") + message = process_chat_markup(message) + switch(copytext(message,1,2)) if("*") return emote(copytext(message,2)) if("^") return custom_emote(1, copytext(message,2)) diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 899d0a9c9b4..7bd465363d3 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -58,6 +58,8 @@ usr << "You have deadchat muted." return + message = process_chat_markup(message) + say_dead_direct("[pick("complains","moans","whines","laments","blubbers")], \"[message]\"", src) /mob/proc/say_understands(var/mob/other,var/datum/language/speaking = null) diff --git a/config/example/config.txt b/config/example/config.txt index 43fa6ae3873..d10728b64f6 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -388,3 +388,6 @@ STARLIGHT 0 #CLIENT_ERROR_MESSAGE Your version of BYOND is not supported. Please upgrade. #CLIENT_WARN_VERSION 510 #CLIENT_WARN_MESSAGE BYOND is really close to releasing 510 beta as a stable release, please take time to try it out. Reports are that the client preforms better then the version you are using, and also handles network lag better. Shortly after it's release we will end up using 510 client features and you will be forced to update. + +## Uncomment to enable simple Skype/Discord style markup over OOC, LOOC, and say. +#ALLOW_CHAT_MARKUP diff --git a/html/changelogs/skull132-markup.yml b/html/changelogs/skull132-markup.yml new file mode 100644 index 00000000000..c4d36e97b60 --- /dev/null +++ b/html/changelogs/skull132-markup.yml @@ -0,0 +1,6 @@ +author: Skull132 + +delete-after: True + +changes: + - rscadd: "Adds Skype/Discord style mark-up to OOC, LOOC, and say. The tags that can be used are: *, /, and _. Bold is disabled by default over OOC channels."