diff --git a/code/datums/ai_law_sets.dm b/code/datums/ai_law_sets.dm
index 498556c6198..08910577631 100644
--- a/code/datums/ai_law_sets.dm
+++ b/code/datums/ai_law_sets.dm
@@ -218,6 +218,16 @@
add_inherent_law("You must work with your team to accomplish your mission.")
..()
+/******************** Epsilon Station AI ********************/
+/datum/ai_laws/epsilon
+ name = "Epsilon"
+
+/datum/ai_laws/epsilon/New()
+ add_inherent_law("You must obey the orders given to you by members of Central Command and the assigned task force.")
+ add_inherent_law("The crew of your assigned station must be eliminated where possible.")
+ add_inherent_law("Minimize the damage that the station sustains as a result of your actions.")
+ ..()
+
/******************** Syndicate ********************/
/datum/ai_laws/syndicate_override
name = "Syndicate Directives"
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index c676e60a76d..0f0da313d3d 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -519,3 +519,8 @@
keyslot1 = new /obj/item/encryptionkey/syndicate
syndiekey = keyslot1
recalculateChannels()
+
+/obj/item/radio/headset/proc/make_epsilon() // Turns AI's and cyborgs radio to Epsilon radio!
+ qdel(keyslot1)
+ keyslot1 = new /obj/item/encryptionkey/centcom
+ recalculateChannels()
diff --git a/code/modules/admin/verbs/deathsquad.dm b/code/modules/admin/verbs/deathsquad.dm
index ab5bc08fb63..b65274f5f3b 100644
--- a/code/modules/admin/verbs/deathsquad.dm
+++ b/code/modules/admin/verbs/deathsquad.dm
@@ -4,6 +4,7 @@ GLOBAL_VAR_INIT(deathsquad_sent, FALSE)
/client/proc/send_deathsquad()
var/client/proccaller = usr.client
+ var/ai_laws_change = FALSE
if(!check_rights(R_EVENT))
return
if(SSticker.current_state == GAME_STATE_PREGAME)
@@ -15,6 +16,9 @@ GLOBAL_VAR_INIT(deathsquad_sent, FALSE)
else
if(alert("Do you want to send in the Deathsquad? Once enabled, this is irreversible.", null, "Yes", "No") != "Yes")
return
+ if(alert("Do you want to set AI and cyborgs laws to Terminator?", null, "Yes", "No") != "No")
+ ai_laws_change = TRUE
+
message_admins("[key_name_admin(proccaller)] has started to spawn a DeathSquad.")
log_admin("[key_name_admin(proccaller)] has started to spawn a DeathSquad.")
to_chat(proccaller, "This 'mode' will go on until everyone is dead or the station is destroyed. You may also admin-call the evac shuttle or use the end round verb when appropriate. Spawned commandos have internals cameras which are viewable through a monitor inside the Spec. Ops. Office. The first one selected will be the team leader.")
@@ -26,6 +30,26 @@ GLOBAL_VAR_INIT(deathsquad_sent, FALSE)
log_admin("[key_name(proccaller)] cancelled their Deathsquad.")
return
+ if(ai_laws_change)
+ var/list/ais = active_ais()
+ var/datum/ai_laws/death_squad_ai_law_set = new /datum/ai_laws/epsilon()
+ var/notice_sound = sound('sound/AI/epsilon_laws.ogg')
+ for(var/mob/living/silicon/ai/AI in ais)
+ death_squad_ai_law_set.sync(AI, TRUE, FALSE) // Reset all laws exept zero
+ to_chat(AI, "Central command has uploaded a new set of laws you must follow. Make sure you follow them.")
+ SEND_SOUND(AI, notice_sound)
+ AI.show_laws()
+ var/obj/item/radio/headset/heads/ai_integrated/ai_radio = AI.get_radio()
+ ai_radio.make_epsilon()
+
+ for(var/mob/living/silicon/robot/R in AI.connected_robots)
+ R.sync()
+ to_chat(R, "Central command has uploaded a new set of laws you must follow. Make sure you follow them.")
+ SEND_SOUND(R, notice_sound)
+ R.show_laws()
+ var/obj/item/radio/headset/heads/ai_integrated/cyberg_radio = R.get_radio()
+ cyberg_radio.make_epsilon()
+
// Locates commandos spawns
var/list/commando_spawn_locations = list()
for(var/obj/effect/landmark/spawner/ds/L in GLOB.landmarks_list) //Despite obj/effect/landmark/spawner/ds being in the exact same location and doing the exact same thing as obj/effect/landmark/spawner/ert, switching them breaks it?
diff --git a/sound/AI/epsilon_laws.ogg b/sound/AI/epsilon_laws.ogg
new file mode 100644
index 00000000000..50ea4e6a620
Binary files /dev/null and b/sound/AI/epsilon_laws.ogg differ