diff --git a/code/controllers/configuration_ch.dm b/code/controllers/configuration_ch.dm
index 077a65b8e9..928ffc25d9 100644
--- a/code/controllers/configuration_ch.dm
+++ b/code/controllers/configuration_ch.dm
@@ -5,6 +5,7 @@
/datum/configuration
var/discord_restriction = 0
var/use_jobwhitelist = 0
+ var/emojis = 1
/hook/startup/proc/read_ch_config()
var/list/Lines = file2list("config/config.txt")
@@ -35,4 +36,6 @@
config.discord_restriction = 1
if ("use_jobwhitelist")
config.use_jobwhitelist = 1
+ if ("disable_emojis")
+ config.emojis = 0
return 1
diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm
index f17a7c27ae..2081ea1f4f 100644
--- a/code/datums/helper_datums/teleport.dm
+++ b/code/datums/helper_datums/teleport.dm
@@ -205,7 +205,7 @@
if(telemob.can_be_drop_prey && telenommer.can_be_drop_pred)
return 1
obstructed = 1
- else if(!isturf(destination.loc) || !destination.x || !destination.y || !destination.z) //If we're inside something or outside universe
+ else if(!destination.x || !destination.y || !destination.z) //If we're inside something or outside universe
obstructed = 1
to_chat(teleatom, "Something is blocking way on the other side!")
if(obstructed)
diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm
index 84eb9fe853..69c4675d4f 100644
--- a/code/game/verbs/ooc.dm
+++ b/code/game/verbs/ooc.dm
@@ -12,13 +12,18 @@
src << "Guests may not use OOC."
return
- //Chompstation ADD
+ msg = sanitize(msg)
+ if(!msg) return
+
+ //Chompstation ADD - Emoji Parsing
+ msg = emoji_parse(msg)
+
+
+ //Chompstation ADD - IC in OOC Warning filter
if((copytext(msg, 1, 2) in list(".",";",":","#")) || (findtext(lowertext(copytext(msg, 1, 5)), "say")))
if(alert("Your message \"[msg]\" looks like it was meant for in game communication, say it in OOC?", "Meant for OOC?", "No", "Yes") != "Yes")
return
- msg = sanitize(msg)
- if(!msg) return
if(!is_preference_enabled(/datum/client_preference/show_ooc))
src << "You have OOC muted."
@@ -96,6 +101,9 @@
if(!msg)
return
+ //Chompstation ADD - Emoji Parsing
+ msg = emoji_parse(msg)
+
if(!is_preference_enabled(/datum/client_preference/show_looc))
src << "You have LOOC muted."
return
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index 4ff94877f4..ff861e2c88 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -106,6 +106,8 @@
log_adminpm(msg,src,C)
send2adminirc("Reply: [key_name(src)]->[key_name(C)]: [html_decode(msg)]")
+ msg = emoji_parse(msg) //Chompstation ADD - Emojis
+
//we don't use message_admins here because the sender/receiver might get it too
for(var/client/X in admins)
@@ -126,6 +128,8 @@
return
sanitize(msg)
+ msg = emoji_parse(msg) //Chompstation ADD - Emojis
+
// Handled on Bot32's end, unsure about other bots
// if(length(msg) > 400) // TODO: if message length is over 400, divide it up into seperate messages, the message length restriction is based on IRC limitations. Probably easier to do this on the bots ends.
diff --git a/code/modules/emoji/emoji_parse.dm b/code/modules/emoji/emoji_parse.dm
new file mode 100644
index 0000000000..3a0281f3f0
--- /dev/null
+++ b/code/modules/emoji/emoji_parse.dm
@@ -0,0 +1,30 @@
+/proc/emoji_parse(text)
+ . = text
+ if(!config.emojis)
+ return
+ var/static/list/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/icons/emoji.dmi b/icons/emoji.dmi
new file mode 100644
index 0000000000..d609bc29f4
Binary files /dev/null and b/icons/emoji.dmi differ
diff --git a/vorestation.dme b/vorestation.dme
index 7ed00d1b51..685cc538ca 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -1661,6 +1661,7 @@
#include "code\modules\economy\price_list.dm"
#include "code\modules\economy\retail_scanner.dm"
#include "code\modules\economy\TradeDestinations.dm"
+#include "code\modules\emoji\emoji_parse.dm"
#include "code\modules\entopics_vr\alternate_appearance.dm"
#include "code\modules\entopics_vr\entopics.dm"
#include "code\modules\error_handler\_defines.dm"