diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index 8ab7c233204..6d294983929 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -14,6 +14,7 @@
var/state = STATE_DEFAULT
var/aistate = STATE_DEFAULT
var/message_cooldown = 0
+ var/centcomm_message_cooldown = 0
var/tmp_alertlevel = 0
var/const
STATE_DEFAULT = 1
@@ -31,6 +32,7 @@
var/stat_msg2
+
/obj/machinery/computer/communications/process()
..()
if(state != STATE_STATUSDISPLAY)
@@ -168,6 +170,46 @@
stat_msg2 = input("Line 2", "Enter Message Text", stat_msg2) as text|null
src.updateDialog()
+ // OMG CENTCOMM LETTERHEAD
+ if("MessageCentcomm")
+ if(src.authenticated==2)
+ if(centcomm_message_cooldown)
+ usr << "Arrays recycling. Please stand by."
+ return
+ var/input = input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "")
+ if(!input || !(usr in view(1,src)))
+ return
+ Centcomm_announce(input, usr)
+ usr << "Message transmitted."
+ log_say("[key_name(usr)] has made a Centcomm announcement: [input]")
+ centcomm_message_cooldown = 1
+ spawn(600)//One minute cooldown
+ message_cooldown = 0
+
+
+ // OMG SYNDICATE ...LETTERHEAD
+ if("MessageSyndicate")
+ if((src.authenticated==2) && (src.emagged))
+ if(centcomm_message_cooldown)
+ usr << "Arrays recycling. Please stand by."
+ return
+ var/input = input(usr, "Please choose a message to transmit to \[ABNORMAL ROUTING CORDINATES\] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "")
+ if(!input || !(usr in view(1,src)))
+ return
+ Syndicate_announce(input, usr)
+ usr << "Message transmitted."
+ log_say("[key_name(usr)] has made a Syndicate announcement: [input]")
+ centcomm_message_cooldown = 1
+ spawn(600)//One minute cooldown
+ message_cooldown = 0
+
+ if("RestoreBackup")
+ usr << "Backup routing data restored!"
+ src.emagged = 0
+ src.updateDialog()
+
+
+
// AI interface
if("ai-main")
src.aicurrmsg = 0
@@ -214,6 +256,11 @@
src.updateUsrDialog()
+/obj/machinery/computer/communications/attackby(var/obj/I as obj, var/mob/user as mob)
+ if(istype(I,/obj/item/weapon/card/emag/))
+ src.emagged = 1
+ user << "You scramble the communication routing circuits!"
+ ..()
/obj/machinery/computer/communications/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
@@ -247,6 +294,12 @@
dat += "
\[ Log Out \]"
if (src.authenticated==2)
dat += "
\[ Make An Announcement \]"
+ if(src.emagged == 0)
+ dat += "
\[ Send an emergancy message to Centcomm \]"
+ else
+ dat += "
\[ Send an emergancy message to \[UNKNOWN\] \]"
+ dat += "
\[ Restore Backup Routing Data \]"
+
dat += "
\[ Change alert level \]"
if(emergency_shuttle.location==0)
if (emergency_shuttle.online)
@@ -309,6 +362,9 @@
user << browse(dat, "window=communications;size=400x500")
onclose(user, "communications")
+
+
+
/obj/machinery/computer/communications/proc/interact_ai(var/mob/living/silicon/ai/user as mob)
var/dat = ""
switch(src.aistate)
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index a8c3bc4f37a..fefe2255f85 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -826,6 +826,29 @@
sleep(2)
cl.jumptomob(M)
+ if (href_list["BlueSpaceArtillery"])
+ var/mob/M = locate(href_list["BlueSpaceArtillery"])
+ M << "You've been hit by bluespace artillery!"
+
+ var/obj/effect/stop/S
+ S = new /obj/effect/stop
+ S.victim = M
+ S.loc = M.loc
+ spawn(20)
+ del(S)
+
+ var/turf/T = get_turf(M)
+ if(T)
+ T.ex_act(2)
+
+ if(M.health == 1)
+ M.gib()
+ else
+ M.adjustBruteLoss( min( 99 , (M.health - 1) ) )
+ M.Stun(20)
+ M.Weaken(20)
+ M.stuttering = 20
+
if (href_list["jumpto"])
if(rank in list("Badmin", "Game Admin", "Game Master"))
diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm
index 303779597a5..6f0a9252187 100644
--- a/code/modules/admin/verbs/pray.dm
+++ b/code/modules/admin/verbs/pray.dm
@@ -21,3 +21,22 @@
usr << "Your prayers have been received by the gods."
//log_admin("HELP: [key_name(src)]: [msg]")
+
+
+/proc/Centcomm_announce(var/text , var/mob/Sender)
+
+ var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
+
+
+ for (var/mob/M in world)
+ if (M.client && M.client.holder)
+ M << "\blue CENTCOMM:[key_name(Sender, M)] (PP) (VV) (SM) (JMP) (CA) (BSA): [msg]"
+
+/proc/Syndicate_announce(var/text , var/mob/Sender)
+
+ var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
+
+ for (var/mob/M in world)
+ if (M.client && M.client.holder)
+ M << "\blue SYNDICATE:[key_name(Sender, M)] (PP) (VV) (SM) (JMP) (CA) (BSA): [msg]"
+