Merge branch 'master' into mapping-and-tweaks

This commit is contained in:
evilew
2025-05-09 20:48:33 +02:00
13 changed files with 438 additions and 32 deletions
+23 -30
View File
@@ -37,12 +37,13 @@ GLOBAL_VAR_INIT(normal_looc_colour, "#6699CC")
to_chat(src, "<B>Advertising other servers is not allowed.</B>")
log_admin("[key_name(src)] has attempted to advertise in LOOC: [msg]")
return
if(mob.stat)
to_chat(src, "<span class='danger'>You cannot use LOOC while unconscious or dead.</span>")
return
if(isdead(mob))
to_chat(src, "<span class='danger'>You cannot use LOOC while ghosting.</span>")
return
//if(mob.stat)
// to_chat(src, "<span class='danger'>You cannot use LOOC while unconscious or dead.</span>")
// return
//if(isdead(mob))
// to_chat(src, "<span class='danger'>You cannot use LOOC while ghosting.</span>")
// return
//GS13 - removed LOOC limits for ghosts (paraphrased from old code)
if(HAS_TRAIT(mob, TRAIT_LOOC_MUTE))
to_chat(src, "<span class='danger'>You cannot use LOOC right now.</span>")
return
@@ -52,29 +53,21 @@ GLOBAL_VAR_INIT(normal_looc_colour, "#6699CC")
mob.log_talk(msg,LOG_OOC, tag="LOOC")
var/list/heard = get_hearers_in_view(7, get_top_level_mob(src.mob))
for(var/mob/M in heard)
if(!M.client)
// GS13 - LOOC tweaks - Observers, mobs in containers can properly hear LOOC
// Search everything in the view for anything that might be a mob, or contain a mob.
var/list/client/targets = list()
var/list/turf/in_view = list()
for(var/turf/viewed_turf in view(get_turf(mob)))
in_view[viewed_turf] = TRUE
for(var/client/client in GLOB.clients)
if(!client.mob || !(client.prefs.toggles & CHAT_OOC) || (client in GLOB.admins))
continue
var/client/C = M.client
if (C in GLOB.admins)
continue //they are handled after that
if(in_view[get_turf(client.mob)])
targets |= client
to_chat(client, "<span class='looc'><span class='prefix'>LOOC:</span> <EM>[src.mob.name]:</EM> <span class='message'>[msg]</span></b></font>")
if (isobserver(M))
continue //Also handled later.
if(C.prefs.chat_toggles & CHAT_OOC)
if(GLOB.LOOC_COLOR)
to_chat(C, "<font color='[GLOB.LOOC_COLOR]'><b><span class='prefix'>LOOC:</span> <EM>[src.mob.name]:</EM> <span class='message'>[msg]</span></b></font>")
else
to_chat(C, "<span class='looc'><span class='prefix'>LOOC:</span> <EM>[src.mob.name]:</EM> <span class='message'>[msg]</span></span>")
for(var/client/C in GLOB.admins)
if(C.prefs.chat_toggles & CHAT_OOC)
var/prefix = "(R)LOOC"
if (C.mob in heard)
prefix = "LOOC"
if(GLOB.LOOC_COLOR)
to_chat(C, "<font color='[GLOB.LOOC_COLOR]'><b>[ADMIN_FLW(usr)] <span class='prefix'>[prefix]:</span> <EM>[src.key]/[src.mob.name]:</EM> <span class='message'>[msg]</span></b></font>")
else
to_chat(C, "<span class='looc'>[ADMIN_FLW(usr)] <span class='prefix'>[prefix]:</span> <EM>[src.key]/[src.mob.name]:</EM> <span class='message'>[msg]</span></span>")
for(var/client/client in GLOB.admins)
if(!(client.prefs.toggles & CHAT_OOC))
continue
var/prefix = "(R)LOOC"
to_chat(client, "<span class='looc'><span class='prefix'>[prefix]:</span> <EM>[ADMIN_LOOKUPFLW(usr)]:</EM> <span class='message'>[msg]</span></span>", avoid_highlighting = (client == src))