diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm
index debb041e3fc..8b2c315b910 100644
--- a/code/game/machinery/doppler_array.dm
+++ b/code/game/machinery/doppler_array.dm
@@ -9,6 +9,7 @@ var/list/doppler_arrays = list()
anchored = 1
atom_say_verb = "states coldly"
var/list/logged_explosions = list()
+ var/printer_timer
/datum/explosion_log
var/logged_time
@@ -30,6 +31,8 @@ var/list/doppler_arrays = list()
/obj/machinery/doppler_array/Destroy()
doppler_arrays -= src
+ for(var/datum/D in logged_explosions)
+ qdel(D)
return ..()
/obj/machinery/doppler_array/process()
@@ -75,6 +78,53 @@ var/list/doppler_arrays = list()
dir = turn(dir, 90)
to_chat(user, "You rotate [src].")
+/obj/item/paper/explosive_log
+ name = "explosive log"
+ info = "
Explosive Log Report
\
+ \
+ \
+ | Time logged | \
+ Epicenter | \
+ Actual | \
+ Theoretical | \
+
" //NB: the tag is left open, it is closed later on, when the doppler array adds its data
+
+/obj/machinery/doppler_array/verb/print_logs(mob/user)
+ set name = "Print Explosive Logs"
+ set category = "Object"
+ set src in oview(1)
+
+ if(user.incapacitated())
+ return
+ if(!Adjacent(user))
+ return
+ if(!user.IsAdvancedToolUser())
+ to_chat(user, "You don't have the dexterity to do that!")
+ return
+ if(!logged_explosions.len)
+ atom_say("No logs currently stored in internal database.")
+ return
+ if(printer_timer)
+ to_chat(user, "[src] is already printing something, please wait.")
+ return
+ atom_say("Printing explosive log. Standby...")
+ printer_timer = addtimer(CALLBACK(src, .proc/print), 50)
+
+/obj/machinery/doppler_array/proc/print()
+ printer_timer = FALSE
+ visible_message("[src] rattles off a sheet of paper!")
+ playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1)
+ var/obj/item/paper/explosive_log/P = new(get_turf(src))
+ for(var/datum/explosion_log/E in logged_explosions)
+ P.info += "\
+ | [E.logged_time] | \
+ [E.epicenter] | \
+ [E.actual_size_message] | \
+ [E.theoretical_size_message] | \
+
"
+ P.info += "
\
+ Printed at [station_time_timestamp()]."
+
/obj/machinery/doppler_array/proc/sense_explosion(var/x0,var/y0,var/z0,var/devastation_range,var/heavy_impact_range,var/light_impact_range,
var/took,var/orig_dev_range,var/orig_heavy_range,var/orig_light_range)
if(stat & NOPOWER)