From 4248405b7e5ec7dde2f7ef1c8575869ef2c29b7e Mon Sep 17 00:00:00 2001 From: linnpap <77863456+linnpap@users.noreply.github.com> Date: Wed, 28 Jul 2021 16:27:20 -0500 Subject: [PATCH] [NON-MODULAR] [BOUNTY] AI Quality Of Life Improvements (#7063) * ais can see *mes now * more stuff * muh snake_case --- code/datums/emotes.dm | 12 +++++++ code/game/machinery/hologram.dm | 32 +++++++++++++++++++ .../verbs/code/modules/client/verbs/looc.dm | 18 +++++++++++ 3 files changed, 62 insertions(+) diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index bbdda98a056..a67708c97ac 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -127,6 +127,18 @@ if(ghost.stat == DEAD && ghost.client && user.client && (ghost.client.prefs.chat_toggles & CHAT_GHOSTSIGHT) && !(ghost in viewers(user_turf, null))) ghost.show_message("[FOLLOW_LINK(ghost, user)] [dchatmsg]") + //SKYRAT EDIT ADDITION BEGIN - AI QoL + for(var/mob/ai in GLOB.ai_list) + //ai.show_message("[!(ai.stat == DEAD)]") + var/aiEye_turf + for(var/mob/camera/ai_eye/AI_eye as anything in GLOB.aiEyes) + aiEye_turf = get_turf(AI_eye) + if(!ai.client) + continue + if(!(ai.stat == DEAD) && ai.client && (get_dist(user_turf, aiEye_turf)<8)) + ai.show_message("[dchatmsg]") + //SKYRAT EDIT ADDITION END - AI QoL + if(emote_type == EMOTE_AUDIBLE) user.audible_message(msg, deaf_message = "You see how [user] [msg]", audible_message_flags = EMOTE_MESSAGE) else diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 966459a9d96..fe58f5d7786 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -201,6 +201,38 @@ Possible to do for anyone motivated enough: else if(in_range(user, src) || isobserver(user)) . += span_notice("The status display reads: Current projection range: [holo_range] units.") + //SKYRAT EDIT ADDITION BEGIN - AI QoL + var/obj/effect/overlay/holo_pad_hologram/holo + var/line + var/mob/living/silicon/ai/aiPlayer + for(var/mob/living/silicon/ai/master in masters) + if(masters[master]) + holo = masters[master] + if(LAZYLEN(masters)) + for(var/I in masters) + var/mob/living/master = I + var/mob/living/silicon/ai/AI = master + if(!istype(AI)) + AI = null + else + aiPlayer = AI + if(aiPlayer) + if(aiPlayer.client) + if(length(aiPlayer.client.prefs.features["silicon_flavor_text"])) + var/message = aiPlayer.client.prefs.features["silicon_flavor_text"] + if(length_char(message) <= 40) + line = "[message]" + else + line = "[copytext_char(message, 1, 37)]... More..." + line += " \[OOC\]" + if(LAZYLEN(masters)) + if(holo.Impersonation) + . += holo.Impersonation.examine(user) + else + . += "*---------*\nThis is [aiPlayer.name].\n*---------*" + . += line + //SKYRAT EDIT ADDITION END - AI QoL + /obj/machinery/holopad/attackby(obj/item/P, mob/user, params) if(default_deconstruction_screwdriver(user, "holopad_open", "holopad0", P)) return diff --git a/modular_skyrat/modules/verbs/code/modules/client/verbs/looc.dm b/modular_skyrat/modules/verbs/code/modules/client/verbs/looc.dm index 63f5bd8fecd..ceb3e812a49 100644 --- a/modular_skyrat/modules/verbs/code/modules/client/verbs/looc.dm +++ b/modular_skyrat/modules/verbs/code/modules/client/verbs/looc.dm @@ -39,6 +39,24 @@ mob.log_talk(msg,LOG_OOC, tag="LOOC") var/list/heard = get_hearers_in_view(7, get_top_level_mob(src.mob)) + + //SKYRAT EDIT ADDITION BEGIN - AI QoL + var/ai_heard_it = FALSE + //so the ai can post looc text + if(istype(mob,/mob/living/silicon/ai)) + for(var/mob/camera/ai_eye/eye_of_ai as anything in GLOB.aiEyes) + heard = get_hearers_in_view(7, eye_of_ai) + //so the ai can see looc text + for(var/mob/camera/ai_eye/eye_of_ai as anything in GLOB.aiEyes) + for(var/mob/creature in heard) //checks if an ai has already heard it + if(istype(creature, /mob/living/silicon/ai)) + ai_heard_it = TRUE + if(ai_heard_it == FALSE) //i dont wanna run an entire fuckin for loop if it turns out the ai can already see the text + for(var/mob/creature in heard) + if(creature == eye_of_ai) + heard += get_top_level_mob(src.mob) + //SKYRAT EDIT ADDITION END - AI QoL + var/list/admin_seen = list() for(var/mob/M in heard) if(!M.client)