From 7f24dc948e476aac557aa212c4946d471b7d00ee Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Mon, 6 Jul 2015 14:58:27 +0200 Subject: [PATCH] Re-implements Admin secrets as datums. --- baystation12.dme | 11 ++++++++++- code/modules/admin/admin.dm | 5 ++--- code/modules/admin/admin_secrets.dm | 16 +++++++++++++++- .../secrets/admin_secrets/bombing_list.dm | 12 ++++++++++++ .../admin/secrets/admin_secrets/list_dna.dm | 14 ++++++++++++++ .../admin_secrets/list_fingerprints.dm | 19 +++++++++++++++++++ .../secrets/admin_secrets/show_ai_laws.dm | 7 +++++++ .../admin_secrets/show_crew_manifest.dm | 12 ++++++++++++ .../secrets/admin_secrets/show_game_mode.dm | 14 ++++++++++++++ .../secrets/admin_secrets/show_law_changes.dm | 15 +++++++++++++++ .../secrets/admin_secrets/show_signalers.dm | 15 +++++++++++++++ .../admin_secrets/traitors_and_objectives.dm | 7 +++++++ .../secrets/{ => random_events}/gravity.dm | 10 ++++++---- code/modules/mob/dead/observer/observer.dm | 2 +- 14 files changed, 149 insertions(+), 10 deletions(-) create mode 100644 code/modules/admin/secrets/admin_secrets/bombing_list.dm create mode 100644 code/modules/admin/secrets/admin_secrets/list_dna.dm create mode 100644 code/modules/admin/secrets/admin_secrets/list_fingerprints.dm create mode 100644 code/modules/admin/secrets/admin_secrets/show_ai_laws.dm create mode 100644 code/modules/admin/secrets/admin_secrets/show_crew_manifest.dm create mode 100644 code/modules/admin/secrets/admin_secrets/show_game_mode.dm create mode 100644 code/modules/admin/secrets/admin_secrets/show_law_changes.dm create mode 100644 code/modules/admin/secrets/admin_secrets/show_signalers.dm create mode 100644 code/modules/admin/secrets/admin_secrets/traitors_and_objectives.dm rename code/modules/admin/secrets/{ => random_events}/gravity.dm (89%) diff --git a/baystation12.dme b/baystation12.dme index 7bc13ae072f..b45515e6d0d 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -843,7 +843,16 @@ #include "code\modules\admin\ToRban.dm" #include "code\modules\admin\DB ban\functions.dm" #include "code\modules\admin\permissionverbs\permissionedit.dm" -#include "code\modules\admin\secrets\gravity.dm" +#include "code\modules\admin\secrets\admin_secrets\bombing_list.dm" +#include "code\modules\admin\secrets\admin_secrets\list_dna.dm" +#include "code\modules\admin\secrets\admin_secrets\list_fingerprints.dm" +#include "code\modules\admin\secrets\admin_secrets\show_ai_laws.dm" +#include "code\modules\admin\secrets\admin_secrets\show_crew_manifest.dm" +#include "code\modules\admin\secrets\admin_secrets\show_game_mode.dm" +#include "code\modules\admin\secrets\admin_secrets\show_law_changes.dm" +#include "code\modules\admin\secrets\admin_secrets\show_signalers.dm" +#include "code\modules\admin\secrets\admin_secrets\traitors_and_objectives.dm" +#include "code\modules\admin\secrets\random_events\gravity.dm" #include "code\modules\admin\verbs\adminhelp.dm" #include "code\modules\admin\verbs\adminjump.dm" #include "code\modules\admin\verbs\adminpm.dm" diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index dba65192968..06adf11b571 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -610,12 +610,11 @@ proc/admin_notice(var/message, var/rights) dat += "[category.name]
" if(category.desc) dat += "[category.desc]
" - dat += "
" for(var/datum/admin_secret_item/item in category.items) if(!item.can_execute(usr)) continue - dat += "[item.name]
" - + dat += "[item.name()]
" + dat += "
" usr << browse(dat, "window=secrets") return diff --git a/code/modules/admin/admin_secrets.dm b/code/modules/admin/admin_secrets.dm index 87c04ea625f..b8c4b2ef6b7 100644 --- a/code/modules/admin/admin_secrets.dm +++ b/code/modules/admin/admin_secrets.dm @@ -40,8 +40,12 @@ var/datum/admin_secrets/admin_secrets = new() /datum/admin_secret_item var/name = "" var/category = null + var/log = 1 var/permissions = R_HOST +/datum/admin_secret_item/proc/name() + return name + /datum/admin_secret_item/proc/can_execute(var/mob/user) return check_rights(permissions, 0, user) @@ -49,18 +53,28 @@ var/datum/admin_secrets/admin_secrets = new() if(!can_execute(user)) return 0 - log_admin("[key_name(user)] used secret [name]") + if(log) + log_admin("[key_name(user)] used secret '[name()]'") return 1 /************************* * Pre-defined categories * *************************/ +/datum/admin_secret_category/admin_secrets + name = "Admin Secrets" + /datum/admin_secret_category/random_events name = "'Random' Events" /************************* * Pre-defined base items * *************************/ +/datum/admin_secret_item/admin_secret + category = /datum/admin_secret_category/admin_secrets + log = 0 + permissions = R_ADMIN + + /datum/admin_secret_item/random_event category = /datum/admin_secret_category/random_events permissions = R_FUN diff --git a/code/modules/admin/secrets/admin_secrets/bombing_list.dm b/code/modules/admin/secrets/admin_secrets/bombing_list.dm new file mode 100644 index 00000000000..fa3f2683968 --- /dev/null +++ b/code/modules/admin/secrets/admin_secrets/bombing_list.dm @@ -0,0 +1,12 @@ +/datum/admin_secret_item/admin_secret/bombing_list + name = "Bombing List" + +/datum/admin_secret_item/admin_secret/bombing_list/execute(var/mob/user) + . = ..() + if(!.) + return + + var/dat = "Bombing List
" + for(var/l in bombers) + dat += text("[l]
") + user << browse(dat, "window=bombers") diff --git a/code/modules/admin/secrets/admin_secrets/list_dna.dm b/code/modules/admin/secrets/admin_secrets/list_dna.dm new file mode 100644 index 00000000000..f1c49f48972 --- /dev/null +++ b/code/modules/admin/secrets/admin_secrets/list_dna.dm @@ -0,0 +1,14 @@ +/datum/admin_secret_item/admin_secret/list_dna + name = "List DNA (Blood)" + +/datum/admin_secret_item/admin_secret/list_dna/execute(var/mob/user) + . = ..() + if(!.) + return + var/dat = "Showing DNA from blood.
" + dat += "" + for(var/mob/living/carbon/human/H in mob_list) + if(H.dna && H.ckey) + dat += "" + dat += "
NameDNABlood Type
[H][H.dna.unique_enzymes][H.b_type]
" + user << browse(dat, "window=DNA;size=440x410") diff --git a/code/modules/admin/secrets/admin_secrets/list_fingerprints.dm b/code/modules/admin/secrets/admin_secrets/list_fingerprints.dm new file mode 100644 index 00000000000..710cdaf4fed --- /dev/null +++ b/code/modules/admin/secrets/admin_secrets/list_fingerprints.dm @@ -0,0 +1,19 @@ +/datum/admin_secret_item/admin_secret/list_fingerprints + name = "List Fingerprints" + +/datum/admin_secret_item/admin_secret/list_fingerprints/execute(var/mob/user) + . = ..() + if(!.) + return + var/dat = "Showing Fingerprints.
" + dat += "" + for(var/mob/living/carbon/human/H in mob_list) + if(H.ckey) + if(H.dna && H.dna.uni_identity) + dat += "" + else if(H.dna && !H.dna.uni_identity) + dat += "" + else if(!H.dna) + dat += "" + dat += "
NameFingerprints
[H][md5(H.dna.uni_identity)]
[H]H.dna.uni_identity = null
[H]H.dna = null
" + usr << browse(dat, "window=fingerprints;size=440x410") diff --git a/code/modules/admin/secrets/admin_secrets/show_ai_laws.dm b/code/modules/admin/secrets/admin_secrets/show_ai_laws.dm new file mode 100644 index 00000000000..c76ff2d9c18 --- /dev/null +++ b/code/modules/admin/secrets/admin_secrets/show_ai_laws.dm @@ -0,0 +1,7 @@ +/datum/admin_secret_item/admin_secret/show_ai_laws + name = "Show AI laws" + +/datum/admin_secret_item/admin_secret/show_ai_laws/execute(var/mob/user) + . = ..() + if(.) + user.client.holder.output_ai_laws() diff --git a/code/modules/admin/secrets/admin_secrets/show_crew_manifest.dm b/code/modules/admin/secrets/admin_secrets/show_crew_manifest.dm new file mode 100644 index 00000000000..f4bb82224ba --- /dev/null +++ b/code/modules/admin/secrets/admin_secrets/show_crew_manifest.dm @@ -0,0 +1,12 @@ +/datum/admin_secret_item/admin_secret/show_crew_manifest + name = "Show Crew Manifest" + +/datum/admin_secret_item/admin_secret/show_crew_manifest/execute(var/mob/user) + . = ..() + if(!.) + return + var/dat + dat += "

