diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index 8fada1b1bcf..0b910b63394 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -116,6 +116,19 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
else if (src.authenticated==2 && message_cooldown)
usr << "Intercomms recharging. Please stand by."
+ if("crossserver")
+ if(src.authenticated==2)
+ if(CM.lastTimeUsed + 600 > world.time)
+ usr << "Arrays recycling. Please stand by."
+ return
+ var/input = stripped_input(usr, "Please choose a message to transmit to an allied station. Please be aware that this process is very expensive, and abuse will lead to... termination.", "Send a message to an allied station.", "")
+ if(!input || !(usr in view(1,src)))
+ return
+ send2otherserver(world.name, input,"Comms_Console")
+ minor_announce(input, title = "Outgoing message to allied station")
+ log_say("[key_name(usr)] has sent a message to the other server: [input]")
+ CM.lastTimeUsed = world.time
+
if("callshuttle")
src.state = STATE_DEFAULT
if(src.authenticated)
@@ -384,6 +397,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
if (src.authenticated==2)
dat += "
Captain Functions"
dat += "
\[ Make a Captain's Announcement \]"
+ dat += "
\[ Send a message to an allied station \]"
dat += "
\[ Change Alert Level \]"
dat += "
\[ Emergency Maintenance Access \]"
dat += "
\[ Request Nuclear Authentication Codes \]"
diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm
index 1776f8106b5..7ea4d5bc710 100644
--- a/code/modules/admin/verbs/adminhelp.dm
+++ b/code/modules/admin/verbs/adminhelp.dm
@@ -154,7 +154,8 @@
/proc/send2otherserver(source,msg,type = "Ahelp")
if(global.cross_allowed)
var/list/message = list()
- message["message"] = "[source]: [msg]"
+ message["message_sender"] = source
+ message["message"] = msg
message["source"] = "([config.cross_name])"
message["key"] = global.comms_key
message["crossmessage"] = type
diff --git a/code/world.dm b/code/world.dm
index 41346b8248a..e410521f53f 100644
--- a/code/world.dm
+++ b/code/world.dm
@@ -155,7 +155,11 @@ var/last_irc_status = 0
return
else
if(input["crossmessage"] == "Ahelp")
- relay_msg_admins("HELP: [input["source"]] [input["message"]]")
+ relay_msg_admins("HELP: [input["source"]] [input["message_sender"]]: [input["message"]]")
+ if(input["crossmessage"] == "Comms_Console")
+ minor_announce(input["message"], "Incoming message from [input["message_sender"]]")
+ for(var/obj/machinery/computer/communications/CM in machines)
+ CM.overrideCooldown()
/world/Reboot(var/reason, var/feedback_c, var/feedback_r, var/time)
if (reason == 1) //special reboot, do none of the normal stuff