mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 23:27:34 +01:00
[MIRROR] Remove hideous inline tab indentation, and bans it in contributing guidelines (#3394)
* Remove hideous inline tab indentation, and bans it in contributing guidelines * a Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
This commit is contained in:
co-authored by
Mothblocks
Gandalf2k15
parent
7635f198f4
commit
b332b46b65
@@ -180,13 +180,13 @@
|
||||
#define SDQL2_VALID_OPTION_TYPES list("proccall", "select", "priority", "autogc" , "sequential")
|
||||
#define SDQL2_VALID_OPTION_VALUES list("async", "blocking", "force_nulls", "skip_nulls", "high", "normal", "keep_alive" , "true")
|
||||
|
||||
#define SDQL2_OPTION_SELECT_OUTPUT_SKIP_NULLS (1<<0)
|
||||
#define SDQL2_OPTION_BLOCKING_CALLS (1<<1)
|
||||
#define SDQL2_OPTION_HIGH_PRIORITY (1<<2) //High priority SDQL query, allow using almost all of the tick.
|
||||
#define SDQL2_OPTION_DO_NOT_AUTOGC (1<<3)
|
||||
#define SDQL2_OPTION_SEQUENTIAL (1<<4)
|
||||
#define SDQL2_OPTION_SELECT_OUTPUT_SKIP_NULLS (1<<0)
|
||||
#define SDQL2_OPTION_BLOCKING_CALLS (1<<1)
|
||||
#define SDQL2_OPTION_HIGH_PRIORITY (1<<2) //High priority SDQL query, allow using almost all of the tick.
|
||||
#define SDQL2_OPTION_DO_NOT_AUTOGC (1<<3)
|
||||
#define SDQL2_OPTION_SEQUENTIAL (1<<4)
|
||||
|
||||
#define SDQL2_OPTIONS_DEFAULT (SDQL2_OPTION_SELECT_OUTPUT_SKIP_NULLS)
|
||||
#define SDQL2_OPTIONS_DEFAULT (SDQL2_OPTION_SELECT_OUTPUT_SKIP_NULLS)
|
||||
|
||||
#define SDQL2_IS_RUNNING (state == SDQL2_STATE_EXECUTING || state == SDQL2_STATE_SEARCHING || state == SDQL2_STATE_SWITCHING || state == SDQL2_STATE_PRESEARCH)
|
||||
#define SDQL2_HALT_CHECK if(!SDQL2_IS_RUNNING) {state = SDQL2_STATE_HALTING; return FALSE;};
|
||||
@@ -315,8 +315,8 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/sdql2_vv_all, new(null
|
||||
var/list/query_tree
|
||||
var/state = SDQL2_STATE_IDLE
|
||||
var/options = SDQL2_OPTIONS_DEFAULT
|
||||
var/superuser = FALSE //Run things like proccalls without using admin protections
|
||||
var/allow_admin_interact = TRUE //Allow admins to do things to this excluding varedit these two vars
|
||||
var/superuser = FALSE //Run things like proccalls without using admin protections
|
||||
var/allow_admin_interact = TRUE //Allow admins to do things to this excluding varedit these two vars
|
||||
var/static/id_assign = 1
|
||||
var/id = 0
|
||||
|
||||
@@ -431,11 +431,11 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/sdql2_vv_all, new(null
|
||||
if(!action_click)
|
||||
action_click = new(null, "INITIALIZNG", src)
|
||||
var/list/L = list()
|
||||
L[++L.len] = list("[id] ", "[delete_click.update("DELETE QUERY | STATE : [text_state()] | ALL/ELIG/FIN \
|
||||
L[++L.len] = list("[id] ", "[delete_click.update("DELETE QUERY | STATE : [text_state()] | ALL/ELIG/FIN \
|
||||
[islist(obj_count_all)? length(obj_count_all) : (isnull(obj_count_all)? "0" : obj_count_all)]/\
|
||||
[islist(obj_count_eligible)? length(obj_count_eligible) : (isnull(obj_count_eligible)? "0" : obj_count_eligible)]/\
|
||||
[islist(obj_count_finished)? length(obj_count_finished) : (isnull(obj_count_finished)? "0" : obj_count_finished)] - [get_query_text()]")]", REF(delete_click))
|
||||
L[++L.len] = list(" ", "[action_click.update("[SDQL2_IS_RUNNING? "HALT" : "RUN"]")]", REF(action_click))
|
||||
L[++L.len] = list(" ", "[action_click.update("[SDQL2_IS_RUNNING? "HALT" : "RUN"]")]", REF(action_click))
|
||||
return L
|
||||
|
||||
/datum/sdql2_query/proc/delete_click()
|
||||
@@ -735,7 +735,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/sdql2_vv_all, new(null
|
||||
text_list += " <font color='gray'>at</font> [T] [ADMIN_COORDJMP(T)]"
|
||||
a = T.loc
|
||||
else
|
||||
var/turf/final = get_turf(T) //Recursive, hopefully?
|
||||
var/turf/final = get_turf(T) //Recursive, hopefully?
|
||||
if(istype(final))
|
||||
text_list += " <font color='gray'>at</font> [final] [ADMIN_COORDJMP(final)]"
|
||||
a = final.loc
|
||||
|
||||
@@ -5,44 +5,44 @@
|
||||
|
||||
//////////
|
||||
//
|
||||
// query : select_query | delete_query | update_query | call_query | explain
|
||||
// explain : 'EXPLAIN' query
|
||||
// select_query : 'SELECT' object_selectors
|
||||
// delete_query : 'DELETE' object_selectors
|
||||
// update_query : 'UPDATE' object_selectors 'SET' assignments
|
||||
// call_query : 'CALL' variable 'ON' object_selectors // Note here: 'variable' does function calls. This simplifies parsing.
|
||||
// query : select_query | delete_query | update_query | call_query | explain
|
||||
// explain : 'EXPLAIN' query
|
||||
// select_query : 'SELECT' object_selectors
|
||||
// delete_query : 'DELETE' object_selectors
|
||||
// update_query : 'UPDATE' object_selectors 'SET' assignments
|
||||
// call_query : 'CALL' variable 'ON' object_selectors // Note here: 'variable' does function calls. This simplifies parsing.
|
||||
//
|
||||
// select_item : '*' | object_type
|
||||
// select_item : '*' | object_type
|
||||
//
|
||||
// object_selectors : select_item [('FROM' | 'IN') from_item] [modifier_list]
|
||||
// modifier_list : ('WHERE' bool_expression | 'MAP' expression) [modifier_list]
|
||||
//
|
||||
// from_item : 'world' | expression
|
||||
// from_item : 'world' | expression
|
||||
//
|
||||
// call_function : <function name> '(' [expression_list] ')'
|
||||
// call_function : <function name> '(' [expression_list] ')'
|
||||
//
|
||||
// object_type : <type path>
|
||||
// object_type : <type path>
|
||||
//
|
||||
// assignments : assignment [',' assignments]
|
||||
// assignment : <variable name> '=' expression
|
||||
// variable : <variable name> | variable '.' variable | variable '[' <list index> ']' | '{' <ref as hex number> '}' | '(' expression ')' | call_function
|
||||
// assignments : assignment [',' assignments]
|
||||
// assignment : <variable name> '=' expression
|
||||
// variable : <variable name> | variable '.' variable | variable '[' <list index> ']' | '{' <ref as hex number> '}' | '(' expression ')' | call_function
|
||||
//
|
||||
// bool_expression : expression comparator expression [bool_operator bool_expression]
|
||||
// expression : ( unary_expression | '(' expression ')' | value ) [binary_operator expression]
|
||||
// expression_list : expression [',' expression_list]
|
||||
// unary_expression : unary_operator ( unary_expression | value )
|
||||
// bool_expression : expression comparator expression [bool_operator bool_expression]
|
||||
// expression : ( unary_expression | '(' expression ')' | value ) [binary_operator expression]
|
||||
// expression_list : expression [',' expression_list]
|
||||
// unary_expression : unary_operator ( unary_expression | value )
|
||||
//
|
||||
// comparator : '=' | '==' | '!=' | '<>' | '<' | '<=' | '>' | '>='
|
||||
// value : variable | string | number | 'null' | object_type | array | selectors_array
|
||||
// unary_operator : '!' | '-' | '~'
|
||||
// binary_operator : comparator | '+' | '-' | '/' | '*' | '&' | '|' | '^' | '%'
|
||||
// bool_operator : 'AND' | '&&' | 'OR' | '||'
|
||||
// comparator : '=' | '==' | '!=' | '<>' | '<' | '<=' | '>' | '>='
|
||||
// value : variable | string | number | 'null' | object_type | array | selectors_array
|
||||
// unary_operator : '!' | '-' | '~'
|
||||
// binary_operator : comparator | '+' | '-' | '/' | '*' | '&' | '|' | '^' | '%'
|
||||
// bool_operator : 'AND' | '&&' | 'OR' | '||'
|
||||
//
|
||||
// array : '[' expression_list ']'
|
||||
// selectors_array : '@[' object_selectors ']'
|
||||
// array : '[' expression_list ']'
|
||||
// selectors_array : '@[' object_selectors ']'
|
||||
//
|
||||
// string : ''' <some text> ''' | '"' <some text > '"'
|
||||
// number : <some digits>
|
||||
// string : ''' <some text> ''' | '"' <some text > '"'
|
||||
// number : <some digits>
|
||||
//
|
||||
//////////
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
if(length(options))
|
||||
node["options"] = options
|
||||
|
||||
//option_assignment: query_option '=' define
|
||||
//option_assignment: query_option '=' define
|
||||
/datum/sdql_parser/proc/option_assignment(i, list/node, list/assignment_list = list())
|
||||
var/type = tokenl(i)
|
||||
if(!(type in SDQL2_VALID_OPTION_TYPES))
|
||||
@@ -122,7 +122,7 @@
|
||||
|
||||
return i
|
||||
|
||||
//query: select_query | delete_query | update_query
|
||||
//query: select_query | delete_query | update_query
|
||||
/datum/sdql_parser/proc/query(i, list/node)
|
||||
query_type = tokenl(i)
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
query(i + 1, node["explain"])
|
||||
|
||||
|
||||
// select_query: 'SELECT' object_selectors
|
||||
// select_query: 'SELECT' object_selectors
|
||||
/datum/sdql_parser/proc/select_query(i, list/node)
|
||||
var/list/select = list()
|
||||
i = object_selectors(i + 1, select)
|
||||
@@ -154,7 +154,7 @@
|
||||
return i
|
||||
|
||||
|
||||
//delete_query: 'DELETE' object_selectors
|
||||
//delete_query: 'DELETE' object_selectors
|
||||
/datum/sdql_parser/proc/delete_query(i, list/node)
|
||||
var/list/select = list()
|
||||
i = object_selectors(i + 1, select)
|
||||
@@ -164,7 +164,7 @@
|
||||
return i
|
||||
|
||||
|
||||
//update_query: 'UPDATE' object_selectors 'SET' assignments
|
||||
//update_query: 'UPDATE' object_selectors 'SET' assignments
|
||||
/datum/sdql_parser/proc/update_query(i, list/node)
|
||||
var/list/select = list()
|
||||
i = object_selectors(i + 1, select)
|
||||
@@ -182,7 +182,7 @@
|
||||
return i
|
||||
|
||||
|
||||
//call_query: 'CALL' call_function ['ON' object_selectors]
|
||||
//call_query: 'CALL' call_function ['ON' object_selectors]
|
||||
/datum/sdql_parser/proc/call_query(i, list/node)
|
||||
var/list/func = list()
|
||||
i = variable(i + 1, func) // Yes technically does anything variable() matches but I don't care, if admins fuck up this badly then they shouldn't be allowed near SDQL.
|
||||
@@ -244,7 +244,7 @@
|
||||
|
||||
return i
|
||||
|
||||
//assignments: assignment, [',' assignments]
|
||||
//assignments: assignment, [',' assignments]
|
||||
/datum/sdql_parser/proc/assignments(i, list/node)
|
||||
i = assignment(i, node)
|
||||
|
||||
@@ -254,7 +254,7 @@
|
||||
return i
|
||||
|
||||
|
||||
//select_item: '*' | select_function | object_type
|
||||
//select_item: '*' | select_function | object_type
|
||||
/datum/sdql_parser/proc/select_item(i, list/node)
|
||||
if (token(i) == "*")
|
||||
node += "*"
|
||||
@@ -294,7 +294,7 @@
|
||||
|
||||
return i
|
||||
|
||||
//from_item: 'world' | expression
|
||||
//from_item: 'world' | expression
|
||||
/datum/sdql_parser/proc/from_item(i, list/node)
|
||||
if(token(i) == "world")
|
||||
node += "world"
|
||||
@@ -306,7 +306,7 @@
|
||||
return i
|
||||
|
||||
|
||||
//bool_expression: expression [bool_operator bool_expression]
|
||||
//bool_expression: expression [bool_operator bool_expression]
|
||||
/datum/sdql_parser/proc/bool_expression(i, list/node)
|
||||
|
||||
var/list/bool = list()
|
||||
@@ -321,7 +321,7 @@
|
||||
return i
|
||||
|
||||
|
||||
//assignment: <variable name> '=' expression
|
||||
//assignment: <variable name> '=' expression
|
||||
/datum/sdql_parser/proc/assignment(i, list/node, list/assignment_list = list())
|
||||
assignment_list += token(i)
|
||||
|
||||
@@ -340,7 +340,7 @@
|
||||
return i
|
||||
|
||||
|
||||
//variable: <variable name> | variable '.' variable | variable '[' <list index> ']' | '{' <ref as hex number> '}' | '(' expression ')' | call_function
|
||||
//variable: <variable name> | variable '.' variable | variable '[' <list index> ']' | '{' <ref as hex number> '}' | '(' expression ')' | call_function
|
||||
/datum/sdql_parser/proc/variable(i, list/node)
|
||||
var/list/L = list(token(i))
|
||||
node[++node.len] = L
|
||||
@@ -388,7 +388,7 @@
|
||||
return i
|
||||
|
||||
|
||||
//object_type: <type path>
|
||||
//object_type: <type path>
|
||||
/datum/sdql_parser/proc/object_type(i, list/node)
|
||||
|
||||
if(token(i)[1] != "/")
|
||||
@@ -403,7 +403,7 @@
|
||||
return i + 1
|
||||
|
||||
|
||||
//comparator: '=' | '==' | '!=' | '<>' | '<' | '<=' | '>' | '>='
|
||||
//comparator: '=' | '==' | '!=' | '<>' | '<' | '<=' | '>' | '>='
|
||||
/datum/sdql_parser/proc/comparator(i, list/node)
|
||||
|
||||
if(token(i) in list("=", "==", "!=", "<>", "<", "<=", ">", ">="))
|
||||
@@ -415,7 +415,7 @@
|
||||
return i + 1
|
||||
|
||||
|
||||
//bool_operator: 'AND' | '&&' | 'OR' | '||'
|
||||
//bool_operator: 'AND' | '&&' | 'OR' | '||'
|
||||
/datum/sdql_parser/proc/bool_operator(i, list/node)
|
||||
|
||||
if(tokenl(i) in list("and", "or", "&&", "||"))
|
||||
@@ -427,7 +427,7 @@
|
||||
return i + 1
|
||||
|
||||
|
||||
//string: ''' <some text> ''' | '"' <some text > '"'
|
||||
//string: ''' <some text> ''' | '"' <some text > '"'
|
||||
/datum/sdql_parser/proc/string(i, list/node)
|
||||
|
||||
if(token(i)[1] in list("'", "\""))
|
||||
@@ -438,7 +438,7 @@
|
||||
|
||||
return i + 1
|
||||
|
||||
//array: '[' expression_list ']'
|
||||
//array: '[' expression_list ']'
|
||||
/datum/sdql_parser/proc/array(i, list/node)
|
||||
// Arrays get turned into this: list("[", list(exp_1a = exp_1b, ...), ...), "[" is to mark the next node as an array.
|
||||
if(token(i)[1] != "\[")
|
||||
@@ -491,7 +491,7 @@
|
||||
|
||||
return i + 1
|
||||
|
||||
//selectors_array: '@[' object_selectors ']'
|
||||
//selectors_array: '@[' object_selectors ']'
|
||||
/datum/sdql_parser/proc/selectors_array(i, list/node)
|
||||
if(token(i) == "@\[")
|
||||
node += token(i++)
|
||||
@@ -508,7 +508,7 @@
|
||||
|
||||
return i + 1
|
||||
|
||||
//call_function: <function name> ['(' [arguments] ')']
|
||||
//call_function: <function name> ['(' [arguments] ')']
|
||||
/datum/sdql_parser/proc/call_function(i, list/node, list/arguments)
|
||||
if(length(tokenl(i)))
|
||||
var/procname = ""
|
||||
@@ -538,7 +538,7 @@
|
||||
return i + 1
|
||||
|
||||
|
||||
//expression: ( unary_expression | value ) [binary_operator expression]
|
||||
//expression: ( unary_expression | value ) [binary_operator expression]
|
||||
/datum/sdql_parser/proc/expression(i, list/node)
|
||||
|
||||
if(token(i) in unary_operators)
|
||||
@@ -563,7 +563,7 @@
|
||||
return i
|
||||
|
||||
|
||||
//unary_expression: unary_operator ( unary_expression | value )
|
||||
//unary_expression: unary_operator ( unary_expression | value )
|
||||
/datum/sdql_parser/proc/unary_expression(i, list/node)
|
||||
|
||||
if(token(i) in unary_operators)
|
||||
@@ -587,7 +587,7 @@
|
||||
return i
|
||||
|
||||
|
||||
//binary_operator: comparator | '+' | '-' | '/' | '*' | '&' | '|' | '^' | '%'
|
||||
//binary_operator: comparator | '+' | '-' | '/' | '*' | '&' | '|' | '^' | '%'
|
||||
/datum/sdql_parser/proc/binary_operator(i, list/node)
|
||||
|
||||
if(token(i) in (binary_operators + comparators))
|
||||
@@ -599,7 +599,7 @@
|
||||
return i + 1
|
||||
|
||||
|
||||
//value: variable | string | number | 'null' | object_type | array | selectors_array
|
||||
//value: variable | string | number | 'null' | object_type | array | selectors_array
|
||||
/datum/sdql_parser/proc/value(i, list/node)
|
||||
if(token(i) == "null")
|
||||
node += "null"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/client/var/adminhelptimerid = 0 //a timer id for returning the ahelp verb
|
||||
/client/var/datum/admin_help/current_ticket //the current ticket the (usually) not-admin client is dealing with
|
||||
/client/var/adminhelptimerid = 0 //a timer id for returning the ahelp verb
|
||||
/client/var/datum/admin_help/current_ticket //the current ticket the (usually) not-admin client is dealing with
|
||||
|
||||
//
|
||||
//TICKET MANAGER
|
||||
@@ -170,12 +170,12 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
var/opened_at
|
||||
var/closed_at
|
||||
|
||||
var/client/initiator //semi-misnomer, it's the person who ahelped/was bwoinked
|
||||
var/client/initiator //semi-misnomer, it's the person who ahelped/was bwoinked
|
||||
var/initiator_ckey
|
||||
var/initiator_key_name
|
||||
var/heard_by_no_admins = FALSE
|
||||
|
||||
var/list/_interactions //use AddInteraction() or, preferably, admin_ticket_log()
|
||||
var/list/_interactions //use AddInteraction() or, preferably, admin_ticket_log()
|
||||
|
||||
var/obj/effect/statclick/ahelp/statclick
|
||||
|
||||
@@ -205,7 +205,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
initiator = C
|
||||
initiator_ckey = initiator.ckey
|
||||
initiator_key_name = key_name(initiator, FALSE, TRUE)
|
||||
if(initiator.current_ticket) //This is a bug
|
||||
if(initiator.current_ticket) //This is a bug
|
||||
stack_trace("Multiple ahelp current_tickets")
|
||||
initiator.current_ticket.AddInteraction("Ticket erroneously left open by code")
|
||||
initiator.current_ticket.Close()
|
||||
@@ -339,7 +339,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
log_admin_private(msg)
|
||||
SSblackbox.LogAhelp(id, "Reopened", "Reopened by [usr.key]", usr.ckey)
|
||||
SSblackbox.record_feedback("tally", "ahelp_stats", 1, "reopened")
|
||||
TicketPanel() //can only be done from here, so refresh it
|
||||
TicketPanel() //can only be done from here, so refresh it
|
||||
|
||||
//private
|
||||
/datum/admin_help/proc/RemoveActive()
|
||||
@@ -498,7 +498,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
var/msg = "Ticket [TicketHref("#[id]")] titled [name] by [key_name_admin(usr)]"
|
||||
message_admins(msg)
|
||||
log_admin_private(msg)
|
||||
TicketPanel() //we have to be here to do this
|
||||
TicketPanel() //we have to be here to do this
|
||||
|
||||
//Forwarded action from admin/Topic
|
||||
/datum/admin_help/proc/Action(action)
|
||||
@@ -564,7 +564,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
set category = "Admin"
|
||||
set name = "Adminhelp"
|
||||
|
||||
if(GLOB.say_disabled) //This is here to try to identify lag problems
|
||||
if(GLOB.say_disabled) //This is here to try to identify lag problems
|
||||
to_chat(usr, "<span class='danger'>Speech is currently admin-disabled.</span>", confidential = TRUE)
|
||||
return
|
||||
|
||||
@@ -610,7 +610,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
C.current_ticket.AddInteractionPlayer(message)
|
||||
// SKYRAT EDIT ADDITION END
|
||||
return C.current_ticket
|
||||
if(istext(what)) //ckey
|
||||
if(istext(what)) //ckey
|
||||
var/datum/admin_help/AH = GLOB.ahelp_tickets.CKey2ActiveTicket(what)
|
||||
if(AH)
|
||||
AH.AddInteraction(message)
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
confidential = TRUE)
|
||||
return
|
||||
|
||||
if(!holder && !current_ticket) //no ticket? https://www.youtube.com/watch?v=iHSPf6x1Fdo
|
||||
if(!holder && !current_ticket) //no ticket? https://www.youtube.com/watch?v=iHSPf6x1Fdo
|
||||
to_chat(src,
|
||||
type = MESSAGE_TYPE_ADMINPM,
|
||||
html = "<span class='danger'>You can no longer reply to this ticket, please open another one by using the Adminhelp verb if need be.</span>",
|
||||
@@ -132,7 +132,7 @@
|
||||
recipient_ticket = recipient.current_ticket
|
||||
|
||||
if(external)
|
||||
if(!externalreplyamount) //to prevent people from spamming irc/discord
|
||||
if(!externalreplyamount) //to prevent people from spamming irc/discord
|
||||
return
|
||||
if(!msg)
|
||||
msg = input(src,"Message:", "Private message to Administrator") as message|null
|
||||
@@ -226,11 +226,11 @@
|
||||
var/interaction_message = "<font color='purple'>PM from-<b>[key_name(src, recipient, 1)]</b> to-<b>[key_name(recipient, src, 1)]</b>: [keywordparsedmsg]</font>"
|
||||
// admin_ticket_log(src, interaction_message) // SKYRAT EDIT ORIGINAL
|
||||
admin_ticket_log(src, interaction_message, FALSE) // SKYRAT EDIT CHANGE -- Player ticket viewing
|
||||
if(recipient != src) //reeee
|
||||
if(recipient != src)//reeee
|
||||
// admin_ticket_log(recipient, interaction_message) // SKYRAT EDIT ORIGINAL
|
||||
admin_ticket_log(recipient, interaction_message, FALSE) // SKYRAT EDIT CHANGE -- Player ticket viewing
|
||||
SSblackbox.LogAhelp(current_ticket.id, "Reply", msg, recipient.ckey, src.ckey)
|
||||
else //recipient is an admin but sender is not
|
||||
else //recipient is an admin but sender is not
|
||||
var/replymsg = "Reply PM from-<b>[key_name(src, recipient, 1)]</b>: <span class='linkify'>[keywordparsedmsg]</span>"
|
||||
// admin_ticket_log(src, "<font color='red'>[replymsg]</font>") // SKYRAT EDIT ORIGINAL
|
||||
admin_ticket_log(src, "<font color='red'>[replymsg]</font>", FALSE) // SKYRAT EDIT CHANGE -- Player ticket viewing
|
||||
@@ -249,7 +249,7 @@
|
||||
SEND_SOUND(recipient, sound('sound/effects/adminhelp.ogg'))
|
||||
|
||||
else
|
||||
if(holder) //sender is an admin but recipient is not. Do BIG RED TEXT
|
||||
if(holder) //sender is an admin but recipient is not. Do BIG RED TEXT
|
||||
var/already_logged = FALSE
|
||||
if(!recipient.current_ticket)
|
||||
//new /datum/admin_help(msg, recipient, TRUE) //ORIGINAL
|
||||
@@ -298,7 +298,7 @@
|
||||
if(CONFIG_GET(flag/popup_admin_pm))
|
||||
INVOKE_ASYNC(src, .proc/popup_admin_pm, recipient, msg)
|
||||
|
||||
else //neither are admins
|
||||
else //neither are admins
|
||||
if(!current_ticket)
|
||||
to_chat(src,
|
||||
type = MESSAGE_TYPE_ADMINPM,
|
||||
@@ -323,7 +323,7 @@
|
||||
log_admin_private("PM: [key_name(src)]->[key_name(recipient)]: [rawmsg]")
|
||||
//we don't use message_admins here because the sender/receiver might get it too
|
||||
for(var/client/X in GLOB.admins)
|
||||
if(X.key!=key && X.key!=recipient.key) //check client/X is an admin and isn't the sender or recipient
|
||||
if(X.key!=key && X.key!=recipient.key) //check client/X is an admin and isn't the sender or recipient
|
||||
to_chat(X,
|
||||
type = MESSAGE_TYPE_ADMINPM,
|
||||
html = "<span class='notice'><B>PM: [key_name(src, X, 0)]->[key_name(recipient, X, 0)]:</B> [keywordparsedmsg]</span>" ,
|
||||
@@ -332,12 +332,12 @@
|
||||
/client/proc/popup_admin_pm(client/recipient, msg)
|
||||
var/sender = src
|
||||
var/sendername = key
|
||||
var/reply = input(recipient, msg,"Admin PM from-[sendername]", "") as message|null //show message and await a reply
|
||||
var/reply = input(recipient, msg,"Admin PM from-[sendername]", "") as message|null //show message and await a reply
|
||||
if(recipient && reply)
|
||||
if(sender)
|
||||
recipient.cmd_admin_pm(sender,reply) //sender is still about, let's reply to them
|
||||
recipient.cmd_admin_pm(sender,reply) //sender is still about, let's reply to them
|
||||
else
|
||||
adminhelp(reply) //sender has left, adminhelp instead
|
||||
adminhelp(reply) //sender has left, adminhelp instead
|
||||
|
||||
#define TGS_AHELP_USAGE "Usage: ticket <close|resolve|icissue|reject|reopen \[ticket #\]|list>"
|
||||
/proc/TgsPm(target,msg,sender)
|
||||
@@ -451,6 +451,6 @@
|
||||
i = 0
|
||||
var/stealth = "@[num2text(num)]"
|
||||
GLOB.stealthminID["IRCKEY"] = stealth
|
||||
return stealth
|
||||
return stealth
|
||||
|
||||
#undef EXTERNALREPLYCOUNT
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
borg.radio.keyslot.independent = FALSE
|
||||
message_admins("[key_name_admin(user)] removed the [channel] radio channel from [ADMIN_LOOKUPFLW(borg)].")
|
||||
log_admin("[key_name(user)] removed the [channel] radio channel from [key_name(borg)].")
|
||||
else // We're adding a channel
|
||||
else // We're adding a channel
|
||||
if (!borg.radio.keyslot) // Assert that an encryption key exists
|
||||
borg.radio.keyslot = new (borg.radio)
|
||||
borg.radio.keyslot.channels[channel] = 1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/client/proc/cinematic()
|
||||
set name = "Cinematic"
|
||||
set category = "Admin.Fun"
|
||||
set desc = "Shows a cinematic." // Intended for testing but I thought it might be nice for events on the rare occasion Feel free to comment it out if it's not wanted.
|
||||
set desc = "Shows a cinematic." // Intended for testing but I thought it might be nice for events on the rare occasion Feel free to comment it out if it's not wanted.
|
||||
set hidden = TRUE
|
||||
if(!SSticker)
|
||||
return
|
||||
|
||||
@@ -748,7 +748,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(src)] cleared dynamic transit space.</span>")
|
||||
SSblackbox.record_feedback("tally", "admin_verb", 1, "Clear Dynamic Transit") // If...
|
||||
log_admin("[key_name(src)] cleared dynamic transit space.")
|
||||
SSmapping.wipe_reservations() //this goes after it's logged, incase something horrible happens.
|
||||
SSmapping.wipe_reservations() //this goes after it's logged, incase something horrible happens.
|
||||
|
||||
/client/proc/toggle_medal_disable()
|
||||
set category = "Debug"
|
||||
@@ -815,9 +815,9 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
set desc = "Shows tracked profiling info from code lines that support it"
|
||||
|
||||
var/sortlist = list(
|
||||
"Avg time" = /proc/cmp_profile_avg_time_dsc,
|
||||
"Total Time" = /proc/cmp_profile_time_dsc,
|
||||
"Call Count" = /proc/cmp_profile_count_dsc
|
||||
"Avg time" = /proc/cmp_profile_avg_time_dsc,
|
||||
"Total Time" = /proc/cmp_profile_time_dsc,
|
||||
"Call Count" = /proc/cmp_profile_count_dsc
|
||||
)
|
||||
var/sort = input(src, "Sort type?", "Sort Type", "Avg time") as null|anything in sortlist
|
||||
if (!sort)
|
||||
|
||||
@@ -20,18 +20,18 @@
|
||||
//- Check if the area has too much empty space. If so, make it smaller and replace the rest with maintenance tunnels.
|
||||
|
||||
GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list(
|
||||
/client/proc/camera_view, //-errorage
|
||||
/client/proc/sec_camera_report, //-errorage
|
||||
/client/proc/intercom_view, //-errorage
|
||||
/client/proc/camera_view, //-errorage
|
||||
/client/proc/sec_camera_report, //-errorage
|
||||
/client/proc/intercom_view, //-errorage
|
||||
/client/proc/air_status, //Air things
|
||||
/client/proc/Cell, //More air things
|
||||
/client/proc/atmosscan, //check plumbing
|
||||
/client/proc/powerdebug, //check power
|
||||
/client/proc/count_objects_on_z_level,
|
||||
/client/proc/count_objects_all,
|
||||
/client/proc/cmd_assume_direct_control, //-errorage
|
||||
/client/proc/cmd_assume_direct_control, //-errorage
|
||||
/client/proc/cmd_give_direct_control,
|
||||
/client/proc/set_server_fps, //allows you to set the ticklag.
|
||||
/client/proc/set_server_fps, //allows you to set the ticklag.
|
||||
/client/proc/cmd_admin_grantfullaccess,
|
||||
/client/proc/cmd_admin_areatest_all,
|
||||
/client/proc/cmd_admin_areatest_station,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/// If we spawn an ERT with the "choose experienced leader" option, select the leader from the top X playtimes
|
||||
#define ERT_EXPERIENCED_LEADER_CHOOSE_TOP 3
|
||||
#define ERT_EXPERIENCED_LEADER_CHOOSE_TOP 3
|
||||
|
||||
/client/proc/one_click_antag()
|
||||
set name = "Create Antagonist"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
set category = "IC"
|
||||
set name = "Pray"
|
||||
|
||||
if(GLOB.say_disabled) //This is here to try to identify lag problems
|
||||
if(GLOB.say_disabled) //This is here to try to identify lag problems
|
||||
to_chat(usr, "<span class='danger'>Speech is currently admin-disabled.</span>", confidential = TRUE)
|
||||
return
|
||||
|
||||
|
||||
@@ -288,13 +288,13 @@
|
||||
var/list/candidates = list()
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
if(M.stat != DEAD)
|
||||
continue //we are not dead!
|
||||
continue //we are not dead!
|
||||
if(!(ROLE_ALIEN in M.client.prefs.be_special))
|
||||
continue //we don't want to be an alium
|
||||
continue //we don't want to be an alium
|
||||
if(M.client.is_afk())
|
||||
continue //we are afk
|
||||
continue //we are afk
|
||||
if(M.mind && M.mind.current && M.mind.current.stat != DEAD)
|
||||
continue //we have a live body we are tied to
|
||||
continue //we have a live body we are tied to
|
||||
candidates += M.ckey
|
||||
if(candidates.len)
|
||||
ckey = input("Pick the player you want to respawn as a xeno.", "Suitable Candidates") as null|anything in sortKey(candidates)
|
||||
@@ -356,7 +356,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
to_chat(usr, "<font color='red'>There is no active key like that in the game or the person is not currently a ghost.</font>", confidential = TRUE)
|
||||
return
|
||||
|
||||
if(G_found.mind && !G_found.mind.active) //mind isn't currently in use by someone/something
|
||||
if(G_found.mind && !G_found.mind.active) //mind isn't currently in use by someone/something
|
||||
//Check if they were an alien
|
||||
if(G_found.mind.assigned_role == ROLE_ALIEN)
|
||||
if(alert("This character appears to have been an alien. Would you like to respawn them as such?",,"Yes","No")=="Yes")
|
||||
@@ -384,34 +384,34 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
SSjob.SendToLateJoin(new_xeno, FALSE)
|
||||
|
||||
//Now to give them their mind back.
|
||||
G_found.mind.transfer_to(new_xeno) //be careful when doing stuff like this! I've already checked the mind isn't in use
|
||||
G_found.mind.transfer_to(new_xeno) //be careful when doing stuff like this! I've already checked the mind isn't in use
|
||||
new_xeno.key = G_found.key
|
||||
to_chat(new_xeno, "You have been fully respawned. Enjoy the game.", confidential = TRUE)
|
||||
var/msg = "<span class='adminnotice'>[key_name_admin(usr)] has respawned [new_xeno.key] as a filthy xeno.</span>"
|
||||
message_admins(msg)
|
||||
admin_ticket_log(new_xeno, msg)
|
||||
return //all done. The ghost is auto-deleted
|
||||
return //all done. The ghost is auto-deleted
|
||||
|
||||
//check if they were a monkey
|
||||
else if(findtext(G_found.real_name,"monkey"))
|
||||
if(alert("This character appears to have been a monkey. Would you like to respawn them as such?",,"Yes","No")=="Yes")
|
||||
var/mob/living/carbon/human/species/monkey/new_monkey = new
|
||||
SSjob.SendToLateJoin(new_monkey)
|
||||
G_found.mind.transfer_to(new_monkey) //be careful when doing stuff like this! I've already checked the mind isn't in use
|
||||
G_found.mind.transfer_to(new_monkey) //be careful when doing stuff like this! I've already checked the mind isn't in use
|
||||
new_monkey.key = G_found.key
|
||||
to_chat(new_monkey, "You have been fully respawned. Enjoy the game.", confidential = TRUE)
|
||||
var/msg = "<span class='adminnotice'>[key_name_admin(usr)] has respawned [new_monkey.key] as a filthy monkey.</span>"
|
||||
message_admins(msg)
|
||||
admin_ticket_log(new_monkey, msg)
|
||||
return //all done. The ghost is auto-deleted
|
||||
return //all done. The ghost is auto-deleted
|
||||
|
||||
|
||||
//Ok, it's not a xeno or a monkey. So, spawn a human.
|
||||
var/mob/living/carbon/human/new_character = new//The mob being spawned.
|
||||
SSjob.SendToLateJoin(new_character)
|
||||
|
||||
var/datum/data/record/record_found //Referenced to later to either randomize or not randomize the character.
|
||||
if(G_found.mind && !G_found.mind.active) //mind isn't currently in use by someone/something
|
||||
var/datum/data/record/record_found //Referenced to later to either randomize or not randomize the character.
|
||||
if(G_found.mind && !G_found.mind.active) //mind isn't currently in use by someone/something
|
||||
/*Try and locate a record for the person being respawned through GLOB.data_core.
|
||||
This isn't an exact science but it does the trick more often than not.*/
|
||||
var/id = md5("[G_found.real_name][G_found.mind.assigned_role]")
|
||||
@@ -432,7 +432,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
new_character.name = new_character.real_name
|
||||
|
||||
if(G_found.mind && !G_found.mind.active)
|
||||
G_found.mind.transfer_to(new_character) //be careful when doing stuff like this! I've already checked the mind isn't in use
|
||||
G_found.mind.transfer_to(new_character) //be careful when doing stuff like this! I've already checked the mind isn't in use
|
||||
else
|
||||
new_character.mind_initialize()
|
||||
if(!new_character.mind.assigned_role)
|
||||
@@ -729,7 +729,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
view_size.resetToDefault(getScreenSize(prefs.widescreenpref))
|
||||
|
||||
log_admin("[key_name(usr)] changed their view range to [view].")
|
||||
//message_admins("\blue [key_name_admin(usr)] changed their view range to [view].") //why? removed by order of XSI
|
||||
//message_admins("\blue [key_name_admin(usr)] changed their view range to [view].") //why? removed by order of XSI
|
||||
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Change View Range", "[view]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -1178,7 +1178,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
log_game("[key_name(usr)] triggered a CentCom recall, with the message of: [message]")
|
||||
SSshuttle.centcom_recall(SSshuttle.emergency.timer, message)
|
||||
|
||||
/client/proc/cmd_admin_check_player_exp() //Allows admins to determine who the newer players are.
|
||||
/client/proc/cmd_admin_check_player_exp() //Allows admins to determine who the newer players are.
|
||||
set category = "Admin"
|
||||
set name = "Player Playtime"
|
||||
if(!check_rights(R_ADMIN))
|
||||
|
||||
Reference in New Issue
Block a user