mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
Admin ranks now use bitfields for permissions. Rather than checking the name of the rank, adminverbs will now check holder.rights to see if it has certain bits turned on.
SERVER HOSTS: This commit replaces the existing admin-rank system. It is now more customizable. Admin.txt essentially works the same as it always has. Each line should look like: ckey - admin rank There is now however, an admin_ranks.txt. This textfile allows you to define ranks like so: admin rank +ADMIN +FUN +BUILD the +KEYWORD are flags adding permissions to that rank. There are brief descriptions in the text-file explaining what they do. You can now name the ranks anything you like, and give them the permissions you want them to have. This allows, for instance, ranks like: Game Admin on disciplinary +ADMIN +BAN This would give that game admin only the tools they need to admin. They would not have access to 'fun' verbs which control events and antags. There's lots of things you can do. For instance, a coder rank whom can debug stuff but cannot do admin tasks: Codermin +DEBUG +VAREDIT +SERVER There's lots you can do. As it evolves it will hopefully become more flexible. admin_ranks.txt defaults to use the old admin rank names. Apologies in advance as there will be a lot of anomalies, such as ranks losing verbs they once had. Please let me know about any problems. I can fix them quite easily simply by moving verbs between the lists or splitting the lists up into new flags. CODERS: There is now a check_rights(flags) proc. It check is usr is and admin and has -at least one of- the rights specified. It checks > usr < not src, so keep that in mind! If you need to check if something other than usr has specific tights, you can do if(holder.rights & R_ADMIN) etc. KNOWN ISSUES: +FUN probably needs to be split up into +MOBS and +EVENTS In-game promotion/demotion is currently disabled. It will be readded after everything else works ok. Erro's sql rights changes stuff is currently commented out. It will be re-added. There are still many many verbs which need updating. Apologies in advance for any inconvenience. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4991 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -149,13 +149,13 @@
|
|||||||
if(objholder in removed_paths)
|
if(objholder in removed_paths)
|
||||||
alert("That path is not allowed.")
|
alert("That path is not allowed.")
|
||||||
objholder = "/obj/structure/closet"
|
objholder = "/obj/structure/closet"
|
||||||
else if (dd_hasprefix(objholder, "/mob") && !(usr.client.holder.rank in list("Game Master", "Game Admin", "Badmin")))
|
else if (dd_hasprefix(objholder, "/mob") && !check_rights(R_DEBUG,0))
|
||||||
objholder = "/obj/structure/closet"
|
objholder = "/obj/structure/closet"
|
||||||
if(3)
|
if(3)
|
||||||
var/list/locked = list("vars", "key", "ckey", "client", "firemut", "ishulk", "telekinesis", "xray", "virus", "viruses", "cuffed", "ka", "last_eaten", "urine")
|
var/list/locked = list("vars", "key", "ckey", "client", "firemut", "ishulk", "telekinesis", "xray", "virus", "viruses", "cuffed", "ka", "last_eaten", "urine")
|
||||||
|
|
||||||
master.buildmode.varholder = input(usr,"Enter variable name:" ,"Name", "name")
|
master.buildmode.varholder = input(usr,"Enter variable name:" ,"Name", "name")
|
||||||
if(master.buildmode.varholder in locked && !(usr.client.holder.rank in list("Game Master", "Game Admin")))
|
if(master.buildmode.varholder in locked && !check_rights(R_DEBUG,0))
|
||||||
return
|
return
|
||||||
var/thetype = input(usr,"Select variable type:" ,"Type") in list("text","number","mob-reference","obj-reference","turf-reference")
|
var/thetype = input(usr,"Select variable type:" ,"Type") in list("text","number","mob-reference","obj-reference","turf-reference")
|
||||||
if(!thetype) return
|
if(!thetype) return
|
||||||
|
|||||||
@@ -247,3 +247,19 @@ proc/tg_list2text(list/list, glue=",")
|
|||||||
/proc/angle2text(var/degree)
|
/proc/angle2text(var/degree)
|
||||||
return dir2text(angle2dir(degree))
|
return dir2text(angle2dir(degree))
|
||||||
|
|
||||||
|
|
||||||
|
//Converts a rights bitfield into a string
|
||||||
|
/proc/rights2text(rights)
|
||||||
|
if(rights & R_BUILDMODE) . += "+BUILDMODE"
|
||||||
|
if(rights & R_ADMIN) . += "+ADMIN"
|
||||||
|
if(rights & R_BAN) . += "+BAN"
|
||||||
|
if(rights & R_FUN) . += "+FUN"
|
||||||
|
if(rights & R_SERVER) . += "+SERVER"
|
||||||
|
if(rights & R_DEBUG) . += "+DEBUG"
|
||||||
|
if(rights & R_POSSESS) . += "+POSSESS"
|
||||||
|
if(rights & R_PERMISSIONS) . += "+PERMISSIONS"
|
||||||
|
if(rights & R_STEALTH) . += "+STEALTH"
|
||||||
|
if(rights & R_REJUVINATE) . += "+REJUVINATE"
|
||||||
|
if(rights & R_VAREDIT) . += "+VAREDIT"
|
||||||
|
if(rights & R_SOUNDS) . += "+SOUND"
|
||||||
|
return .
|
||||||
@@ -170,7 +170,7 @@ datum/controller/vote
|
|||||||
var/trialmin = 0
|
var/trialmin = 0
|
||||||
if(C.holder)
|
if(C.holder)
|
||||||
admin = 1
|
admin = 1
|
||||||
if (C.holder.level >= 3)
|
if (C.holder.rights & R_ADMIN)
|
||||||
trialmin = 1
|
trialmin = 1
|
||||||
voting |= C
|
voting |= C
|
||||||
|
|
||||||
|
|||||||
@@ -402,14 +402,18 @@ client
|
|||||||
//This should all be moved over to datum/admins/Topic() or something ~Carn
|
//This should all be moved over to datum/admins/Topic() or something ~Carn
|
||||||
if( (usr.client == src) && src.holder )
|
if( (usr.client == src) && src.holder )
|
||||||
. = 1 //default return
|
. = 1 //default return
|
||||||
if (href_list["Vars"])
|
if(href_list["Vars"])
|
||||||
debug_variables(locate(href_list["Vars"]))
|
debug_variables(locate(href_list["Vars"]))
|
||||||
|
|
||||||
//~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records).
|
//~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records).
|
||||||
else if (href_list["rename"])
|
else if(href_list["rename"])
|
||||||
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
var/mob/M = locate(href_list["rename"])
|
var/mob/M = locate(href_list["rename"])
|
||||||
if(!istype(M)) return
|
if(!istype(M))
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
usr << "This can only be used on instances of type /mob"
|
||||||
|
return
|
||||||
|
|
||||||
var/new_name = copytext(sanitize(input(usr,"What would you like to name this mob?","Input a name",M.real_name) as text|null),1,MAX_NAME_LEN)
|
var/new_name = copytext(sanitize(input(usr,"What would you like to name this mob?","Input a name",M.real_name) as text|null),1,MAX_NAME_LEN)
|
||||||
if( !new_name || !M ) return
|
if( !new_name || !M ) return
|
||||||
|
|
||||||
@@ -417,431 +421,370 @@ client
|
|||||||
M.fully_replace_character_name(M.real_name,new_name)
|
M.fully_replace_character_name(M.real_name,new_name)
|
||||||
href_list["datumrefresh"] = href_list["rename"]
|
href_list["datumrefresh"] = href_list["rename"]
|
||||||
|
|
||||||
else if (href_list["varnameedit"])
|
else if(href_list["varnameedit"] && href_list["datumedit"])
|
||||||
if(!href_list["datumedit"] || !href_list["varnameedit"])
|
if(!check_rights(0)) return
|
||||||
usr << "Varedit error: Not all information has been sent. Contact a coder."
|
|
||||||
return
|
|
||||||
var/DAT = locate(href_list["datumedit"])
|
|
||||||
if(!DAT)
|
|
||||||
usr << "Item not found"
|
|
||||||
return
|
|
||||||
if(!istype(DAT,/datum) && !istype(DAT,/client))
|
|
||||||
usr << "Can't edit an item of this type. Type must be /datum or /client, so anything except simple variables."
|
|
||||||
return
|
|
||||||
modify_variables(DAT, href_list["varnameedit"], 1)
|
|
||||||
else if (href_list["varnamechange"])
|
|
||||||
if(!href_list["datumchange"] || !href_list["varnamechange"])
|
|
||||||
usr << "Varedit error: Not all information has been sent. Contact a coder."
|
|
||||||
return
|
|
||||||
var/DAT = locate(href_list["datumchange"])
|
|
||||||
if(!DAT)
|
|
||||||
usr << "Item not found"
|
|
||||||
return
|
|
||||||
if(!istype(DAT,/datum) && !istype(DAT,/client))
|
|
||||||
usr << "Can't edit an item of this type. Type must be /datum or /client, so anything except simple variables."
|
|
||||||
return
|
|
||||||
modify_variables(DAT, href_list["varnamechange"], 0)
|
|
||||||
else if (href_list["varnamemass"])
|
|
||||||
if(!href_list["datummass"] || !href_list["varnamemass"])
|
|
||||||
usr << "Varedit error: Not all information has been sent. Contact a coder."
|
|
||||||
return
|
|
||||||
var/atom/A = locate(href_list["datummass"])
|
|
||||||
if(!A)
|
|
||||||
usr << "Item not found"
|
|
||||||
return
|
|
||||||
if(!istype(A,/atom))
|
|
||||||
usr << "Can't mass edit an item of this type. Type must be /atom, so an object, turf, mob or area. You cannot mass edit clients!"
|
|
||||||
return
|
|
||||||
cmd_mass_modify_object_variables(A, href_list["varnamemass"])
|
|
||||||
else if (href_list["mob_player_panel"])
|
|
||||||
if(!href_list["mob_player_panel"])
|
|
||||||
return
|
|
||||||
var/mob/MOB = locate(href_list["mob_player_panel"])
|
|
||||||
if(!MOB)
|
|
||||||
return
|
|
||||||
if(!ismob(MOB))
|
|
||||||
return
|
|
||||||
if(!src.holder)
|
|
||||||
return
|
|
||||||
src.holder.show_player_panel(MOB)
|
|
||||||
href_list["datumrefresh"] = href_list["mob_player_panel"]
|
|
||||||
else if (href_list["give_spell"])
|
|
||||||
if(!href_list["give_spell"])
|
|
||||||
return
|
|
||||||
var/mob/MOB = locate(href_list["give_spell"])
|
|
||||||
if(!MOB)
|
|
||||||
return
|
|
||||||
if(!ismob(MOB))
|
|
||||||
return
|
|
||||||
if(!src.holder)
|
|
||||||
return
|
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
|
||||||
src.give_spell(MOB)
|
|
||||||
href_list["datumrefresh"] = href_list["give_spell"]
|
|
||||||
else if (href_list["give_disease"])
|
|
||||||
if(!href_list["give_disease"])
|
|
||||||
return
|
|
||||||
var/mob/MOB = locate(href_list["give_disease"])
|
|
||||||
if(!MOB)
|
|
||||||
return
|
|
||||||
if(!ismob(MOB))
|
|
||||||
return
|
|
||||||
if(!src.holder)
|
|
||||||
return
|
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
|
||||||
src.give_disease(MOB)
|
|
||||||
href_list["datumrefresh"] = href_list["give_spell"]
|
|
||||||
else if (href_list["ninja"])
|
|
||||||
if(!href_list["ninja"])
|
|
||||||
return
|
|
||||||
var/mob/MOB = locate(href_list["ninja"])
|
|
||||||
if(!MOB)
|
|
||||||
return
|
|
||||||
if(!ismob(MOB))
|
|
||||||
return
|
|
||||||
if(!src.holder)
|
|
||||||
return
|
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
|
||||||
src.cmd_admin_ninjafy(MOB)
|
|
||||||
href_list["datumrefresh"] = href_list["ninja"]
|
|
||||||
else if (href_list["godmode"])
|
|
||||||
if(!href_list["godmode"])
|
|
||||||
return
|
|
||||||
var/mob/MOB = locate(href_list["godmode"])
|
|
||||||
if(!MOB)
|
|
||||||
return
|
|
||||||
if(!ismob(MOB))
|
|
||||||
return
|
|
||||||
if(!src.holder)
|
|
||||||
return
|
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
|
||||||
src.cmd_admin_godmode(MOB)
|
|
||||||
href_list["datumrefresh"] = href_list["godmode"]
|
|
||||||
else if (href_list["gib"])
|
|
||||||
if(!href_list["gib"])
|
|
||||||
return
|
|
||||||
var/mob/MOB = locate(href_list["gib"])
|
|
||||||
if(!MOB)
|
|
||||||
return
|
|
||||||
if(!ismob(MOB))
|
|
||||||
return
|
|
||||||
if(!src.holder)
|
|
||||||
return
|
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
|
||||||
src.cmd_admin_gib(MOB)
|
|
||||||
|
|
||||||
else if (href_list["build_mode"])
|
var/D = locate(href_list["datumedit"])
|
||||||
if(!href_list["build_mode"])
|
if(!istype(D,/datum) && !istype(D,/client))
|
||||||
|
usr << "This can only be used on instances of types /client or /datum"
|
||||||
return
|
return
|
||||||
var/mob/MOB = locate(href_list["build_mode"])
|
|
||||||
if(!MOB)
|
modify_variables(D, href_list["varnameedit"], 1)
|
||||||
|
|
||||||
|
else if(href_list["varnamechange"] && href_list["datumchange"])
|
||||||
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
|
var/D = locate(href_list["datumchange"])
|
||||||
|
if(!istype(D,/datum) && !istype(D,/client))
|
||||||
|
usr << "This can only be used on instances of types /client or /datum"
|
||||||
return
|
return
|
||||||
if(!ismob(MOB))
|
|
||||||
|
modify_variables(D, href_list["varnamechange"], 0)
|
||||||
|
|
||||||
|
else if(href_list["varnamemass"] && href_list["datummass"])
|
||||||
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
|
var/atom/A = locate(href_list["datummass"])
|
||||||
|
if(!istype(A))
|
||||||
|
usr << "This can only be used on instances of type /atom"
|
||||||
return
|
return
|
||||||
if(!src.holder)
|
|
||||||
|
cmd_mass_modify_object_variables(A, href_list["varnamemass"])
|
||||||
|
|
||||||
|
else if(href_list["mob_player_panel"])
|
||||||
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
|
var/mob/M = locate(href_list["mob_player_panel"])
|
||||||
|
if(!istype(M))
|
||||||
|
usr << "This can only be used on instances of type /mob"
|
||||||
return
|
return
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
|
||||||
togglebuildmode(MOB)
|
src.holder.show_player_panel(M)
|
||||||
|
href_list["datumrefresh"] = href_list["mob_player_panel"]
|
||||||
|
|
||||||
|
else if(href_list["give_spell"])
|
||||||
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
|
var/mob/M = locate(href_list["give_spell"])
|
||||||
|
if(!istype(M))
|
||||||
|
usr << "This can only be used on instances of type /mob"
|
||||||
|
return
|
||||||
|
|
||||||
|
src.give_spell(M)
|
||||||
|
href_list["datumrefresh"] = href_list["give_spell"]
|
||||||
|
|
||||||
|
else if(href_list["give_disease"])
|
||||||
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
|
var/mob/M = locate(href_list["give_disease"])
|
||||||
|
if(!istype(M))
|
||||||
|
usr << "This can only be used on instances of type /mob"
|
||||||
|
return
|
||||||
|
|
||||||
|
src.give_disease(M)
|
||||||
|
href_list["datumrefresh"] = href_list["give_spell"]
|
||||||
|
|
||||||
|
else if(href_list["ninja"])
|
||||||
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
|
var/mob/M = locate(href_list["ninja"])
|
||||||
|
if(!istype(M))
|
||||||
|
usr << "This can only be used on instances of type /mob"
|
||||||
|
return
|
||||||
|
|
||||||
|
src.cmd_admin_ninjafy(M)
|
||||||
|
href_list["datumrefresh"] = href_list["ninja"]
|
||||||
|
|
||||||
|
else if(href_list["godmode"])
|
||||||
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
|
var/mob/M = locate(href_list["godmode"])
|
||||||
|
if(!istype(M))
|
||||||
|
usr << "This can only be used on instances of type /mob"
|
||||||
|
return
|
||||||
|
|
||||||
|
src.cmd_admin_godmode(M)
|
||||||
|
href_list["datumrefresh"] = href_list["godmode"]
|
||||||
|
|
||||||
|
else if(href_list["gib"])
|
||||||
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
|
var/mob/M = locate(href_list["gib"])
|
||||||
|
if(!istype(M))
|
||||||
|
usr << "This can only be used on instances of type /mob"
|
||||||
|
return
|
||||||
|
|
||||||
|
src.cmd_admin_gib(M)
|
||||||
|
|
||||||
|
else if(href_list["build_mode"])
|
||||||
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
|
var/mob/M = locate(href_list["build_mode"])
|
||||||
|
if(!istype(M))
|
||||||
|
usr << "This can only be used on instances of type /mob"
|
||||||
|
return
|
||||||
|
|
||||||
|
togglebuildmode(M)
|
||||||
href_list["datumrefresh"] = href_list["build_mode"]
|
href_list["datumrefresh"] = href_list["build_mode"]
|
||||||
|
|
||||||
else if (href_list["drop_everything"])
|
else if(href_list["drop_everything"])
|
||||||
if(!href_list["drop_everything"])
|
if(!check_rights(0)) return
|
||||||
return
|
|
||||||
var/mob/MOB = locate(href_list["drop_everything"])
|
var/mob/M = locate(href_list["drop_everything"])
|
||||||
if(!MOB)
|
if(!istype(M))
|
||||||
return
|
usr << "This can only be used on instances of type /mob"
|
||||||
if(!ismob(MOB))
|
|
||||||
return
|
|
||||||
if(!src.holder)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
if(usr.client)
|
if(usr.client)
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
usr.client.cmd_admin_drop_everything(M)
|
||||||
usr.client.cmd_admin_drop_everything(MOB)
|
|
||||||
|
|
||||||
else if (href_list["direct_control"])
|
else if(href_list["direct_control"])
|
||||||
if(!href_list["direct_control"])
|
if(!check_rights(0)) return
|
||||||
return
|
|
||||||
var/mob/MOB = locate(href_list["direct_control"])
|
var/mob/M = locate(href_list["direct_control"])
|
||||||
if(!MOB)
|
if(!istype(M))
|
||||||
return
|
usr << "This can only be used on instances of type /mob"
|
||||||
if(!ismob(MOB))
|
|
||||||
return
|
|
||||||
if(!src.holder)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
if(usr.client)
|
if(usr.client)
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
usr.client.cmd_assume_direct_control(M)
|
||||||
usr.client.cmd_assume_direct_control(MOB)
|
|
||||||
|
|
||||||
else if (href_list["make_skeleton"])
|
else if(href_list["make_skeleton"])
|
||||||
if(!href_list["make_skeleton"])
|
if(!check_rights(0)) return
|
||||||
return
|
|
||||||
var/mob/MOB = locate(href_list["make_skeleton"])
|
var/mob/living/carbon/human/H = locate(href_list["make_skeleton"])
|
||||||
if(!MOB)
|
if(!istype(H))
|
||||||
return
|
usr << "This can only be used on instances of type /mob/living/carbon/human"
|
||||||
if(!ismob(MOB))
|
|
||||||
return
|
|
||||||
if(!src.holder)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
if(ishuman(MOB))
|
H.makeSkeleton()
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
href_list["datumrefresh"] = href_list["make_skeleton"]
|
||||||
var/mob/living/carbon/human/HUMANMOB = MOB
|
|
||||||
HUMANMOB.makeSkeleton()
|
|
||||||
|
|
||||||
else if (href_list["delall"])
|
else if(href_list["delall"])
|
||||||
if(!href_list["delall"])
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
|
var/obj/O = locate(href_list["delall"])
|
||||||
|
if(!isobj(O))
|
||||||
|
usr << "This can only be used on instances of type /obj"
|
||||||
return
|
return
|
||||||
var/atom/A = locate(href_list["delall"])
|
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
var/action_type = alert("Strict type ([O.type]) or type and all subtypes?",,"Strict type","Type and subtypes","Cancel")
|
||||||
if(!A)
|
if(action_type == "Cancel" || !action_type)
|
||||||
return
|
return
|
||||||
if(!isobj(A))
|
|
||||||
usr << "This can only be used on objects (of type /obj)"
|
if(alert("Are you really sure you want to delete all objects of type [O.type]?",,"Yes","No") != "Yes")
|
||||||
return
|
|
||||||
if(!A.type)
|
|
||||||
return
|
|
||||||
var/action_type = alert("Strict type ([A.type]) or type and all subtypes?",,"Strict type","Type and subtypes","Cancel")
|
|
||||||
if(!action_type || action_type == "Cancel")
|
|
||||||
return
|
|
||||||
if(alert("Are you really sure you want to delete all objects of type [A.type]?",,"Yes","No") != "Yes")
|
|
||||||
return
|
return
|
||||||
|
|
||||||
if(alert("Second confirmation required. Delete?",,"Yes","No") != "Yes")
|
if(alert("Second confirmation required. Delete?",,"Yes","No") != "Yes")
|
||||||
return
|
return
|
||||||
var/a_type = A.type
|
|
||||||
if(action_type == "Strict type")
|
|
||||||
var/i = 0
|
|
||||||
for(var/obj/O in world)
|
|
||||||
if(O.type == a_type)
|
|
||||||
i++
|
|
||||||
del(O)
|
|
||||||
if(!i)
|
|
||||||
usr << "No objects of this type exist"
|
|
||||||
return
|
|
||||||
log_admin("[key_name(usr)] deleted all objects of scrict type [a_type] ([i] objects deleted) ")
|
|
||||||
message_admins("\blue [key_name(usr)] deleted all objects of scrict type [a_type] ([i] objects deleted) ", 1)
|
|
||||||
else if(action_type == "Type and subtypes")
|
|
||||||
var/i = 0
|
|
||||||
for(var/obj/O in world)
|
|
||||||
if(istype(O,a_type))
|
|
||||||
i++
|
|
||||||
del(O)
|
|
||||||
if(!i)
|
|
||||||
usr << "No objects of this type exist"
|
|
||||||
return
|
|
||||||
log_admin("[key_name(usr)] deleted all objects of scrict type with subtypes [a_type] ([i] objects deleted) ")
|
|
||||||
message_admins("\blue [key_name(usr)] deleted all objects of type with subtypes [a_type] ([i] objects deleted) ", 1)
|
|
||||||
|
|
||||||
else if (href_list["explode"])
|
var/O_type = O.type
|
||||||
if(!href_list["explode"])
|
switch(action_type)
|
||||||
return
|
if("Strict type")
|
||||||
|
var/i = 0
|
||||||
|
for(var/obj/Obj in world)
|
||||||
|
if(Obj.type == O_type)
|
||||||
|
i++
|
||||||
|
del(Obj)
|
||||||
|
if(!i)
|
||||||
|
usr << "No objects of this type exist"
|
||||||
|
return
|
||||||
|
log_admin("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ")
|
||||||
|
message_admins("\blue [key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ", 1)
|
||||||
|
if("Type and subtypes")
|
||||||
|
var/i = 0
|
||||||
|
for(var/obj/Obj in world)
|
||||||
|
if(istype(Obj,O_type))
|
||||||
|
i++
|
||||||
|
del(Obj)
|
||||||
|
if(!i)
|
||||||
|
usr << "No objects of this type exist"
|
||||||
|
return
|
||||||
|
log_admin("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ")
|
||||||
|
message_admins("\blue [key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ", 1)
|
||||||
|
|
||||||
|
else if(href_list["explode"])
|
||||||
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
var/atom/A = locate(href_list["explode"])
|
var/atom/A = locate(href_list["explode"])
|
||||||
if(!A)
|
|
||||||
return
|
|
||||||
if(!isobj(A) && !ismob(A) && !isturf(A))
|
if(!isobj(A) && !ismob(A) && !isturf(A))
|
||||||
|
usr << "This can only be done to instances of type /obj, /mob and /turf"
|
||||||
return
|
return
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
|
||||||
src.cmd_admin_explosion(A)
|
src.cmd_admin_explosion(A)
|
||||||
href_list["datumrefresh"] = href_list["explode"]
|
href_list["datumrefresh"] = href_list["explode"]
|
||||||
else if (href_list["emp"])
|
|
||||||
if(!href_list["emp"])
|
else if(href_list["emp"])
|
||||||
return
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
var/atom/A = locate(href_list["emp"])
|
var/atom/A = locate(href_list["emp"])
|
||||||
if(!A)
|
|
||||||
return
|
|
||||||
if(!isobj(A) && !ismob(A) && !isturf(A))
|
if(!isobj(A) && !ismob(A) && !isturf(A))
|
||||||
|
usr << "This can only be done to instances of type /obj, /mob and /turf"
|
||||||
return
|
return
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
|
||||||
src.cmd_admin_emp(A)
|
src.cmd_admin_emp(A)
|
||||||
href_list["datumrefresh"] = href_list["emp"]
|
href_list["datumrefresh"] = href_list["emp"]
|
||||||
else if (href_list["mark_object"])
|
|
||||||
if(!href_list["mark_object"])
|
else if(href_list["mark_object"])
|
||||||
return
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
var/datum/D = locate(href_list["mark_object"])
|
var/datum/D = locate(href_list["mark_object"])
|
||||||
if(!D)
|
if(!istype(D))
|
||||||
|
usr << "This can only be done to instances of type /datum"
|
||||||
return
|
return
|
||||||
if(!src.holder)
|
|
||||||
return
|
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
|
||||||
src.holder.marked_datum = D
|
src.holder.marked_datum = D
|
||||||
href_list["datumrefresh"] = href_list["mark_object"]
|
href_list["datumrefresh"] = href_list["mark_object"]
|
||||||
else if (href_list["rotatedatum"])
|
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
else if(href_list["rotatedatum"])
|
||||||
if(!href_list["rotatedir"])
|
if(!check_rights(0)) return
|
||||||
return
|
|
||||||
var/atom/A = locate(href_list["rotatedatum"])
|
var/atom/A = locate(href_list["rotatedatum"])
|
||||||
if(!A)
|
if(!istype(A))
|
||||||
return
|
usr << "This can only be done to instances of type /atom"
|
||||||
if(!istype(A,/atom))
|
|
||||||
usr << "This can only be done to objects of type /atom"
|
|
||||||
return
|
|
||||||
if(!src.holder)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
switch(href_list["rotatedir"])
|
switch(href_list["rotatedir"])
|
||||||
if("right")
|
if("right") A.dir = turn(A.dir, -45)
|
||||||
A.dir = turn(A.dir, -45)
|
if("left") A.dir = turn(A.dir, 45)
|
||||||
if("left")
|
|
||||||
A.dir = turn(A.dir, 45)
|
|
||||||
href_list["datumrefresh"] = href_list["rotatedatum"]
|
href_list["datumrefresh"] = href_list["rotatedatum"]
|
||||||
else if (href_list["makemonkey"])
|
|
||||||
var/mob/M = locate(href_list["makemonkey"])
|
else if(href_list["makemonkey"])
|
||||||
if(!M)
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
|
var/mob/living/carbon/human/H = locate(href_list["makemonkey"])
|
||||||
|
if(!istype(H))
|
||||||
|
usr << "This can only be done to instances of type /mob/living/carbon/human"
|
||||||
return
|
return
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
|
||||||
if(!ishuman(M))
|
if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return
|
||||||
usr << "This can only be done to objects of type /mob/living/carbon/human"
|
if(!H)
|
||||||
return
|
|
||||||
if(!src.holder)
|
|
||||||
usr << "You are not an administrator."
|
|
||||||
return
|
|
||||||
var/action_type = alert("Confirm mob type change?",,"Transform","Cancel")
|
|
||||||
if(!action_type || action_type == "Cancel")
|
|
||||||
return
|
|
||||||
if(!M)
|
|
||||||
usr << "Mob doesn't exist anymore"
|
usr << "Mob doesn't exist anymore"
|
||||||
return
|
return
|
||||||
holder.Topic(href, list("monkeyone"=href_list["makemonkey"]))
|
holder.Topic(href, list("monkeyone"=href_list["makemonkey"]))
|
||||||
else if (href_list["makerobot"])
|
|
||||||
var/mob/M = locate(href_list["makerobot"])
|
else if(href_list["makerobot"])
|
||||||
if(!M)
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
|
var/mob/living/carbon/human/H = locate(href_list["makerobot"])
|
||||||
|
if(!istype(H))
|
||||||
|
usr << "This can only be done to instances of type /mob/living/carbon/human"
|
||||||
return
|
return
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
|
||||||
if(!ishuman(M))
|
if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return
|
||||||
usr << "This can only be done to objects of type /mob/living/carbon/human"
|
if(!H)
|
||||||
return
|
|
||||||
if(!src.holder)
|
|
||||||
usr << "You are not an administrator."
|
|
||||||
return
|
|
||||||
var/action_type = alert("Confirm mob type change?",,"Transform","Cancel")
|
|
||||||
if(!action_type || action_type == "Cancel")
|
|
||||||
return
|
|
||||||
if(!M)
|
|
||||||
usr << "Mob doesn't exist anymore"
|
usr << "Mob doesn't exist anymore"
|
||||||
return
|
return
|
||||||
holder.Topic(href, list("makerobot"=href_list["makerobot"]))
|
holder.Topic(href, list("makerobot"=href_list["makerobot"]))
|
||||||
else if (href_list["makealien"])
|
|
||||||
var/mob/M = locate(href_list["makealien"])
|
else if(href_list["makealien"])
|
||||||
if(!M)
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
|
var/mob/living/carbon/human/H = locate(href_list["makealien"])
|
||||||
|
if(!istype(H))
|
||||||
|
usr << "This can only be done to instances of type /mob/living/carbon/human"
|
||||||
return
|
return
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
|
||||||
if(!ishuman(M))
|
if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return
|
||||||
usr << "This can only be done to objects of type /mob/living/carbon/human"
|
if(!H)
|
||||||
return
|
|
||||||
if(!src.holder)
|
|
||||||
usr << "You are not an administrator."
|
|
||||||
return
|
|
||||||
var/action_type = alert("Confirm mob type change?",,"Transform","Cancel")
|
|
||||||
if(!action_type || action_type == "Cancel")
|
|
||||||
return
|
|
||||||
if(!M)
|
|
||||||
usr << "Mob doesn't exist anymore"
|
usr << "Mob doesn't exist anymore"
|
||||||
return
|
return
|
||||||
holder.Topic(href, list("makealien"=href_list["makealien"]))
|
holder.Topic(href, list("makealien"=href_list["makealien"]))
|
||||||
else if (href_list["makemetroid"])
|
|
||||||
var/mob/M = locate(href_list["makemetroid"])
|
else if(href_list["makemetroid"])
|
||||||
if(!M)
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
|
var/mob/living/carbon/human/H = locate(href_list["makemetroid"])
|
||||||
|
if(!istype(H))
|
||||||
|
usr << "This can only be done to instances of type /mob/living/carbon/human"
|
||||||
return
|
return
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
|
||||||
if(!ishuman(M))
|
if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return
|
||||||
usr << "This can only be done to objects of type /mob/living/carbon/human"
|
if(!H)
|
||||||
return
|
|
||||||
if(!src.holder)
|
|
||||||
usr << "You are not an administrator."
|
|
||||||
return
|
|
||||||
var/action_type = alert("Confirm mob type change?",,"Transform","Cancel")
|
|
||||||
if(!action_type || action_type == "Cancel")
|
|
||||||
return
|
|
||||||
if(!M)
|
|
||||||
usr << "Mob doesn't exist anymore"
|
usr << "Mob doesn't exist anymore"
|
||||||
return
|
return
|
||||||
holder.Topic(href, list("makemetroid"=href_list["makemetroid"]))
|
holder.Topic(href, list("makemetroid"=href_list["makemetroid"]))
|
||||||
else if (href_list["makeai"])
|
|
||||||
var/mob/M = locate(href_list["makeai"])
|
else if(href_list["makeai"])
|
||||||
if(!M)
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
|
var/mob/living/carbon/human/H = locate(href_list["makeai"])
|
||||||
|
if(!istype(H))
|
||||||
|
usr << "This can only be done to instances of type /mob/living/carbon/human"
|
||||||
return
|
return
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
|
||||||
if(!ishuman(M))
|
if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return
|
||||||
usr << "This can only be done to objects of type /mob/living/carbon/human"
|
if(!H)
|
||||||
return
|
|
||||||
if(!src.holder)
|
|
||||||
usr << "You are not an administrator."
|
|
||||||
return
|
|
||||||
var/action_type = alert("Confirm mob type change?",,"Transform","Cancel")
|
|
||||||
if(!action_type || action_type == "Cancel")
|
|
||||||
return
|
|
||||||
if(!M)
|
|
||||||
usr << "Mob doesn't exist anymore"
|
usr << "Mob doesn't exist anymore"
|
||||||
return
|
return
|
||||||
holder.Topic(href, list("makeai"=href_list["makeai"]))
|
holder.Topic(href, list("makeai"=href_list["makeai"]))
|
||||||
else if (href_list["setmutantrace"])
|
|
||||||
|
else if(href_list["setmutantrace"])
|
||||||
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
var/mob/living/carbon/human/H = locate(href_list["setmutantrace"])
|
var/mob/living/carbon/human/H = locate(href_list["setmutantrace"])
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
|
||||||
if(!istype(H))
|
if(!istype(H))
|
||||||
usr << "This can only be done to objects of type /mob/living/carbon/human"
|
usr << "This can only be done to instances of type /mob/living/carbon/human"
|
||||||
return
|
|
||||||
if(!src.holder)
|
|
||||||
usr << "You are not an administrator."
|
|
||||||
return
|
return
|
||||||
|
|
||||||
var/new_mutantrace = input("Please choose a new mutantrace","Mutantrace",null) as null|anything in list("NONE","golem","lizard","metroid","plant")
|
var/new_mutantrace = input("Please choose a new mutantrace","Mutantrace",null) as null|anything in list("NONE","golem","lizard","metroid","plant")
|
||||||
switch(new_mutantrace)
|
switch(new_mutantrace)
|
||||||
if(null) return
|
if(null) return
|
||||||
if("NONE") new_mutantrace = ""
|
if("NONE") new_mutantrace = ""
|
||||||
if(!H || !istype(H))
|
if(!H)
|
||||||
usr << "Mob doesn't exist anymore"
|
usr << "Mob doesn't exist anymore"
|
||||||
return
|
return
|
||||||
if(H.dna)
|
if(H.dna)
|
||||||
H.dna.mutantrace = new_mutantrace
|
H.dna.mutantrace = new_mutantrace
|
||||||
H.update_mutantrace()
|
H.update_mutantrace()
|
||||||
else if (href_list["regenerateicons"])
|
|
||||||
|
else if(href_list["regenerateicons"])
|
||||||
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
var/mob/M = locate(href_list["regenerateicons"])
|
var/mob/M = locate(href_list["regenerateicons"])
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
if(!ismob(M))
|
||||||
if(!istype(M))
|
usr << "This can only be done to instances of type /mob"
|
||||||
usr << "This can only be done to objects of type /mob"
|
|
||||||
return
|
|
||||||
if(!src.holder)
|
|
||||||
usr << "You are not an administrator."
|
|
||||||
return
|
return
|
||||||
M.regenerate_icons()
|
M.regenerate_icons()
|
||||||
else if (href_list["adjustDamage"] && href_list["mobToDamage"])
|
|
||||||
var/mob/M = locate(href_list["mobToDamage"])
|
|
||||||
var/Text = locate(href_list["adjustDamage"])
|
|
||||||
|
|
||||||
if(!isliving(M)) return
|
else if(href_list["adjustDamage"] && href_list["mobToDamage"])
|
||||||
var/mob/living/L = M
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
var/mob/living/L = locate(href_list["mobToDamage"])
|
||||||
|
if(!istype(L)) return
|
||||||
|
|
||||||
|
var/Text = href_list["adjustDamage"]
|
||||||
|
|
||||||
var/amount = input("Deal how much damage to mob? (Negative values here heal)","Adjust [Text]loss",0) as num
|
var/amount = input("Deal how much damage to mob? (Negative values here heal)","Adjust [Text]loss",0) as num
|
||||||
if(Text == "brute")
|
|
||||||
L.adjustBruteLoss(amount)
|
if(!L)
|
||||||
else if(Text == "fire")
|
usr << "Mob doesn't exist anymore"
|
||||||
L.adjustFireLoss(amount)
|
|
||||||
else if(Text == "toxin")
|
|
||||||
L.adjustToxLoss(amount)
|
|
||||||
else if(Text == "oxygen")
|
|
||||||
L.adjustOxyLoss(amount)
|
|
||||||
else if(Text == "brain")
|
|
||||||
L.adjustBrainLoss(amount)
|
|
||||||
else if(Text == "clone")
|
|
||||||
L.adjustCloneLoss(amount)
|
|
||||||
else
|
|
||||||
usr << "You caused an error. DEBUG: Text:[Text] Mob:[M]"
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
switch(Text)
|
||||||
|
if("brute") L.adjustBruteLoss(amount)
|
||||||
|
if("fire") L.adjustFireLoss(amount)
|
||||||
|
if("toxin") L.adjustToxLoss(amount)
|
||||||
|
if("oxygen")L.adjustOxyLoss(amount)
|
||||||
|
if("brain") L.adjustBrainLoss(amount)
|
||||||
|
if("clone") L.adjustCloneLoss(amount)
|
||||||
|
else
|
||||||
|
usr << "You caused an error. DEBUG: Text:[Text] Mob:[L]"
|
||||||
|
return
|
||||||
|
|
||||||
if(amount != 0)
|
if(amount != 0)
|
||||||
log_admin("[key_name(usr)] dealt [amount] amount of [Text] damage to [M] ")
|
log_admin("[key_name(usr)] dealt [amount] amount of [Text] damage to [L] ")
|
||||||
message_admins("\blue [key_name(usr)] dealt [amount] amount of [Text] damage to [M] ", 1)
|
message_admins("\blue [key_name(usr)] dealt [amount] amount of [Text] damage to [L] ", 1)
|
||||||
href_list["datumrefresh"] = href_list["mobToDamage"]
|
href_list["datumrefresh"] = href_list["mobToDamage"]
|
||||||
else
|
else
|
||||||
. = 0
|
. = 0
|
||||||
if (href_list["datumrefresh"])
|
|
||||||
|
if(href_list["datumrefresh"])
|
||||||
var/datum/DAT = locate(href_list["datumrefresh"])
|
var/datum/DAT = locate(href_list["datumrefresh"])
|
||||||
if(!DAT)
|
if(!istype(DAT, /datum))
|
||||||
return
|
|
||||||
if(!istype(DAT,/datum))
|
|
||||||
return
|
return
|
||||||
src.debug_variables(DAT)
|
src.debug_variables(DAT)
|
||||||
. = 1
|
. = 1
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -305,7 +305,7 @@ datum/mind
|
|||||||
crystals = suplink.uses
|
crystals = suplink.uses
|
||||||
if (suplink)
|
if (suplink)
|
||||||
text += "|<a href='?src=\ref[src];common=takeuplink'>take</a>"
|
text += "|<a href='?src=\ref[src];common=takeuplink'>take</a>"
|
||||||
if (usr.client.holder.level >= 3)
|
if (usr.client.holder.rights & R_FUN)
|
||||||
text += ", <a href='?src=\ref[src];common=crystals'>[crystals]</a> crystals"
|
text += ", <a href='?src=\ref[src];common=crystals'>[crystals]</a> crystals"
|
||||||
else
|
else
|
||||||
text += ", [crystals] crystals"
|
text += ", [crystals] crystals"
|
||||||
@@ -332,17 +332,7 @@ datum/mind
|
|||||||
usr << browse(out, "window=edit_memory[src]")
|
usr << browse(out, "window=edit_memory[src]")
|
||||||
|
|
||||||
Topic(href, href_list)
|
Topic(href, href_list)
|
||||||
if(!usr || !usr.client)
|
if(!check_rights(R_ADMIN)) return
|
||||||
return
|
|
||||||
|
|
||||||
if(!usr.client.holder)
|
|
||||||
message_admins("\red [key_name(usr)] tried to access [current]'s mind without authorization.")
|
|
||||||
log_admin("[key_name(usr)] tried to access [current]'s mind without authorization.")
|
|
||||||
return
|
|
||||||
|
|
||||||
if (!(usr.client.holder.rank in list("Trial Admin", "Badmin", "Game Admin", "Game Master")))
|
|
||||||
alert("You cannot perform this action. You must be of a higher administrative rank!")
|
|
||||||
return
|
|
||||||
|
|
||||||
if (href_list["role_edit"])
|
if (href_list["role_edit"])
|
||||||
var/new_role = input("Select new role", "Assigned role", assigned_role) as null|anything in get_all_jobs()
|
var/new_role = input("Select new role", "Assigned role", assigned_role) as null|anything in get_all_jobs()
|
||||||
@@ -754,7 +744,7 @@ datum/mind
|
|||||||
return
|
return
|
||||||
switch(href_list["monkey"])
|
switch(href_list["monkey"])
|
||||||
if("healthy")
|
if("healthy")
|
||||||
if (usr.client.holder.level >= 3)
|
if (usr.client.holder.rights & R_ADMIN)
|
||||||
var/mob/living/carbon/human/H = current
|
var/mob/living/carbon/human/H = current
|
||||||
var/mob/living/carbon/monkey/M = current
|
var/mob/living/carbon/monkey/M = current
|
||||||
if (istype(H))
|
if (istype(H))
|
||||||
@@ -769,7 +759,7 @@ datum/mind
|
|||||||
D.cure(0)
|
D.cure(0)
|
||||||
sleep(0) //because deleting of virus is done through spawn(0)
|
sleep(0) //because deleting of virus is done through spawn(0)
|
||||||
if("infected")
|
if("infected")
|
||||||
if (usr.client.holder.level >= 3)
|
if (usr.client.holder.rights & R_ADMIN)
|
||||||
var/mob/living/carbon/human/H = current
|
var/mob/living/carbon/human/H = current
|
||||||
var/mob/living/carbon/monkey/M = current
|
var/mob/living/carbon/monkey/M = current
|
||||||
if (istype(H))
|
if (istype(H))
|
||||||
@@ -873,7 +863,7 @@ datum/mind
|
|||||||
take_uplink()
|
take_uplink()
|
||||||
memory = null//Remove any memory they may have had.
|
memory = null//Remove any memory they may have had.
|
||||||
if("crystals")
|
if("crystals")
|
||||||
if (usr.client.holder.level >= 3)
|
if (usr.client.holder.rights & R_FUN)
|
||||||
var/obj/item/device/uplink/hidden/suplink = find_syndicate_uplink()
|
var/obj/item/device/uplink/hidden/suplink = find_syndicate_uplink()
|
||||||
var/crystals
|
var/crystals
|
||||||
if (suplink)
|
if (suplink)
|
||||||
|
|||||||
@@ -118,13 +118,9 @@ var/global/Holiday = null
|
|||||||
set name = ".Set Holiday"
|
set name = ".Set Holiday"
|
||||||
set category = "Fun"
|
set category = "Fun"
|
||||||
set desc = "Force-set the Holiday variable to make the game think it's a certain day."
|
set desc = "Force-set the Holiday variable to make the game think it's a certain day."
|
||||||
|
if(!check_rights(R_SERVER)) return
|
||||||
if( !holder || !(holder.rank in list("Game Master","Game Admin")) )
|
|
||||||
src << "<font color='red'>Error: Set_Holiday: You hold insufficient rank to perform this action.</font>"
|
|
||||||
return
|
|
||||||
|
|
||||||
if(!T) return
|
if(!T) return
|
||||||
|
|
||||||
Holiday = T
|
Holiday = T
|
||||||
//get a new station name
|
//get a new station name
|
||||||
station_name = null
|
station_name = null
|
||||||
|
|||||||
@@ -9,53 +9,55 @@
|
|||||||
else
|
else
|
||||||
src << "\blue You are no longer listening to messages on the OOC channel."
|
src << "\blue You are no longer listening to messages on the OOC channel."
|
||||||
|
|
||||||
/mob/verb/ooc(msg as text)
|
/client/verb/ooc(msg as text)
|
||||||
set name = "OOC" //Gave this shit a shorter name so you only have to time out "ooc" rather than "ooc message" to use it --NeoFite
|
set name = "OOC" //Gave this shit a shorter name so you only have to time out "ooc" rather than "ooc message" to use it --NeoFite
|
||||||
set category = "OOC"
|
set category = "OOC"
|
||||||
if (IsGuestKey(src.key))
|
|
||||||
|
if(!mob) return
|
||||||
|
|
||||||
|
if(IsGuestKey(key))
|
||||||
src << "Guests may not use OOC."
|
src << "Guests may not use OOC."
|
||||||
return
|
return
|
||||||
|
|
||||||
msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN)
|
msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN)
|
||||||
if(!msg)
|
if(!msg) return
|
||||||
return
|
|
||||||
else if (!src.client.listen_ooc)
|
if(!listen_ooc)
|
||||||
src << "\red You have OOC muted."
|
src << "\red You have OOC muted."
|
||||||
return
|
return
|
||||||
else if (!ooc_allowed && !src.client.holder)
|
|
||||||
src << "\red OOC is globally muted"
|
if(!holder)
|
||||||
return
|
if(!ooc_allowed)
|
||||||
else if (!dooc_allowed && !src.client.holder && (src.client.deadchat != 0))
|
src << "\red OOC is globally muted"
|
||||||
usr << "\red OOC for dead mobs has been turned off."
|
return
|
||||||
return
|
if(!dooc_allowed && deadchat != 0)
|
||||||
else if (src.client)
|
usr << "\red OOC for dead mobs has been turned off."
|
||||||
if(src.client.muted & MUTE_OOC)
|
return
|
||||||
|
if(muted & MUTE_OOC)
|
||||||
src << "\red You cannot use OOC (muted)."
|
src << "\red You cannot use OOC (muted)."
|
||||||
return
|
return
|
||||||
|
if(handle_spam_prevention(msg,MUTE_OOC))
|
||||||
if (src.client.handle_spam_prevention(msg,MUTE_OOC))
|
return
|
||||||
|
if(findtext(msg, "byond://"))
|
||||||
|
src << "<B>Advertising other servers is not allowed.</B>"
|
||||||
|
log_admin("[key_name(src)] has attempted to advertise in OOC: [msg]")
|
||||||
|
message_admins("[key_name_admin(src)] has attempted to advertise in OOC: [msg]")
|
||||||
return
|
return
|
||||||
else if (findtext(msg, "byond://") && !src.client.holder)
|
|
||||||
src << "<B>Advertising other servers is not allowed.</B>"
|
|
||||||
log_admin("[key_name(src)] has attempted to advertise in OOC: [msg]")
|
|
||||||
message_admins("[key_name_admin(src)] has attempted to advertise in OOC: [msg]")
|
|
||||||
return
|
|
||||||
|
|
||||||
log_ooc("[src.name]/[src.key] : [msg]")
|
log_ooc("[mob.name]/[key] : [msg]")
|
||||||
|
|
||||||
for (var/client/C)
|
for(var/client/C in clients)
|
||||||
if(C.listen_ooc)
|
if(C.listen_ooc)
|
||||||
if (src.client.holder)
|
if(holder)
|
||||||
if(!src.client.holder.fakekey || C.holder)
|
if(!holder.fakekey || C.holder)
|
||||||
if (src.client.holder.rank == "Admin Observer")
|
if(holder.rights & R_ADMIN)
|
||||||
C << "<span class='adminobserverooc'><span class='prefix'>OOC:</span> <EM>[src.key][src.client.holder.fakekey ? "/([src.client.holder.fakekey])" : ""]:</EM> <span class='message'>[msg]</span></span>"
|
C << "<font color=[holder.ooccolor]><b><span class='prefix'>OOC:</span> <EM>[key][holder.fakekey ? "/([holder.fakekey])" : ""]:</EM> <span class='message'>[msg]</span></b></font>"
|
||||||
else if (src.client.holder.level >= 5)
|
|
||||||
C << "<font color=[src.client.holder.ooccolor]><b><span class='prefix'>OOC:</span> <EM>[src.key][src.client.holder.fakekey ? "/([src.client.holder.fakekey])" : ""]:</EM> <span class='message'>[msg]</span></b></font>"
|
|
||||||
else
|
else
|
||||||
C << "<span class='adminooc'><span class='prefix'>OOC:</span> <EM>[src.key][src.client.holder.fakekey ? "/([src.client.holder.fakekey])" : ""]:</EM> <span class='message'>[msg]</span></span>"
|
C << "<span class='adminobserverooc'><span class='prefix'>OOC:</span> <EM>[key][holder.fakekey ? "/([holder.fakekey])" : ""]:</EM> <span class='message'>[msg]</span></span>"
|
||||||
else
|
else
|
||||||
C << "<font color='[normal_ooc_colour]'><span class='ooc'><span class='prefix'>OOC:</span> <EM>[src.client.holder.fakekey ? src.client.holder.fakekey : src.key]:</EM> <span class='message'>[msg]</span></span></font>"
|
C << "<font color='[normal_ooc_colour]'><span class='ooc'><span class='prefix'>OOC:</span> <EM>[holder.fakekey ? holder.fakekey : key]:</EM> <span class='message'>[msg]</span></span></font>"
|
||||||
else
|
else
|
||||||
C << "<font color='[normal_ooc_colour]'><span class='ooc'><span class='prefix'>OOC:</span> <EM>[src.key]:</EM> <span class='message'>[msg]</span></span></font>"
|
C << "<font color='[normal_ooc_colour]'><span class='ooc'><span class='prefix'>OOC:</span> <EM>[key]:</EM> <span class='message'>[msg]</span></span></font>"
|
||||||
|
|
||||||
var/global/normal_ooc_colour = "#002eb8"
|
var/global/normal_ooc_colour = "#002eb8"
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
var/list/Lines = list()
|
var/list/Lines = list()
|
||||||
|
|
||||||
if(holder && holder.level >= 0) //Everything above admin-observers get this.
|
if(holder)
|
||||||
for(var/client/C in clients)
|
for(var/client/C in clients)
|
||||||
var/entry = "\t[C.key]"
|
var/entry = "\t[C.key]"
|
||||||
if(C.holder && C.holder.fakekey)
|
if(C.holder && C.holder.fakekey)
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
//#define TESTING
|
||||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||||
|
|
||||||
var/global/obj/effect/datacore/data_core = null
|
var/global/obj/effect/datacore/data_core = null
|
||||||
@@ -206,29 +207,19 @@ var/forum_authenticated_group = "10"
|
|||||||
var/fileaccess_timer = 1800 //Cannot access files by ftp until the game is finished setting up and stuff.
|
var/fileaccess_timer = 1800 //Cannot access files by ftp until the game is finished setting up and stuff.
|
||||||
|
|
||||||
|
|
||||||
#define BUILDMODE 1
|
//Please don't edit these values without speaking to Errorage first ~Carn
|
||||||
#define ADMIN 2
|
//Admin Permissions
|
||||||
#define BAN 4
|
#define R_BUILDMODE 1
|
||||||
#define FUN 8
|
#define R_ADMIN 2
|
||||||
#define SERVER 16
|
#define R_BAN 4
|
||||||
#define ADMDEBUG 32
|
#define R_FUN 8
|
||||||
#define POSSESS 64
|
#define R_SERVER 16
|
||||||
#define PERMISSIONS 128
|
#define R_DEBUG 32
|
||||||
//Keep this list synced with the #defines above
|
#define R_POSSESS 64
|
||||||
var/global/list/permissionwords = list("BUILDMODE", "ADMIN", "BAN", "FUN", "SERVER", "DEBUG", "POSSESS", "EDITPERMISSIONS")
|
#define R_PERMISSIONS 128
|
||||||
|
#define R_STEALTH 256
|
||||||
|
#define R_REJUVINATE 512
|
||||||
|
#define R_VAREDIT 1024
|
||||||
|
#define R_SOUNDS 2048
|
||||||
|
|
||||||
|
#define R_HOST 65535
|
||||||
|
|
||||||
//Please do not edit these values. The database assigning proper rights relies on this. You can add new values, just don't change existing ones.
|
|
||||||
//This list is separate from the list used ingame, so that one can be edited with little consequence. This one is tied to the database
|
|
||||||
//The database admins should be consulted before any edits to this list.
|
|
||||||
#define SQL_BUILDMODE 1
|
|
||||||
#define SQL_ADMIN 2
|
|
||||||
#define SQL_BAN 4
|
|
||||||
#define SQL_FUN 8
|
|
||||||
#define SQL_SERVER 16
|
|
||||||
#define SQL_DEBUG 32
|
|
||||||
#define SQL_POSSESS 64
|
|
||||||
#define SQL_PERMISSIONS 128
|
|
||||||
//Same rules apply to this list as to the values above. You can only add stuff to it.
|
|
||||||
var/global/list/permissionwords_sql = list("BUILDMODE", "ADMIN", "BAN", "FUN", "SERVER", "DEBUG", "POSSESS", "EDITPERMISSIONS")
|
|
||||||
|
|||||||
@@ -350,179 +350,128 @@ var/global/floorIsLava = 0
|
|||||||
|
|
||||||
|
|
||||||
/datum/admins/proc/Jobbans()
|
/datum/admins/proc/Jobbans()
|
||||||
|
if(!check_rights(R_BAN)) return
|
||||||
|
|
||||||
if ((src.rank in list( "Game Admin", "Game Master" )))
|
var/dat = "<B>Job Bans!</B><HR><table>"
|
||||||
var/dat = "<B>Job Bans!</B><HR><table>"
|
for(var/t in jobban_keylist)
|
||||||
for(var/t in jobban_keylist)
|
var/r = t
|
||||||
var/r = t
|
if( findtext(r,"##") )
|
||||||
if( findtext(r,"##") )
|
r = copytext( r, 1, findtext(r,"##") )//removes the description
|
||||||
r = copytext( r, 1, findtext(r,"##") )//removes the description
|
dat += text("<tr><td>[t] (<A href='?src=\ref[src];removejobban=[r]'>unban</A>)</td></tr>")
|
||||||
dat += text("<tr><td>[t] (<A href='?src=\ref[src];removejobban=[r]'>unban</A>)</td></tr>")
|
dat += "</table>"
|
||||||
dat += "</table>"
|
usr << browse(dat, "window=ban;size=400x400")
|
||||||
usr << browse(dat, "window=ban;size=400x400")
|
|
||||||
|
|
||||||
/datum/admins/proc/Game()
|
/datum/admins/proc/Game()
|
||||||
|
if(!check_rights(0)) return
|
||||||
var/dat
|
|
||||||
var/lvl = 0
|
|
||||||
switch(src.rank)
|
|
||||||
if("Moderator")
|
|
||||||
lvl = 1
|
|
||||||
if("Temporary Admin")
|
|
||||||
lvl = 2
|
|
||||||
if("Admin Candidate")
|
|
||||||
lvl = 3
|
|
||||||
if("Trial Admin")
|
|
||||||
lvl = 4
|
|
||||||
if("Badmin")
|
|
||||||
lvl = 5
|
|
||||||
if("Game Admin")
|
|
||||||
lvl = 6
|
|
||||||
if("Game Master")
|
|
||||||
lvl = 7
|
|
||||||
|
|
||||||
dat += "<center><B>Game Panel</B></center><hr>\n"
|
|
||||||
|
|
||||||
if(lvl > 0)
|
|
||||||
|
|
||||||
// if(lvl >= 2 )
|
|
||||||
dat += "<A href='?src=\ref[src];c_mode=1'>Change Game Mode</A><br>"
|
|
||||||
|
|
||||||
if(lvl > 0 && master_mode == "secret")
|
|
||||||
dat += "<A href='?src=\ref[src];f_secret=1'>(Force Secret Mode)</A><br>"
|
|
||||||
|
|
||||||
dat += "<BR>"
|
|
||||||
|
|
||||||
if(lvl >= 3 )
|
|
||||||
dat += "<A href='?src=\ref[src];create_object=1'>Create Object</A><br>"
|
|
||||||
dat += "<A href='?src=\ref[src];quick_create_object=1'>Quick Create Object</A><br>"
|
|
||||||
dat += "<A href='?src=\ref[src];create_turf=1'>Create Turf</A><br>"
|
|
||||||
if(lvl >= 5)
|
|
||||||
dat += "<A href='?src=\ref[src];create_mob=1'>Create Mob</A><br>"
|
|
||||||
// if(lvl == 6 )
|
|
||||||
usr << browse(dat, "window=admin2;size=210x180")
|
|
||||||
return
|
|
||||||
/*
|
|
||||||
/datum/admins/proc/goons()
|
|
||||||
var/dat = "<HR><B>GOOOOOOONS</B><HR><table cellspacing=5><tr><th>Key</th><th>SA Username</th></tr>"
|
|
||||||
for(var/t in goon_keylist)
|
|
||||||
dat += text("<tr><td><A href='?src=\ref[src];remove=[ckey(t)]'><B>[t]</B></A></td><td>[goon_keylist[ckey(t)]]</td></tr>")
|
|
||||||
dat += "</table>"
|
|
||||||
usr << browse(dat, "window=ban;size=300x400")
|
|
||||||
|
|
||||||
/datum/admins/proc/beta_testers()
|
|
||||||
var/dat = "<HR><B>Beta testers</B><HR><table cellspacing=5><tr><th>Key</th></tr>"
|
|
||||||
for(var/t in beta_tester_keylist)
|
|
||||||
dat += text("<tr><td>[t]</td></tr>")
|
|
||||||
dat += "</table>"
|
|
||||||
usr << browse(dat, "window=ban;size=300x400")
|
|
||||||
*/
|
|
||||||
/datum/admins/proc/Secrets()
|
|
||||||
if (!usr.client.holder)
|
|
||||||
return
|
|
||||||
|
|
||||||
var/lvl = 0
|
|
||||||
switch(src.rank)
|
|
||||||
if("Moderator")
|
|
||||||
lvl = 1
|
|
||||||
if("Temporary Admin")
|
|
||||||
lvl = 2
|
|
||||||
if("Admin Candidate")
|
|
||||||
lvl = 3
|
|
||||||
if("Trial Admin")
|
|
||||||
lvl = 4
|
|
||||||
if("Badmin")
|
|
||||||
lvl = 5
|
|
||||||
if("Game Admin")
|
|
||||||
lvl = 6
|
|
||||||
if("Game Master")
|
|
||||||
lvl = 7
|
|
||||||
|
|
||||||
var/dat = {"
|
var/dat = {"
|
||||||
<B>Choose a secret, any secret at all.</B><HR>
|
<center><B>Game Panel</B></center><hr>\n
|
||||||
<B>Admin Secrets</B><BR>
|
<A href='?src=\ref[src];c_mode=1'>Change Game Mode</A><br>
|
||||||
<BR>
|
|
||||||
<A href='?src=\ref[src];secretsadmin=clear_bombs'>Remove all bombs currently in existence</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsadmin=list_bombers'>Bombing List</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsadmin=check_antagonist'>Show current traitors and objectives</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsadmin=list_signalers'>Show last [length(lastsignalers)] signalers</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsadmin=list_lawchanges'>Show last [length(lawchanges)] law changes</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsadmin=showailaws'>Show AI Laws</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsadmin=showgm'>Show Game Mode</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsadmin=manifest'>Show Crew Manifest</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsadmin=DNA'>List DNA (Blood)</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsadmin=fingerprints'>List Fingerprints</A><BR><BR>
|
|
||||||
<BR>"}
|
|
||||||
if(lvl > 2)
|
|
||||||
dat += {"
|
|
||||||
<B>'Random' Events</B><BR>
|
|
||||||
<BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=wave'>Spawn a wave of meteors</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=gravanomalies'>Spawn a gravitational anomaly (Untested)</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=timeanomalies'>Spawn wormholes (Untested)</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=goblob'>Spawn blob(Untested)</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=aliens'>Trigger an Alien infestation</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=spaceninja'>Send in a space ninja</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=carp'>Trigger an Carp migration</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=radiation'>Irradiate the station</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=prison_break'>Trigger a Prison Break</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=virus'>Trigger a Virus Outbreak</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=immovable'>Spawn an Immovable Rod</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=lightsout'>Toggle a "lights out" event</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=ionstorm'>Spawn an Ion Storm</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=spacevines'>Spawn Space-Vines</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=comms_blackout'>Trigger a communication blackout</A><BR>
|
|
||||||
<BR>
|
|
||||||
<B>Fun Secrets</B><BR>
|
|
||||||
<BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=sec_clothes'>Remove 'internal' clothing</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=sec_all_clothes'>Remove ALL clothing</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=toxic'>Toxic Air (WARNING: dangerous)</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=monkey'>Turn all humans into monkeys</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=sec_classic1'>Remove firesuits, grilles, and pods</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=power'>Make all areas powered</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=unpower'>Make all areas unpowered</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=quickpower'>Power all SMES</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=toggleprisonstatus'>Toggle Prison Shuttle Status(Use with S/R)</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=activateprison'>Send Prison Shuttle</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=deactivateprison'>Return Prison Shuttle</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=prisonwarp'>Warp all Players to Prison</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=traitor_all'>Everyone is the traitor</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=flicklights'>Ghost Mode</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=retardify'>Make all players retarded</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=fakeguns'>Make all items look like guns</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=schoolgirl'>Japanese Animes Mode</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=moveadminshuttle'>Move Administration Shuttle</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=moveferry'>Move Ferry</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=movealienship'>Move Alien Dinghy</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=moveminingshuttle'>Move Mining Shuttle</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=blackout'>Break all lights</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=whiteout'>Fix all lights</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=friendai'>Best Friend AI</A><BR>
|
|
||||||
<A href='?src=\ref[src];secretsfun=floorlava'>The floor is lava! (DANGEROUS)</A><BR>"}
|
|
||||||
//<A href='?src=\ref[src];secretsfun=shockwave'>Station Shockwave</A><BR>
|
|
||||||
|
|
||||||
if(lvl >= 6)
|
|
||||||
dat += {"
|
|
||||||
<A href='?src=\ref[src];secretsfun=togglebombcap'>Toggle bomb cap</A><BR>
|
|
||||||
"}
|
"}
|
||||||
|
if(master_mode == "secret")
|
||||||
|
dat += "<A href='?src=\ref[src];f_secret=1'>(Force Secret Mode)</A><br>"
|
||||||
|
|
||||||
|
if(check_rights(R_ADMIN))
|
||||||
|
dat += {"
|
||||||
|
"<BR>"
|
||||||
|
<A href='?src=\ref[src];create_object=1'>Create Object</A><br>
|
||||||
|
<A href='?src=\ref[src];quick_create_object=1'>Quick Create Object</A><br>
|
||||||
|
<A href='?src=\ref[src];create_turf=1'>Create Turf</A><br>
|
||||||
|
<A href='?src=\ref[src];create_mob=1'>Create Mob</A><br>
|
||||||
|
"}
|
||||||
|
|
||||||
|
usr << browse(dat, "window=admin2;size=210x180")
|
||||||
|
return
|
||||||
|
|
||||||
|
/datum/admins/proc/Secrets()
|
||||||
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
|
var/dat = {"
|
||||||
|
<B>Choose a secret, any secret at all.</B><HR>
|
||||||
|
<B>Admin Secrets</B><BR>
|
||||||
|
<BR>
|
||||||
|
<A href='?src=\ref[src];secretsadmin=clear_bombs'>Remove all bombs currently in existence</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsadmin=list_bombers'>Bombing List</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsadmin=check_antagonist'>Show current traitors and objectives</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsadmin=list_signalers'>Show last [length(lastsignalers)] signalers</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsadmin=list_lawchanges'>Show last [length(lawchanges)] law changes</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsadmin=showailaws'>Show AI Laws</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsadmin=showgm'>Show Game Mode</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsadmin=manifest'>Show Crew Manifest</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsadmin=DNA'>List DNA (Blood)</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsadmin=fingerprints'>List Fingerprints</A><BR><BR>
|
||||||
|
<BR>
|
||||||
|
"}
|
||||||
|
|
||||||
|
if(check_rights(R_FUN,0))
|
||||||
|
dat += {"
|
||||||
|
<B>'Random' Events</B><BR>
|
||||||
|
<BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=wave'>Spawn a wave of meteors</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=gravanomalies'>Spawn a gravitational anomaly (Untested)</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=timeanomalies'>Spawn wormholes (Untested)</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=goblob'>Spawn blob(Untested)</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=aliens'>Trigger an Alien infestation</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=spaceninja'>Send in a space ninja</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=carp'>Trigger an Carp migration</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=radiation'>Irradiate the station</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=prison_break'>Trigger a Prison Break</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=virus'>Trigger a Virus Outbreak</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=immovable'>Spawn an Immovable Rod</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=lightsout'>Toggle a "lights out" event</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=ionstorm'>Spawn an Ion Storm</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=spacevines'>Spawn Space-Vines</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=comms_blackout'>Trigger a communication blackout</A><BR>
|
||||||
|
<BR>
|
||||||
|
<B>Fun Secrets</B><BR>
|
||||||
|
<BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=sec_clothes'>Remove 'internal' clothing</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=sec_all_clothes'>Remove ALL clothing</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=toxic'>Toxic Air (WARNING: dangerous)</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=monkey'>Turn all humans into monkeys</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=sec_classic1'>Remove firesuits, grilles, and pods</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=power'>Make all areas powered</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=unpower'>Make all areas unpowered</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=quickpower'>Power all SMES</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=toggleprisonstatus'>Toggle Prison Shuttle Status(Use with S/R)</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=activateprison'>Send Prison Shuttle</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=deactivateprison'>Return Prison Shuttle</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=prisonwarp'>Warp all Players to Prison</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=traitor_all'>Everyone is the traitor</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=flicklights'>Ghost Mode</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=retardify'>Make all players retarded</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=fakeguns'>Make all items look like guns</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=schoolgirl'>Japanese Animes Mode</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=moveadminshuttle'>Move Administration Shuttle</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=moveferry'>Move Ferry</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=movealienship'>Move Alien Dinghy</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=moveminingshuttle'>Move Mining Shuttle</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=blackout'>Break all lights</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=whiteout'>Fix all lights</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=friendai'>Best Friend AI</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=floorlava'>The floor is lava! (DANGEROUS)</A><BR>
|
||||||
|
"}
|
||||||
|
|
||||||
|
if(check_rights(R_SERVER,0))
|
||||||
|
dat += "<A href='?src=\ref[src];secretsfun=togglebombcap'>Toggle bomb cap</A><BR>"
|
||||||
|
|
||||||
dat += "<BR>"
|
dat += "<BR>"
|
||||||
|
|
||||||
if(lvl >= 5)
|
if(check_rights(R_DEBUG,0))
|
||||||
dat += {"
|
dat += {"
|
||||||
<B>Security Level Elevated</B><BR>
|
<B>Security Level Elevated</B><BR>
|
||||||
<BR>
|
<BR>
|
||||||
<A href='?src=\ref[src];secretscoder=maint_access_engiebrig'>Change all maintenance doors to engie/brig access only</A><BR>
|
<A href='?src=\ref[src];secretscoder=maint_access_engiebrig'>Change all maintenance doors to engie/brig access only</A><BR>
|
||||||
<A href='?src=\ref[src];secretscoder=maint_access_brig'>Change all maintenance doors to brig access only</A><BR>
|
<A href='?src=\ref[src];secretscoder=maint_access_brig'>Change all maintenance doors to brig access only</A><BR>
|
||||||
<A href='?src=\ref[src];secretscoder=infinite_sec'>Remove cap on security officers</A><BR>
|
<A href='?src=\ref[src];secretscoder=infinite_sec'>Remove cap on security officers</A><BR>
|
||||||
<BR>
|
<BR>
|
||||||
<B>Coder Secrets</B><BR>
|
<B>Coder Secrets</B><BR>
|
||||||
<BR>
|
<BR>
|
||||||
<A href='?src=\ref[src];secretsadmin=list_job_debug'>Show Job Debug</A><BR>
|
<A href='?src=\ref[src];secretsadmin=list_job_debug'>Show Job Debug</A><BR>
|
||||||
<A href='?src=\ref[src];secretscoder=spawn_objects'>Admin Log</A><BR>
|
<A href='?src=\ref[src];secretscoder=spawn_objects'>Admin Log</A><BR>
|
||||||
<BR>
|
<BR>
|
||||||
"}
|
"}
|
||||||
|
|
||||||
usr << browse(dat, "window=secrets")
|
usr << browse(dat, "window=secrets")
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -559,10 +508,11 @@ var/global/floorIsLava = 0
|
|||||||
set category = "Special Verbs"
|
set category = "Special Verbs"
|
||||||
set name = "Announce"
|
set name = "Announce"
|
||||||
set desc="Announce your desires to the world"
|
set desc="Announce your desires to the world"
|
||||||
if(!usr.client.holder) return
|
if(!check_rights(0)) return
|
||||||
|
|
||||||
var/message = input("Global message to send:", "Admin Announce", null, null) as message
|
var/message = input("Global message to send:", "Admin Announce", null, null) as message
|
||||||
if (message)
|
if(message)
|
||||||
if(usr.client.holder.rank != "Game Admin" && usr.client.holder.rank != "Game Master")
|
if(!check_rights(R_SERVER,0))
|
||||||
message = adminscrub(message,500)
|
message = adminscrub(message,500)
|
||||||
world << "\blue <b>[usr.client.holder.fakekey ? "Administrator" : usr.key] Announces:</b>\n \t [message]"
|
world << "\blue <b>[usr.client.holder.fakekey ? "Administrator" : usr.key] Announces:</b>\n \t [message]"
|
||||||
log_admin("Announce: [key_name(usr)] : [message]")
|
log_admin("Announce: [key_name(usr)] : [message]")
|
||||||
@@ -837,36 +787,32 @@ var/global/floorIsLava = 0
|
|||||||
*/
|
*/
|
||||||
/datum/admins/proc/spawn_atom(var/object as text)
|
/datum/admins/proc/spawn_atom(var/object as text)
|
||||||
set category = "Debug"
|
set category = "Debug"
|
||||||
set desc= "(atom path) Spawn an atom"
|
set desc = "(atom path) Spawn an atom"
|
||||||
set name= "Spawn"
|
set name = "Spawn"
|
||||||
|
|
||||||
if(usr.client.holder.level >= 5)
|
if(!check_rights(R_DEBUG)) return
|
||||||
var/list/types = typesof(/atom)
|
|
||||||
|
|
||||||
var/list/matches = new()
|
var/list/types = typesof(/atom)
|
||||||
|
var/list/matches = new()
|
||||||
|
|
||||||
for(var/path in types)
|
for(var/path in types)
|
||||||
if(findtext("[path]", object))
|
if(findtext("[path]", object))
|
||||||
matches += path
|
matches += path
|
||||||
|
|
||||||
if(matches.len==0)
|
if(matches.len==0)
|
||||||
|
return
|
||||||
|
|
||||||
|
var/chosen
|
||||||
|
if(matches.len==1)
|
||||||
|
chosen = matches[1]
|
||||||
|
else
|
||||||
|
chosen = input("Select an atom type", "Spawn Atom", matches[1]) as null|anything in matches
|
||||||
|
if(!chosen)
|
||||||
return
|
return
|
||||||
|
|
||||||
var/chosen
|
new chosen(usr.loc)
|
||||||
if(matches.len==1)
|
|
||||||
chosen = matches[1]
|
|
||||||
else
|
|
||||||
chosen = input("Select an atom type", "Spawn Atom", matches[1]) as null|anything in matches
|
|
||||||
if(!chosen)
|
|
||||||
return
|
|
||||||
|
|
||||||
new chosen(usr.loc)
|
log_admin("[key_name(usr)] spawned [chosen] at ([usr.x],[usr.y],[usr.z])")
|
||||||
|
|
||||||
log_admin("[key_name(usr)] spawned [chosen] at ([usr.x],[usr.y],[usr.z])")
|
|
||||||
|
|
||||||
else
|
|
||||||
alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null)
|
|
||||||
return
|
|
||||||
feedback_add_details("admin_verb","SA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","SA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,15 +5,12 @@
|
|||||||
/client/proc/admin_memo(task in list("write","show","delete"))
|
/client/proc/admin_memo(task in list("write","show","delete"))
|
||||||
set name = "Memo"
|
set name = "Memo"
|
||||||
set category = "Server"
|
set category = "Server"
|
||||||
if(!holder || !ENABLE_MEMOS) return
|
if(!ENABLE_MEMOS) return
|
||||||
|
if(!check_rights(0)) return
|
||||||
switch(task)
|
switch(task)
|
||||||
if("write")
|
if("write") admin_memo_write()
|
||||||
admin_memo_write()
|
if("show") admin_memo_show()
|
||||||
if("show")
|
if("delete") admin_memo_delete()
|
||||||
admin_memo_show()
|
|
||||||
if("delete")
|
|
||||||
admin_memo_delete()
|
|
||||||
|
|
||||||
|
|
||||||
//write a message
|
//write a message
|
||||||
/client/proc/admin_memo_write()
|
/client/proc/admin_memo_write()
|
||||||
@@ -45,7 +42,7 @@
|
|||||||
var/savefile/F = new(MEMOFILE)
|
var/savefile/F = new(MEMOFILE)
|
||||||
if(F)
|
if(F)
|
||||||
var/ckey
|
var/ckey
|
||||||
if( holder.rank == "Game Master" )
|
if(check_rights(R_SERVER,0)) //high ranking admins can delete other admin's memos
|
||||||
ckey = input(src,"Whose memo shall we remove?","Remove Memo",null) as null|anything in F.dir
|
ckey = input(src,"Whose memo shall we remove?","Remove Memo",null) as null|anything in F.dir
|
||||||
else
|
else
|
||||||
ckey = src.ckey
|
ckey = src.ckey
|
||||||
|
|||||||
142
code/modules/admin/admin_ranks.dm
Normal file
142
code/modules/admin/admin_ranks.dm
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
var/list/admin_ranks = list() //list of all ranks with associated rights
|
||||||
|
|
||||||
|
//load our rank - > rights associations
|
||||||
|
/proc/load_admin_ranks()
|
||||||
|
admin_ranks.Cut()
|
||||||
|
|
||||||
|
var/previous_rights = 0
|
||||||
|
|
||||||
|
//load text from file
|
||||||
|
var/list/Lines = file2list("config/admin_ranks.txt")
|
||||||
|
|
||||||
|
//process each line seperately
|
||||||
|
for(var/line in Lines)
|
||||||
|
if(!length(line)) continue
|
||||||
|
if(copytext(line,1,2) == "#") continue
|
||||||
|
|
||||||
|
var/list/List = text2list(line,"+")
|
||||||
|
if(!List.len) continue
|
||||||
|
|
||||||
|
var/rank = ckeyEx(List[1])
|
||||||
|
switch(rank)
|
||||||
|
if(null,"") continue
|
||||||
|
if("Removed") continue //Reserved
|
||||||
|
|
||||||
|
var/rights = 0
|
||||||
|
for(var/i=2, i<=List.len, i++)
|
||||||
|
switch(ckey(List[i]))
|
||||||
|
if("@","prev") rights |= previous_rights
|
||||||
|
if("buildmode","build") rights |= R_BUILDMODE
|
||||||
|
if("admin") rights |= R_ADMIN
|
||||||
|
if("ban") rights |= R_BAN
|
||||||
|
if("fun") rights |= R_FUN
|
||||||
|
if("server") rights |= R_SERVER
|
||||||
|
if("debug") rights |= R_DEBUG
|
||||||
|
if("permissions","rights") rights |= R_PERMISSIONS
|
||||||
|
if("possess") rights |= R_POSSESS
|
||||||
|
if("stealth") rights |= R_STEALTH
|
||||||
|
if("rejuv","rejuvinate") rights |= R_REJUVINATE
|
||||||
|
if("varedit") rights |= R_VAREDIT
|
||||||
|
if("everything","host","all") rights |= R_HOST
|
||||||
|
if("sound","sounds") rights |= R_SOUNDS
|
||||||
|
|
||||||
|
admin_ranks[rank] = rights
|
||||||
|
previous_rights = rights
|
||||||
|
|
||||||
|
#ifdef TESTING
|
||||||
|
var/msg = "Permission Sets Built:\n"
|
||||||
|
for(var/rank in admin_ranks)
|
||||||
|
msg += "\t[rank] - [admin_ranks[rank]]\n"
|
||||||
|
testing(msg)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/proc/load_admins()
|
||||||
|
//clear the datums references
|
||||||
|
admin_datums.Cut()
|
||||||
|
for(var/client/C in admins)
|
||||||
|
C.remove_admin_verbs()
|
||||||
|
C.holder = null
|
||||||
|
admins.Cut()
|
||||||
|
|
||||||
|
if(config.admin_legacy_system)
|
||||||
|
load_admin_ranks()
|
||||||
|
|
||||||
|
//load text from file
|
||||||
|
var/list/Lines = file2list("config/admins.txt")
|
||||||
|
|
||||||
|
//process each line seperately
|
||||||
|
for(var/line in Lines)
|
||||||
|
if(!length(line)) continue
|
||||||
|
if(copytext(line,1,2) == "#") continue
|
||||||
|
|
||||||
|
//Split the line at every "-"
|
||||||
|
var/list/List = text2list(line, "-")
|
||||||
|
if(!List.len) continue
|
||||||
|
|
||||||
|
//ckey is before the first "-"
|
||||||
|
var/ckey = ckey(List[1])
|
||||||
|
if(!ckey) continue
|
||||||
|
|
||||||
|
//rank follows the first "-"
|
||||||
|
var/rank = ""
|
||||||
|
if(List.len >= 2)
|
||||||
|
rank = ckeyEx(List[2])
|
||||||
|
|
||||||
|
//load permissions associated with this rank
|
||||||
|
var/rights = admin_ranks[rank]
|
||||||
|
|
||||||
|
//create the admin datum and store it for later use
|
||||||
|
var/datum/admins/D = new /datum/admins(rank, rights, ckey)
|
||||||
|
|
||||||
|
//find the client for a ckey if they are connected and associate them with the new admin datum
|
||||||
|
D.associate(directory[ckey])
|
||||||
|
|
||||||
|
else
|
||||||
|
//The current admin system uses SQL
|
||||||
|
var/user = sqlfdbklogin
|
||||||
|
var/pass = sqlfdbkpass
|
||||||
|
var/db = sqlfdbkdb
|
||||||
|
var/address = sqladdress
|
||||||
|
var/port = sqlport
|
||||||
|
|
||||||
|
var/DBConnection/dbcon = new()
|
||||||
|
|
||||||
|
dbcon.Connect("dbi:mysql:[db]:[address]:[port]","[user]","[pass]")
|
||||||
|
if(!dbcon.IsConnected())
|
||||||
|
diary << "Failed to connect to database in load_admins(). Reverting to legacy system."
|
||||||
|
config.admin_legacy_system = 1
|
||||||
|
load_admins()
|
||||||
|
return
|
||||||
|
|
||||||
|
var/DBQuery/query = dbcon.NewQuery("SELECT ckey, rank, level, flags FROM erro_admin")
|
||||||
|
query.Execute()
|
||||||
|
while(query.NextRow())
|
||||||
|
var/ckey = query.item[1]
|
||||||
|
var/rank = query.item[2]
|
||||||
|
if(rank == "Removed") return //This person was de-adminned. They are only in the admin list for archive purposes.
|
||||||
|
|
||||||
|
var/rights = query.item[4]
|
||||||
|
if(istext(rights)) rights = text2num(rights)
|
||||||
|
var/datum/admins/D = new /datum/admins(rank, rights, ckey)
|
||||||
|
|
||||||
|
//find the client for a ckey if they are connected and associate them with the new admin datum
|
||||||
|
D.associate(directory[ckey])
|
||||||
|
|
||||||
|
if(!admin_datums)
|
||||||
|
diary << "The database query in load_admins() resulted in no admins being added to the list. Reverting to legacy system."
|
||||||
|
config.admin_legacy_system = 1
|
||||||
|
load_admins()
|
||||||
|
return
|
||||||
|
|
||||||
|
#ifdef TESTING
|
||||||
|
var/msg = "Admins Built:\n"
|
||||||
|
for(var/ckey in admin_datums)
|
||||||
|
var/rank
|
||||||
|
var/datum/admins/D = admin_datums[ckey]
|
||||||
|
if(D) rank = D.rank
|
||||||
|
msg += "\t[ckey] - [rank]\n"
|
||||||
|
testing(msg)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -1,403 +1,320 @@
|
|||||||
//GUYS REMEMBER TO ADD A += to UPDATE_ADMINS
|
//admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless
|
||||||
//AND A -= TO CLEAR_ADMIN_VERBS
|
var/list/admin_verbs_default = list(
|
||||||
|
/client/proc/toggleadminhelpsound, /*toggles whether we hear a sound when adminhelps/PMs are used*/
|
||||||
|
/client/proc/deadmin_self, /*destroys our own admin datum so we can play as a regular player*/
|
||||||
|
/client/proc/cmd_admin_say, /*admin-only ooc chat*/
|
||||||
|
/client/proc/hide_verbs, /*hides all our adminverbs*/
|
||||||
|
/client/proc/hide_most_verbs, /*hides all our hideable adminverbs*/
|
||||||
|
/client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify*/
|
||||||
|
/client/proc/check_ai_laws, /*shows AI and borg laws*/
|
||||||
|
/client/proc/check_antagonists, /*shows all antags*/
|
||||||
|
/client/proc/admin_memo, /*admin memo system. show/delete/write. +SERVER needed to delete admin memos of others*/
|
||||||
|
/client/proc/deadchat, /*toggles deadchat on/off*/
|
||||||
|
/client/proc/dsay, /*talk in deadchat using our ckey/fakekey*/
|
||||||
|
/client/proc/toggleprayers, /*toggles prayers on/off*/
|
||||||
|
/client/proc/toggle_hear_deadcast, /*toggles whether we hear deadchat*/
|
||||||
|
/client/proc/toggle_hear_radio, /*toggles whether we hear the radio*/
|
||||||
|
/client/proc/investigate_show /*various admintools for investigation. Such as a singulo grief-log*/
|
||||||
|
)
|
||||||
|
var/list/admin_verbs_admin = list(
|
||||||
|
/client/proc/game_panel, /*game panel, allows to change game-mode etc*/
|
||||||
|
/client/proc/player_panel, /*shows an interface for all players, with links to various panels (old style)*/
|
||||||
|
/client/proc/player_panel_new, /*shows an interface for all players, with links to various panels*/
|
||||||
|
/client/proc/invisimin, /*allows our mob to go invisible/visible*/
|
||||||
|
/datum/admins/proc/show_traitor_panel, /*interface which shows a mob's mind*/
|
||||||
|
/datum/admins/proc/toggleenter, /*toggles whether people can join the current game*/
|
||||||
|
/datum/admins/proc/toggleguests, /*toggles whether guests can join the current game*/
|
||||||
|
/datum/admins/proc/show_player_panel, /*shows an interface for individual players, with various links (links require additional flags*/
|
||||||
|
/datum/admins/proc/announce, /*priority announce something to all clients.*/
|
||||||
|
/client/proc/colorooc, /*allows us to set a custom colour for everythign we say in ooc*/
|
||||||
|
/client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/
|
||||||
|
/client/proc/toggle_view_range, /*changes how far we can see*/
|
||||||
|
/datum/admins/proc/view_txt_log, /*shows the server log (diary) for today*/
|
||||||
|
// /datum/admins/proc/view_atk_log, /*shows the server combat-log, doesn't do anything presently*/
|
||||||
|
/client/proc/cmd_admin_pm_context, /*right-click amdinPM interface*/
|
||||||
|
/client/proc/cmd_admin_pm_panel, /*admin-pm list*/
|
||||||
|
/client/proc/cmd_admin_subtle_message, /*send an message to somebody as a 'voice in their head'*/
|
||||||
|
/client/proc/cmd_admin_delete, /*delete an instance/object/mob/etc*/
|
||||||
|
/client/proc/cmd_admin_check_contents, /*displays the contents of an instance*/
|
||||||
|
/datum/admins/proc/access_news_network, /*allows access of newscasters*/
|
||||||
|
/client/proc/giveruntimelog, /*allows us to give access to runtime logs to somebody*/
|
||||||
|
/client/proc/getserverlog, /*allows us to fetch server logs (diary) for other days*/
|
||||||
|
/client/proc/jumptocoord, /*we ghost and jump to a coordinate*/
|
||||||
|
/client/proc/Getmob, /*teleports a mob to our location*/
|
||||||
|
/client/proc/Getkey, /*teleports a mob with a certain ckey to our location*/
|
||||||
|
/client/proc/sendmob, /*sends a mob somewhere*/
|
||||||
|
/client/proc/Jump,
|
||||||
|
/client/proc/jumptokey, /*allows us to jump to the location of a mob with a certain ckey*/
|
||||||
|
/client/proc/jumptomob, /*allows us to jump to a specific mob*/
|
||||||
|
/client/proc/jumptoturf, /*allows us to jump to a specific turf*/
|
||||||
|
/datum/admins/proc/spawn_atom, /*allows us to spawn instances*/
|
||||||
|
/client/proc/admin_call_shuttle, /*allows us to call the emergency shuttle*/
|
||||||
|
/client/proc/admin_cancel_shuttle, /*allows us to cancel the emergency shuttle, sending it back to centcomm*/
|
||||||
|
/client/proc/cmd_admin_direct_narrate, /*send text directly to a player with no padding. Useful for narratives and fluff-text*/
|
||||||
|
/client/proc/cmd_admin_world_narrate, /*sends text to all players with no padding*/
|
||||||
|
/client/proc/check_words /*displays cult-words*/
|
||||||
|
)
|
||||||
|
var/list/admin_verbs_ban = list(
|
||||||
|
/client/proc/unban_panel,
|
||||||
|
/client/proc/jobbans,
|
||||||
|
/client/proc/unjobban_panel
|
||||||
|
)
|
||||||
|
var/list/admin_verbs_sounds = list(
|
||||||
|
/client/proc/play_local_sound,
|
||||||
|
/client/proc/play_sound
|
||||||
|
)
|
||||||
|
var/list/admin_verbs_fun = list(
|
||||||
|
/client/proc/object_talk,
|
||||||
|
/client/proc/cmd_admin_dress,
|
||||||
|
/client/proc/cmd_admin_gib_self,
|
||||||
|
/client/proc/drop_bomb,
|
||||||
|
/client/proc/toggle_gravity_on,
|
||||||
|
/client/proc/toggle_gravity_off,
|
||||||
|
/client/proc/secrets,
|
||||||
|
/client/proc/strike_team,
|
||||||
|
/client/proc/cinematic,
|
||||||
|
/client/proc/triple_ai,
|
||||||
|
/client/proc/one_click_antag,
|
||||||
|
/datum/admins/proc/toggle_aliens,
|
||||||
|
/datum/admins/proc/toggle_space_ninja,
|
||||||
|
/client/proc/spawn_xeno,
|
||||||
|
/client/proc/only_one,
|
||||||
|
/client/proc/send_space_ninja,
|
||||||
|
/client/proc/cmd_admin_add_freeform_ai_law,
|
||||||
|
/client/proc/cmd_admin_add_random_ai_law,
|
||||||
|
/client/proc/cmd_admin_create_centcom_report,
|
||||||
|
/client/proc/make_sound,
|
||||||
|
/client/proc/toggle_random_events,
|
||||||
|
/client/proc/cmd_admin_add_random_ai_law
|
||||||
|
)
|
||||||
|
var/list/admin_verbs_server = list(
|
||||||
|
/client/proc/Set_Holiday,
|
||||||
|
/client/proc/ToRban,
|
||||||
|
/datum/admins/proc/startnow,
|
||||||
|
/datum/admins/proc/restart,
|
||||||
|
/datum/admins/proc/delay,
|
||||||
|
/datum/admins/proc/toggleaban,
|
||||||
|
/client/proc/toggle_log_hrefs,
|
||||||
|
/datum/admins/proc/immreboot,
|
||||||
|
/client/proc/everyone_random,
|
||||||
|
/datum/admins/proc/toggleAI,
|
||||||
|
/datum/admins/proc/toggleooc,
|
||||||
|
/datum/admins/proc/toggleoocdead,
|
||||||
|
/datum/admins/proc/adrev,
|
||||||
|
/datum/admins/proc/adspawn,
|
||||||
|
/datum/admins/proc/adjump
|
||||||
|
)
|
||||||
|
var/list/admin_verbs_debug = list(
|
||||||
|
/client/proc/restart_controller,
|
||||||
|
/client/proc/cmd_admin_list_open_jobs,
|
||||||
|
/client/proc/callproc,
|
||||||
|
/client/proc/Debug2,
|
||||||
|
/client/proc/reload_admins,
|
||||||
|
/client/proc/kill_air,
|
||||||
|
/client/proc/cmd_debug_make_powernets,
|
||||||
|
/client/proc/kill_airgroup,
|
||||||
|
/client/proc/debug_controller,
|
||||||
|
/client/proc/startSinglo,
|
||||||
|
/client/proc/cmd_debug_mob_lists,
|
||||||
|
/client/proc/cmd_debug_del_all,
|
||||||
|
/client/proc/cmd_debug_tog_aliens,
|
||||||
|
/client/proc/air_report,
|
||||||
|
/client/proc/enable_debug_verbs
|
||||||
|
)
|
||||||
|
var/list/admin_verbs_possess = list(
|
||||||
|
/proc/possess,
|
||||||
|
/proc/release
|
||||||
|
)
|
||||||
|
var/list/admin_verbs_permissions = list(
|
||||||
|
)
|
||||||
|
var/list/admin_verbs_rejuv = list(
|
||||||
|
/client/proc/cmd_admin_rejuvenate,
|
||||||
|
/client/proc/respawn_character
|
||||||
|
)
|
||||||
|
|
||||||
|
//verbs which can be hidden
|
||||||
|
var/list/admin_verbs_hideable = list(
|
||||||
|
/client/proc/deadmin_self,
|
||||||
|
/client/proc/deadchat,
|
||||||
|
/client/proc/toggleprayers,
|
||||||
|
/client/proc/toggle_hear_deadcast,
|
||||||
|
/client/proc/toggle_hear_radio,
|
||||||
|
/datum/admins/proc/show_traitor_panel,
|
||||||
|
/datum/admins/proc/toggleenter,
|
||||||
|
/datum/admins/proc/toggleguests,
|
||||||
|
/datum/admins/proc/announce,
|
||||||
|
/client/proc/colorooc,
|
||||||
|
/client/proc/admin_ghost,
|
||||||
|
/client/proc/toggle_view_range,
|
||||||
|
/datum/admins/proc/view_txt_log,
|
||||||
|
/datum/admins/proc/view_atk_log,
|
||||||
|
/client/proc/cmd_admin_subtle_message,
|
||||||
|
/client/proc/cmd_admin_check_contents,
|
||||||
|
/datum/admins/proc/access_news_network,
|
||||||
|
/client/proc/giveruntimelog,
|
||||||
|
/client/proc/getserverlog,
|
||||||
|
/client/proc/admin_call_shuttle,
|
||||||
|
/client/proc/admin_cancel_shuttle,
|
||||||
|
/client/proc/cmd_admin_direct_narrate,
|
||||||
|
/client/proc/cmd_admin_world_narrate,
|
||||||
|
/client/proc/check_words,
|
||||||
|
/client/proc/play_local_sound,
|
||||||
|
/client/proc/play_sound,
|
||||||
|
/client/proc/object_talk,
|
||||||
|
/client/proc/cmd_admin_dress,
|
||||||
|
/client/proc/cmd_admin_gib_self,
|
||||||
|
/client/proc/drop_bomb,
|
||||||
|
/client/proc/toggle_gravity_on,
|
||||||
|
/client/proc/toggle_gravity_off,
|
||||||
|
/client/proc/strike_team,
|
||||||
|
/client/proc/cinematic,
|
||||||
|
/client/proc/triple_ai,
|
||||||
|
/datum/admins/proc/toggle_aliens,
|
||||||
|
/datum/admins/proc/toggle_space_ninja,
|
||||||
|
/client/proc/spawn_xeno,
|
||||||
|
/client/proc/only_one,
|
||||||
|
/client/proc/send_space_ninja,
|
||||||
|
/client/proc/cmd_admin_add_freeform_ai_law,
|
||||||
|
/client/proc/cmd_admin_add_random_ai_law,
|
||||||
|
/client/proc/cmd_admin_create_centcom_report,
|
||||||
|
/client/proc/make_sound,
|
||||||
|
/client/proc/toggle_random_events,
|
||||||
|
/client/proc/cmd_admin_add_random_ai_law,
|
||||||
|
/client/proc/Set_Holiday,
|
||||||
|
/client/proc/ToRban,
|
||||||
|
/datum/admins/proc/startnow,
|
||||||
|
/datum/admins/proc/restart,
|
||||||
|
/datum/admins/proc/delay,
|
||||||
|
/datum/admins/proc/toggleaban,
|
||||||
|
/client/proc/toggle_log_hrefs,
|
||||||
|
/datum/admins/proc/immreboot,
|
||||||
|
/client/proc/everyone_random,
|
||||||
|
/datum/admins/proc/toggleAI,
|
||||||
|
/datum/admins/proc/adrev,
|
||||||
|
/datum/admins/proc/adspawn,
|
||||||
|
/datum/admins/proc/adjump,
|
||||||
|
/client/proc/restart_controller,
|
||||||
|
/client/proc/cmd_admin_list_open_jobs,
|
||||||
|
/client/proc/callproc,
|
||||||
|
/client/proc/Debug2,
|
||||||
|
/client/proc/reload_admins,
|
||||||
|
/client/proc/kill_air,
|
||||||
|
/client/proc/cmd_debug_make_powernets,
|
||||||
|
/client/proc/kill_airgroup,
|
||||||
|
/client/proc/debug_controller,
|
||||||
|
/client/proc/startSinglo,
|
||||||
|
/client/proc/cmd_debug_mob_lists,
|
||||||
|
/client/proc/cmd_debug_del_all,
|
||||||
|
/client/proc/cmd_debug_tog_aliens,
|
||||||
|
/client/proc/air_report,
|
||||||
|
/client/proc/enable_debug_verbs,
|
||||||
|
/proc/possess,
|
||||||
|
/proc/release
|
||||||
|
)
|
||||||
|
|
||||||
|
/client/proc/add_admin_verbs()
|
||||||
|
if(holder)
|
||||||
|
var/rights = holder.rights
|
||||||
|
verbs += admin_verbs_default
|
||||||
|
if(rights & R_BUILDMODE) verbs += /client/proc/togglebuildmodeself
|
||||||
|
if(rights & R_ADMIN) verbs += admin_verbs_admin
|
||||||
|
if(rights & R_BAN) verbs += admin_verbs_ban
|
||||||
|
if(rights & R_FUN) verbs += admin_verbs_fun
|
||||||
|
if(rights & R_SERVER) verbs += admin_verbs_server
|
||||||
|
if(rights & R_DEBUG) verbs += admin_verbs_debug
|
||||||
|
if(rights & R_POSSESS) verbs += admin_verbs_possess
|
||||||
|
if(rights & R_PERMISSIONS) verbs += admin_verbs_permissions
|
||||||
|
if(rights & R_STEALTH) verbs += /client/proc/stealth
|
||||||
|
if(rights & R_REJUVINATE) verbs += admin_verbs_rejuv
|
||||||
|
if(rights & R_SOUNDS) verbs += admin_verbs_sounds
|
||||||
|
|
||||||
//Some verbs that are still in the code but not used atm
|
/client/proc/remove_admin_verbs()
|
||||||
// Debug
|
if(holder)
|
||||||
// verbs += /client/proc/radio_report //for radio debugging dont think its been used in a very long time
|
verbs.Remove(
|
||||||
// verbs += /client/proc/fix_next_move //has not been an issue in a very very long time
|
admin_verbs_default,
|
||||||
|
/client/proc/togglebuildmodeself,
|
||||||
|
admin_verbs_admin,
|
||||||
|
admin_verbs_ban,
|
||||||
|
admin_verbs_fun,
|
||||||
|
admin_verbs_server,
|
||||||
|
admin_verbs_debug,
|
||||||
|
admin_verbs_possess,
|
||||||
|
admin_verbs_permissions,
|
||||||
|
/client/proc/stealth,
|
||||||
|
admin_verbs_rejuv,
|
||||||
|
/client/proc/Cell,
|
||||||
|
/client/proc/do_not_use_these,
|
||||||
|
/client/proc/camera_view,
|
||||||
|
/client/proc/sec_camera_report,
|
||||||
|
/client/proc/intercom_view,
|
||||||
|
/client/proc/air_status,
|
||||||
|
/client/proc/atmosscan,
|
||||||
|
/client/proc/powerdebug,
|
||||||
|
/client/proc/count_objects_on_z_level,
|
||||||
|
/client/proc/count_objects_all,
|
||||||
|
/client/proc/cmd_assume_direct_control,
|
||||||
|
/client/proc/jump_to_dead_group,
|
||||||
|
/client/proc/startSinglo,
|
||||||
|
/client/proc/ticklag,
|
||||||
|
/client/proc/cmd_admin_grantfullaccess,
|
||||||
|
/client/proc/kaboom,
|
||||||
|
/client/proc/splash,
|
||||||
|
/client/proc/cmd_admin_areatest,
|
||||||
|
admin_verbs_sounds
|
||||||
|
)
|
||||||
|
|
||||||
// Mapping helpers added via enable_debug_verbs verb
|
/client/proc/hide_most_verbs()//Allows you to keep some functionality while hiding some verbs
|
||||||
// verbs += /client/proc/do_not_use_these
|
set name = "Adminverbs - Hide Most"
|
||||||
// verbs += /client/proc/camera_view
|
set category = "Admin"
|
||||||
// verbs += /client/proc/sec_camera_report
|
|
||||||
// verbs += /client/proc/intercom_view
|
|
||||||
// verbs += /client/proc/air_status //Air things
|
|
||||||
// verbs += /client/proc/Cell //More air things
|
|
||||||
|
|
||||||
/client/proc/admin_rank_check(var/rank, var/requested)
|
verbs.Remove(
|
||||||
if(rank < requested)
|
/client/proc/hide_most_verbs,
|
||||||
alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null)
|
admin_verbs_hideable
|
||||||
return(0)
|
)
|
||||||
return(1)
|
verbs += /client/proc/show_verbs
|
||||||
|
|
||||||
/client/proc/update_admins(var/rank)
|
src << "<span class='interface'>Most of your adminverbs have been hidden.</span>"
|
||||||
if(!holder)
|
feedback_add_details("admin_verb","HMV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
holder = new /datum/admins(rank)
|
|
||||||
admins |= src
|
|
||||||
admin_datums[ckey] = holder
|
|
||||||
|
|
||||||
var/need_update = 0
|
|
||||||
//check if our rank has changed
|
|
||||||
if(holder.rank != rank)
|
|
||||||
holder.rank = rank
|
|
||||||
need_update = 1
|
|
||||||
//check if our state has changed
|
|
||||||
if(istype(mob,/mob/living))
|
|
||||||
if(holder.state != 1)
|
|
||||||
holder.state = 1
|
|
||||||
need_update = 1
|
|
||||||
else
|
|
||||||
if(holder.state != 2)
|
|
||||||
holder.state = 2
|
|
||||||
need_update = 1
|
|
||||||
|
|
||||||
if(!need_update) return
|
|
||||||
|
|
||||||
clear_admin_verbs()
|
|
||||||
handle_permission_verbs()
|
|
||||||
|
|
||||||
switch(rank)
|
|
||||||
if("Game Master")
|
|
||||||
holder.level = 6
|
|
||||||
|
|
||||||
if ("Game Admin")
|
|
||||||
holder.level = 5
|
|
||||||
|
|
||||||
if ("Badmin")
|
|
||||||
holder.level = 4
|
|
||||||
|
|
||||||
if ("Trial Admin")
|
|
||||||
holder.level = 3
|
|
||||||
if(holder.state == 2) // if observing
|
|
||||||
verbs += /client/proc/debug_variables
|
|
||||||
verbs += /client/proc/cmd_modify_ticker_variables
|
|
||||||
verbs += /client/proc/toggle_view_range
|
|
||||||
verbs += /client/proc/Getmob
|
|
||||||
verbs += /client/proc/Getkey
|
|
||||||
verbs += /client/proc/sendmob
|
|
||||||
verbs += /client/proc/Jump
|
|
||||||
verbs += /client/proc/jumptokey
|
|
||||||
verbs += /client/proc/jumptomob
|
|
||||||
verbs += /client/proc/jumptoturf
|
|
||||||
verbs += /client/proc/jumptocoord
|
|
||||||
verbs += /client/proc/cmd_admin_delete
|
|
||||||
verbs += /client/proc/cmd_admin_add_freeform_ai_law
|
|
||||||
verbs += /client/proc/cmd_admin_rejuvenate
|
|
||||||
|
|
||||||
if ("Admin Candidate")
|
|
||||||
holder.level = 2
|
|
||||||
if(holder.state == 2) // if observing
|
|
||||||
deadchat = 1
|
|
||||||
verbs += /datum/admins/proc/toggleaban //abandon mob
|
|
||||||
verbs += /client/proc/deadchat //toggles deadchat
|
|
||||||
verbs += /client/proc/cmd_admin_check_contents
|
|
||||||
verbs += /client/proc/Jump
|
|
||||||
verbs += /client/proc/jumptokey
|
|
||||||
verbs += /client/proc/jumptomob
|
|
||||||
|
|
||||||
if ("Temporary Admin")
|
|
||||||
holder.level = 1
|
|
||||||
|
|
||||||
if ("Moderator")
|
|
||||||
holder.level = 0
|
|
||||||
|
|
||||||
if ("Admin Observer")
|
|
||||||
holder.level = -1
|
|
||||||
|
|
||||||
// if ("Banned")
|
|
||||||
// holder.level = -2
|
|
||||||
// del(src)
|
|
||||||
// return
|
|
||||||
|
|
||||||
else
|
|
||||||
del(holder)
|
|
||||||
return
|
|
||||||
|
|
||||||
if (holder) //THE BELOW handles granting powers. The above is for special cases only!
|
|
||||||
holder.owner = src
|
|
||||||
|
|
||||||
//Admin Observer
|
|
||||||
if (holder.level >= -1)
|
|
||||||
seeprayers = 1
|
|
||||||
|
|
||||||
verbs += /client/proc/cmd_admin_say
|
|
||||||
verbs += /client/proc/deadmin_self
|
|
||||||
verbs += /client/proc/toggleadminhelpsound
|
|
||||||
else return
|
|
||||||
|
|
||||||
//Moderator
|
|
||||||
if (holder.level >= 0)
|
|
||||||
verbs += /datum/admins/proc/announce
|
|
||||||
verbs += /datum/admins/proc/startnow
|
|
||||||
verbs += /datum/admins/proc/toggleAI //Toggle the AI
|
|
||||||
verbs += /datum/admins/proc/toggleenter //Toggle enterting
|
|
||||||
verbs += /datum/admins/proc/toggleguests //Toggle guests entering
|
|
||||||
verbs += /datum/admins/proc/toggleooc //toggle ooc
|
|
||||||
verbs += /datum/admins/proc/toggleoocdead //toggle ooc for dead/unc
|
|
||||||
verbs += /datum/admins/proc/show_player_panel
|
|
||||||
verbs += /client/proc/deadchat //toggles deadchat
|
|
||||||
verbs += /client/proc/cmd_admin_pm_context
|
|
||||||
verbs += /client/proc/cmd_admin_pm_panel
|
|
||||||
verbs += /client/proc/cmd_admin_subtle_message
|
|
||||||
verbs += /client/proc/dsay
|
|
||||||
verbs += /client/proc/admin_ghost
|
|
||||||
verbs += /client/proc/game_panel
|
|
||||||
verbs += /client/proc/player_panel
|
|
||||||
verbs += /client/proc/player_panel_new
|
|
||||||
verbs += /client/proc/unban_panel
|
|
||||||
verbs += /client/proc/jobbans
|
|
||||||
verbs += /client/proc/unjobban_panel
|
|
||||||
verbs += /client/proc/hide_verbs
|
|
||||||
verbs += /client/proc/general_report
|
|
||||||
verbs += /client/proc/air_report
|
|
||||||
verbs += /client/proc/check_ai_laws
|
|
||||||
verbs += /client/proc/investigate_show
|
|
||||||
verbs += /client/proc/cmd_admin_gib_self
|
|
||||||
|
|
||||||
else return
|
|
||||||
|
|
||||||
//Temporary Admin
|
|
||||||
if (holder.level >= 1)
|
|
||||||
verbs += /datum/admins/proc/delay //game start delay
|
|
||||||
verbs += /datum/admins/proc/immreboot //immediate reboot
|
|
||||||
verbs += /datum/admins/proc/restart //restart
|
|
||||||
verbs += /client/proc/cmd_admin_check_contents
|
|
||||||
verbs += /client/proc/cmd_admin_create_centcom_report
|
|
||||||
verbs += /client/proc/toggle_hear_deadcast
|
|
||||||
verbs += /client/proc/toggle_hear_radio
|
|
||||||
else return
|
|
||||||
|
|
||||||
//Admin Candidate
|
|
||||||
if (holder.level >= 2)
|
|
||||||
verbs += /client/proc/cmd_admin_add_random_ai_law
|
|
||||||
verbs += /client/proc/secrets
|
|
||||||
verbs += /client/proc/check_antagonists
|
|
||||||
verbs += /client/proc/play_sound
|
|
||||||
verbs += /client/proc/stealth
|
|
||||||
else return
|
|
||||||
|
|
||||||
//Trial Admin
|
|
||||||
if (holder.level >= 3)
|
|
||||||
deadchat = 1
|
|
||||||
|
|
||||||
verbs += /client/proc/invisimin
|
|
||||||
verbs += /datum/admins/proc/view_txt_log
|
|
||||||
verbs += /datum/admins/proc/view_atk_log
|
|
||||||
verbs += /datum/admins/proc/toggleaban //abandon mob
|
|
||||||
verbs += /datum/admins/proc/show_traitor_panel
|
|
||||||
verbs += /client/proc/getserverlog //fetch an old serverlog to look at
|
|
||||||
verbs += /client/proc/admin_call_shuttle
|
|
||||||
verbs += /client/proc/admin_cancel_shuttle
|
|
||||||
verbs += /client/proc/cmd_admin_dress
|
|
||||||
verbs += /client/proc/respawn_character
|
|
||||||
verbs += /client/proc/spawn_xeno
|
|
||||||
verbs += /client/proc/toggleprayers
|
|
||||||
verbs += /proc/possess
|
|
||||||
verbs += /proc/release
|
|
||||||
verbs += /client/proc/one_click_antag
|
|
||||||
|
|
||||||
|
|
||||||
else return
|
|
||||||
|
|
||||||
//Badmin
|
|
||||||
if (holder.level >= 4)
|
|
||||||
verbs += /datum/admins/proc/adrev //toggle admin revives
|
|
||||||
verbs += /datum/admins/proc/adspawn //toggle admin item spawning
|
|
||||||
verbs += /client/proc/debug_variables
|
|
||||||
verbs += /datum/admins/proc/access_news_network //Admin access to the newscaster network
|
|
||||||
verbs += /client/proc/cmd_modify_ticker_variables
|
|
||||||
verbs += /client/proc/Debug2 //debug toggle switch
|
|
||||||
verbs += /client/proc/toggle_view_range
|
|
||||||
verbs += /client/proc/Getmob
|
|
||||||
verbs += /client/proc/Getkey
|
|
||||||
verbs += /client/proc/sendmob
|
|
||||||
verbs += /client/proc/Jump
|
|
||||||
verbs += /client/proc/jumptokey
|
|
||||||
verbs += /client/proc/jumptomob
|
|
||||||
verbs += /client/proc/jumptoturf
|
|
||||||
verbs += /client/proc/cmd_admin_delete
|
|
||||||
verbs += /client/proc/cmd_admin_add_freeform_ai_law
|
|
||||||
verbs += /client/proc/cmd_admin_add_random_ai_law
|
|
||||||
verbs += /client/proc/cmd_admin_rejuvenate
|
|
||||||
verbs += /client/proc/hide_most_verbs
|
|
||||||
verbs += /client/proc/jumptocoord
|
|
||||||
verbs += /client/proc/deadmin_self
|
|
||||||
verbs += /client/proc/giveruntimelog //used by coders to retrieve runtime logs
|
|
||||||
verbs += /client/proc/togglebuildmodeself
|
|
||||||
verbs += /client/proc/debug_controller
|
|
||||||
else return
|
|
||||||
|
|
||||||
//Game Admin
|
|
||||||
if (holder.level >= 5)
|
|
||||||
verbs += /datum/admins/proc/spawn_atom
|
|
||||||
verbs += /client/proc/cmd_admin_list_open_jobs
|
|
||||||
verbs += /client/proc/cmd_admin_direct_narrate
|
|
||||||
verbs += /client/proc/colorooc
|
|
||||||
verbs += /client/proc/kill_air
|
|
||||||
verbs += /client/proc/cmd_admin_world_narrate
|
|
||||||
verbs += /client/proc/cmd_debug_del_all
|
|
||||||
verbs += /client/proc/cmd_debug_tog_aliens
|
|
||||||
verbs += /client/proc/check_words
|
|
||||||
verbs += /client/proc/drop_bomb
|
|
||||||
verbs += /client/proc/kill_airgroup
|
|
||||||
verbs += /client/proc/make_sound
|
|
||||||
verbs += /client/proc/play_local_sound
|
|
||||||
verbs += /client/proc/send_space_ninja
|
|
||||||
verbs += /client/proc/restart_controller //Can call via aproccall --I_hate_easy_things.jpg, Mport --Agouri
|
|
||||||
verbs += /client/proc/toggle_clickproc //TODO ERRORAGE (Temporary proc while the new clickproc is being tested)
|
|
||||||
verbs += /client/proc/toggle_gravity_on
|
|
||||||
verbs += /client/proc/toggle_gravity_off
|
|
||||||
verbs += /client/proc/toggle_random_events
|
|
||||||
verbs += /client/proc/deadmin_self
|
|
||||||
verbs += /client/proc/Set_Holiday //Force-set a Holiday
|
|
||||||
verbs += /client/proc/admin_memo
|
|
||||||
verbs += /client/proc/ToRban //ToRban frontend to access its features.
|
|
||||||
verbs += /client/proc/Blobize
|
|
||||||
else return
|
|
||||||
|
|
||||||
//Game Master
|
|
||||||
if (holder.level >= 6)
|
|
||||||
verbs += /datum/admins/proc/toggle_aliens //toggle aliens
|
|
||||||
verbs += /datum/admins/proc/toggle_space_ninja //toggle ninjas
|
|
||||||
verbs += /datum/admins/proc/adjump
|
|
||||||
verbs += /client/proc/callproc
|
|
||||||
verbs += /client/proc/triple_ai
|
|
||||||
verbs += /client/proc/reload_admins
|
|
||||||
verbs += /client/proc/cmd_debug_make_powernets
|
|
||||||
verbs += /client/proc/object_talk
|
|
||||||
verbs += /client/proc/strike_team
|
|
||||||
verbs += /client/proc/enable_debug_verbs
|
|
||||||
verbs += /client/proc/everyone_random
|
|
||||||
verbs += /client/proc/only_one
|
|
||||||
verbs += /client/proc/cinematic //show a cinematic sequence
|
|
||||||
verbs += /client/proc/startSinglo //Used to prevent the station from losing power while testing stuff out.
|
|
||||||
verbs += /client/proc/toggle_log_hrefs
|
|
||||||
verbs += /client/proc/cmd_debug_mob_lists
|
|
||||||
verbs += /client/proc/set_ooc
|
|
||||||
else return
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/client/proc/hide_verbs()
|
||||||
|
set name = "Adminverbs - Hide All"
|
||||||
|
set category = "Admin"
|
||||||
|
|
||||||
/client/proc/clear_admin_verbs()
|
|
||||||
deadchat = 0
|
|
||||||
verbs.Remove(
|
verbs.Remove(
|
||||||
/datum/admins/proc/announce,
|
|
||||||
/datum/admins/proc/startnow,
|
|
||||||
/datum/admins/proc/toggleAI, /*Toggle the AI*/
|
|
||||||
/datum/admins/proc/toggleenter, /*Toggle enterting*/
|
|
||||||
/datum/admins/proc/toggleguests, /*Toggle guests entering*/
|
|
||||||
/datum/admins/proc/toggleooc, /*toggle ooc*/
|
|
||||||
/datum/admins/proc/toggleoocdead, /*toggle ooc for dead/unc*/
|
|
||||||
/datum/admins/proc/delay, /*game start delay*/
|
|
||||||
/datum/admins/proc/immreboot, /*immediate reboot*/
|
|
||||||
/datum/admins/proc/restart, /*restart*/
|
|
||||||
/datum/admins/proc/show_traitor_panel,
|
|
||||||
/datum/admins/proc/show_player_panel,
|
|
||||||
/datum/admins/proc/toggle_aliens, /*toggle aliens*/
|
|
||||||
/datum/admins/proc/toggle_space_ninja,/*toggle ninjas*/
|
|
||||||
/datum/admins/proc/adjump,
|
|
||||||
/datum/admins/proc/view_txt_log,
|
|
||||||
/datum/admins/proc/view_atk_log,
|
|
||||||
/datum/admins/proc/spawn_atom,
|
|
||||||
/datum/admins/proc/adrev, /*toggle admin revives*/
|
|
||||||
/datum/admins/proc/adspawn, /*toggle admin item spawning*/
|
|
||||||
/datum/admins/proc/toggleaban, /*abandon mob*/
|
|
||||||
/client/proc/hide_verbs,
|
/client/proc/hide_verbs,
|
||||||
/client/proc/hide_most_verbs,
|
/client/proc/hide_most_verbs,
|
||||||
/client/proc/show_verbs,
|
|
||||||
/client/proc/colorooc,
|
|
||||||
/client/proc/triple_ai,
|
|
||||||
/client/proc/reload_admins,
|
|
||||||
/client/proc/kill_air,
|
|
||||||
/client/proc/cmd_debug_make_powernets,
|
|
||||||
/client/proc/object_talk,
|
|
||||||
/client/proc/strike_team,
|
|
||||||
/client/proc/cmd_admin_list_open_jobs,
|
|
||||||
/client/proc/cmd_admin_direct_narrate,
|
|
||||||
/client/proc/cmd_admin_world_narrate,
|
|
||||||
/client/proc/callproc,
|
|
||||||
/client/proc/Cell,
|
|
||||||
/client/proc/cmd_debug_del_all,
|
|
||||||
/client/proc/cmd_debug_tog_aliens,
|
|
||||||
/client/proc/check_words,
|
|
||||||
/client/proc/drop_bomb,
|
|
||||||
/client/proc/make_sound,
|
|
||||||
/client/proc/only_one,
|
|
||||||
/client/proc/send_space_ninja,
|
|
||||||
/client/proc/debug_variables,
|
|
||||||
/client/proc/cmd_modify_ticker_variables,
|
|
||||||
/client/proc/Debug2, /*debug toggle switch*/
|
|
||||||
/client/proc/toggle_view_range,
|
|
||||||
/client/proc/Getmob,
|
|
||||||
/client/proc/Getkey,
|
|
||||||
/client/proc/sendmob,
|
|
||||||
/client/proc/Jump,
|
|
||||||
/client/proc/jumptokey,
|
|
||||||
/client/proc/jumptomob,
|
|
||||||
/client/proc/jumptoturf,
|
|
||||||
/client/proc/cmd_admin_add_freeform_ai_law,
|
|
||||||
/client/proc/cmd_admin_add_random_ai_law,
|
|
||||||
/client/proc/cmd_admin_rejuvenate,
|
|
||||||
/client/proc/cmd_admin_delete,
|
|
||||||
/client/proc/toggleadminhelpsound,
|
|
||||||
/client/proc/admin_call_shuttle,
|
|
||||||
/client/proc/admin_cancel_shuttle,
|
|
||||||
/client/proc/cmd_admin_dress,
|
|
||||||
/client/proc/respawn_character,
|
|
||||||
/client/proc/spawn_xeno,
|
|
||||||
/client/proc/cmd_admin_add_random_ai_law,
|
|
||||||
/client/proc/secrets,
|
|
||||||
/client/proc/check_antagonists,
|
|
||||||
/client/proc/play_sound,
|
|
||||||
/client/proc/stealth,
|
|
||||||
/client/proc/cmd_admin_check_contents,
|
|
||||||
/client/proc/cmd_admin_create_centcom_report,
|
|
||||||
/client/proc/deadchat, /*toggles deadchat*/
|
|
||||||
/client/proc/cmd_admin_pm_context,
|
|
||||||
/client/proc/cmd_admin_pm_panel,
|
|
||||||
/client/proc/cmd_admin_say,
|
|
||||||
/client/proc/cmd_admin_subtle_message,
|
|
||||||
/client/proc/dsay,
|
|
||||||
/client/proc/admin_ghost,
|
|
||||||
/client/proc/game_panel,
|
|
||||||
/client/proc/player_panel,
|
|
||||||
/client/proc/unban_panel,
|
|
||||||
/client/proc/jobbans,
|
|
||||||
/client/proc/unjobban_panel,
|
|
||||||
/client/proc/hide_verbs,
|
|
||||||
/client/proc/general_report,
|
|
||||||
/client/proc/air_report,
|
|
||||||
/client/proc/cmd_admin_say,
|
|
||||||
/client/proc/cmd_admin_gib_self,
|
|
||||||
/client/proc/restart_controller,
|
|
||||||
/client/proc/play_local_sound,
|
|
||||||
/client/proc/enable_debug_verbs,
|
|
||||||
/client/proc/toggleprayers,
|
|
||||||
/client/proc/toggle_clickproc, /*TODO ERRORAGE (Temporary proc while the enw clickproc is being tested)*/
|
|
||||||
/client/proc/toggle_hear_deadcast,
|
|
||||||
/client/proc/toggle_hear_radio,
|
|
||||||
/client/proc/player_panel_new,
|
|
||||||
/client/proc/toggle_gravity_on,
|
|
||||||
/client/proc/toggle_gravity_off,
|
|
||||||
/client/proc/toggle_random_events,
|
|
||||||
/client/proc/deadmin_self,
|
|
||||||
/client/proc/jumptocoord,
|
|
||||||
/client/proc/everyone_random,
|
|
||||||
/client/proc/Set_Holiday,
|
|
||||||
/client/proc/giveruntimelog, /*used by coders to retrieve runtime logs*/
|
|
||||||
/client/proc/getserverlog,
|
|
||||||
/client/proc/cinematic, /*show a cinematic sequence*/
|
|
||||||
/client/proc/admin_memo,
|
|
||||||
/client/proc/investigate_show, /*investigate in-game mishaps using various logs.*/
|
|
||||||
/client/proc/toggle_log_hrefs,
|
|
||||||
/client/proc/ToRban,
|
|
||||||
/proc/possess,
|
|
||||||
/proc/release,
|
|
||||||
/client/proc/togglebuildmodeself,
|
/client/proc/togglebuildmodeself,
|
||||||
/client/proc/kill_airgroup,
|
admin_verbs_admin,
|
||||||
/client/proc/debug_controller,
|
admin_verbs_ban,
|
||||||
/client/proc/startSinglo,
|
admin_verbs_fun,
|
||||||
/client/proc/check_ai_laws,
|
admin_verbs_server,
|
||||||
/client/proc/cmd_debug_mob_lists,
|
admin_verbs_debug,
|
||||||
/datum/admins/proc/access_news_network,
|
admin_verbs_possess,
|
||||||
/client/proc/one_click_antag,
|
admin_verbs_permissions,
|
||||||
/client/proc/invisimin,
|
/client/proc/cmd_admin_rejuvenate,
|
||||||
/client/proc/set_ooc
|
/client/proc/stealth,
|
||||||
)
|
admin_verbs_rejuv
|
||||||
|
)
|
||||||
|
verbs += /client/proc/show_verbs
|
||||||
|
|
||||||
|
src << "<span class='interface'>Almost all of your adminverbs have been hidden.</span>"
|
||||||
|
feedback_add_details("admin_verb","TAVVH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/client/proc/show_verbs()
|
||||||
|
set name = "Adminverbs - Show"
|
||||||
|
set category = "Admin"
|
||||||
|
|
||||||
|
verbs -= /client/proc/show_verbs
|
||||||
|
add_admin_verbs()
|
||||||
|
|
||||||
|
src << "<span class='interface'>All of your adminverbs are now visible.</span>"
|
||||||
|
feedback_add_details("admin_verb","TAVVS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/client/proc/admin_ghost()
|
/client/proc/admin_ghost()
|
||||||
set category = "Admin"
|
set category = "Admin"
|
||||||
set name = "Aghost"
|
set name = "Aghost"
|
||||||
@@ -418,19 +335,6 @@
|
|||||||
body.key = "@[key]" //Haaaaaaaack. But the people have spoken. If it breaks; blame adminbus
|
body.key = "@[key]" //Haaaaaaaack. But the people have spoken. If it breaks; blame adminbus
|
||||||
feedback_add_details("admin_verb","O") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","O") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
|
|
||||||
/*
|
|
||||||
/client/proc/get_admin_state()
|
|
||||||
set name = "Get Admin State"
|
|
||||||
set category = "Debug"
|
|
||||||
for(var/client/C in admins)
|
|
||||||
if(C.holder.state == 1)
|
|
||||||
src << "[C.key] is playing - [C.holder.state]"
|
|
||||||
else if(C.holder.state == 2)
|
|
||||||
src << "[C.key] is observing - [C.holder.state]"
|
|
||||||
else
|
|
||||||
src << "[C.key] is undefined - [C.holder.state]"
|
|
||||||
feedback_add_details("admin_verb","GAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
|
||||||
*/
|
|
||||||
|
|
||||||
/client/proc/invisimin()
|
/client/proc/invisimin()
|
||||||
set name = "Invisimin"
|
set name = "Invisimin"
|
||||||
@@ -527,17 +431,14 @@
|
|||||||
message_admins("[key_name_admin(usr)] has turned stealth mode [holder.fakekey ? "ON" : "OFF"]", 1)
|
message_admins("[key_name_admin(usr)] has turned stealth mode [holder.fakekey ? "ON" : "OFF"]", 1)
|
||||||
feedback_add_details("admin_verb","SM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","SM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
|
|
||||||
|
|
||||||
#define AUTOBATIME 10
|
#define AUTOBATIME 10
|
||||||
/client/proc/warn(var/mob/M in player_list)
|
/client/proc/warn(var/mob/M in player_list)
|
||||||
/*set category = "Special Verbs"
|
/*set category = "Special Verbs"
|
||||||
set name = "Warn"
|
set name = "Warn"
|
||||||
set desc = "Warn a player"*/ //Based on the information I gathered via stat logging this verb was not used. Use the show player panel alternative. --erro
|
set desc = "Warn a player"*/ //Based on the information I gathered via stat logging this verb was not used. Use the show player panel alternative. --erro
|
||||||
if(!holder)
|
|
||||||
src << "Only administrators may use this command."
|
if(!check_rights(R_ADMIN)) return
|
||||||
return
|
|
||||||
if(M.client && M.client.holder && (M.client.holder.level >= holder.level))
|
|
||||||
alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null)
|
|
||||||
return
|
|
||||||
if(!M.client.warned)
|
if(!M.client.warned)
|
||||||
M << "\red <B>You have been warned by an administrator. This is the only warning you will recieve.</B>"
|
M << "\red <B>You have been warned by an administrator. This is the only warning you will recieve.</B>"
|
||||||
M.client.warned = 1
|
M.client.warned = 1
|
||||||
@@ -662,17 +563,6 @@
|
|||||||
log_admin("[key_name(usr)] used 'kill air'.")
|
log_admin("[key_name(usr)] used 'kill air'.")
|
||||||
message_admins("\blue [key_name_admin(usr)] used 'kill air'.", 1)
|
message_admins("\blue [key_name_admin(usr)] used 'kill air'.", 1)
|
||||||
|
|
||||||
/client/proc/show_verbs()
|
|
||||||
set name = "Toggle admin verb visibility"
|
|
||||||
set category = "Admin"
|
|
||||||
src << "Restoring admin verbs back"
|
|
||||||
|
|
||||||
var/temp = deadchat
|
|
||||||
holder.state = null //forces a full verbs update
|
|
||||||
update_admins(holder.rank)
|
|
||||||
deadchat = temp
|
|
||||||
feedback_add_details("admin_verb","TAVVS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
|
||||||
|
|
||||||
/client/proc/toggle_clickproc() //TODO ERRORAGE (This is a temporary verb here while I test the new clicking proc)
|
/client/proc/toggle_clickproc() //TODO ERRORAGE (This is a temporary verb here while I test the new clicking proc)
|
||||||
set name = "Toggle NewClickProc"
|
set name = "Toggle NewClickProc"
|
||||||
set category = "Debug"
|
set category = "Debug"
|
||||||
@@ -704,72 +594,14 @@
|
|||||||
set name = "De-admin self"
|
set name = "De-admin self"
|
||||||
set category = "Admin"
|
set category = "Admin"
|
||||||
|
|
||||||
if(src.holder)
|
if(holder)
|
||||||
if(alert("Confirm self-deadmin for the round? You can't re-admin yourself without someont promoting you.",,"Yes","No") == "Yes")
|
if(alert("Confirm self-deadmin for the round? You can't re-admin yourself without someont promoting you.",,"Yes","No") == "Yes")
|
||||||
log_admin("[src] deadmined themself.")
|
log_admin("[src] deadmined themself.")
|
||||||
message_admins("[src] deadmined themself.", 1)
|
message_admins("[src] deadmined themself.", 1)
|
||||||
deadmin()
|
deadmin()
|
||||||
usr << "You are now a normal player."
|
src << "<span class='interface'>You are now a normal player.</span>"
|
||||||
feedback_add_details("admin_verb","DAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","DAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
|
|
||||||
|
|
||||||
/client/proc/hide_most_verbs()//Allows you to keep some functionality while hiding some verbs
|
|
||||||
set name = "Toggle most admin verb visibility"
|
|
||||||
set category = "Admin"
|
|
||||||
src << "Hiding most admin verbs"
|
|
||||||
|
|
||||||
var/temp = deadchat
|
|
||||||
clear_admin_verbs()
|
|
||||||
deadchat = temp
|
|
||||||
verbs -= /client/proc/hide_verbs
|
|
||||||
verbs -= /client/proc/hide_most_verbs
|
|
||||||
verbs += /client/proc/show_verbs
|
|
||||||
|
|
||||||
if(holder.level >= 5)//Game Admin********************************************************************
|
|
||||||
verbs += /client/proc/colorooc
|
|
||||||
|
|
||||||
if(holder.level >= 4)//Badmin********************************************************************
|
|
||||||
verbs += /client/proc/debug_variables
|
|
||||||
//verbs += /client/proc/cmd_modify_object_variables --merged with view vairiables
|
|
||||||
verbs += /client/proc/Jump
|
|
||||||
verbs += /client/proc/jumptoturf
|
|
||||||
verbs += /client/proc/togglebuildmodeself
|
|
||||||
|
|
||||||
verbs += /client/proc/dsay
|
|
||||||
verbs += /client/proc/admin_ghost
|
|
||||||
verbs += /client/proc/game_panel
|
|
||||||
verbs += /client/proc/player_panel
|
|
||||||
verbs += /client/proc/cmd_admin_subtle_message
|
|
||||||
verbs += /client/proc/cmd_admin_pm_context
|
|
||||||
verbs += /client/proc/cmd_admin_pm_panel
|
|
||||||
verbs += /client/proc/cmd_admin_gib_self
|
|
||||||
|
|
||||||
verbs += /client/proc/deadchat //toggles deadchat
|
|
||||||
verbs += /datum/admins/proc/toggleooc //toggle ooc
|
|
||||||
verbs += /client/proc/cmd_admin_say//asay
|
|
||||||
verbs += /client/proc/toggleadminhelpsound
|
|
||||||
feedback_add_details("admin_verb","HMV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
/client/proc/hide_verbs()
|
|
||||||
set name = "Toggle admin verb visibility"
|
|
||||||
set category = "Admin"
|
|
||||||
src << "Hiding almost all admin verbs"
|
|
||||||
|
|
||||||
var/temp = deadchat
|
|
||||||
clear_admin_verbs()
|
|
||||||
deadchat = temp
|
|
||||||
verbs -= /client/proc/hide_verbs
|
|
||||||
verbs -= /client/proc/hide_most_verbs
|
|
||||||
verbs += /client/proc/show_verbs
|
|
||||||
|
|
||||||
verbs += /client/proc/deadchat //toggles deadchat
|
|
||||||
verbs += /datum/admins/proc/toggleooc //toggle ooc
|
|
||||||
verbs += /client/proc/cmd_admin_say//asay
|
|
||||||
feedback_add_details("admin_verb","TAVVH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
|
||||||
return
|
|
||||||
|
|
||||||
/client/proc/toggle_log_hrefs()
|
/client/proc/toggle_log_hrefs()
|
||||||
set name = "Toggle href logging"
|
set name = "Toggle href logging"
|
||||||
set category = "Server"
|
set category = "Server"
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
2348
code/modules/admin/topic.dm
Normal file
2348
code/modules/admin/topic.dm
Normal file
File diff suppressed because it is too large
Load Diff
@@ -40,9 +40,9 @@
|
|||||||
src << "<font color='red'>Error: Admin-PM: You are unable to use admin PM-s (muted).</font>"
|
src << "<font color='red'>Error: Admin-PM: You are unable to use admin PM-s (muted).</font>"
|
||||||
return
|
return
|
||||||
|
|
||||||
if( !C || !istype(C,/client) )
|
if(!istype(C,/client))
|
||||||
if(holder) src << "<font color='red'>Error: Admin-PM: Client not found.</font>"
|
if(holder) src << "<font color='red'>Error: Admin-PM: Client not found.</font>"
|
||||||
else adminhelp(msg) //admin we are replying to left. adminhelp instead
|
else adminhelp(msg) //admin we are replying to left. adminhelp instead
|
||||||
return
|
return
|
||||||
|
|
||||||
//get message text, limit it's length.and clean/escape html
|
//get message text, limit it's length.and clean/escape html
|
||||||
@@ -58,8 +58,8 @@
|
|||||||
if (src.handle_spam_prevention(msg,MUTE_ADMINHELP))
|
if (src.handle_spam_prevention(msg,MUTE_ADMINHELP))
|
||||||
return
|
return
|
||||||
|
|
||||||
//clean the message if it's not sent by a GA or GM
|
//clean the message if it's not sent by a high-rank admin
|
||||||
if( !holder || !(holder.rank in list("Game Admin", "Game Master")) )
|
if(!check_rights(R_SERVER|R_DEBUG,0))
|
||||||
msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN))
|
msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN))
|
||||||
if(!msg) return
|
if(!msg) return
|
||||||
|
|
||||||
@@ -106,6 +106,6 @@
|
|||||||
log_admin("PM: [key_name(src)]->[key_name(C)]: [msg]")
|
log_admin("PM: [key_name(src)]->[key_name(C)]: [msg]")
|
||||||
|
|
||||||
//we don't use message_admins here because the sender/receiver might get it too
|
//we don't use message_admins here because the sender/receiver might get it too
|
||||||
for(var/client/X) //there are fewer clients than mobs
|
for(var/client/X in admins)
|
||||||
if(X.holder && X.key!=key && X.key!=C.key) //check client/X is an admin and isn't the sender or recipient
|
if(X.key!=key && X.key!=C.key) //check client/X is an admin and isn't the sender or recipient
|
||||||
X << "<B><font color='blue'>PM: [key_name(src, X, 0)]->[key_name(C, X, 0)]:</B> \blue [msg]</font>" //inform X
|
X << "<B><font color='blue'>PM: [key_name(src, X, 0)]->[key_name(C, X, 0)]:</B> \blue [msg]</font>" //inform X
|
||||||
|
|||||||
@@ -2,30 +2,18 @@
|
|||||||
set category = "Special Verbs"
|
set category = "Special Verbs"
|
||||||
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 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
|
set hidden = 1
|
||||||
|
if(!check_rights(0)) return
|
||||||
if (!src.holder)
|
|
||||||
src << "Only administrators may use this command."
|
|
||||||
return
|
|
||||||
|
|
||||||
if (src.muted & MUTE_ADMINHELP)
|
|
||||||
src << "You cannot send ASAY messages (muted)."
|
|
||||||
return
|
|
||||||
|
|
||||||
if (src.handle_spam_prevention(msg,MUTE_ADMINHELP))
|
|
||||||
return
|
|
||||||
|
|
||||||
msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN)
|
msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN)
|
||||||
log_admin("[key_name(src)] : [msg]")
|
if(!msg) return
|
||||||
|
|
||||||
|
if(check_rights(R_ADMIN,0))
|
||||||
if (!msg)
|
|
||||||
return
|
|
||||||
feedback_add_details("admin_verb","M") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
|
||||||
|
|
||||||
if(holder.rank == "Admin Observer")
|
|
||||||
for(var/client/C in admins)
|
|
||||||
C << "<span class='adminobserver'><span class='prefix'>ADMIN:</span> <EM>[key_name(usr, C)]:</EM> <span class='message'>[msg]</span></span>"
|
|
||||||
else
|
|
||||||
for(var/client/C in admins)
|
for(var/client/C in admins)
|
||||||
C << "<span class='admin'><span class='prefix'>ADMIN:</span> <EM>[key_name(usr, C)]</EM> (<A HREF='?src=\ref[C.holder];adminplayerobservejump=\ref[mob]'>JMP</A>): <span class='message'>[msg]</span></span>"
|
C << "<span class='admin'><span class='prefix'>ADMIN:</span> <EM>[key_name(usr, C)]</EM> (<A HREF='?src=\ref[C.holder];adminplayerobservejump=\ref[mob]'>JMP</A>): <span class='message'>[msg]</span></span>"
|
||||||
|
else
|
||||||
|
for(var/client/C in admins)
|
||||||
|
C << "<span class='adminobserver'><span class='prefix'>ADMIN:</span> <EM>[key_name(usr, C)]:</EM> <span class='message'>[msg]</span></span>"
|
||||||
|
|
||||||
|
log_admin("[key_name(src)] : [msg]")
|
||||||
|
feedback_add_details("admin_verb","M") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1,17 @@
|
|||||||
/client/proc/Debug2()
|
/client/proc/Debug2()
|
||||||
set category = "Debug"
|
set category = "Debug"
|
||||||
set name = "Debug-Game"
|
set name = "Debug-Game"
|
||||||
if(!holder)
|
if(!check_rights(R_DEBUG)) return
|
||||||
src << "Only administrators may use this command."
|
|
||||||
return
|
|
||||||
if(holder.rank == "Game Admin")
|
|
||||||
Debug2 = !Debug2
|
|
||||||
|
|
||||||
world << "Debugging [Debug2 ? "On" : "Off"]"
|
if(Debug2)
|
||||||
log_admin("[key_name(src)] toggled debugging to [Debug2]")
|
Debug2 = 0
|
||||||
else if(holder.rank == "Game Master")
|
message_admins("[key_name(src)] toggled debugging off.")
|
||||||
Debug2 = !Debug2
|
log_admin("[key_name(src)] toggled debugging off.")
|
||||||
|
|
||||||
world << "Debugging [Debug2 ? "On" : "Off"]"
|
|
||||||
log_admin("[key_name(src)] toggled debugging to [Debug2]")
|
|
||||||
else
|
else
|
||||||
alert("Coders only baby")
|
Debug2 = 1
|
||||||
return
|
message_admins("[key_name(src)] toggled debugging on.")
|
||||||
|
log_admin("[key_name(src)] toggled debugging on.")
|
||||||
|
|
||||||
feedback_add_details("admin_verb","DG2") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","DG2") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,27 +1,4 @@
|
|||||||
/client/proc
|
/client/proc
|
||||||
general_report()
|
|
||||||
set category = "Debug"
|
|
||||||
set name = "Show General Report"
|
|
||||||
|
|
||||||
if(!master_controller)
|
|
||||||
usr << alert("Master_controller not found.")
|
|
||||||
|
|
||||||
var/mobs = 0
|
|
||||||
for(var/mob/M in mob_list)
|
|
||||||
mobs++
|
|
||||||
|
|
||||||
var/output = {"<B>GENERAL SYSTEMS REPORT</B><HR>
|
|
||||||
<B>General Processing Data</B><BR>
|
|
||||||
<B># of Machines:</B> [machines.len]<BR>
|
|
||||||
<B># of Pipe Networks:</B> [pipe_networks.len]<BR>
|
|
||||||
<B># of Processing Items:</B> [processing_objects.len]<BR>
|
|
||||||
<B># of Power Nets:</B> [powernets.len]<BR>
|
|
||||||
<B># of Mobs:</B> [mobs]<BR>
|
|
||||||
"}
|
|
||||||
|
|
||||||
usr << browse(output,"window=generalreport")
|
|
||||||
feedback_add_details("admin_verb","SGR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
|
||||||
|
|
||||||
air_report()
|
air_report()
|
||||||
set category = "Debug"
|
set category = "Debug"
|
||||||
set name = "Show Air Report"
|
set name = "Show Air Report"
|
||||||
@@ -156,13 +133,10 @@
|
|||||||
set name = "Reload Admins"
|
set name = "Reload Admins"
|
||||||
set category = "Debug"
|
set category = "Debug"
|
||||||
|
|
||||||
if(!(usr.client.holder && usr.client.holder.level >= 6)) // protect and prevent
|
if(!check_rights(R_SERVER)) return
|
||||||
usr << "\red Not a good cop"
|
|
||||||
return
|
|
||||||
|
|
||||||
message_admins("[usr] manually reloaded admins.txt")
|
message_admins("[usr] manually reloaded admins.txt")
|
||||||
usr << "You reload admins.txt"
|
load_admins()
|
||||||
world.load_admins()
|
|
||||||
feedback_add_details("admin_verb","RLDA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","RLDA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
var/method = 0 //0 means strict type detection while 1 means this type and all subtypes (IE: /obj/item with this set to 1 will set it to ALL itms)
|
var/method = 0 //0 means strict type detection while 1 means this type and all subtypes (IE: /obj/item with this set to 1 will set it to ALL itms)
|
||||||
|
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
if(!check_rights(R_VAREDIT)) return
|
||||||
|
|
||||||
if(A && A.type)
|
if(A && A.type)
|
||||||
if(typesof(A.type))
|
if(typesof(A.type))
|
||||||
@@ -24,11 +24,9 @@
|
|||||||
|
|
||||||
|
|
||||||
/client/proc/massmodify_variables(var/atom/O, var/var_name = "", var/method = 0)
|
/client/proc/massmodify_variables(var/atom/O, var/var_name = "", var/method = 0)
|
||||||
var/list/locked = list("vars", "key", "ckey", "client")
|
if(!check_rights(R_VAREDIT)) return
|
||||||
|
|
||||||
if(!src.holder)
|
var/list/locked = list("vars", "key", "ckey", "client")
|
||||||
src << "Only administrators may use this command."
|
|
||||||
return
|
|
||||||
|
|
||||||
for(var/p in forbidden_varedit_object_types)
|
for(var/p in forbidden_varedit_object_types)
|
||||||
if( istype(O,p) )
|
if( istype(O,p) )
|
||||||
@@ -48,17 +46,13 @@
|
|||||||
else
|
else
|
||||||
variable = var_name
|
variable = var_name
|
||||||
|
|
||||||
if(!variable)
|
if(!variable) return
|
||||||
return
|
|
||||||
var/default
|
var/default
|
||||||
var/var_value = O.vars[variable]
|
var/var_value = O.vars[variable]
|
||||||
var/dir
|
var/dir
|
||||||
|
|
||||||
if (locked.Find(variable) && !(src.holder.rank in list("Game Master", "Game Admin")))
|
if(variable == "holder" || (variable in locked))
|
||||||
return
|
if(!check_rights(R_DEBUG)) return
|
||||||
|
|
||||||
if (variable == "holder" && holder.rank != "Game Master") //Hotfix, a bit ugly but that exploit has been there for ages and now somebody just had to go and tell everyone of it bluh bluh - U
|
|
||||||
return
|
|
||||||
|
|
||||||
if(isnull(var_value))
|
if(isnull(var_value))
|
||||||
usr << "Unable to determine variable type."
|
usr << "Unable to determine variable type."
|
||||||
|
|||||||
@@ -126,6 +126,8 @@ var/list/forbidden_varedit_object_types = list(
|
|||||||
L += var_value
|
L += var_value
|
||||||
|
|
||||||
/client/proc/mod_list(var/list/L)
|
/client/proc/mod_list(var/list/L)
|
||||||
|
if(!check_rights(R_VAREDIT)) return
|
||||||
|
|
||||||
if(!istype(L,/list)) src << "Not a List."
|
if(!istype(L,/list)) src << "Not a List."
|
||||||
|
|
||||||
var/list/locked = list("vars", "key", "ckey", "client", "firemut", "ishulk", "telekinesis", "xray", "virus", "viruses", "cuffed", "ka", "last_eaten", "urine", "poo", "icon", "icon_state")
|
var/list/locked = list("vars", "key", "ckey", "client", "firemut", "ishulk", "telekinesis", "xray", "virus", "viruses", "cuffed", "ka", "last_eaten", "urine", "poo", "icon", "icon_state")
|
||||||
@@ -144,8 +146,8 @@ var/list/forbidden_varedit_object_types = list(
|
|||||||
|
|
||||||
var/dir
|
var/dir
|
||||||
|
|
||||||
if (locked.Find(variable) && !(src.holder.rank in list("Game Master", "Game Admin")))
|
if(variable in locked)
|
||||||
return
|
if(!check_rights(R_DEBUG)) return
|
||||||
|
|
||||||
if(isnull(variable))
|
if(isnull(variable))
|
||||||
usr << "Unable to determine variable type."
|
usr << "Unable to determine variable type."
|
||||||
@@ -264,12 +266,9 @@ var/list/forbidden_varedit_object_types = list(
|
|||||||
|
|
||||||
|
|
||||||
/client/proc/modify_variables(var/atom/O, var/param_var_name = null, var/autodetect_class = 0)
|
/client/proc/modify_variables(var/atom/O, var/param_var_name = null, var/autodetect_class = 0)
|
||||||
var/list/locked = list("vars", "key", "ckey", "client", "firemut", "ishulk", "telekinesis", "xray", "virus", "cuffed", "ka", "last_eaten", "icon", "icon_state", "mutantrace")
|
if(!check_rights(R_VAREDIT)) return
|
||||||
|
|
||||||
if(!src.holder)
|
var/list/locked = list("vars", "key", "ckey", "client", "firemut", "ishulk", "telekinesis", "xray", "virus", "cuffed", "ka", "last_eaten", "icon", "icon_state", "mutantrace")
|
||||||
src << "Only administrators may use this command."
|
|
||||||
return
|
|
||||||
if(!admin_rank_check(src.holder.level, 3)) return
|
|
||||||
|
|
||||||
for(var/p in forbidden_varedit_object_types)
|
for(var/p in forbidden_varedit_object_types)
|
||||||
if( istype(O,p) )
|
if( istype(O,p) )
|
||||||
@@ -285,13 +284,8 @@ var/list/forbidden_varedit_object_types = list(
|
|||||||
src << "A variable with this name ([param_var_name]) doesn't exist in this atom ([O])"
|
src << "A variable with this name ([param_var_name]) doesn't exist in this atom ([O])"
|
||||||
return
|
return
|
||||||
|
|
||||||
if (param_var_name == "holder" && holder.rank != "Game Master")
|
if(param_var_name == "holder" || (param_var_name in locked))
|
||||||
src << "No. Stop being stupid."
|
if(!check_rights(R_DEBUG)) return
|
||||||
return
|
|
||||||
|
|
||||||
if (locked.Find(param_var_name) && !(src.holder.rank in list("Game Master", "Game Admin")))
|
|
||||||
src << "Editing this variable requires you to be a game master or game admin."
|
|
||||||
return
|
|
||||||
|
|
||||||
variable = param_var_name
|
variable = param_var_name
|
||||||
|
|
||||||
@@ -345,15 +339,11 @@ var/list/forbidden_varedit_object_types = list(
|
|||||||
names = sortList(names)
|
names = sortList(names)
|
||||||
|
|
||||||
variable = input("Which var?","Var") as null|anything in names
|
variable = input("Which var?","Var") as null|anything in names
|
||||||
if(!variable)
|
if(!variable) return
|
||||||
return
|
|
||||||
var_value = O.vars[variable]
|
var_value = O.vars[variable]
|
||||||
|
|
||||||
if (locked.Find(variable) && !(src.holder.rank in list("Game Master", "Game Admin")))
|
if(variable == "holder" || (variable in locked))
|
||||||
return
|
if(!check_rights(R_DEBUG)) return
|
||||||
|
|
||||||
if (variable == "holder" && holder.rank != "Game Master") //Hotfix, a bit ugly but that exploit has been there for ages and now somebody just had to go and tell everyone of it bluh bluh - U
|
|
||||||
return
|
|
||||||
|
|
||||||
if(!autodetect_class)
|
if(!autodetect_class)
|
||||||
|
|
||||||
|
|||||||
@@ -1,47 +1,28 @@
|
|||||||
/client/proc/play_sound(S as sound)
|
/client/proc/play_sound(S as sound)
|
||||||
set category = "Fun"
|
set category = "Fun"
|
||||||
set name = "Play Global Sound"
|
set name = "Play Global Sound"
|
||||||
|
if(!check_rights(R_SOUNDS)) return
|
||||||
if(!src.holder)
|
|
||||||
src << "Only administrators may use this command."
|
|
||||||
return
|
|
||||||
|
|
||||||
var/sound/uploaded_sound = sound(S, repeat = 0, wait = 1, channel = 777)
|
var/sound/uploaded_sound = sound(S, repeat = 0, wait = 1, channel = 777)
|
||||||
uploaded_sound.priority = 250
|
uploaded_sound.priority = 250
|
||||||
|
|
||||||
if(src.holder.rank == "Game Master" || src.holder.rank == "Game Admin" || src.holder.rank == "Badmin")
|
log_admin("[key_name(src)] played sound [S]")
|
||||||
log_admin("[key_name(src)] played sound [S]")
|
message_admins("[key_name_admin(src)] played sound [S]", 1)
|
||||||
message_admins("[key_name_admin(src)] played sound [S]", 1)
|
for(var/mob/M in player_list)
|
||||||
for(var/mob/M in player_list)
|
if(M.client.midis)
|
||||||
if(M.client.midis)
|
M << uploaded_sound
|
||||||
M << uploaded_sound
|
|
||||||
else
|
|
||||||
if(usr.client.canplaysound)
|
|
||||||
usr.client.canplaysound = 0
|
|
||||||
log_admin("[key_name(src)] played sound [S]")
|
|
||||||
message_admins("[key_name_admin(src)] played sound [S]", 1)
|
|
||||||
for(var/mob/M in player_list)
|
|
||||||
if(M.client.midis)
|
|
||||||
M << uploaded_sound
|
|
||||||
else
|
|
||||||
usr << "You already used up your jukebox monies this round!"
|
|
||||||
del(uploaded_sound)
|
|
||||||
feedback_add_details("admin_verb","PGS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","PGS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
|
|
||||||
|
|
||||||
/client/proc/play_local_sound(S as sound)
|
/client/proc/play_local_sound(S as sound)
|
||||||
set category = "Fun"
|
set category = "Fun"
|
||||||
set name = "Play Local Sound"
|
set name = "Play Local Sound"
|
||||||
|
if(!check_rights(R_SOUNDS)) return
|
||||||
|
|
||||||
if(!src.holder)
|
log_admin("[key_name(src)] played a local sound [S]")
|
||||||
src << "Only administrators may use this command."
|
message_admins("[key_name_admin(src)] played a local sound [S]", 1)
|
||||||
return
|
playsound(get_turf_loc(src.mob), S, 50, 0, 0)
|
||||||
|
|
||||||
if(src.holder.rank == "Game Master" || src.holder.rank == "Game Admin")
|
|
||||||
log_admin("[key_name(src)] played a local sound [S]")
|
|
||||||
message_admins("[key_name_admin(src)] played a local sound [S]", 1)
|
|
||||||
playsound(get_turf_loc(src.mob), S, 50, 0, 0)
|
|
||||||
return
|
|
||||||
feedback_add_details("admin_verb","PLS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","PLS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -787,20 +787,14 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
|||||||
return
|
return
|
||||||
|
|
||||||
/client/proc/admin_cancel_shuttle()
|
/client/proc/admin_cancel_shuttle()
|
||||||
|
|
||||||
set category = "Admin"
|
set category = "Admin"
|
||||||
set name = "Cancel Shuttle"
|
set name = "Cancel Shuttle"
|
||||||
|
if(!check_rights(0)) return
|
||||||
|
if(alert(src, "You sure?", "Confirm", "Yes", "No") != "Yes") return
|
||||||
|
|
||||||
if ((!( ticker ) || emergency_shuttle.location || emergency_shuttle.direction == 0))
|
if(!ticker || emergency_shuttle.location || emergency_shuttle.direction == 0)
|
||||||
return
|
return
|
||||||
|
|
||||||
if (!holder)
|
|
||||||
src << "Only administrators may use this command."
|
|
||||||
return
|
|
||||||
|
|
||||||
var/confirm = alert(src, "You sure?", "Confirm", "Yes", "No")
|
|
||||||
if(confirm != "Yes") return
|
|
||||||
|
|
||||||
emergency_shuttle.recall()
|
emergency_shuttle.recall()
|
||||||
feedback_add_details("admin_verb","CCSHUT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","CCSHUT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
log_admin("[key_name(usr)] admin-recalled the emergency shuttle.")
|
log_admin("[key_name(usr)] admin-recalled the emergency shuttle.")
|
||||||
|
|||||||
@@ -5,28 +5,20 @@
|
|||||||
set name = "Set Ticklag"
|
set name = "Set Ticklag"
|
||||||
set desc = "Sets a new tick lag. Recommend you don't mess with this too much! Stable, time-tested ticklag value is 0.9"
|
set desc = "Sets a new tick lag. Recommend you don't mess with this too much! Stable, time-tested ticklag value is 0.9"
|
||||||
|
|
||||||
if(src.holder)
|
if(!check_rights(R_DEBUG)) return
|
||||||
if(!src.mob) return
|
|
||||||
|
|
||||||
if(src.holder.rank in list("Game Admin", "Game Master"))
|
var/newtick = input("Sets a new tick lag. Please don't mess with this too much! The stable, time-tested ticklag value is 0.9","Lag of Tick", world.tick_lag) as num|null
|
||||||
var/newtick = input("Sets a new tick lag. Please don't mess with this too much! The stable, time-tested ticklag value is 0.9","Lag of Tick", world.tick_lag) as num|null
|
//I've used ticks of 2 before to help with serious singulo lags
|
||||||
//I've used ticks of 2 before to help with serious singulo lags
|
if(newtick && newtick <= 2 && newtick > 0)
|
||||||
if(newtick && newtick <= 2 && newtick > 0)
|
log_admin("[key_name(src)] has modified world.tick_lag to [newtick]", 0)
|
||||||
log_admin("[key_name(src)] has modified world.tick_lag to [newtick]", 0)
|
message_admins("[key_name(src)] has modified world.tick_lag to [newtick]", 0)
|
||||||
message_admins("[key_name(src)] has modified world.tick_lag to [newtick]", 0)
|
world.tick_lag = newtick
|
||||||
world.tick_lag = newtick
|
feedback_add_details("admin_verb","TICKLAG") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
feedback_add_details("admin_verb","TICKLAG") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
|
||||||
|
|
||||||
switch(alert("Enable Tick Compensation?","Tick Comp is currently: [config.Tickcomp]","Yes","No"))
|
switch(alert("Enable Tick Compensation?","Tick Comp is currently: [config.Tickcomp]","Yes","No"))
|
||||||
if("Yes")
|
if("Yes") config.Tickcomp = 1
|
||||||
config.Tickcomp = 1
|
else config.Tickcomp = 0
|
||||||
else
|
else
|
||||||
config.Tickcomp = 0
|
src << "\red Error: ticklag(): Invalid world.ticklag value. No changes made."
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
src << "\red Error: ticklag(): Invalid world.ticklag value. No changes made."
|
|
||||||
return
|
|
||||||
|
|
||||||
src << "\red Error: ticklag(): You are not authorised to use this. Game Admins and higher only."
|
|
||||||
return
|
|
||||||
|
|||||||
@@ -103,7 +103,6 @@
|
|||||||
if(holder)
|
if(holder)
|
||||||
admins += src
|
admins += src
|
||||||
holder.owner = src
|
holder.owner = src
|
||||||
holder.state = null
|
|
||||||
|
|
||||||
. = ..() //calls mob.Login()
|
. = ..() //calls mob.Login()
|
||||||
|
|
||||||
@@ -112,6 +111,7 @@
|
|||||||
world.update_status()
|
world.update_status()
|
||||||
|
|
||||||
if(holder)
|
if(holder)
|
||||||
|
update_admin()
|
||||||
admin_memo_show()
|
admin_memo_show()
|
||||||
|
|
||||||
log_client_to_db()
|
log_client_to_db()
|
||||||
@@ -122,7 +122,6 @@
|
|||||||
//////////////
|
//////////////
|
||||||
/client/Del()
|
/client/Del()
|
||||||
if(holder)
|
if(holder)
|
||||||
holder.state = null
|
|
||||||
holder.owner = null
|
holder.owner = null
|
||||||
admins -= src
|
admins -= src
|
||||||
directory -= ckey
|
directory -= ckey
|
||||||
@@ -175,12 +174,10 @@
|
|||||||
|
|
||||||
if(sql_id)
|
if(sql_id)
|
||||||
//Player already identified previously, we need to just update the 'lastseen', 'ip' and 'computer_id' variables
|
//Player already identified previously, we need to just update the 'lastseen', 'ip' and 'computer_id' variables
|
||||||
|
|
||||||
var/DBQuery/query_update = dbcon.NewQuery("UPDATE erro_player SET lastseen = Now(), ip = '[sql_ip]', computerid = '[sql_computerid]', lastadminrank = '[sql_admin_rank]' WHERE id = [sql_id]")
|
var/DBQuery/query_update = dbcon.NewQuery("UPDATE erro_player SET lastseen = Now(), ip = '[sql_ip]', computerid = '[sql_computerid]', lastadminrank = '[sql_admin_rank]' WHERE id = [sql_id]")
|
||||||
query_update.Execute()
|
query_update.Execute()
|
||||||
else
|
else
|
||||||
//New player!! Need to insert all the stuff
|
//New player!! Need to insert all the stuff
|
||||||
|
|
||||||
var/DBQuery/query_insert = dbcon.NewQuery("INSERT INTO erro_player (id, ckey, firstseen, lastseen, ip, computerid, lastadminrank) VALUES (null, '[sql_ckey]', Now(), Now(), '[sql_ip]', '[sql_computerid]', '[sql_admin_rank]')")
|
var/DBQuery/query_insert = dbcon.NewQuery("INSERT INTO erro_player (id, ckey, firstseen, lastseen, ip, computerid, lastadminrank) VALUES (null, '[sql_ckey]', Now(), Now(), '[sql_ip]', '[sql_computerid]', '[sql_admin_rank]')")
|
||||||
query_insert.Execute()
|
query_insert.Execute()
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
//handles setting lastKnownIP and computer_id for use by the ban systems as well as checking for multikeying
|
//handles setting lastKnownIP and computer_id for use by the ban systems as well as checking for multikeying
|
||||||
/mob/proc/update_Login_details()
|
/mob/proc/update_Login_details()
|
||||||
//trigger admin holder updates. This is hear as all Login() calls this proc.
|
|
||||||
if(client.holder)
|
|
||||||
client.update_admins(client.holder.rank)
|
|
||||||
|
|
||||||
//Multikey checks and logging
|
//Multikey checks and logging
|
||||||
lastKnownIP = client.address
|
lastKnownIP = client.address
|
||||||
computer_id = client.computer_id
|
computer_id = client.computer_id
|
||||||
|
|||||||
@@ -427,20 +427,20 @@ var/list/slot_equipment_priority = list( \
|
|||||||
set category = "OOC"
|
set category = "OOC"
|
||||||
var/is_admin = 0
|
var/is_admin = 0
|
||||||
|
|
||||||
if (client.holder && client.holder.level >= 1 && ( client.holder.state == 2 || client.holder.level > 3 ))
|
if(client.holder && (client.holder.rights & R_ADMIN))
|
||||||
is_admin = 1
|
is_admin = 1
|
||||||
else if (istype(src, /mob/new_player) || stat != 2)
|
else if(stat != DEAD || istype(src, /mob/new_player))
|
||||||
usr << "\blue You must be observing to use this!"
|
usr << "\blue You must be observing to use this!"
|
||||||
return
|
return
|
||||||
|
|
||||||
if (is_admin && stat == 2)
|
if(is_admin && stat == DEAD)
|
||||||
is_admin = 0
|
is_admin = 0
|
||||||
|
|
||||||
var/list/names = list()
|
var/list/names = list()
|
||||||
var/list/namecounts = list()
|
var/list/namecounts = list()
|
||||||
var/list/creatures = list()
|
var/list/creatures = list()
|
||||||
|
|
||||||
for(var/obj/O in world)
|
for(var/obj/O in world) //EWWWWWWWWWWWWWWWWWWWWWWWW ~needs to be optimised
|
||||||
if(!O.loc)
|
if(!O.loc)
|
||||||
continue
|
continue
|
||||||
if(istype(O, /obj/item/weapon/disk/nuclear))
|
if(istype(O, /obj/item/weapon/disk/nuclear))
|
||||||
|
|||||||
@@ -176,11 +176,11 @@ datum/preferences
|
|||||||
if(config.allow_Metadata)
|
if(config.allow_Metadata)
|
||||||
dat += "<b>OOC Notes:</b> <a href='byond://?src=\ref[user];preference=metadata;task=input'> Edit </a><br>"
|
dat += "<b>OOC Notes:</b> <a href='byond://?src=\ref[user];preference=metadata;task=input'> Edit </a><br>"
|
||||||
|
|
||||||
if((user.client) && (user.client.holder) && (user.client.holder.rank))
|
if(user.client && user.client.holder)
|
||||||
dat += "<b>Adminhelp sound</b>: "
|
dat += "<b>Adminhelp sound</b>: "
|
||||||
dat += "[(sound_adminhelp)?"On":"Off"] <a href='byond://?src=\ref[user];preference=hear_adminhelps'>toggle</a><br>"
|
dat += "[(sound_adminhelp)?"On":"Off"] <a href='byond://?src=\ref[user];preference=hear_adminhelps'>toggle</a><br>"
|
||||||
|
|
||||||
if(user.client.holder.level >= 5)
|
if(user.client.holder.rights & R_FUN)
|
||||||
dat += "<br><b>OOC</b><br>"
|
dat += "<br><b>OOC</b><br>"
|
||||||
dat += "<a href='byond://?src=\ref[user];preference=ooccolor;task=input'>Change color</a> <font face=\"fixedsys\" size=\"3\" color=\"[ooccolor]\"><table style='display:inline;' bgcolor=\"[ooccolor]\"><tr><td>__</td></tr></table></font><br>"
|
dat += "<a href='byond://?src=\ref[user];preference=ooccolor;task=input'>Change color</a> <font face=\"fixedsys\" size=\"3\" color=\"[ooccolor]\"><table style='display:inline;' bgcolor=\"[ooccolor]\"><tr><td>__</td></tr></table></font><br>"
|
||||||
|
|
||||||
|
|||||||
@@ -49,4 +49,6 @@ h1.alert, h2.alert {color: #000000;}
|
|||||||
.alien {color: #543354;}
|
.alien {color: #543354;}
|
||||||
.newscaster {color: #800000;}
|
.newscaster {color: #800000;}
|
||||||
|
|
||||||
|
.interface {color: #330033;}
|
||||||
|
|
||||||
</style>"}
|
</style>"}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
src.load_mode()
|
src.load_mode()
|
||||||
src.load_motd()
|
src.load_motd()
|
||||||
src.load_admins()
|
load_admins()
|
||||||
investigate_reset()
|
investigate_reset()
|
||||||
if (config.usewhitelist)
|
if (config.usewhitelist)
|
||||||
load_whitelist()
|
load_whitelist()
|
||||||
@@ -188,84 +188,6 @@ Starting up. [time2text(world.timeofday, "hh:mm.ss")]
|
|||||||
/world/proc/load_motd()
|
/world/proc/load_motd()
|
||||||
join_motd = file2text("config/motd.txt")
|
join_motd = file2text("config/motd.txt")
|
||||||
|
|
||||||
/world/proc/load_admins()
|
|
||||||
if(config.admin_legacy_system)
|
|
||||||
//Legacy admin system uses admins.txt - It's not fucking legacy Erro. It's standard. I can assure you more people will be using 'legacy' than sql. SQL is lame. ~carnie
|
|
||||||
var/list/Lines = file2list("config/admins.txt")
|
|
||||||
for(var/line in Lines)
|
|
||||||
if(!line) continue
|
|
||||||
|
|
||||||
if(copytext(line, 1, 2) == ";")
|
|
||||||
continue
|
|
||||||
|
|
||||||
var/pos = findtext(line, " - ", 1, null)
|
|
||||||
if(pos)
|
|
||||||
var/m_key = copytext(line, 1, pos)
|
|
||||||
var/a_lev = copytext(line, pos + 3, length(line) + 1)
|
|
||||||
admin_datums[m_key] = new /datum/admins(a_lev)
|
|
||||||
diary << ("ADMIN: [m_key] = [a_lev]")
|
|
||||||
else
|
|
||||||
//The current admin system uses SQL
|
|
||||||
var/user = sqlfdbklogin
|
|
||||||
var/pass = sqlfdbkpass
|
|
||||||
var/db = sqlfdbkdb
|
|
||||||
var/address = sqladdress
|
|
||||||
var/port = sqlport
|
|
||||||
|
|
||||||
var/DBConnection/dbcon = new()
|
|
||||||
|
|
||||||
dbcon.Connect("dbi:mysql:[db]:[address]:[port]","[user]","[pass]")
|
|
||||||
if(!dbcon.IsConnected())
|
|
||||||
diary << "Failed to connect to database in load_admins(). Reverting to legacy system."
|
|
||||||
config.admin_legacy_system = 1
|
|
||||||
load_admins()
|
|
||||||
return
|
|
||||||
|
|
||||||
var/DBQuery/query = dbcon.NewQuery("SELECT ckey, rank, level, flags FROM erro_admin")
|
|
||||||
query.Execute()
|
|
||||||
while(query.NextRow())
|
|
||||||
var/adminckey = query.item[1]
|
|
||||||
var/adminrank = query.item[2]
|
|
||||||
var/adminlevel = query.item[3]
|
|
||||||
if(istext(adminlevel))
|
|
||||||
adminlevel = text2num(adminlevel)
|
|
||||||
var/permissions = query.item[4]
|
|
||||||
if(istext(permissions))
|
|
||||||
permissions = text2num(permissions)
|
|
||||||
|
|
||||||
//This list of stuff translates the permission defines the database uses to the permission structure that the game uses.
|
|
||||||
var/permissions_actual = 0
|
|
||||||
if(permissions & SQL_BUILDMODE)
|
|
||||||
permissions_actual |= BUILDMODE
|
|
||||||
if(permissions & SQL_ADMIN)
|
|
||||||
permissions_actual |= ADMIN
|
|
||||||
if(permissions & SQL_BAN)
|
|
||||||
permissions_actual |= BAN
|
|
||||||
if(permissions & SQL_FUN)
|
|
||||||
permissions_actual |= FUN
|
|
||||||
if(permissions & SQL_SERVER)
|
|
||||||
permissions_actual |= SERVER
|
|
||||||
if(permissions & SQL_DEBUG)
|
|
||||||
permissions_actual |= ADMDEBUG
|
|
||||||
if(permissions & SQL_POSSESS)
|
|
||||||
permissions_actual |= POSSESS
|
|
||||||
if(permissions & SQL_PERMISSIONS)
|
|
||||||
permissions_actual |= PERMISSIONS
|
|
||||||
|
|
||||||
if(adminrank == "Removed")
|
|
||||||
return //This person was de-adminned. They are only in the admin list for archive purposes.
|
|
||||||
|
|
||||||
var/datum/admins/AD = new /datum/admins(adminrank)
|
|
||||||
AD.level = adminlevel //Legacy support for old verbs
|
|
||||||
AD.sql_permissions = permissions_actual
|
|
||||||
admin_datums[adminckey] = AD
|
|
||||||
|
|
||||||
if(!admin_datums)
|
|
||||||
diary << "The database query in load_admins() resulted in no admins being added to the list. Reverting to legacy system."
|
|
||||||
config.admin_legacy_system = 1
|
|
||||||
load_admins()
|
|
||||||
return
|
|
||||||
|
|
||||||
/world/proc/load_configuration()
|
/world/proc/load_configuration()
|
||||||
config = new /datum/configuration()
|
config = new /datum/configuration()
|
||||||
config.load("config/config.txt")
|
config.load("config/config.txt")
|
||||||
|
|||||||
39
config/admin_ranks.txt
Normal file
39
config/admin_ranks.txt
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
########################################################################################
|
||||||
|
# ADMIN RANK DEFINES #
|
||||||
|
# The format of this is very simple. Rank name goes first. #
|
||||||
|
# Rank is CASE-SENSITIVE, all punctuation will be stripped so spaces don't matter. #
|
||||||
|
# Each rank is then followed by keywords with the prefix "+". #
|
||||||
|
# These keywords represent groups of verbs and abilities which are given to that rank. #
|
||||||
|
# +@ (or +prev) is a special shorthand which adds all the rights of the rank above it. #
|
||||||
|
# Ranks with no keywords will just be given the most basic verbs and abilities ~Carn #
|
||||||
|
########################################################################################
|
||||||
|
# PLEASE NOTE: depending on config options, some abilities will be unavailable regardless if you have permission to use them!
|
||||||
|
# ALSO NOTE: this is a WorkInProgress at the moment. Most of this is just arbitrarily thrown in whatever group because LoadsaWork2Do+LittleTime.
|
||||||
|
# I'll be doing more moving around as feedback comes in. So be sure to check the notes after updates.
|
||||||
|
|
||||||
|
# KEYWORDS:
|
||||||
|
# +ADMIN = general admin tools, verbs etc
|
||||||
|
# +FUN = mob-transformation, events, other event-orientated actions
|
||||||
|
# +BAN = the ability to ban, jobban and fullban
|
||||||
|
# +STEALTH = the ability to stealthmin (make yourself appear with a fake name to everyone but other admins
|
||||||
|
# +POSSESS = the ability to possess objects
|
||||||
|
# +REJUV (or +REJUVINATE) = the ability to heal, respawn, modify damage and use godmode
|
||||||
|
# +BUILD (or +BUILDMODE) = the ability to use buildmode
|
||||||
|
# +SERVER = higher-risk admin verbs and abilities, such as those which affect the server configuration.
|
||||||
|
# +DEBUG = debug tools used for diagnosing and fixing problems. It's useful to give this to coders so they can investigate problems on a live server
|
||||||
|
# +VAREDIT = everyone may view viewvars/debugvars/whatever you call it. This keyword allows you to actually EDIT those variables.
|
||||||
|
# +RIGHTS (or +PERMISSIONS) = allows you to promote and/or demote people.
|
||||||
|
# +SOUND (or +SOUNDS) = allows you to upload and play sounds
|
||||||
|
# +EVERYTHING (or +HOST or +ALL) = Simply gives you everything without having to type every flag
|
||||||
|
|
||||||
|
Admin Observer
|
||||||
|
Moderator +ADMIN
|
||||||
|
Admin Candidate +@
|
||||||
|
Trial Admin +@ +FUN +REJUV +VAREDIT +BAN
|
||||||
|
Badmin +@ +POSSESS +BUILDMODE +SERVER
|
||||||
|
Game Admin +@ +STEALTH +SOUNDS +DEBUG
|
||||||
|
Game Master +EVERYTHING
|
||||||
|
|
||||||
|
Host +EVERYTHING
|
||||||
|
|
||||||
|
Coder +DEBUG +VAREDIT +SERVER
|
||||||
@@ -1,3 +1,10 @@
|
|||||||
|
######################################################################
|
||||||
|
# Basically, ckey goes first. Rank goes after the "-" #
|
||||||
|
# Case is not important for ckey. #
|
||||||
|
# Case IS important for the rank. However punctuation/spaces are not #
|
||||||
|
# Ranks can be anything defined in admin_ranks.txt ~Carn #
|
||||||
|
######################################################################
|
||||||
|
|
||||||
quarxink - Game Master
|
quarxink - Game Master
|
||||||
tle - Game Master
|
tle - Game Master
|
||||||
xsi - Game Master
|
xsi - Game Master
|
||||||
|
|||||||
285
tgstation.dme
285
tgstation.dme
@@ -6,266 +6,6 @@
|
|||||||
|
|
||||||
// BEGIN_FILE_DIR
|
// BEGIN_FILE_DIR
|
||||||
#define FILE_DIR .
|
#define FILE_DIR .
|
||||||
#define FILE_DIR ".svn"
|
|
||||||
#define FILE_DIR ".svn/pristine"
|
|
||||||
#define FILE_DIR ".svn/pristine/00"
|
|
||||||
#define FILE_DIR ".svn/pristine/01"
|
|
||||||
#define FILE_DIR ".svn/pristine/02"
|
|
||||||
#define FILE_DIR ".svn/pristine/03"
|
|
||||||
#define FILE_DIR ".svn/pristine/04"
|
|
||||||
#define FILE_DIR ".svn/pristine/05"
|
|
||||||
#define FILE_DIR ".svn/pristine/06"
|
|
||||||
#define FILE_DIR ".svn/pristine/07"
|
|
||||||
#define FILE_DIR ".svn/pristine/08"
|
|
||||||
#define FILE_DIR ".svn/pristine/09"
|
|
||||||
#define FILE_DIR ".svn/pristine/0a"
|
|
||||||
#define FILE_DIR ".svn/pristine/0b"
|
|
||||||
#define FILE_DIR ".svn/pristine/0c"
|
|
||||||
#define FILE_DIR ".svn/pristine/0d"
|
|
||||||
#define FILE_DIR ".svn/pristine/0e"
|
|
||||||
#define FILE_DIR ".svn/pristine/0f"
|
|
||||||
#define FILE_DIR ".svn/pristine/10"
|
|
||||||
#define FILE_DIR ".svn/pristine/11"
|
|
||||||
#define FILE_DIR ".svn/pristine/12"
|
|
||||||
#define FILE_DIR ".svn/pristine/13"
|
|
||||||
#define FILE_DIR ".svn/pristine/14"
|
|
||||||
#define FILE_DIR ".svn/pristine/15"
|
|
||||||
#define FILE_DIR ".svn/pristine/16"
|
|
||||||
#define FILE_DIR ".svn/pristine/17"
|
|
||||||
#define FILE_DIR ".svn/pristine/18"
|
|
||||||
#define FILE_DIR ".svn/pristine/19"
|
|
||||||
#define FILE_DIR ".svn/pristine/1a"
|
|
||||||
#define FILE_DIR ".svn/pristine/1b"
|
|
||||||
#define FILE_DIR ".svn/pristine/1c"
|
|
||||||
#define FILE_DIR ".svn/pristine/1d"
|
|
||||||
#define FILE_DIR ".svn/pristine/1e"
|
|
||||||
#define FILE_DIR ".svn/pristine/1f"
|
|
||||||
#define FILE_DIR ".svn/pristine/20"
|
|
||||||
#define FILE_DIR ".svn/pristine/21"
|
|
||||||
#define FILE_DIR ".svn/pristine/22"
|
|
||||||
#define FILE_DIR ".svn/pristine/23"
|
|
||||||
#define FILE_DIR ".svn/pristine/24"
|
|
||||||
#define FILE_DIR ".svn/pristine/25"
|
|
||||||
#define FILE_DIR ".svn/pristine/26"
|
|
||||||
#define FILE_DIR ".svn/pristine/27"
|
|
||||||
#define FILE_DIR ".svn/pristine/28"
|
|
||||||
#define FILE_DIR ".svn/pristine/29"
|
|
||||||
#define FILE_DIR ".svn/pristine/2a"
|
|
||||||
#define FILE_DIR ".svn/pristine/2b"
|
|
||||||
#define FILE_DIR ".svn/pristine/2c"
|
|
||||||
#define FILE_DIR ".svn/pristine/2d"
|
|
||||||
#define FILE_DIR ".svn/pristine/2e"
|
|
||||||
#define FILE_DIR ".svn/pristine/2f"
|
|
||||||
#define FILE_DIR ".svn/pristine/30"
|
|
||||||
#define FILE_DIR ".svn/pristine/31"
|
|
||||||
#define FILE_DIR ".svn/pristine/32"
|
|
||||||
#define FILE_DIR ".svn/pristine/33"
|
|
||||||
#define FILE_DIR ".svn/pristine/34"
|
|
||||||
#define FILE_DIR ".svn/pristine/35"
|
|
||||||
#define FILE_DIR ".svn/pristine/36"
|
|
||||||
#define FILE_DIR ".svn/pristine/37"
|
|
||||||
#define FILE_DIR ".svn/pristine/38"
|
|
||||||
#define FILE_DIR ".svn/pristine/39"
|
|
||||||
#define FILE_DIR ".svn/pristine/3a"
|
|
||||||
#define FILE_DIR ".svn/pristine/3b"
|
|
||||||
#define FILE_DIR ".svn/pristine/3c"
|
|
||||||
#define FILE_DIR ".svn/pristine/3d"
|
|
||||||
#define FILE_DIR ".svn/pristine/3e"
|
|
||||||
#define FILE_DIR ".svn/pristine/3f"
|
|
||||||
#define FILE_DIR ".svn/pristine/40"
|
|
||||||
#define FILE_DIR ".svn/pristine/41"
|
|
||||||
#define FILE_DIR ".svn/pristine/42"
|
|
||||||
#define FILE_DIR ".svn/pristine/43"
|
|
||||||
#define FILE_DIR ".svn/pristine/44"
|
|
||||||
#define FILE_DIR ".svn/pristine/45"
|
|
||||||
#define FILE_DIR ".svn/pristine/46"
|
|
||||||
#define FILE_DIR ".svn/pristine/47"
|
|
||||||
#define FILE_DIR ".svn/pristine/48"
|
|
||||||
#define FILE_DIR ".svn/pristine/49"
|
|
||||||
#define FILE_DIR ".svn/pristine/4a"
|
|
||||||
#define FILE_DIR ".svn/pristine/4b"
|
|
||||||
#define FILE_DIR ".svn/pristine/4c"
|
|
||||||
#define FILE_DIR ".svn/pristine/4d"
|
|
||||||
#define FILE_DIR ".svn/pristine/4e"
|
|
||||||
#define FILE_DIR ".svn/pristine/4f"
|
|
||||||
#define FILE_DIR ".svn/pristine/50"
|
|
||||||
#define FILE_DIR ".svn/pristine/51"
|
|
||||||
#define FILE_DIR ".svn/pristine/52"
|
|
||||||
#define FILE_DIR ".svn/pristine/53"
|
|
||||||
#define FILE_DIR ".svn/pristine/54"
|
|
||||||
#define FILE_DIR ".svn/pristine/55"
|
|
||||||
#define FILE_DIR ".svn/pristine/56"
|
|
||||||
#define FILE_DIR ".svn/pristine/57"
|
|
||||||
#define FILE_DIR ".svn/pristine/58"
|
|
||||||
#define FILE_DIR ".svn/pristine/59"
|
|
||||||
#define FILE_DIR ".svn/pristine/5a"
|
|
||||||
#define FILE_DIR ".svn/pristine/5b"
|
|
||||||
#define FILE_DIR ".svn/pristine/5c"
|
|
||||||
#define FILE_DIR ".svn/pristine/5d"
|
|
||||||
#define FILE_DIR ".svn/pristine/5e"
|
|
||||||
#define FILE_DIR ".svn/pristine/5f"
|
|
||||||
#define FILE_DIR ".svn/pristine/60"
|
|
||||||
#define FILE_DIR ".svn/pristine/61"
|
|
||||||
#define FILE_DIR ".svn/pristine/62"
|
|
||||||
#define FILE_DIR ".svn/pristine/63"
|
|
||||||
#define FILE_DIR ".svn/pristine/64"
|
|
||||||
#define FILE_DIR ".svn/pristine/65"
|
|
||||||
#define FILE_DIR ".svn/pristine/66"
|
|
||||||
#define FILE_DIR ".svn/pristine/67"
|
|
||||||
#define FILE_DIR ".svn/pristine/68"
|
|
||||||
#define FILE_DIR ".svn/pristine/69"
|
|
||||||
#define FILE_DIR ".svn/pristine/6a"
|
|
||||||
#define FILE_DIR ".svn/pristine/6b"
|
|
||||||
#define FILE_DIR ".svn/pristine/6c"
|
|
||||||
#define FILE_DIR ".svn/pristine/6d"
|
|
||||||
#define FILE_DIR ".svn/pristine/6e"
|
|
||||||
#define FILE_DIR ".svn/pristine/6f"
|
|
||||||
#define FILE_DIR ".svn/pristine/70"
|
|
||||||
#define FILE_DIR ".svn/pristine/71"
|
|
||||||
#define FILE_DIR ".svn/pristine/72"
|
|
||||||
#define FILE_DIR ".svn/pristine/73"
|
|
||||||
#define FILE_DIR ".svn/pristine/74"
|
|
||||||
#define FILE_DIR ".svn/pristine/75"
|
|
||||||
#define FILE_DIR ".svn/pristine/76"
|
|
||||||
#define FILE_DIR ".svn/pristine/77"
|
|
||||||
#define FILE_DIR ".svn/pristine/78"
|
|
||||||
#define FILE_DIR ".svn/pristine/79"
|
|
||||||
#define FILE_DIR ".svn/pristine/7a"
|
|
||||||
#define FILE_DIR ".svn/pristine/7b"
|
|
||||||
#define FILE_DIR ".svn/pristine/7c"
|
|
||||||
#define FILE_DIR ".svn/pristine/7d"
|
|
||||||
#define FILE_DIR ".svn/pristine/7e"
|
|
||||||
#define FILE_DIR ".svn/pristine/7f"
|
|
||||||
#define FILE_DIR ".svn/pristine/80"
|
|
||||||
#define FILE_DIR ".svn/pristine/81"
|
|
||||||
#define FILE_DIR ".svn/pristine/82"
|
|
||||||
#define FILE_DIR ".svn/pristine/83"
|
|
||||||
#define FILE_DIR ".svn/pristine/84"
|
|
||||||
#define FILE_DIR ".svn/pristine/85"
|
|
||||||
#define FILE_DIR ".svn/pristine/86"
|
|
||||||
#define FILE_DIR ".svn/pristine/87"
|
|
||||||
#define FILE_DIR ".svn/pristine/88"
|
|
||||||
#define FILE_DIR ".svn/pristine/89"
|
|
||||||
#define FILE_DIR ".svn/pristine/8a"
|
|
||||||
#define FILE_DIR ".svn/pristine/8b"
|
|
||||||
#define FILE_DIR ".svn/pristine/8c"
|
|
||||||
#define FILE_DIR ".svn/pristine/8d"
|
|
||||||
#define FILE_DIR ".svn/pristine/8e"
|
|
||||||
#define FILE_DIR ".svn/pristine/8f"
|
|
||||||
#define FILE_DIR ".svn/pristine/90"
|
|
||||||
#define FILE_DIR ".svn/pristine/91"
|
|
||||||
#define FILE_DIR ".svn/pristine/92"
|
|
||||||
#define FILE_DIR ".svn/pristine/93"
|
|
||||||
#define FILE_DIR ".svn/pristine/94"
|
|
||||||
#define FILE_DIR ".svn/pristine/95"
|
|
||||||
#define FILE_DIR ".svn/pristine/96"
|
|
||||||
#define FILE_DIR ".svn/pristine/97"
|
|
||||||
#define FILE_DIR ".svn/pristine/98"
|
|
||||||
#define FILE_DIR ".svn/pristine/99"
|
|
||||||
#define FILE_DIR ".svn/pristine/9a"
|
|
||||||
#define FILE_DIR ".svn/pristine/9b"
|
|
||||||
#define FILE_DIR ".svn/pristine/9c"
|
|
||||||
#define FILE_DIR ".svn/pristine/9d"
|
|
||||||
#define FILE_DIR ".svn/pristine/9e"
|
|
||||||
#define FILE_DIR ".svn/pristine/9f"
|
|
||||||
#define FILE_DIR ".svn/pristine/a0"
|
|
||||||
#define FILE_DIR ".svn/pristine/a1"
|
|
||||||
#define FILE_DIR ".svn/pristine/a2"
|
|
||||||
#define FILE_DIR ".svn/pristine/a3"
|
|
||||||
#define FILE_DIR ".svn/pristine/a4"
|
|
||||||
#define FILE_DIR ".svn/pristine/a5"
|
|
||||||
#define FILE_DIR ".svn/pristine/a6"
|
|
||||||
#define FILE_DIR ".svn/pristine/a7"
|
|
||||||
#define FILE_DIR ".svn/pristine/a8"
|
|
||||||
#define FILE_DIR ".svn/pristine/a9"
|
|
||||||
#define FILE_DIR ".svn/pristine/aa"
|
|
||||||
#define FILE_DIR ".svn/pristine/ab"
|
|
||||||
#define FILE_DIR ".svn/pristine/ac"
|
|
||||||
#define FILE_DIR ".svn/pristine/ad"
|
|
||||||
#define FILE_DIR ".svn/pristine/ae"
|
|
||||||
#define FILE_DIR ".svn/pristine/af"
|
|
||||||
#define FILE_DIR ".svn/pristine/b0"
|
|
||||||
#define FILE_DIR ".svn/pristine/b1"
|
|
||||||
#define FILE_DIR ".svn/pristine/b2"
|
|
||||||
#define FILE_DIR ".svn/pristine/b3"
|
|
||||||
#define FILE_DIR ".svn/pristine/b4"
|
|
||||||
#define FILE_DIR ".svn/pristine/b5"
|
|
||||||
#define FILE_DIR ".svn/pristine/b6"
|
|
||||||
#define FILE_DIR ".svn/pristine/b7"
|
|
||||||
#define FILE_DIR ".svn/pristine/b8"
|
|
||||||
#define FILE_DIR ".svn/pristine/b9"
|
|
||||||
#define FILE_DIR ".svn/pristine/ba"
|
|
||||||
#define FILE_DIR ".svn/pristine/bb"
|
|
||||||
#define FILE_DIR ".svn/pristine/bc"
|
|
||||||
#define FILE_DIR ".svn/pristine/bd"
|
|
||||||
#define FILE_DIR ".svn/pristine/be"
|
|
||||||
#define FILE_DIR ".svn/pristine/bf"
|
|
||||||
#define FILE_DIR ".svn/pristine/c0"
|
|
||||||
#define FILE_DIR ".svn/pristine/c1"
|
|
||||||
#define FILE_DIR ".svn/pristine/c2"
|
|
||||||
#define FILE_DIR ".svn/pristine/c3"
|
|
||||||
#define FILE_DIR ".svn/pristine/c4"
|
|
||||||
#define FILE_DIR ".svn/pristine/c5"
|
|
||||||
#define FILE_DIR ".svn/pristine/c6"
|
|
||||||
#define FILE_DIR ".svn/pristine/c7"
|
|
||||||
#define FILE_DIR ".svn/pristine/c8"
|
|
||||||
#define FILE_DIR ".svn/pristine/c9"
|
|
||||||
#define FILE_DIR ".svn/pristine/ca"
|
|
||||||
#define FILE_DIR ".svn/pristine/cb"
|
|
||||||
#define FILE_DIR ".svn/pristine/cc"
|
|
||||||
#define FILE_DIR ".svn/pristine/cd"
|
|
||||||
#define FILE_DIR ".svn/pristine/ce"
|
|
||||||
#define FILE_DIR ".svn/pristine/cf"
|
|
||||||
#define FILE_DIR ".svn/pristine/d0"
|
|
||||||
#define FILE_DIR ".svn/pristine/d1"
|
|
||||||
#define FILE_DIR ".svn/pristine/d2"
|
|
||||||
#define FILE_DIR ".svn/pristine/d3"
|
|
||||||
#define FILE_DIR ".svn/pristine/d4"
|
|
||||||
#define FILE_DIR ".svn/pristine/d5"
|
|
||||||
#define FILE_DIR ".svn/pristine/d6"
|
|
||||||
#define FILE_DIR ".svn/pristine/d7"
|
|
||||||
#define FILE_DIR ".svn/pristine/d8"
|
|
||||||
#define FILE_DIR ".svn/pristine/d9"
|
|
||||||
#define FILE_DIR ".svn/pristine/da"
|
|
||||||
#define FILE_DIR ".svn/pristine/db"
|
|
||||||
#define FILE_DIR ".svn/pristine/dc"
|
|
||||||
#define FILE_DIR ".svn/pristine/dd"
|
|
||||||
#define FILE_DIR ".svn/pristine/de"
|
|
||||||
#define FILE_DIR ".svn/pristine/df"
|
|
||||||
#define FILE_DIR ".svn/pristine/e0"
|
|
||||||
#define FILE_DIR ".svn/pristine/e1"
|
|
||||||
#define FILE_DIR ".svn/pristine/e2"
|
|
||||||
#define FILE_DIR ".svn/pristine/e3"
|
|
||||||
#define FILE_DIR ".svn/pristine/e4"
|
|
||||||
#define FILE_DIR ".svn/pristine/e5"
|
|
||||||
#define FILE_DIR ".svn/pristine/e6"
|
|
||||||
#define FILE_DIR ".svn/pristine/e7"
|
|
||||||
#define FILE_DIR ".svn/pristine/e8"
|
|
||||||
#define FILE_DIR ".svn/pristine/e9"
|
|
||||||
#define FILE_DIR ".svn/pristine/ea"
|
|
||||||
#define FILE_DIR ".svn/pristine/eb"
|
|
||||||
#define FILE_DIR ".svn/pristine/ec"
|
|
||||||
#define FILE_DIR ".svn/pristine/ed"
|
|
||||||
#define FILE_DIR ".svn/pristine/ee"
|
|
||||||
#define FILE_DIR ".svn/pristine/ef"
|
|
||||||
#define FILE_DIR ".svn/pristine/f0"
|
|
||||||
#define FILE_DIR ".svn/pristine/f1"
|
|
||||||
#define FILE_DIR ".svn/pristine/f2"
|
|
||||||
#define FILE_DIR ".svn/pristine/f3"
|
|
||||||
#define FILE_DIR ".svn/pristine/f4"
|
|
||||||
#define FILE_DIR ".svn/pristine/f5"
|
|
||||||
#define FILE_DIR ".svn/pristine/f6"
|
|
||||||
#define FILE_DIR ".svn/pristine/f7"
|
|
||||||
#define FILE_DIR ".svn/pristine/f8"
|
|
||||||
#define FILE_DIR ".svn/pristine/f9"
|
|
||||||
#define FILE_DIR ".svn/pristine/fa"
|
|
||||||
#define FILE_DIR ".svn/pristine/fb"
|
|
||||||
#define FILE_DIR ".svn/pristine/fc"
|
|
||||||
#define FILE_DIR ".svn/pristine/fd"
|
|
||||||
#define FILE_DIR ".svn/pristine/fe"
|
|
||||||
#define FILE_DIR ".svn/pristine/ff"
|
|
||||||
#define FILE_DIR "bot"
|
|
||||||
#define FILE_DIR "bot/Marakov"
|
|
||||||
#define FILE_DIR "code"
|
#define FILE_DIR "code"
|
||||||
#define FILE_DIR "code/__HELPERS"
|
#define FILE_DIR "code/__HELPERS"
|
||||||
#define FILE_DIR "code/ATMOSPHERICS"
|
#define FILE_DIR "code/ATMOSPHERICS"
|
||||||
@@ -450,15 +190,6 @@
|
|||||||
#define FILE_DIR "code/WorkInProgress/mapload"
|
#define FILE_DIR "code/WorkInProgress/mapload"
|
||||||
#define FILE_DIR "code/WorkInProgress/organs"
|
#define FILE_DIR "code/WorkInProgress/organs"
|
||||||
#define FILE_DIR "code/WorkInProgress/virus2"
|
#define FILE_DIR "code/WorkInProgress/virus2"
|
||||||
#define FILE_DIR "config"
|
|
||||||
#define FILE_DIR "config/names"
|
|
||||||
#define FILE_DIR "data"
|
|
||||||
#define FILE_DIR "data/logs"
|
|
||||||
#define FILE_DIR "data/logs/2012"
|
|
||||||
#define FILE_DIR "data/logs/2012/10-October"
|
|
||||||
#define FILE_DIR "data/player_saves"
|
|
||||||
#define FILE_DIR "data/player_saves/g"
|
|
||||||
#define FILE_DIR "data/player_saves/g/giacomand"
|
|
||||||
#define FILE_DIR "html"
|
#define FILE_DIR "html"
|
||||||
#define FILE_DIR "icons"
|
#define FILE_DIR "icons"
|
||||||
#define FILE_DIR "icons/effects"
|
#define FILE_DIR "icons/effects"
|
||||||
@@ -473,7 +204,6 @@
|
|||||||
#define FILE_DIR "icons/obj/machines"
|
#define FILE_DIR "icons/obj/machines"
|
||||||
#define FILE_DIR "icons/obj/pipes"
|
#define FILE_DIR "icons/obj/pipes"
|
||||||
#define FILE_DIR "icons/pda_icons"
|
#define FILE_DIR "icons/pda_icons"
|
||||||
#define FILE_DIR "icons/PSD files"
|
|
||||||
#define FILE_DIR "icons/spideros_icons"
|
#define FILE_DIR "icons/spideros_icons"
|
||||||
#define FILE_DIR "icons/Testing"
|
#define FILE_DIR "icons/Testing"
|
||||||
#define FILE_DIR "icons/turf"
|
#define FILE_DIR "icons/turf"
|
||||||
@@ -482,7 +212,6 @@
|
|||||||
#define FILE_DIR "interface"
|
#define FILE_DIR "interface"
|
||||||
#define FILE_DIR "maps"
|
#define FILE_DIR "maps"
|
||||||
#define FILE_DIR "maps/RandomZLevels"
|
#define FILE_DIR "maps/RandomZLevels"
|
||||||
#define FILE_DIR "music"
|
|
||||||
#define FILE_DIR "sound"
|
#define FILE_DIR "sound"
|
||||||
#define FILE_DIR "sound/AI"
|
#define FILE_DIR "sound/AI"
|
||||||
#define FILE_DIR "sound/ambience"
|
#define FILE_DIR "sound/ambience"
|
||||||
@@ -496,18 +225,8 @@
|
|||||||
#define FILE_DIR "sound/violin"
|
#define FILE_DIR "sound/violin"
|
||||||
#define FILE_DIR "sound/voice"
|
#define FILE_DIR "sound/voice"
|
||||||
#define FILE_DIR "sound/weapons"
|
#define FILE_DIR "sound/weapons"
|
||||||
#define FILE_DIR "SQL"
|
|
||||||
#define FILE_DIR "tools"
|
#define FILE_DIR "tools"
|
||||||
#define FILE_DIR "tools/Redirector"
|
#define FILE_DIR "tools/Redirector"
|
||||||
#define FILE_DIR "tools/Runtime Condenser"
|
|
||||||
#define FILE_DIR "tools/UnstandardnessTestForDM"
|
|
||||||
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM"
|
|
||||||
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/bin"
|
|
||||||
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/bin/Debug"
|
|
||||||
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj"
|
|
||||||
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj/x86"
|
|
||||||
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj/x86/Debug"
|
|
||||||
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/Properties"
|
|
||||||
// END_FILE_DIR
|
// END_FILE_DIR
|
||||||
|
|
||||||
// BEGIN_PREFERENCES
|
// BEGIN_PREFERENCES
|
||||||
@@ -1101,6 +820,7 @@
|
|||||||
#include "code\modules\admin\admin.dm"
|
#include "code\modules\admin\admin.dm"
|
||||||
#include "code\modules\admin\admin_investigate.dm"
|
#include "code\modules\admin\admin_investigate.dm"
|
||||||
#include "code\modules\admin\admin_memo.dm"
|
#include "code\modules\admin\admin_memo.dm"
|
||||||
|
#include "code\modules\admin\admin_ranks.dm"
|
||||||
#include "code\modules\admin\admin_verbs.dm"
|
#include "code\modules\admin\admin_verbs.dm"
|
||||||
#include "code\modules\admin\banjob.dm"
|
#include "code\modules\admin\banjob.dm"
|
||||||
#include "code\modules\admin\create_mob.dm"
|
#include "code\modules\admin\create_mob.dm"
|
||||||
@@ -1112,10 +832,9 @@
|
|||||||
#include "code\modules\admin\newbanjob.dm"
|
#include "code\modules\admin\newbanjob.dm"
|
||||||
#include "code\modules\admin\player_notes.dm"
|
#include "code\modules\admin\player_notes.dm"
|
||||||
#include "code\modules\admin\player_panel.dm"
|
#include "code\modules\admin\player_panel.dm"
|
||||||
|
#include "code\modules\admin\topic.dm"
|
||||||
#include "code\modules\admin\ToRban.dm"
|
#include "code\modules\admin\ToRban.dm"
|
||||||
#include "code\modules\admin\DB ban\functions.dm"
|
#include "code\modules\admin\DB ban\functions.dm"
|
||||||
#include "code\modules\admin\permissionverbs\assignment.dm"
|
|
||||||
#include "code\modules\admin\permissionverbs\permissionedit.dm"
|
|
||||||
#include "code\modules\admin\verbs\adminhelp.dm"
|
#include "code\modules\admin\verbs\adminhelp.dm"
|
||||||
#include "code\modules\admin\verbs\adminjump.dm"
|
#include "code\modules\admin\verbs\adminjump.dm"
|
||||||
#include "code\modules\admin\verbs\adminpm.dm"
|
#include "code\modules\admin\verbs\adminpm.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user