diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 1e780d7f604..a76e7f4ba02 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -1,3 +1,7 @@ +#define VV_MSG_MARKED "Marked Object" +#define VV_MSG_EDITED "Var Edited" +#define VV_MSG_DELETED "Deleted" + /datum/proc/CanProcCall(procname) return TRUE @@ -69,6 +73,7 @@ src << browse_rsc(sprite, "vv[hash].png") title = "[D] ([REF(D)]) = [type]" + var/formatted_type = replacetext("[type]", "/", "/") var/sprite_text if(sprite) @@ -78,36 +83,39 @@ if(istype(D, /atom)) var/atom/A = D if(isliving(A)) - atomsnowflake += "[D]" - if(A.dir) - atomsnowflake += "<< [dir2text(A.dir)] >>" + atomsnowflake += "[D]" + atomsnowflake += "<< [dir2text(A.dir) || A.dir] >>" var/mob/living/M = A atomsnowflake += {" - [M.ckey ? M.ckey : "No ckey"] / [M.real_name ? M.real_name : "No real name"] + [M.ckey || "No ckey"] / [M.real_name || "No real name"] - BRUTE:[M.getBruteLoss()] - FIRE:[M.getFireLoss()] - TOXIN:[M.getToxLoss()] - OXY:[M.getOxyLoss()] - CLONE:[M.getCloneLoss()] - BRAIN:[M.getBrainLoss()] - STAMINA:[M.getStaminaLoss()] + BRUTE:[M.getBruteLoss()] + FIRE:[M.getFireLoss()] + TOXIN:[M.getToxLoss()] + OXY:[M.getOxyLoss()] + CLONE:[M.getCloneLoss()] + BRAIN:[M.getBrainLoss()] + STAMINA:[M.getStaminaLoss()] "} else - atomsnowflake += "[D]" - if(A.dir) - atomsnowflake += "<< [dir2text(A.dir)] >>" + atomsnowflake += "[D]" + atomsnowflake += "<< [dir2text(A.dir) || A.dir] >>" + else if("name" in D.vars) + atomsnowflake += "[D]" else - atomsnowflake += "[D]" + atomsnowflake += "[formatted_type]" + formatted_type = null - var/formatted_type = replacetext("[type]", "/", "/") var/marked if(holder && holder.marked_datum && holder.marked_datum == D) - marked = "Marked Object" + marked = VV_MSG_MARKED var/varedited_line = "" if(!islist && (D.datum_flags & DF_VAR_EDITED)) - varedited_line = "Var Edited" + varedited_line = VV_MSG_EDITED + var/deleted_line + if(!islist && D.gc_destroyed) + deleted_line = VV_MSG_DELETED var/list/dropdownoptions = list() if (islist) @@ -306,6 +314,14 @@ if (value !== "") { location.href = value; } + list.selectedIndex = 0; + document.getElementById('filter').focus(); + } + + // byjax + function replace_span(what) { + var idx = what.indexOf(':'); + document.getElementById(what.substr(0, idx)).innerHTML = what.substr(idx + 1); } @@ -324,8 +340,9 @@ [formatted_type] - [marked] - [varedited_line] + [marked] + [varedited_line] + [deleted_line] @@ -334,7 +351,6 @@ Select option @@ -380,6 +396,10 @@ src << browse(html, "window=variables[refid];size=475x650") +/client/proc/vv_update_display(datum/D, span, content) + src << output("[span]:[content]", "variables[REF(D)].browser:replace_span") + + #define VV_HTML_ENCODE(thing) ( sanitize ? html_encode(thing) : thing ) /proc/debug_variable(name, value, level, datum/DA = null, sanitize = TRUE) var/header @@ -479,7 +499,6 @@ return src.holder.show_player_panel(M) - href_list["datumrefresh"] = href_list["mob_player_panel"] else if(href_list["godmode"]) if(!check_rights(R_ADMIN)) @@ -491,7 +510,6 @@ return src.cmd_admin_godmode(M) - href_list["datumrefresh"] = href_list["godmode"] else if(href_list["mark_object"]) if(!check_rights(NONE)) @@ -502,8 +520,10 @@ to_chat(usr, "This can only be done to instances of type /datum") return - src.holder.marked_datum = D - href_list["datumrefresh"] = href_list["mark_object"] + if(holder.marked_datum) + vv_update_display(holder.marked_datum, "marked", "") + holder.marked_datum = D + vv_update_display(D, "marked", VV_MSG_MARKED) else if(href_list["proc_call"]) if(!check_rights(NONE)) @@ -522,7 +542,8 @@ if(!istype(D)) to_chat(usr, "Unable to locate item!") admin_delete(D) - href_list["datumrefresh"] = href_list["delete"] + if (isturf(D)) // show the turf that took its place + debug_variables(D) else if(href_list["osay"]) if(!check_rights(R_FUN, 0)) @@ -581,18 +602,33 @@ message_admins("Admin [key_name_admin(usr)] renamed [key_name_admin(M)] to [new_name].") M.fully_replace_character_name(M.real_name,new_name) - href_list["datumrefresh"] = href_list["rename"] + vv_update_display(M, "name", new_name) + vv_update_display(M, "real_name", M.real_name || "No real name") else if(href_list["varnameedit"] && href_list["datumedit"]) if(!check_rights(NONE)) return - var/D = locate(href_list["datumedit"]) + var/datum/D = locate(href_list["datumedit"]) if(!istype(D, /datum)) to_chat(usr, "This can only be used on datums") return - modify_variables(D, href_list["varnameedit"], 1) + if (!modify_variables(D, href_list["varnameedit"], 1)) + return + switch(href_list["varnameedit"]) + if("name") + vv_update_display(D, "name", "[D]") + if("dir") + if(isatom(D)) + var/dir = D.vars["dir"] + vv_update_display(D, "dir", dir2text(dir) || dir) + if("ckey") + if(isliving(D)) + vv_update_display(D, "ckey", D.vars["ckey"] || "No ckey") + if("real_name") + if(isliving(D)) + vv_update_display(D, "real_name", D.vars["real_name"] || "No real name") else if(href_list["varnamechange"] && href_list["datumchange"]) if(!check_rights(NONE)) @@ -724,7 +760,6 @@ return src.give_spell(M) - href_list["datumrefresh"] = href_list["give_spell"] else if(href_list["remove_spell"]) if(!check_rights(NONE)) @@ -736,7 +771,6 @@ return remove_spell(M) - href_list["datumrefresh"] = href_list["remove_spell"] else if(href_list["give_disease"]) if(!check_rights(NONE)) @@ -748,7 +782,6 @@ return src.give_disease(M) - href_list["datumrefresh"] = href_list["give_spell"] else if(href_list["gib"]) if(!check_rights(R_FUN)) @@ -771,7 +804,6 @@ return togglebuildmode(M) - href_list["datumrefresh"] = href_list["build_mode"] else if(href_list["drop_everything"]) if(!check_rights(NONE)) @@ -923,8 +955,6 @@ log_admin("[key_name(usr)] has added [amount] units of [chosen_id] to \the [A]") message_admins("[key_name(usr)] has added [amount] units of [chosen_id] to \the [A]") - href_list["datumrefresh"] = href_list["addreagent"] - else if(href_list["explode"]) if(!check_rights(R_FUN)) return @@ -935,7 +965,6 @@ return src.cmd_admin_explosion(A) - href_list["datumrefresh"] = href_list["explode"] else if(href_list["emp"]) if(!check_rights(R_FUN)) @@ -947,7 +976,6 @@ return src.cmd_admin_emp(A) - href_list["datumrefresh"] = href_list["emp"] else if(href_list["modtransform"]) if(!check_rights(R_DEBUG)) @@ -976,8 +1004,6 @@ if(!isnull(angle)) A.transform = M.Turn(angle) - href_list["datumrefresh"] = href_list["modtransform"] - else if(href_list["rotatedatum"]) if(!check_rights(NONE)) return @@ -992,7 +1018,7 @@ A.setDir(turn(A.dir, -45)) if("left") A.setDir(turn(A.dir, 45)) - href_list["datumrefresh"] = href_list["rotatedatum"] + vv_update_display(A, "dir", dir2text(A.dir)) else if(href_list["editorgans"]) if(!check_rights(NONE)) @@ -1004,7 +1030,6 @@ return manipulate_organs(C) - href_list["datumrefresh"] = href_list["editorgans"] else if(href_list["givemartialart"]) if(!check_rights(NONE)) @@ -1053,8 +1078,6 @@ if(result) C.gain_trauma(result) - href_list["datumrefresh"] = href_list["givetrauma"] - else if(href_list["curetraumas"]) if(!check_rights(NONE)) return @@ -1066,8 +1089,6 @@ C.cure_all_traumas(TRAUMA_RESILIENCE_ABSOLUTE) - href_list["datumrefresh"] = href_list["curetraumas"] - else if(href_list["hallucinate"]) if(!check_rights(NONE)) return @@ -1297,21 +1318,29 @@ to_chat(usr, "Mob doesn't exist anymore") return + var/newamt switch(Text) if("brute") L.adjustBruteLoss(amount) + newamt = L.getBruteLoss() if("fire") L.adjustFireLoss(amount) + newamt = L.getFireLoss() if("toxin") L.adjustToxLoss(amount) + newamt = L.getToxLoss() if("oxygen") L.adjustOxyLoss(amount) + newamt = L.getOxyLoss() if("brain") L.adjustBrainLoss(amount) + newamt = L.getBrainLoss() if("clone") L.adjustCloneLoss(amount) + newamt = L.getCloneLoss() if("stamina") L.adjustStaminaLoss(amount) + newamt = L.getStaminaLoss() else to_chat(usr, "You caused an error. DEBUG: Text:[Text] Mob:[L]") return @@ -1321,4 +1350,4 @@ var/msg = "[key_name(usr)] dealt [amount] amount of [Text] damage to [L] " message_admins(msg) admin_ticket_log(L, msg) - href_list["datumrefresh"] = href_list["mobToDamage"] + vv_update_display(L, Text, "[newamt]") diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index 405595d1de9..ace5e09a14c 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -629,9 +629,11 @@ GLOBAL_PROTECT(VVpixelmovement) if (O.vv_edit_var(variable, var_new) == FALSE) to_chat(src, "Your edit was rejected by the object.") return + vv_update_display(O, "varedited", VV_MSG_EDITED) SEND_GLOBAL_SIGNAL(COMSIG_GLOB_VAR_EDIT, args) log_world("### VarEdit by [key_name(src)]: [O.type] [variable]=[var_value] => [var_new]") log_admin("[key_name(src)] modified [original_name]'s [variable] from [html_encode("[var_value]")] to [html_encode("[var_new]")]") var/msg = "[key_name_admin(src)] modified [original_name]'s [variable] from [var_value] to [var_new]" message_admins(msg) admin_ticket_log(O, msg) + return TRUE diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 7a1a30df50d..4ffc24b3ac6 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -596,16 +596,28 @@ Traitors and the like can also be revived with the previous role mostly intact. /client/proc/admin_delete(datum/D) var/atom/A = D - var/coords = istype(A) ? " at ([A.x], [A.y], [A.z])" : "" - if (alert(src, "Are you sure you want to delete:\n[D]\nat[coords]?", "Confirmation", "Yes", "No") == "Yes") - log_admin("[key_name(usr)] deleted [D][coords]") - message_admins("[key_name_admin(usr)] deleted [D][coords]") + var/coords = "" + var/jmp_coords = "" + if(istype(A)) + var/turf/T = get_turf(A) + if(T) + coords = "at [COORD(T)]" + jmp_coords = "at [ADMIN_COORDJMP(T)]" + else + jmp_coords = coords = "in nullspace" + + if (alert(src, "Are you sure you want to delete:\n[D]\n[coords]?", "Confirmation", "Yes", "No") == "Yes") + log_admin("[key_name(usr)] deleted [D] [coords]") + message_admins("[key_name_admin(usr)] deleted [D] [jmp_coords]") SSblackbox.record_feedback("tally", "admin_verb", 1, "Delete") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! if(isturf(D)) var/turf/T = D T.ScrapeAway() else + vv_update_display(D, "deleted", VV_MSG_DELETED) qdel(D) + if(!QDELETED(D)) + vv_update_display(D, "deleted", "") /client/proc/cmd_admin_list_open_jobs() set category = "Admin"