diff --git a/code/game/verbs/looc.dm b/code/game/verbs/looc.dm
new file mode 100644
index 0000000000..265126d4ad
--- /dev/null
+++ b/code/game/verbs/looc.dm
@@ -0,0 +1,79 @@
+/client/verb/looc(msg as text)
+ set name = "LOOC"
+ set desc = "Local OOC, seen only by those in view."
+ set category = "OOC"
+
+ if(say_disabled) //This is here to try to identify lag problems
+ usr << "\red Speech is currently admin-disabled."
+ return
+
+ if(!mob) return
+ if(IsGuestKey(key))
+ src << "Guests may not use OOC."
+ return
+
+ msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN)
+ if(!msg) return
+
+ if(!(prefs.toggles & CHAT_OOC))
+ src << "\red You have OOC muted."
+ return
+
+ if(!holder)
+ if(!ooc_allowed)
+ src << "\red OOC is globally muted"
+ return
+ if(!dooc_allowed && (mob.stat == DEAD))
+ usr << "\red OOC for dead mobs has been turned off."
+ return
+ if(prefs.muted & MUTE_OOC)
+ src << "\red You cannot use OOC (muted)."
+ return
+ if(handle_spam_prevention(msg,MUTE_OOC))
+ return
+ if(findtext(msg, "byond://"))
+ src << "Advertising other servers is not allowed."
+ log_admin("[key_name(src)] has attempted to advertise in LOOC: [msg]")
+ return
+
+ log_ooc("(LOCAL) [mob.name]/[key] : [msg]")
+
+ var/list/heard = get_hearers_in_view(7, get_top_level_mob(src.mob))
+ for(var/mob/M in heard)
+ if(!M.client)
+ continue
+ var/client/C = M.client
+ if (C in admins)
+ continue //they are handled after that
+
+ if (istype(M,/mob/dead/observer))
+ continue //Also handled later.
+
+ if(C.prefs.toggles & CHAT_OOC)
+// var/display_name = src.key
+// if(holder)
+// if(holder.fakekey)
+// if(C.holder)
+// display_name = "[holder.fakekey]/([src.key])"
+// else
+// display_name = holder.fakekey
+ C << "LOOC: [src.mob.name]: [msg]"
+
+ for(var/client/C in admins)
+ if(C.prefs.toggles & CHAT_OOC)
+ var/prefix = "(R)LOOC"
+ if (C.mob in heard)
+ prefix = "LOOC"
+ C << "[prefix]: [src.key]/[src.mob.name]: [msg]"
+
+ for(var/mob/dead/observer/G in world)
+ if(!G.client)
+ continue
+ var/client/C = G.client
+ if (C in admins)
+ continue //handled earlier.
+ if(C.prefs.toggles & CHAT_OOC)
+ var/prefix = "(G)LOOC"
+ if (C.mob in heard)
+ prefix = "LOOC"
+ C << "[prefix]: [src.key]/[src.mob.name]: [msg]"
diff --git a/tgstation.dme b/tgstation.dme
index 40210c8987..3ca0e84a15 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -824,6 +824,7 @@
#include "code\game\turfs\simulated\floor\warning.dm"
#include "code\game\turfs\space\space.dm"
#include "code\game\turfs\space\transit.dm"
+#include "code\game\verbs\looc.dm"
#include "code\game\verbs\ooc.dm"
#include "code\game\verbs\suicide.dm"
#include "code\game\verbs\who.dm"