diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 9a58e38085e..2af98275724 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -133,36 +133,6 @@ message_admins("[key_name_admin(usr)] toggled tinted_weldhelh.") SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Tinted Welding Helmets", "[GLOB.tinted_weldhelh ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/datum/admins/proc/output_ai_laws() - var/ai_number = 0 - for(var/i in GLOB.silicon_mobs) - var/mob/living/silicon/S = i - ai_number++ - - var/message = "" - - if(isAI(S)) - message += "AI [key_name(S, usr)]'s laws:" - else if(iscyborg(S)) - var/mob/living/silicon/robot/R = S - message += "CYBORG [key_name(S, usr)] [R.connected_ai?"(Slaved to: [key_name(R.connected_ai)])":"(Independent)"]: laws:" - else if (ispAI(S)) - message += "pAI [key_name(S, usr)]'s laws:" - else - message += "SOMETHING SILICON [key_name(S, usr)]'s laws:" - - message += "
" - - if (S.laws == null) - message += "[key_name(S, usr)]'s laws are null?? Contact a coder." - else - message += jointext(S.laws.get_law_list(include_zeroth = TRUE), "
") - - to_chat(usr, message, confidential = TRUE) - - if(!ai_number) - to_chat(usr, "No AIs located" , confidential = TRUE) - /datum/admins/proc/dynamic_mode_options(mob/user) var/dat = {"

Dynamic Mode Options


diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 3bd0d13ff62..ba868766e4d 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -89,6 +89,12 @@ GLOBAL_PROTECT(admin_verbs_admin) /datum/admins/proc/paintings_manager, /datum/admins/proc/display_tags, /datum/admins/proc/fishing_calculator, + /client/proc/list_bombers, + /client/proc/list_signalers, + /client/proc/list_law_changes, + /client/proc/show_manifest, + /client/proc/list_dna, + /client/proc/list_fingerprints, ) GLOBAL_LIST_INIT(admin_verbs_ban, list(/client/proc/unban_panel, /client/proc/ban_panel, /client/proc/stickybanpanel)) GLOBAL_PROTECT(admin_verbs_ban) @@ -378,6 +384,54 @@ GLOBAL_PROTECT(admin_verbs_poll) message_admins("[key_name_admin(usr)] checked antagonists.") SSblackbox.record_feedback("tally", "admin_verb", 1, "Check Antagonists") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/proc/list_bombers() + set name = "List Bombers" + set category = "Admin.Game" + if(!holder) + return + holder.list_bombers() + SSblackbox.record_feedback("tally", "admin_verb", 1, "List Bombers") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/client/proc/list_signalers() + set name = "List Signalers" + set category = "Admin.Game" + if(!holder) + return + holder.list_signalers() + SSblackbox.record_feedback("tally", "admin_verb", 1, "List Signalers") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/client/proc/list_law_changes() + set name = "List Law Changes" + set category = "Debug" + if(!holder) + return + holder.list_law_changes() + SSblackbox.record_feedback("tally", "admin_verb", 1, "List Law Changes") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/client/proc/show_manifest() + set name = "Show Manifest" + set category = "Debug" + if(!holder) + return + holder.show_manifest() + SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Manifest") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/client/proc/list_dna() + set name = "List DNA" + set category = "Debug" + if(!holder) + return + holder.list_dna() + SSblackbox.record_feedback("tally", "admin_verb", 1, "List DNA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/client/proc/list_fingerprints() + set name = "List Fingerprints" + set category = "Debug" + if(!holder) + return + holder.list_fingerprints() + SSblackbox.record_feedback("tally", "admin_verb", 1, "List Fingerprints") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + /client/proc/ban_panel() set name = "Banning Panel" set category = "Admin" diff --git a/code/modules/admin/verbs/list_exposer.dm b/code/modules/admin/verbs/list_exposer.dm new file mode 100644 index 00000000000..b4cd1f42e76 --- /dev/null +++ b/code/modules/admin/verbs/list_exposer.dm @@ -0,0 +1,88 @@ +// All the procs that admins can use to view something like a global list in a cleaner manner than just View Variables are contained in this file. + +/datum/admins/proc/list_bombers() + if(!SSticker.HasRoundStarted()) + tgui_alert(usr, "The game hasn't started yet!") + return + var/data = "Bombing List
" + for(var/entry in GLOB.bombers) + data += text("[entry]
") + usr << browse(data, "window=bombers;size=800x500") + +/datum/admins/proc/list_signalers() + if(!SSticker.HasRoundStarted()) + tgui_alert(usr, "The game hasn't started yet!") + return + var/data = "Showing last [length(GLOB.lastsignalers)] signalers.
" + for(var/entry in GLOB.lastsignalers) + data += "[entry]
" + usr << browse(data, "window=lastsignalers;size=800x500") + +/datum/admins/proc/list_law_changes() + if(!SSticker.HasRoundStarted()) + tgui_alert(usr, "The game hasn't started yet!") + return + var/data = "Showing last [length(GLOB.lawchanges)] law changes.
" + for(var/entry in GLOB.lawchanges) + data += "[entry]
" + usr << browse(data, "window=lawchanges;size=800x500") + +/datum/admins/proc/list_dna() + var/data = "Showing DNA from blood.
" + data += "" + for(var/entry in GLOB.human_list) + var/mob/living/carbon/human/subject = entry + if(subject.ckey) + data += "" + data += "
NameDNABlood Type
[subject][subject.dna.unique_enzymes][subject.dna.blood_type]
" + usr << browse(data, "window=DNA;size=440x410") + +/datum/admins/proc/list_fingerprints() //kid named fingerprints + var/data = "Showing Fingerprints.
" + data += "" + for(var/entry in GLOB.human_list) + var/mob/living/carbon/human/subject = entry + if(subject.ckey) + data += "" + data += "
NameFingerprints
[subject][md5(subject.dna.unique_identity)]
" + usr << browse(data, "window=fingerprints;size=440x410") + +/datum/admins/proc/show_manifest() + if(!SSticker.HasRoundStarted()) + tgui_alert(usr, "The game hasn't started yet!") + return + var/data = "Showing Crew Manifest.
" + data += "" + for(var/datum/data/record/entry in GLOB.data_core.general) + data += "" + data += "
NamePosition
[entry.fields["name"]][entry.fields["rank"]][entry.fields["rank"] != entry.fields["trim"] ? " ([entry.fields["trim"]])" : ""]
" + usr << browse(data, "window=manifest;size=440x410") + +/datum/admins/proc/output_ai_laws() + var/law_bound_entities = 0 + for(var/mob/living/silicon/subject as anything in GLOB.silicon_mobs) + law_bound_entities++ + + var/message = "" + + if(isAI(subject)) + message += "AI [key_name(subject, usr)]'s laws:" + else if(iscyborg(subject)) + var/mob/living/silicon/robot/borg = subject + message += "CYBORG [key_name(subject, usr)] [borg.connected_ai?"(Slaved to: [key_name(borg.connected_ai)])":"(Independent)"]: laws:" + else if (ispAI(subject)) + message += "pAI [key_name(subject, usr)]'s laws:" + else + message += "SOMETHING SILICON [key_name(subject, usr)]'s laws:" + + message += "
" + + if (!subject.laws) + message += "[key_name(subject, usr)]'s laws are null?? Contact a coder." + else + message += jointext(subject.laws.get_law_list(include_zeroth = TRUE), "
") + + to_chat(usr, message, confidential = TRUE) + + if(!law_bound_entities) + to_chat(usr, "No law bound entities located", confidential = TRUE) diff --git a/code/modules/admin/verbs/secrets.dm b/code/modules/admin/verbs/secrets.dm index bf1112d7811..eb17cff119a 100644 --- a/code/modules/admin/verbs/secrets.dm +++ b/code/modules/admin/verbs/secrets.dm @@ -91,6 +91,7 @@ GLOBAL_DATUM(everyone_a_traitor, /datum/everyone_is_a_traitor_controller) sec_job.total_positions = -1 sec_job.spawn_positions = -1 message_admins("[key_name_admin(holder)] has removed the cap on security officers.") + //Buttons for helpful stuff. This is where people land in the tgui if("clear_virus") var/choice = tgui_alert(usr, "Are you sure you want to cure all disease?",, list("Yes", "Cancel")) @@ -99,51 +100,31 @@ GLOBAL_DATUM(everyone_a_traitor, /datum/everyone_is_a_traitor_controller) for(var/thing in SSdisease.active_diseases) var/datum/disease/D = thing D.cure(0) + if("list_bombers") - var/dat = "Bombing List
" - for(var/l in GLOB.bombers) - dat += text("[l]
") - holder << browse(dat, "window=bombers") + holder.list_bombers() if("list_signalers") - var/dat = "Showing last [length(GLOB.lastsignalers)] signalers.
" - for(var/sig in GLOB.lastsignalers) - dat += "[sig]
" - holder << browse(dat, "window=lastsignalers;size=800x500") + holder.list_signalers() + if("list_lawchanges") - var/dat = "Showing last [length(GLOB.lawchanges)] law changes.
" - for(var/sig in GLOB.lawchanges) - dat += "[sig]
" - holder << browse(dat, "window=lawchanges;size=800x500") + holder.list_law_changes() + if("showailaws") - holder.holder.output_ai_laws()//huh, inconvenient var naming, huh? + holder.check_ai_laws() + if("manifest") - var/dat = "Showing Crew Manifest.
" - dat += "" - for(var/datum/data/record/t in GLOB.data_core.general) - dat += "" - dat += "
NamePosition
[t.fields["name"]][t.fields["rank"]][t.fields["rank"] != t.fields["trim"] ? " ([t.fields["trim"]])" : ""]
" - holder << browse(dat, "window=manifest;size=440x410") + holder.show_manifest() + if("dna") - var/dat = "Showing DNA from blood.
" - dat += "" - for(var/i in GLOB.human_list) - var/mob/living/carbon/human/H = i - if(H.ckey) - dat += "" - dat += "
NameDNABlood Type
[H][H.dna.unique_enzymes][H.dna.blood_type]
" - holder << browse(dat, "window=DNA;size=440x410") + holder.list_dna() + if("fingerprints") - var/dat = "Showing Fingerprints.
" - dat += "" - for(var/i in GLOB.human_list) - var/mob/living/carbon/human/H = i - if(H.ckey) - dat += "" - dat += "
NameFingerprints
[H][md5(H.dna.unique_identity)]
" - holder << browse(dat, "window=fingerprints;size=440x410") + holder.list_fingerprints() + if("ctfbutton") toggle_id_ctf(holder, "centcom") + if("tdomereset") var/delete_mobs = tgui_alert(usr,"Clear all mobs?","Confirm",list("Yes","No","Cancel")) if(delete_mobs == "Cancel") diff --git a/tgstation.dme b/tgstation.dme index 10bf0ffca8d..a3c60ca8029 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2179,6 +2179,7 @@ #include "code\modules\admin\verbs\hiddenprints.dm" #include "code\modules\admin\verbs\highlander_datum.dm" #include "code\modules\admin\verbs\individual_logging.dm" +#include "code\modules\admin\verbs\list_exposer.dm" #include "code\modules\admin\verbs\machine_upgrade.dm" #include "code\modules\admin\verbs\manipulate_organs.dm" #include "code\modules\admin\verbs\map_template_loadverb.dm"