diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index 575a3276e33..81b3038c357 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -184,7 +184,7 @@ var/global/datum/controller/gameticker/ticker
feedback_set_details("end_proper","proper completion")
world << "\blue Restarting in [restart_timeout/10] seconds"
- feedback_set_details("round_end","[time2text(world.realtime)]")
+
if(blackbox)
blackbox.save_all_data_to_sql()
diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm
index f2647e45b2e..63e83c5d219 100644
--- a/code/game/gamemodes/malfunction/malfunction.dm
+++ b/code/game/gamemodes/malfunction/malfunction.dm
@@ -38,7 +38,7 @@
world << "Rebooting world in 5 seconds."
feedback_set_details("end_error","malf - no AI")
- feedback_set_details("round_end","[time2text(world.realtime)]")
+
if(blackbox)
blackbox.save_all_data_to_sql()
sleep(50)
diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm
index aaef8e49071..e6880eb09a7 100644
--- a/code/game/gamemodes/nuclear/nuclearbomb.dm
+++ b/code/game/gamemodes/nuclear/nuclearbomb.dm
@@ -207,7 +207,7 @@
world << "Resetting in 30 seconds!"
feedback_set_details("end_error","nuke - unhandled ending")
- feedback_set_details("round_end","[time2text(world.realtime)]")
+
if(blackbox)
blackbox.save_all_data_to_sql()
sleep(300)
diff --git a/code/game/vote.dm b/code/game/vote.dm
index 9ba927775bf..16eee1c5636 100644
--- a/code/game/vote.dm
+++ b/code/game/vote.dm
@@ -78,7 +78,7 @@
world <<"\red World will reboot in 10 seconds"
feedback_set_details("end_error","mode vote - [winner]")
- feedback_set_details("round_end","[time2text(world.realtime)]")
+
if(blackbox)
blackbox.save_all_data_to_sql()
@@ -99,7 +99,7 @@
world <<"\red World will reboot in 5 seconds"
feedback_set_details("end_error","restart vote")
- feedback_set_details("round_end","[time2text(world.realtime)]")
+
if(blackbox)
blackbox.save_all_data_to_sql()
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 8a274ded53d..f2f32357d05 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -2233,7 +2233,7 @@
log_admin("[key_name(usr)] initiated a reboot.")
feedback_set_details("end_error","admin reboot - by [usr.key] [usr.client.stealth ? "(stealth)" : ""]")
- feedback_set_details("round_end","[time2text(world.realtime)]")
+
if(blackbox)
blackbox.save_all_data_to_sql()
@@ -2395,7 +2395,7 @@
log_admin("[key_name(usr)] initiated an immediate reboot.")
feedback_set_details("end_error","immediate admin reboot - by [usr.key] [usr.client.stealth ? "(stealth)" : ""]")
- feedback_set_details("round_end","[time2text(world.realtime)]")
+
if(blackbox)
blackbox.save_all_data_to_sql()
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index c6541a31a95..de04d7dc74c 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -115,7 +115,7 @@
world << "Everyone is dead! Resetting in 30 seconds!"
feedback_set_details("end_error","no live players")
- feedback_set_details("round_end","[time2text(world.realtime)]")
+
if(blackbox)
blackbox.save_all_data_to_sql()
diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm
index be79f1aaf4f..d7acdbc71e9 100644
--- a/code/modules/research/message_server.dm
+++ b/code/modules/research/message_server.dm
@@ -132,19 +132,19 @@ var/obj/machinery/blackbox_recorder/blackbox
use_power = 1
idle_power_usage = 10
active_power_usage = 100
- var/messages = list()
- var/messages_admin = list()
+ var/list/messages = list() //Stores messages of non-standard frequencies
+ var/list/messages_admin = list()
- var/msg_common = list()
- var/msg_science = list()
- var/msg_command = list()
- var/msg_medical = list()
- var/msg_engineering = list()
- var/msg_security = list()
- var/msg_deathsquad = list()
- var/msg_syndicate = list()
- var/msg_mining = list()
- var/msg_cargo = list()
+ var/list/msg_common = list()
+ var/list/msg_science = list()
+ var/list/msg_command = list()
+ var/list/msg_medical = list()
+ var/list/msg_engineering = list()
+ var/list/msg_security = list()
+ var/list/msg_deathsquad = list()
+ var/list/msg_syndicate = list()
+ var/list/msg_mining = list()
+ var/list/msg_cargo = list()
var/list/datum/feedback_variable/feedback = new()
@@ -188,10 +188,43 @@ var/obj/machinery/blackbox_recorder/blackbox
proc/get_round_feedback()
return feedback
+ proc/round_end_data_gathering()
+
+ var/pda_msg_amt = 0
+ var/rc_msg_amt = 0
+
+ for(var/obj/machinery/message_server/MS in world)
+ if(MS.pda_msgs.len > pda_msg_amt)
+ pda_msg_amt = MS.pda_msgs.len
+ if(MS.rc_msgs.len > rc_msg_amt)
+ rc_msg_amt = MS.rc_msgs.len
+
+ feedback_set_details("radio_usage","")
+
+ feedback_add_details("radio_usage","COM-[msg_common.len]")
+ feedback_add_details("radio_usage","SCI-[msg_science.len]")
+ feedback_add_details("radio_usage","HEA-[msg_command.len]")
+ feedback_add_details("radio_usage","MED-[msg_medical.len]")
+ feedback_add_details("radio_usage","ENG-[msg_engineering.len]")
+ feedback_add_details("radio_usage","SEC-[msg_security.len]")
+ feedback_add_details("radio_usage","DTH-[msg_deathsquad.len]")
+ feedback_add_details("radio_usage","SYN-[msg_syndicate.len]")
+ feedback_add_details("radio_usage","MIN-[msg_mining.len]")
+ feedback_add_details("radio_usage","CAR-[msg_cargo.len]")
+ feedback_add_details("radio_usage","OTH-[messages.len]")
+ feedback_add_details("radio_usage","PDA-[pda_msg_amt]")
+ feedback_add_details("radio_usage","RC-[rc_msg_amt]")
+
+
+ feedback_set_details("round_end","[time2text(world.realtime)]") //This one MUST be the last one that gets set.
+
+
//This proc is only to be called at round end.
proc/save_all_data_to_sql()
if(!feedback) return
+ round_end_data_gathering() //round_end time logging and some other data processing
+
var/user = sqlfdbklogin
var/pass = sqlfdbkpass
var/db = sqlfdbkdb
diff --git a/maps/tgstation.2.0.8.dmm b/maps/tgstation.2.0.8.dmm
index 9f14937c66f..c2420d4dc71 100644
--- a/maps/tgstation.2.0.8.dmm
+++ b/maps/tgstation.2.0.8.dmm
@@ -2737,7 +2737,7 @@
"baG" = (/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"baH" = (/obj/machinery/camera{c_tag = "Arrivals Auxiliary Docking"; dir = 8; network = "SS13"},/turf/simulated/floor,/area/hallway/secondary/entry)
"baI" = (/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4},/obj/machinery/driver_button{id = "trash"; pixel_x = -26; pixel_y = -6},/turf/simulated/floor/plating,/area/maintenance/disposal)
-"baJ" = (/obj/machinery/conveyor_switch{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"baJ" = (/obj/machinery/conveyor_switch/oneway{id = "garbage"; name = "disposal coveyor"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"baK" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal)
"baL" = (/obj/effect/decal/cleanable/oil,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/power/apc{dir = 4; name = "Disposal APC"; pixel_x = 27; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/maintenance/disposal)
"baM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
@@ -8269,7 +8269,7 @@
"dda" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/lobby)
"ddb" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor,/area/mine/lobby)
"ddc" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor,/area/mine/lobby)
-"ddd" = (/obj/machinery/conveyor_switch{id = "mining_internal"},/obj/machinery/atmospherics/pipe/manifold{dir = 4},/obj/machinery/camera{c_tag = "Shuttle Airlock"; dir = 8; network = "MINE"},/turf/simulated/floor,/area/mine/lobby)
+"ddd" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/obj/machinery/camera{c_tag = "Shuttle Airlock"; dir = 8; network = "MINE"},/obj/machinery/conveyor_switch/oneway{id = "mining_internal"; name = "mining convayor"},/turf/simulated/floor,/area/mine/lobby)
"dde" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/production)
"ddf" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production)
"ddg" = (/obj/machinery/camera{c_tag = "Station External West"; network = "MINE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)