Merge branch 'master' into upstream-merge-26965
This commit is contained in:
@@ -24,6 +24,23 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
QDEL_NULL(cstatclick)
|
||||
QDEL_NULL(rstatclick)
|
||||
return ..()
|
||||
|
||||
/datum/admin_help_tickets/proc/TicketByID(id)
|
||||
var/list/lists = list(active_tickets, closed_tickets, resolved_tickets)
|
||||
for(var/I in lists)
|
||||
for(var/J in I)
|
||||
var/datum/admin_help/AH = J
|
||||
if(AH.id == id)
|
||||
return J
|
||||
|
||||
/datum/admin_help_tickets/proc/TicketsByCKey(ckey)
|
||||
. = list()
|
||||
var/list/lists = list(active_tickets, closed_tickets, resolved_tickets)
|
||||
for(var/I in lists)
|
||||
for(var/J in I)
|
||||
var/datum/admin_help/AH = J
|
||||
if(AH.initiator_ckey == ckey)
|
||||
. += AH
|
||||
|
||||
//private
|
||||
/datum/admin_help_tickets/proc/ListInsert(datum/admin_help/new_ticket)
|
||||
|
||||
@@ -203,19 +203,19 @@
|
||||
|
||||
if(irc)
|
||||
log_admin_private("PM: [key_name(src)]->IRC: [rawmsg]")
|
||||
for(var/client/X in GLOB.admins)
|
||||
to_chat(X, "<B><font color='blue'>PM: [key_name(src, X, 0)]->IRC:</B> \blue [keywordparsedmsg]</font>" )
|
||||
for(var/client/X in GLOB.admins)
|
||||
to_chat(X, "<font color='blue'><B>PM: [key_name(src, X, 0)]->IRC:</B> [keywordparsedmsg]</font>")
|
||||
else
|
||||
window_flash(recipient, ignorepref = TRUE)
|
||||
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
|
||||
to_chat(X, "<B><font color='blue'>PM: [key_name(src, X, 0)]->[key_name(recipient, X, 0)]:</B> \blue [keywordparsedmsg]</font>" )
|
||||
|
||||
to_chat(X, "<font color='blue'><B>PM: [key_name(src, X, 0)]->[key_name(recipient, X, 0)]:</B> [keywordparsedmsg]</font>" )
|
||||
|
||||
|
||||
|
||||
#define IRC_AHELP_USAGE "Usage: ticket <close|resolve|icissue|reject|reopen \[ticket #\]|list>"
|
||||
/proc/IrcPm(target,msg,sender)
|
||||
var/client/C = GLOB.directory[target]
|
||||
|
||||
@@ -225,7 +225,7 @@
|
||||
var/list/splits = splittext(compliant_msg, " ")
|
||||
if(splits.len && splits[1] == "ticket")
|
||||
if(splits.len < 2)
|
||||
return "Usage: ticket <close|resolve|icissue|reject>"
|
||||
return IRC_AHELP_USAGE
|
||||
switch(splits[2])
|
||||
if("close")
|
||||
if(ticket)
|
||||
@@ -243,8 +243,36 @@
|
||||
if(ticket)
|
||||
ticket.Reject(irc_tagged)
|
||||
return "Ticket #[ticket.id] successfully rejected"
|
||||
if("reopen")
|
||||
if(ticket)
|
||||
return "Error: [target] already has ticket #[ticket.id] open"
|
||||
var/fail = splits.len < 3 ? null : -1
|
||||
if(!isnull(fail))
|
||||
fail = text2num(splits[3])
|
||||
if(isnull(fail))
|
||||
return "Error: No/Invalid ticket id specified. [IRC_AHELP_USAGE]"
|
||||
var/datum/admin_help/AH = GLOB.ahelp_tickets.TicketByID(fail)
|
||||
if(!AH)
|
||||
return "Error: Ticket #[fail] not found"
|
||||
if(AH.initiator_ckey != target)
|
||||
return "Error: Ticket #[fail] belongs to [AH.initiator_ckey]"
|
||||
AH.Reopen()
|
||||
return "Ticket #[ticket.id] successfully reopened"
|
||||
if("list")
|
||||
var/list/tickets = GLOB.ahelp_tickets.TicketsByCKey(target)
|
||||
if(!tickets.len)
|
||||
return "None"
|
||||
. = ""
|
||||
for(var/I in tickets)
|
||||
var/datum/admin_help/AH = I
|
||||
if(.)
|
||||
. += ", "
|
||||
if(AH == ticket)
|
||||
. += "Active: "
|
||||
. += "#[AH.id]"
|
||||
return
|
||||
else
|
||||
return "Usage: ticket <close|resolve|icissue|reject>"
|
||||
return IRC_AHELP_USAGE
|
||||
return "Error: Ticket could not be found"
|
||||
|
||||
var/static/stealthkey
|
||||
|
||||
@@ -114,47 +114,49 @@
|
||||
return
|
||||
|
||||
/datum/buildmode/proc/show_help(mob/user)
|
||||
var/list/dat = list()
|
||||
switch(mode)
|
||||
if(BASIC_BUILDMODE)
|
||||
to_chat(user, "\blue ***********************************************************")
|
||||
to_chat(user, "\blue Left Mouse Button = Construct / Upgrade")
|
||||
to_chat(user, "\blue Right Mouse Button = Deconstruct / Delete / Downgrade")
|
||||
to_chat(user, "\blue Left Mouse Button + ctrl = R-Window")
|
||||
to_chat(user, "\blue Left Mouse Button + alt = Airlock")
|
||||
to_chat(user, "")
|
||||
to_chat(user, "\blue Use the button in the upper left corner to")
|
||||
to_chat(user, "\blue change the direction of built objects.")
|
||||
to_chat(user, "\blue ***********************************************************")
|
||||
dat += "***********************************************************"
|
||||
dat += "Left Mouse Button = Construct / Upgrade"
|
||||
dat += "Right Mouse Button = Deconstruct / Delete / Downgrade"
|
||||
dat += "Left Mouse Button + ctrl = R-Window"
|
||||
dat += "Left Mouse Button + alt = Airlock"
|
||||
dat += ""
|
||||
dat += "Use the button in the upper left corner to"
|
||||
dat += "change the direction of built objects."
|
||||
dat += "***********************************************************"
|
||||
if(ADV_BUILDMODE)
|
||||
to_chat(user, "\blue ***********************************************************")
|
||||
to_chat(user, "\blue Right Mouse Button on buildmode button = Set object type")
|
||||
to_chat(user, "\blue Left Mouse Button on turf/obj = Place objects")
|
||||
to_chat(user, "\blue Right Mouse Button = Delete objects")
|
||||
to_chat(user, "")
|
||||
to_chat(user, "\blue Use the button in the upper left corner to")
|
||||
to_chat(user, "\blue change the direction of built objects.")
|
||||
to_chat(user, "\blue ***********************************************************")
|
||||
dat += "***********************************************************"
|
||||
dat += "Right Mouse Button on buildmode button = Set object type"
|
||||
dat += "Left Mouse Button on turf/obj = Place objects"
|
||||
dat += "Right Mouse Button = Delete objects"
|
||||
dat += ""
|
||||
dat += "Use the button in the upper left corner to"
|
||||
dat += "change the direction of built objects."
|
||||
dat += "***********************************************************"
|
||||
if(VAR_BUILDMODE)
|
||||
to_chat(user, "\blue ***********************************************************")
|
||||
to_chat(user, "\blue Right Mouse Button on buildmode button = Select var(type) & value")
|
||||
to_chat(user, "\blue Left Mouse Button on turf/obj/mob = Set var(type) & value")
|
||||
to_chat(user, "\blue Right Mouse Button on turf/obj/mob = Reset var's value")
|
||||
to_chat(user, "\blue ***********************************************************")
|
||||
dat += "***********************************************************"
|
||||
dat += "Right Mouse Button on buildmode button = Select var(type) & value"
|
||||
dat += "Left Mouse Button on turf/obj/mob = Set var(type) & value"
|
||||
dat += "Right Mouse Button on turf/obj/mob = Reset var's value"
|
||||
dat += "***********************************************************"
|
||||
if(THROW_BUILDMODE)
|
||||
to_chat(user, "\blue ***********************************************************")
|
||||
to_chat(user, "\blue Left Mouse Button on turf/obj/mob = Select")
|
||||
to_chat(user, "\blue Right Mouse Button on turf/obj/mob = Throw")
|
||||
to_chat(user, "\blue ***********************************************************")
|
||||
dat += "***********************************************************"
|
||||
dat += "Left Mouse Button on turf/obj/mob = Select"
|
||||
dat += "Right Mouse Button on turf/obj/mob = Throw"
|
||||
dat += "***********************************************************"
|
||||
if(AREA_BUILDMODE)
|
||||
to_chat(user, "\blue ***********************************************************")
|
||||
to_chat(user, "\blue Left Mouse Button on turf/obj/mob = Select corner")
|
||||
to_chat(user, "\blue Right Mouse Button on buildmode button = Select generator")
|
||||
to_chat(user, "\blue ***********************************************************")
|
||||
dat += "***********************************************************"
|
||||
dat += "Left Mouse Button on turf/obj/mob = Select corner"
|
||||
dat += "Right Mouse Button on buildmode button = Select generator"
|
||||
dat += "***********************************************************"
|
||||
if(COPY_BUILDMODE)
|
||||
to_chat(user, "\blue ***********************************************************")
|
||||
to_chat(user, "\blue Left Mouse Button on obj/turf/mob = Spawn a Copy of selected target")
|
||||
to_chat(user, "\blue Right Mouse Button on obj/mob = Select target to copy")
|
||||
to_chat(user, "\blue ***********************************************************")
|
||||
dat += "***********************************************************"
|
||||
dat += "Left Mouse Button on obj/turf/mob = Spawn a Copy of selected target"
|
||||
dat += "Right Mouse Button on obj/mob = Select target to copy"
|
||||
dat += "***********************************************************"
|
||||
to_chat(user, "<font color='blue'>[dat.Join("\n")]</font>")
|
||||
|
||||
/datum/buildmode/proc/change_settings(mob/user)
|
||||
switch(mode)
|
||||
|
||||
@@ -14,11 +14,12 @@
|
||||
if(type == INDIVIDUAL_SHOW_ALL_LOG)
|
||||
dat += "<center>Displaying all logs of [key_name(M)]</center><br><hr>"
|
||||
for(var/log_type in M.logging)
|
||||
var/list/reversed = M.logging[log_type]
|
||||
reversed = reverseRange(reversed.Copy())
|
||||
dat += "<center><b>[log_type]</b></center><br>"
|
||||
for(var/entry in reversed)
|
||||
dat += "<font size=2px>[entry]: [reversed[entry]]</font><br>"
|
||||
var/list/reversed = M.logging[log_type]
|
||||
if(islist(reversed))
|
||||
reversed = reverseRange(reversed.Copy())
|
||||
for(var/entry in reversed)
|
||||
dat += "<font size=2px>[entry]: [reversed[entry]]</font><br>"
|
||||
dat += "<hr>"
|
||||
else
|
||||
dat += "<center>[type] of [key_name(M)]</center><br>"
|
||||
@@ -26,6 +27,6 @@
|
||||
if(reversed)
|
||||
reversed = reverseRange(reversed.Copy())
|
||||
for(var/entry in reversed)
|
||||
dat += "<font size=2px>[entry]: [reversed[entry]]</font><br>"
|
||||
dat += "<font size=2px>[entry]: [reversed[entry]]</font><hr>"
|
||||
|
||||
usr << browse(dat, "window=invidual_logging;size=600x480")
|
||||
usr << browse(dat, "window=invidual_logging_[M];size=600x480")
|
||||
|
||||
@@ -612,8 +612,8 @@ GLOBAL_PROTECT(VVpixelmovement)
|
||||
if (O.vv_edit_var(variable, var_new) == FALSE)
|
||||
to_chat(src, "Your edit was rejected by the object.")
|
||||
return
|
||||
log_world("### VarEdit by [src]: [O.type] [variable]=[html_encode("[O.vars[variable]]")]")
|
||||
log_admin("[key_name(src)] modified [original_name]'s [variable] to [O.vars[variable]]")
|
||||
var/msg = "[key_name_admin(src)] modified [original_name]'s [variable] to [O.vars[variable]]"
|
||||
log_world("### VarEdit by [src]: [O.type] [variable]=[html_encode("[var_new]")]")
|
||||
log_admin("[key_name(src)] modified [original_name]'s [variable] to [var_new]")
|
||||
var/msg = "[key_name_admin(src)] modified [original_name]'s [variable] to [var_new]"
|
||||
message_admins(msg)
|
||||
admin_ticket_log(O, msg)
|
||||
@@ -99,7 +99,7 @@ GLOBAL_VAR_INIT(highlander, FALSE)
|
||||
|
||||
var/datum/gang/multiverse/G = new(src, "[H.real_name]")
|
||||
SSticker.mode.gangs += G
|
||||
G.bosses += H.mind
|
||||
G.bosses[H.mind] = 0 //No they don't use influence but this prevents runtimes.
|
||||
G.add_gang_hud(H.mind)
|
||||
H.mind.gang_datum = G
|
||||
|
||||
|
||||
Reference in New Issue
Block a user