diff --git a/code/_helpers/type2type.dm b/code/_helpers/type2type.dm index 55dad2242f3..bdfa4e0fbbe 100644 --- a/code/_helpers/type2type.dm +++ b/code/_helpers/type2type.dm @@ -273,3 +273,11 @@ for(var/A in value) if(var_source.vars.Find(A)) . += A + +/proc/get_end_section_of_type(type) + var/strtype = "[type]" + var/delim_pos = findlasttext(strtype, "/") + if(delim_pos == 0) + return strtype + return copytext(strtype, delim_pos) + diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index 6d01f6ee599..7e2e1a42e3d 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -63,61 +63,57 @@ usr.client.debug_variables(antag) message_admins("Admin [key_name_admin(usr)] is debugging the [antag.role_text] template.") -/client/proc/debug_controller(controller in list("Master","Ticker","Ticker Process","Air","Jobs","Radio","Supply","Emergency Shuttle","Configuration","pAI", "Cameras", "Transfer Controller", "Gas Data","Plants","Alarm","Xenobio")) +/client/proc/debug_controller() set category = "Debug" set name = "Debug Controller" - set desc = "Debug the various periodic loop controllers for the game (be careful!)" + set desc = "Debug the various subsystems/controllers for the game (be careful!)" - if(!holder) return - switch(controller) - if("Master") - debug_variables(master_controller) - feedback_add_details("admin_verb","DMC") - if("Ticker") - debug_variables(ticker) - feedback_add_details("admin_verb","DTicker") - if("Ticker Process") - debug_variables(tickerProcess) - feedback_add_details("admin_verb","DTickerProcess") - if("Air") - debug_variables(air_master) - feedback_add_details("admin_verb","DAir") - if("Jobs") - debug_variables(job_master) - feedback_add_details("admin_verb","DJobs") - if("Radio") - debug_variables(radio_controller) - feedback_add_details("admin_verb","DRadio") - if("Supply") - debug_variables(supply_controller) - feedback_add_details("admin_verb","DSupply") - if("Emergency Shuttle") - debug_variables(emergency_shuttle) - feedback_add_details("admin_verb","DEmergency") - if("Configuration") - debug_variables(config) - feedback_add_details("admin_verb","DConf") - if("pAI") - debug_variables(paiController) - feedback_add_details("admin_verb","DpAI") - if("Cameras") - debug_variables(cameranet) - feedback_add_details("admin_verb","DCameras") - if("Transfer Controller") - debug_variables(transfer_controller) - feedback_add_details("admin_verb","DAutovoter") - if("Gas Data") - debug_variables(gas_data) - feedback_add_details("admin_verb","DGasdata") - if("Plants") - debug_variables(plant_controller) - feedback_add_details("admin_verb", "DPlants") - if("Alarm") - debug_variables(alarm_manager) - feedback_add_details("admin_verb", "DAlarm") - message_admins("Admin [key_name_admin(usr)] is debugging the [controller] controller.") - return + if(!holder) + return + var/list/options = list() + options["MC"] = Master + options["Failsafe"] = Failsafe + options["Configuration"] = config + for(var/i in Master.subsystems) + var/datum/controller/subsystem/S = i + if(!istype(S)) //Eh, we're a debug verb, let's have typechecking. + continue + var/strtype = "SS[get_end_section_of_type(S.type)]" + if(options[strtype]) + var/offset = 2 + while(istype(options["[strtype]_[offset] - DUPE ERROR"], /datum/controller/subsystem)) + offset++ + options["[strtype]_[offset] - DUPE ERROR"] = S //Something is very, very wrong. + else + options[strtype] = S + //Goon PS stuff, and other yet-to-be-subsystem things. + options["LEGACY: master_controller"] = master_controller + options["LEGACY: ticker"] = ticker + options["LEGACY: tickerProcess"] = tickerProcess + options["LEGACY: air_master"] = air_master + options["LEGACY: job_master"] = job_master + options["LEGACY: radio_controller"] = radio_controller + options["LEGACY: supply_controller"] = supply_controller + options["LEGACY: emergency_shuttle"] = emergency_shuttle + options["LEGACY: paiController"] = paiController + options["LEGACY: cameranet"] = cameranet + options["LEGACY: transfer_controller"] = transfer_controller + options["LEGACY: gas_data"] = gas_data + options["LEGACY: plant_controller"] = plant_controller + options["LEGACY: alarm_manager"] = alarm_manager + + var/pick = input(mob, "Choose a controller to debug/view variables of.", "VV controller:") as null|anything in options + if(!pick) + return + var/datum/D = options[pick] + if(!istype(D)) + return + feedback_add_details("admin_verb", "DebugController") + message_admins("Admin [key_name_admin(mob)] is debugging the [pick] controller.") + debug_variables(D) + +//VOREStation Edit Begin /client/proc/debug_process_scheduler() set category = "Debug" set name = "Debug Process Scheduler" @@ -140,3 +136,4 @@ debug_variables(P) feedback_add_details("admin_verb", "DProcCtrl") message_admins("Admin [key_name_admin(usr)] is debugging the [controller] controller.") +//VOREStation Edit End \ No newline at end of file