/client/verb/ooc(msg as text) set name = "OOC" set category = "OOC" if(say_disabled) //This is here to try to identify lag problems to_chat(usr, "Speech is currently admin-disabled.") return if(!mob) return if(IsGuestKey(key)) to_chat(src, "Guests may not use OOC.") return msg = sanitize(msg) if(!msg) return if(!is_preference_enabled(/datum/client_preference/show_ooc)) to_chat(src, "You have OOC muted.") return if(!holder) if(!config.ooc_allowed) to_chat(src, "OOC is globally muted.") return if(!config.dooc_allowed && (mob.stat == DEAD)) to_chat(usr, "OOC for dead mobs has been turned off.") return if(prefs.muted & MUTE_OOC) to_chat(src, "You cannot use OOC (muted).") return if(findtext(msg, "byond://") && !config.allow_byond_links) to_chat(src, "Advertising other servers is not allowed.") log_admin("[key_name(src)] has attempted to advertise in OOC: [msg]") message_admins("[key_name_admin(src)] has attempted to advertise in OOC: [msg]") return if(findtext(msg, "discord.gg") && !config.allow_discord_links) to_chat(src, "Advertising discords is not allowed.") log_admin("[key_name(src)] has attempted to advertise a discord server in OOC: [msg]") message_admins("[key_name_admin(src)] has attempted to advertise a discord server in OOC: [msg]") return if((findtext(msg, "http://") || findtext(msg, "https://")) && !config.allow_url_links) to_chat(src, "Posting external links is not allowed.") log_admin("[key_name(src)] has attempted to post a link in OOC: [msg]") message_admins("[key_name_admin(src)] has attempted to post a link in OOC: [msg]") return log_ooc(msg, src) if(msg) handle_spam_prevention(MUTE_OOC) var/ooc_style = "everyone" if(holder && !holder.fakekey) ooc_style = "elevated" //YawnWider Block Edit Start if(holder.rights & R_MOD && !(holder.rights & R_BAN)) //Moderator ooc_style = "moderator" if(holder.rights & R_DEBUG && !(holder.rights & R_BAN)) //Developers ooc_style = "developer" if(holder.rights & R_ADMIN && holder.rights & R_BAN) //Admins ooc_style = "admin" //YawnWider Block Edit End for(var/client/target in GLOB.clients) if(target.is_preference_enabled(/datum/client_preference/show_ooc)) if(target.is_key_ignored(key)) // If we're ignored by this person, then do nothing. continue var/display_name = src.key if(holder) if(holder.fakekey) if(target.holder) display_name = "[holder.fakekey]/([src.key])" else display_name = holder.fakekey if(holder && !holder.fakekey && (holder.rights & R_ADMIN|R_FUN|R_EVENT) && config.allow_admin_ooccolor && (src.prefs.ooccolor != initial(src.prefs.ooccolor))) // keeping this for the badmins to_chat(target, "" + create_text_tag("ooc", "OOC:", target) + " [display_name]: [msg]") else to_chat(target, "" + create_text_tag("ooc", "OOC:", target) + " [display_name]: [msg]") /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 to_chat(usr, "Speech is currently admin-disabled.") return if(!mob) return if(IsGuestKey(key)) to_chat(src, "Guests may not use OOC.") return msg = sanitize(msg) if(!msg) return if(!is_preference_enabled(/datum/client_preference/show_looc)) to_chat(src, "You have LOOC muted.") return if(!holder) if(!config.looc_allowed) to_chat(src, "LOOC is globally muted.") return if(!config.dooc_allowed && (mob.stat == DEAD)) to_chat(usr, "OOC for dead mobs has been turned off.") return if(prefs.muted & MUTE_OOC) to_chat(src, "You cannot use OOC (muted).") return if(findtext(msg, "byond://") && !config.allow_byond_links) to_chat(src, "Advertising other servers is not allowed.") log_admin("[key_name(src)] has attempted to advertise in OOC: [msg]") message_admins("[key_name_admin(src)] has attempted to advertise in OOC: [msg]") return if(findtext(msg, "discord.gg") && !config.allow_discord_links) to_chat(src, "Advertising discords is not allowed.") log_admin("[key_name(src)] has attempted to advertise a discord server in OOC: [msg]") message_admins("[key_name_admin(src)] has attempted to advertise a discord server in OOC: [msg]") return if((findtext(msg, "http://") || findtext(msg, "https://")) && !config.allow_url_links) to_chat(src, "Posting external links is not allowed.") log_admin("[key_name(src)] has attempted to post a link in OOC: [msg]") message_admins("[key_name_admin(src)] has attempted to post a link in OOC: [msg]") return log_looc(msg,src) if(msg) handle_spam_prevention(MUTE_OOC) var/mob/source = mob.get_looc_source() var/turf/T = get_turf(source) if(!T) return var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0) var/list/m_viewers = in_range["mobs"] var/list/receivers = list() //Clients, not mobs. var/list/r_receivers = list() var/display_name = key if(holder && holder.fakekey) display_name = holder.fakekey if(mob.stat != DEAD) display_name = mob.name //VOREStation Add - Resleeving shenanigan prevention if(ishuman(mob)) var/mob/living/carbon/human/H = mob if(H.original_player && H.original_player != H.ckey) //In a body not their own display_name = "[H.mind.name] (as [H.name])" //VOREStation Add End // Everyone in normal viewing range of the LOOC for(var/mob/viewer in m_viewers) if(viewer.client && viewer.client.is_preference_enabled(/datum/client_preference/show_looc)) receivers |= viewer.client else if(istype(viewer,/mob/observer/eye)) // For AI eyes and the like var/mob/observer/eye/E = viewer if(E.owner && E.owner.client) receivers |= E.owner.client // Admins with RLOOC displayed who weren't already in for(var/client/admin in GLOB.admins) if(!(admin in receivers) && admin.is_preference_enabled(/datum/client_preference/holder/show_rlooc)) r_receivers |= admin // Send a message for(var/client/target in receivers) var/admin_stuff = "" if(target in GLOB.admins) admin_stuff += "/([key])" to_chat(target, "" + create_text_tag("looc", "LOOC:", target) + " [display_name][admin_stuff]: [msg]") for(var/client/target in r_receivers) var/admin_stuff = "/([key])([admin_jump_link(mob, target.holder)])" to_chat(target, "" + create_text_tag("looc", "LOOC:", target) + " (R)[display_name][admin_stuff]: [msg]") /mob/proc/get_looc_source() return src /mob/living/silicon/ai/get_looc_source() if(eyeobj) return eyeobj return src