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")