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"