From eea4872e93455ae1ad31314b82e98297850d4754 Mon Sep 17 00:00:00 2001 From: Contrabang <91113370+Contrabang@users.noreply.github.com> Date: Sat, 30 Nov 2024 10:13:26 -0500 Subject: [PATCH] Fixes Stacking with the Check AI Laws verb (#27497) --- code/datums/ai_laws_datums.dm | 12 ++++++++++++ code/modules/admin/misc_admin_procs.dm | 22 +++++++++++++--------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/code/datums/ai_laws_datums.dm b/code/datums/ai_laws_datums.dm index a86f29ff416..c6a6c65802a 100644 --- a/code/datums/ai_laws_datums.dm +++ b/code/datums/ai_laws_datums.dm @@ -236,6 +236,18 @@ else to_chat(who, "[law.get_index()]. [law.law]") +/datum/ai_laws/proc/return_laws_text() + . = list() + sort_laws() + for(var/datum/ai_law/law in sorted_laws) + if(law == zeroth_law_borg) + continue + if(law == zeroth_law) + . += "[law.get_index()]. [law.law]" + else + . += "[law.get_index()]. [law.law]" + + /******************** * Stating Laws * ********************/ diff --git a/code/modules/admin/misc_admin_procs.dm b/code/modules/admin/misc_admin_procs.dm index c3b49402286..9101b703668 100644 --- a/code/modules/admin/misc_admin_procs.dm +++ b/code/modules/admin/misc_admin_procs.dm @@ -795,30 +795,34 @@ GLOBAL_VAR_INIT(disable_explosions, FALSE) /datum/admins/proc/output_ai_laws() var/ai_number = 0 + var/list/messages = list() for(var/mob/living/silicon/S in GLOB.mob_list) + if(istype(S, /mob/living/silicon/decoy) && !S.client) + continue ai_number++ if(isAI(S)) - to_chat(usr, "AI [key_name(S, TRUE)]'s laws:") + messages += "AI [key_name(S, TRUE)]'s laws:" else if(isrobot(S)) var/mob/living/silicon/robot/R = S - to_chat(usr, "CYBORG [key_name(S, TRUE)]'s [R.connected_ai?"(Slaved to: [R.connected_ai])":"(Independent)"] laws:") + messages += "CYBORG [key_name(S, TRUE)]'s [R.connected_ai?"(Slaved to: [R.connected_ai])":"(Independent)"] laws:" else if(ispAI(S)) var/mob/living/silicon/pai/P = S - to_chat(usr, "pAI [key_name(S, TRUE)]'s laws:") - to_chat(usr, "[P.pai_law0]") + messages += "pAI [key_name(S, TRUE)]'s laws:" + messages += "[P.pai_law0]" if(P.pai_laws) - to_chat(usr, "[P.pai_laws]") + messages += "[P.pai_laws]" continue // Skip showing normal silicon laws for pAIs - they don't have any else - to_chat(usr, "SILICON [key_name(S, TRUE)]'s laws:") + messages += "SILICON [key_name(S, TRUE)]'s laws:" if(S.laws == null) - to_chat(usr, "[key_name(S, TRUE)]'s laws are null. Contact a coder.") + messages += "[key_name(S, TRUE)]'s laws are null. Contact a coder." else - S.laws.show_laws(usr) + messages += S.laws.return_laws_text() if(!ai_number) - to_chat(usr, "No AI's located.")//Just so you know the thing is actually working and not just ignoring you. + messages += "No AI's located." //Just so you know the thing is actually working and not just ignoring you. + to_chat(usr, chat_box_examine(messages.Join("\n"))) log_admin("[key_name(usr)] checked the AI laws") message_admins("[key_name_admin(usr)] checked the AI laws")