diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm
index 3485a45771..c11674f771 100644
--- a/code/modules/client/verbs/ooc.dm
+++ b/code/modules/client/verbs/ooc.dm
@@ -322,6 +322,14 @@ GLOBAL_VAR_INIT(normal_ooc_colour, "#002eb8")
pct += delta
winset(src, "mainwindow.split", "splitter=[pct]")
+//GS13: Runtime viewer for users
+/client/verb/view_runtimes_minimal()
+ set name = "View Minimal Runtimes"
+ set category = "OOC"
+ set desc = "Open the runtime error viewer, with reduced information"
+
+ GLOB.error_cache.show_to_minimal(src)
+
/client/verb/fix_stat_panel()
set name = "Fix Stat Panel"
set hidden = TRUE
diff --git a/code/modules/error_handler/error_viewer.dm b/code/modules/error_handler/error_viewer.dm
index b88437edef..ad868138b5 100644
--- a/code/modules/error_handler/error_viewer.dm
+++ b/code/modules/error_handler/error_viewer.dm
@@ -23,6 +23,7 @@ GLOBAL_DATUM(error_cache, /datum/error_viewer/error_cache)
// Common vars and procs are kept at the error_viewer level
/datum/error_viewer
var/name = ""
+ var/min_name = "" //GS13: Runtime viewer for users
/datum/error_viewer/proc/browse_to(client/user, html)
var/datum/browser/browser = new(user.mob, "error_viewer", null, 600, 400)
@@ -78,6 +79,15 @@ GLOBAL_DATUM(error_cache, /datum/error_viewer/error_cache)
var/list/error_sources = list()
var/list/errors_silenced = list()
+/datum/error_viewer/error_cache/proc/show_to_minimal(user, datum/error_viewer/back_to, linear)
+ var/html = "[GLOB.total_runtimes] runtimes, [GLOB.total_runtimes_skipped] skipped
"
+ var/datum/error_viewer/error_source/error_source
+ for (var/erroruid in error_sources)
+ error_source = error_sources[erroruid]
+ html += "[error_source.min_name]
"
+
+ browse_to(user, html)
+
/datum/error_viewer/error_cache/show_to(user, datum/error_viewer/back_to, linear)
var/html = build_header()
html += "[GLOB.total_runtimes] runtimes, [GLOB.total_runtimes_skipped] skipped
"
@@ -134,7 +144,9 @@ GLOBAL_DATUM(error_cache, /datum/error_viewer/error_cache)
name = "\[[TIME_STAMP("hh:mm:ss", FALSE)]] Uncaught exceptions"
return
- name = "\[[TIME_STAMP("hh:mm:ss", FALSE)]] Runtime in [e.file], line [e.line]: [html_encode(e.name)]"
+ //GS13: Runtime viewer for users
+ min_name = "\[[TIME_STAMP("hh:mm:ss", FALSE)]] Runtime in [e.file], line [e.line]"
+ name = min_name + ": [html_encode(e.name)]"
/datum/error_viewer/error_source/show_to(user, datum/error_viewer/back_to, linear)
if (!istype(back_to))
@@ -164,7 +176,9 @@ GLOBAL_DATUM(error_cache, /datum/error_viewer/error_cache)
is_skip_count = TRUE
return
- name = "\[[TIME_STAMP("hh:mm:ss", FALSE)]] Runtime in [e.file], line [e.line]: [html_encode(e.name)]"
+ //GS13: Runtime viewer for users
+ min_name = "\[[TIME_STAMP("hh:mm:ss", FALSE)]] Runtime in [e.file], line [e.line]"
+ name = min_name + ": [html_encode(e.name)]"
exc = e
if (istype(desclines))
for (var/line in desclines)