Makes the MC stat panel tab usable, and also nicer (#92405)

(cherry picked from commit 0909348cea)
This commit is contained in:
LemonInTheDark
2025-08-08 15:33:44 -04:00
committed by nevimer
parent 7df4b5cee2
commit eb7d505bef
23 changed files with 49 additions and 38 deletions
+2 -1
View File
@@ -22,7 +22,8 @@ SUBSYSTEM_DEF(admin_verbs)
admin_verbs_by_type = SSadmin_verbs.admin_verbs_by_type
/datum/controller/subsystem/admin_verbs/stat_entry(msg)
return "[..()] | V: [length(admin_verbs_by_type)]"
msg = "V:[length(admin_verbs_by_type)]"
return ..()
/datum/controller/subsystem/admin_verbs/proc/process_pending_admins()
var/list/pending_admins = admins_pending_subsytem_init
+1 -1
View File
@@ -21,7 +21,7 @@ SUBSYSTEM_DEF(ai_controllers)
/datum/controller/subsystem/ai_controllers/stat_entry(msg)
var/list/planning_list = GLOB.ai_controllers_by_status[planning_status]
msg = "Planning AIs:[length(planning_list)]/[round(our_cost,1)]%"
msg = "\n Planning AIs:[length(planning_list)]/[round(our_cost,1)]%"
return ..()
/datum/controller/subsystem/ai_controllers/fire(resumed)
+3 -2
View File
@@ -63,7 +63,7 @@ SUBSYSTEM_DEF(air)
/datum/controller/subsystem/air/stat_entry(msg)
msg += "C:{"
msg += "\n Cost:{"
msg += "AT:[round(cost_turfs,1)]|"
msg += "HS:[round(cost_hotspots,1)]|"
msg += "EG:[round(cost_groups,1)]|"
@@ -75,7 +75,7 @@ SUBSYSTEM_DEF(air)
msg += "RB:[round(cost_rebuilds,1)]|"
msg += "AJ:[round(cost_adjacent,1)]|"
msg += "} "
msg += "AT:[active_turfs.len]|"
msg += "\n Count:{AT:[active_turfs.len]|"
msg += "HS:[hotspots.len]|"
msg += "EG:[excited_groups.len]|"
msg += "HP:[high_pressure_delta.len]|"
@@ -87,6 +87,7 @@ SUBSYSTEM_DEF(air)
msg += "EP:[expansion_queue.len]|"
msg += "AJ:[adjacent_rebuild.len]|"
msg += "AT/MS:[round((cost ? active_turfs.len/cost : 0),0.1)]"
msg += "}"
return ..()
+1 -1
View File
@@ -22,7 +22,7 @@ SUBSYSTEM_DEF(area_contents)
total_to_clear += length(to_clear.turfs_to_uncontain_by_zlevel[area_zlevel])
if (length(to_clear.turfs_by_zlevel) >= area_zlevel) //this should always be true, but stat_entry is no place for runtimes. fire() can handle that
total_clearing_from += length(to_clear.turfs_by_zlevel[area_zlevel])
msg = "A:[length(currentrun)] MR:[length(marked_for_clearing)] TC:[total_to_clear] CF:[total_clearing_from]"
msg = "\n A:[length(currentrun)] MR:[length(marked_for_clearing)] TC:[total_to_clear] CF:[total_clearing_from]"
return ..()
+1 -1
View File
@@ -88,7 +88,7 @@ SUBSYSTEM_DEF(dbcore)
log_config("ERROR: POOLING_MAX_SQL_CONNECTIONS ([max_sql_connections]) is set lower than POOLING_MIN_SQL_CONNECTIONS ([min_sql_connections]). Please check your config or the code defaults for sanity")
/datum/controller/subsystem/dbcore/stat_entry(msg)
msg = "P:[length(all_queries)]|Active:[length(queries_active)]|Standby:[length(queries_standby)]"
msg = "\n P:[length(all_queries)]|Active:[length(queries_active)]|Standby:[length(queries_standby)]"
return ..()
/// Resets the tracking numbers on the subsystem. Used by SStime_track.
+3 -3
View File
@@ -45,7 +45,7 @@ SUBSYSTEM_DEF(explosions)
/datum/controller/subsystem/explosions/stat_entry(msg)
msg += "C:{"
msg += "\n Cost:{"
msg += "LT:[round(cost_lowturf,1)]|"
msg += "MT:[round(cost_medturf,1)]|"
msg += "HT:[round(cost_highturf,1)]|"
@@ -59,7 +59,7 @@ SUBSYSTEM_DEF(explosions)
msg += "} "
msg += "AMT:{"
msg += "\n Count:{"
msg += "LT:[lowturf.len]|"
msg += "MT:[medturf.len]|"
msg += "HT:[highturf.len]|"
@@ -72,7 +72,7 @@ SUBSYSTEM_DEF(explosions)
msg += "TO:[throwturf.len]"
msg += "HTO:[held_throwturf.len]"
msg += "} "
msg += "}"
return ..()
/datum/controller/subsystem/explosions/proc/is_exploding()
+3 -3
View File
@@ -63,19 +63,19 @@ SUBSYSTEM_DEF(garbage)
var/list/counts = list()
for (var/list/L in queues)
counts += length(L)
msg += "Q:[counts.Join(",")]|D:[delslasttick]|G:[gcedlasttick]|"
msg += "\n Queue:[counts.Join(",")]|Dels:[delslasttick]|GCs:[gcedlasttick]|"
msg += "GR:"
if (!(delslasttick+gcedlasttick))
msg += "n/a|"
else
msg += "[round((gcedlasttick/(delslasttick+gcedlasttick))*100, 0.01)]%|"
msg += "TD:[totaldels]|TG:[totalgcs]|"
msg += "\n TD:[totaldels]|TG:[totalgcs]|"
if (!(totaldels+totalgcs))
msg += "n/a|"
else
msg += "TGR:[round((totalgcs/(totaldels+totalgcs))*100, 0.01)]%"
msg += " P:[pass_counts.Join(",")]"
msg += "\n P:[pass_counts.Join(",")]"
msg += "|F:[fail_counts.Join(",")]"
return ..()
+2 -3
View File
@@ -94,6 +94,5 @@ VERB_MANAGER_SUBSYSTEM_DEF(input)
current_clicks = 0
/datum/controller/subsystem/verb_manager/input/stat_entry(msg)
. = ..()
. += "M/S:[round(movements_per_second,0.01)] | C/S:[round(clicks_per_second,0.01)] ([round(delayed_clicks_per_second,0.01)] | CD: [round(average_click_delay / (1 SECONDS),0.01)])"
msg = "\n M/S:[round(movements_per_second,0.01)] | C/S:[round(clicks_per_second,0.01)] ([round(delayed_clicks_per_second,0.01)] | CD: [round(average_click_delay / (1 SECONDS),0.01)])"
return ..()
+2 -1
View File
@@ -41,7 +41,8 @@ SUBSYSTEM_DEF(ipintel)
))
/datum/controller/subsystem/ipintel/stat_entry(msg)
return "[..()] | M: [CONFIG_GET(number/ipintel_rate_minute) - rate_limit_minute]"
msg = "M:[CONFIG_GET(number/ipintel_rate_minute) - rate_limit_minute]"
return ..()
/datum/controller/subsystem/ipintel/proc/is_enabled()
+1 -1
View File
@@ -16,7 +16,7 @@ SUBSYSTEM_DEF(lighting)
#endif
/datum/controller/subsystem/lighting/stat_entry(msg)
msg = "L:[length(sources_queue)]|C:[length(corners_queue)]|O:[length(objects_queue)]"
msg = "\n Sources:[length(sources_queue)]|Corners:[length(corners_queue)]|Objects:[length(objects_queue)]"
return ..()
+1 -1
View File
@@ -86,7 +86,7 @@ SUBSYSTEM_DEF(machines)
propagate_network(power_cable, power_cable.powernet)
/datum/controller/subsystem/machines/stat_entry(msg)
msg = "M:[length(all_machines)]|MT:[length(machines_by_type)]|PM:[length(processing)]|PN:[length(powernets)]"
msg = "\n M:[length(all_machines)]|MT:[length(machines_by_type)]|PM:[length(processing)]|PN:[length(powernets)]"
return ..()
/datum/controller/subsystem/machines/fire(resumed = FALSE)
+1 -1
View File
@@ -334,7 +334,7 @@ SUBSYSTEM_DEF(polling)
QDEL_IN(finishing_poll, 0.5 SECONDS)
/datum/controller/subsystem/polling/stat_entry(msg)
msg += "Active: [length(currently_polling)] | Total: [total_polls]"
msg = "\n Active: [length(currently_polling)] | Total: [total_polls]"
var/datum/candidate_poll/soonest_to_complete = get_next_poll_to_finish()
if(soonest_to_complete)
msg += " | Next: [DisplayTimeText(soonest_to_complete.time_left())] ([length(soonest_to_complete.signed_up)] candidates)"
+1 -1
View File
@@ -26,7 +26,7 @@ SUBSYSTEM_DEF(radiation)
processing.Cut(1, 2)
/datum/controller/subsystem/radiation/stat_entry(msg)
msg = "[msg] | Pulses: [processing.len]"
msg = "Pulses:[processing.len]"
return ..()
/datum/controller/subsystem/radiation/proc/pulse(atom/source, datum/radiation_pulse_information/pulse_information)
+1 -1
View File
@@ -206,7 +206,7 @@ SUBSYSTEM_DEF(statpanels)
list("World Time:", "[world.time]"),
list("Globals:", GLOB.stat_entry(), text_ref(GLOB)),
list("[config]:", config.stat_entry(), text_ref(config)),
list("Byond:", "(FPS:[world.fps]) (TickCount:[world.time/world.tick_lag]) (TickDrift:[round(Master.tickdrift,1)]([round((Master.tickdrift/(world.time/world.tick_lag))*100,0.1)]%)) (Internal Tick Usage: [round(MAPTICK_LAST_INTERNAL_TICK_USAGE,0.1)]%)"),
list("Byond:", "(FPS:[world.fps]) (TickCount:[world.time/world.tick_lag]) (TickDrift:[round(Master.tickdrift,1)]([round((Master.tickdrift/(world.time/world.tick_lag))*100,0.1)]%))\n (Internal Tick Usage: [round(MAPTICK_LAST_INTERNAL_TICK_USAGE,0.1)]%)"),
list("Master Controller:", Master.stat_entry(), text_ref(Master)),
list("Failsafe Controller:", Failsafe.stat_entry(), text_ref(Failsafe)),
list("","")
+1 -1
View File
@@ -55,7 +55,7 @@ SUBSYSTEM_DEF(timer)
bucket_resolution = world.tick_lag
/datum/controller/subsystem/timer/stat_entry(msg)
msg = "B:[bucket_count] P:[length(second_queue)] H:[length(hashes)] C:[length(clienttime_timers)] S:[length(timer_id_dict)] RST:[bucket_reset_count]"
msg = "\n B:[bucket_count] P:[length(second_queue)] H:[length(hashes)] C:[length(clienttime_timers)] S:[length(timer_id_dict)] RST:[bucket_reset_count]"
return ..()
/datum/controller/subsystem/timer/proc/dump_timer_buckets(full = TRUE)
+1 -1
View File
@@ -45,7 +45,7 @@ SUBSYSTEM_DEF(tts)
return ..()
/datum/controller/subsystem/tts/stat_entry(msg)
msg = "Active:[length(in_process_http_messages)]|Standby:[length(queued_http_messages?.L)]|Avg:[average_tts_messages_time]"
msg = "\n Active:[length(in_process_http_messages)]|Standby:[length(queued_http_messages?.L)]|Avg:[average_tts_messages_time]"
return ..()
/proc/cmp_word_length_asc(datum/tts_request/a, datum/tts_request/b)
@@ -23,7 +23,7 @@ SUBSYSTEM_DEF(unplanned_controllers)
return ..()
/datum/controller/subsystem/unplanned_controllers/stat_entry(msg)
msg = "Planning AIs:[length(GLOB.unplanned_controllers[target_status])]"
msg = "\n Planning AIs:[length(GLOB.unplanned_controllers[target_status])]"
return ..()
/datum/controller/subsystem/unplanned_controllers/fire(resumed)
+3 -4
View File
@@ -66,10 +66,9 @@ SUBSYSTEM_DEF(wardrobe)
/datum/controller/subsystem/wardrobe/stat_entry(msg)
var/total_provided = max(stock_hit + stock_miss, 1)
var/current_max_store = (one_go_master * cache_intensity) + (overflow_lienency * length(canon_minimum))
msg += " P:[length(canon_minimum)] Q:[length(order_list)] S:[length(preloaded_stock)] I:[cache_intensity] O:[overflow_lienency]"
msg += " H:[stock_hit] M:[stock_miss] T:[total_provided] H/T:[PERCENT(stock_hit / total_provided)]% M/T:[PERCENT(stock_miss / total_provided)]%"
msg += " MAX:[current_max_store]"
msg += " ID:[inspect_delay] NI:[last_inspect_time + inspect_delay]"
msg += "\n P:[length(canon_minimum)] Q:[length(order_list)] S:[length(preloaded_stock)] I:[cache_intensity] O:[overflow_lienency] MAX:[current_max_store]"
msg += "\n H:[stock_hit] M:[stock_miss] T:[total_provided] H/T:[PERCENT(stock_hit / total_provided)]% M/T:[PERCENT(stock_miss / total_provided)]%"
msg += "\n ID:[inspect_delay] NI:[last_inspect_time + inspect_delay]"
return ..()
/datum/controller/subsystem/wardrobe/fire(resumed=FALSE)