Reworking Bot API and optimizing for loops in admin code (#6355)

This commit is contained in:
Mykhailo Bykhovtsev
2019-05-01 05:14:26 -07:00
committed by Werner
parent 5bf33373c9
commit 81e7f29878
21 changed files with 121 additions and 55 deletions
+4 -2
View File
@@ -81,14 +81,16 @@
a_ip = world.address
var/who
for(var/client/C in clients)
for(var/c in clients)
var/client/C = c
if(!who)
who = "[C]"
else
who += ", [C]"
var/adminwho
for(var/client/C in admins)
for(var/c in staff)
var/client/C = c
if(!adminwho)
adminwho = "[C]"
else
+4 -2
View File
@@ -6,14 +6,16 @@ var/global/enabled_spooking = 0
////////////////////////////////
/proc/message_admins(var/msg)
msg = "<span class=\"log_message\"><span class=\"prefix\">ADMIN LOG:</span> <span class=\"message\">[msg]</span></span>"
for(var/client/C in admins)
for(var/s in staff)
var/client/C = s
if((R_ADMIN|R_MOD) & C.holder.rights)
to_chat(C, msg)
/proc/msg_admin_attack(var/text,var/ckey="",var/ckey_target="") //Toggleable Attack Messages
log_attack(text,ckey=ckey,ckey_target=ckey_target)
var/rendered = "<span class=\"log_message\"><span class=\"prefix\">ATTACK:</span> <span class=\"message\">[text]</span></span>"
for(var/client/C in admins)
for(var/s in staff)
var/client/C = s
if((R_ADMIN|R_MOD) & C.holder.rights)
if(C.prefs.toggles & CHAT_ATTACKLOGS)
var/msg = rendered
+3 -2
View File
@@ -61,10 +61,11 @@ var/list/admin_ranks = list() //list of all ranks with associated rights
/proc/load_admins()
//clear the datums references
admin_datums.Cut()
for(var/client/C in admins)
for(var/s in staff)
var/client/C = s
C.remove_admin_verbs()
C.holder = null
admins.Cut()
staff.Cut()
// Clears admins from the world config.
for (var/A in world.GetConfig("admin"))
+3 -3
View File
@@ -41,18 +41,18 @@ var/list/admin_datums = list()
owner = C
owner.holder = src
owner.add_admin_verbs() //TODO
admins |= C
staff |= C
/datum/admins/proc/disassociate()
if(owner)
admins -= owner
staff -= owner
owner.remove_admin_verbs()
owner.deadmin_holder = owner.holder
owner.holder = null
/datum/admins/proc/reassociate()
if(owner)
admins += owner
staff += owner
owner.holder = src
owner.deadmin_holder = null
owner.add_admin_verbs()
+2 -1
View File
@@ -128,7 +128,8 @@ var/global/list/ticket_panels = list()
if (!admin_found)
message_admins("<span class='danger'><b>[owner]'s ticket has yet to be closed!</b></span>")
for(var/client/C in admins)
for(var/s in staff)
var/client/C = s
if((C.holder.rights & (R_ADMIN|R_MOD)) && (C.prefs.toggles & SOUND_ADMINHELP))
sound_to(C, 'sound/effects/adminhelp.ogg')
+7 -6
View File
@@ -116,15 +116,16 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
var/admin_number_present = 0
var/admin_number_afk = 0
for(var/client/X in admins)
if((R_ADMIN|R_MOD) & X.holder.rights)
for(var/s in staff)
var/client/C = s
if((R_ADMIN|R_MOD) & C.holder.rights)
admin_number_present++
if(X.is_afk())
if(C.is_afk())
admin_number_afk++
if(X.prefs.toggles & SOUND_ADMINHELP)
sound_to(X, 'sound/effects/adminhelp.ogg')
if(C.prefs.toggles & SOUND_ADMINHELP)
sound_to(C, 'sound/effects/adminhelp.ogg')
to_chat(X, msg)
to_chat(C, msg)
//show it to the person adminhelping too
to_chat(src, "<font color='blue'>PM to-<b>Staff </b>: [original_msg]</font>")
+10 -7
View File
@@ -17,7 +17,8 @@
to_chat(src, "<font color='red'>Error: Admin-PM-Panel: Only administrators may use this command.</font>")
return
var/list/client/targets[0]
for(var/client/T)
for(var/p in player_list)
var/client/T = p
if(T.mob)
if(istype(T.mob, /mob/abstract/new_player))
targets["(New Player) - [T]"] = T
@@ -37,7 +38,7 @@
//Fetching a message if needed. src is the sender and C is the target client
/client/proc/cmd_admin_pm(var/client/C, var/msg = null, var/datum/ticket/ticket = null)
if(!istype(C,/client))
if(!istype(C, /client))
if(holder) to_chat(src, "<font color='red'>Error: Private-Message: Client not found.</font>")
else to_chat(src, "<font color='red'>Error: Private-Message: Client not found. They may have lost connection, so try using an adminhelp!</font>")
return
@@ -150,7 +151,8 @@
ticket.append_message(src.ckey, C.ckey, msg)
//we don't use message_admins here because the sender/receiver might get it too
for(var/client/X in admins)
for(var/s in staff)
var/client/X = s
//check client/X is an admin and isn't the sender or recipient
if(X == C || X == src)
continue
@@ -175,8 +177,9 @@
to_chat(src, "<span class='pm'><span class='out'>" + create_text_tag("pm_out_alt", "", src) + " to <span class='name'>Discord-[sender]</span>: <span class='message'>[msg]</span></span></span>")
log_admin("PM: [key_name(src)]->Discord-[sender]: [msg]")
for(var/client/X in admins)
if(X == src)
for(var/s in staff)
var/client/C = s
if(C == src)
continue
if(X.holder.rights & (R_ADMIN|R_MOD))
to_chat(X, "<span class='pm'><span class='other'>" + create_text_tag("pm_other", "PM:", X) + " <span class='name'>[key_name(src, X, 0)]</span> to <span class='name'>Discord-[sender]</span>: <span class='message'>[msg]</span></span></span>")
if(C.holder.rights & (R_ADMIN|R_MOD))
to_chat(C, "<span class='pm'><span class='other'>" + create_text_tag("pm_other", "PM:", C) + " <span class='name'>[key_name(src, C, 0)]</span> to <span class='name'>Discord-[sender]</span>: <span class='message'>[msg]</span></span></span>")
+8 -4
View File
@@ -10,7 +10,8 @@
log_admin("ADMIN: [key_name(src)] : [msg]",admin_key=key_name(src))
if(check_rights(R_ADMIN,0))
for(var/client/C in admins)
for(var/s in staff)
var/client/C = s
if(R_ADMIN & C.holder.rights)
to_chat(C, "<span class='admin_channel'>" + create_text_tag("admin", "ADMIN:", C) + " <span class='name'>[key_name(usr, 1)]</span>([admin_jump_link(mob, src)]): <span class='message'>[msg]</span></span>")
@@ -32,7 +33,8 @@
var/sender_name = key_name(usr, 1)
if(check_rights(R_ADMIN, 0))
sender_name = "<span class='admin'>[sender_name]</span>"
for(var/client/C in admins)
for(var/s in staff)
var/client/C = s
if ((R_ADMIN|R_MOD) & C.holder.rights)
to_chat(C, "<span class='mod_channel'>" + create_text_tag("mod", "MOD:", C) + " <span class='name'>[sender_name]</span>(<A HREF='?src=\ref[C.holder];adminplayerobservejump=\ref[mob]'>JMP</A>): <span class='message'>[msg]</span></span>")
@@ -52,7 +54,8 @@
if(check_rights(R_DEV,0))
msg = "<span class='devsay'><span class='prefix'>DEV:</span> <EM>[key_name(usr, 0, 1, 0)]</EM>: <span class='message'>[msg]</span></span>"
for(var/client/C in admins)
for(var/s in staff)
var/client/C = s
if(C.holder.rights & (R_ADMIN|R_DEV))
to_chat(C, msg)
@@ -70,6 +73,7 @@
if(check_rights((R_CCIAA|R_ADMIN),0))
msg = "<span class='cciaasay'><span class='prefix'>CCIAAgent:</span> <EM>[key_name(usr, 0, 1, 0)]</EM>: <span class='message'>[msg]</span></span>"
for(var/client/C in admins)
for(var/s in staff)
var/client/C = s
if(C.holder.rights & (R_ADMIN|R_CCIAA))
to_chat(C, msg)
+8 -8
View File
@@ -502,19 +502,19 @@
set name = "Debug Mob Lists"
set desc = "For when you just gotta know"
switch(input("Which list?") in list("Players","Admins","Mobs","Living Mobs","Dead Mobs", "Clients"))
switch(input("Which list?") in list("Players","Staff","Mobs","Living Mobs","Dead Mobs", "Clients"))
if("Players")
to_chat(usr, jointext(player_list,","))
if("Admins")
to_chat(usr, jointext(admins,","))
to_chat(usr, jointext(player_list,", "))
if("Staff")
to_chat(usr, jointext(staff,", "))
if("Mobs")
to_chat(usr, jointext(mob_list,","))
to_chat(usr, jointext(mob_list,", "))
if("Living Mobs")
to_chat(usr, jointext(living_mob_list,","))
to_chat(usr, jointext(living_mob_list,", "))
if("Dead Mobs")
to_chat(usr, jointext(dead_mob_list,","))
to_chat(usr, jointext(dead_mob_list,", "))
if("Clients")
to_chat(usr, jointext(clients,","))
to_chat(usr, jointext(clients,", "))
// DNA2 - Admin Hax
/client/proc/cmd_admin_toggle_block(var/mob/M,var/block)
+6 -3
View File
@@ -15,7 +15,8 @@
var/image/cross = image('icons/obj/storage.dmi',"bible")
msg = "<span class='notice'>\icon[cross] <b><font color=purple>PRAY: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[src]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=\ref[src]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[src]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[src]'>SM</A>) ([admin_jump_link(src, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;adminspawncookie=\ref[src]'>SC</a>):</b> [msg]</span>"
for(var/client/C in admins)
for(var/s in staff)
var/client/C = s
if(C.holder.rights & (R_ADMIN|R_MOD|R_FUN))
if(C.prefs.toggles & CHAT_PRAYER)
to_chat(C, msg)
@@ -31,7 +32,8 @@
var/cciaa_present = 0
var/cciaa_afk = 0
for(var/client/C in admins)
for(var/s in staff)
var/client/C = s
if(R_ADMIN & C.holder.rights)
to_chat(C, msg_admin)
else if (R_CCIAA & C.holder.rights)
@@ -55,6 +57,7 @@
/proc/Syndicate_announce(var/msg, var/mob/Sender)
msg = "<span class='notice'><b><font color=crimson>ILLEGAL:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) ([admin_jump_link(Sender, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;SyndicateReply=\ref[Sender]'>RPLY</A>):</b> [msg]</span>"
for(var/client/C in admins)
for(var/s in staff)
var/client/C = s
if(R_ADMIN & C.holder.rights)
to_chat(C, msg)