diff --git a/code/__DEFINES/quickwrite.dm b/code/__DEFINES/quickwrite.dm new file mode 100644 index 000000000000..6a133f64c2fc --- /dev/null +++ b/code/__DEFINES/quickwrite.dm @@ -0,0 +1,24 @@ +#define QUICKWRITE "quickwrite.dll" + +#define QUICKWRITE_OPEN(filename) call(QUICKWRITE, "open_file")(filename) +#define QUICKWRITE_CLOSE(filename) call(QUICKWRITE, "close_file")(filename) +#define QUICKWRITE_WRITE(file, data) call(QUICKWRITE, "write_file")(file, data) +#define QUICKWRITE_CLOSE_ALL call(QUICKWRITE, "close_all")() + +/proc/_quickwrite_check(res) + if(copytext(res, 1, 6) == "ERROR") + world.log << "QUICKWRITE: [res]" + return FALSE + return TRUE + +/proc/quickwrite_open(file, data) + return _quickwrite_check(QUICKWRITE_OPEN(file)) + +/proc/quickwrite_close(file, data) + return _quickwrite_check(QUICKWRITE_CLOSE(file)) + +/proc/quickwrite_write(file, data) + return _quickwrite_check(QUICKWRITE_WRITE(file, data)) + +/proc/quickwrite_close_all() + QUICKWRITE_CLOSE_ALL diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 60e6507da68d..a8391180a3f9 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -80,6 +80,7 @@ #define INIT_ORDER_PATH -50 #define INIT_ORDER_DISCORD -60 #define INIT_ORDER_PERSISTENCE -95 +#define INIT_ORDER_DEMO -99 // To avoid a bunch of changes related to initialization being written, do this last #define INIT_ORDER_CHAT -100 //Should be last to ensure chat remains smooth during init. // Subsystem fire priority, from lowest to highest priority @@ -124,7 +125,7 @@ #define RUNLEVELS_DEFAULT (RUNLEVEL_SETUP | RUNLEVEL_GAME | RUNLEVEL_POSTGAME) - +// Truly disgusting, TG. Truly disgusting. #define COMPILE_OVERLAYS(A)\ if (TRUE) {\ @@ -149,4 +150,6 @@ }\ }\ A.flags_1 &= ~OVERLAY_QUEUED_1;\ + if(isturf(A)){SSdemo.mark_turf(A);}\ + if(isobj(A) || ismob(A)){SSdemo.mark_dirty(A);}\ } diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm index 84b0e8e94ce1..0d8e1ed58182 100644 --- a/code/__HELPERS/_logging.dm +++ b/code/__HELPERS/_logging.dm @@ -198,6 +198,7 @@ /* Close open log handles. This should be called as late as possible, and no logging should hapen after. */ /proc/shutdown_logging() rustg_log_close_all() + quickwrite_close_all() /* Helper procs for building detailed log lines */ diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 0e3b247a37ea..dd595415c82b 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -5,7 +5,11 @@ var/resolved = target.attackby(src, user, params) if(!resolved && target && !QDELETED(src)) afterattack(target, user, 1, params) // 1: clicking something Adjacent - + SSdemo.mark_dirty(src) + if(isturf(target)) + SSdemo.mark_turf(target) + else + SSdemo.mark_dirty(target) //Checks if the item can work as a tool, calling the appropriate tool behavior on the target /obj/item/proc/tool_attack_chain(mob/user, atom/target) @@ -20,6 +24,7 @@ if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_SELF, user) & COMPONENT_NO_INTERACT) return interact(user) + SSdemo.mark_dirty(src) /obj/item/proc/pre_attack(atom/A, mob/living/user, params) //do stuff before attackby! if(SEND_SIGNAL(src, COMSIG_ITEM_PRE_ATTACK, A, user, params) & COMPONENT_NO_ATTACK) diff --git a/code/controllers/subsystem/chat.dm b/code/controllers/subsystem/chat.dm index 569bd1be2a2e..729785a7f300 100644 --- a/code/controllers/subsystem/chat.dm +++ b/code/controllers/subsystem/chat.dm @@ -18,7 +18,7 @@ SUBSYSTEM_DEF(chat) return -/datum/controller/subsystem/chat/proc/queue(target, message, handle_whitespace = TRUE) +/datum/controller/subsystem/chat/proc/queue(target, message, handle_whitespace = TRUE, confidential = FALSE) if(!target || !message) return @@ -37,6 +37,8 @@ SUBSYSTEM_DEF(chat) message = replacetext(message, "\t", "[FOURSPACES][FOURSPACES]") message += "
" + if(!confidential) + SSdemo.write_chat(target, message) if(islist(target)) for(var/I in target) @@ -48,7 +50,7 @@ SUBSYSTEM_DEF(chat) if(!C.chatOutput.loaded) //Client still loading, put their messages in a queue C.chatOutput.messageQueue += message continue - + message = to_utf8(message, I) // yogs - LibVG payload[C] += url_encode(url_encode(message)) diff --git a/code/controllers/subsystem/demo.dm b/code/controllers/subsystem/demo.dm new file mode 100644 index 000000000000..6063f5a402f5 --- /dev/null +++ b/code/controllers/subsystem/demo.dm @@ -0,0 +1,437 @@ +SUBSYSTEM_DEF(demo) + name = "Demo" + wait = 1 + flags = SS_TICKER + init_order = INIT_ORDER_DEMO + runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY + + var/demo_file + var/list/pre_init_lines = list() // stuff like chat before the init + var/list/icon_cache = list() + var/list/icon_state_caches = list() + var/list/name_cache = list() + + var/list/marked_dirty = list() + var/list/marked_new = list() + var/list/marked_turfs = list() + var/list/del_list = list() + + var/last_written_time = null + var/last_chat_message = null + + // stats stuff + var/last_queued = 0 + var/last_completed = 0 + +/datum/controller/subsystem/demo/proc/write_time() + if(world.system_type != MS_WINDOWS) + return + var/new_time = world.time + if(last_written_time != new_time) + if(initialized) + QUICKWRITE_WRITE(demo_file, "time [new_time]\n") + else + pre_init_lines += "time [new_time]" + last_written_time = new_time + +/datum/controller/subsystem/demo/proc/write_event_line(line) + if(world.system_type != MS_WINDOWS) + return + write_time() + if(initialized) + QUICKWRITE_WRITE(demo_file, line + "\n") + else + pre_init_lines += line + +/datum/controller/subsystem/demo/proc/write_chat(target, text) + if(world.system_type != MS_WINDOWS) + return + var/target_text = "" + if(target == GLOB.clients) + target_text = "world" + else if(islist(target)) + var/list/target_keys = list() + for(var/T in target) + var/client/C = CLIENT_FROM_VAR(T) + if(C) + target_keys += C.ckey + if(!target_keys.len) + return + target_text = jointext(target_keys, ",") + else + var/client/C = CLIENT_FROM_VAR(target) + if(C) + target_text = C.ckey + else + return + write_event_line("chat [target_text] [last_chat_message == text ? "=" : json_encode(text)]") + last_chat_message = text + +/datum/controller/subsystem/demo/Initialize() + if(world.system_type != MS_WINDOWS) + can_fire = FALSE + return ..(); + demo_file = "[GLOB.log_directory]/demo.txt" + quickwrite_open(demo_file) + QUICKWRITE_WRITE(demo_file, "demo version 1\n") // increment this if you change the format + if(GLOB.revdata) + QUICKWRITE_WRITE(demo_file, "commit [GLOB.revdata.originmastercommit || GLOB.revdata.commit]\n") + + // write a "snapshot" of the world at this point. + // start with turfs + world.log << "Writing turfs..." + QUICKWRITE_WRITE(demo_file, "init [world.maxx] [world.maxy] [world.maxz]\n") + marked_turfs.len = 0 + for(var/z in 1 to world.maxz) + var/row_list = list() + var/last_appearance + var/rle_count = 1 + for(var/y in 1 to world.maxy) + for(var/x in 1 to world.maxx) + var/turf/T = locate(x,y,z) + T.demo_last_appearance = T.appearance + var/this_appearance + // space turfs are difficult to RLE otherwise, because they all + // have different appearances despite being the same thing. + if(T.type == /turf/open/space || T.type == /turf/open/space/basic) + this_appearance = "s" // save the bytes + else if(istype(T, /turf/open/space/transit)) + this_appearance = "t[T.dir]" + else + this_appearance = T.appearance + if(this_appearance == last_appearance) + rle_count++ + else + if(rle_count > 1) + row_list += rle_count + rle_count = 1 + if(istext(this_appearance)) + row_list += this_appearance + else + // do a diff with the previous turf to save those bytes + row_list += encode_appearance(this_appearance, istext(last_appearance) ? null : last_appearance) + last_appearance = this_appearance + if(rle_count > 1) + row_list += rle_count + QUICKWRITE_WRITE(demo_file, jointext(row_list, ",") + "\n") + CHECK_TICK + // then do objects + world.log << "Writing objects" + marked_new.len = 0 + marked_dirty.len = 0 + for(var/z in 1 to world.maxz) + var/spacing = 0 + var/row_list = list() + for(var/y in 1 to world.maxy) + for(var/x in 1 to world.maxx) + var/turf/T = locate(x,y,z) + var/list/turf_list = list() + for(var/C in T.contents) + var/atom/movable/as_movable = C + if(as_movable.loc != T) + continue + if(isobj(C) || ismob(C)) + turf_list += encode_init_obj(C) + if(turf_list.len) + if(spacing) + row_list += spacing + spacing = 0 + row_list += turf_list + spacing++ + CHECK_TICK // This is a bit risky because something might change but meh, its not a big deal. + QUICKWRITE_WRITE(demo_file, jointext(row_list, ",") + "\n") + + // track objects that exist in nullspace + var/nullspace_list = list() + for(var/atom/movable/M in world) + if(M.loc != null) continue + if(!isobj(M) && !ismob(M)) + continue + nullspace_list += encode_init_obj(M) + CHECK_TICK + QUICKWRITE_WRITE(demo_file, jointext(nullspace_list, ",") + "\n") + + for(var/line in pre_init_lines) + QUICKWRITE_WRITE(demo_file, line + "\n") + + return ..() + +/datum/controller/subsystem/demo/fire() + if(!src.marked_new.len && !src.marked_dirty.len && !src.marked_turfs.len && !src.del_list.len) + return // nothing to do + + last_queued = src.marked_new.len + src.marked_dirty.len + src.marked_turfs.len + last_completed = 0 + + write_time() + if(src.del_list.len) + var/s = "del [jointext(src.del_list, ",")]\n" // if I don't do it like this I get "incorrect number of macro arguments" because byond is stupid and sucks + QUICKWRITE_WRITE(demo_file, s) + src.del_list.len = 0 + + var/canceled = FALSE + + var/list/marked_dirty = src.marked_dirty + var/list/dirty_updates = list() + while(marked_dirty.len) + last_completed++ + var/atom/movable/M = marked_dirty[marked_dirty.len] + marked_dirty.len-- + if(M.gc_destroyed || !M) + continue + if(M.loc == M.demo_last_loc && M.appearance == M.demo_last_appearance) + continue + var/loc_string = "=" + if(M.loc != M.demo_last_loc) + loc_string = "null" + if(isturf(M.loc)) + loc_string = "[M.x],[M.y],[M.z]" + else if(ismovableatom(M.loc)) + loc_string = "\ref[M.loc]" + M.demo_last_loc = M.loc + var/appearance_string = "=" + if(M.appearance != M.demo_last_appearance) + appearance_string = encode_appearance(M.appearance, M.demo_last_appearance) + M.demo_last_appearance = M.appearance + dirty_updates += "\ref[M] [loc_string] [appearance_string]" + if(MC_TICK_CHECK) + canceled = TRUE + break + if(dirty_updates.len) + var/s = "update [jointext(dirty_updates, ",")]\n" + QUICKWRITE_WRITE(demo_file, s) + if(canceled) + return; + + + var/list/marked_new = src.marked_new + var/list/new_updates = list() + while(marked_new.len) + last_completed++ + var/atom/movable/M = marked_new[marked_new.len] + marked_new.len-- + if(M.gc_destroyed || !M) + continue + var/loc_string = "null" + if(isturf(M.loc)) + loc_string = "[M.x],[M.y],[M.z]" + else if(ismovableatom(M.loc)) + loc_string = "\ref[M.loc]" + M.demo_last_appearance = M.appearance + new_updates += "\ref[M] [loc_string] [encode_appearance(M.appearance)]" + if(MC_TICK_CHECK) + canceled = TRUE + break + if(new_updates.len) + var/s = "new [jointext(new_updates, ",")]\n" + QUICKWRITE_WRITE(demo_file, s) + if(canceled) + return; + + + var/list/marked_turfs = src.marked_turfs + var/list/turf_updates = list() + while(marked_turfs.len) + last_completed++ + var/turf/T = marked_turfs[marked_turfs.len] + marked_turfs.len-- + if(T && T.appearance != T.demo_last_appearance) + turf_updates += "([T.x],[T.y],[T.z])=[encode_appearance(T.appearance, T.demo_last_appearance)]" + T.demo_last_appearance = T.appearance + if(MC_TICK_CHECK) + canceled = TRUE + break + if(turf_updates.len) + var/s = "turf [jointext(turf_updates, ",")]\n" + QUICKWRITE_WRITE(demo_file, s) + if(canceled) + return; + +/datum/controller/subsystem/demo/proc/encode_init_obj(var/atom/movable/M) + M.demo_last_loc = M.loc + M.demo_last_appearance = M.appearance + var/encoded_appearance = encode_appearance(M.appearance) + var/list/encoded_contents = list() + for(var/C in M.contents) + if(isobj(C) || ismob(C)) + encoded_contents += encode_init_obj(C) + return "\ref[M]=[encoded_appearance][(encoded_contents.len ? "([jointext(encoded_contents, ",")])" : "")]" + +// please make sure the order you call this function in is the same as the order you write +/datum/controller/subsystem/demo/proc/encode_appearance(image/appearance, image/diff_appearance, diff_remove_overlays = FALSE) + if(appearance == null) + return "n" + if(appearance == diff_appearance) + return "=" + + var/icon_txt = "[appearance.icon]" + var/cached_icon = icon_cache[icon_txt] || icon_txt + var/list/icon_state_cache + if(!isnum(cached_icon)) + icon_cache[icon_txt] = icon_cache.len + 1 + icon_state_cache = (icon_state_caches[++icon_state_caches.len] = list()) + else + icon_state_cache = icon_state_caches[cached_icon] + + var/list/cached_icon_state = icon_state_cache[appearance.icon_state] || appearance.icon_state + if(!isnum(cached_icon_state)) + icon_state_cache[appearance.icon_state] = icon_state_cache.len + 1 + + var/cached_name = name_cache[appearance.name] || appearance.name + if(!isnum(cached_name)) + name_cache[appearance.name] = name_cache.len + 1 + + var/color_string = appearance.color || "w" + if(islist(color_string)) + var/list/old_list = appearance.color + var/list/inted = list() + inted.len = old_list.len + for(var/i in 1 to old_list.len) + inted[i] += round(old_list[i] * 255) + color_string = jointext(inted, ",") + var/overlays_string = "\[]" + if(appearance.overlays.len) + var/list/overlays_list = list() + for(var/i in 1 to appearance.overlays.len) + var/image/overlay = appearance.overlays[i] + overlays_list += encode_appearance(overlay, appearance, TRUE) + overlays_string = "\[[jointext(overlays_list, ",")]]" + + var/underlays_string = "\[]" + if(appearance.underlays.len) + var/list/underlays_list = list() + for(var/i in 1 to appearance.underlays.len) + var/image/underlay = appearance.underlays[i] + underlays_list += encode_appearance(underlay, appearance, TRUE) + underlays_string = "\[[jointext(underlays_list, ",")]]" + + var/appearance_transform_string = "i" + if(appearance.transform) + var/matrix/M = appearance.transform + appearance_transform_string = "[M.a],[M.b],[M.c],[M.d],[M.e],[M.f]" + if(appearance_transform_string == "1,0,0,0,1,0") + appearance_transform_string = "i" + var/list/appearance_list = list( + json_encode(cached_icon), + json_encode(cached_icon_state), + json_encode(cached_name), + appearance.appearance_flags, + appearance.layer, + appearance.plane == -32767 ? "" : appearance.plane, + appearance.dir == 2 ? "" : appearance.dir, + appearance.color ? color_string : "", + appearance.alpha == 255 ? "" : appearance.alpha, + appearance.pixel_x == 0 ? "" : appearance.pixel_x, + appearance.pixel_y == 0 ? "" : appearance.pixel_y, + appearance.blend_mode <= 1 ? "" : appearance.blend_mode, + appearance_transform_string != "i" ? appearance_transform_string : "", + appearance:invisibility == 0 ? "" : appearance:invisibility, // colon because dreamchecker is dumb + appearance.pixel_w == 0 ? "" : appearance.pixel_w, + appearance.pixel_z == 0 ? "" : appearance.pixel_z, + appearance.overlays.len ? overlays_string : "", + appearance.underlays.len ? underlays_string : "" + ) + while(appearance_list[appearance_list.len] == "" && appearance_list.len > 0) + appearance_list.len-- + + var/undiffed_string = "{[jointext(appearance_list, ";")]}" + + if(diff_appearance) + var/overlays_identical = TRUE + if(diff_remove_overlays) + overlays_identical = (appearance.overlays.len == 0) + else if(appearance.overlays.len != diff_appearance.overlays.len) + overlays_identical = FALSE + else + for(var/i in 1 to appearance.overlays.len) + if(appearance.overlays[i] != diff_appearance.overlays[i]) + overlays_identical = FALSE + break + + var/underlays_identical = TRUE + if(diff_remove_overlays) + underlays_identical = (appearance.underlays.len == 0) + else if(appearance.underlays.len != diff_appearance.underlays.len) + underlays_identical = FALSE + else + for(var/i in 1 to appearance.underlays.len) + if(appearance.underlays[i] != diff_appearance.underlays[i]) + underlays_identical = FALSE + break + + var/diff_transform_string = "i" + if(diff_appearance.transform) + var/matrix/M = diff_appearance.transform + diff_transform_string = "[M.a],[M.b],[M.c],[M.d],[M.e],[M.f]" + if(diff_transform_string == "1,0,0,0,1,0") + diff_transform_string = "i" + + var/list/diffed_appearance_list = list( + json_encode(cached_icon), + json_encode(cached_icon_state), + json_encode(cached_name), + appearance.appearance_flags == diff_appearance.appearance_flags ? "" : appearance.appearance_flags, + appearance.layer == diff_appearance.layer ? "" : appearance.layer, + appearance.plane == diff_appearance.plane ? "" : appearance.plane, + appearance.dir == diff_appearance.dir ? "" : appearance.dir, + appearance.color == diff_appearance.color ? "" : color_string, + appearance.alpha == diff_appearance.alpha ? "" : appearance.alpha, + appearance.pixel_x == diff_appearance.pixel_x ? "" : appearance.pixel_x, + appearance.pixel_y == diff_appearance.pixel_y ? "" : appearance.pixel_y, + appearance.blend_mode == diff_appearance.blend_mode ? "" : appearance.blend_mode, + appearance_transform_string == diff_transform_string ? "" : appearance_transform_string, + appearance:invisibility == diff_appearance:invisibility ? "" : appearance:invisibility, // colon because dreamchecker is too dumb + appearance.pixel_w == diff_appearance.pixel_w ? "" : appearance.pixel_w, + appearance.pixel_z == diff_appearance.pixel_z ? "" : appearance.pixel_z, + overlays_identical ? "" : overlays_string, + underlays_identical ? "" :underlays_string + ) + while(diffed_appearance_list[diffed_appearance_list.len] == "" && diffed_appearance_list.len > 0) + diffed_appearance_list.len-- + + var/diffed_string = "~{[jointext(diffed_appearance_list, ";")]}" + if(length(diffed_string) < length(undiffed_string)) + return diffed_string + return undiffed_string + +/datum/controller/subsystem/demo/stat_entry(msg) + msg += "Remaining: {" + msg += "Trf:[marked_turfs.len]|" + msg += "New:[marked_new.len]|" + msg += "Upd:[marked_dirty.len]|" + msg += "Del:[del_list.len]" + msg += "}" + ..(msg) + +/datum/controller/subsystem/demo/proc/mark_turf(turf/T) + if(!isturf(T)) + return + marked_turfs[T] = TRUE + +/datum/controller/subsystem/demo/proc/mark_new(atom/movable/M) + if(!isobj(M) && !ismob(M)) + return + if(M.gc_destroyed) + return + marked_new[M] = TRUE + if(marked_dirty[M]) + marked_dirty -= M + +// I can't wait for when TG ports this and they make this a #define macro. +/datum/controller/subsystem/demo/proc/mark_dirty(atom/movable/M) + if(!isobj(M) && !ismob(M)) + return + if(M.gc_destroyed) + return + if(!marked_new[M]) + marked_dirty[M] = TRUE + +/datum/controller/subsystem/demo/proc/mark_destroyed(atom/movable/M) + if(!isobj(M) && !ismob(M)) + return + if(marked_new[M]) + marked_new -= M + if(marked_dirty[M]) + marked_dirty -= M + if(initialized) + del_list["\ref[M]"] = 1 diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index a3efd400a434..7db16b01ddc7 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -279,6 +279,7 @@ SUBSYSTEM_DEF(garbage) SSgarbage.Queue(D) if (QDEL_HINT_IWILLGC) D.gc_destroyed = world.time + SSdemo.mark_destroyed(D) return if (QDEL_HINT_LETMELIVE) //qdel should let the object live after calling destory. if(!force) @@ -298,8 +299,10 @@ SUBSYSTEM_DEF(garbage) SSgarbage.Queue(D) if (QDEL_HINT_HARDDEL) //qdel should assume this object won't gc, and queue a hard delete + SSdemo.mark_destroyed(D) SSgarbage.Queue(D, GC_QUEUE_HARDDELETE) if (QDEL_HINT_HARDDEL_NOW) //qdel should assume this object won't gc, and hard del it post haste. + SSdemo.mark_destroyed(D) SSgarbage.HardDelete(D) if (QDEL_HINT_FINDREFERENCE)//qdel will, if TESTING is enabled, display all references to this object, then queue the object for deletion. SSgarbage.Queue(D) @@ -318,6 +321,8 @@ SUBSYSTEM_DEF(garbage) #endif I.no_hint++ SSgarbage.Queue(D) + if(D) + SSdemo.mark_destroyed(D) else if(D.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) CRASH("[D.type] destroy proc was called multiple times, likely due to a qdel loop in the Destroy logic") diff --git a/code/game/atoms.dm b/code/game/atoms.dm index bef76b65261e..a9d4dd56bc33 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -53,6 +53,7 @@ if(SSatoms.InitAtom(src, args)) //we were deleted return + SSdemo.mark_new(src) //Called after New if the map is being loaded. mapload = TRUE //Called from base of New if the map is not being loaded. mapload = FALSE diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 2d06a6e55175..d5a198e12c9d 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -370,6 +370,7 @@ if (length(client_mobs_in_contents)) update_parallax_contents() + SSdemo.mark_dirty(src) return TRUE /atom/movable/Destroy(force) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 7896d472ea96..1101effb6054 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -492,6 +492,7 @@ if(AIRLOCK_DENY, AIRLOCK_OPENING, AIRLOCK_CLOSING, AIRLOCK_EMAG) icon_state = "nonexistenticonstate" //MADNESS set_airlock_overlays(state) + SSdemo.mark_dirty(src) /obj/machinery/door/airlock/proc/set_airlock_overlays(state) var/mutable_appearance/frame_overlay diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index a8416783d794..d82c67bf51ed 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -181,6 +181,7 @@ icon_state = "door_open" if(welded) add_overlay("welded_open") + SSdemo.mark_dirty(src) /obj/machinery/door/firedoor/open() . = ..() diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index af95ee230cae..9989f163e4fb 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -82,6 +82,7 @@ icon_state = "closed" else icon_state = "open" + SSdemo.mark_dirty(src) /obj/machinery/door/poddoor/try_to_activate_door(mob/user) return diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 83f739e8a06a..83ce12d1dd2b 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -53,6 +53,7 @@ icon_state = base_state else icon_state = "[base_state]open" + SSdemo.mark_dirty(src) /obj/machinery/door/window/proc/open_and_close() if(!open()) diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index 424eeb9c6f44..08957f7c7b71 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -132,6 +132,7 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( for(var/turf/open/space/S in RANGE_TURFS(1, src)) //RANGE_TURFS is in code\__HELPERS\game.dm S.update_starlight() + SSdemo.mark_turf(W) return W diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm index 66c69f7adb89..580ce2eba47c 100644 --- a/code/modules/admin/IsBanned.dm +++ b/code/modules/admin/IsBanned.dm @@ -204,7 +204,7 @@ Yogs End*/ return null if (C) //user is already connected!. - to_chat(C, "You are about to get disconnected for matching a sticky ban after you connected. If this turns out to be the ban evasion detection system going haywire, we will automatically detect this and revert the matches. if you feel that this is the case, please wait EXACTLY 6 seconds then reconnect using file -> reconnect to see if the match was automatically reversed.") + to_chat(C, "You are about to get disconnected for matching a sticky ban after you connected. If this turns out to be the ban evasion detection system going haywire, we will automatically detect this and revert the matches. if you feel that this is the case, please wait EXACTLY 6 seconds then reconnect using file -> reconnect to see if the match was automatically reversed.", confidential=TRUE) var/desc = "\nReason:(StickyBan) You, or another user of this computer or connection ([bannedckey]) is banned from playing here. The ban reason is:\n[ban["message"]]\nThis ban was applied by [ban["admin"]]\nThis is a BanEvasion Detection System ban, if you think this ban is a mistake, please wait EXACTLY 6 seconds, then try again before filing an appeal. If you wish to appeal this ban please use the keyword 'assistantgreytide' to register an account on the forums.\n" //yogs . = list("reason" = "Stickyban", "desc" = desc) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index a439995e1a83..fc7e65e1e593 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -2,11 +2,11 @@ //////////////////////////////// /proc/message_admins(msg) msg = "ADMIN LOG: [msg]" - to_chat(GLOB.admins, msg) + to_chat(GLOB.admins, msg, confidential=TRUE) /proc/relay_msg_admins(msg) msg = "RELAY: [msg]" - to_chat(GLOB.admins, msg) + to_chat(GLOB.admins, msg, confidential=TRUE) ///////////////////////////////////////////////////////////////////////////////////////////////Panels @@ -22,14 +22,14 @@ log_admin("[key_name(usr)] checked the individual player panel for [key_name(M)][isobserver(usr)?"":" while in game"].") if(!M) - to_chat(usr, "You seem to be selecting a mob that doesn't exist anymore.") + to_chat(usr, "You seem to be selecting a mob that doesn't exist anymore.", confidential=TRUE) return if(M.oobe_client) //yogs start if(M.oobe_client.mob) .(M.oobe_client.mob) //using . because show_player_panel(M.oobe_client.mob) caused "Runtime in admin.dm,30: undefined proc or verb /client/Show Player Panel()." else - to_chat(usr, "Cannot open player panel because [key_name(M)] has (a)ghosted, but does not appear to have a mob.") + to_chat(usr, "Cannot open player panel because [key_name(M)] has (a)ghosted, but does not appear to have a mob.", confidential=TRUE) return //yogs end var/body = "Options for [M.key]" @@ -207,7 +207,7 @@ if (!istype(src, /datum/admins)) src = usr.client.holder if (!istype(src, /datum/admins)) - to_chat(usr, "Error: you are not an admin!") + to_chat(usr, "Error: you are not an admin!", confidential=TRUE) return var/dat dat = text("Admin Newscaster

