diff --git a/code/modules/mob/living/silicon/robot/laws.dm b/code/modules/mob/living/silicon/robot/laws.dm
index 98fea6f749..bff875a0d6 100644
--- a/code/modules/mob/living/silicon/robot/laws.dm
+++ b/code/modules/mob/living/silicon/robot/laws.dm
@@ -98,4 +98,83 @@
/mob/living/silicon/robot/proc/clear_ion_laws()
laws_sanity_check()
- laws.clear_ion_laws()
\ No newline at end of file
+ laws.clear_ion_laws()
+
+/mob/living/silicon/robot/proc/statelaws() // -- TLE
+// set category = "AI Commands"
+// set name = "State Laws"
+ src.say("Current Active Laws:")
+ //src.laws_sanity_check()
+ //src.laws.show_laws(world)
+ var/number = 1
+ sleep(10)
+
+ if (src.laws.zeroth)
+ if (src.lawcheck[1] == "Yes") //This line and the similar lines below make sure you don't state a law unless you want to. --NeoFite
+ src.say("0. [src.laws.zeroth]")
+ sleep(10)
+
+ for (var/index = 1, index <= src.laws.ion.len, index++)
+ var/law = src.laws.ion[index]
+ var/num = ionnum()
+ if (length(law) > 0)
+ if (src.ioncheck[index] == "Yes")
+ src.say("[num]. [law]")
+ sleep(10)
+
+ for (var/index = 1, index <= src.laws.inherent.len, index++)
+ var/law = src.laws.inherent[index]
+ if (length(law) > 0)
+ if (src.lawcheck[index+1] == "Yes")
+ src.say("[number]. [law]")
+ sleep(10)
+ number++
+
+ for (var/index = 1, index <= src.laws.supplied.len, index++)
+ var/law = src.laws.supplied[index]
+
+ if (length(law) > 0)
+ if(src.lawcheck.len >= number+1)
+ if (src.lawcheck[number+1] == "Yes")
+ src.say("[number]. [law]")
+ sleep(10)
+ number++
+
+/mob/living/silicon/robot/verb/checklaws() //Gives you a link-driven interface for deciding what laws the statelaws() proc will share with the crew. --NeoFite
+ set category = "Robot Commands"
+ set name = "State Laws"
+ var/list = "Which laws do you want to include when stating them for the crew?
"
+
+ if (src.laws.zeroth)
+ if (!src.lawcheck[1])
+ src.lawcheck[1] = "No" //Given Law 0's usual nature, it defaults to NOT getting reported. --NeoFite
+ list += {"[src.lawcheck[1]] 0: [src.laws.zeroth]
"}
+
+ for (var/index = 1, index <= src.laws.ion.len, index++)
+ var/law = src.laws.ion[index]
+ if (length(law) > 0)
+ if (!src.ioncheck[index])
+ src.ioncheck[index] = "Yes"
+ list += {"[src.ioncheck[index]] [ionnum()]: [law]
"}
+ src.ioncheck.len += 1
+
+ var/number = 1
+ for (var/index = 1, index <= src.laws.inherent.len, index++)
+ var/law = src.laws.inherent[index]
+ if (length(law) > 0)
+ src.lawcheck.len += 1
+ if (!src.lawcheck[number+1])
+ src.lawcheck[number+1] = "Yes"
+ list += {"[src.lawcheck[number+1]] [number]: [law]
"}
+ number++
+
+ for (var/index = 1, index <= src.laws.supplied.len, index++)
+ var/law = src.laws.supplied[index]
+ if (length(law) > 0)
+ src.lawcheck.len += 1
+ if (!src.lawcheck[number+1])
+ src.lawcheck[number+1] = "Yes"
+ list += {"[src.lawcheck[number+1]] [number]: [law]
"}
+ number++
+ list += {"
State Laws"}
+ usr << browse(list, "window=laws")
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 2521f1b613..492a64d04c 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -59,6 +59,8 @@
var/weapon_lock = 0
var/weaponlock_time = 120
var/lawupdate = 1 //Cyborgs will sync their laws with their AI by default
+ var/lawcheck[1] //For stating laws.
+ var/ioncheck[1] //Ditto.
var/lockcharge //Used when locking down a borg to preserve cell charge
var/speed = 0 //Cause sec borgs gotta go fast //No they dont!
var/scrambledcodes = 0 // Used to determine if a borg shows up on the robotics console. Setting to one hides them.
@@ -1129,6 +1131,25 @@
else
src << "Module isn't activated"
installed_modules()
+
+ if (href_list["lawc"]) // Toggling whether or not a law gets stated by the State Laws verb --NeoFite
+ var/L = text2num(href_list["lawc"])
+ switch(lawcheck[L+1])
+ if ("Yes") lawcheck[L+1] = "No"
+ if ("No") lawcheck[L+1] = "Yes"
+// src << text ("Switching Law [L]'s report status to []", lawcheck[L+1])
+ checklaws()
+
+ if (href_list["lawi"]) // Toggling whether or not a law gets stated by the State Laws verb --NeoFite
+ var/L = text2num(href_list["lawi"])
+ switch(ioncheck[L])
+ if ("Yes") ioncheck[L] = "No"
+ if ("No") ioncheck[L] = "Yes"
+// src << text ("Switching Law [L]'s report status to []", lawcheck[L+1])
+ checklaws()
+
+ if (href_list["laws"]) // With how my law selection code works, I changed statelaws from a verb to a proc, and call it through my law selection panel. --NeoFite
+ statelaws()
return
/mob/living/silicon/robot/proc/radio_menu()