diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 0501caf3db1..127acb23565 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -109,6 +109,7 @@ var/rename_cyborg = 0 var/ooc_during_round = 0 + var/emojis = 0 //Used for modifying movement speed for mobs. //Unversal modifiers @@ -300,6 +301,8 @@ config.rename_cyborg = 1 if("ooc_during_round") config.ooc_during_round = 1 + if("emojis") + config.emojis = 1 if("run_delay") config.run_speed = text2num(value) if("walk_delay") diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 2eb21269c60..20e86957187 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -43,6 +43,8 @@ if(prefs.toggles & MEMBER_PUBLIC) keyname = "[keyname]" + msg = emoji_parse(msg) + for(var/client/C in clients) if(C.prefs.toggles & CHAT_OOC) if(holder) diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 038d9d88553..39b8899c4b2 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -68,6 +68,8 @@ msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN)) if(!msg) return + msg = emoji_parse(msg) + if(C.holder) if(holder) //both are admins C << "Admin PM from-[key_name(src, C, 1)]: [msg]" diff --git a/code/modules/emoji/emoji_parse.dm b/code/modules/emoji/emoji_parse.dm new file mode 100644 index 00000000000..aab9947c89e --- /dev/null +++ b/code/modules/emoji/emoji_parse.dm @@ -0,0 +1,32 @@ +var/list/emojis + +/proc/emoji_parse(text) + if(!config.emojis) + return text + if(!emojis) + emojis = icon_states(icon('icons/emoji.dmi')) + var/parsed = "" + var/pos = 1 + var/search = 0 + var/emoji = "" + while(1) + search = findtext(text, ":", pos) + parsed += copytext(text, pos, search) + if(search) + pos = search + search = findtext(text, ":", pos+1) + if(search) + emoji = lowertext(copytext(text, pos+1, search)) + if(emoji in emojis) + parsed += "" + pos = search + 1 + else + parsed += copytext(text, pos, search) + pos = search + emoji = "" + continue + else + parsed += copytext(text, pos, search) + break + return parsed + diff --git a/config/game_options.txt b/config/game_options.txt index 7f469d35001..00fad47a4de 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -27,6 +27,10 @@ REVIVAL_BRAIN_LIFE -1 #Comment this out if you want OOC to be automatically disabled during the round, it will be enabled during the lobby and after the round end results. OOC_DURING_ROUND +### EMOJI ### +#Comment this out if you want to disable emojis +EMOJIS + ### MOB MOVEMENT ### ## We suggest editing these variables ingame to find a good speed for your server. diff --git a/html/changelogs/JJRcop-OOCemoji.yml b/html/changelogs/JJRcop-OOCemoji.yml new file mode 100644 index 00000000000..fa65b93fb7e --- /dev/null +++ b/html/changelogs/JJRcop-OOCemoji.yml @@ -0,0 +1,4 @@ +author: JJRcop, Nienhaus +delete-after: True +changes: + - rscadd: "Adds emoji to OOC chat." \ No newline at end of file diff --git a/icons/emoji.dmi b/icons/emoji.dmi new file mode 100644 index 00000000000..a78a7e3df79 Binary files /dev/null and b/icons/emoji.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 810fa7af430..0e7af4bc429 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -854,6 +854,7 @@ #include "code\modules\detectivework\evidence.dm" #include "code\modules\detectivework\footprints_and_rag.dm" #include "code\modules\detectivework\scanner.dm" +#include "code\modules\emoji\emoji_parse.dm" #include "code\modules\events\alien_infestation.dm" #include "code\modules\events\anomaly.dm" #include "code\modules\events\anomaly_bluespace.dm"