Admin Newscaster Unit

") @@ -559,7 +559,7 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Start Now") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return 1 else - to_chat(usr, "Error: Start Now: Game has already started.") + to_chat(usr, "Error: Start Now: Game has already started.", confidential=TRUE) return 0 @@ -710,10 +710,10 @@ set name = "Show Traitor Panel" if(!istype(M)) - to_chat(usr, "This can only be used on instances of type /mob") + to_chat(usr, "This can only be used on instances of type /mob", confidential=TRUE) return if(!M.mind) - to_chat(usr, "This mob has no mind!") + to_chat(usr, "This mob has no mind!", confidential=TRUE) return M.mind.traitor_panel() @@ -753,37 +753,37 @@ var/mob/living/silicon/S = i ai_number++ if(isAI(S)) - to_chat(usr, "AI [key_name(S, usr)]'s laws:") + to_chat(usr, "AI [key_name(S, usr)]'s laws:", confidential=TRUE) else if(iscyborg(S)) var/mob/living/silicon/robot/R = S - to_chat(usr, "CYBORG [key_name(S, usr)] [R.connected_ai?"(Slaved to: [key_name(R.connected_ai)])":"(Independent)"]: laws:") + to_chat(usr, "CYBORG [key_name(S, usr)] [R.connected_ai?"(Slaved to: [key_name(R.connected_ai)])":"(Independent)"]: laws:", confidential=TRUE) else if (ispAI(S)) - to_chat(usr, "pAI [key_name(S, usr)]'s laws:") + to_chat(usr, "pAI [key_name(S, usr)]'s laws:", confidential=TRUE) else - to_chat(usr, "SOMETHING SILICON [key_name(S, usr)]'s laws:") + to_chat(usr, "SOMETHING SILICON [key_name(S, usr)]'s laws:", confidential=TRUE) if (S.laws == null) - to_chat(usr, "[key_name(S, usr)]'s laws are null?? Contact a coder.") + to_chat(usr, "[key_name(S, usr)]'s laws are null?? Contact a coder.", confidential=TRUE) else S.laws.show_laws(usr) if(!ai_number) - to_chat(usr, "No AIs located" ) + to_chat(usr, "No AIs located" , confidential=TRUE) /datum/admins/proc/output_all_devil_info() var/devil_number = 0 for(var/datum/mind/D in SSticker.mode.devils) devil_number++ var/datum/antagonist/devil/devil = D.has_antag_datum(/datum/antagonist/devil) - to_chat(usr, "Devil #[devil_number]:

" + devil.printdevilinfo()) + to_chat(usr, "Devil #[devil_number]:

" + devil.printdevilinfo(), confidential=TRUE) if(!devil_number) - to_chat(usr, "No Devils located" ) + to_chat(usr, "No Devils located" , confidential=TRUE) /datum/admins/proc/output_devil_info(mob/living/M) if(is_devil(M)) var/datum/antagonist/devil/devil = M.mind.has_antag_datum(/datum/antagonist/devil) - to_chat(usr, devil.printdevilinfo()) + to_chat(usr, devil.printdevilinfo(), confidential=TRUE) else - to_chat(usr, "[M] is not a devil.") + to_chat(usr, "[M] is not a devil.", confidential=TRUE) /datum/admins/proc/manage_free_slots() if(!check_rights()) @@ -848,7 +848,7 @@ if(kick_only_afk && !C.is_afk()) //Ignore clients who are not afk continue if(message) - to_chat(C, message) + to_chat(C, message, confidential=TRUE) kicked_client_names.Add("[C.key]") qdel(C) return kicked_client_names diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index ab48559f196a..b919cd4faf38 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -37,6 +37,6 @@ var/F = file("[GLOB.log_directory]/[selected].html") if(!fexists(F)) - to_chat(src, "No [selected] logfile was found.") + to_chat(src, "No [selected] logfile was found.", confidential=TRUE) return src << browse(F,"window=investigate[selected];size=800x300") diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index 69d5acf179ba..c89be0af9434 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -113,7 +113,7 @@ GLOBAL_PROTECT(protected_ranks) set waitfor = FALSE if(IsAdminAdvancedProcCall()) - to_chat(usr, "Admin rank DB Sync blocked: Advanced ProcCall detected.") + to_chat(usr, "Admin rank DB Sync blocked: Advanced ProcCall detected.", confidential=TRUE) return var/list/sql_ranks = list() @@ -128,7 +128,7 @@ GLOBAL_PROTECT(protected_ranks) //load our rank - > rights associations /proc/load_admin_ranks(dbfail, no_update) if(IsAdminAdvancedProcCall()) - to_chat(usr, "Admin Reload blocked: Advanced ProcCall detected.") + to_chat(usr, "Admin Reload blocked: Advanced ProcCall detected.", confidential=TRUE) return GLOB.admin_ranks.Cut() GLOB.protected_ranks.Cut() diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 65df344ba229..489fbe4e5861 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -321,7 +321,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) verbs.Remove(/client/proc/hide_most_verbs, GLOB.admin_verbs_hideable) verbs += /client/proc/show_verbs - to_chat(src, "Most of your adminverbs have been hidden.") + to_chat(src, "Most of your adminverbs have been hidden.", confidential=TRUE) SSblackbox.record_feedback("tally", "admin_verb", 1, "Hide Most Adminverbs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return @@ -332,7 +332,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) remove_admin_verbs() verbs += /client/proc/show_verbs - to_chat(src, "Almost all of your adminverbs have been hidden.") + to_chat(src, "Almost all of your adminverbs have been hidden.", confidential=TRUE) SSblackbox.record_feedback("tally", "admin_verb", 1, "Hide All Adminverbs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return @@ -343,7 +343,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) verbs -= /client/proc/show_verbs add_admin_verbs() - to_chat(src, "All of your adminverbs are now visible.") + to_chat(src, "All of your adminverbs are now visible.", confidential=TRUE) SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Adminverbs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -367,7 +367,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) ghost.reenter_corpse() SSblackbox.record_feedback("tally", "admin_verb", 1, "Admin Reenter") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! else if(isnewplayer(mob)) - to_chat(src, "Error: Aghost: Can't admin-ghost whilst in the lobby. Join or Observe first.") + to_chat(src, "Error: Aghost: Can't admin-ghost whilst in the lobby. Join or Observe first.", confidential=TRUE) return FALSE else //ghostize @@ -546,7 +546,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) if (isnull(ex_power)) return var/range = round((2 * ex_power)**GLOB.DYN_EX_SCALE) - to_chat(usr, "Estimated Explosive Range: (Devastation: [round(range*0.25)], Heavy: [round(range*0.5)], Light: [round(range)])") + to_chat(usr, "Estimated Explosive Range: (Devastation: [round(range*0.25)], Heavy: [round(range*0.5)], Light: [round(range)])", confidential=TRUE) /client/proc/get_dynex_power() set category = "Debug" @@ -557,7 +557,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) if (isnull(ex_range)) return var/power = (0.5 * ex_range)**(1/GLOB.DYN_EX_SCALE) - to_chat(usr, "Estimated Explosive Power: [power]") + to_chat(usr, "Estimated Explosive Power: [power]", confidential=TRUE) /client/proc/set_dynex_scale() set category = "Debug" @@ -613,7 +613,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) set name = "Give Disease" set desc = "Gives a Disease to a mob." if(!istype(T)) - to_chat(src, "You can only give a disease to a mob of type /mob/living.") + to_chat(src, "You can only give a disease to a mob of type /mob/living.", confidential=TRUE) return var/datum/disease/D = input("Choose the disease to give to that guy", "ACHOO") as null|anything in SSdisease.diseases if(!D) @@ -662,7 +662,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) holder.deactivate() - to_chat(src, "You are now a normal player.") + to_chat(src, "You are now a normal player.", confidential=TRUE) log_admin("[src] deadmined themself.") message_admins("[src] deadmined themself.") SSblackbox.record_feedback("tally", "admin_verb", 1, "Deadmin") @@ -687,7 +687,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) if (!holder) return //This can happen if an admin attempts to vv themself into somebody elses's deadmin datum by getting ref via brute force - to_chat(src, "You are now an admin.") + to_chat(src, "You are now an admin.", confidential=TRUE) message_admins("[src] re-adminned themselves.") log_admin("[src] re-adminned themselves.") SSblackbox.record_feedback("tally", "admin_verb", 1, "Readmin") diff --git a/code/modules/admin/create_poll.dm b/code/modules/admin/create_poll.dm index 9f002f92e0b8..3409553705de 100644 --- a/code/modules/admin/create_poll.dm +++ b/code/modules/admin/create_poll.dm @@ -4,7 +4,7 @@ if(!check_rights(R_POLL)) return if(!SSdbcore.Connect()) - to_chat(src, "Failed to establish database connection.") + to_chat(src, "Failed to establish database connection.", confidential=TRUE) return var/polltype = input("Choose poll type.","Poll Type") as null|anything in list("Single Option","Text Reply","Rating","Multiple Choice", "Instant Runoff Voting") var/choice_amount = 0 @@ -20,7 +20,7 @@ choice_amount = input("How many choices should be allowed?","Select choice amount") as num|null switch(choice_amount) if(0) - to_chat(src, "Multiple choice poll must have at least one choice allowed.") + to_chat(src, "Multiple choice poll must have at least one choice allowed.", confidential=TRUE) return if(1) polltype = POLLTYPE_OPTION @@ -42,7 +42,7 @@ if(query_validate_time.NextRow()) var/checktime = text2num(query_validate_time.item[1]) if(!checktime) - to_chat(src, "Datetime entered is improperly formatted or not later than current server time.") + to_chat(src, "Datetime entered is improperly formatted or not later than current server time.", confidential=TRUE) qdel(query_validate_time) return endtime = query_validate_time.item[1] @@ -100,7 +100,7 @@ if(maxval) maxval = sanitizeSQL(maxval) if(minval >= maxval) - to_chat(src, "Maximum rating value can't be less than or equal to minimum rating value") + to_chat(src, "Maximum rating value can't be less than or equal to minimum rating value", confidential=TRUE) continue else if(maxval == null) return diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index d37040ac2b49..eb800ec496d8 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -169,7 +169,7 @@ you will have to do something like if(client.rights & R_ADMIN) yourself. return 1 else if(show_msg) - to_chat(usr, "Error: You do not have sufficient rights to do that. You require one of the following flags:[rights2text(rights_required," ")].") + to_chat(usr, "Error: You do not have sufficient rights to do that. You require one of the following flags:[rights2text(rights_required," ")].", confidential=TRUE) return 0 //probably a bit iffy - will hopefully figure out a better solution diff --git a/code/modules/admin/permissionedit.dm b/code/modules/admin/permissionedit.dm index 827751bc8b78..0576590fcb37 100644 --- a/code/modules/admin/permissionedit.dm +++ b/code/modules/admin/permissionedit.dm @@ -128,7 +128,7 @@ log_admin("[key_name(usr)] attempted to edit admin permissions without sufficient rights.") return if(IsAdminAdvancedProcCall()) - to_chat(usr, "Admin Edit blocked: Advanced ProcCall detected.") + to_chat(usr, "Admin Edit blocked: Advanced ProcCall detected.", confidential=TRUE) return var/datum/asset/permissions_assets = get_asset_datum(/datum/asset/simple/permissions) permissions_assets.send(src) @@ -143,19 +143,19 @@ skip = TRUE if(!CONFIG_GET(flag/admin_legacy_system) && CONFIG_GET(flag/protect_legacy_admins) && task == "rank") if(admin_ckey in GLOB.protected_admins) - to_chat(usr, "Editing the rank of this admin is blocked by server configuration.") + to_chat(usr, "Editing the rank of this admin is blocked by server configuration.", confidential=TRUE) return if(!CONFIG_GET(flag/admin_legacy_system) && CONFIG_GET(flag/protect_legacy_ranks) && task == "permissions") if(D.rank in GLOB.protected_ranks) - to_chat(usr, "Editing the flags of this rank is blocked by server configuration.") + to_chat(usr, "Editing the flags of this rank is blocked by server configuration.", confidential=TRUE) return if(CONFIG_GET(flag/load_legacy_ranks_only) && (task == "add" || task == "rank" || task == "permissions")) - to_chat(usr, "Database rank loading is disabled, only temporary changes can be made to a rank's permissions and permanently creating a new rank is blocked.") + to_chat(usr, "Database rank loading is disabled, only temporary changes can be made to a rank's permissions and permanently creating a new rank is blocked.", confidential=TRUE) legacy_only = TRUE if(check_rights(R_DBRANKS, FALSE)) if(!skip) if(!SSdbcore.Connect()) - to_chat(usr, "Unable to connect to database, changes are temporary only.") + to_chat(usr, "Unable to connect to database, changes are temporary only.", confidential=TRUE) use_db = FALSE else use_db = alert("Permanent changes are saved to the database for future rounds, temporary changes will affect only the current round", "Permanent or Temporary?", "Permanent", "Temporary", "Cancel") @@ -207,7 +207,7 @@ if(!.) return FALSE if(!admin_ckey && (. in GLOB.admin_datums+GLOB.deadmins)) - to_chat(usr, "[admin_key] is already an admin.") + to_chat(usr, "[admin_key] is already an admin.", confidential=TRUE) return FALSE if(use_db) . = sanitizeSQL(.) @@ -218,7 +218,7 @@ return FALSE if(query_admin_in_db.NextRow()) qdel(query_admin_in_db) - to_chat(usr, "[admin_key] already listed in admin database. Check the Management tab if they don't appear in the list of admins.") + to_chat(usr, "[admin_key] already listed in admin database. Check the Management tab if they don't appear in the list of admins.", confidential=TRUE) return FALSE qdel(query_admin_in_db) var/datum/DBQuery/query_add_admin = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin")] (ckey, rank) VALUES ('[.]', 'NEW ADMIN')") @@ -424,13 +424,13 @@ return for(var/datum/admin_rank/R in GLOB.admin_ranks) if(R.name == admin_rank && (!(R.rights & usr.client.holder.rank.can_edit_rights) == R.rights)) - to_chat(usr, "You don't have edit rights to all the rights this rank has, rank deletion not permitted.") + to_chat(usr, "You don't have edit rights to all the rights this rank has, rank deletion not permitted.", confidential=TRUE) return if(!CONFIG_GET(flag/admin_legacy_system) && CONFIG_GET(flag/protect_legacy_ranks) && (admin_rank in GLOB.protected_ranks)) - to_chat(usr, "Deletion of protected ranks is not permitted, it must be removed from admin_ranks.txt.") + to_chat(usr, "Deletion of protected ranks is not permitted, it must be removed from admin_ranks.txt.", confidential=TRUE) return if(CONFIG_GET(flag/load_legacy_ranks_only)) - to_chat(usr, "Rank deletion not permitted while database rank loading is disabled.") + to_chat(usr, "Rank deletion not permitted while database rank loading is disabled.", confidential=TRUE) return admin_rank = sanitizeSQL(admin_rank) var/datum/DBQuery/query_admins_with_rank = SSdbcore.NewQuery("SELECT 1 FROM [format_table_name("admin")] WHERE rank = '[admin_rank]'") @@ -439,7 +439,7 @@ return if(query_admins_with_rank.NextRow()) qdel(query_admins_with_rank) - to_chat(usr, "Error: Rank deletion attempted while rank still used; Tell a coder, this shouldn't happen.") + to_chat(usr, "Error: Rank deletion attempted while rank still used; Tell a coder, this shouldn't happen.", confidential=TRUE) return qdel(query_admins_with_rank) if(alert("Are you sure you want to remove [admin_rank]?","Confirm Removal","Do it","Cancel") == "Do it") @@ -468,4 +468,4 @@ qdel(query_sync_lastadminrank) return qdel(query_sync_lastadminrank) - to_chat(usr, "Sync of [admin_key] successful.") + to_chat(usr, "Sync of [admin_key] successful.", confidential=TRUE) diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index 40afe56585aa..1b489af6ad3e 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -240,7 +240,7 @@ message_admins("[key_name_admin(usr)] [new_perma ? "stopped" : "started"] the arrivals shuttle") log_admin("[key_name(usr)] [new_perma ? "stopped" : "started"] the arrivals shuttle") else - to_chat(usr, "There is no arrivals shuttle") + to_chat(usr, "There is no arrivals shuttle", confidential=TRUE) if("showailaws") if(!check_rights(R_ADMIN)) return diff --git a/code/modules/admin/sql_ban_system.dm b/code/modules/admin/sql_ban_system.dm index 13a8bea6c8ec..4170f7bca9e4 100644 --- a/code/modules/admin/sql_ban_system.dm +++ b/code/modules/admin/sql_ban_system.dm @@ -267,7 +267,7 @@ if(!check_rights(R_BAN)) return if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return var/list/error_state = list() var/player_key @@ -374,7 +374,7 @@ else error_state += "No ban type was selected." if(error_state.len) - to_chat(usr, "Ban not [edit_id ? "edited" : "created"] because the following errors were present:\n[error_state.Join("\n")]") + to_chat(usr, "Ban not [edit_id ? "edited" : "created"] because the following errors were present:\n[error_state.Join("\n")]", confidential=TRUE) return if(edit_id) edit_ban(edit_id, player_key, ip_check, player_ip, cid_check, player_cid, use_last_connection, applies_to_admins, duration, interval, reason, mirror_edit, old_key, old_ip, old_cid, old_applies, page, admin_key, changes) @@ -385,7 +385,7 @@ if(!check_rights(R_BAN)) return if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return var/player_ckey = sanitizeSQL(ckey(player_key)) player_ip = sanitizeSQL(player_ip) @@ -424,7 +424,7 @@ if(R_EVERYTHING && !(R_EVERYTHING & rank.can_edit_rights)) //edit rights are a more effective way to check hierarchical rank since many non-headmins have R_PERMISSIONS now max_adminbans = MAX_ADMINBANS_PER_HEADMIN if(adminban_count >= max_adminbans) - to_chat(usr, "You've already logged [max_adminbans] admin ban(s) or more. Do not abuse this function!") + to_chat(usr, "You've already logged [max_adminbans] admin ban(s) or more. Do not abuse this function!", confidential=TRUE) qdel(query_check_adminban_count) return qdel(query_check_adminban_count) @@ -485,7 +485,7 @@ var/is_admin = FALSE if(C) build_ban_cache(C) - to_chat(C, "You have been [applies_to_admins ? "admin " : ""]banned by [usr.client.key] from [roles_to_ban[1] == "Server" ? "the server" : " Roles: [roles_to_ban.Join(", ")]"].\nReason: [reason]
This ban is [isnull(duration) ? "permanent." : "temporary, it will be removed in [time_message]."] The round ID is [GLOB.round_id].
To appeal this ban go to [appeal_url]") + to_chat(C, "You have been [applies_to_admins ? "admin " : ""]banned by [usr.client.key] from [roles_to_ban[1] == "Server" ? "the server" : " Roles: [roles_to_ban.Join(", ")]"].\nReason: [reason]
This ban is [isnull(duration) ? "permanent." : "temporary, it will be removed in [time_message]."] The round ID is [GLOB.round_id].
To appeal this ban go to [appeal_url]", confidential=TRUE) if(GLOB.admin_datums[C.ckey] || GLOB.deadmins[C.ckey]) is_admin = TRUE if(roles_to_ban[1] == "Server" && (!is_admin || (is_admin && applies_to_admins))) @@ -505,7 +505,7 @@ if(!check_rights(R_BAN)) return if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return var/datum/browser/unban_panel = new(usr, "unbanpanel", "Unbanning Panel", 850, 600) unban_panel.add_stylesheet("unbanpanelcss", 'html/admin/unbanpanel.css') @@ -600,7 +600,7 @@ if(!check_rights(R_BAN)) return if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return var/target = ban_target_string(player_key, player_ip, player_cid) if(alert(usr, "Please confirm unban of [target] from [role].", "Unban confirmation", "Yes", "No") == "No") @@ -621,7 +621,7 @@ var/client/C = GLOB.directory[player_key] if(C) build_ban_cache(C) - to_chat(C, "[usr.client.key] has removed a ban from [role] for your key.") + to_chat(C, "[usr.client.key] has removed a ban from [role] for your key.", confidential=TRUE) for(var/client/i in GLOB.clients - C) if(i.address == player_ip || i.computer_id == player_cid) build_ban_cache(i) @@ -632,7 +632,7 @@ if(!check_rights(R_BAN)) return if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return ban_id = sanitizeSQL(ban_id) var/player_ckey = sanitizeSQL(ckey(player_key)) @@ -674,7 +674,7 @@ if(R_EVERYTHING && !(R_EVERYTHING & rank.can_edit_rights)) //edit rights are a more effective way to check hierarchical rank since many non-headmins have R_PERMISSIONS now max_adminbans = MAX_ADMINBANS_PER_HEADMIN if(adminban_count >= max_adminbans) - to_chat(usr, "You've already logged [max_adminbans] admin ban(s) or more. Do not abuse this function!") + to_chat(usr, "You've already logged [max_adminbans] admin ban(s) or more. Do not abuse this function!", confidential=TRUE) qdel(query_check_adminban_count) return qdel(query_check_adminban_count) @@ -716,7 +716,7 @@ var/client/C = GLOB.directory[old_key] if(C) build_ban_cache(C) - to_chat(C, "[usr.client.key] has edited the [changes_keys_text] of a ban for your key.") + to_chat(C, "[usr.client.key] has edited the [changes_keys_text] of a ban for your key.", confidential=TRUE) for(var/client/i in GLOB.clients - C) if(i.address == old_ip || i.computer_id == old_cid) build_ban_cache(i) @@ -727,7 +727,7 @@ if(!check_rights(R_BAN)) return if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return ban_id = sanitizeSQL(ban_id) var/datum/DBQuery/query_get_ban_edits = SSdbcore.NewQuery("SELECT edits FROM [format_table_name("ban")] WHERE id = '[ban_id]'") diff --git a/code/modules/admin/sql_message_system.dm b/code/modules/admin/sql_message_system.dm index 04d4e729e7d9..72c5984defa8 100644 --- a/code/modules/admin/sql_message_system.dm +++ b/code/modules/admin/sql_message_system.dm @@ -1,7 +1,7 @@ //YOGS - FILE MOVED TO yogstation/code/modules/admin/sql_message_system.dm /proc/create_message(type, target_key, admin_ckey, text, timestamp, server, secret, logged = 1, browse, expiry, note_severity) if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return if(!type) return @@ -68,7 +68,7 @@ if(query_validate_expire_time.NextRow()) var/checktime = text2num(query_validate_expire_time.item[1]) if(!checktime) - to_chat(usr, "Datetime entered is improperly formatted or not later than current server time.") + to_chat(usr, "Datetime entered is improperly formatted or not later than current server time.", confidential=TRUE) qdel(query_validate_expire_time) return expiry = query_validate_expire_time.item[1] @@ -97,7 +97,7 @@ /proc/delete_message(message_id, logged = 1, browse) if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return message_id = text2num(message_id) if(!message_id) @@ -133,7 +133,7 @@ /proc/edit_message(message_id, browse) if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return message_id = text2num(message_id) if(!message_id) @@ -172,7 +172,7 @@ /proc/edit_message_expiry(message_id, browse) if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return message_id = text2num(message_id) if(!message_id) @@ -207,7 +207,7 @@ if(query_validate_expire_time_edit.NextRow()) var/checktime = text2num(query_validate_expire_time_edit.item[1]) if(!checktime) - to_chat(usr, "Datetime entered is improperly formatted or not later than current server time.") + to_chat(usr, "Datetime entered is improperly formatted or not later than current server time.", confidential=TRUE) qdel(query_validate_expire_time_edit) qdel(query_find_edit_expiry_message) return @@ -230,7 +230,7 @@ /proc/edit_message_severity(message_id) if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return message_id = text2num(message_id) if(!message_id) @@ -269,7 +269,7 @@ /proc/toggle_message_secrecy(message_id) if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return message_id = text2num(message_id) if(!message_id) @@ -301,7 +301,7 @@ /proc/browse_messages(type, target_ckey, index, linkless = FALSE, filter, agegate = FALSE) if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return var/list/output = list() var/ruler = "
" @@ -509,7 +509,7 @@ /proc/get_message_output(type, target_ckey) if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return if(!type) return diff --git a/code/modules/admin/stickyban.dm b/code/modules/admin/stickyban.dm index b5ae1022a97f..4a8603d615cb 100644 --- a/code/modules/admin/stickyban.dm +++ b/code/modules/admin/stickyban.dm @@ -21,7 +21,7 @@ ban["ckey"] = ckey if (get_stickyban_from_ckey(ckey)) - to_chat(usr, "Error: Can not add a stickyban: User already has a current sticky ban") + to_chat(usr, "Error: Can not add a stickyban: User already has a current sticky ban", confidential=TRUE) return if (data["reason"]) @@ -56,12 +56,12 @@ var/ban = get_stickyban_from_ckey(ckey) if (!ban) - to_chat(usr, "Error: No sticky ban for [ckey] found!") + to_chat(usr, "Error: No sticky ban for [ckey] found!", confidential=TRUE) return if (alert("Are you sure you want to remove the sticky ban on [ckey]?","Are you sure","Yes","No") == "No") return if (!get_stickyban_from_ckey(ckey)) - to_chat(usr, "Error: The ban disappeared.") + to_chat(usr, "Error: The ban disappeared.", confidential=TRUE) return world.SetConfig("ban",ckey, null) SSstickyban.cache -= ckey @@ -87,12 +87,12 @@ var/alt = ckey(data["alt"]) var/ban = get_stickyban_from_ckey(ckey) if (!ban) - to_chat(usr, "Error: No sticky ban for [ckey] found!") + to_chat(usr, "Error: No sticky ban for [ckey] found!", confidential=TRUE) return var/key = LAZYACCESS(ban["keys"], alt) if (!key) - to_chat(usr, "Error: [alt] is not linked to [ckey]'s sticky ban!") + to_chat(usr, "Error: [alt] is not linked to [ckey]'s sticky ban!", confidential=TRUE) return if (alert("Are you sure you want to disassociate [alt] from [ckey]'s sticky ban? \nNote: Nothing stops byond from re-linking them, Use \[E] to exempt them","Are you sure","Yes","No") == "No") @@ -101,13 +101,13 @@ //we have to do this again incase something changes ban = get_stickyban_from_ckey(ckey) if (!ban) - to_chat(usr, "Error: The ban disappeared.") + to_chat(usr, "Error: The ban disappeared.", confidential=TRUE) return key = LAZYACCESS(ban["keys"], alt) if (!key) - to_chat(usr, "Error: [alt] link to [ckey]'s sticky ban disappeared.") + to_chat(usr, "Error: [alt] link to [ckey]'s sticky ban disappeared.", confidential=TRUE) return LAZYREMOVE(ban["keys"], alt) @@ -129,7 +129,7 @@ var/ckey = data["ckey"] var/ban = get_stickyban_from_ckey(ckey) if (!ban) - to_chat(usr, "Error: No sticky ban for [ckey] found!") + to_chat(usr, "Error: No sticky ban for [ckey] found!", confidential=TRUE) return var/oldreason = ban["message"] var/reason = input(usr,"Reason","Reason","[ban["message"]]") as text|null @@ -138,7 +138,7 @@ //we have to do this again incase something changed while we waited for input ban = get_stickyban_from_ckey(ckey) if (!ban) - to_chat(usr, "Error: The ban disappeared.") + to_chat(usr, "Error: The ban disappeared.", confidential=TRUE) return ban["message"] = "[reason]" @@ -163,12 +163,12 @@ var/alt = ckey(data["alt"]) var/ban = get_stickyban_from_ckey(ckey) if (!ban) - to_chat(usr, "Error: No sticky ban for [ckey] found!") + to_chat(usr, "Error: No sticky ban for [ckey] found!", confidential=TRUE) return var/key = LAZYACCESS(ban["keys"], alt) if (!key) - to_chat(usr, "Error: [alt] is not linked to [ckey]'s sticky ban!") + to_chat(usr, "Error: [alt] is not linked to [ckey]'s sticky ban!", confidential=TRUE) return if (alert("Are you sure you want to exempt [alt] from [ckey]'s sticky ban?","Are you sure","Yes","No") == "No") @@ -177,13 +177,13 @@ //we have to do this again incase something changes ban = get_stickyban_from_ckey(ckey) if (!ban) - to_chat(usr, "Error: The ban disappeared.") + to_chat(usr, "Error: The ban disappeared.", confidential=TRUE) return key = LAZYACCESS(ban["keys"], alt) if (!key) - to_chat(usr, "Error: [alt]'s link to [ckey]'s sticky ban disappeared.") + to_chat(usr, "Error: [alt]'s link to [ckey]'s sticky ban disappeared.", confidential=TRUE) return LAZYREMOVE(ban["keys"], alt) key["exempt"] = TRUE @@ -210,12 +210,12 @@ var/alt = ckey(data["alt"]) var/ban = get_stickyban_from_ckey(ckey) if (!ban) - to_chat(usr, "Error: No sticky ban for [ckey] found!") + to_chat(usr, "Error: No sticky ban for [ckey] found!", confidential=TRUE) return var/key = LAZYACCESS(ban["whitelist"], alt) if (!key) - to_chat(usr, "Error: [alt] is not exempt from [ckey]'s sticky ban!") + to_chat(usr, "Error: [alt] is not exempt from [ckey]'s sticky ban!", confidential=TRUE) return if (alert("Are you sure you want to unexempt [alt] from [ckey]'s sticky ban?","Are you sure","Yes","No") == "No") @@ -224,12 +224,12 @@ //we have to do this again incase something changes ban = get_stickyban_from_ckey(ckey) if (!ban) - to_chat(usr, "Error: The ban disappeared.") + to_chat(usr, "Error: The ban disappeared.", confidential=TRUE) return key = LAZYACCESS(ban["whitelist"], alt) if (!key) - to_chat(usr, "Error: [alt]'s exemption from [ckey]'s sticky ban disappeared.") + to_chat(usr, "Error: [alt]'s exemption from [ckey]'s sticky ban disappeared.", confidential=TRUE) return LAZYREMOVE(ban["whitelist"], alt) @@ -252,7 +252,7 @@ if (!data["ckey"]) return if (!SSdbcore.Connect()) - to_chat(usr, "No database connection!") + to_chat(usr, "No database connection!", confidential=TRUE) return var/ckey = data["ckey"] @@ -261,7 +261,7 @@ return var/ban = get_stickyban_from_ckey(ckey) if (!ban) - to_chat(usr, "Error: No sticky ban for [ckey] found!") + to_chat(usr, "Error: No sticky ban for [ckey] found!", confidential=TRUE) return ban["timeout"] = TRUE @@ -279,7 +279,7 @@ if (!data["ckey"]) return if (!SSdbcore.Connect()) - to_chat(usr, "No database connection!") + to_chat(usr, "No database connection!", confidential=TRUE) return var/ckey = data["ckey"] @@ -292,7 +292,7 @@ cachedban["timeout"] = FALSE if (!ban) if (!cachedban) - to_chat(usr, "Error: No sticky ban for [ckey] found!") + to_chat(usr, "Error: No sticky ban for [ckey] found!", confidential=TRUE) return ban = cachedban @@ -312,11 +312,11 @@ return var/ban = get_stickyban_from_ckey(ckey) if (!ban) - to_chat(usr, "Error: No sticky ban for [ckey] found!") + to_chat(usr, "Error: No sticky ban for [ckey] found!", confidential=TRUE) return var/cached_ban = SSstickyban.cache[ckey] if (!cached_ban) - to_chat(usr, "Error: No cached sticky ban for [ckey] found!") + to_chat(usr, "Error: No cached sticky ban for [ckey] found!", confidential=TRUE) world.SetConfig("ban",ckey,null) log_admin_private("[key_name(usr)] has reverted [ckey]'s sticky ban to its state at round start.") diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 87e088464298..298287f4ef48 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -58,7 +58,7 @@ if(AH) AH.Action(href_list["ahelp_action"]) else - to_chat(usr, "Ticket [ahelp_ref] has been deleted!") + to_chat(usr, "Ticket [ahelp_ref] has been deleted!", confidential=TRUE) else if(href_list["ahelp_tickets"]) GLOB.ahelp_tickets.BrowseTickets(text2num(href_list["ahelp_tickets"])) @@ -71,7 +71,7 @@ return var/mob/M = locate(href_list["getplaytimewindow"]) in GLOB.mob_list if(!M) - to_chat(usr, "ERROR: Mob not found.") + to_chat(usr, "ERROR: Mob not found.", confidential=TRUE) return cmd_show_exp_panel(M.client) @@ -80,7 +80,7 @@ return var/client/C = locate(href_list["toggleexempt"]) in GLOB.clients if(!C) - to_chat(usr, "ERROR: Client not found.") + to_chat(usr, "ERROR: Client not found.", confidential=TRUE) return toggle_exempt_status(C) @@ -88,7 +88,7 @@ if(!check_rights(R_ADMIN)) return if (!SSticker.mode) - to_chat(usr, "Not until the round starts!") + to_chat(usr, "Not until the round starts!", confidential=TRUE) return switch(href_list["makeAntag"]) if("traitors") @@ -377,7 +377,7 @@ var/mob/M = locate(href_list["mob"]) if(!ismob(M)) - to_chat(usr, "This can only be used on instances of type /mob.") + to_chat(usr, "This can only be used on instances of type /mob.", confidential=TRUE) return var/delmob = FALSE @@ -450,15 +450,15 @@ var/mob/M = locate(href_list["boot2"]) if(ismob(M)) if(!check_if_greater_rights_than(M.client)) - to_chat(usr, "Error: They have more rights than you do.") + to_chat(usr, "Error: They have more rights than you do.", confidential=TRUE) return /* yogs - admins don't need handholding if(alert(usr, "Kick [key_name(M)]?", "Confirm", "Yes", "No") != "Yes") return yogs - admins don't need handholding */ if(!M) - to_chat(usr, "Error: [M] no longer exists!") + to_chat(usr, "Error: [M] no longer exists!", confidential=TRUE) return if(!M.client) - to_chat(usr, "Error: [M] no longer has a client!") + to_chat(usr, "Error: [M] no longer has a client!", confidential=TRUE) return to_chat(M, "You have been kicked from the server by [usr.client.holder.fakekey ? "an Administrator" : "[usr.client.key]"].") log_admin("[key_name(usr)] kicked [key_name(M)].") @@ -668,7 +668,7 @@ var/mob/living/carbon/human/H = locate(href_list["monkeyone"]) if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human.") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human.", confidential=TRUE) return log_admin("[key_name(usr)] attempting to monkeyize [key_name(H)].") @@ -681,7 +681,7 @@ var/mob/living/carbon/monkey/Mo = locate(href_list["humanone"]) if(!istype(Mo)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/monkey.") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/monkey.", confidential=TRUE) return log_admin("[key_name(usr)] attempting to humanize [key_name(Mo)].") @@ -694,7 +694,7 @@ var/mob/living/carbon/human/H = locate(href_list["corgione"]) if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human.") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human.", confidential=TRUE) return log_admin("[key_name(usr)] attempting to corgize [key_name(H)].") @@ -708,7 +708,7 @@ var/mob/M = locate(href_list["forcespeech"]) if(!ismob(M)) - to_chat(usr, "this can only be used on instances of type /mob.") + to_chat(usr, "this can only be used on instances of type /mob.", confidential=TRUE) var/speech = input("What will [key_name(M)] say?", "Force speech", "")// Don't need to sanitize, since it does that in say(), we also trust our admins. if(!speech) @@ -724,10 +724,10 @@ var/mob/M = locate(href_list["sendtoprison"]) if(!ismob(M)) - to_chat(usr, "This can only be used on instances of type /mob.") + to_chat(usr, "This can only be used on instances of type /mob.", confidential=TRUE) return if(isAI(M)) - to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai.") + to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai.", confidential=TRUE) return if(alert(usr, "Send [key_name(M)] to Prison?", "Message", "Yes", "No") != "Yes") @@ -746,11 +746,11 @@ var/mob/M = locate(href_list["sendbacktolobby"]) if(!isobserver(M)) - to_chat(usr, "You can only send ghost players back to the Lobby.") + to_chat(usr, "You can only send ghost players back to the Lobby.", confidential=TRUE) return if(!M.client) - to_chat(usr, "[M] doesn't seem to have an active client.") + to_chat(usr, "[M] doesn't seem to have an active client.", confidential=TRUE) return if(alert(usr, "Send [key_name(M)] back to Lobby?", "Message", "Yes", "No") != "Yes") @@ -772,10 +772,10 @@ var/mob/M = locate(href_list["tdome1"]) if(!isliving(M)) - to_chat(usr, "This can only be used on instances of type /mob/living.") + to_chat(usr, "This can only be used on instances of type /mob/living.", confidential=TRUE) return if(isAI(M)) - to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai.") + to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai.", confidential=TRUE) return var/mob/living/L = M @@ -799,10 +799,10 @@ var/mob/M = locate(href_list["tdome2"]) if(!isliving(M)) - to_chat(usr, "This can only be used on instances of type /mob/living.") + to_chat(usr, "This can only be used on instances of type /mob/living.", confidential=TRUE) return if(isAI(M)) - to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai.") + to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai.", confidential=TRUE) return var/mob/living/L = M @@ -826,10 +826,10 @@ var/mob/M = locate(href_list["tdomeadmin"]) if(!isliving(M)) - to_chat(usr, "This can only be used on instances of type /mob/living.") + to_chat(usr, "This can only be used on instances of type /mob/living.", confidential=TRUE) return if(isAI(M)) - to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai.") + to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai.", confidential=TRUE) return var/mob/living/L = M @@ -850,10 +850,10 @@ var/mob/M = locate(href_list["tdomeobserve"]) if(!isliving(M)) - to_chat(usr, "This can only be used on instances of type /mob/living.") + to_chat(usr, "This can only be used on instances of type /mob/living.", confidential=TRUE) return if(isAI(M)) - to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai.") + to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai.", confidential=TRUE) return var/mob/living/L = M @@ -878,7 +878,7 @@ var/mob/living/L = locate(href_list["revive"]) if(!istype(L)) - to_chat(usr, "This can only be used on instances of type /mob/living.") + to_chat(usr, "This can only be used on instances of type /mob/living.", confidential=TRUE) return L.revive(full_heal = 1, admin_revive = 1) @@ -891,7 +891,7 @@ var/mob/living/carbon/human/H = locate(href_list["makeai"]) if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human.") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human.", confidential=TRUE) return message_admins("Admin [key_name_admin(usr)] AIized [key_name_admin(H)]!") @@ -904,7 +904,7 @@ var/mob/living/carbon/human/H = locate(href_list["makealien"]) if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human.") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human.", confidential=TRUE) return usr.client.cmd_admin_alienize(H) @@ -915,7 +915,7 @@ var/mob/living/carbon/human/H = locate(href_list["makeslime"]) if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human.") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human.", confidential=TRUE) return usr.client.cmd_admin_slimeize(H) @@ -926,7 +926,7 @@ var/mob/living/carbon/human/H = locate(href_list["makeblob"]) if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human.") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human.", confidential=TRUE) return usr.client.cmd_admin_blobize(H) @@ -938,7 +938,7 @@ var/mob/living/carbon/human/H = locate(href_list["makerobot"]) if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human.") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human.", confidential=TRUE) return usr.client.cmd_admin_robotize(H) @@ -949,7 +949,7 @@ var/mob/M = locate(href_list["makeanimal"]) if(isnewplayer(M)) - to_chat(usr, "This cannot be used on instances of type /mob/dead/new_player.") + to_chat(usr, "This cannot be used on instances of type /mob/dead/new_player.", confidential=TRUE) return usr.client.cmd_admin_animalize(M) @@ -960,7 +960,7 @@ var/mob/living/carbon/human/H = locate(href_list["makepacman"]) if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human.") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human.", confidential=TRUE) return usr.client.cmd_admin_pacmanize(H) @@ -1026,7 +1026,7 @@ else if(href_list["adminmoreinfo"]) var/mob/M = locate(href_list["adminmoreinfo"]) in GLOB.mob_list if(!ismob(M)) - to_chat(usr, "This can only be used on instances of type /mob.") + to_chat(usr, "This can only be used on instances of type /mob.", confidential=TRUE) return var/location_description = "" @@ -1073,12 +1073,12 @@ else gender_description = "[M.gender]" - to_chat(src.owner, "Info about [M.name]: ") - to_chat(src.owner, "Mob type = [M.type]; Gender = [gender_description] Damage = [health_description]") - to_chat(src.owner, "Name = [M.name]; Real_name = [M.real_name]; Mind_name = [M.mind?"[M.mind.name]":""]; Key = [M.key];") - to_chat(src.owner, "Location = [location_description];") - to_chat(src.owner, "[special_role_description]") - to_chat(src.owner, ADMIN_FULLMONTY_NONAME(M)) + to_chat(src.owner, "Info about [M.name]: ", confidential=TRUE) + to_chat(src.owner, "Mob type = [M.type]; Gender = [gender_description] Damage = [health_description]", confidential=TRUE) + to_chat(src.owner, "Name = [M.name]; Real_name = [M.real_name]; Mind_name = [M.mind?"[M.mind.name]":""]; Key = [M.key];", confidential=TRUE) + to_chat(src.owner, "Location = [location_description];", confidential=TRUE) + to_chat(src.owner, "[special_role_description]", confidential=TRUE) + to_chat(src.owner, ADMIN_FULLMONTY_NONAME(M), confidential=TRUE) else if(href_list["addjobslot"]) if(!check_rights(R_ADMIN)) @@ -1105,7 +1105,7 @@ var/newtime = null newtime = input(usr, "How many jebs do you want?", "Add wanted posters", "[newtime]") as num|null if(!newtime) - to_chat(src.owner, "Setting to amount of positions filled for the job") + to_chat(src.owner, "Setting to amount of positions filled for the job", confidential=TRUE) job.total_positions = job.current_positions break job.total_positions = newtime @@ -1159,7 +1159,7 @@ //Yogs start - Cookies for all mobs! var/mob/H = locate(href_list["adminspawncookie"]) if(!H) - to_chat(usr, "The target of your cookie either doesn't exist or is not a /mob/.") + to_chat(usr, "The target of your cookie either doesn't exist or is not a /mob/.", confidential=TRUE) return var/obj/item/reagent_containers/food/snacks/cookie/cookie = new(H) @@ -1182,7 +1182,7 @@ var/mob/living/H = locate(href_list["adminsmite"]) in GLOB.mob_list // Yogs -- mob/living instead of mob/living/carbon/human if(!H || !istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living") // Yogs -- mob/living instead of mob/living/carbon/human + to_chat(usr, "This can only be used on instances of type /mob/living", confidential=TRUE) // Yogs -- mob/living instead of mob/living/carbon/human return usr.client.smite(H) @@ -1257,7 +1257,7 @@ var/mob/M = locate(href_list["individuallog"]) in GLOB.mob_list if(!ismob(M)) - to_chat(usr, "This can only be used on instances of type /mob.") + to_chat(usr, "This can only be used on instances of type /mob.", confidential=TRUE) return show_individual_logging_panel(M, href_list["log_src"], href_list["log_type"]) @@ -1267,7 +1267,7 @@ var/mob/M = locate(href_list["languagemenu"]) in GLOB.mob_list if(!ismob(M)) - to_chat(usr, "This can only be used on instances of type /mob.") + to_chat(usr, "This can only be used on instances of type /mob.", confidential=TRUE) return var/datum/language_holder/H = M.get_language_holder() H.open_language_menu(usr) @@ -1284,7 +1284,7 @@ if(!ismob(M)) var/datum/mind/D = M if(!istype(D)) - to_chat(usr, "This can only be used on instances of type /mob and /mind") + to_chat(usr, "This can only be used on instances of type /mob and /mind", confidential=TRUE) return else D.traitor_panel() @@ -1297,7 +1297,7 @@ var/mob/M = locate(href_list["borgpanel"]) if(!iscyborg(M)) - to_chat(usr, "This can only be used on cyborgs") + to_chat(usr, "This can only be used on cyborgs", confidential=TRUE) else open_borgopanel(M) @@ -1306,7 +1306,7 @@ return var/mob/M = locate(href_list["initmind"]) if(!ismob(M) || M.mind) - to_chat(usr, "This can only be used on instances on mindless mobs") + to_chat(usr, "This can only be used on instances on mindless mobs", confidential=TRUE) return M.mind_initialize() @@ -1384,7 +1384,7 @@ switch(where) if("inhand") if (!iscarbon(usr) && !iscyborg(usr)) - to_chat(usr, "Can only spawn in hand when you're a carbon mob or cyborg.") + to_chat(usr, "Can only spawn in hand when you're a carbon mob or cyborg.", confidential=TRUE) where = "onfloor" target = usr @@ -1396,10 +1396,10 @@ target = locate(loc.x + X,loc.y + Y,loc.z + Z) if("inmarked") if(!marked_datum) - to_chat(usr, "You don't have any object marked. Abandoning spawn.") + to_chat(usr, "You don't have any object marked. Abandoning spawn.", confidential=TRUE) return else if(!istype(marked_datum, /atom)) - to_chat(usr, "The object you have marked cannot be used as a target. Target must be of type /atom. Abandoning spawn.") + to_chat(usr, "The object you have marked cannot be used as a target. Target must be of type /atom. Abandoning spawn.", confidential=TRUE) return else target = marked_datum @@ -1724,7 +1724,7 @@ if(SSticker.IsRoundInProgress()) var/afkonly = text2num(href_list["afkonly"]) if(alert("Are you sure you want to kick all [afkonly ? "AFK" : ""] clients from the lobby??","Message","Yes","Cancel") != "Yes") - to_chat(usr, "Kick clients from lobby aborted") + to_chat(usr, "Kick clients from lobby aborted", confidential=TRUE) return var/list/listkicked = kick_clients_in_lobby("You were kicked from the lobby by [usr.client.holder.fakekey ? "an Administrator" : "[usr.client.key]"].", afkonly) @@ -1734,7 +1734,7 @@ message_admins("[key_name_admin(usr)] has kicked [afkonly ? "all AFK" : "all"] clients from the lobby. [length(listkicked)] clients kicked: [strkicked ? strkicked : "--"]") log_admin("[key_name(usr)] has kicked [afkonly ? "all AFK" : "all"] clients from the lobby. [length(listkicked)] clients kicked: [strkicked ? strkicked : "--"]") else - to_chat(usr, "You may only use this when the game is running.") + to_chat(usr, "You may only use this when the game is running.", confidential=TRUE) else if(href_list["create_outfit_finalize"]) if(!check_rights(R_ADMIN)) @@ -1791,7 +1791,7 @@ else if(href_list["viewruntime"]) var/datum/error_viewer/error_viewer = locate(href_list["viewruntime"]) if(!istype(error_viewer)) - to_chat(usr, "That runtime viewer no longer exists.") + to_chat(usr, "That runtime viewer no longer exists.", confidential=TRUE) return if(href_list["viewruntime_backto"]) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index 9e0eb8298ea3..67ba2da1fdaa 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -201,7 +201,7 @@ var/list/results = world.SDQL2_query(query_text, key_name_admin(usr), "[key_name(usr)]") if(length(results) == 3) for(var/I in 1 to 3) - to_chat(usr, results[I]) + to_chat(usr, results[I], confidential=TRUE) SSblackbox.record_feedback("nested tally", "SDQL query", 1, list(ckey, query_text)) /world/proc/SDQL2_query(query_text, log_entry1, log_entry2) @@ -224,7 +224,7 @@ return var/list/datum/SDQL2_query/running = list() var/list/datum/SDQL2_query/waiting_queue = list() //Sequential queries queue. - + for(var/list/query_tree in querys) var/datum/SDQL2_query/query = new /datum/SDQL2_query(query_tree) if(QDELETED(query)) @@ -240,7 +240,7 @@ running += query var/msg = "Starting query #[query.id] - [query.get_query_text()]." if(usr) - to_chat(usr, "[msg]") + to_chat(usr, "[msg]", confidential=TRUE) log_admin(msg) query.ARun() else //Start all @@ -248,10 +248,10 @@ running += query var/msg = "Starting query #[query.id] - [query.get_query_text()]." if(usr) - to_chat(usr, "[msg]") + to_chat(usr, "[msg]", confidential=TRUE) log_admin(msg) query.ARun() - + var/finished = FALSE var/objs_all = 0 var/objs_eligible = 0 @@ -269,7 +269,7 @@ finished = FALSE if(query.state == SDQL2_STATE_ERROR) if(usr) - to_chat(usr, "SDQL query [query.get_query_text()] errored. It will NOT be automatically garbage collected. Please remove manually.") + to_chat(usr, "SDQL query [query.get_query_text()] errored. It will NOT be automatically garbage collected. Please remove manually.", confidential=TRUE) running -= query else if(query.finished) @@ -286,12 +286,12 @@ running += next_query var/msg = "Starting query #[next_query.id] - [next_query.get_query_text()]." if(usr) - to_chat(usr, "[msg]") + to_chat(usr, "[msg]", confidential=TRUE) log_admin(msg) next_query.ARun() else if(usr) - to_chat(usr, "SDQL query [query.get_query_text()] was halted. It will NOT be automatically garbage collected. Please remove manually.") + to_chat(usr, "SDQL query [query.get_query_text()] was halted. It will NOT be automatically garbage collected. Please remove manually.", confidential=TRUE) running -= query while(!finished) @@ -848,7 +848,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null if("or", "||") result = (result || val) else - to_chat(usr, "SDQL2: Unknown op [op]") + to_chat(usr, "SDQL2: Unknown op [op]", confidential=TRUE) result = null else result = val @@ -942,7 +942,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null querys[querys_pos] = parsed_tree querys_pos++ else //There was an error so don't run anything, and tell the user which query has errored. - to_chat(usr, "Parsing error on [querys_pos]\th query. Nothing was executed.") + to_chat(usr, "Parsing error on [querys_pos]\th query. Nothing was executed.", confidential=TRUE) return list() query_tree = list() do_parse = 0 @@ -961,22 +961,22 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null for(var/item in query_tree) if(istype(item, /list)) - to_chat(usr, "[spaces](") + to_chat(usr, "[spaces](", confidential=TRUE) SDQL_testout(item, indent + 1) - to_chat(usr, "[spaces])") + to_chat(usr, "[spaces])", confidential=TRUE) else - to_chat(usr, "[spaces][item]") + to_chat(usr, "[spaces][item]", confidential=TRUE) if(!isnum(item) && query_tree[item]) if(istype(query_tree[item], /list)) - to_chat(usr, "[spaces][whitespace](") + to_chat(usr, "[spaces][whitespace](", confidential=TRUE) SDQL_testout(query_tree[item], indent + 2) - to_chat(usr, "[spaces][whitespace])") + to_chat(usr, "[spaces][whitespace])", confidential=TRUE) else - to_chat(usr, "[spaces][whitespace][query_tree[item]]") + to_chat(usr, "[spaces][whitespace][query_tree[item]]", confidential=TRUE) //Staying as a world proc as this is called too often for changes to offset the potential IsAdminAdvancedProcCall checking overhead. /world/proc/SDQL_var(object, list/expression, start = 1, source, superuser, datum/SDQL2_query/query) @@ -988,16 +988,16 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null D = object if (object == world && (!long || expression[start + 1] == ".") && !(expression[start] in exclude)) - to_chat(usr, "World variables are not allowed to be accessed. Use global.") + to_chat(usr, "World variables are not allowed to be accessed. Use global.", confidential=TRUE) return null else if(expression [start] == "{" && long) if(lowertext(copytext(expression[start + 1], 1, 3)) != "0x") - to_chat(usr, "Invalid pointer syntax: [expression[start + 1]]") + to_chat(usr, "Invalid pointer syntax: [expression[start + 1]]", confidential=TRUE) return null v = locate("\[[expression[start + 1]]]") if(!v) - to_chat(usr, "Invalid pointer: [expression[start + 1]]") + to_chat(usr, "Invalid pointer: [expression[start + 1]]", confidential=TRUE) return null start++ long = start < expression.len @@ -1080,7 +1080,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null var/list/L = v var/index = query.SDQL_expression(source, expression[start + 2]) if(isnum(index) && (!ISINTEGER(index) || L.len < index)) - to_chat(usr, "Invalid list index: [index]") + to_chat(usr, "Invalid list index: [index]", confidential=TRUE) return null return L[index] return v @@ -1130,7 +1130,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null else if(char == "'") if(word != "") - to_chat(usr, "\red SDQL2: You have an error in your SDQL syntax, unexpected ' in query: \"[query_text]\" following \"[word]\". Please check your syntax, and try again.") + to_chat(usr, "\red SDQL2: You have an error in your SDQL syntax, unexpected ' in query: \"[query_text]\" following \"[word]\". Please check your syntax, and try again.", confidential=TRUE) return null word = "'" @@ -1150,7 +1150,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null word += char if(i > len) - to_chat(usr, "\red SDQL2: You have an error in your SDQL syntax, unmatched ' in query: \"[query_text]\". Please check your syntax, and try again.") + to_chat(usr, "\red SDQL2: You have an error in your SDQL syntax, unmatched ' in query: \"[query_text]\". Please check your syntax, and try again.", confidential=TRUE) return null query_list += "[word]'" @@ -1158,7 +1158,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null else if(char == "\"") if(word != "") - to_chat(usr, "\red SDQL2: You have an error in your SDQL syntax, unexpected \" in query: \"[query_text]\" following \"[word]\". Please check your syntax, and try again.") + to_chat(usr, "\red SDQL2: You have an error in your SDQL syntax, unexpected \" in query: \"[query_text]\" following \"[word]\". Please check your syntax, and try again.", confidential=TRUE) return null word = "\"" @@ -1178,7 +1178,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null word += char if(i > len) - to_chat(usr, "\red SDQL2: You have an error in your SDQL syntax, unmatched \" in query: \"[query_text]\". Please check your syntax, and try again.") + to_chat(usr, "\red SDQL2: You have an error in your SDQL syntax, unmatched \" in query: \"[query_text]\". Please check your syntax, and try again.", confidential=TRUE) return null query_list += "[word]\"" diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm index 272bf83ca47a..1ecb9371bc4c 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm @@ -59,7 +59,7 @@ /datum/SDQL_parser/proc/parse_error(error_message) error = 1 - to_chat(usr, "SQDL2 Parsing Error: [error_message]") + to_chat(usr, "SQDL2 Parsing Error: [error_message]", confidential=TRUE) return query.len + 1 /datum/SDQL_parser/proc/parse() diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 4f4941037bd1..01a9e8c3ff33 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -200,7 +200,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) var/admin_number_present = send2irc_adminless_only(initiator_ckey, "Ticket #[id]: [name]") log_admin_private("Ticket #[id]: [key_name(initiator)]: [name] - heard by [admin_number_present] non-AFK admins who have +BAN.") if(admin_number_present <= 0) - to_chat(C, "No active admins are online, your adminhelp was sent to the admin irc.") + to_chat(C, "No active admins are online, your adminhelp was sent to the admin irc.", confidential=TRUE) heard_by_no_admins = TRUE GLOB.ahelp_tickets.active_tickets += src @@ -266,19 +266,19 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(X.prefs.toggles & SOUND_ADMINHELP) SEND_SOUND(X, sound('sound/effects/adminhelp.ogg')) window_flash(X, ignorepref = TRUE) - to_chat(X, admin_msg) + to_chat(X, admin_msg, confidential=TRUE) //show it to the person adminhelping too - to_chat(initiator, "PM to-Admins: [msg]") + to_chat(initiator, "PM to-Admins: [msg]", confidential=TRUE) //Reopen a closed ticket /datum/admin_help/proc/Reopen() if(state == AHELP_ACTIVE) - to_chat(usr, "This ticket is already open.") + to_chat(usr, "This ticket is already open.", confidential=TRUE) return if(GLOB.ahelp_tickets.CKey2ActiveTicket(initiator_ckey)) - to_chat(usr, "This user already has an active ticket, cannot reopen this one.") + to_chat(usr, "This user already has an active ticket, cannot reopen this one.", confidential=TRUE) return statclick = new(null, src) @@ -337,7 +337,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) addtimer(CALLBACK(initiator, /client/proc/giveadminhelpverb), 50) AddInteraction("Resolved by [key_name].") - to_chat(initiator, "Your ticket has been resolved by an admin. The Adminhelp verb will be returned to you shortly.") + to_chat(initiator, "Your ticket has been resolved by an admin. The Adminhelp verb will be returned to you shortly.", confidential=TRUE) if(!silent) SSblackbox.record_feedback("tally", "ahelp_stats", 1, "resolved") var/msg = "Ticket [TicketHref("#[id]")] resolved by [key_name]" @@ -354,9 +354,9 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) SEND_SOUND(initiator, sound('sound/effects/adminhelp.ogg')) - to_chat(initiator, "- AdminHelp Rejected! -") - to_chat(initiator, "Your admin help was rejected. The adminhelp verb has been returned to you so that you may try again.") - to_chat(initiator, "Please try to be calm, clear, and descriptive in admin helps, do not assume the admin has seen any related events, and clearly state the names of anybody you are reporting.") + to_chat(initiator, "- AdminHelp Rejected! -", confidential=TRUE) + to_chat(initiator, "Your admin help was rejected. The adminhelp verb has been returned to you so that you may try again.", confidential=TRUE) + to_chat(initiator, "Please try to be calm, clear, and descriptive in admin helps, do not assume the admin has seen any related events, and clearly state the names of anybody you are reporting.", confidential=TRUE) SSblackbox.record_feedback("tally", "ahelp_stats", 1, "rejected") var/msg = "Ticket [TicketHref("#[id]")] rejected by [key_name]" @@ -374,7 +374,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) msg += "Your issue has been determined by an administrator to be an in character issue and does NOT require administrator intervention at this time. For further resolution you should pursue options that are in character." if(initiator) - to_chat(initiator, msg) + to_chat(initiator, msg, confidential=TRUE) SSblackbox.record_feedback("tally", "ahelp_stats", 1, "IC") msg = "Ticket [TicketHref("#[id]")] marked as IC by [key_name]" @@ -486,12 +486,12 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) set name = "Adminhelp" if(GLOB.say_disabled) //This is here to try to identify lag problems - to_chat(usr, "Speech is currently admin-disabled.") + to_chat(usr, "Speech is currently admin-disabled.", confidential=TRUE) return //handle muting and automuting if(prefs.muted & MUTE_ADMINHELP) - to_chat(src, "Error: Admin-PM: You cannot send adminhelps (Muted).") + to_chat(src, "Error: Admin-PM: You cannot send adminhelps (Muted).", confidential=TRUE) return if(handle_spam_prevention(msg,MUTE_ADMINHELP)) return @@ -509,7 +509,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) current_ticket.TimeoutVerb() return else - to_chat(usr, "Ticket not found, creating new one...") + to_chat(usr, "Ticket not found, creating new one...", confidential=TRUE) else current_ticket.AddInteraction("[key_name_admin(usr)] opened a new ticket.") current_ticket.Close() diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index 525e4e82c0d0..d1dda5d8ddf2 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -3,7 +3,7 @@ set desc = "Area to jump to" set category = "Admin" if(!src.holder) - to_chat(src, "Only administrators may use this command.") + to_chat(src, "Only administrators may use this command.", confidential=TRUE) return if(!A) @@ -17,7 +17,7 @@ var/turf/T = safepick(turfs) if(!T) - to_chat(src, "Nowhere to jump to!") + to_chat(src, "Nowhere to jump to!", confidential=TRUE) return usr.forceMove(T) log_admin("[key_name(usr)] jumped to [AREACOORD(A)]") @@ -28,7 +28,7 @@ set name = "Jump to Turf" set category = "Admin" if(!src.holder) - to_chat(src, "Only administrators may use this command.") + to_chat(src, "Only administrators may use this command.", confidential=TRUE) return log_admin("[key_name(usr)] jumped to [AREACOORD(T)]") @@ -42,7 +42,7 @@ set name = "Jump to Mob" if(!src.holder) - to_chat(src, "Only administrators may use this command.") + to_chat(src, "Only administrators may use this command.", confidential=TRUE) return log_admin("[key_name(usr)] jumped to [key_name(M)]") @@ -61,7 +61,7 @@ set name = "Jump to Coordinate" if (!holder) - to_chat(src, "Only administrators may use this command.") + to_chat(src, "Only administrators may use this command.", confidential=TRUE) return if(src.mob) @@ -76,7 +76,7 @@ set name = "Jump to Key" if(!src.holder) - to_chat(src, "Only administrators may use this command.") + to_chat(src, "Only administrators may use this command.", confidential=TRUE) return var/list/keys = list() @@ -84,7 +84,7 @@ keys += M.client var/client/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortKey(keys) if(!selection) - to_chat(src, "No keys found.") + to_chat(src, "No keys found.", confidential=TRUE) return var/mob/M = selection.mob log_admin("[key_name(usr)] jumped to [key_name(M)]") @@ -99,7 +99,7 @@ set name = "Get Mob" set desc = "Mob to teleport" if(!src.holder) - to_chat(src, "Only administrators may use this command.") + to_chat(src, "Only administrators may use this command.", confidential=TRUE) return var/atom/loc = get_turf(usr) @@ -116,7 +116,7 @@ set desc = "Key to teleport" if(!src.holder) - to_chat(src, "Only administrators may use this command.") + to_chat(src, "Only administrators may use this command.", confidential=TRUE) return var/list/keys = list() @@ -142,7 +142,7 @@ set category = "Admin" set name = "Send Mob" if(!src.holder) - to_chat(src, "Only administrators may use this command.") + to_chat(src, "Only administrators may use this command.", confidential=TRUE) return var/area/A = input(usr, "Pick an area.", "Pick an area") in GLOB.sortedAreas|null if(A && istype(A)) @@ -153,5 +153,5 @@ message_admins(msg) admin_ticket_log(M, msg) else - to_chat(src, "Failed to move mob to a valid location.") + to_chat(src, "Failed to move mob to a valid location.", confidential=TRUE) SSblackbox.record_feedback("tally", "admin_verb", 1, "Send Mob") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 5aa4f2a4d225..59353b461ec2 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -6,7 +6,7 @@ set category = null set name = "Admin PM Mob" if(!holder) - to_chat(src, "Error: Admin-PM-Context: Only administrators may use this command.") + to_chat(src, "Error: Admin-PM-Context: Only administrators may use this command.", confidential=TRUE) return if(!ismob(M)) //yogs start return @@ -23,7 +23,7 @@ set category = "Admin" set name = "Admin PM" if(!holder) - to_chat(src, "Error: Admin-PM-Panel: Only administrators may use this command.") + to_chat(src, "Error: Admin-PM-Panel: Only administrators may use this command.", confidential=TRUE) return var/list/client/targets[0] for(var/client/T) @@ -42,7 +42,7 @@ /client/proc/cmd_ahelp_reply(whom) if(prefs.muted & MUTE_ADMINHELP) - to_chat(src, "Error: Admin-PM: You are unable to use admin PM-s (muted).") + to_chat(src, "Error: Admin-PM: You are unable to use admin PM-s (muted).", confidential=TRUE) return var/client/C if(istext(whom)) @@ -53,7 +53,7 @@ C = whom if(!C) if(holder) - to_chat(src, "Error: Admin-PM: Client not found.") + to_chat(src, "Error: Admin-PM: Client not found.", confidential=TRUE) return var/datum/admin_help/AH = C.current_ticket @@ -70,12 +70,12 @@ //Fetching a message if needed. src is the sender and C is the target client /client/proc/cmd_admin_pm(whom, msg) if(prefs.muted & MUTE_ADMINHELP) - to_chat(src, "Error: Admin-PM: You are unable to use admin PM-s (muted).") + to_chat(src, "Error: Admin-PM: You are unable to use admin PM-s (muted).", confidential=TRUE) return if(!holder && !current_ticket) //no ticket? https://www.youtube.com/watch?v=iHSPf6x1Fdo - to_chat(src, "You can no longer reply to this ticket, please open another one by using the Adminhelp verb if need be.") - to_chat(src, "Message: [msg]") + to_chat(src, "You can no longer reply to this ticket, please open another one by using the Adminhelp verb if need be.", confidential=TRUE) + to_chat(src, "Message: [msg]", confidential=TRUE) return var/client/recipient @@ -100,16 +100,16 @@ if(!msg) return if(holder) - to_chat(src, "Error: Use the admin IRC channel, nerd.") + to_chat(src, "Error: Use the admin IRC channel, nerd.", confidential=TRUE) return else if(!recipient) if(holder) - to_chat(src, "Error: Admin-PM: Client not found.") + to_chat(src, "Error: Admin-PM: Client not found.", confidential=TRUE) if(msg) - to_chat(src, msg) + to_chat(src, msg, confidential=TRUE) return else if(msg) // you want to continue if there's no message instead of returning now current_ticket.MessageNoRecipient(msg) @@ -123,12 +123,12 @@ return if(prefs.muted & MUTE_ADMINHELP) - to_chat(src, "Error: Admin-PM: You are unable to use admin PM-s (muted).") + to_chat(src, "Error: Admin-PM: You are unable to use admin PM-s (muted).", confidential=TRUE) return if(!recipient) if(holder) - to_chat(src, "Error: Admin-PM: Client not found.") + to_chat(src, "Error: Admin-PM: Client not found.", confidential=TRUE) else current_ticket.MessageNoRecipient(msg) return @@ -150,15 +150,15 @@ var/keywordparsedmsg = keywords_lookup(msg) if(irc) - to_chat(src, "PM to-Admins: [rawmsg]") + to_chat(src, "PM to-Admins: [rawmsg]", confidential=TRUE) var/datum/admin_help/AH = admin_ticket_log(src, keywordparsedmsg) // yogs - Yog Tickets ircreplyamount-- send2irc("[AH ? "#[AH.id] " : ""]Reply: [ckey]", rawmsg) else if(recipient.holder) if(holder) - to_chat(recipient, "Admin PM from-[key_name(src, recipient, 1)]: [keywordparsedmsg]") - to_chat(src, "Admin PM to-[key_name(recipient, src, 1)]: [keywordparsedmsg]") + to_chat(recipient, "Admin PM from-[key_name(src, recipient, 1)]: [keywordparsedmsg]", confidential=TRUE) + to_chat(src, "Admin PM to-[key_name(recipient, src, 1)]: [keywordparsedmsg]", confidential=TRUE) //omg this is dumb, just fill in both their tickets // yogs start - Yog Tickets @@ -172,11 +172,11 @@ else //recipient is an admin but sender is not //YOGS START -- Yogs Tickets if(!current_ticket) - to_chat(src, "Ticket closed, please make a new one before trying to contact admins!") + to_chat(src, "Ticket closed, please make a new one before trying to contact admins!", confidential=TRUE) return admin_ticket_log(src, msg, FALSE) - to_chat(recipient, "Reply PM from-[key_name(src, recipient, 1)]: [keywordparsedmsg]") - to_chat(src, "-- [key_name(src, null, 0)] -> Admins: [msg]") + to_chat(recipient, "Reply PM from-[key_name(src, recipient, 1)]: [keywordparsedmsg]", confidential=TRUE) + to_chat(src, "-- [key_name(src, null, 0)] -> Admins: [msg]", confidential=TRUE) //YOGS END //play the receiving admin the adminhelp sound (if they have them enabled) @@ -190,10 +190,10 @@ if(!recipient.current_ticket.handling_admin) recipient.current_ticket.Administer(src) // yogs - Yog Tickets - to_chat(recipient, "-- Administrator private message --") - to_chat(recipient, "Admin PM from-[key_name(src, recipient, 0)]: [msg]") - to_chat(recipient, "Click on the administrator's name to reply.") - to_chat(src, "Admin PM to-[key_name(recipient, src, 1)]: [msg]") + to_chat(recipient, "-- Administrator private message --", confidential=TRUE) + to_chat(recipient, "Admin PM from-[key_name(src, recipient, 0)]: [msg]", confidential=TRUE) + to_chat(recipient, "Click on the administrator's name to reply.", confidential=TRUE) + to_chat(src, "Admin PM to-[key_name(recipient, src, 1)]: [msg]", confidential=TRUE) admin_ticket_log(recipient, "PM From [src]: [msg]", FALSE)// yogs - Yog Tickets @@ -214,20 +214,20 @@ return else //neither are admins - to_chat(src, "Error: Admin-PM: Non-admin to non-admin PM communication is forbidden.") + to_chat(src, "Error: Admin-PM: Non-admin to non-admin PM communication is forbidden.", confidential=TRUE) return if(irc) log_admin_private("PM: [key_name(src)]->IRC: [rawmsg]") for(var/client/X in GLOB.admins) - to_chat(X, "PM: [key_name(src, X, 0)]->IRC: [keywordparsedmsg]") + to_chat(X, "PM: [key_name(src, X, 0)]->IRC: [keywordparsedmsg]", confidential=TRUE) 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, "PM: [key_name(src, X, 0)]->[key_name(recipient, X, 0)]: [keywordparsedmsg]" ) + to_chat(X, "PM: [key_name(src, X, 0)]->[key_name(recipient, X, 0)]: [keywordparsedmsg]" , confidential=TRUE) @@ -309,9 +309,9 @@ log_admin_private("IRC PM: [sender] -> [key_name(C)] : [msg]") msg = emoji_parse(msg) - to_chat(C, "-- Administrator private message --") - to_chat(C, "Admin PM from-[adminname]: [msg]") // yogs - Yog Tickets - to_chat(C, "Click on the administrator's name to reply.") // yogs - Yog Tickets + to_chat(C, "-- Administrator private message --", confidential=TRUE) + to_chat(C, "Admin PM from-[adminname]: [msg]", confidential=TRUE) // yogs - Yog Tickets + to_chat(C, "Click on the administrator's name to reply.", confidential=TRUE) // yogs - Yog Tickets admin_ticket_log(C, "PM From [irc_tagged]: [msg]") // yogs - Yog Tickets diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index 83b73a72c4ac..6f1682493dc8 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -14,7 +14,7 @@ msg = keywords_lookup(msg) var/custom_asay_color = (CONFIG_GET(flag/allow_admin_asaycolor) && prefs.asaycolor) ? "" : null // Yogs -- yogs asay msg = "ADMIN: [key_name(usr, 1)] [ADMIN_FLW(mob)]: [custom_asay_color][msg][custom_asay_color ? "":null]" - to_chat(GLOB.admins, msg) + to_chat(GLOB.admins, msg, confidential=TRUE) SSblackbox.record_feedback("tally", "admin_verb", 1, "Asay") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/atmosdebug.dm b/code/modules/admin/verbs/atmosdebug.dm index 48434dba49ee..c35abfbe3a6b 100644 --- a/code/modules/admin/verbs/atmosdebug.dm +++ b/code/modules/admin/verbs/atmosdebug.dm @@ -2,30 +2,30 @@ set category = "Mapping" set name = "Check Plumbing" if(!src.holder) - to_chat(src, "Only administrators may use this command.") + to_chat(src, "Only administrators may use this command.", confidential=TRUE) return SSblackbox.record_feedback("tally", "admin_verb", 1, "Check Plumbing") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! //all plumbing - yes, some things might get stated twice, doesn't matter. for(var/obj/machinery/atmospherics/components/pipe in GLOB.machines) if(pipe.z && (!pipe.nodes || !pipe.nodes.len || (null in pipe.nodes))) - to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_VERBOSEJMP(pipe)]") + to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_VERBOSEJMP(pipe)]", confidential=TRUE) //Manifolds for(var/obj/machinery/atmospherics/pipe/manifold/pipe in GLOB.machines) if(pipe.z && (!pipe.nodes || !pipe.nodes.len || (null in pipe.nodes))) - to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_VERBOSEJMP(pipe)]") + to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_VERBOSEJMP(pipe)]", confidential=TRUE) //Pipes for(var/obj/machinery/atmospherics/pipe/simple/pipe in GLOB.machines) if(pipe.z && (!pipe.nodes || !pipe.nodes.len || (null in pipe.nodes))) - to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_VERBOSEJMP(pipe)]") + to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_VERBOSEJMP(pipe)]", confidential=TRUE) /client/proc/powerdebug() set category = "Mapping" set name = "Check Power" if(!src.holder) - to_chat(src, "Only administrators may use this command.") + to_chat(src, "Only administrators may use this command.", confidential=TRUE) return SSblackbox.record_feedback("tally", "admin_verb", 1, "Check Power") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -33,9 +33,9 @@ if (!PN.nodes || !PN.nodes.len) if(PN.cables && (PN.cables.len > 1)) var/obj/structure/cable/C = PN.cables[1] - to_chat(usr, "Powernet with no nodes! (number [PN.number]) - example cable at [ADMIN_VERBOSEJMP(C)]") + to_chat(usr, "Powernet with no nodes! (number [PN.number]) - example cable at [ADMIN_VERBOSEJMP(C)]", confidential=TRUE) if (!PN.cables || (PN.cables.len < 10)) if(PN.cables && (PN.cables.len > 1)) var/obj/structure/cable/C = PN.cables[1] - to_chat(usr, "Powernet with fewer than 10 cables! (number [PN.number]) - example cable at [ADMIN_VERBOSEJMP(C)]") + to_chat(usr, "Powernet with fewer than 10 cables! (number [PN.number]) - example cable at [ADMIN_VERBOSEJMP(C)]", confidential=TRUE) diff --git a/code/modules/admin/verbs/bluespacearty.dm b/code/modules/admin/verbs/bluespacearty.dm index 5b4b7db663e8..46f55dd7d926 100644 --- a/code/modules/admin/verbs/bluespacearty.dm +++ b/code/modules/admin/verbs/bluespacearty.dm @@ -5,7 +5,7 @@ var/mob/living/target = M if(!isliving(target)) - to_chat(usr, "This can only be used on instances of type /mob/living") + to_chat(usr, "This can only be used on instances of type /mob/living", confidential=TRUE) return explosion(target.loc, 0, 0, 0, 0) diff --git a/code/modules/admin/verbs/borgpanel.dm b/code/modules/admin/verbs/borgpanel.dm index 627eed720dbf..171885cfc9b6 100644 --- a/code/modules/admin/verbs/borgpanel.dm +++ b/code/modules/admin/verbs/borgpanel.dm @@ -9,7 +9,7 @@ if (!istype(borgo, /mob/living/silicon/robot)) borgo = input("Select a borg", "Select a borg", null, null) as null|anything in GLOB.silicon_mobs if (!istype(borgo, /mob/living/silicon/robot)) - to_chat(usr, "Borg is required for borgpanel") + to_chat(usr, "Borg is required for borgpanel", confidential=TRUE) var/datum/borgpanel/borgpanel = new(usr, borgo) diff --git a/code/modules/admin/verbs/deadsay.dm b/code/modules/admin/verbs/deadsay.dm index 058d9d5d0268..43d4ce61b41a 100644 --- a/code/modules/admin/verbs/deadsay.dm +++ b/code/modules/admin/verbs/deadsay.dm @@ -3,12 +3,12 @@ set name = "Dsay" set hidden = 1 if(!holder) - to_chat(src, "Only administrators may use this command.") + to_chat(src, "Only administrators may use this command.", confidential=TRUE) return if(!mob) return if(prefs.muted & MUTE_DEADCHAT) - to_chat(src, "You cannot send DSAY messages (muted).") + to_chat(src, "You cannot send DSAY messages (muted).", confidential=TRUE) return if (handle_spam_prevention(msg,MUTE_DEADCHAT)) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 89c5024c829d..134b0b69e32d 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -59,12 +59,12 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if(targetselected) if(!hascall(target, procname)) - to_chat(usr, "Error: callproc(): type [target.type] has no [proctype] named [procpath].") + to_chat(usr, "Error: callproc(): type [target.type] has no [proctype] named [procpath].", confidential=TRUE) return else procpath = "/[proctype]/[procname]" if(!text2path(procpath)) - to_chat(usr, "Error: callproc(): [procpath] does not exist.") + to_chat(usr, "Error: callproc(): [procpath] does not exist.", confidential=TRUE) return var/list/lst = get_callproc_args() @@ -73,7 +73,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if(targetselected) if(!target) - to_chat(usr, "Error: callproc(): owner of proc no longer exists.") + to_chat(usr, "Error: callproc(): owner of proc no longer exists.", confidential=TRUE) return var/msg = "[key_name(src)] called [target]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no argument"]." log_admin(msg) @@ -87,7 +87,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that returnval = WrapAdminProcCall(GLOBAL_PROC, procpath, lst) //calling globals needs full qualified name (e.g /proc/foo) . = get_callproc_returnval(returnval, procname) if(.) - to_chat(usr, .) + to_chat(usr, ., confidential=TRUE) SSblackbox.record_feedback("tally", "admin_verb", 1, "Advanced ProcCall") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! GLOBAL_VAR(AdminProcCaller) @@ -105,11 +105,11 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) /proc/WrapAdminProcCall(datum/target, procname, list/arguments) if(target != GLOBAL_PROC && procname == "Del") - to_chat(usr, "Calling Del() is not allowed") + to_chat(usr, "Calling Del() is not allowed", confidential=TRUE) return if(target != GLOBAL_PROC && !target.CanProcCall(procname)) - to_chat(usr, "Proccall on [target.type]/proc/[procname] is disallowed!") + to_chat(usr, "Proccall on [target.type]/proc/[procname] is disallowed!", confidential=TRUE) return var/current_caller = GLOB.AdminProcCaller var/ckey = usr ? usr.client.ckey : GLOB.AdminProcCaller @@ -117,10 +117,10 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) CRASH("WrapAdminProcCall with no ckey: [target] [procname] [english_list(arguments)]") if(current_caller && current_caller != ckey) if(!GLOB.AdminProcCallSpamPrevention[ckey]) - to_chat(usr, "Another set of admin called procs are still running, your proc will be run after theirs finish.") + to_chat(usr, "Another set of admin called procs are still running, your proc will be run after theirs finish.", confidential=TRUE) GLOB.AdminProcCallSpamPrevention[ckey] = TRUE UNTIL(!GLOB.AdminProcCaller) - to_chat(usr, "Running your proc") + to_chat(usr, "Running your proc", confidential=TRUE) GLOB.AdminProcCallSpamPrevention -= ckey else UNTIL(!GLOB.AdminProcCaller) @@ -161,14 +161,14 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) if(!procname) return if(!hascall(A,procname)) - to_chat(usr, "Error: callproc_datum(): type [A.type] has no proc named [procname].") + to_chat(usr, "Error: callproc_datum(): type [A.type] has no proc named [procname].", confidential=TRUE) return var/list/lst = get_callproc_args() if(!lst) return if(!A || !IsValidSrc(A)) - to_chat(usr, "Error: callproc_datum(): owner of proc no longer exists.") + to_chat(usr, "Error: callproc_datum(): owner of proc no longer exists.", confidential=TRUE) return var/msg = "[key_name(src)] called [A]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]." log_admin(msg) @@ -179,7 +179,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) var/returnval = WrapAdminProcCall(A, procname, lst) // Pass the lst as an argument list to the proc . = get_callproc_returnval(returnval,procname) if(.) - to_chat(usr, .) + to_chat(usr, ., confidential=TRUE) /client/proc/get_callproc_args() var/argnum = input("Number of arguments","Number:",0) as num|null @@ -520,7 +520,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) var/list/dat = list() if(SSticker.current_state == GAME_STATE_STARTUP) - to_chat(usr, "Game still loading, please hold!") + to_chat(usr, "Game still loading, please hold!", confidential=TRUE) return message_admins("[key_name_admin(usr)] used the Test Atmos Monitor debug command.") @@ -566,7 +566,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) var/list/station_areas_blacklist = typecacheof(list(/area/holodeck/rec_center, /area/shuttle, /area/engine/supermatter, /area/science/test_area, /area/space, /area/solar, /area/mine, /area/ruin, /area/asteroid)) if(SSticker.current_state == GAME_STATE_STARTUP) - to_chat(usr, "Game still loading, please hold!") + to_chat(usr, "Game still loading, please hold!", confidential=TRUE) return var/log_message @@ -871,19 +871,19 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) switch(input("Which list?") in list("Players","Admins","Mobs","Living Mobs","Dead Mobs","Clients","Joined Clients")) if("Players") - to_chat(usr, jointext(GLOB.player_list,",")) + to_chat(usr, jointext(GLOB.player_list,","), confidential=TRUE) if("Admins") - to_chat(usr, jointext(GLOB.admins,",")) + to_chat(usr, jointext(GLOB.admins,","), confidential=TRUE) if("Mobs") - to_chat(usr, jointext(GLOB.mob_list,",")) + to_chat(usr, jointext(GLOB.mob_list,","), confidential=TRUE) if("Living Mobs") - to_chat(usr, jointext(GLOB.alive_mob_list,",")) + to_chat(usr, jointext(GLOB.alive_mob_list,","), confidential=TRUE) if("Dead Mobs") - to_chat(usr, jointext(GLOB.dead_mob_list,",")) + to_chat(usr, jointext(GLOB.dead_mob_list,","), confidential=TRUE) if("Clients") - to_chat(usr, jointext(GLOB.clients,",")) + to_chat(usr, jointext(GLOB.clients,","), confidential=TRUE) if("Joined Clients") - to_chat(usr, jointext(GLOB.joined_player_list,",")) + to_chat(usr, jointext(GLOB.joined_player_list,","), confidential=TRUE) /client/proc/cmd_display_del_log() set category = "Debug" @@ -966,8 +966,8 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) if(istype(landmark)) var/datum/map_template/ruin/template = landmark.ruin_template usr.forceMove(get_turf(landmark)) - to_chat(usr, "[template.name]") - to_chat(usr, "[template.description]") + to_chat(usr, "[template.name]", confidential=TRUE) + to_chat(usr, "[template.description]", confidential=TRUE) /client/proc/place_ruin() set category = "Debug" @@ -1008,10 +1008,10 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) var/obj/effect/landmark/ruin/landmark = GLOB.ruin_landmarks[GLOB.ruin_landmarks.len] log_admin("[key_name(src)] randomly spawned ruin [ruinname] at [COORD(landmark)].") usr.forceMove(get_turf(landmark)) - to_chat(src, "[template.name]") - to_chat(src, "[template.description]") + to_chat(src, "[template.name]", confidential=TRUE) + to_chat(src, "[template.description]", confidential=TRUE) else - to_chat(src, "Failed to place [template.name].") + to_chat(src, "Failed to place [template.name].", confidential=TRUE) /client/proc/clear_dynamic_transit() set category = "Debug" diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm index 345a48778361..08463d037b02 100644 --- a/code/modules/admin/verbs/diagnostics.dm +++ b/code/modules/admin/verbs/diagnostics.dm @@ -13,7 +13,7 @@ var/moles = gas[MOLES] if (moles >= 0.00001) lines += "[gas[GAS_META][META_GAS_NAME]]: [moles] mol" - to_chat(usr, lines.Join("\n")) + to_chat(usr, lines.Join("\n"), confidential=TRUE) /client/proc/air_status(turf/target) set category = "Debug" diff --git a/code/modules/admin/verbs/fps.dm b/code/modules/admin/verbs/fps.dm index a73895505261..012854ea38d7 100644 --- a/code/modules/admin/verbs/fps.dm +++ b/code/modules/admin/verbs/fps.dm @@ -11,7 +11,7 @@ var/new_fps = round(input("Sets game frames-per-second. Can potentially break the game (default: [cfg_fps])","FPS", world.fps) as num|null) if(new_fps <= 0) - to_chat(src, "Error: set_server_fps(): Invalid world.fps value. No changes made.") + to_chat(src, "Error: set_server_fps(): Invalid world.fps value. No changes made.", confidential=TRUE) return if(new_fps > cfg_fps * 1.5) if(alert(src, "You are setting fps to a high value:\n\t[new_fps] frames-per-second\n\tconfig.fps = [cfg_fps]","Warning!","Confirm","ABORT-ABORT-ABORT") != "Confirm") diff --git a/code/modules/admin/verbs/getlogs.dm b/code/modules/admin/verbs/getlogs.dm index 21a722d32fd4..56ea30073718 100644 --- a/code/modules/admin/verbs/getlogs.dm +++ b/code/modules/admin/verbs/getlogs.dm @@ -31,5 +31,5 @@ src << ftp(file(path)) else return - to_chat(src, "Attempting to send [path], this may take a fair few minutes if the file is very large.") + to_chat(src, "Attempting to send [path], this may take a fair few minutes if the file is very large.", confidential=TRUE) return \ No newline at end of file diff --git a/code/modules/admin/verbs/map_template_loadverb.dm b/code/modules/admin/verbs/map_template_loadverb.dm index c5c9a0daf4b3..70816a0ad163 100644 --- a/code/modules/admin/verbs/map_template_loadverb.dm +++ b/code/modules/admin/verbs/map_template_loadverb.dm @@ -23,7 +23,7 @@ if(template.load(T, centered = TRUE)) message_admins("[key_name_admin(src)] has placed a map template ([template.name]) at [ADMIN_COORDJMP(T)]") else - to_chat(src, "Failed to place map") + to_chat(src, "Failed to place map", confidential=TRUE) images -= preview /client/proc/map_template_upload() @@ -34,7 +34,7 @@ if(!map) return if(copytext("[map]",-4) != ".dmm") - to_chat(src, "Filename must end in '.dmm': [map]") + to_chat(src, "Filename must end in '.dmm': [map]", confidential=TRUE) return var/datum/map_template/M switch(alert(src, "What kind of map is this?", "Map type", "Normal", "Shuttle", "Cancel")) @@ -45,7 +45,7 @@ else return if(!M.cached_map) - to_chat(src, "Map template '[map]' failed to parse properly.") + to_chat(src, "Map template '[map]' failed to parse properly.", confidential=TRUE) return var/datum/map_report/report = M.cached_map.check_for_errors() @@ -53,7 +53,7 @@ if(report) report.show_to(src) report_link = " - validation report" - to_chat(src, "Map template '[map]' failed validation.") + to_chat(src, "Map template '[map]' failed validation.", confidential=TRUE) if(report.loadable) var/response = alert(src, "The map failed validation, would you like to load it anyways?", "Map Errors", "Cancel", "Upload Anyways") if(response != "Upload Anyways") @@ -64,4 +64,4 @@ SSmapping.map_templates[M.name] = M message_admins("[key_name_admin(src)] has uploaded a map template '[map]' ([M.width]x[M.height])[report_link].") - to_chat(src, "Map template '[map]' ready to place ([M.width]x[M.height])") + to_chat(src, "Map template '[map]' ready to place ([M.width]x[M.height])", confidential=TRUE) diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index 6e6a76642514..46324b522bfd 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -190,12 +190,12 @@ GLOBAL_LIST_EMPTY(dirty_vars) count++ if(count) - to_chat(usr, "[count] AT markers removed.") + to_chat(usr, "[count] AT markers removed.", confidential=TRUE) else for(var/t in GLOB.active_turfs_startlist) new /obj/effect/abstract/marker/at(t) count++ - to_chat(usr, "[count] AT markers placed.") + to_chat(usr, "[count] AT markers placed.", confidential=TRUE) SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Roundstart Active Turf Markers") @@ -373,4 +373,4 @@ GLOBAL_VAR_INIT(say_disabled, FALSE) messages += "[part.Join("")]" messages += "" - to_chat(src, messages.Join("")) + to_chat(src, messages.Join(""), confidential=TRUE) diff --git a/code/modules/admin/verbs/massmodvar.dm b/code/modules/admin/verbs/massmodvar.dm index ba199350e3c2..e8d89bf95695 100644 --- a/code/modules/admin/verbs/massmodvar.dm +++ b/code/modules/admin/verbs/massmodvar.dm @@ -38,7 +38,7 @@ var/var_value = O.vars[variable] if(variable in GLOB.VVckey_edit) - to_chat(src, "It's forbidden to mass-modify ckeys. It'll crash everyone's client you dummy.") + to_chat(src, "It's forbidden to mass-modify ckeys. It'll crash everyone's client you dummy.", confidential=TRUE) return if(variable in GLOB.VVlocked) if(!check_rights(R_DEBUG)) @@ -56,11 +56,11 @@ default = vv_get_class(variable, var_value) if(isnull(default)) - to_chat(src, "Unable to determine variable type.") + to_chat(src, "Unable to determine variable type.", confidential=TRUE) else - to_chat(src, "Variable appears to be [uppertext(default)].") + to_chat(src, "Variable appears to be [uppertext(default)].", confidential=TRUE) - to_chat(src, "Variable contains: [var_value]") + to_chat(src, "Variable contains: [var_value]", confidential=TRUE) if(default == VV_NUM) var/dir_text = "" @@ -75,7 +75,7 @@ dir_text += "WEST" if(dir_text) - to_chat(src, "If a direction, direction is: [dir_text]") + to_chat(src, "If a direction, direction is: [dir_text]", confidential=TRUE) var/value = vv_get_value(default_class = default) var/new_value = value["value"] @@ -97,9 +97,9 @@ switch(class) if(VV_RESTORE_DEFAULT) - to_chat(src, "Finding items...") + to_chat(src, "Finding items...", confidential=TRUE) var/list/items = get_all_of_type(O.type, method) - to_chat(src, "Changing [items.len] items...") + to_chat(src, "Changing [items.len] items...", confidential=TRUE) for(var/thing in items) if (!thing) continue @@ -123,9 +123,9 @@ for(var/V in varsvars) new_value = replacetext(new_value,"\[[V]]","[O.vars[V]]") - to_chat(src, "Finding items...") + to_chat(src, "Finding items...", confidential=TRUE) var/list/items = get_all_of_type(O.type, method) - to_chat(src, "Changing [items.len] items...") + to_chat(src, "Changing [items.len] items...", confidential=TRUE) for(var/thing in items) if (!thing) continue @@ -151,9 +151,9 @@ many = FALSE var/type = value["type"] - to_chat(src, "Finding items...") + to_chat(src, "Finding items...", confidential=TRUE) var/list/items = get_all_of_type(O.type, method) - to_chat(src, "Changing [items.len] items...") + to_chat(src, "Changing [items.len] items...", confidential=TRUE) for(var/thing in items) if (!thing) continue @@ -169,9 +169,9 @@ CHECK_TICK else - to_chat(src, "Finding items...") + to_chat(src, "Finding items...", confidential=TRUE) var/list/items = get_all_of_type(O.type, method) - to_chat(src, "Changing [items.len] items...") + to_chat(src, "Changing [items.len] items...", confidential=TRUE) for(var/thing in items) if (!thing) continue @@ -185,13 +185,13 @@ var/count = rejected+accepted if (!count) - to_chat(src, "No objects found") + to_chat(src, "No objects found", confidential=TRUE) return if (!accepted) - to_chat(src, "Every object rejected your edit") + to_chat(src, "Every object rejected your edit", confidential=TRUE) return if (rejected) - to_chat(src, "[rejected] out of [count] objects rejected your edit") + to_chat(src, "[rejected] out of [count] objects rejected your edit", confidential=TRUE) log_world("### MassVarEdit by [src]: [O.type] (A/R [accepted]/[rejected]) [variable]=[html_encode("[O.vars[variable]]")]([list2params(value)])") log_admin("[key_name(src)] mass modified [original_name]'s [variable] to [O.vars[variable]] ([accepted] objects modified)") diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index bc3784e4e987..416f26d3e730 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -354,7 +354,7 @@ GLOBAL_PROTECT(VVpixelmovement) L[var_value] = mod_list_add_ass(O) //hehe if (O) if (O.vv_edit_var(objectvar, L) == FALSE) - to_chat(src, "Your edit was rejected by the object.") + to_chat(src, "Your edit was rejected by the object.", confidential=TRUE) return log_world("### ListVarEdit by [src]: [(O ? O.type : "/list")] [objectvar]: ADDED=[var_value]") log_admin("[key_name(src)] modified [original_name]'s [objectvar]: ADDED=[var_value]") @@ -364,7 +364,7 @@ GLOBAL_PROTECT(VVpixelmovement) if(!check_rights(R_VAREDIT)) return if(!istype(L, /list)) - to_chat(src, "Not a List.") + to_chat(src, "Not a List.", confidential=TRUE) return if(L.len > 1000) @@ -397,7 +397,7 @@ GLOBAL_PROTECT(VVpixelmovement) L = L.Copy() listclearnulls(L) if (!O.vv_edit_var(objectvar, L)) - to_chat(src, "Your edit was rejected by the object.") + to_chat(src, "Your edit was rejected by the object.", confidential=TRUE) return log_world("### ListVarEdit by [src]: [O.type] [objectvar]: CLEAR NULLS") log_admin("[key_name(src)] modified [original_name]'s [objectvar]: CLEAR NULLS") @@ -407,7 +407,7 @@ GLOBAL_PROTECT(VVpixelmovement) if(variable == "(CLEAR DUPES)") L = uniqueList(L) if (!O.vv_edit_var(objectvar, L)) - to_chat(src, "Your edit was rejected by the object.") + to_chat(src, "Your edit was rejected by the object.", confidential=TRUE) return log_world("### ListVarEdit by [src]: [O.type] [objectvar]: CLEAR DUPES") log_admin("[key_name(src)] modified [original_name]'s [objectvar]: CLEAR DUPES") @@ -417,7 +417,7 @@ GLOBAL_PROTECT(VVpixelmovement) if(variable == "(SHUFFLE)") L = shuffle(L) if (!O.vv_edit_var(objectvar, L)) - to_chat(src, "Your edit was rejected by the object.") + to_chat(src, "Your edit was rejected by the object.", confidential=TRUE) return log_world("### ListVarEdit by [src]: [O.type] [objectvar]: SHUFFLE") log_admin("[key_name(src)] modified [original_name]'s [objectvar]: SHUFFLE") @@ -446,9 +446,9 @@ GLOBAL_PROTECT(VVpixelmovement) default = vv_get_class(objectvar, variable) - to_chat(src, "Variable appears to be [uppertext(default)].") + to_chat(src, "Variable appears to be [uppertext(default)].", confidential=TRUE) - to_chat(src, "Variable contains: [variable]") + to_chat(src, "Variable contains: [variable]", confidential=TRUE) if(default == VV_NUM) var/dir_text = "" @@ -464,7 +464,7 @@ GLOBAL_PROTECT(VVpixelmovement) dir_text += "WEST" if(dir_text) - to_chat(usr, "If a direction, direction is: [dir_text]") + to_chat(usr, "If a direction, direction is: [dir_text]", confidential=TRUE) var/original_var = variable @@ -492,7 +492,7 @@ GLOBAL_PROTECT(VVpixelmovement) L.Cut(index, index+1) if (O) if (O.vv_edit_var(objectvar, L)) - to_chat(src, "Your edit was rejected by the object.") + to_chat(src, "Your edit was rejected by the object.", confidential=TRUE) return log_world("### ListVarEdit by [src]: [O.type] [objectvar]: REMOVED=[html_encode("[original_var]")]") log_admin("[key_name(src)] modified [original_name]'s [objectvar]: REMOVED=[original_var]") @@ -511,7 +511,7 @@ GLOBAL_PROTECT(VVpixelmovement) L[index] = new_var if (O) if (O.vv_edit_var(objectvar, L) == FALSE) - to_chat(src, "Your edit was rejected by the object.") + to_chat(src, "Your edit was rejected by the object.", confidential=TRUE) return log_world("### ListVarEdit by [src]: [(O ? O.type : "/list")] [objectvar]: [original_var]=[new_var]") log_admin("[key_name(src)] modified [original_name]'s [objectvar]: [original_var]=[new_var]") @@ -546,7 +546,7 @@ GLOBAL_PROTECT(VVpixelmovement) if(param_var_name) if(!param_var_name in O.vars) - to_chat(src, "A variable with this name ([param_var_name]) doesn't exist in this datum ([O])") + to_chat(src, "A variable with this name ([param_var_name]) doesn't exist in this datum ([O])", confidential=TRUE) return variable = param_var_name @@ -576,11 +576,11 @@ GLOBAL_PROTECT(VVpixelmovement) var/default = vv_get_class(variable, var_value) if(isnull(default)) - to_chat(src, "Unable to determine variable type.") + to_chat(src, "Unable to determine variable type.", confidential=TRUE) else - to_chat(src, "Variable appears to be [uppertext(default)].") + to_chat(src, "Variable appears to be [uppertext(default)].", confidential=TRUE) - to_chat(src, "Variable contains: [var_value]") + to_chat(src, "Variable contains: [var_value]", confidential=TRUE) if(default == VV_NUM) var/dir_text = "" @@ -595,7 +595,7 @@ GLOBAL_PROTECT(VVpixelmovement) dir_text += "WEST" if(dir_text) - to_chat(src, "If a direction, direction is: [dir_text]") + to_chat(src, "If a direction, direction is: [dir_text]", confidential=TRUE) if(autodetect_class && default != VV_NULL) if (default == VV_TEXT) @@ -632,7 +632,7 @@ GLOBAL_PROTECT(VVpixelmovement) if (O.vv_edit_var(variable, var_new) == FALSE) - to_chat(src, "Your edit was rejected by the object.") + to_chat(src, "Your edit was rejected by the object.", confidential=TRUE) return vv_update_display(O, "varedited", VV_MSG_EDITED) SEND_GLOBAL_SIGNAL(COMSIG_GLOB_VAR_EDIT, args) diff --git a/code/modules/admin/verbs/panicbunker.dm b/code/modules/admin/verbs/panicbunker.dm index fc0cab66c929..f63cc4a5f0eb 100644 --- a/code/modules/admin/verbs/panicbunker.dm +++ b/code/modules/admin/verbs/panicbunker.dm @@ -2,7 +2,7 @@ set category = "Server" set name = "Toggle Panic Bunker" if (!CONFIG_GET(flag/sql_enabled)) - to_chat(usr, "The Database is not enabled!") + to_chat(usr, "The Database is not enabled!", confidential=TRUE) return var/new_pb = !CONFIG_GET(flag/panic_bunker) diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index 122c2ffc5946..2c35aedc5548 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -67,7 +67,7 @@ var/ytdl = CONFIG_GET(string/invoke_youtubedl) if(!ytdl) - to_chat(src, "Youtube-dl was not configured, action unavailable") //Check config.txt for the INVOKE_YOUTUBEDL value + to_chat(src, "Youtube-dl was not configured, action unavailable", confidential=TRUE) //Check config.txt for the INVOKE_YOUTUBEDL value return var/web_sound_input = input("Enter content URL (supported sites only, leave blank to stop playing)", "Play Internet Sound via youtube-dl") as text|null @@ -79,8 +79,8 @@ web_sound_input = trim(web_sound_input) if(findtext(web_sound_input, ":") && !findtext(web_sound_input, GLOB.is_http_protocol)) - to_chat(src, "Non-http(s) URIs are not allowed.") - to_chat(src, "For youtube-dl shortcuts like ytsearch: please use the appropriate full url from the website.") + to_chat(src, "Non-http(s) URIs are not allowed.", confidential=TRUE) + to_chat(src, "For youtube-dl shortcuts like ytsearch: please use the appropriate full url from the website.", confidential=TRUE) return var/shell_scrubbed_input = shell_url_scrub(web_sound_input) var/list/output = world.shelleo("[ytdl] --geo-bypass --format \"bestaudio\[ext=mp3]/best\[ext=mp4]\[height<=360]/bestaudio\[ext=m4a]/bestaudio\[ext=aac]\" --dump-single-json --no-playlist -- \"[shell_scrubbed_input]\"") @@ -92,8 +92,8 @@ try data = json_decode(stdout) catch(var/exception/e) - to_chat(src, "Youtube-dl JSON parsing FAILED:") - to_chat(src, "[e]: [stdout]") + to_chat(src, "Youtube-dl JSON parsing FAILED:", confidential=TRUE) + to_chat(src, "[e]: [stdout]", confidential=TRUE) return if (data["url"]) @@ -116,8 +116,8 @@ log_admin("[key_name(src)] played web sound: [web_sound_input]") message_admins("[key_name(src)] played web sound: [web_sound_input]") else - to_chat(src, "Youtube-dl URL retrieval FAILED:") - to_chat(src, "[stderr]") + to_chat(src, "Youtube-dl URL retrieval FAILED:", confidential=TRUE) + to_chat(src, "[stderr]", confidential=TRUE) else //pressed ok with blank log_admin("[key_name(src)] stopped web sound") @@ -126,8 +126,8 @@ stop_web_sounds = TRUE if(web_sound_url && !findtext(web_sound_url, GLOB.is_http_protocol)) - to_chat(src, "BLOCKED: Content URL not using http(s) protocol") - to_chat(src, "The media provider returned a content URL that isn't using the HTTP or HTTPS protocol") + to_chat(src, "BLOCKED: Content URL not using http(s) protocol", confidential=TRUE) + to_chat(src, "The media provider returned a content URL that isn't using the HTTP or HTTPS protocol", confidential=TRUE) return if(web_sound_url || stop_web_sounds) for(var/m in GLOB.player_list) diff --git a/code/modules/admin/verbs/possess.dm b/code/modules/admin/verbs/possess.dm index 49e2cf2da252..7dec2a0e1960 100644 --- a/code/modules/admin/verbs/possess.dm +++ b/code/modules/admin/verbs/possess.dm @@ -3,7 +3,7 @@ set category = "Object" if((O.obj_flags & DANGEROUS_POSSESSION) && CONFIG_GET(flag/forbid_singulo_possession)) - to_chat(usr, "[O] is too powerful for you to possess.") + to_chat(usr, "[O] is too powerful for you to possess.", confidential=TRUE) return var/turf/T = get_turf(O) @@ -32,7 +32,7 @@ //Yogs start - fixed release object if(!usr.control_object) - to_chat(usr, "You need to possess an object first!") + to_chat(usr, "You need to possess an object first!", confidential=TRUE) return //Yogs end diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index f85d4416511d..194fef6dba61 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -3,7 +3,7 @@ set name = "Pray" if(GLOB.say_disabled) //This is here to try to identify lag problems - to_chat(usr, "Speech is currently admin-disabled.") + to_chat(usr, "Speech is currently admin-disabled.", confidential=TRUE) return msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) @@ -12,7 +12,7 @@ log_prayer("[src.key]/([src.name]): [msg]") if(usr.client) if(usr.client.prefs.muted & MUTE_PRAY) - to_chat(usr, "You cannot pray (muted).") + to_chat(usr, "You cannot pray (muted).", confidential=TRUE) return if(src.client.handle_spam_prevention(msg,MUTE_PRAY)) return @@ -44,11 +44,11 @@ for(var/client/C in GLOB.admins) if(C.prefs.chat_toggles & CHAT_PRAYER) - to_chat(C, msg) + to_chat(C, msg, confidential=TRUE) if(C.prefs.toggles & SOUND_PRAYERS) if(usr.job == "Chaplain") SEND_SOUND(C, sound('sound/effects/pray.ogg')) - to_chat(usr, "You pray to the gods: \"[msg_tmp]\"") + to_chat(usr, "You pray to the gods: \"[msg_tmp]\"", confidential=TRUE) SSblackbox.record_feedback("tally", "admin_verb", 1, "Prayer") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! //log_admin("HELP: [key_name(src)]: [msg]") @@ -56,20 +56,20 @@ /proc/CentCom_announce(text , mob/Sender) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "CENTCOM:[ADMIN_FULLMONTY(Sender)] [ADMIN_CENTCOM_REPLY(Sender)]: [msg]" - to_chat(GLOB.admins, msg) + to_chat(GLOB.admins, msg, confidential=TRUE) for(var/obj/machinery/computer/communications/C in GLOB.machines) C.overrideCooldown() /proc/Syndicate_announce(text , mob/Sender) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "SYNDICATE:[ADMIN_FULLMONTY(Sender)] [ADMIN_SYNDICATE_REPLY(Sender)]: [msg]" - to_chat(GLOB.admins, msg) + to_chat(GLOB.admins, msg, confidential=TRUE) for(var/obj/machinery/computer/communications/C in GLOB.machines) C.overrideCooldown() /proc/Nuke_request(text , mob/Sender) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "NUKE CODE REQUEST:[ADMIN_FULLMONTY(Sender)] [ADMIN_CENTCOM_REPLY(Sender)] [ADMIN_SET_SD_CODE]: [msg]" - to_chat(GLOB.admins, msg) + to_chat(GLOB.admins, msg, confidential=TRUE) for(var/obj/machinery/computer/communications/C in GLOB.machines) C.overrideCooldown() diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index a308ca70daac..f84028927342 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -58,10 +58,10 @@ return if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human", confidential=TRUE) return if(!istype(H.ears, /obj/item/radio/headset)) - to_chat(usr, "The person you are trying to contact is not wearing a headset.") + to_chat(usr, "The person you are trying to contact is not wearing a headset.", confidential=TRUE) return if (!sender) @@ -117,7 +117,7 @@ log_text = "Subtracted [num2text(msg)]" SSpersistence.antag_rep[C.ckey] = max(SSpersistence.antag_rep[C.ckey]-msg, 0) else - to_chat(src, "Invalid operation for antag rep modification: [operation] by user [key_name(usr)]") + to_chat(src, "Invalid operation for antag rep modification: [operation] by user [key_name(usr)]", confidential=TRUE) return if(SSpersistence.antag_rep[C.ckey] <= 0) @@ -196,7 +196,7 @@ return M.status_flags ^= GODMODE - to_chat(usr, "Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]") + to_chat(usr, "Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]", confidential=TRUE) log_admin("[key_name(usr)] has toggled [key_name(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]") var/msg = "[key_name(usr)] has toggled [key_name(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]" // yogs - Yog Tickets @@ -263,7 +263,7 @@ log_admin("SPAM AUTOMUTE: [muteunmute] [key_name(whom)] from [mute_string]") message_admins("SPAM AUTOMUTE: [muteunmute] [key_name_admin(whom)] from [mute_string].") if(C) - to_chat(C, "You have been [muteunmute] from [mute_string] by the SPAM AUTOMUTE system. Contact an admin.") + to_chat(C, "You have been [muteunmute] from [mute_string] by the SPAM AUTOMUTE system. Contact an admin.", confidential=TRUE) SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Auto Mute [feedback_string]", "1")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return @@ -277,7 +277,7 @@ log_admin("[key_name(usr)] has [muteunmute] [key_name(whom)] from [mute_string]") message_admins("[key_name_admin(usr)] has [muteunmute] [key_name_admin(whom)] from [mute_string].") if(C) - to_chat(C, "You have been [muteunmute] from [mute_string] by [key_name(usr, include_name = FALSE)].") + to_chat(C, "You have been [muteunmute] from [mute_string] by [key_name(usr, include_name = FALSE)].", confidential=TRUE) SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Mute [feedback_string]", "[P.muted & mute_type]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -298,7 +298,7 @@ if(candidates.len) ckey = input("Pick the player you want to respawn as a xeno.", "Suitable Candidates") as null|anything in candidates else - to_chat(usr, "Error: create_xeno(): no suitable candidates.") + to_chat(usr, "Error: create_xeno(): no suitable candidates.", confidential=TRUE) if(!istext(ckey)) return 0 @@ -352,7 +352,7 @@ Traitors and the like can also be revived with the previous role mostly intact. break if(!G_found)//If a ghost was not found. - to_chat(usr, "There is no active key like that in the game or the person is not currently a ghost.") + to_chat(usr, "There is no active key like that in the game or the person is not currently a ghost.", confidential=TRUE) return if(G_found.mind && !G_found.mind.active) //mind isn't currently in use by someone/something @@ -732,7 +732,7 @@ Traitors and the like can also be revived with the previous role mostly intact. var/list/L = M.get_contents() for(var/t in L) - to_chat(usr, "[t]") + to_chat(usr, "[t]", confidential=TRUE) SSblackbox.record_feedback("tally", "admin_verb", 1, "Check Contents") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/toggle_view_range() @@ -805,14 +805,14 @@ Traitors and the like can also be revived with the previous role mostly intact. set desc = "Make everyone have a random appearance. You can only use this before rounds!" if(SSticker.HasRoundStarted()) - to_chat(usr, "Nope you can't do this, the game's already started. This only works before rounds!") + to_chat(usr, "Nope you can't do this, the game's already started. This only works before rounds!", confidential=TRUE) return var/frn = CONFIG_GET(flag/force_random_names) if(frn) CONFIG_SET(flag/force_random_names, FALSE) message_admins("Admin [key_name_admin(usr)] has disabled \"Everyone is Special\" mode.") - to_chat(usr, "Disabled.") + to_chat(usr, "Disabled.", confidential=TRUE) return @@ -826,7 +826,7 @@ Traitors and the like can also be revived with the previous role mostly intact. if(notifyplayers == "Yes") to_chat(world, "Admin [usr.key] has forced the players to have completely random identities!") - to_chat(usr, "Remember: you can always disable the randomness by using the verb again, assuming the round hasn't started yet.") + to_chat(usr, "Remember: you can always disable the randomness by using the verb again, assuming the round hasn't started yet.", confidential=TRUE) CONFIG_SET(flag/force_random_names, TRUE) SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Everyone Random") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -839,10 +839,10 @@ Traitors and the like can also be revived with the previous role mostly intact. var/new_are = !CONFIG_GET(flag/allow_random_events) CONFIG_SET(flag/allow_random_events, new_are) if(new_are) - to_chat(usr, "Random events enabled") + to_chat(usr, "Random events enabled", confidential=TRUE) message_admins("Admin [key_name_admin(usr)] has enabled random events.") else - to_chat(usr, "Random events disabled") + to_chat(usr, "Random events disabled", confidential=TRUE) message_admins("Admin [key_name_admin(usr)] has disabled random events.") SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Random Events", "[new_are ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -906,7 +906,7 @@ Traitors and the like can also be revived with the previous role mostly intact. mob.update_sight() - to_chat(usr, "You toggled your admin combo HUD [adding_hud ? "ON" : "OFF"].") + to_chat(usr, "You toggled your admin combo HUD [adding_hud ? "ON" : "OFF"].", confidential=TRUE) message_admins("[key_name_admin(usr)] toggled their admin combo HUD [adding_hud ? "ON" : "OFF"].") log_admin("[key_name(usr)] toggled their admin combo HUD [adding_hud ? "ON" : "OFF"].") SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Combo HUD", "[adding_hud ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -1137,7 +1137,7 @@ Traitors and the like can also be revived with the previous role mostly intact. if(ADMIN_PUNISHMENT_MAZING) if(!puzzle_imprison(target)) - to_chat(usr,"Imprisonment failed!") + to_chat(usr,"Imprisonment failed!", confidential=TRUE) return punish_log(target, punishment) @@ -1167,7 +1167,7 @@ Traitors and the like can also be revived with the previous role mostly intact. return if(!CONFIG_GET(flag/use_exp_tracking)) - to_chat(usr, "Tracking is disabled in the server configuration file.") + to_chat(usr, "Tracking is disabled in the server configuration file.", confidential=TRUE) return var/list/msg = list() @@ -1181,10 +1181,10 @@ Traitors and the like can also be revived with the previous role mostly intact. if(!check_rights(R_ADMIN)) return if(!C) - to_chat(usr, "ERROR: Client not found.") + to_chat(usr, "ERROR: Client not found.", confidential=TRUE) return if(!CONFIG_GET(flag/use_exp_tracking)) - to_chat(usr, "Tracking is disabled in the server configuration file.") + to_chat(usr, "Tracking is disabled in the server configuration file.", confidential=TRUE) return var/list/body = list() @@ -1198,11 +1198,11 @@ Traitors and the like can also be revived with the previous role mostly intact. if(!check_rights(R_ADMIN)) return if(!C) - to_chat(usr, "ERROR: Client not found.") + to_chat(usr, "ERROR: Client not found.", confidential=TRUE) return if(!C.set_db_player_flags()) - to_chat(usr, "ERROR: Unable read player flags from database. Please check logs.") + to_chat(usr, "ERROR: Unable read player flags from database. Please check logs.", confidential=TRUE) var/dbflags = C.prefs.db_flags var/newstate = FALSE if(dbflags & DB_FLAG_EXEMPT) @@ -1211,7 +1211,7 @@ Traitors and the like can also be revived with the previous role mostly intact. newstate = TRUE if(C.update_flag_db(DB_FLAG_EXEMPT, newstate)) - to_chat(usr, "ERROR: Unable to update player flags. Please check logs.") + to_chat(usr, "ERROR: Unable to update player flags. Please check logs.", confidential=TRUE) else message_admins("[key_name_admin(usr)] has [newstate ? "activated" : "deactivated"] job exp exempt status on [key_name_admin(C)]") log_admin("[key_name(usr)] has [newstate ? "activated" : "deactivated"] job exp exempt status on [key_name(C)]") diff --git a/code/modules/admin/verbs/reestablish_db_connection.dm b/code/modules/admin/verbs/reestablish_db_connection.dm index b00f0e2ccb53..e68007710d35 100644 --- a/code/modules/admin/verbs/reestablish_db_connection.dm +++ b/code/modules/admin/verbs/reestablish_db_connection.dm @@ -2,7 +2,7 @@ set category = "Special Verbs" set name = "Reestablish DB Connection" if (!CONFIG_GET(flag/sql_enabled)) - to_chat(usr, "The Database is not enabled!") + to_chat(usr, "The Database is not enabled!", confidential=TRUE) return if (SSdbcore.IsConnected()) diff --git a/code/modules/admin/verbs/spawnobjasmob.dm b/code/modules/admin/verbs/spawnobjasmob.dm index 621e6c361890..c6dbd0377c35 100644 --- a/code/modules/admin/verbs/spawnobjasmob.dm +++ b/code/modules/admin/verbs/spawnobjasmob.dm @@ -38,7 +38,7 @@ basemob = text2path(mainsettings["mobtype"]["value"]) if (!ispath(basemob, /mob/living/simple_animal/hostile/mimic/copy) || !ispath(chosen_obj, /obj)) - to_chat(usr, "Mob or object path invalid") + to_chat(usr, "Mob or object path invalid", confidential=TRUE) basemob = new basemob(get_turf(usr), new chosen_obj(get_turf(usr)), usr, mainsettings["dropitem"]["value"] == "Yes" ? FALSE : TRUE, (mainsettings["googlyeyes"]["value"] == "Yes" ? FALSE : TRUE)) diff --git a/code/modules/admin/verbs/tripAI.dm b/code/modules/admin/verbs/tripAI.dm index 7742d6ea6600..adc7a8f865e3 100644 --- a/code/modules/admin/verbs/tripAI.dm +++ b/code/modules/admin/verbs/tripAI.dm @@ -3,18 +3,18 @@ set name = "Create AI Triumvirate" if(SSticker.current_state > GAME_STATE_PREGAME) - to_chat(usr, "This option is currently only usable during pregame. This may change at a later date.") + to_chat(usr, "This option is currently only usable during pregame. This may change at a later date.", confidential=TRUE) return var/datum/job/job = SSjob.GetJob("AI") if(!job) - to_chat(usr, "Unable to locate the AI job") + to_chat(usr, "Unable to locate the AI job", confidential=TRUE) return if(SSticker.triai) SSticker.triai = 0 - to_chat(usr, "Only one AI will be spawned at round start.") + to_chat(usr, "Only one AI will be spawned at round start.", confidential=TRUE) message_admins("[key_name_admin(usr)] has toggled off triple AIs at round start.") else SSticker.triai = 1 - to_chat(usr, "There will be an AI Triumvirate at round start.") + to_chat(usr, "There will be an AI Triumvirate at round start.", confidential=TRUE) message_admins("[key_name_admin(usr)] has toggled on triple AIs at round start.") diff --git a/code/modules/demo/hooks.dm b/code/modules/demo/hooks.dm new file mode 100644 index 000000000000..ebf82f2bbcbd --- /dev/null +++ b/code/modules/demo/hooks.dm @@ -0,0 +1,24 @@ +/atom + var/image/demo_last_appearance +/atom/movable + var/atom/demo_last_loc + +/mob/Login() + . = ..() + SSdemo.write_event_line("setmob [client.ckey] \ref[src]") + +/client/New() + SSdemo.write_event_line("login [ckey]") + . = ..() + +/client/Del() + . = ..() + SSdemo.write_event_line("logout [ckey]") + +/turf/setDir() + . = ..() + SSdemo.mark_turf(src) + +/atom/movable/setDir() + . = ..() + SSdemo.mark_dirty(src) diff --git a/code/modules/goonchat/browserOutput.dm b/code/modules/goonchat/browserOutput.dm index e9a53264bc8e..0bf6fd861ca8 100644 --- a/code/modules/goonchat/browserOutput.dm +++ b/code/modules/goonchat/browserOutput.dm @@ -118,7 +118,7 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico for(var/message in messageQueue) // whitespace has already been handled by the original to_chat - to_chat(owner, message, handle_whitespace=FALSE) + to_chat(owner, message, handle_whitespace=FALSE, confidential=TRUE) messageQueue = null sendClientData() @@ -199,7 +199,7 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico log_world("\[[time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")]\] Client: [(src.owner.key ? src.owner.key : src.owner)] triggered JS error: [error]") //Global chat procs -/proc/to_chat_immediate(target, message, handle_whitespace = TRUE) +/proc/to_chat_immediate(target, message, handle_whitespace = TRUE, confidential = FALSE) if(!target || !message) return @@ -211,6 +211,9 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico message = replacetext(message, "\n", "
") message = replacetext(message, "\t", "[GLOB.TAB][GLOB.TAB]") + if(!confidential) + SSdemo.write_chat(target, message) + if(islist(target)) // Do the double-encoding outside the loop to save nanoseconds var/twiceEncoded = url_encode(url_encode(message)) @@ -253,11 +256,11 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico // url_encode it TWICE, this way any UTF-8 characters are able to be decoded by the Javascript. C << output(url_encode(url_encode(message)), "browseroutput:output") -/proc/to_chat(target, message, handle_whitespace = TRUE) +/proc/to_chat(target, message, handle_whitespace = TRUE, confidential = FALSE) if(Master.current_runlevel == RUNLEVEL_INIT || !SSchat?.initialized) to_chat_immediate(target, message, handle_whitespace) return - SSchat.queue(target, message, handle_whitespace) + SSchat.queue(target, message, handle_whitespace, confidential) /datum/chatOutput/proc/swaptolightmode() //Dark mode light mode stuff. Yell at KMC if this breaks! (See darkmode.dm for documentation) owner.force_white_theme() diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 6e67a590edef..3c8399a2c1a0 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -103,6 +103,8 @@ All ShuttleMove procs go here loc = newT + SSdemo.mark_dirty(src) + return TRUE // Called on atoms after everything has been moved diff --git a/quickwrite.dll b/quickwrite.dll new file mode 100644 index 000000000000..65d0870fb74c Binary files /dev/null and b/quickwrite.dll differ diff --git a/yogstation.dme b/yogstation.dme index 3e31da7b9afe..80e12deab2c6 100644 --- a/yogstation.dme +++ b/yogstation.dme @@ -79,6 +79,7 @@ #include "code\__DEFINES\procpath.dm" #include "code\__DEFINES\profile.dm" #include "code\__DEFINES\qdel.dm" +#include "code\__DEFINES\quickwrite.dm" #include "code\__DEFINES\radiation.dm" #include "code\__DEFINES\radio.dm" #include "code\__DEFINES\reactions.dm" @@ -253,6 +254,7 @@ #include "code\controllers\subsystem\communications.dm" #include "code\controllers\subsystem\dbcore.dm" #include "code\controllers\subsystem\dcs.dm" +#include "code\controllers\subsystem\demo.dm" #include "code\controllers\subsystem\discord.dm" #include "code\controllers\subsystem\disease.dm" #include "code\controllers\subsystem\economy.dm" @@ -1634,6 +1636,7 @@ #include "code\modules\clothing\under\jobs\Plasmaman\engineering.dm" #include "code\modules\clothing\under\jobs\Plasmaman\medsci.dm" #include "code\modules\clothing\under\jobs\Plasmaman\security.dm" +#include "code\modules\demo\hooks.dm" #include "code\modules\detectivework\detective_work.dm" #include "code\modules\detectivework\evidence.dm" #include "code\modules\detectivework\footprints_and_rag.dm" diff --git a/yogstation/code/modules/admin/admin_verbs.dm b/yogstation/code/modules/admin/admin_verbs.dm index 731832b964d7..c2db142efe1e 100644 --- a/yogstation/code/modules/admin/admin_verbs.dm +++ b/yogstation/code/modules/admin/admin_verbs.dm @@ -52,11 +52,11 @@ mobs -= M if(!mobs.len) - to_chat(src, "Error: no valid mobs found via selected options.") + to_chat(src, "Error: no valid mobs found via selected options.", confidential=TRUE) return var/mob/chosen_player = pick(mobs) - to_chat(src, "[chosen_player] has been chosen") + to_chat(src, "[chosen_player] has been chosen", confidential=TRUE) holder.show_player_panel(chosen_player) /client/proc/get_law_history() diff --git a/yogstation/code/modules/admin/prettyfilter.dm b/yogstation/code/modules/admin/prettyfilter.dm index 928d9743ca0f..776ca7e20dc6 100644 --- a/yogstation/code/modules/admin/prettyfilter.dm +++ b/yogstation/code/modules/admin/prettyfilter.dm @@ -49,7 +49,7 @@ GLOBAL_LIST_EMPTY(minor_filter_items) set category = "Special Verbs" set name = "Pretty Filters - List" - to_chat(usr, "Pretty filters list") + to_chat(usr, "Pretty filters list", confidential=TRUE) for(var/line in GLOB.pretty_filter_items) var/list/parts = splittext(line, "=") var/pattern = parts[1] @@ -61,8 +61,8 @@ GLOBAL_LIST_EMPTY(minor_filter_items) if(index < parts.len) replacement += "=" - to_chat(usr, "   [pattern] -> [replacement]") - to_chat(usr, "End of list") + to_chat(usr, "   [pattern] -> [replacement]", confidential=TRUE) + to_chat(usr, "End of list", confidential=TRUE) //Filter out and replace unwanted words, prettify sentences /proc/pretty_filter(text, list/filter = GLOB.pretty_filter_items) diff --git a/yogstation/code/modules/admin/sql_message_system.dm b/yogstation/code/modules/admin/sql_message_system.dm index 67e85f5596c6..af057a7d8f72 100644 --- a/yogstation/code/modules/admin/sql_message_system.dm +++ b/yogstation/code/modules/admin/sql_message_system.dm @@ -1,6 +1,6 @@ /proc/create_message(type, target_key, admin_ckey, text, timestamp, server, secret, logged = 1, browse, expiry) if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return if(!type) return @@ -67,7 +67,7 @@ if(query_validate_expire_time.NextRow()) var/checktime = text2num(query_validate_expire_time.item[1]) if(!checktime) - to_chat(usr, "Datetime entered is improperly formatted or not later than current server time.") + to_chat(usr, "Datetime entered is improperly formatted or not later than current server time.", confidential=TRUE) qdel(query_validate_expire_time) return expiry = query_validate_expire_time.item[1] @@ -91,7 +91,7 @@ /proc/delete_message(message_id, logged = 1, browse) if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return message_id = text2num(message_id) if(!message_id) @@ -127,7 +127,7 @@ /proc/edit_message(message_id, browse) if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return message_id = text2num(message_id) if(!message_id) @@ -166,7 +166,7 @@ /proc/edit_message_expiry(message_id, browse) if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return message_id = text2num(message_id) if(!message_id) @@ -201,7 +201,7 @@ if(query_validate_expire_time_edit.NextRow()) var/checktime = text2num(query_validate_expire_time_edit.item[1]) if(!checktime) - to_chat(usr, "Datetime entered is improperly formatted or not later than current server time.") + to_chat(usr, "Datetime entered is improperly formatted or not later than current server time.", confidential=TRUE) qdel(query_validate_expire_time_edit) qdel(query_find_edit_expiry_message) return @@ -224,7 +224,7 @@ /proc/toggle_message_secrecy(message_id) if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return message_id = text2num(message_id) if(!message_id) @@ -256,7 +256,7 @@ /proc/browse_messages(type, target_ckey, index, linkless = FALSE, filter, agegate = FALSE) if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return var/list/output = list() var/ruler = "
" @@ -452,7 +452,7 @@ /proc/get_message_output(type, target_ckey) if(!SSdbcore.Connect()) - to_chat(usr, "Failed to establish database connection.") + to_chat(usr, "Failed to establish database connection.", confidential=TRUE) return if(!type) return diff --git a/yogstation/code/modules/admin/topic.dm b/yogstation/code/modules/admin/topic.dm index 205e74d97c9e..402e94471fa8 100644 --- a/yogstation/code/modules/admin/topic.dm +++ b/yogstation/code/modules/admin/topic.dm @@ -32,7 +32,7 @@ var/client/C = GLOB.directory[ckey] if(C) if(check_rights_for(C, R_ADMIN,0)) - to_chat(usr, "The client chosen is an admin! Cannot mentorize.") + to_chat(usr, "The client chosen is an admin! Cannot mentorize.", confidential=TRUE) return new /datum/mentors(ckey) @@ -41,7 +41,7 @@ var/datum/DBQuery/query_get_mentor = SSdbcore.NewQuery("SELECT id FROM `[format_table_name("mentor")]` WHERE `ckey` = '[ckey]'") query_get_mentor.warn_execute() if(query_get_mentor.NextRow()) - to_chat(usr, "[ckey] is already a mentor.") + to_chat(usr, "[ckey] is already a mentor.", confidential=TRUE) qdel(query_get_mentor) return qdel(query_get_mentor) @@ -61,7 +61,7 @@ webhook_send_mchange(owner.ckey, C.ckey, "add") else - to_chat(usr, "Failed to establish database connection. The changes will last only for the current round.") + to_chat(usr, "Failed to establish database connection. The changes will last only for the current round.", confidential=TRUE) message_admins("[key_name_admin(usr)] added new mentor: [ckey]") log_admin("[key_name(usr)] added new mentor: [ckey]") @@ -79,7 +79,7 @@ var/client/C = GLOB.directory[ckey] if(C) if(check_rights_for(C, R_ADMIN,0)) - to_chat(usr, "The client chosen is an admin, not a mentor! Cannot de-mentorize.") + to_chat(usr, "The client chosen is an admin, not a mentor! Cannot de-mentorize.", confidential=TRUE) return C.remove_mentor_verbs() @@ -94,7 +94,7 @@ webhook_send_mchange(owner.ckey, C.ckey, "remove") else - to_chat(usr, "Failed to establish database connection. The changes will last only for the current round.") + to_chat(usr, "Failed to establish database connection. The changes will last only for the current round.", confidential=TRUE) message_admins("[key_name_admin(usr)] removed mentor: [ckey]") log_admin("[key_name(usr)] removed mentor: [ckey]") diff --git a/yogstation/code/modules/admin/verbs/adminhelp.dm b/yogstation/code/modules/admin/verbs/adminhelp.dm index 310b8cb14cd6..ea7a65c12d61 100644 --- a/yogstation/code/modules/admin/verbs/adminhelp.dm +++ b/yogstation/code/modules/admin/verbs/adminhelp.dm @@ -164,7 +164,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) var/admin_number_present = send2irc_adminless_only(initiator_ckey, "Ticket #[id]: [name]") log_admin_private("Ticket #[id]: [key_name(initiator)]: [name] - heard by [admin_number_present] non-AFK admins who have +BAN.") if(admin_number_present <= 0) - to_chat(C, "No active admins are online, your adminhelp was sent to the admin irc.") + to_chat(C, "No active admins are online, your adminhelp was sent to the admin irc.", confidential=TRUE) heard_by_no_admins = TRUE GLOB.ahelp_tickets.tickets_list += src @@ -237,20 +237,20 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(X.prefs.toggles & SOUND_ADMINHELP) SEND_SOUND(X, sound('sound/effects/adminhelp.ogg')) window_flash(X, ignorepref = TRUE) - to_chat(X, admin_msg) + to_chat(X, admin_msg, confidential=TRUE) //show it to the person adminhelping too - to_chat(initiator, "PM to-Admins: [msg]") + to_chat(initiator, "PM to-Admins: [msg]", confidential=TRUE) GLOB.unclaimed_tickets += src //Reopen a closed ticket /datum/admin_help/proc/Reopen() if(state == AHELP_ACTIVE) - to_chat(usr, "This ticket is already open.") + to_chat(usr, "This ticket is already open.", confidential=TRUE) return if(GLOB.ahelp_tickets.CKey2ActiveTicket(initiator_ckey)) - to_chat(usr, "This user already has an active ticket, cannot reopen this one.") + to_chat(usr, "This user already has an active ticket, cannot reopen this one.", confidential=TRUE) return switch(state) @@ -312,7 +312,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) var/resolved = FALSE if(state == AHELP_RESOLVED) if(initiator.current_ticket) - to_chat(initiator, "This user already has an open ticket.") + to_chat(initiator, "This user already has an open ticket.", confidential=TRUE) return AddActive() @@ -324,16 +324,16 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) resolved = TRUE GLOB.ahelp_tickets.ticketAmount -= 1 else // AHELP_CLOSED - to_chat(usr, "This ticket has been closed and can't be unresolved.") + to_chat(usr, "This ticket has been closed and can't be unresolved.", confidential=TRUE) return if(resolved) AddInteraction("Ticket #[id] marked as resolved by [usr.ckey].") - to_chat(initiator, "Your ticket has been marked as resolved by [usr.client.holder?.fakekey ? "an Administrator" : key_name(usr, 0, 0)]. The Adminhelp verb will be returned to you shortly.") + to_chat(initiator, "Your ticket has been marked as resolved by [usr.client.holder?.fakekey ? "an Administrator" : key_name(usr, 0, 0)]. The Adminhelp verb will be returned to you shortly.", confidential=TRUE) addtimer(CALLBACK(initiator, /client/proc/giveadminhelpverb), 50) else // AHELP_ACTIVE AddInteraction("Ticket #[id] marked as unresolved by [usr.ckey].") - to_chat(initiator, "Your ticket has been marked as unresolved by [usr.client.holder?.fakekey ? "an Administrator" : key_name(usr, 0, 0)].") + to_chat(initiator, "Your ticket has been marked as unresolved by [usr.client.holder?.fakekey ? "an Administrator" : key_name(usr, 0, 0)].", confidential=TRUE) TimeoutVerb() if(!silent) @@ -360,9 +360,9 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) SEND_SOUND(initiator, sound('sound/effects/adminhelp.ogg')) - to_chat(initiator, "- AdminHelp Rejected by [usr.client.holder?.fakekey ? "an Administrator" : key_name(usr, 0, 0)]! -") - to_chat(initiator, "Your admin help was rejected. The adminhelp verb has been returned to you so that you may try again.") - to_chat(initiator, "Please try to be calm, clear, and descriptive in admin helps, do not assume the admin has seen any related events, and clearly state the names of anybody you are reporting.") + to_chat(initiator, "- AdminHelp Rejected by [usr.client.holder?.fakekey ? "an Administrator" : key_name(usr, 0, 0)]! -", confidential=TRUE) + to_chat(initiator, "Your admin help was rejected. The adminhelp verb has been returned to you so that you may try again.", confidential=TRUE) + to_chat(initiator, "Please try to be calm, clear, and descriptive in admin helps, do not assume the admin has seen any related events, and clearly state the names of anybody you are reporting.", confidential=TRUE) SSblackbox.record_feedback("tally", "ahelp_stats", 1, "rejected") var/msg = "Ticket [TicketHref("#[id]")] rejected by [key_name]" @@ -381,7 +381,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) msg += "Your character will frequently die, sometimes without even a possibility of avoiding it. Events will often be out of your control. No matter how good or prepared you are, sometimes you just lose." if(initiator) - to_chat(initiator, msg) + to_chat(initiator, msg, confidential=TRUE) SSblackbox.record_feedback("tally", "ahelp_stats", 1, "IC") msg = "Ticket [TicketHref("#[id]")] marked as IC by [key_name]" @@ -401,7 +401,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) msg += "Your call will now be redirected to the mentors as a mentorhelp." if(initiator) - to_chat(initiator, msg) + to_chat(initiator, msg, confidential=TRUE) initiator.mentorhelp(name) SSblackbox.record_feedback("tally", "ahelp_stats", 1, "MHelp") @@ -420,7 +420,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) msg += "Go look at the wiki!
" msg += "[CONFIG_GET(string/wikiurl)]" if(initiator) - to_chat(initiator, msg) + to_chat(initiator, msg, confidential=TRUE) SSblackbox.record_feedback("tally", "ahelp_stats", 1, "WIKI") msg = "Ticket [TicketHref("#[id]")] marked as WIKI by [key_name]" @@ -768,12 +768,12 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) set name = "Adminhelp" if(GLOB.say_disabled) //This is here to try to identify lag problems - to_chat(usr, "Speech is currently admin-disabled.") + to_chat(usr, "Speech is currently admin-disabled.", confidential=TRUE) return //handle muting and automuting if(prefs.muted & MUTE_ADMINHELP) - to_chat(src, "Error: Admin-PM: You cannot send adminhelps (Muted).") + to_chat(src, "Error: Admin-PM: You cannot send adminhelps (Muted).", confidential=TRUE) return if(handle_spam_prevention(msg,MUTE_ADMINHELP)) return @@ -791,7 +791,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) current_ticket.TimeoutVerb() return else - to_chat(usr, "Ticket not found, creating new one...") + to_chat(usr, "Ticket not found, creating new one...", confidential=TRUE) else current_ticket.AddInteraction("[key_name_admin(usr)] opened a new ticket.") current_ticket.Close() diff --git a/yogstation/code/modules/admin/verbs/adminsay.dm b/yogstation/code/modules/admin/verbs/adminsay.dm index 0a796f3f2f25..5c9f35db66f6 100644 --- a/yogstation/code/modules/admin/verbs/adminsay.dm +++ b/yogstation/code/modules/admin/verbs/adminsay.dm @@ -19,10 +19,10 @@ msg = keywords_lookup(msg) if(check_rights(R_ADMIN,0)) msg = "ADMIN: [key_name(usr, 1)] [ADMIN_FLW(mob)]: [msg]" - to_chat(GLOB.admins, msg) + to_chat(GLOB.admins, msg, confidential=TRUE) else msg = "OBSERVER: [key_name(usr, 1)] [ADMIN_FLW(mob)]: [msg]" - to_chat(GLOB.admins, msg) + to_chat(GLOB.admins, msg, confidential=TRUE) SSblackbox.record_feedback("tally", "admin_verb", 1, "Asay") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/yogstation/code/modules/admin/verbs/adminvox.dm b/yogstation/code/modules/admin/verbs/adminvox.dm index b136754d55f8..a6cd046bb370 100644 --- a/yogstation/code/modules/admin/verbs/adminvox.dm +++ b/yogstation/code/modules/admin/verbs/adminvox.dm @@ -33,7 +33,7 @@ else if(voxType == "male") // If we're doing the yog-ly male AI vox voice voxlist = GLOB.vox_sounds_male else - to_chat(src,"Unknown or unsupported vox type. Yell at a coder about this.") + to_chat(src,"Unknown or unsupported vox type. Yell at a coder about this.", confidential=TRUE) return for(var/word in words) // For each word @@ -45,7 +45,7 @@ incorrect_words += word if(incorrect_words.len) - to_chat(src, "These words are not available on the announcement system: [english_list(incorrect_words)].") + to_chat(src, "These words are not available on the announcement system: [english_list(incorrect_words)].", confidential=TRUE) return var/pitch = 0 diff --git a/yogstation/code/modules/admin/verbs/debug.dm b/yogstation/code/modules/admin/verbs/debug.dm index 38fe7b4bd172..f5c3d059371d 100644 --- a/yogstation/code/modules/admin/verbs/debug.dm +++ b/yogstation/code/modules/admin/verbs/debug.dm @@ -12,12 +12,12 @@ var/list/a = subtypesof(msg) if(!a.len) - to_chat(src,"That type doesn't seem to exist!") + to_chat(src,"That type doesn't seem to exist!", confidential=TRUE) return if(a.len > 100) if(alert("That type has [a.len] derived types. Are you sure you want to have all of them spammed into your chatbox?",,"Yes","No") != "Yes") return - to_chat(usr,"Subtypes of [msg] ([a.len] Entries):") + to_chat(usr,"Subtypes of [msg] ([a.len] Entries):", confidential=TRUE) for(var/x in a) - to_chat(usr,"[x]") \ No newline at end of file + to_chat(usr,"[x]", confidential=TRUE) \ No newline at end of file diff --git a/yogstation/code/modules/admin/verbs/fix_air.dm b/yogstation/code/modules/admin/verbs/fix_air.dm index 4316fd8e822a..68bcf718af42 100644 --- a/yogstation/code/modules/admin/verbs/fix_air.dm +++ b/yogstation/code/modules/admin/verbs/fix_air.dm @@ -4,7 +4,7 @@ set desc = "Fixes air in specified radius." if(!holder) - to_chat(src, "Only administrators may use this command.") + to_chat(src, "Only administrators may use this command.", confidential=TRUE) return if(check_rights(R_ADMIN,1)) var/range=input("Enter range:","Num",2) as num diff --git a/yogstation/code/modules/admin/verbs/queue.dm b/yogstation/code/modules/admin/verbs/queue.dm index 2079d4af4dac..0d7e11c88d0b 100644 --- a/yogstation/code/modules/admin/verbs/queue.dm +++ b/yogstation/code/modules/admin/verbs/queue.dm @@ -7,9 +7,9 @@ return listclearnulls(SSticker.queued_players) - to_chat(usr,"List of queued players:") + to_chat(usr,"List of queued players:", confidential=TRUE) for(var/mob/dead/new_player/guy in SSticker.queued_players) - to_chat(usr,"\t[guy]") + to_chat(usr,"\t[guy]", confidential=TRUE) /client/proc/release_queue() set category = "Server" @@ -23,7 +23,7 @@ var/list/queue = SSticker.queued_players if(!queue.len) - to_chat(usr,"There is nobody in the server queue!") + to_chat(usr,"There is nobody in the server queue!", confidential=TRUE) return if(alert("Are you sure you want to allow [queue.len] people to skip the queue and join the game?",,"Yes","No") != "Yes") diff --git a/yogstation/code/modules/admin/verbs/shuttle_verbs.dm b/yogstation/code/modules/admin/verbs/shuttle_verbs.dm index 6dfd6c5874d7..bbcafeafba36 100644 --- a/yogstation/code/modules/admin/verbs/shuttle_verbs.dm +++ b/yogstation/code/modules/admin/verbs/shuttle_verbs.dm @@ -15,7 +15,7 @@ log_admin("[key_name(usr)] has removed the admin-induced delay on the shuttle launching.") message_admins("[key_name(usr)] has removed the admin-induced delay on the shuttle launching.") else - to_chat(usr,"The shuttle is already delayed by something else!") + to_chat(usr,"The shuttle is already delayed by something else!", confidential=TRUE) return if(alert("Are you sure you want to delay the shuttle from launching?","Shuttle Delay","Yes","No") != "Yes") diff --git a/yogstation/code/modules/admin/verbs/telecomms.dm b/yogstation/code/modules/admin/verbs/telecomms.dm index 6ba544ecadd3..e0bd60c12fbd 100644 --- a/yogstation/code/modules/admin/verbs/telecomms.dm +++ b/yogstation/code/modules/admin/verbs/telecomms.dm @@ -3,7 +3,7 @@ set name = "Reset Telecomms Scripts" set desc = "Blanks all telecomms scripts from all telecomms servers" if(!holder) - to_chat(usr, "Admin only.") + to_chat(usr, "Admin only.", confidential=TRUE) return if(check_rights(R_ADMIN,1)) diff --git a/yogstation/code/modules/mentor/follow.dm b/yogstation/code/modules/mentor/follow.dm index 378bf3f997b5..ce01da7fd4e5 100644 --- a/yogstation/code/modules/mentor/follow.dm +++ b/yogstation/code/modules/mentor/follow.dm @@ -25,8 +25,8 @@ if(mentor_datum) mentor_datum.following = M - to_chat(GLOB.admins, "MENTOR: [key_name(usr)] is now following [key_name(M)]") - to_chat(usr, "Click the \"Stop Following\" button in the Mentor tab to stop following [key_name(M)].") + to_chat(GLOB.admins, "MENTOR: [key_name(usr)] is now following [key_name(M)]", confidential=TRUE) + to_chat(usr, "Click the \"Stop Following\" button in the Mentor tab to stop following [key_name(M)].", confidential=TRUE) log_mentor("[key_name(usr)] began following [key_name(M)]") /client/proc/mentor_unfollow() @@ -40,7 +40,7 @@ usr.reset_perspective() verbs -= /client/proc/mentor_unfollow if(mentor_datum) - to_chat(GLOB.admins, "MENTOR: [key_name(usr)] is no longer following [key_name(mentor_datum.following)]") + to_chat(GLOB.admins, "MENTOR: [key_name(usr)] is no longer following [key_name(mentor_datum.following)]", confidential=TRUE) log_mentor("[key_name(usr)] stopped following [key_name(mentor_datum.following)]") mentor_datum.following = null diff --git a/yogstation/code/modules/mentor/mentor.dm b/yogstation/code/modules/mentor/mentor.dm index de3fe5ff7493..149013ab21f8 100644 --- a/yogstation/code/modules/mentor/mentor.dm +++ b/yogstation/code/modules/mentor/mentor.dm @@ -48,8 +48,8 @@ GLOBAL_PROTECT(mentor_href_token) var/tok = GLOB.mentor_href_token if(!forceGlobal && usr) var/client/C = usr.client - to_chat(world, C) - to_chat(world, usr) + to_chat(world, C, confidential=TRUE) + to_chat(world, usr, confidential=TRUE) if(!C) CRASH("No client for HrefToken()!") diff --git a/yogstation/code/modules/mentor/mentor_memo.dm b/yogstation/code/modules/mentor/mentor_memo.dm index 5c8bdfbfe03d..25c9c02194e4 100644 --- a/yogstation/code/modules/mentor/mentor_memo.dm +++ b/yogstation/code/modules/mentor/mentor_memo.dm @@ -6,7 +6,7 @@ return if(!SSdbcore.Connect()) - to_chat(src, "Failed to establish database connection.") + to_chat(src, "Failed to establish database connection.", confidential=TRUE) return var/memotask = input(usr,"Choose task", "Memo") in list("Show", "Write", "Edit", "Remove") @@ -23,7 +23,7 @@ return if(!SSdbcore.Connect()) - to_chat(src, "Failed to establish database connection.") + to_chat(src, "Failed to establish database connection.", confidential=TRUE) return mentor_memo_output("Show") @@ -33,7 +33,7 @@ return if(!SSdbcore.Connect()) - to_chat(src, "Failed to establish database connection.") + to_chat(src, "Failed to establish database connection.", confidential=TRUE) return var/sql_ckey = sanitizeSQL(ckey) @@ -45,7 +45,7 @@ return if(query_memocheck.NextRow()) - to_chat(src, "You already have set a memo.") + to_chat(src, "You already have set a memo.", confidential=TRUE) qdel(query_memocheck) return qdel(query_memocheck) @@ -78,7 +78,7 @@ qdel(query_memolist) if(!memolist.len) - to_chat(src, "No memos found in database.") + to_chat(src, "No memos found in database.", confidential=TRUE) return var/target_ckey = input(src, "Select whose memo to edit", "Select memo") as null|anything in memolist @@ -137,10 +137,10 @@ qdel(query_memoshow) if(!output) - to_chat(src, "No memos found in database.") + to_chat(src, "No memos found in database.", confidential=TRUE) return - to_chat(src, output) + to_chat(src, output, confidential=TRUE) if("Remove") var/datum/DBQuery/query_memodellist = SSdbcore.NewQuery("SELECT `ckey` FROM `[format_table_name("mentor_memo")]`") @@ -155,7 +155,7 @@ qdel(query_memodellist) if(!memolist.len) - to_chat(src, "No memos found in database.") + to_chat(src, "No memos found in database.", confidential=TRUE) return var/target_ckey = input(src, "Select whose mentor memo to delete", "Select mentor memo") as null|anything in memolist diff --git a/yogstation/code/modules/mentor/mentor_verbs.dm b/yogstation/code/modules/mentor/mentor_verbs.dm index f48d8c5d6c20..c053e574018d 100644 --- a/yogstation/code/modules/mentor/mentor_verbs.dm +++ b/yogstation/code/modules/mentor/mentor_verbs.dm @@ -20,7 +20,7 @@ GLOBAL_PROTECT(mentor_verbs) return if(!SSdbcore.Connect()) - to_chat(src, "Failed to establish database connection.") + to_chat(src, "Failed to establish database connection.", confidential=TRUE) return var/msg = "Current Mentors:\n" @@ -34,7 +34,7 @@ GLOBAL_PROTECT(mentor_verbs) msg += "\t[ckey]" qdel(query_load_mentors) - to_chat(src, msg) + to_chat(src, msg, confidential=TRUE) /client/verb/mentorwho() set name = "Mentorwho" @@ -66,5 +66,5 @@ GLOBAL_PROTECT(mentor_verbs) msg += "\t[C] is a mentor" msg += "\n" msg += "Mentorhelps are also seen by admins. If no mentors are available in game adminhelp instead and an admin will see it and respond." - to_chat(src, msg) + to_chat(src, msg, confidential=TRUE) diff --git a/yogstation/code/modules/mentor/mentorhelp.dm b/yogstation/code/modules/mentor/mentorhelp.dm index c0c0e7c8fc8b..dfd624aaf42f 100644 --- a/yogstation/code/modules/mentor/mentorhelp.dm +++ b/yogstation/code/modules/mentor/mentorhelp.dm @@ -3,7 +3,7 @@ set name = "Mentorhelp" if(is_mentor()) - to_chat(src, "Mentors cannot mentorhelp, use msay instead!") + to_chat(src, "Mentors cannot mentorhelp, use msay instead!", confidential=TRUE) return //clean the input msg @@ -27,9 +27,9 @@ for(var/client/X in GLOB.mentors | GLOB.admins) if(X.prefs.toggles & SOUND_ADMINHELP) send_mentor_sound(X) - to_chat(X, mentor_msg) + to_chat(X, mentor_msg, confidential=TRUE) - to_chat(src, "PM to-Mentors: [msg]") + to_chat(src, "PM to-Mentors: [msg]", confidential=TRUE) var/datum/mentorticket/mt if(ckey in SSYogs.mentortickets) diff --git a/yogstation/code/modules/mentor/mentorpm.dm b/yogstation/code/modules/mentor/mentorpm.dm index f7888c311be9..c690ddfe5ac4 100644 --- a/yogstation/code/modules/mentor/mentorpm.dm +++ b/yogstation/code/modules/mentor/mentorpm.dm @@ -4,7 +4,7 @@ set name = "Mentor PM" if(!is_mentor()) - to_chat(src, "Error: Mentor-PM-Panel: Only Mentors and Admins may use this command.") + to_chat(src, "Error: Mentor-PM-Panel: Only Mentors and Admins may use this command.", confidential=TRUE) return var/list/client/targets[0] @@ -33,7 +33,7 @@ if(QDELETED(C) && !discord_id) if(is_mentor()) - to_chat(src, "Error: Mentor-PM: Client not found.") + to_chat(src, "Error: Mentor-PM: Client not found.", confidential=TRUE) else mentorhelp(msg) //Mentor we are replying to left. Mentorhelp instead(check below) return @@ -61,7 +61,7 @@ log_mentor("Mentor PM: [key_name(src)]->[discord_id ? discord_id : key_name(C)]: [msg]") if(mentor_datum && isnotpretty(msg)) // If this is, specifically, a mentor, and not an admin nor a normal player - to_chat(src,"You cannot send bigoted language as a mentor.") + to_chat(src,"You cannot send bigoted language as a mentor.", confidential=TRUE) message_admins("[discord_id ? discord_id : key_name(src)] just tripped the pretty filter in a mentorpm: [msg]") return msg = emoji_parse(msg) @@ -70,11 +70,11 @@ var/show_char = CONFIG_GET(flag/mentors_mobname_only) if(!C || C.is_mentor()) if(C) - to_chat(C, "Reply PM from-[key_name_mentor(src, C, 1, 0, show_char)]: [msg]") + to_chat(C, "Reply PM from-[key_name_mentor(src, C, 1, 0, show_char)]: [msg]", confidential=TRUE) if(discord_id) - to_chat(src, "Mentor PM to-[discord_mentor_link(whom, discord_id)]: [msg]") + to_chat(src, "Mentor PM to-[discord_mentor_link(whom, discord_id)]: [msg]", confidential=TRUE) else - to_chat(src, "Mentor PM to-[key_name_mentor(C, C, 1, 0, 0)]: [msg]") + to_chat(src, "Mentor PM to-[key_name_mentor(C, C, 1, 0, 0)]: [msg]", confidential=TRUE) if(ckey in SSYogs.mentortickets) var/datum/mentorticket/T = SSYogs.mentortickets[ckey] T.log += "[key]: [msg]" @@ -82,8 +82,8 @@ else if(is_mentor()) //sender is an mentor but recipient is not. if(C) - to_chat(C, "Mentor PM from-[key_name_mentor(src, C, 1, 0, 0)]: [msg]") - to_chat(src, "Mentor PM to-[key_name_mentor(C, C, 1, 0, show_char)]: [msg]") + to_chat(C, "Mentor PM from-[key_name_mentor(src, C, 1, 0, 0)]: [msg]", confidential=TRUE) + to_chat(src, "Mentor PM to-[key_name_mentor(C, C, 1, 0, show_char)]: [msg]", confidential=TRUE) if(C.ckey in SSYogs.mentortickets) var/datum/mentorticket/T = SSYogs.mentortickets[C.ckey] T.log += "[key]: [msg]" @@ -96,6 +96,6 @@ for(var/client/X in GLOB.mentors | (GLOB.admins - GLOB.deadmins)) if(X.key != key && (!C || X.key != C.key)) //check client/X is an Mentor and isn't the sender or recipient if(discord_id) - to_chat(X, "Mentor PM: [key_name_mentor(src, X, 0, 0, show_char_sender)]->[discord_mentor_link(whom, discord_id)]: [msg]") //inform X + to_chat(X, "Mentor PM: [key_name_mentor(src, X, 0, 0, show_char_sender)]->[discord_mentor_link(whom, discord_id)]: [msg]", confidential=TRUE) //inform X else - to_chat(X, "Mentor PM: [key_name_mentor(src, X, 0, 0, show_char_sender)]->[key_name_mentor(C, X, 0, 0, show_char_recip)]: [msg]") //inform X + to_chat(X, "Mentor PM: [key_name_mentor(src, X, 0, 0, show_char_sender)]->[key_name_mentor(C, X, 0, 0, show_char_recip)]: [msg]", confidential=TRUE) //inform X diff --git a/yogstation/code/modules/mentor/mentorsay.dm b/yogstation/code/modules/mentor/mentorsay.dm index f350c904d33c..8ebefb0a0fc0 100644 --- a/yogstation/code/modules/mentor/mentorsay.dm +++ b/yogstation/code/modules/mentor/mentorsay.dm @@ -21,7 +21,7 @@ else msg = "MENTOR: [key_name(src, 0, 0)]: [msg]" - to_chat((GLOB.admins - GLOB.deadmins) | GLOB.mentors, msg) + to_chat((GLOB.admins - GLOB.deadmins) | GLOB.mentors, msg, confidential=TRUE) /client/proc/get_mentor_say() var/msg = input(src, null, "msay \"text\"") as text