diff --git a/code/game/world.dm b/code/game/world.dm
index 88166c4b..37c3fac2 100644
--- a/code/game/world.dm
+++ b/code/game/world.dm
@@ -33,6 +33,7 @@ GLOBAL_VAR(restart_counter)
#endif
load_admins()
+ load_patreons()
LoadVerbs(/datum/verbs/menu)
if(CONFIG_GET(flag/usewhitelist))
load_whitelist()
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 78196e6a..c565c44e 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -206,6 +206,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/current_tab = 0
var/unlock_content = 0
+ var/vip = 0
var/list/ignoring = list()
@@ -244,6 +245,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
unlock_content = C.IsByondMember()
if(unlock_content)
max_save_slots = 16
+ if(clientckey in GLOB.patreons)
+ vip = 1
var/loaded_preferences_successfully = load_preferences()
if(loaded_preferences_successfully)
if(load_character())
diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm
index 8a233025..c79eb418 100644
--- a/code/modules/client/verbs/ooc.dm
+++ b/code/modules/client/verbs/ooc.dm
@@ -56,9 +56,13 @@ GLOBAL_VAR_INIT(normal_ooc_colour, "#002eb8")
mob.log_talk(raw_msg, LOG_OOC, tag="(OOC)")
var/keyname = key
+
if(prefs.unlock_content)
if(prefs.toggles & MEMBER_PUBLIC)
keyname = "[icon2html('icons/member_content.dmi', world, "blag")][keyname]"
+
+ if(prefs.vip) //patreon supporter!
+ keyname = "[icon2html('hyperstation/icons/chat/reward.dmi', world, "vip")] [keyname]"
//The linkify span classes and linkify=TRUE below make ooc text get clickable chat href links if you pass in something resembling a url
for(var/client/C in GLOB.clients)
if(C.prefs.chat_toggles & CHAT_OOC)
diff --git a/config/patreons.txt b/config/patreons.txt
new file mode 100644
index 00000000..b9b54a59
--- /dev/null
+++ b/config/patreons.txt
@@ -0,0 +1,5 @@
+//Patreon Supporters go here, and get a special little icon in OOC, Keep each name to one line
+
+User1
+User2
+User3
\ No newline at end of file
diff --git a/hyperstation/code/modules/patreon/patreon.dm b/hyperstation/code/modules/patreon/patreon.dm
new file mode 100644
index 00000000..932ccd73
--- /dev/null
+++ b/hyperstation/code/modules/patreon/patreon.dm
@@ -0,0 +1,15 @@
+#define PATREONFILE "[global.config.directory]/patreons.txt"
+
+GLOBAL_LIST_EMPTY(patreons)
+
+/proc/load_patreons()
+ GLOB.patreons = list()
+ for(var/line in world.file2list(PATREONFILE))
+ if(!line)
+ continue
+ GLOB.patreons += ckey(line)
+
+/proc/check_patreons(var/ckey)
+ if(!GLOB.patreons)
+ return FALSE
+ . = (ckey in GLOB.patreons)
diff --git a/hyperstation/icons/chat/chat.dmi b/hyperstation/icons/chat/chat.dmi
new file mode 100644
index 00000000..1457f7f2
Binary files /dev/null and b/hyperstation/icons/chat/chat.dmi differ
diff --git a/hyperstation/icons/chat/reward.dmi b/hyperstation/icons/chat/reward.dmi
new file mode 100644
index 00000000..1fe18a20
Binary files /dev/null and b/hyperstation/icons/chat/reward.dmi differ
diff --git a/icons/obj/watercloset.dmi b/icons/obj/watercloset.dmi
index e8cecbc8..bf4b9ed4 100644
Binary files a/icons/obj/watercloset.dmi and b/icons/obj/watercloset.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index e80c01fc..0bcfa440 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2889,6 +2889,7 @@
#include "hyperstation\code\modules\antagonists\werewolf\werewolf.dm"
#include "hyperstation\code\modules\clothing\head.dm"
#include "hyperstation\code\modules\crafting\recipes.dm"
+#include "hyperstation\code\modules\patreon\patreon.dm"
#include "hyperstation\code\modules\resize\holder_micro.dm"
#include "hyperstation\code\modules\resize\resizing.dm"
#include "hyperstation\code\modules\resize\sizegun.dm"