Crew Manifest

" + dat += data_core.get_manifest() + + user << browse(dat, "window=manifest;size=370x420;can_close=1") diff --git a/code/modules/admin/secrets/admin_secrets/show_game_mode.dm b/code/modules/admin/secrets/admin_secrets/show_game_mode.dm new file mode 100644 index 00000000000..b586e108466 --- /dev/null +++ b/code/modules/admin/secrets/admin_secrets/show_game_mode.dm @@ -0,0 +1,14 @@ +/datum/admin_secret_item/admin_secret/show_game_mode + name = "Show Game Mode" + +/datum/admin_secret_item/admin_secret/show_game_mode/can_execute(var/mob/user) + if(!ticker) + return 0 + return ..() + +/datum/admin_secret_item/admin_secret/show_game_mode/execute(var/mob/user) + . = ..() + if(!.) + return + if (ticker.mode) alert("The game mode is [ticker.mode.name]") + else alert("For some reason there's a ticker, but not a game mode") diff --git a/code/modules/admin/secrets/admin_secrets/show_law_changes.dm b/code/modules/admin/secrets/admin_secrets/show_law_changes.dm new file mode 100644 index 00000000000..190de7b47a9 --- /dev/null +++ b/code/modules/admin/secrets/admin_secrets/show_law_changes.dm @@ -0,0 +1,15 @@ +/datum/admin_secret_item/admin_secret/show_law_changes + name = "Show law changes" + +/datum/admin_secret_item/admin_secret/show_law_changes/name() + return "Show last [length(lawchanges)] law changes" + +/datum/admin_secret_item/admin_secret/show_law_changes/execute(var/mob/user) + . = ..() + if(!.) + return + + var/dat = "Showing last [length(lawchanges)] law changes.
" + for(var/sig in lawchanges) + dat += "[sig]
" + user << browse(dat, "window=lawchanges;size=800x500") diff --git a/code/modules/admin/secrets/admin_secrets/show_signalers.dm b/code/modules/admin/secrets/admin_secrets/show_signalers.dm new file mode 100644 index 00000000000..0e1269ea37b --- /dev/null +++ b/code/modules/admin/secrets/admin_secrets/show_signalers.dm @@ -0,0 +1,15 @@ +/datum/admin_secret_item/admin_secret/show_signalers + name = "Show last signalers" + +/datum/admin_secret_item/admin_secret/show_signalers/name() + return "Show last [length(lastsignalers)] signalers" + +/datum/admin_secret_item/admin_secret/show_signalers/execute(var/mob/user) + . = ..() + if(!.) + return + + var/dat = "Showing last [length(lastsignalers)] signalers.
" + for(var/sig in lastsignalers) + dat += "[sig]
" + user << browse(dat, "window=lastsignalers;size=800x500") diff --git a/code/modules/admin/secrets/admin_secrets/traitors_and_objectives.dm b/code/modules/admin/secrets/admin_secrets/traitors_and_objectives.dm new file mode 100644 index 00000000000..591c13bd3fb --- /dev/null +++ b/code/modules/admin/secrets/admin_secrets/traitors_and_objectives.dm @@ -0,0 +1,7 @@ +/datum/admin_secret_item/admin_secret/traitors_and_objectives + name = "Show current traitors and objectives" + +/datum/admin_secret_item/admin_secret/traitors_and_objectives/execute(var/mob/user) + . = ..() + if(.) + user.client.holder.check_antagonists() diff --git a/code/modules/admin/secrets/gravity.dm b/code/modules/admin/secrets/random_events/gravity.dm similarity index 89% rename from code/modules/admin/secrets/gravity.dm rename to code/modules/admin/secrets/random_events/gravity.dm index 8ff9c915d43..51f8f1d1871 100644 --- a/code/modules/admin/secrets/gravity.dm +++ b/code/modules/admin/secrets/random_events/gravity.dm @@ -4,15 +4,17 @@ /datum/admin_secret_item/random_event/gravity name = "Toggle station artificial gravity" +/datum/admin_secret_item/random_event/gravity/can_execute(var/mob/user) + if(!(ticker && ticker.mode)) + return 0 + + return ..() + /datum/admin_secret_item/random_event/gravity/execute(var/mob/user) . = ..() if(!.) return - if(!(ticker && ticker.mode)) - user << "Please wait until the game starts! Not sure how it will work otherwise." - return - gravity_is_on = !gravity_is_on for(var/area/A in world) A.gravitychange(gravity_is_on,A) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 85b71aef4fd..edf8ae950e2 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -464,7 +464,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp host << "You are now a mouse. Try to avoid interaction with players, and do not give hints away that you are more than a simple rodent." /mob/dead/observer/verb/view_manfiest() - set name = "View Crew Manifest" + set name = "Show Crew Manifest" set category = "Ghost" var/dat