Browser/TGUI Stat Panels (#24065)

* initial commit (broken)

* load the html

* fix this

* Fix various issues with browser statpanel

* Fix Alt Clicking opening up a window and Add back some object verbs to the browser stat panel

* Optimize stat panel and fix guardian verbs

* Restyles Stat Panel, Adds Subpanel Sub-Categories

* Use better layout for verbs in stat panel

* Updates statpanel verb widths to be more dynamic at higher screen resolutions.

* Adjust stat panel grid item widths and breakpoints

* refactors statpanel to use tgui API

* CI moment

* more CI

* this stupid thing

* Apply suggestions from code review

Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/modules/client/client_procs.dm

* ci fix

* emergency mc debug view

* temp revert some code change suggestions due to massive runtiming

* proper atom click topic implementation

* optimise

* mob clicking in stat panels work

* yeet spell tab thingy

* yeet simple stat panel pref

* allow insertion of html into MC tab content

* tidy up status tab

* Apply suggestions from code review

* fix this

* fix CI

* oops

* fix index runtime

* fixes MC tab showing up for mentors, fixes runtime

* safeties!

* Return of theme support

* more fixes

* fix view range pref, tidy prefs tab

* Remove old stat panel from themes

* fixes

* make sure verbs don't go missing

* fix ooc/looc breaking

* Revert "make sure verbs don't go missing"

This reverts commit 7d07ad45ed.

* fix this properly

* fix stat panel hitting rate limiters

* fix borg status tab

* Object Window Niceties

* Adds file cycling for icon2base64

* optimizes icon2html() for icon files known to be in the rsc at compile time

* CI moment

* remove dupe emergency shuttle timers

* more robust verb updates

* statpanel tweaks

* zip archived changelog to avoid search results

* optimise

* fix mentor chat wonkyness when disabled

* debug log moment

* i am very smart

* reintroduce this because it was needed

* better time listings

* less jank

* stops telling admins they arent mentors

* returns MC tab pref for admins

* Update code/controllers/subsystem/SSstatpanel.dm

Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>

* lewcc

* OD typemaker prep

---------

Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
Co-authored-by: Aylong <alexanderkitsa@gmail.com>
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
This commit is contained in:
S34N
2024-03-07 10:31:36 -05:00
committed by GitHub
co-authored by GDN Burzah Luc Aylong
parent 19a3f768c8
commit 91660824fa
124 changed files with 2585 additions and 27334 deletions
+1 -1
View File
@@ -56,7 +56,7 @@ GLOBAL_PROTECT(admin_ranks) // this shit is being protected for obvious reasons
//clear the datums references
GLOB.admin_datums.Cut()
for(var/client/C in GLOB.admins)
C.remove_admin_verbs()
C.hide_verbs()
C.holder = null
GLOB.admins.Cut()
+68 -71
View File
@@ -70,7 +70,8 @@ GLOBAL_LIST_INIT(admin_verbs_admin, list(
/client/proc/view_instances,
/client/proc/start_vote,
/client/proc/ping_all_admins,
/client/proc/show_watchlist
/client/proc/show_watchlist,
/client/proc/debugstatpanel
))
GLOBAL_LIST_INIT(admin_verbs_ban, list(
/client/proc/ban_panel,
@@ -180,8 +181,8 @@ GLOBAL_LIST_INIT(admin_verbs_debug, list(
/client/proc/debug_timers,
/client/proc/force_verb_bypass,
/client/proc/show_gc_queues,
/client/proc/toggle_mctabs,
/client/proc/debug_global_variables
/client/proc/debug_global_variables,
/client/proc/toggle_mctabs
))
GLOBAL_LIST_INIT(admin_verbs_possess, list(
/proc/possess,
@@ -248,87 +249,61 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
/client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify*/
/client/proc/ss_breakdown,
/client/proc/show_gc_queues,
/client/proc/toggle_mctabs,
/client/proc/debug_global_variables,
/client/proc/visualise_active_turfs,
/client/proc/debug_timers,
/client/proc/timer_log
/client/proc/timer_log,
/client/proc/toggle_mctabs
))
/client/proc/add_admin_verbs()
if(holder)
// If they have ANYTHING OTHER THAN ONLY VIEW RUNTIMES (65536), then give them the default admin verbs
if(holder.rights != R_VIEWRUNTIMES)
verbs += GLOB.admin_verbs_default
add_verb(src, GLOB.admin_verbs_default)
if(holder.rights & R_BUILDMODE)
verbs += /client/proc/togglebuildmodeself
add_verb(src, /client/proc/togglebuildmodeself)
if(holder.rights & R_ADMIN)
verbs += GLOB.admin_verbs_admin
verbs += GLOB.admin_verbs_ticket
add_verb(src, GLOB.admin_verbs_admin)
add_verb(src, GLOB.admin_verbs_ticket)
spawn(1)
control_freak = 0
if(holder.rights & R_BAN)
verbs += GLOB.admin_verbs_ban
add_verb(src, GLOB.admin_verbs_ban)
if(holder.rights & R_EVENT)
verbs += GLOB.admin_verbs_event
add_verb(src, GLOB.admin_verbs_event)
if(holder.rights & R_SERVER)
verbs += GLOB.admin_verbs_server
add_verb(src, GLOB.admin_verbs_server)
if(holder.rights & R_DEBUG)
verbs += GLOB.admin_verbs_debug
add_verb(src, GLOB.admin_verbs_debug)
spawn(1)
control_freak = 0 // Setting control_freak to 0 allows you to use the Profiler and other client-side tools
if(holder.rights & R_POSSESS)
verbs += GLOB.admin_verbs_possess
add_verb(src, GLOB.admin_verbs_possess)
if(holder.rights & R_PERMISSIONS)
verbs += GLOB.admin_verbs_permissions
add_verb(src, GLOB.admin_verbs_permissions)
if(holder.rights & R_STEALTH)
verbs += /client/proc/stealth
add_verb(src, /client/proc/stealth)
if(holder.rights & R_REJUVINATE)
verbs += GLOB.admin_verbs_rejuv
add_verb(src, GLOB.admin_verbs_rejuv)
if(holder.rights & R_SOUNDS)
verbs += GLOB.admin_verbs_sounds
add_verb(src, GLOB.admin_verbs_sounds)
if(holder.rights & R_SPAWN)
verbs += GLOB.admin_verbs_spawn
add_verb(src, GLOB.admin_verbs_spawn)
if(holder.rights & R_MOD)
verbs += GLOB.admin_verbs_mod
add_verb(src, GLOB.admin_verbs_mod)
if(holder.rights & R_MENTOR)
verbs += GLOB.admin_verbs_mentor
add_verb(src, GLOB.admin_verbs_mentor)
if(holder.rights & R_PROCCALL)
verbs += GLOB.admin_verbs_proccall
add_verb(src, GLOB.admin_verbs_proccall)
if(holder.rights & R_MAINTAINER)
verbs += GLOB.admin_verbs_maintainer
add_verb(src, GLOB.admin_verbs_maintainer)
if(holder.rights & R_VIEWRUNTIMES)
verbs += GLOB.view_runtimes_verbs
add_verb(src, GLOB.view_runtimes_verbs)
spawn(1) // This setting exposes the profiler for people with R_VIEWRUNTIMES. They must still have it set in cfg/admin.txt
control_freak = 0
if(is_connecting_from_localhost())
verbs += /client/proc/export_current_character
/client/proc/remove_admin_verbs()
verbs.Remove(
GLOB.admin_verbs_default,
/client/proc/togglebuildmodeself,
GLOB.admin_verbs_admin,
GLOB.admin_verbs_ban,
GLOB.admin_verbs_event,
GLOB.admin_verbs_server,
GLOB.admin_verbs_debug,
GLOB.admin_verbs_possess,
GLOB.admin_verbs_permissions,
/client/proc/stealth,
GLOB.admin_verbs_rejuv,
GLOB.admin_verbs_sounds,
GLOB.admin_verbs_spawn,
GLOB.admin_verbs_mod,
GLOB.admin_verbs_mentor,
GLOB.admin_verbs_proccall,
GLOB.admin_verbs_show_debug_verbs,
/client/proc/readmin,
GLOB.admin_verbs_ticket,
GLOB.admin_verbs_maintainer,
)
add_verb(src, /client/proc/export_current_character)
/client/proc/hide_verbs()
set name = "Adminverbs - Hide All"
@@ -337,8 +312,30 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
if(!holder)
return
remove_admin_verbs()
verbs += /client/proc/show_verbs
remove_verb(src, list(
/client/proc/togglebuildmodeself,
/client/proc/stealth,
/client/proc/readmin,
/client/proc/export_current_character,
GLOB.admin_verbs_default,
GLOB.admin_verbs_admin,
GLOB.admin_verbs_ban,
GLOB.admin_verbs_event,
GLOB.admin_verbs_server,
GLOB.admin_verbs_debug,
GLOB.admin_verbs_possess,
GLOB.admin_verbs_permissions,
GLOB.admin_verbs_rejuv,
GLOB.admin_verbs_sounds,
GLOB.admin_verbs_spawn,
GLOB.admin_verbs_mod,
GLOB.admin_verbs_mentor,
GLOB.admin_verbs_proccall,
GLOB.admin_verbs_show_debug_verbs,
GLOB.admin_verbs_ticket,
GLOB.admin_verbs_maintainer
))
add_verb(src, /client/proc/show_verbs)
to_chat(src, "<span class='interface'>Almost all of your adminverbs have been hidden.</span>")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Hide Admin Verbs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -351,7 +348,7 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
if(!holder)
return
verbs -= /client/proc/show_verbs
remove_verb(src, /client/proc/show_verbs)
add_admin_verbs()
to_chat(src, "<span class='interface'>All of your adminverbs are now visible.</span>")
@@ -602,7 +599,6 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
message_admins("<span class='adminnotice'>[key_name_admin(usr)] gave [key_name(T)] the disease [D].</span>")
/client/proc/make_sound(obj/O in view()) // -- TLE
set category = "Event"
set name = "\[Admin\] Make Sound"
set desc = "Display a message to everyone who can hear the target"
@@ -631,7 +627,6 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
SSblackbox.record_feedback("tally", "admin_verb", 1, "Toggle Build Mode") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/object_talk(msg as text) // -- TLE
set category = "Event"
set name = "oSay"
set desc = "Display a message to everyone who can hear the target"
@@ -662,7 +657,7 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
else
GLOB.de_mentors += ckey
deadmin()
verbs += /client/proc/readmin
add_verb(src, /client/proc/readmin)
update_active_keybindings()
to_chat(src, "<span class='interface'>You are now a normal player.</span>")
SSblackbox.record_feedback("tally", "admin_verb", 1, "De-admin") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -762,7 +757,7 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
return
else
to_chat(src, "You are already an admin.")
verbs -= /client/proc/readmin
remove_verb(src, /client/proc/readmin)
GLOB.de_admins -= ckey
GLOB.de_mentors -= ckey
return
@@ -809,7 +804,6 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
/client/proc/change_human_appearance_admin(mob/living/carbon/human/H in GLOB.mob_list)
set name = "\[Admin\] C.M.A. - Admin"
set desc = "Allows you to change the mob appearance"
set category = null
if(!check_rights(R_EVENT))
return
@@ -835,7 +829,6 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
/client/proc/change_human_appearance_self(mob/living/carbon/human/H in GLOB.mob_list)
set name = "\[Admin\] C.M.A. - Self"
set desc = "Allows the mob to change its appearance"
set category = null
if(!check_rights(R_EVENT))
return
@@ -887,8 +880,8 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
message_admins("[key_name_admin(usr)] has freed a job slot for [job].")
/client/proc/toggleattacklogs()
set name = "Toggle Attack Log Messages"
set category = "Preferences"
set name = "Attack Log Messages"
set category = "Preferences.Toggle"
if(!check_rights(R_ADMIN))
return
@@ -916,8 +909,8 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
/client/proc/toggleadminlogs()
set name = "Toggle Admin Log Messages"
set category = "Preferences"
set name = "Admin Log Messages"
set category = "Preferences.Toggle"
if(!check_rights(R_ADMIN))
return
@@ -930,8 +923,8 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
to_chat(usr, "You now will get admin log messages.")
/client/proc/toggleMentorTicketLogs()
set name = "Toggle Mentor Ticket Messages"
set category = "Preferences"
set name = "Mentor Ticket Messages"
set category = "Preferences.Toggle"
if(!check_rights(R_MENTOR|R_ADMIN))
return
@@ -944,8 +937,8 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
to_chat(usr, "You now will get mentor ticket messages.")
/client/proc/toggleticketlogs()
set name = "Toggle Admin Ticket Messgaes"
set category = "Preferences"
set name = "Admin Ticket Messgaes"
set category = "Preferences.Toggle"
if(!check_rights(R_ADMIN))
return
@@ -958,8 +951,8 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
to_chat(usr, "You now will get admin ticket messages.")
/client/proc/toggledebuglogs()
set name = "Toggle Debug Log Messages"
set category = "Preferences"
set name = "Debug Log Messages"
set category = "Preferences.Toggle"
if(!check_rights(R_VIEWRUNTIMES | R_DEBUG))
return
@@ -972,7 +965,6 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
to_chat(usr, "You now won't get debug log messages")
/client/proc/man_up(mob/T as mob in GLOB.player_list)
set category = null
set name = "\[Admin\] Man Up"
set desc = "Tells mob to man up and deal with it."
@@ -1059,6 +1051,11 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list(
log_admin("[key_name(src)] sent an admin alert to [key_name(about_to_be_banned)] with custom message [message].")
message_admins("[key_name(src)] sent an admin alert to [key_name(about_to_be_banned)] with custom message [message].")
/client/proc/debugstatpanel()
set name = "Debug Stat Panel"
set category = "Debug"
src.stat_panel.send_message("create_debug")
/client/proc/export_current_character()
set name = "Export Character DMI/JSON"
+17 -2
View File
@@ -1,6 +1,14 @@
GLOBAL_LIST_EMPTY(admin_datums)
GLOBAL_PROTECT(admin_datums) // This is protected because we dont want people making their own admin ranks, for obvious reasons
GLOBAL_VAR_INIT(href_token, GenerateToken())
GLOBAL_PROTECT(href_token)
/proc/GenerateToken()
. = ""
for(var/I in 1 to 32)
. += "[rand(10)]"
/datum/admins
var/rank = "Temporary Admin"
var/client/owner
@@ -8,6 +16,10 @@ GLOBAL_PROTECT(admin_datums) // This is protected because we dont want people ma
var/rights = 0
var/fakekey
var/big_brother = FALSE
/// Unique-to-session randomly generated token given to each admin to help add detail to logs on admin interactions with hrefs
var/href_token
/// Our currently linked marked datum
var/datum/marked_datum
@@ -23,6 +35,7 @@ GLOBAL_PROTECT(admin_datums) // This is protected because we dont want people ma
return
rank = initial_rank
rights = initial_rights
href_token = GenerateToken()
GLOB.admin_datums[ckey] = src
/datum/admins/Destroy()
@@ -44,7 +57,8 @@ GLOBAL_PROTECT(admin_datums) // This is protected because we dont want people ma
owner = C
owner.holder = src
owner.add_admin_verbs() //TODO
owner.verbs -= /client/proc/readmin
remove_verb(owner, /client/proc/readmin)
owner.init_verbs() //re-initialize the verb list
GLOB.admins |= C
/datum/admins/proc/disassociate()
@@ -55,7 +69,8 @@ GLOBAL_PROTECT(admin_datums) // This is protected because we dont want people ma
return
if(owner)
GLOB.admins -= owner
owner.remove_admin_verbs()
owner.hide_verbs()
owner.init_verbs()
owner.holder = null
owner = null
-1
View File
@@ -1,6 +1,5 @@
/proc/machine_upgrade(obj/machinery/M in world)
set name = "\[Admin\] Tweak Component Ratings"
set category = null
if(!check_rights(R_DEBUG))
return
-2
View File
@@ -67,7 +67,6 @@ GLOBAL_VAR_INIT(nologevent, 0)
///////////////////////////////////////////////////////////////////////////////////////////////Panels
/datum/admins/proc/show_player_panel(mob/M in GLOB.mob_list)
set category = null
set name = "\[Admin\] Show Player Panel"
set desc="Edit player (respawn, ban, heal, etc)"
@@ -806,7 +805,6 @@ GLOBAL_VAR_INIT(nologevent, 0)
/client/proc/update_mob_sprite(mob/living/carbon/human/H as mob)
set name = "\[Admin\] Update Mob Sprite"
set desc = "Should fix any mob sprite update errors."
set category = null
if(!check_rights(R_ADMIN))
return
-3
View File
@@ -67,7 +67,6 @@
/client/proc/jumptoturf(turf/T in world)
set name = "\[Admin\] Jump to Turf"
set category = null
if(!check_rights(R_ADMIN))
return
@@ -134,7 +133,6 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Key") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/Getmob(mob/M in GLOB.mob_list)
set category = null
set name = "\[Admin\] Get Mob"
set desc = "Mob to teleport"
@@ -151,7 +149,6 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Get Mob") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/Getkey()
set category = null
set name = "\[Admin\] Get Key"
set desc = "Key to teleport"
-1
View File
@@ -1,6 +1,5 @@
//allows right clicking mobs to send an admin PM to their client, forwards the selected mob's client to cmd_admin_pm
/client/proc/cmd_admin_pm_context(mob/M as mob in GLOB.mob_list)
set category = null
set name = "\[Admin\] Admin PM Mob"
if(!check_rights(R_ADMIN|R_MENTOR))
return
+13 -5
View File
@@ -1,5 +1,4 @@
/client/proc/cmd_admin_say(msg as text)
set category = "Admin"
set name = "Asay" //Gave this shit a shorter name so you only have to time out "asay" rather than "admin say" to use it --NeoFite
set hidden = 1
if(!check_rights(R_ADMIN)) return
@@ -45,11 +44,20 @@
cmd_mentor_say(msg)
/client/proc/cmd_mentor_say(msg as text)
set category = "Admin"
set name = "Msay"
set hidden = 1
if(!check_rights(R_ADMIN|R_MOD|R_MENTOR))
if(check_rights(R_MENTOR, FALSE)) // Mentor detected, check if the verb has been disabled for mentors
var/msay_found = FALSE
for(var/procs as anything in GLOB.admin_verbs_mentor)
if(procs == /client/proc/cmd_mentor_say)
msay_found = TRUE
break
if(!msay_found)
to_chat(src, "<b>Mentor chat has been disabled.</b>")
return
else if(!check_rights(R_ADMIN|R_MOD)) // Catch any other non-admins trying to use this proc
return
msg = sanitize(copytext(msg, 1, MAX_MESSAGE_LEN))
@@ -104,10 +112,10 @@
if(!check_rights(R_MENTOR, 0, C.mob))
continue
if(enabling)
C.verbs += msay
add_verb(C, msay)
to_chat(C, "<b>Mentor chat has been enabled.</b> Use 'msay' to speak in it.")
else
C.verbs -= msay
remove_verb(C, msay)
to_chat(C, "<b>Mentor chat has been disabled.</b>")
log_and_message_admins("toggled mentor chat [enabling ? "on" : "off"].")
-1
View File
@@ -1,6 +1,5 @@
/client/proc/cinematic(cinematic as anything in list("explosion", null))
set name = "cinematic"
set category = "Debug"
set desc = "Shows a cinematic." // Intended for testing but I thought it might be nice for events on the rare occasion Feel free to comment it out if it's not wanted.
set hidden = 1
if(!SSticker)
-2
View File
@@ -153,7 +153,6 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
#endif
/client/proc/callproc_datum(A as null|area|mob|obj|turf)
set category = null
set name = "\[Admin\] Atom ProcCall"
if(!check_rights(R_PROCCALL))
@@ -619,7 +618,6 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
to_chat(world, "* [areatype]")
/client/proc/cmd_admin_dress(mob/living/carbon/human/M in GLOB.human_list)
set category = "Event"
set name = "\[Admin\] Select equipment"
if(!check_rights(R_EVENT))
-1
View File
@@ -10,7 +10,6 @@ GLOBAL_LIST_EMPTY(frozen_atom_list) // A list of admin-frozen atoms.
/client/proc/freeze(atom/movable/M)
set name = "\[Admin\] Freeze"
set category = null
if(!check_rights(R_ADMIN))
return
-2
View File
@@ -1,6 +1,5 @@
/proc/possess(obj/O as obj in world)
set name = "\[Admin\] Possess Obj"
set category = null
if(!check_rights(R_POSSESS))
return
@@ -35,7 +34,6 @@
/proc/release(obj/O as obj in world)
set name = "\[Admin\] Release Obj"
set category = null
//usr.loc = get_turf(usr)
if(!check_rights(R_POSSESS))
+1 -8
View File
@@ -1,5 +1,4 @@
/client/proc/cmd_admin_drop_everything(mob/M as mob in GLOB.mob_list)
set category = null
set name = "\[Admin\] Drop Everything"
if(!check_rights(R_DEBUG|R_ADMIN))
@@ -47,7 +46,6 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Prison") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_subtle_message(mob/M as mob in GLOB.mob_list)
set category = "Event"
set name = "\[Admin\] Subtle Message"
if(!ismob(M))
@@ -74,7 +72,7 @@
/client/proc/cmd_mentor_check_new_players() //Allows mentors / admins to determine who the newer players are.
set category = "Admin"
set name = "Check new Players"
set name = "Check New Players"
if(!check_rights(R_MENTOR|R_MOD|R_ADMIN))
return
@@ -128,7 +126,6 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Global Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_direct_narrate(mob/M) // Targetted narrate -- TLE
set category = null
set name = "\[Admin\] Direct Narrate"
if(!check_rights(R_SERVER|R_EVENT))
@@ -155,7 +152,6 @@
/client/proc/cmd_admin_headset_message(mob/M in GLOB.mob_list)
set category = "Event"
set name = "\[Admin\] Headset Message"
admin_headset_message(M)
@@ -589,7 +585,6 @@ Traitors and the like can also be revived with the previous role mostly intact.
SSblackbox.record_feedback("tally", "admin_verb", 1, "Add Custom AI Law") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_rejuvenate(mob/living/M as mob in GLOB.mob_list)
set category = null
set name = "\[Admin\] Rejuvenate"
if(!check_rights(R_REJUVINATE))
@@ -660,7 +655,6 @@ Traitors and the like can also be revived with the previous role mostly intact.
/client/proc/cmd_admin_delete(atom/A as obj|mob|turf in view())
set category = null
set name = "\[Admin\] Delete"
if(!check_rights(R_ADMIN))
@@ -801,7 +795,6 @@ Traitors and the like can also be revived with the previous role mostly intact.
/client/proc/cmd_admin_check_contents(mob/living/M as mob in GLOB.mob_list)
set name = "\[Admin\] Check Contents"
set category = null
if(!check_rights(R_ADMIN))
return
+1 -1
View File
@@ -26,6 +26,6 @@ GLOBAL_LIST_INIT(admin_verbs_show_debug_verbs, list(
if(!check_rights(R_DEBUG))
return
verbs += GLOB.admin_verbs_show_debug_verbs
add_verb(src, GLOB.admin_verbs_show_debug_verbs)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Debug Verbs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!