diff --git a/baystation12.dme b/baystation12.dme
index bfa7dff4dd..f1d94bde1d 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -782,6 +782,7 @@
#include "code\modules\economy\TradeDestinations.dm"
#include "code\modules\events\alien_infestation.dm"
#include "code\modules\events\blob.dm"
+#include "code\modules\events\borers.dm"
#include "code\modules\events\brand_intelligence.dm"
#include "code\modules\events\carp_migration.dm"
#include "code\modules\events\comms_blackout.dm"
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index c6dcc662a6..097cf4cc27 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -581,7 +581,8 @@ var/global/floorIsLava = 0
Spawn a gravitational anomaly (aka lagitational anomolag)
Spawn wormholes
Spawn blob
- Trigger an Alien infestation
+ Trigger a Xenomorph infestation
+ Trigger a Cortical Borer infestation
Spawn an Alien silently
Trigger a Spider infestation
Send in a space ninja
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 43dc61c73f..54a865955a 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -511,10 +511,10 @@
jobs += "
"
counter = 0
- if(jobban_isbanned(M, "Internal Affairs Agent"))
+ if(jobban_isbanned(M, "Internal Affairs Agent"))
jobs += "| Internal Affairs Agent | "
else
- jobs += "Internal Affairs Agent | "
+ jobs += "Internal Affairs Agent | "
jobs += "
"
@@ -539,7 +539,7 @@
counter = 0
//pAI isn't technically a job, but it goes in here.
-
+
if(jobban_isbanned(M, "pAI"))
jobs += "pAI | "
else
@@ -1773,7 +1773,12 @@
log_admin("[key_name(usr)] spawned an alien infestation", 1)
message_admins("\blue [key_name_admin(usr)] attempted an alien infestation", 1)
new /datum/event/alien_infestation
-
+ if("borers")
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","Borers")
+ log_admin("[key_name(usr)] spawned a cortical borer infestation.", 1)
+ message_admins("\blue [key_name_admin(usr)] spawned a cortical borer infestation.", 1)
+ new /datum/event/borer_infestation
if("power")
feedback_inc("admin_secrets_fun_used",1)
diff --git a/code/modules/events/borers.dm b/code/modules/events/borers.dm
new file mode 100644
index 0000000000..2c6a2820fb
--- /dev/null
+++ b/code/modules/events/borers.dm
@@ -0,0 +1,38 @@
+//Cortical borer spawn event - care of RobRichards1997 with minor editing by Zuhayr.
+
+/datum/event/borer_infestation
+ oneShot = 1
+
+/datum/event/borer_infestation
+ announceWhen = 400
+
+ var/spawncount = 1
+ var/successSpawn = 0 //So we don't make a command report if nothing gets spawned.
+
+/datum/event/borer_infestation/setup()
+ announceWhen = rand(announceWhen, announceWhen + 50)
+ spawncount = rand(1, 3)
+
+/datum/event/borer_infestation/announce()
+ if(successSpawn)
+ command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert")
+ world << sound('sound/AI/aliens.ogg')
+
+/datum/event/borer_infestation/start()
+ var/list/vents = list()
+ for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in world)
+ if(temp_vent.loc.z == 1 && !temp_vent.welded && temp_vent.network)
+ //Stops cortical borers getting stuck in small networks. See: Security, Virology
+ if(temp_vent.network.normal_members.len > 50)
+ vents += temp_vent
+
+ var/list/candidates = get_alien_candidates()
+ while(spawncount > 0 && vents.len && candidates.len)
+ var/obj/vent = pick_n_take(vents)
+ var/client/C = pick_n_take(candidates)
+
+ var/mob/living/simple_animal/borer/new_borer = new(vent.loc)
+ new_borer.key = C.key
+
+ spawncount--
+ successSpawn = 1
\ No newline at end of file