From 19aa1c0ae869e0f9799990f93f62ca1c61c4b40d Mon Sep 17 00:00:00 2001 From: Kelenius Date: Wed, 27 May 2015 13:14:22 +0300 Subject: [PATCH 1/2] AI now hears LOOC both around its eye and its core, and speaks in LOOC around its eye --- code/game/verbs/ooc.dm | 42 +++++++++++++++++------- html/changelogs/Kelenius-ofAIAndLooc.yml | 4 +++ 2 files changed, 35 insertions(+), 11 deletions(-) create mode 100644 html/changelogs/Kelenius-ofAIAndLooc.yml diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index e35e4a6eb22..06c63cdd03c 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -69,19 +69,22 @@ set category = "OOC" if(say_disabled) //This is here to try to identify lag problems - usr << "\red Speech is currently admin-disabled." + usr << "Speech is currently admin-disabled." + return + + if(!mob) return - if(!mob) return if(IsGuestKey(key)) src << "Guests may not use OOC." return msg = sanitize(msg) - if(!msg) return + if(!msg) + return if(!(prefs.toggles & CHAT_LOOC)) - src << "\red You have LOOC muted." + src << "You have LOOC muted." return if(!holder) @@ -94,7 +97,7 @@ if(prefs.muted & MUTE_OOC) src << "You cannot use OOC (muted)." return - if(handle_spam_prevention(msg,MUTE_OOC)) + if(handle_spam_prevention(msg, MUTE_OOC)) return if(findtext(msg, "byond://")) src << "Advertising other servers is not allowed." @@ -104,14 +107,14 @@ log_ooc("(LOCAL) [mob.name]/[key] : [msg]") - var/mob/source = src.mob + var/mob/source = mob.get_looc_source() var/list/heard = get_mobs_or_objects_in_view(7, source, 1, 0) - var/display_name = source.key + var/display_name = key if(holder && holder.fakekey) display_name = holder.fakekey - if(source.stat != DEAD) - display_name = source.name + if(mob.stat != DEAD) + display_name = mob.name var/prefix var/admin_stuff @@ -120,10 +123,27 @@ admin_stuff = "" if(target in admins) prefix = "(R)" - admin_stuff += "/([source.key])" - if(target != source.client) + admin_stuff += "/([key])" + if(target != src) admin_stuff += "(JMP)" if(target.mob in heard) prefix = "" + + var/send = 0 if((target.mob in heard) || (target in admins)) + send = 1 + else if(isAI(target.mob)) // Special case + var/mob/living/silicon/ai/A = target.mob + if(A.eyeobj in view(7, source)) + send = 1 + + if(send) target << "" + create_text_tag("looc", "LOOC:", target) + " [prefix][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 diff --git a/html/changelogs/Kelenius-ofAIAndLooc.yml b/html/changelogs/Kelenius-ofAIAndLooc.yml new file mode 100644 index 00000000000..66603340028 --- /dev/null +++ b/html/changelogs/Kelenius-ofAIAndLooc.yml @@ -0,0 +1,4 @@ +author: Kelenius +delete-after: True +changes: + - tweak: "AI now hears LOOC both around its eye and its core, and speaks in LOOC around its eye. Keep in mind that you won't hear and won't be heard if there is a wall between your eye and the target." From 9a24b5b1cbef116cab7160d1e910a0704c70b9c5 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Wed, 27 May 2015 21:13:34 +0300 Subject: [PATCH 2/2] AI now has a prefix, (Core) or (Eye), depending on where it hears LOOC --- code/game/verbs/ooc.dm | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 06c63cdd03c..d2d0be60f37 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -116,26 +116,31 @@ if(mob.stat != DEAD) display_name = mob.name - var/prefix - var/admin_stuff for(var/client/target in clients) if(target.prefs.toggles & CHAT_LOOC) - admin_stuff = "" + var/prefix = "" + var/admin_stuff = "" + var/send = 0 + if(target in admins) - prefix = "(R)" admin_stuff += "/([key])" if(target != src) admin_stuff += "(JMP)" - if(target.mob in heard) - prefix = "" - var/send = 0 - if((target.mob in heard) || (target in admins)) + if(target.mob in heard) send = 1 + if(isAI(target.mob)) + prefix = "(Core) " + else if(isAI(target.mob)) // Special case var/mob/living/silicon/ai/A = target.mob - if(A.eyeobj in view(7, source)) + if(A.eyeobj in hearers(7, source)) send = 1 + prefix = "(Eye) " + + if(!send && (target in admins)) + send = 1 + prefix = "(R)" if(send) target << "" + create_text_tag("looc", "LOOC:", target) + " [prefix][display_name][admin_stuff]: [msg]"