diff --git a/baystation12.dme b/baystation12.dme
index bd0d1a256d3..ef839733bc9 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -53,6 +53,9 @@
#define FILE_DIR "sound/voice"
#define FILE_DIR "sound/voice/Serithi"
#define FILE_DIR "sound/weapons"
+#define FILE_DIR "tools"
+#define FILE_DIR "tools/AddToChangelog"
+#define FILE_DIR "tools/AddToChangelog/AddToChangelog"
// END_FILE_DIR
// BEGIN_PREFERENCES
#define DEBUG
@@ -492,6 +495,7 @@
#include "code\game\objects\items\devices\transfer_valve.dm"
#include "code\game\objects\items\devices\uplinks.dm"
#include "code\game\objects\items\devices\violin.dm"
+#include "code\game\objects\items\devices\whistle.dm"
#include "code\game\objects\items\devices\PDA\cart.dm"
#include "code\game\objects\items\devices\PDA\chatroom.dm"
#include "code\game\objects\items\devices\PDA\PDA.dm"
diff --git a/code/game/objects/items/devices/whistle.dm b/code/game/objects/items/devices/whistle.dm
new file mode 100644
index 00000000000..c735f40264f
--- /dev/null
+++ b/code/game/objects/items/devices/whistle.dm
@@ -0,0 +1,21 @@
+/obj/item/device/hailer
+ name = "hailer"
+ desc = "Used by obese officers to save their breath for running."
+ icon_state = "voice0"
+ item_state = "flashbang" //looks exactly like a flash (and nothing like a flashbang)
+ w_class = 1.0
+ flags = FPRINT | TABLEPASS| CONDUCT
+
+ var/spamcheck = 0
+
+
+/obj/item/device/hailer/attack_self(mob/living/carbon/user as mob)
+ if (spamcheck)
+ return
+
+ playsound(get_turf(src), 'sound/voice/halt.ogg', 100, 1, vary = 0)
+ user.visible_message("[user]'s [name] rasps, \"Halt! Security!\"")
+
+ spamcheck = 1
+ spawn(20)
+ spamcheck = 0
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index f6ad799900d..413333f397c 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -186,6 +186,7 @@
new /obj/item/weapon/gun/energy/taser(src)
new /obj/item/clothing/glasses/sunglasses/sechud(src)
new /obj/item/taperoll/police(src)
+ new /obj/item/device/hailer
return
diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm
index 86d4e5d2f46..4fa8a543b98 100644
--- a/code/modules/mob/living/silicon/robot/emote.dm
+++ b/code/modules/mob/living/silicon/robot/emote.dm
@@ -198,6 +198,15 @@
m_type = 2
else
src << "You are not THE LAW, pal."
+
+ if("halt")
+ if (istype(module,/obj/item/weapon/robot_module/security))
+ message = "[src]'s speakers skreech, \"Halt! Security!\"."
+
+ playsound(src.loc, 'sound/voice/halt.ogg', 50, 0)
+ m_type = 2
+ else
+ src << "You are not security."
else
src << text("Invalid Emote: []", act)
if ((message && src.stat == 0))
diff --git a/sound/voice/halt.ogg b/sound/voice/halt.ogg
new file mode 100644
index 00000000000..4885bc19483
Binary files /dev/null and b/sound/voice/halt.ogg differ