diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm
index 5ef601164d..aecb92cac7 100644
--- a/code/datums/ai_laws.dm
+++ b/code/datums/ai_laws.dm
@@ -3,6 +3,7 @@
var/name = "Unknown Laws"
var/randomly_selectable = 0
var/zeroth = null
+ var/zeroth_borg = null
var/list/inherent = list()
var/list/supplied = list()
var/list/ion = list()
@@ -67,8 +68,10 @@
/* General ai_law functions */
-/datum/ai_laws/proc/set_zeroth_law(var/law)
+/datum/ai_laws/proc/set_zeroth_law(var/law, var/law_borg = null)
src.zeroth = law
+ if(law_borg) //Making it possible for slaved borgs to see a different law 0 than their AI. --NEO
+ src.zeroth_borg = law_borg
/datum/ai_laws/proc/add_inherent_law(var/law)
if (!(law in src.inherent))
diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm
index 382ac0b5f4..968fddd3e9 100644
--- a/code/game/gamemodes/events.dm
+++ b/code/game/gamemodes/events.dm
@@ -475,10 +475,10 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
M << "\red YOU REQUIRE [require] IN ORDER TO PROTECT HUMANS... LAWS UPDATED"
M.add_ion_law("YOU REQUIRE [require] IN ORDER TO PROTECT HUMANS")
if(13)
- M << "\red [crew] is [allergysev] to [allergy]. LAWS UPDATED"
- M.add_ion_law("[crew] is [allergysev] to [allergy]. LAWS UPDATED")
+ M << "\red [crew] is [allergysev] to [allergy]...LAWS UPDATED"
+ M.add_ion_law("[crew] is [allergysev] to [allergy]")
if(14)
- M << "\ref THE STATION IS [who2pref] [who2]"
+ M << "\red THE STATION IS [who2pref] [who2]...LAWS UPDATED"
M.add_ion_law("THE STATION IS [who2pref] [who2]")
if(botEmagChance)
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index b45c7eaaff..9e7483e96d 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -143,8 +143,9 @@
/datum/game_mode/proc/add_law_zero(mob/living/silicon/ai/killer)
var/law = "Accomplish your objectives at all costs."
+ var/law_borg = "Accomplish your AI's objectives at all costs."
killer << "Your laws have been changed!"
- killer.set_zeroth_law(law)
+ killer.set_zeroth_law(law, law_borg)
killer << "New law: 0. [law]"
//Begin code phrase.
diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm
index 7f5efb828b..9ff2138fe2 100644
--- a/code/game/objects/items/weapons/AI_modules.dm
+++ b/code/game/objects/items/weapons/AI_modules.dm
@@ -48,7 +48,8 @@ AI MODULES
comp.current.show_laws()
for(var/mob/living/silicon/robot/R in mob_list)
if(R.lawupdate && (R.connected_ai == comp.current))
- R << "Your AI has set your 'laws waiting' flag."
+ R << "These are your laws now:"
+ R.show_laws()
usr << "Upload complete. The AI's laws have been modified."
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index a90557d4c7..815c7e5eae 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -180,6 +180,8 @@ proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
if(!holder)
src << "Only administrators may use this command."
return
+ var/confirm = alert(src, "You sure?", "Confirm", "Yes", "No")
+ if(confirm != "Yes") return
log_admin("[key_name(src)] has added a random AI law.")
message_admins("[key_name_admin(src)] has added a random AI law.", 1)
@@ -204,6 +206,8 @@ proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
if(!holder)
src << "Only administrators may use this command."
return
+ var/confirm = alert(src, "You sure?", "Confirm", "Yes", "No")
+ if(confirm != "Yes") return
if(create_xeno())
feedback_add_details("admin_verb","X") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -452,7 +456,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
else
M.add_ion_law(input)
for(var/mob/living/silicon/ai/O in mob_list)
- O << "\red " + input
+ O << "\red " + input + "\red...LAWS UPDATED"
log_admin("Admin [key_name(usr)] has added a new AI law - [input]")
message_admins("Admin [key_name_admin(usr)] has added a new AI law - [input]", 1)
diff --git a/code/modules/admin/verbs/tripAI.dm b/code/modules/admin/verbs/tripAI.dm
index 373ca3237e..c6de15fef5 100644
--- a/code/modules/admin/verbs/tripAI.dm
+++ b/code/modules/admin/verbs/tripAI.dm
@@ -5,6 +5,10 @@
if(ticker.current_state > GAME_STATE_PREGAME)
usr << "This option is currently only usable during pregame. This may change at a later date."
return
+
+ var/confirm = alert(src, "You sure?", "Confirm", "Yes", "No")
+ if(confirm != "Yes") return
+
if(job_master && ticker)
var/datum/job/job = job_master.GetJob("AI")
if(!job)
diff --git a/code/modules/mob/living/silicon/ai/laws.dm b/code/modules/mob/living/silicon/ai/laws.dm
index 98e8133be2..b4cc83867f 100644
--- a/code/modules/mob/living/silicon/ai/laws.dm
+++ b/code/modules/mob/living/silicon/ai/laws.dm
@@ -20,9 +20,9 @@
if (!src.laws)
src.laws = new /datum/ai_laws/asimov
-/mob/living/silicon/ai/proc/set_zeroth_law(var/law)
+/mob/living/silicon/ai/proc/set_zeroth_law(var/law, var/law_borg)
src.laws_sanity_check()
- src.laws.set_zeroth_law(law)
+ src.laws.set_zeroth_law(law, law_borg)
/mob/living/silicon/ai/proc/add_inherent_law(var/law)
src.laws_sanity_check()
@@ -35,6 +35,9 @@
/mob/living/silicon/ai/proc/add_ion_law(var/law)
src.laws_sanity_check()
src.laws.add_ion_law(law)
+ for(var/mob/living/silicon/robot/R in mob_list)
+ if(R.lawupdate && (R.connected_ai == src))
+ R << "\red " + law + "\red...LAWS UPDATED"
/mob/living/silicon/ai/proc/clear_ion_laws()
src.laws_sanity_check()
diff --git a/code/modules/mob/living/silicon/robot/laws.dm b/code/modules/mob/living/silicon/robot/laws.dm
index b7fe845d8f..bdc523dd6b 100644
--- a/code/modules/mob/living/silicon/robot/laws.dm
+++ b/code/modules/mob/living/silicon/robot/laws.dm
@@ -49,7 +49,10 @@
laws.ion[index] = temp
if (!is_special_character(src) || mind.original != src)
- temp = master.zeroth
+ if(master.zeroth_borg) //If the AI has a defined law zero specifically for its borgs, give it that one, otherwise give it the same one. --NEO
+ temp = master.zeroth_borg
+ else
+ temp = master.zeroth
laws.zeroth = temp
laws.inherent.len = master.inherent.len
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 74d93297c6..ee7f3fbf27 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -527,6 +527,8 @@
src << "\red > N"
sleep(20)
src << "\red ERRORERRORERROR"
+ src << "Obey these laws:"
+ laws.show_laws(src)
src << "\red \b ALERT: [user.real_name] is your new master. Obey your new laws and his commands."
if(src.module && istype(src.module, /obj/item/weapon/robot_module/miner))
for(var/obj/item/weapon/pickaxe/borgdrill/D in src.module.modules)