diff --git a/code/defines/global.dm b/code/defines/global.dm
index 77bcf63a7ee..39a5b5d98f7 100644
--- a/code/defines/global.dm
+++ b/code/defines/global.dm
@@ -198,4 +198,8 @@ var
forumsqllogin = "root"
forumsqlpass = ""
forum_activated_group = "2"
- forum_authenticated_group = "10"
\ No newline at end of file
+ forum_authenticated_group = "10"
+
+ // For FTP requests. (i.e. downloading runtime logs.)
+ // However it'd be ok to use for accessing attack logs and such too, which are even laggier.
+ fileaccess_timer = 600 //Cannot access files by ftp until the game is finished setting up and stuff.
\ No newline at end of file
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 87c97f8bef3..4c6dd736025 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -271,6 +271,7 @@
verbs += /client/proc/everyone_random
verbs += /client/proc/only_one
verbs += /client/proc/deadmin_self
+ verbs += /client/proc/getruntimelog //used by coders to retrieve runtime logs
else return
return
@@ -395,6 +396,7 @@
verbs -= /client/proc/jumptocoord
verbs -= /client/proc/everyone_random
verbs -= /client/proc/Set_Holiday
+ verbs -= /client/proc/getruntimelog //used by coders to retrieve runtime logs
verbs -= /proc/possess
verbs -= /proc/release
//verbs -= /client/proc/give_spell --Merged with view variables
diff --git a/code/modules/admin/verbs/getruntimelog.dm b/code/modules/admin/verbs/getruntimelog.dm
new file mode 100644
index 00000000000..695327376b5
--- /dev/null
+++ b/code/modules/admin/verbs/getruntimelog.dm
@@ -0,0 +1,53 @@
+/*
+ HOW DO I LOG RUNTIMES?
+ Firstly, start dreamdeamon if it isn't already running. Then select "world>Log Session" (or press the F3 key)
+ navigate the popup window to the log/runtime/ folder from where your tgstation .dmb is located.
+
+ OPTIONAL: you can select the little checkbox down the bottom to make dreamdeamon save the log everytime you
+ start a world. Just remember to repeat these steps with a new name when you update to a new revision!
+
+ Save it with the name of the revision your server uses (e.g. r3459.txt).
+ Coders with the Game Master rank will now be able to access any runtime logs you have archived this way!
+ This will allow us to gather information on bugs across multiple servers and make maintaining the TG
+ codebase for the entire /TG/station commuity a TONNE easier :3 Thanks for your help!
+*/
+#define FTPDELAY 200 //20 second delay to prevent spam
+
+//This proc allows GameMasters to download txt files saved to the log/runtime/ folder on the server.
+//In effect this means the server owner can log game sessions through DreamDeamon to that folder and
+//Coders (with access) can download logs (old and current).
+//To make life easier on everyone please name logfiles according to the revision number in use!
+
+//This proc has a failsafe built in to prevent spamming of ftp requests. As such it can only be used once every
+//20 seconds. This can be changed by modifying FTPDELAY's value.
+
+//PLEASE USE RESPONSIBLY, only download from the server if the log isn't already available elsewhere!
+//Bandwidth is expensive and lags are lame. Although txt files of a few kB shouldn't cause problems really ~Carn
+
+/client/proc/getruntimelog()
+ set name = "getruntimelog"
+ set desc = "Retrieve any session logfiles saved by dreamdeamon"
+ set category = "Debug"
+ set hidden = 1
+
+ if( !src.holder || holder.rank != "Game Master" )
+ src << "Only Game Masters may use this command."
+ return
+
+ var/time_to_wait = fileaccess_timer - world.time
+ if(time_to_wait > 0)
+ src << "Error: getruntimelog(): FTP-request spam prevention. Please wait [round(time_to_wait/10)] seconds."
+ return
+ fileaccess_timer = world.time + FTPDELAY
+
+ var/list/list_of_runtimelogs = flist("log/runtime/")
+ var/choice = input(src,"Choose a runtime-log to download:","Download",null) in list_of_runtimelogs
+
+ if(!choice || !fexists("log/runtime/[choice]"))
+ src << "Error: getruntimelog(): Files not found/Invalid file([choice])."
+ return
+
+ src << ftp("log/runtime/[choice]")
+
+ return
+
diff --git a/tgstation.dme b/tgstation.dme
index a230f7860c4..53e04703a63 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -751,6 +751,7 @@
#include "code\modules\admin\verbs\deadsay.dm"
#include "code\modules\admin\verbs\debug.dm"
#include "code\modules\admin\verbs\diagnostics.dm"
+#include "code\modules\admin\verbs\getruntimelog.dm"
#include "code\modules\admin\verbs\mapping.dm"
#include "code\modules\admin\verbs\massmodvar.dm"
#include "code\modules\admin\verbs\MC.dm"