From 3777de4a2e5129eff451c8c0848c0ab8d77f8737 Mon Sep 17 00:00:00 2001 From: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Date: Fri, 14 Mar 2025 16:16:01 -0400 Subject: [PATCH 01/38] all the misc ports --- code/__DEFINES/html_assistant.dm | 7 + code/__DEFINES/vv.dm | 4 +- code/__HELPERS/stat_tracking.dm | 2 +- code/__byond_version_compat.dm | 8 -- code/_globalvars/misc.dm | 2 +- code/_onclick/hud/hud.dm | 20 ++- .../hud/rendering/plane_master_group.dm | 30 +++-- code/_onclick/hud/rendering/render_plate.dm | 7 +- code/controllers/subsystem/blackbox.dm | 2 +- code/datums/profiling.dm | 4 +- code/modules/admin/admin.dm | 4 +- code/modules/admin/admin_investigate.dm | 4 +- code/modules/admin/topic.dm | 4 +- code/modules/admin/verbs/debug.dm | 4 +- code/modules/admin/verbs/getlogs.dm | 2 +- code/modules/admin/verbs/mapping.dm | 6 +- code/modules/admin/verbs/plane_debugger.dm | 2 +- code/modules/admin/verbs/randomverbs.dm | 5 +- code/modules/client/client_procs.dm | 10 +- code/modules/client/player_details.dm | 11 +- code/modules/mob/dead/new_player/poll.dm | 14 +- code/modules/tgui_panel/external.dm | 9 +- html/admin/search.js | 4 +- html/statbrowser.html | 23 +++- interface/skin.dmf | 42 +++++- tgui/global.d.ts | 32 +++-- .../common/{storage.js => storage.ts} | 123 +++++++++++------- tgui/packages/tgui-panel/audio/player.js | 117 ----------------- tgui/packages/tgui-panel/audio/player.ts | 101 ++++++++++++++ tgui/packages/tgui-panel/chat/renderer.js | 7 +- tgui/packages/tgui-panel/index.js | 10 +- .../tgui-panel/styles/tgchat/chat-dark.scss | 1 + .../tgui/interfaces/PersonalCrafting.tsx | 3 +- .../tgui/interfaces/PlaneMasterDebug.tsx | 10 +- tgui/packages/tgui/layouts/Layout.js | 1 + tgui/packages/tgui/styles/layouts/Layout.scss | 18 ++- tgui/packages/tgui/styles/main.scss | 2 +- tgui/public/tgui.html | 55 +++++++- 38 files changed, 431 insertions(+), 279 deletions(-) rename tgui/packages/common/{storage.js => storage.ts} (53%) delete mode 100644 tgui/packages/tgui-panel/audio/player.js create mode 100644 tgui/packages/tgui-panel/audio/player.ts diff --git a/code/__DEFINES/html_assistant.dm b/code/__DEFINES/html_assistant.dm index 03f95ad20158b..ed16afb481c1f 100644 --- a/code/__DEFINES/html_assistant.dm +++ b/code/__DEFINES/html_assistant.dm @@ -32,3 +32,10 @@ "[(GLOB.tooltips[config_key] ? "
[hover_me][GLOB.tooltips[config_key]]
" : "[hover_me]")]" #define OPEN_WIKI(wiki_url, text) (CONFIG_GET(string/wikiurl) ? "[text]" : "[text]") + + +#define HTML_SKELETON_INTERNAL(head, body) \ +"[head][body]" + +#define HTML_SKELETON_TITLE(title, body) HTML_SKELETON_INTERNAL("[title]", body) +#define HTML_SKELETON(body) HTML_SKELETON_INTERNAL("", body) diff --git a/code/__DEFINES/vv.dm b/code/__DEFINES/vv.dm index 10d0204ed7ef0..2c15d195f9fcb 100644 --- a/code/__DEFINES/vv.dm +++ b/code/__DEFINES/vv.dm @@ -26,8 +26,8 @@ //#define IS_VALID_ASSOC_KEY(V) (istext(V) || ispath(V) || isdatum(V) || islist(V)) #define IS_VALID_ASSOC_KEY(V) (!isnum(V)) //hhmmm.. //General helpers -#define VV_HREF_TARGET_INTERNAL(target, href_key) "?_src_=vars;[HrefToken()];[href_key]=TRUE;[VV_HK_TARGET]=[REF(target)]" -#define VV_HREF_TARGETREF_INTERNAL(targetref, href_key) "?_src_=vars;[HrefToken()];[href_key]=TRUE;[VV_HK_TARGET]=[targetref]" +#define VV_HREF_TARGET_INTERNAL(target, href_key) "byond://?_src_=vars;[HrefToken()];[href_key]=TRUE;[VV_HK_TARGET]=[REF(target)]" +#define VV_HREF_TARGETREF_INTERNAL(targetref, href_key) "byond://?_src_=vars;[HrefToken()];[href_key]=TRUE;[VV_HK_TARGET]=[targetref]" #define VV_HREF_TARGET(target, href_key, text) "[text]" #define VV_HREF_TARGETREF(targetref, href_key, text) "[text]" #define VV_HREF_TARGET_1V(target, href_key, text, varname) "[text]" //for stuff like basic varedits, one variable diff --git a/code/__HELPERS/stat_tracking.dm b/code/__HELPERS/stat_tracking.dm index 097715b940474..2f55ea0455dfd 100644 --- a/code/__HELPERS/stat_tracking.dm +++ b/code/__HELPERS/stat_tracking.dm @@ -8,6 +8,6 @@ lines += "[entry] => [num2text(data[STAT_ENTRY_TIME], 10)]ms ([data[STAT_ENTRY_COUNT]]) (avg:[num2text(data[STAT_ENTRY_TIME]/(data[STAT_ENTRY_COUNT] || 1), 99)])" if (user) - user << browse("
  1. [lines.Join("
  2. ")]
", "window=[url_encode("stats:[REF(stats)]")]") + user << browse(HTML_SKELETON("
  1. [lines.Join("
  2. ")]
"), "window=[url_encode("stats:[REF(stats)]")]") . = lines.Join("\n") diff --git a/code/__byond_version_compat.dm b/code/__byond_version_compat.dm index 7e69aa34da46b..933e67092c8e0 100644 --- a/code/__byond_version_compat.dm +++ b/code/__byond_version_compat.dm @@ -9,14 +9,6 @@ #error You need version 515.1630 or higher #endif -//If you update these values, update the message in the #error -#define MAX_BYOND_MAJOR 515 -#define MAX_BYOND_MINOR 1647 -#if ((DM_VERSION > MAX_BYOND_MAJOR) || (DM_BUILD > MAX_BYOND_MINOR)) && !defined(SPACEMAN_DMM) -#error Your version of BYOND is too new to compile this project. -#error Download version 515.1647 at www.byond.com/download/build/515/515.1642_byond.exe -#endif - // 515 split call for external libraries into call_ext #if DM_VERSION < 515 #define LIBCALL call diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index b407cf78d19c5..ffd51d879015f 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -17,7 +17,7 @@ GLOBAL_LIST_EMPTY(powernets) GLOBAL_VAR_INIT(bsa_unlock, FALSE) //BSA unlocked by head ID swipes -GLOBAL_LIST_EMPTY(player_details) // ckey -> /datum/player_details +GLOBAL_LIST_EMPTY_TYPED(player_details, /datum/player_details) // ckey -> /datum/player_details GLOBAL_LIST_INIT(preview_backgrounds, list( "floor" = "Default Tile", diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 85099e5bdcd7e..734d79d002db4 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -107,6 +107,10 @@ GLOBAL_LIST_INIT(available_ui_styles, list( // and avoid needing to make changes to all idk 300 consumers if we want to change the appearance var/list/asset_refs_for_reuse = list() + /// The BYOND version of the client that was last logged into this mob. + /// Currently used to rebuild all plane master groups when going between 515<->516. + var/last_byond_version + /datum/hud/New(mob/owner) mymob = owner @@ -153,8 +157,20 @@ GLOBAL_LIST_INIT(available_ui_styles, list( /datum/hud/proc/client_refresh(datum/source) SIGNAL_HANDLER - RegisterSignal(mymob.canon_client, COMSIG_CLIENT_SET_EYE, PROC_REF(on_eye_change)) - on_eye_change(null, null, mymob.canon_client.eye) + var/client/client = mymob.canon_client + var/new_byond_version = client.byond_version +#if MIN_COMPILER_VERSION > 515 + #warn Fully change default relay_loc to "1,1", rather than changing it based on client version +#endif + if(!isnull(last_byond_version) && new_byond_version != last_byond_version) + var/new_relay_loc = (new_byond_version > 515) ? "1,1" : "CENTER" + for(var/group_key as anything in master_groups) + var/datum/plane_master_group/group = master_groups[group_key] + group.relay_loc = new_relay_loc + group.rebuild_hud() + last_byond_version = new_byond_version + RegisterSignal(client, COMSIG_CLIENT_SET_EYE, PROC_REF(on_eye_change)) + on_eye_change(null, null, client.eye) /datum/hud/proc/clear_client(datum/source) SIGNAL_HANDLER diff --git a/code/_onclick/hud/rendering/plane_master_group.dm b/code/_onclick/hud/rendering/plane_master_group.dm index 1aa9cd28ace7c..247db0515ad1d 100644 --- a/code/_onclick/hud/rendering/plane_master_group.dm +++ b/code/_onclick/hud/rendering/plane_master_group.dm @@ -47,11 +47,19 @@ stack_trace("Hey brother, our key [key] is already in use by a plane master group on the passed in hud, belonging to [viewing_hud.mymob]. Ya fucked up, why are there dupes") return +#if MIN_COMPILER_VERSION > 516 + #warn Fully change default relay_loc to "1,1", rather than changing it based on client version +#endif + set_hud(viewing_hud) our_hud.master_groups[key] = src show_hud() transform_lower_turfs(our_hud, active_offset) + if(viewing_hud.mymob?.client?.byond_version > 515) + relay_loc = "1,1" + rebuild_plane_masters() + /// Well, refresh our group, mostly useful for plane specific updates /datum/plane_master_group/proc/refresh_hud() hide_hud() @@ -62,6 +70,7 @@ hide_hud() rebuild_plane_masters() show_hud() + our_hud.update_parallax_pref() transform_lower_turfs(our_hud, active_offset) /// Regenerate our plane masters, this is useful if we don't have a mob but still want to rebuild. Such in the case of changing the screen_loc of relays @@ -183,19 +192,16 @@ /// If you wanna try someday feel free, but I can't manage it /datum/plane_master_group/popup -/// This is janky as hell but since something changed with CENTER positioning after build 1614 we have to switch to the bandaid LEFT,TOP positioning -/// using LEFT,TOP *at* or *before* 1614 will result in another broken offset for cameras -#define MAX_CLIENT_BUILD_WITH_WORKING_SECONDARY_MAPS 1614 - +/// Note do not use return ..() because it will cause client crush when screen gets deleted +/// TOOD: Remove this entirely when 516 is stable /datum/plane_master_group/popup/attach_to(datum/hud/viewing_hud) - // If we're about to display this group to a mob who's client is more recent than the last known version with working CENTER, then we need to remake the relays - // with the correct screen_loc using the relay override - if(viewing_hud.mymob?.client?.byond_build > MAX_CLIENT_BUILD_WITH_WORKING_SECONDARY_MAPS) - relay_loc = "LEFT,TOP" - rebuild_plane_masters() - return ..() - -#undef MAX_CLIENT_BUILD_WITH_WORKING_SECONDARY_MAPS + if(viewing_hud.master_groups[key]) + stack_trace("[key] is already in use by a plane master group on the passed in hud, belonging to [viewing_hud.mymob]!") + return + relay_loc = "1,1" + rebuild_plane_masters() + set_hud(viewing_hud) + show_hud() /datum/plane_master_group/popup/transform_lower_turfs(datum/hud/source, new_offset, use_scale = TRUE) return ..(source, new_offset, FALSE) diff --git a/code/_onclick/hud/rendering/render_plate.dm b/code/_onclick/hud/rendering/render_plate.dm index 8cafa5d2599f0..c7cc41040c7dd 100644 --- a/code/_onclick/hud/rendering/render_plate.dm +++ b/code/_onclick/hud/rendering/render_plate.dm @@ -382,7 +382,7 @@ render_relay_planes = list(RENDER_PLANE_MASTER) /** - * Plane master proc called in Initialize() that creates relay objects, and sets them uo as needed + * Plane master proc called in Initialize() that creates relay objects, and sets them up as needed * Sets: * * layer from plane to avoid z-fighting * * planes to relay the render to @@ -392,6 +392,9 @@ * Other vars such as alpha will automatically be applied with the render source */ /atom/movable/screen/plane_master/proc/generate_render_relays() +#if MIN_COMPILER_VERSION > 516 + #warn Fully change default relay_loc to "1,1" +#endif var/relay_loc = home?.relay_loc || "CENTER" // If we're using a submap (say for a popup window) make sure we draw onto it if(home?.map) @@ -426,7 +429,7 @@ if(!length(relays) && !initial(render_target)) render_target = OFFSET_RENDER_TARGET(get_plane_master_render_base(name), offset) if(!relay_loc) - relay_loc = "CENTER" + relay_loc = (show_to?.byond_version > 515) ? "1,1" : "CENTER" // If we're using a submap (say for a popup window) make sure we draw onto it if(home?.map) relay_loc = "[home.map]:[relay_loc]" diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index 68fade5867eaa..aabbc6ac7e9de 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -93,7 +93,7 @@ SUBSYSTEM_DEF(blackbox) for(var/player_key in GLOB.player_details) var/datum/player_details/PD = GLOB.player_details[player_key] - record_feedback("tally", "client_byond_version", 1, PD.byond_version) + record_feedback("tally", "client_byond_version", 1, PD.full_byond_version()) /datum/controller/subsystem/blackbox/Shutdown() sealed = FALSE diff --git a/code/datums/profiling.dm b/code/datums/profiling.dm index dcf966750a627..1313655a7e139 100644 --- a/code/datums/profiling.dm +++ b/code/datums/profiling.dm @@ -15,4 +15,6 @@ GLOBAL_REAL_VAR(PROFILE_TIME) var/list/data = PROFILE_STORE[entry] lines += "[entry] => [num2text(data[PROFILE_ITEM_TIME], 10)]ms ([data[PROFILE_ITEM_COUNT]]) (avg:[num2text(data[PROFILE_ITEM_TIME]/(data[PROFILE_ITEM_COUNT] || 1), 99)])" - user << browse("
  1. [lines.Join("
  2. ")]
", "window=[url_encode(GUID())]") + var/datum/browser/browser = new(user, "[url_encode(GUID())]", null, 500, 500) + browser.set_content("
  1. [lines.Join("
  2. ")]
") + browser.open() diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 114c0df8cf4ea..800fb82cf76ee 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -447,7 +447,9 @@ dat += "" - usr << browse(dat, "window=admin2;size=210x200") + var/datum/browser/browser = new(usr, "admin2", "Game Panel", 240, 280) + browser.set_content(dat) + browser.open() return /////////////////////////////////////////////////////////////////////////////////////////////////admins2.dm merge diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index e673d0da3dc70..0e3e90634eee0 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -39,4 +39,6 @@ if(!fexists(F)) to_chat(src, span_danger("No [selected] logfile was found."), confidential=TRUE) return - src << browse(F,"window=investigate[selected];size=800x300") + var/datum/browser/browser = new(user, "investigate[selected]", "Investigation of [selected]", 800, 300) + browser.set_content(file2text(F)) + browser.open() diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 1b0b84ec293e3..53100687904da 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1571,7 +1571,9 @@ dat += thing_to_check dat += "" - usr << browse(dat.Join("
"), "window=related_[C];size=420x300") + var/datum/browser/browser = new(usr, "related_[C]", "[C.ckey] Related Accounts", 420, 300) + browser.set_content(dat.Join("
")) + browser.open() else if(href_list["centcomlookup"]) if(!check_rights(R_ADMIN)) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 05cf265d9668b..7cfd53f66c644 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -950,7 +950,9 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) set name = "Display Initialize(mapload) Log" set desc = "Displays a list of things that didn't handle Initialize(mapload) properly" - usr << browse("" + replacetext(SSatoms.InitLog(), "\n", "
") + "", "window=initlog") + var/datum/browser/browser = new(user, "initlog", "Initialize Log", 500, 500) + browser.set_content(replacetext(SSatoms.InitLog(), "\n", "
")) + browser.open() /client/proc/debug_plane_masters() set category = "Misc.Server Debug" diff --git a/code/modules/admin/verbs/getlogs.dm b/code/modules/admin/verbs/getlogs.dm index fcd593837e66c..19970981fd280 100644 --- a/code/modules/admin/verbs/getlogs.dm +++ b/code/modules/admin/verbs/getlogs.dm @@ -26,7 +26,7 @@ message_admins("[key_name_admin(src)] accessed file: [path]") switch(tgui_alert(usr,"View (in game), Open (in your system's text editor), or Download?", path, list("View", "Open", "Download"))) if ("View") - src << browse("
[html_encode(file2text(file(path)))]
", list2params(list("window" = "viewfile.[path]"))) + src << browse(HTML_SKELETON("
[html_encode(file2text(file(path)))]
"), list2params(list("window" = "viewfile.[path]"))) if ("Open") src << run(file(path)) if ("Download") diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index 22adb4934bc12..f13f3b6cfa7b0 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -172,7 +172,7 @@ GLOBAL_LIST_EMPTY(dirty_vars) output += "
  • Camera not connected to wall at [ADMIN_VERBOSEJMP(C1)] Network: [json_encode(C1.network)]
  • " output += "" - usr << browse(output,"window=airreport;size=1000x500") + usr << browse(HTML_SKELETON(output), "window=airreport;size=1000x500") SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Camera Report") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/intercom_view() @@ -203,7 +203,7 @@ GLOBAL_LIST_EMPTY(dirty_vars) for(var/datum/map_report/report as anything in GLOB.map_reports) dat += "[report.tag] ([report.original_path]) - View
    " - usr << browse(dat, "window=map_reports") + usr << browse(HTML_SKELETON(dat), "window=map_reports") /client/proc/cmd_show_at_list() set category = "Misc.Server Debug" @@ -221,7 +221,7 @@ GLOBAL_LIST_EMPTY(dirty_vars) dat += "" - usr << browse(dat, "window=at_list") + usr << browse(HTML_SKELETON(dat), "window=at_list") SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Roundstart Active Turfs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/plane_debugger.dm b/code/modules/admin/verbs/plane_debugger.dm index 1cf7d9c37a55e..083703ae78be5 100644 --- a/code/modules/admin/verbs/plane_debugger.dm +++ b/code/modules/admin/verbs/plane_debugger.dm @@ -341,7 +341,7 @@ var/list/our_planes = group.plane_masters switch(action) - if("refresh") + if("rebuild") group.rebuild_hud() if("reset_mob") set_target(null) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 33ca6c898ad1d..21206c277e8e1 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -1091,8 +1091,9 @@ Traitors and the like can also be revived with the previous role mostly intact. dat += "[S.name] - Announce | Remove
    " dat += "
    Add New Goal" dat += "" - usr << browse(dat, "window=goals;size=400x400") - + var/datum/browser/browser = new(usr, "goals", "Modify Goals", 400, 400) + browser.set_content(dat) + browser.open() /client/proc/toggle_hub() set category = "Server" diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 8a9c3875e8e5b..a0962c95eb7c9 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -231,6 +231,9 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( GLOB.clients += src GLOB.directory[ckey] = src + if(byond_version >= 516) + winset(src, null, list("browser-options" = "find,refresh,byondstorage")) + // Instantiate tgui panel tgui_panel = new(src, "browseroutput") @@ -297,9 +300,12 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( if(GLOB.player_details[ckey]) player_details = GLOB.player_details[ckey] player_details.byond_version = full_version + player_details.byond_version = byond_version + player_details.byond_build = byond_build else player_details = new - player_details.byond_version = full_version + player_details.byond_version = byond_version + player_details.byond_build = byond_build GLOB.player_details[ckey] = player_details if (prefs.unlock_content & DONOR_YOGS) @@ -369,7 +375,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( msg += "Required version to remove this message: [cwv] or later
    " msg += "Visit BYOND's website to get the latest version of BYOND.
    " msg += "" - src << browse(msg, "window=warning_popup") + src << browse(HTML_SKELETON(msg), "window=warning_popup") else to_chat(src, span_danger("Your version of byond may be getting out of date:")) to_chat(src, CONFIG_GET(string/client_warn_message)) diff --git a/code/modules/client/player_details.dm b/code/modules/client/player_details.dm index 7dbfbe8c1ec91..f85355bc3e1db 100644 --- a/code/modules/client/player_details.dm +++ b/code/modules/client/player_details.dm @@ -4,7 +4,16 @@ var/list/post_login_callbacks = list() var/list/post_logout_callbacks = list() var/list/played_names = list() //List of names this key played under this round - var/byond_version = "Unknown" + /// Major version of BYOND this client is using. + var/byond_version + /// Build number of BYOND this client is using. + var/byond_build + +/// Returns the full version string (i.e 515.1642) of the BYOND version and build. +/datum/player_details/proc/full_byond_version() + if(!byond_version) + return "Unknown" + return "[byond_version].[byond_build || "xxx"]" /proc/log_played_names(ckey, ...) if(!ckey) diff --git a/code/modules/mob/dead/new_player/poll.dm b/code/modules/mob/dead/new_player/poll.dm index 3edf0f22f1703..9642add1fac90 100644 --- a/code/modules/mob/dead/new_player/poll.dm +++ b/code/modules/mob/dead/new_player/poll.dm @@ -24,7 +24,7 @@ qdel(query_poll_get) output += "" if(!QDELETED(src)) - src << browse(output,"window=playerpolllist;size=500x300") + src << browse(HTML_SKELETON(output),"window=playerpolllist;size=500x300") /mob/dead/new_player/proc/poll_player(pollid) if(!pollid) @@ -119,8 +119,8 @@ output += "" output += "" - src << browse(null ,"window=playerpolllist") - src << browse(output,"window=playerpoll;size=500x500") + src << browse(null, "window=playerpolllist") + src << browse(HTML_SKELETON(jointext(output, "")), "window=playerpoll;size=500x500") if(POLLTYPE_RATING) var/datum/DBQuery/query_rating_get_votes = SSdbcore.NewQuery("SELECT o.text, v.rating FROM [format_table_name("poll_option")] o, [format_table_name("poll_vote")] v WHERE o.pollid = :pollid AND v.ckey = :ckey AND o.id = v.optionid", list("pollid" = pollid, "ckey" = ckey)) if(!query_rating_get_votes.warn_execute()) @@ -177,8 +177,8 @@ output += "

    " output += "" if(!QDELETED(src)) - src << browse(null ,"window=playerpolllist") - src << browse(output,"window=playerpoll;size=500x500") + src << browse(null, "window=playerpolllist") + src << browse(HTML_SKELETON(jointext(output, "")), "window=playerpoll;size=500x500") if(POLLTYPE_MULTI) var/datum/DBQuery/query_multi_get_votes = SSdbcore.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = :pollid AND ckey = :ckey", list("pollid" = pollid, "ckey" = ckey)) if(!query_multi_get_votes.warn_execute()) @@ -229,8 +229,8 @@ if(!votedfor.len) output += "

    " output += "" - src << browse(null ,"window=playerpolllist") - src << browse(output,"window=playerpoll;size=500x250") + src << browse(null, "window=playerpolllist") + src << browse(HTML_SKELETON(jointext(output, "")), "window=playerpoll;size=500x250") if(POLLTYPE_IRV) var/datum/asset/irv_assets = get_asset_datum(/datum/asset/group/irv) irv_assets.send(src) diff --git a/code/modules/tgui_panel/external.dm b/code/modules/tgui_panel/external.dm index 74f0360bc9b7d..6b9e9bc9e035b 100644 --- a/code/modules/tgui_panel/external.dm +++ b/code/modules/tgui_panel/external.dm @@ -19,19 +19,16 @@ // Failed to fix, using tgalert as fallback action = tgalert(src, "Did that work?", "", "Yes", "No, switch to old ui") if (action == "No, switch to old ui") - winset(src, "output", "on-show=&is-disabled=0&is-visible=1") - winset(src, "browseroutput", "is-disabled=1;is-visible=0") + winset(src, "legacy_output_selector", "left=output_legacy") log_tgui(src, "Failed to fix.", context = "verb/fix_tgui_panel") /client/proc/nuke_chat() // Catch all solution (kick the whole thing in the pants) - winset(src, "output", "on-show=&is-disabled=0&is-visible=1") - winset(src, "browseroutput", "is-disabled=1;is-visible=0") + winset(src, "legacy_output_selector", "left=output_legacy") if(!tgui_panel || !istype(tgui_panel)) log_tgui(src, "tgui_panel datum is missing", context = "verb/fix_tgui_panel") tgui_panel = new(src) tgui_panel.Initialize(force = TRUE) // Force show the panel to see if there are any errors - winset(src, "output", "is-disabled=1&is-visible=0") - winset(src, "browseroutput", "is-disabled=0;is-visible=1") + winset(src, "legacy_output_selector", "left=output_browser") diff --git a/html/admin/search.js b/html/admin/search.js index ded0b9284467a..639a3729fe3a6 100644 --- a/html/admin/search.js +++ b/html/admin/search.js @@ -23,11 +23,11 @@ function updateSearch(){ } if(found == 0) row.style.display='none'; else{ - row.style.display='block'; + row.style.display='table-row'; /* DON'T make tables with block property */ row.className = alt_style; if(alt_style == 'alt') alt_style = 'norm'; else alt_style = 'alt'; } }catch(err) { } } -} \ No newline at end of file +} diff --git a/html/statbrowser.html b/html/statbrowser.html index d295b55f59685..a0534837016c9 100644 --- a/html/statbrowser.html +++ b/html/statbrowser.html @@ -7,15 +7,21 @@ - [add_req_access?"Edit operation keycodes":null] - [maint_access?"[(state > 0) ? "Terminate" : "Initiate"] maintenance protocol":null] + [add_req_access?"Edit operation keycodes":null] + [maint_access?"[(state > 0) ? "Terminate" : "Initiate"] maintenance protocol":null] [(state == 3) ?"--------------------
    ":null] - [(state == 3) ?"[cell?"Drop power cell":"No cell installed
    "]":null] - [(state == 3) ?"[scanmod?"Drop scanning module":"No scanning module installed
    "]":null] - [(state == 3) ?"[capacitor?"Drop capacitor":"No capacitor installed
    "]":null] - [(state == 3) ?"[(silicon_pilot&&occupant)?"Drop neural interface":"No neural interface installed
    "]":null] + [(state == 3) ?"[cell?"Drop power cell":"No cell installed
    "]":null] + [(state == 3) ?"[scanmod?"Drop scanning module":"No scanning module installed
    "]":null] + [(state == 3) ?"[capacitor?"Drop capacitor":"No capacitor installed
    "]":null] + [(state == 3) ?"[(silicon_pilot&&occupant)?"Drop neural interface":"No neural interface installed
    "]":null] [(state == 3) ?"--------------------
    ":null] - [(state>0) ?"Set Cabin Air Pressure":null] + [(state>0) ?"Set Cabin Air Pressure":null] "} user << browse(., "window=exosuit_maint_console") diff --git a/code/game/mecha/working/clarke.dm b/code/game/mecha/working/clarke.dm index 958e67895b41d..439732c1a370f 100644 --- a/code/game/mecha/working/clarke.dm +++ b/code/game/mecha/working/clarke.dm @@ -89,4 +89,4 @@ hostmech.box.dump_box_contents() /obj/item/mecha_parts/mecha_equipment/orebox_manager/get_equip_info() - return "[..()] [hostmech?.box ? "Unload Cargo" : "Error"]" + return "[..()] [hostmech?.box ? "Unload Cargo" : "Error"]" diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 977fbcf94783c..9c0a81bf8fe1c 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -190,7 +190,7 @@ output += "Cargo Compartment Contents:

    " if(cargo.len) for(var/obj/O in cargo) - output += "Unload : [O]
    " + output += "Unload : [O]
    " else output += "Nothing" output += "
    " diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index 473cfe0fe76b4..eb875616aaa01 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -101,13 +101,13 @@ GLOBAL_LIST_INIT(fluid_duct_recipes, list( var/all_layers /datum/pipe_info/proc/Render(dispenser) - var/dat = "
  • [name]
  • " + var/dat = "
  • [name]
  • " // Stationary pipe dispensers don't allow you to pre-select pipe directions. // This makes it impossble to spawn bent versions of bendable pipes. // We add a "Bent" pipe type with a preset diagonal direction to work around it. if(istype(dispenser, /obj/machinery/pipedispenser) && (dirtype == PIPE_BENDABLE || dirtype == /obj/item/pipe/binary/bendable)) - dat += "
  • Bent [name]
  • " + dat += "
  • Bent [name]
  • " return dat diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index 2b77fe12829ac..ba45547526cec 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -22,7 +22,7 @@ if(AREA_SPECIAL) . += "

    This place is not noted on the [src.name].

    " return . - . += "

    Create or modify an existing area

    " + . += "

    Create or modify an existing area

    " /obj/item/areaeditor/Topic(href, href_list) @@ -69,20 +69,20 @@ var/area/A = get_area(user) if(get_area_type() == AREA_STATION) . += "

    According to \the [src], you are now in \"[html_encode(A.name)]\".

    " - . += "

    Change area name

    " - . += "

    View wire colour legend

    " + . += "

    Change area name

    " + . += "

    View wire colour legend

    " if(!viewing) - . += "

    View structural data

    " + . += "

    View structural data

    " else - . += "

    Refresh structural data

    " - . += "

    Hide structural data

    " + . += "

    Refresh structural data

    " + . += "

    Hide structural data

    " else if(legend == TRUE) - . += "<< Back" + . += "<< Back" . += view_wire_devices(user); else //legend is a wireset - . += "<< Back" + . += "<< Back" . += view_wire_set(user, legend) var/datum/browser/popup = new(user, "blueprints", "[src]", 700, 500) popup.set_content(.) @@ -169,7 +169,7 @@ /obj/item/areaeditor/blueprints/proc/view_wire_devices(mob/user) var/message = "
    You examine the wire legend.
    " for(var/wireset in GLOB.wire_color_directory) - message += "
    [GLOB.wire_name_directory[wireset]]" + message += "
    [GLOB.wire_name_directory[wireset]]" message += "

    " return message diff --git a/code/game/objects/items/charter.dm b/code/game/objects/items/charter.dm index c0fa67b1b1553..b18547a480973 100644 --- a/code/game/objects/items/charter.dm +++ b/code/game/objects/items/charter.dm @@ -70,7 +70,7 @@ response_timer_id = addtimer(rename_callback, approval_time, TIMER_STOPPABLE) to_chat(GLOB.permissions.admins, span_adminnotice("CUSTOM STATION RENAME:[ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will auto-approve in [DisplayTimeText(approval_time)]).\ - (ACCEPT or REJECT) [ADMIN_SMITE(user)] [ADMIN_CENTCOM_REPLY(user)]")) + (ACCEPT or REJECT) [ADMIN_SMITE(user)] [ADMIN_CENTCOM_REPLY(user)]")) /obj/item/station_charter/proc/accept_proposed(user) if(!user) diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index 3e9f9236e8ee1..e5acb13910e9e 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -92,32 +92,32 @@ var/html switch(track_mode) if(BUGMODE_LIST) - html = "

    Select a camera:

    \[Cancel camera view\]
    " + html = "

    Select a camera:

    \[Cancel camera view\]
    " for(var/entry in cameras) var/obj/machinery/camera/C = bugged_cameras[entry] var/functions = "" if(C.bug == src) - functions = " - \[Monitor\]\[Disable\]" + functions = " - \[Monitor\]\[Disable\]" else - functions = " - \[Monitor\]" - html += "" + functions = " - \[Monitor\]" + html += "" if(BUGMODE_MONITOR) if(current) - html = "Analyzing Camera '[current.c_tag]' \[Select Camera\]
    " + html = "Analyzing Camera '[current.c_tag]' \[Select Camera\]
    " html += camera_report() else track_mode = BUGMODE_LIST return .(cameras) if(BUGMODE_TRACK) if(tracking) - html = "Tracking '[tracked_name]' \[Cancel Tracking\]\[Cancel camera view\]
    " + html = "Tracking '[tracked_name]' \[Cancel Tracking\]\[Cancel camera view\]
    " if(last_found) var/time_diff = round((world.time - last_seen) / 150) var/obj/machinery/camera/C = bugged_cameras[last_found] var/outstring if(C) - outstring = "[last_found]" + outstring = "[last_found]" else outstring = last_found if(!time_diff) @@ -130,7 +130,7 @@ s = "00" html += "Last seen near [outstring] ([m]:[s] minute\s ago)
    " if( C && (C.bug == src)) //Checks to see if the camera has a bug - html += "\[Disable\]" + html += "\[Disable\]" else html += "Not yet seen." @@ -159,7 +159,7 @@ dat += "[S.name]" var/stage = round(S.current_size / 2)+1 dat += " (Stage [stage])" - dat += " \[Track\]
    " + dat += " \[Track\]
    " for(var/obj/mecha/M in seen) if(M.name in names) @@ -168,7 +168,7 @@ else names[M.name] = 1 dat += "[M.name]" - dat += " \[Track\]
    " + dat += " \[Track\]
    " for(var/mob/living/M in seen) @@ -183,7 +183,7 @@ dat += " (Sitting)" else dat += " (Laying down)" - dat += " \[Track\]
    " + dat += " \[Track\]
    " if(length(dat) == 0) dat += "No motion detected." return dat diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index ce10148b852f0..f3e1bb1e21aac 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -147,7 +147,7 @@ if(power_drained > max_power * 0.98) if (!admins_warned) admins_warned = TRUE - message_admins("Power sink at ([x],[y],[z] - JMP) is 95% full. Explosion imminent.") + message_admins("Power sink at ([x],[y],[z] - JMP) is 95% full. Explosion imminent.") playsound(src, 'sound/effects/screech.ogg', 100, 1, 1) if(power_drained >= max_power) diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index 2aae4d28df736..988361981ca70 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -162,7 +162,7 @@ var/attachment if(attached_device) if(istype(attached_device, /obj/item/assembly/signaler)) - attachment = "[attached_device]" + attachment = "[attached_device]" else attachment = attached_device diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index 990e341cd685c..e7137e73e298a 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -39,7 +39,7 @@ else dat = {" Persistent Signal Locator
    -Refresh"} +Refresh"} dat += "" user << browse(dat, "window=radio") onclose(user, "radio") diff --git a/code/game/objects/structures/guncase.dm b/code/game/objects/structures/guncase.dm index 81edaf9b900bc..d1bc3c33423bc 100644 --- a/code/game/objects/structures/guncase.dm +++ b/code/game/objects/structures/guncase.dm @@ -69,7 +69,7 @@ if(LAZYLEN(contents)) for(var/i in 1 to contents.len) var/obj/item/I = contents[i] - dat += "[I.name]
    " + dat += "[I.name]
    " dat += "
    [entry][functions]
    [entry][functions]
    " var/datum/browser/popup = new(user, "gunlocker", "
    [name]
    ", 350, 300) diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm index 29952732a6b52..7401501da1efd 100644 --- a/code/game/objects/structures/noticeboard.dm +++ b/code/game/objects/structures/noticeboard.dm @@ -48,9 +48,9 @@ var/dat = "[name]
    " for(var/obj/item/P in src) if(istype(P, /obj/item/paper)) - dat += "[P.name] [auth ? "Write Remove" : ""]
    " + dat += "[P.name] [auth ? "Write Remove" : ""]
    " else - dat += "[P.name] [auth ? "Remove" : ""]
    " + dat += "[P.name] [auth ? "Remove" : ""]
    " user << browse("Notices[dat]","window=noticeboard") onclose(user, "noticeboard") diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 800fb82cf76ee..0de46d96a9c49 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -42,33 +42,33 @@ body += "Options panel for [M]" if(M.client) body += " played by [M.client] " - body += "\[[M.client.holder ? M.client.holder.rank_name() : "Player"]\]" + body += "\[[M.client.holder ? M.client.holder.rank_name() : "Player"]\]" if(CONFIG_GET(flag/use_exp_tracking)) - body += "\[" + M.client.get_exp_living() + " | " - body += " Toggle Exempt\]" + body += "\[" + M.client.get_exp_living() + " | " + body += " Toggle Exempt\]" if(isnewplayer(M)) body += " Hasn't Entered Game " else - body += " \[Heal\] " + body += " \[Heal\] " if(M.client) body += "
    \[First Seen: [M.client.player_join_date]\]\[Byond account registered on: [M.client.account_join_date]\]" body += "

    CentCom Galactic Ban DB: " if(CONFIG_GET(string/centcom_ban_db)) - body += "Search" + body += "Search" else body += "Disabled" body += "

    Show related accounts by: " - body += "\[ CID | " - body += "IP \]" + body += "\[ CID | " + body += "IP \]" var/rep = 0 rep += SSpersistence.antag_rep[M.ckey] body += "

    Antagonist reputation: [rep]" - body += "
    \[increase\] " - body += "\[decrease\] " - body += "\[set\] " - body += "\[zero\]" + body += "
    \[increase\] " + body += "\[decrease\] " + body += "\[set\] " + body += "\[zero\]" var/full_version = "Unknown" if(M.client.byond_version) full_version = "[M.client.byond_version].[M.client.byond_build ? M.client.byond_build : "xxx"]" @@ -76,62 +76,62 @@ body += "

    \[ " - body += "VV - " + body += "VV - " if(M.mind) - body += "TP - " + body += "TP - " else - body += "Init Mind - " + body += "Init Mind - " if (iscyborg(M)) - body += "BP - " - body += "PM - " - body += "SM - " + body += "BP - " + body += "PM - " + body += "SM - " if (ishuman(M) && M.mind) - body += "HM - " - body += "FLW - " + body += "HM - " + body += "FLW - " //Default to client logs if available var/source = LOGSRC_MOB if(M.client) source = LOGSRC_CLIENT - body += "LOGS\]
    " + body += "LOGS\]
    " body += "Mob type = [M.type]

    " - body += "Kick | " + body += "Kick | " if(M.client) - body += "Ban | " + body += "Ban | " else - body += "Ban | " + body += "Ban | " - body += "Notes | Messages | Watchlist | " + body += "Notes | Messages | Watchlist | " if(M.client) - body += "| Prison | " - body += "\ Send back to Lobby | " + body += "| Prison | " + body += "\ Send back to Lobby | " var/muted = M.client.prefs.muted body += "
    Mute: " - body += "\[IC | " - body += "OOC | " - body += "PRAY | " - body += "ADMINHELP | " - body += "MENTORHELP | " - body += "DEADCHAT\]" - body += "(toggle all)" - body += "FREEZE" //yogs - adminfreezing + body += "\[IC | " + body += "OOC | " + body += "PRAY | " + body += "ADMINHELP | " + body += "MENTORHELP | " + body += "DEADCHAT\]" + body += "(toggle all)" + body += "FREEZE" //yogs - adminfreezing body += "

    " - body += "Jump to | " - body += "Get | " - body += "Send To" + body += "Jump to | " + body += "Get | " + body += "Send To" body += "

    " - body += "Traitor panel | " - body += "Narrate to | " - body += "Subtle message | " - body += "Language Menu" + body += "Traitor panel | " + body += "Narrate to | " + body += "Subtle message | " + body += "Language Menu" body += "

    " - body += "Give Antag Token | " - body += "Redeem Antag Token | " - body += "See Antag Tokens" + body += "Give Antag Token | " + body += "Redeem Antag Token | " + body += "See Antag Tokens" if (M.client) if(!isnewplayer(M)) @@ -143,72 +143,72 @@ if(ishuman(M)) body += "Human | " else - body += "Humanize | " + body += "Humanize | " //Monkey if(ismonkey(M)) body += "Monkeyized | " else - body += "Monkeyize | " + body += "Monkeyize | " //Corgi if(iscorgi(M)) body += "Corgized | " else - body += "Corgize | " + body += "Corgize | " //AI / Cyborg if(isAI(M)) body += "Is an AI | " - body += "Access AI Dashboard | " + body += "Access AI Dashboard | " else if(ishuman(M)) - body += "Make Robot | " - body += "Make Alien | " - body += "Make Slime | " - body += "Make Blob | " + body += "Make Robot | " + body += "Make Alien | " + body += "Make Slime | " + body += "Make Blob | " //Simple Animals if(isanimal(M)) - body += "Re-Animalize | " + body += "Re-Animalize | " else - body += "Animalize | " + body += "Animalize | " body += "

    " body += "Rudimentary transformation:
    These transformations only create a new mob type and copy stuff over. They do not take into account MMIs and similar mob-specific things. The buttons in 'Transformations' are preferred, when possible.

    " - body += "Observer | " - body += "Make AI | " - body += "\[ Alien: Drone, " - body += "Hunter, " - body += "Sentinel, " - body += "Praetorian, " - body += "Queen, " - body += "Larva \] " - body += "Human " - body += "\[ slime: Baby, " - body += "Adult \] " - body += "Monkey | " - body += "Cyborg | " - body += "Cat | " - body += "Runtime | " - body += "Corgi | " - body += "Ian | " - body += "Crab | " - body += "Coffee | " - body += "\[ Construct: Juggernaut , " - body += "Artificer , " - body += "Wraith \] " - body += "Shade" + body += "Observer | " + body += "Make AI | " + body += "\[ Alien: Drone, " + body += "Hunter, " + body += "Sentinel, " + body += "Praetorian, " + body += "Queen, " + body += "Larva \] " + body += "Human " + body += "\[ slime: Baby, " + body += "Adult \] " + body += "Monkey | " + body += "Cyborg | " + body += "Cat | " + body += "Runtime | " + body += "Corgi | " + body += "Ian | " + body += "Crab | " + body += "Coffee | " + body += "\[ Construct: Juggernaut , " + body += "Artificer , " + body += "Wraith \] " + body += "Shade" body += "
    " if (M.client) body += "

    " body += "Other actions:" body += "
    " - body += "Forcesay | " - body += "Thunderdome 1 | " - body += "Thunderdome 2 | " - body += "Thunderdome Admin | " - body += "Thunderdome Observer | " + body += "Forcesay | " + body += "Thunderdome 1 | " + body += "Thunderdome 2 | " + body += "Thunderdome Admin | " + body += "Thunderdome Observer | " body += usr.client.YogsPPoptions(M) // YOGS - Player panel stuff, big PP body += "
    " @@ -237,19 +237,19 @@ dat += "
    Feed channels and stories entered through here will be uneditable and handled as official news by the rest of the units." dat += "
    Note that this panel allows full freedom over the news network, there are no constrictions except the few basic ones. Don't break things!" if(GLOB.news_network.wanted_issue.active) - dat+= "
    Read Wanted Issue" - dat+= "

    Create Feed Channel" - dat+= "
    View Feed Channels" - dat+= "
    Submit new Feed story" - dat+= "

    Exit" + dat+= "
    Read Wanted Issue" + dat+= "

    Create Feed Channel" + dat+= "
    View Feed Channels" + dat+= "
    Submit new Feed story" + dat+= "

    Exit" var/wanted_already = 0 if(GLOB.news_network.wanted_issue.active) wanted_already = 1 dat+="
    Feed Security functions:
    " - dat+="
    [(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue" - dat+="
    Censor Feed Stories" - dat+="
    Mark Feed Channel with Nanotrasen D-Notice (disables and locks the channel)." - dat+="

    The newscaster recognises you as:
    [src.admin_signature]
    " + dat+="
    [(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue" + dat+="
    Censor Feed Stories" + dat+="
    Mark Feed Channel with Nanotrasen D-Notice (disables and locks the channel)." + dat+="

    The newscaster recognises you as:
    [src.admin_signature]
    " if(1) dat+= "Station Feed Channels
    " if( !length(GLOB.news_network.network_channels) ) @@ -257,36 +257,36 @@ else for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels) if(CHANNEL.is_admin_channel) - dat+="[CHANNEL.channel_name]
    " + dat+="[CHANNEL.channel_name]
    " else - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ""]
    " - dat+="

    Refresh" - dat+="
    Back" + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ""]
    " + dat+="

    Refresh" + dat+="
    Back" if(2) dat+="Creating new Feed Channel..." - dat+="
    Channel Name: [src.admincaster_feed_channel.channel_name]
    " - dat+="Channel Author: [src.admin_signature]
    " - dat+="Will Accept Public Feeds: [(src.admincaster_feed_channel.locked) ? ("NO") : ("YES")]

    " - dat+="
    Submit

    Cancel
    " + dat+="
    Channel Name: [src.admincaster_feed_channel.channel_name]
    " + dat+="Channel Author: [src.admin_signature]
    " + dat+="Will Accept Public Feeds: [(src.admincaster_feed_channel.locked) ? ("NO") : ("YES")]

    " + dat+="
    Submit

    Cancel
    " if(3) dat+="Creating new Feed Message..." - dat+="
    Receiving Channel: [src.admincaster_feed_channel.channel_name]
    " //MARK + dat+="
    Receiving Channel: [src.admincaster_feed_channel.channel_name]
    " //MARK dat+="Message Author: [src.admin_signature]
    " - dat+="Message Body: [src.admincaster_feed_message.returnBody(-1)]
    " - dat+="
    Submit

    Cancel
    " + dat+="Message Body: [src.admincaster_feed_message.returnBody(-1)]
    " + dat+="
    Submit

    Cancel
    " if(4) dat+="Feed story successfully submitted to [src.admincaster_feed_channel.channel_name].

    " - dat+="
    Return
    " + dat+="
    Return
    " if(5) dat+="Feed Channel [src.admincaster_feed_channel.channel_name] created successfully.

    " - dat+="
    Return
    " + dat+="
    Return
    " if(6) dat+="ERROR: Could not submit Feed story to Network.

    " if(src.admincaster_feed_channel.channel_name=="") dat+="•Invalid receiving channel name.
    " if(src.admincaster_feed_message.returnBody(-1) == "" || src.admincaster_feed_message.returnBody(-1) == "\[REDACTED\]") dat+="•Invalid message body.
    " - dat+="
    Return
    " + dat+="
    Return
    " if(7) dat+="ERROR: Could not submit Feed Channel to Network.

    " if(src.admincaster_feed_channel.channel_name =="" || src.admincaster_feed_channel.channel_name == "\[REDACTED\]") @@ -298,7 +298,7 @@ break if(check) dat+="•Channel name already in use.
    " - dat+="
    Return
    " + dat+="
    Return
    " if(9) dat+="[admincaster_feed_channel.channel_name]: \[created by: [admincaster_feed_channel.returnAuthor(-1)]\]
    " if(src.admincaster_feed_channel.censored) @@ -320,8 +320,8 @@ for(var/datum/newscaster/feed_comment/comment in MESSAGE.comments) dat+="[comment.body]
    [comment.author] [comment.time_stamp]
    " dat+="
    " - dat+="

    Refresh" - dat+="
    Back" + dat+="

    Refresh" + dat+="
    Back" if(10) dat+="Nanotrasen Feed Censorship Tool
    " dat+="NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.
    " @@ -331,8 +331,8 @@ dat+="No feed channels found active...
    " else for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ""]
    " - dat+="
    Cancel" + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ""]
    " + dat+="
    Cancel" if(11) dat+="Nanotrasen D-Notice Handler
    " dat+="A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's" @@ -342,26 +342,26 @@ dat+="No feed channels found active...
    " else for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ""]
    " + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ""]
    " - dat+="
    Back" + dat+="
    Back" if(12) dat+="[src.admincaster_feed_channel.channel_name]: \[ created by: [src.admincaster_feed_channel.returnAuthor(-1)] \]
    " - dat+="[(src.admincaster_feed_channel.authorCensor) ? ("Undo Author censorship") : ("Censor channel Author")]
    " + dat+="[(src.admincaster_feed_channel.authorCensor) ? ("Undo Author censorship") : ("Censor channel Author")]
    " if( !length(src.admincaster_feed_channel.messages) ) dat+="No feed messages found in channel...
    " else for(var/datum/newscaster/feed_message/MESSAGE in src.admincaster_feed_channel.messages) dat+="-[MESSAGE.returnBody(-1)]
    \[Story by [MESSAGE.returnAuthor(-1)]\]
    " - dat+="[(MESSAGE.bodyCensor) ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.authorCensor) ? ("Undo Author Censorship") : ("Censor message Author")]
    " - dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]: [MESSAGE.locked ? "Unlock" : "Lock"]
    " + dat+="[(MESSAGE.bodyCensor) ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.authorCensor) ? ("Undo Author Censorship") : ("Censor message Author")]
    " + dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]: [MESSAGE.locked ? "Unlock" : "Lock"]
    " for(var/datum/newscaster/feed_comment/comment in MESSAGE.comments) - dat+="[comment.body] X
    [comment.author] [comment.time_stamp]
    " - dat+="
    Back" + dat+="[comment.body] X
    [comment.author] [comment.time_stamp]
    " + dat+="
    Back" if(13) dat+="[src.admincaster_feed_channel.channel_name]: \[ created by: [src.admincaster_feed_channel.returnAuthor(-1)] \]
    " - dat+="Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel.
    " + dat+="Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel.
    " if(src.admincaster_feed_channel.censored) dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.
    " dat+="No further feed story additions are allowed while the D-Notice is in effect.


    " @@ -371,7 +371,7 @@ else for(var/datum/newscaster/feed_message/MESSAGE in src.admincaster_feed_channel.messages) dat+="-[MESSAGE.returnBody(-1)]
    \[Story by [MESSAGE.returnAuthor(-1)]\]
    " - dat+="
    Back" + dat+="
    Back" if(14) dat+="Wanted Issue Handler:" var/wanted_already = 0 @@ -382,29 +382,29 @@ if(wanted_already) dat+="
    A wanted issue is already in Feed Circulation. You can edit or cancel it below.
    " dat+="
    " - dat+="Criminal Name: [src.admincaster_wanted_message.criminal]
    " - dat+="Description: [src.admincaster_wanted_message.body]
    " + dat+="Criminal Name: [src.admincaster_wanted_message.criminal]
    " + dat+="Description: [src.admincaster_wanted_message.body]
    " if(wanted_already) dat+="Wanted Issue created by:[GLOB.news_network.wanted_issue.scannedUser]
    " else dat+="Wanted Issue will be created under prosecutor:[src.admin_signature]
    " - dat+="
    [(wanted_already) ? ("Edit Issue") : ("Submit")]" + dat+="
    [(wanted_already) ? ("Edit Issue") : ("Submit")]" if(wanted_already) - dat+="
    Take down Issue" - dat+="
    Cancel" + dat+="
    Take down Issue" + dat+="
    Cancel" if(15) dat+="Wanted issue for [src.admincaster_wanted_message.criminal] is now in Network Circulation.

    " - dat+="
    Return
    " + dat+="
    Return
    " if(16) dat+="ERROR: Wanted Issue rejected by Network.

    " if(src.admincaster_wanted_message.criminal =="" || src.admincaster_wanted_message.criminal == "\[REDACTED\]") dat+="•Invalid name for person wanted.
    " if(src.admincaster_wanted_message.body == "" || src.admincaster_wanted_message.body == "\[REDACTED\]") dat+="•Invalid description.
    " - dat+="
    Return
    " + dat+="
    Return
    " if(17) dat+="Wanted Issue successfully deleted from Circulation
    " - dat+="
    Return
    " + dat+="
    Return
    " if(18) dat+="-- STATIONWIDE WANTED ISSUE --
    \[Submitted by: [GLOB.news_network.wanted_issue.scannedUser]\]
    " dat+="Criminal: [GLOB.news_network.wanted_issue.criminal]
    " @@ -415,10 +415,10 @@ dat+="
    " else dat+="None" - dat+="
    Back
    " + dat+="
    Back
    " if(19) dat+="Wanted issue for [src.admincaster_wanted_message.criminal] successfully edited.

    " - dat+="
    Return
    " + dat+="
    Return
    " else dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com" @@ -436,14 +436,14 @@ "} dat += {" - Create Object
    - Quick Create Object
    - Create Turf
    - Create Mob
    + Create Object
    + Quick Create Object
    + Create Turf
    + Create Mob
    "} if(marked_datum && istype(marked_datum, /atom)) - dat += "Duplicate Marked Datum
    " + dat += "Duplicate Marked Datum
    " dat += "" @@ -863,15 +863,15 @@ dat += "" dat += "" if(job.total_positions >= 0) - dat += "Custom | " - dat += "Add 1 | " + dat += "Custom | " + dat += "Add 1 | " if(job.total_positions > job.current_positions) - dat += "Remove | " + dat += "Remove | " else dat += "Remove | " - dat += "Unlimit" + dat += "Unlimit" else - dat += "Limit" + dat += "Limit" browser.height = min(100 + count * 20, 650) browser.set_content(dat.Join()) diff --git a/code/modules/admin/antag_panel.dm b/code/modules/admin/antag_panel.dm index 5f494c9ab29b7..a58043439113e 100644 --- a/code/modules/admin/antag_panel.dm +++ b/code/modules/admin/antag_panel.dm @@ -30,7 +30,7 @@ GLOBAL_VAR(antag_prototypes) /datum/antagonist/proc/antag_panel() var/list/commands = list() for(var/command in get_admin_commands()) - commands += "[command]" + commands += "[command]" var/command_part = commands.Join(" | ") var/data_part = antag_panel_data() var/objective_part = antag_panel_objectives() @@ -48,10 +48,10 @@ GLOBAL_VAR(antag_prototypes) else var/obj_count = 1 for(var/datum/objective/objective in objectives) - result += "[obj_count]: [objective.explanation_text][objective.check_completion() ? " (COMPLETED)" : ""] Edit Delete [objective.completed ? "Mark as incomplete" : "Mark as complete"]
    " + result += "[obj_count]: [objective.explanation_text][objective.check_completion() ? " (COMPLETED)" : ""] Edit Delete [objective.completed ? "Mark as incomplete" : "Mark as complete"]
    " obj_count++ - result += "Add objective
    " - result += "Announce objectives
    " + result += "Add objective
    " + result += "Announce objectives
    " return result /datum/antagonist/proc/antag_panel_team_objectives() @@ -64,7 +64,7 @@ GLOBAL_VAR(antag_prototypes) else var/obj_count = 1 for(var/datum/objective/objective in antag_team.objectives) - result += "[obj_count]: [objective.explanation_text][objective.check_completion() ? " (COMPLETED)" : ""] Edit Delete [objective.completed ? "Mark as incomplete" : "Mark as complete"]
    " + result += "[obj_count]: [objective.explanation_text][objective.check_completion() ? " (COMPLETED)" : ""] Edit Delete [objective.completed ? "Mark as incomplete" : "Mark as complete"]
    " obj_count++ return result @@ -72,23 +72,23 @@ GLOBAL_VAR(antag_prototypes) var/out = "Memory:
    " out += task_memory out += antag_memory - out += "
    Edit memory
    " + out += "
    Edit memory
    " return out /datum/mind/proc/get_common_admin_commands() var/common_commands = "Common Commands:" if(ishuman(current)) - common_commands += "undress" + common_commands += "undress" else if(iscyborg(current)) var/mob/living/silicon/robot/R = current if(R.emagged) - common_commands += "Unemag" + common_commands += "Unemag" else if(isAI(current)) var/mob/living/silicon/ai/A = current if (A.connected_robots.len) for (var/mob/living/silicon/robot/R in A.connected_robots) if (R.emagged) - common_commands += "Unemag slaved cyborgs" + common_commands += "Unemag slaved cyborgs" break return common_commands @@ -116,10 +116,10 @@ GLOBAL_VAR(antag_prototypes) var/out = "[TOOLTIP_CSS_SETUP][name][(current && (current.real_name!=name))?" (as [current.real_name])":""]
    " // yogs start - Donor features, quiet round if(quiet_round) - out += "QUIET ROUND ACTIVE (Override)
    " + out += "QUIET ROUND ACTIVE (Override)
    " // yogs end out += "Mind currently owned by key: [key] [active?"(synced)":"(not synced)"]
    " - out += "Assigned role: [assigned_role]. Edit
    " + out += "Assigned role: [assigned_role]. Edit
    " out += "Faction and special role: [special_role]
    " var/special_statuses = get_special_statuses() @@ -157,7 +157,7 @@ GLOBAL_VAR(antag_prototypes) continue //Let's skip subtypes of what we already shown. else if(prototype.show_in_antagpanel) if(prototype.can_be_owned(src)) - possible_admin_antags += "[prototype.name]" + possible_admin_antags += "[prototype.name]" else possible_admin_antags += "[prototype.name]" else @@ -174,7 +174,7 @@ GLOBAL_VAR(antag_prototypes) else //Show removal and current one priority_sections |= antag_category antag_header_parts += span_bad("[current_antag.name]") - antag_header_parts += "Remove" + antag_header_parts += "Remove" //We aren't antag of this category, grab first prototype to check the prefs (This is pretty vague but really not sure how else to do this) @@ -213,20 +213,20 @@ GLOBAL_VAR(antag_prototypes) var/uplink_info = "Uplink:" var/datum/component/uplink/U = find_syndicate_uplink() if(U) - uplink_info += "take" + uplink_info += "take" if (check_rights(R_ADMIN, 0)) //YOGS - changes R_FUN to R_ADMIN - uplink_info += ", [U.telecrystals] TC" + uplink_info += ", [U.telecrystals] TC" else uplink_info += ", [U.telecrystals] TC" else - uplink_info += "give" + uplink_info += "give" uplink_info += "." //hiel grammar out += uplink_info + "
    " //Common Memory var/common_memory = "Common Memory:" common_memory += memory - common_memory += "Edit Memory" + common_memory += "Edit Memory" out += common_memory + "
    " //Other stuff out += get_common_admin_commands() diff --git a/code/modules/admin/antag_token.dm b/code/modules/admin/antag_token.dm index 6878fc84790ac..f25bc7821741c 100644 --- a/code/modules/admin/antag_token.dm +++ b/code/modules/admin/antag_token.dm @@ -49,8 +49,8 @@ data += "
    Redeemed by [denying_admin]" if(!redeemed) - data += "
    Redeem" - data += "Deny" + data += "
    Redeem" + data += "Deny" data += "" qdel(query_antag_token) @@ -274,7 +274,7 @@ var/list/data = list() while(query_antag_token.NextRow()) var/ckey = query_antag_token.item[1] - data += "[ckey]" + data += "[ckey]" data += "
    " qdel(query_antag_token) diff --git a/code/modules/admin/check_antagonists.dm b/code/modules/admin/check_antagonists.dm index d381befd152e8..8690df5030c6d 100644 --- a/code/modules/admin/check_antagonists.dm +++ b/code/modules/admin/check_antagonists.dm @@ -5,9 +5,9 @@ if(!owner) return "Unassigned" if(owner.current) - return "[owner.current.real_name] " + return "[owner.current.real_name] " else - return "[owner.name] " + return "[owner.name] " //Whatever interesting things happened to the antag admins should know about //Include additional information about antag in this part @@ -28,12 +28,12 @@ if(!owner) return var/list/parts = list() - parts += "PM" + parts += "PM" if(owner.current) //There's body to follow - parts += "FLW" + parts += "FLW" else parts += "" - parts += "Show Objective" + parts += "Show Objective" return parts //Better as one cell or two/three //Builds table row for the antag @@ -140,19 +140,19 @@ dat += "Round Duration: [DisplayTimeText(world.time - SSticker.round_start_time)]
    " dat += "Emergency shuttle
    " if(EMERGENCY_IDLE_OR_RECALLED) - dat += "Call Shuttle
    " + dat += "Call Shuttle
    " else var/timeleft = SSshuttle.emergency.timeLeft() if(SSshuttle.emergency.mode == SHUTTLE_CALL) - dat += "ETA: [(timeleft / 60) % 60]:[add_leading(num2text(timeleft % 60), 2, "0")]
    " - dat += "Send Back
    " + dat += "ETA: [(timeleft / 60) % 60]:[add_leading(num2text(timeleft % 60), 2, "0")]
    " + dat += "Send Back
    " else - dat += "ETA: [(timeleft / 60) % 60]:[add_leading(num2text(timeleft % 60), 2, "0")]
    " - dat += "End Round Now
    " - dat += "[SSticker.delay_end ? "End Round Normally" : "Delay Round End"]
    " - dat += "Enable/Disable CTF
    " - dat += "Reboot World
    " - dat += "Check Teams" + dat += "ETA: [(timeleft / 60) % 60]:[add_leading(num2text(timeleft % 60), 2, "0")]
    " + dat += "End Round Now
    " + dat += "[SSticker.delay_end ? "End Round Normally" : "Delay Round End"]
    " + dat += "Enable/Disable CTF
    " + dat += "Reboot World
    " + dat += "Check Teams" var/connected_players = GLOB.clients.len var/lobby_players = 0 var/observers = 0 diff --git a/code/modules/admin/outfits.dm b/code/modules/admin/outfits.dm index 4d59ead2ea11b..413f770caf670 100644 --- a/code/modules/admin/outfits.dm +++ b/code/modules/admin/outfits.dm @@ -15,10 +15,10 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits var/datum/outfit/varedit/VO = O if(istype(VO)) vv = length(VO.vv_values) - dat += "
  • [O.name][vv ? "(VV)" : ""]
  • Save Delete" + dat += "
  • [O.name][vv ? "(VV)" : ""]
  • Save Delete" dat += "" - dat += "Create
    " - dat += "Load from file" + dat += "Create
    " + dat += "Load from file" admin << browse(dat.Join(),"window=outfitmanager") /datum/admins/proc/save_outfit(mob/admin,datum/outfit/O) diff --git a/code/modules/admin/permissionedit.dm b/code/modules/admin/permissionedit.dm index 3a53e52c4d25b..5dfd004f71541 100644 --- a/code/modules/admin/permissionedit.dm +++ b/code/modules/admin/permissionedit.dm @@ -64,11 +64,11 @@ // return // var/datum/asset/asset_cache_datum = get_asset_datum(/datum/asset/group/permissions) // asset_cache_datum.send(usr) -// var/list/output = list("\[Permissions\]") +// var/list/output = list("\[Permissions\]") // if(action) -// output += " | \[Log\]
    " +// output += " | \[Log\]
    " // else -// output += "
    \[Log\]" +// output += "
    \[Log\]" // if(action == 1) // var/logcount = 0 // var/logssperpage = 20 @@ -87,7 +87,7 @@ // if(logcount > logssperpage) // output += "
    Page: " // while(logcount > 0) -// output += "|[pagecount == page ? "\[[pagecount]\]" : "\[[pagecount]\]"]" +// output += "|[pagecount == page ? "\[[pagecount]\]" : "\[[pagecount]\]"]" // logcount -= logssperpage // pagecount++ // output += "|" @@ -126,7 +126,7 @@ // //
    // -// +// // // // @@ -141,13 +141,13 @@ // if(D.owner) // adm_ckey = D.owner.key // if (D.deadmined) -// deadminlink = " \[RA\]" +// deadminlink = " \[RA\]" // else -// deadminlink = " \[DA\]" +// deadminlink = " \[DA\]" // output += "" -// output += "" -// output += "" -// output += "" +// output += "" +// output += "" +// output += "" // output += "" // output += "
    CKEY \[+\]CKEY \[+\]RANKPERMISSIONS
    [adm_ckey]
    [deadminlink]\[-\]\[2FA\]
    [D.rank_name()][rights2text(D.rights," ")][adm_ckey]
    [deadminlink]\[-\]\[2FA\]
    [D.rank_name()][rights2text(D.rights," ")]
    Search:
    " // if(QDELETED(usr)) diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index b0ba081549add..35302179dd370 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -72,18 +72,18 @@ body += ""; - body += "PP - " - body += "N - " - body += "VV - " - body += "TP - " + body += "PP - " + body += "N - " + body += "VV - " + body += "TP - " if (job.substring(0,6) == "Cyborg") - body += "BP - " - body += "PM - " - body += "SM - " - body += "FLW - " - body += "LOGS
    " + body += "BP - " + body += "PM - " + body += "SM - " + body += "FLW - " + body += "LOGS
    " if(antagonist > 0) - body += "Antagonist"; + body += "Antagonist"; body += ""; @@ -189,7 +189,7 @@ Player panel
    - Hover over a line to see more information - Check antagonists - Kick everyone/AFKers in lobby + Hover over a line to see more information - Check antagonists - Kick everyone/AFKers in lobby

    diff --git a/code/modules/admin/sound_emitter.dm b/code/modules/admin/sound_emitter.dm index 6091af4c4fe3c..f4f4bac02a063 100644 --- a/code/modules/admin/sound_emitter.dm +++ b/code/modules/admin/sound_emitter.dm @@ -58,16 +58,16 @@ /obj/effect/sound_emitter/proc/edit_emitter(mob/user) var/dat = "" - dat += "Label: [maptext ? maptext : "No label set!"]
    " + dat += "Label: [maptext ? maptext : "No label set!"]
    " dat += "
    " - dat += "Sound File: [sound_file ? sound_file : "No file chosen!"]
    " - dat += "Volume: [sound_volume]%
    " + dat += "Sound File: [sound_file ? sound_file : "No file chosen!"]
    " + dat += "Volume: [sound_volume]%
    " dat += "
    " - dat += "Mode: [motus_operandi]
    " + dat += "Mode: [motus_operandi]
    " if(motus_operandi != SOUND_EMITTER_LOCAL) - dat += "Range: [emitter_range][emitter_range == SOUND_EMITTER_RADIUS ? "[play_radius]-tile radius" : ""]
    " + dat += "Range: [emitter_range][emitter_range == SOUND_EMITTER_RADIUS ? "[play_radius]-tile radius" : ""]
    " dat += "
    " - dat += "Play Sound (interrupts other sound emitter sounds)" + dat += "Play Sound (interrupts other sound emitter sounds)" var/datum/browser/popup = new(user, "emitter", "", 500, 600) popup.set_content(dat) popup.open() diff --git a/code/modules/admin/sql_ban_system.dm b/code/modules/admin/sql_ban_system.dm index bf55300d0bf8e..b69a4e33078fb 100644 --- a/code/modules/admin/sql_ban_system.dm +++ b/code/modules/admin/sql_ban_system.dm @@ -616,7 +616,7 @@ var/pagecount = 1 var/list/pagelist = list() while(bancount > 0) - pagelist += "[pagecount == page ? "\[[pagecount]\]" : "\[[pagecount]\]"]" + pagelist += "[pagecount == page ? "\[[pagecount]\]" : "\[[pagecount]\]"]" bancount -= bansperpage pagecount++ output += pagelist.Join(" | ") @@ -676,7 +676,7 @@ var/ban_round_id = query_unban_search_bans.item[3] var/role = query_unban_search_bans.item[4] //make the href for unban here so only the search parameters are passed - var/unban_href = "Unban" + var/unban_href = "Unban" var/expiration_time = query_unban_search_bans.item[5] //we don't cast duration as num because if the duration is large enough to be converted to scientific notation by byond then the + character gets lost when passed through href causing SQL to interpret '4.321e 007' as '4' var/duration = query_unban_search_bans.item[6] @@ -701,9 +701,9 @@ output += "
    Unbanned by [unban_key] on [unban_datetime] during round #[unban_round_id]." output += "

    [reason]
    " if(!expired && !unban_datetime) - output += "Edit
    [unban_href]" + output += "Edit
    [unban_href]" if(edits) - output += "
    Edit log" + output += "
    Edit log" output += "
    " qdel(query_unban_search_bans) output += "" diff --git a/code/modules/admin/sql_message_system.dm b/code/modules/admin/sql_message_system.dm index d657c0c38aaea..73aeb69be2b7c 100644 --- a/code/modules/admin/sql_message_system.dm +++ b/code/modules/admin/sql_message_system.dm @@ -376,10 +376,10 @@ return var/list/output = list() var/ruler = "
    " - var/list/navbar = list("All#") + var/list/navbar = list("All#") for(var/letter in GLOB.alphabet) - navbar += "[letter]" - navbar += "MemosWatchlist" + navbar += "[letter]" + navbar += "MemosWatchlist" navbar += "
    \ \ [HrefTokenFormField()]\ @@ -390,14 +390,14 @@ if(type == "memo" || type == "watchlist entry") if(type == "memo") output += "

    Admin memos

    " - output += "Add memo" + output += "Add memo" else if(type == "watchlist entry") output += "

    Watchlist entries

    " - output += "Add watchlist entry" + output += "Add watchlist entry" if(filter) - output += "Unfilter clients" + output += "Unfilter clients" else - output += "Filter offline clients" + output += "Filter offline clients" output += ruler var/datum/DBQuery/query_get_type_messages = SSdbcore.NewQuery({" SELECT @@ -437,11 +437,11 @@ if(expire_timestamp) output += " | Expires [expire_timestamp]" output += "" - output += " Change Expiry Time" - output += " Delete" - output += " Edit" + output += " Change Expiry Time" + output += " Delete" + output += " Edit" if(editor_key) - output += " Last edit by [editor_key] (Click here to see edit log)" + output += " Last edit by [editor_key] (Click here to see edit log)" output += "
    [text]
    " qdel(query_get_type_messages) if(target_ckey) @@ -512,21 +512,21 @@ if(!linkless) if(type == "note") if(severity) - data += "[severity=="none" ? "No" : "[capitalize(severity)]"] Severity" + data += "[severity=="none" ? "No" : "[capitalize(severity)]"] Severity" else - data += "N/A Severity" - data += " Change Expiry Time" - data += " Delete" + data += "N/A Severity" + data += " Change Expiry Time" + data += " Delete" if(type == "note") - data += " [secret ? "Secret" : "Not secret"]" + data += " [secret ? "Secret" : "Not secret"]" if(type == "message sent") data += " Message has been sent" if(editor_key) data += "|" else - data += " Edit" + data += " Edit" if(editor_key) - data += " Last edit by [editor_key] (Click here to see edit log)" + data += " Last edit by [editor_key] (Click here to see edit log)" data += "" data += "

    [text]


    " switch(type) @@ -551,12 +551,12 @@ qdel(query_get_message_key) output += "

    [target_key]

    " if(!linkless) - output += "Add note" - output += " Add message" - output += " Add to watchlist" - output += " Refresh page
    " + output += "Add note" + output += " Add message" + output += " Add to watchlist" + output += " Refresh page" else - output += " Refresh page" + output += " Refresh page" output += ruler if(messagedata) output += "

    Messages

    " @@ -570,14 +570,14 @@ if(!linkless) if (agegate) if (skipped) //the first skipped message is still shown so that we can put this link over it. - output += "
    Show [skipped] hidden messages
    " + output += "
    Show [skipped] hidden messages
    " else - output += "
    Show All
    " + output += "
    Show All
    " else - output += "
    Hide Old
    " + output += "
    Hide Old
    " if(index) var/search - output += "
    Add messageAdd watchlist entryAdd note
    " + output += "
    Add messageAdd watchlist entryAdd note
    " output += ruler switch(index) if(1) @@ -605,10 +605,10 @@ return var/index_ckey = query_list_messages.item[1] var/index_key = query_list_messages.item[2] - output += "[index_key]
    " + output += "[index_key]
    " qdel(query_list_messages) else if(!type && !target_ckey && !index) - output += "
    Add messageAdd watchlist entryAdd note
    " + output += "
    Add messageAdd watchlist entryAdd note
    " output += ruler var/datum/browser/browser = new(usr, "Note panel", "Manage player notes", 1000, 500) var/datum/asset/notes_assets = get_asset_datum(/datum/asset/simple/notes) @@ -664,7 +664,7 @@ if("memo") output += "Memo by [span_prefix("[admin_key]")] on [timestamp]" if(editor_key) - output += "
    Last edit by [editor_key] (Click here to see edit log)" + output += "
    Last edit by [editor_key] (Click here to see edit log)" output += "
    [text]

    " qdel(query_get_message_output) return output diff --git a/code/modules/admin/stickyban.dm b/code/modules/admin/stickyban.dm index f5860b0c2ce5c..da7661af24a3f 100644 --- a/code/modules/admin/stickyban.dm +++ b/code/modules/admin/stickyban.dm @@ -348,15 +348,15 @@ return var/timeout if (SSdbcore.Connect()) - timeout = "\[[(ban["timeout"] ? "untimeout" : "timeout" )]\]" + timeout = "\[[(ban["timeout"] ? "untimeout" : "timeout" )]\]" else - timeout = "\[revert\]" + timeout = "\[revert\]" . = list({" - \[-\] + \[-\] [timeout] [ckey]
    " - [ban["message"]] \[Edit\]
    + [ban["message"]] \[Edit\]
    "}) if (ban["admin"]) . += "[ban["admin"]]
    " @@ -366,12 +366,12 @@ for (var/key in ban["keys"]) if (ckey(key) == ckey) continue - . += "
  • \[-\][key]\[E\]
  • " + . += "
  • \[-\][key]\[E\]
  • " for (var/key in ban["whitelist"]) if (ckey(key) == ckey) continue - . += "
  • \[-\][key]\[UE\]
  • " + . += "
  • \[-\][key]\[UE\]
  • " . += "\n" @@ -391,7 +391,7 @@ Sticky Bans -

    All Sticky Bans:

    \[+\]
    +

    All Sticky Bans:

    \[+\]
    [banhtml.Join("")] "} diff --git a/code/modules/admin/team_panel.dm b/code/modules/admin/team_panel.dm index 5210b06a0e3be..15adb66820108 100644 --- a/code/modules/admin/team_panel.dm +++ b/code/modules/admin/team_panel.dm @@ -3,22 +3,22 @@ var/list/content = list() for(var/datum/team/T in GLOB.antagonist_teams) content += "

    [T.name] - [T.type]

    " - content += "Rename" - content += "Delete" - content += "Communicate" + content += "Rename" + content += "Delete" + content += "Communicate" for(var/command in T.get_admin_commands()) - content += "[command]" + content += "[command]" content += "
    " content += "Objectives:
      " for(var/datum/objective/O in T.objectives) - content += "
    1. [O.explanation_text] - Remove
    2. " - content += "
    Add Objective
    " + content += "
  • [O.explanation_text] - Remove
  • " + content += "Add Objective
    " content += "Members:
    Add Member" + content += "
  • [M.name] - Remove Member
  • " + content += "Add Member" content += "
    " - content += "Create Team
    " + content += "Create Team
    " return content.Join() diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index f94d017050a77..eb7bead11d281 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -721,7 +721,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null /datum/SDQL2_query/proc/SDQL_print(object, list/text_list, print_nulls = TRUE) if(is_proper_datum(object)) - text_list += "[REF(object)] : [object]" + text_list += "[REF(object)] : [object]" if(istype(object, /atom)) var/atom/A = object var/turf/T = A.loc diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 3cab548ca1cab..7c9228ae00185 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -326,7 +326,7 @@ confidential = TRUE) to_chat(initiator, type = MESSAGE_TYPE_ADMINPM, - html = span_adminsay("Admin PM from-[ckey]: [msg]"), + html = span_adminsay("Admin PM from-[ckey]: [msg]"), confidential = TRUE) // yogs - Yog Tickets to_chat(initiator, type = MESSAGE_TYPE_ADMINPM, @@ -426,7 +426,7 @@ confidential = TRUE) to_chat(C, type = MESSAGE_TYPE_ADMINPM, - html = span_adminsay("Admin PM from-[adminname]: [msg]"), + html = span_adminsay("Admin PM from-[adminname]: [msg]"), confidential = TRUE) // yogs - Yog Tickets to_chat(C, type = MESSAGE_TYPE_ADMINPM, diff --git a/code/modules/admin/verbs/individual_logging.dm b/code/modules/admin/verbs/individual_logging.dm index a6f1ddc23811a..6d2438c30203d 100644 --- a/code/modules/admin/verbs/individual_logging.dm +++ b/code/modules/admin/verbs/individual_logging.dm @@ -77,4 +77,4 @@ slabel = "\[[label]\]" //This is necessary because num2text drops digits and rounds on big numbers. If more defines get added in the future it could break again. log_type = num2text(log_type, MAX_BITFLAG_DIGITS) - return "[slabel]" + return "[slabel]" diff --git a/code/modules/admin/verbs/map_template_loadverb.dm b/code/modules/admin/verbs/map_template_loadverb.dm index 77b63f4359f38..2e59531d210f3 100644 --- a/code/modules/admin/verbs/map_template_loadverb.dm +++ b/code/modules/admin/verbs/map_template_loadverb.dm @@ -52,8 +52,8 @@ var/report_link if(report) report.show_to(src) - report_link = " - validation report" - to_chat(src, span_warning("Map template '[map]' failed validation."), confidential=TRUE) + report_link = " - validation report" + to_chat(src, span_warning("Map template '[map]' failed validation."), confidential=TRUE) if(report.loadable) var/response = tgui_alert(usr, "The map failed validation, would you like to load it anyways?", "Map Errors", list("Cancel", "Upload Anyways")) if(response != "Upload Anyways") diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index f13f3b6cfa7b0..fe290ac4d0a09 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -201,7 +201,7 @@ GLOBAL_LIST_EMPTY(dirty_vars) var/dat = {"List of all map reports:
    "} for(var/datum/map_report/report as anything in GLOB.map_reports) - dat += "[report.tag] ([report.original_path]) - View
    " + dat += "[report.tag] ([report.original_path]) - View
    " usr << browse(HTML_SKELETON(dat), "window=map_reports") diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 3c50dc6a964b6..bc8bfb97de061 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -11,8 +11,8 @@ /datum/admins/proc/one_click_antag() var/dat = {" - Make Uplink CentCom Response Team (Requires Ghosts)
    - Make CentCom Response Team (Requires Ghosts) + Make Uplink CentCom Response Team (Requires Ghosts)
    + Make CentCom Response Team (Requires Ghosts) "} var/datum/browser/popup = new(usr, "oneclickantag", "Quick-Create Antagonist", 400, 400) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 21206c277e8e1..fc952311290ea 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -1088,8 +1088,8 @@ Traitors and the like can also be revived with the previous role mostly intact. /datum/admins/proc/modify_goals() var/dat = "" for(var/datum/station_goal/S in SSgamemode.station_goals) - dat += "[S.name] - Announce | Remove
    " - dat += "
    Add New Goal" + dat += "[S.name] - Announce | Remove
    " + dat += "
    Add New Goal" dat += "" var/datum/browser/browser = new(usr, "goals", "Modify Goals", 400, 400) browser.set_content(dat) @@ -1390,7 +1390,7 @@ Traitors and the like can also be revived with the previous role mostly intact. var/list/msg = list() msg += "Playtime ReportPlaytime:
    " src << browse(msg.Join(), "window=Player_playtime_check") diff --git a/code/modules/admin/view_variables/debug_variables.dm b/code/modules/admin/view_variables/debug_variables.dm index e115576a52b7c..441dddd10e497 100644 --- a/code/modules/admin/view_variables/debug_variables.dm +++ b/code/modules/admin/view_variables/debug_variables.dm @@ -50,14 +50,14 @@ else if(isappearance(value)) var/image/I = value - item = "[VV_HTML_ENCODE(name)] [REF(value)] = appearance([span_value("[I.icon]")], [span_value("\"[I.icon_state]\"")])" + item = "[VV_HTML_ENCODE(name)] [REF(value)] = appearance([span_value("[I.icon]")], [span_value("\"[I.icon_state]\"")])" else if (istype(value, /datum)) var/datum/D = value if ("[D]" != "[D.type]") //if the thing as a name var, lets use it. - item = "[VV_HTML_ENCODE(name)] [REF(value)] = [D] [D.type]" + item = "[VV_HTML_ENCODE(name)] [REF(value)] = [D] [D.type]" else - item = "[VV_HTML_ENCODE(name)] [REF(value)] = [D.type]" + item = "[VV_HTML_ENCODE(name)] [REF(value)] = [D.type]" else if (islist(value)) var/list/L = value @@ -75,9 +75,9 @@ items += debug_variable(key, val, level + 1, sanitize = sanitize) - item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" + item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" else - item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" + item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" else if (name in GLOB.bitfields) var/list/flags = list() diff --git a/code/modules/admin/view_variables/topic_basic.dm b/code/modules/admin/view_variables/topic_basic.dm index e3c01323cd0fa..971650f08328e 100644 --- a/code/modules/admin/view_variables/topic_basic.dm +++ b/code/modules/admin/view_variables/topic_basic.dm @@ -37,7 +37,7 @@ if(!target) to_chat(usr, span_warning("The object you tried to expose to [C] no longer exists (nulled or hard-deled)"), confidential = TRUE) return - message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a VV window") + message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a VV window") log_admin("Admin [key_name(usr)] Showed [key_name(C)] a VV window of a [target]") to_chat(C, "[holder.fakekey ? "an Administrator" : "[usr.client.key]"] has granted you access to view a View Variables window", confidential = TRUE) C.debug_variables(target) diff --git a/code/modules/admin/view_variables/view_variables.dm b/code/modules/admin/view_variables/view_variables.dm index 5859cadbe7ad3..9ee16a021cf72 100644 --- a/code/modules/admin/view_variables/view_variables.dm +++ b/code/modules/admin/view_variables/view_variables.dm @@ -325,7 +325,7 @@
    - Refresh + Refresh \ [HrefTokenFormField()]\ @@ -288,14 +288,14 @@ if(type == "memo" || type == "watchlist entry") if(type == "memo") output += "

    Admin memos

    " - output += "\[Add memo\]" + output += "\[Add memo\]" else if(type == "watchlist entry") output += "

    Watchlist entries

    " - output += "\[Add watchlist entry\]" + output += "\[Add watchlist entry\]" if(filter) - output += "|\[Unfilter clients\]" + output += "|\[Unfilter clients\]" else - output += "|\[Filter offline clients\]" + output += "|\[Filter offline clients\]" output += ruler var/datum/DBQuery/query_get_type_messages = SSdbcore.NewQuery("SELECT id, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = targetckey), targetckey, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = adminckey), text, timestamp, server, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = lasteditor), expire_timestamp FROM [format_table_name("messages")] WHERE type = :type AND deleted = 0 AND (expire_timestamp > NOW() OR expire_timestamp IS NULL)", list("type" = type)) if(!query_get_type_messages.warn_execute()) @@ -322,11 +322,11 @@ if(expire_timestamp) output += " | Expires [expire_timestamp]" output += "" - output += " \[Change Expiry Time\]" - output += " \[Delete\]" - output += " \[Edit\]" + output += " \[Change Expiry Time\]" + output += " \[Delete\]" + output += " \[Edit\]" if(editor_key) - output += " Last edit by [editor_key] (Click here to see edit log)" + output += " Last edit by [editor_key] (Click here to see edit log)" output += "
    [text]
    " qdel(query_get_type_messages) if(target_ckey) @@ -374,23 +374,23 @@ skipped = TRUE alphatext = "filter: alpha(opacity=[alpha]); opacity: [alpha/100];" var/list/data = list("

    [timestamp][playtime] | [server] | [admin_key] | ") - data += "Round: #[roundnumber]" + data += "Round: #[roundnumber]" if(expire_timestamp) data += " | Expires [expire_timestamp]" data += "" if(!linkless) - data += " \[Change Expiry Time\]" - data += " \[Delete\]" + data += " \[Change Expiry Time\]" + data += " \[Delete\]" if(type == "note") - data += " [secret ? "\[Secret\]" : "\[Not secret\]"]" + data += " [secret ? "\[Secret\]" : "\[Not secret\]"]" if(type == "message sent") data += " Message has been sent" if(editor_key) data += "|" else - data += " \[Edit\]" + data += " \[Edit\]" if(editor_key) - data += " Last edit by [editor_key] (Click here to see edit log)" + data += " Last edit by [editor_key] (Click here to see edit log)" data += "
    [text]


    " switch(type) if("message") @@ -412,12 +412,12 @@ qdel(query_get_message_key) output += "

    [target_key]

    " if(!linkless) - output += "\[Add note\]" - output += " \[Add message\]" - output += " \[Add to watchlist\]" - output += " \[Refresh page\]
    " + output += "\[Add note\]" + output += " \[Add message\]" + output += " \[Add to watchlist\]" + output += " \[Refresh page\]" else - output += " \[Refresh page\]" + output += " \[Refresh page\]" output += ruler if(messagedata) output += "

    Messages

    " @@ -431,15 +431,15 @@ if(!linkless) if (agegate) if (skipped) //the first skipped message is still shown so that we can put this link over it. - output += "
    \[Show [skipped] hidden messages\]
    " + output += "
    \[Show [skipped] hidden messages\]
    " else - output += "
    \[Show All\]
    " + output += "
    \[Show All\]
    " else - output += "
    \[Hide Old\]
    " + output += "
    \[Hide Old\]
    " if(index) var/search - output += "
    \[Add message\]\[Add watchlist entry\]\[Add note\]
    " + output += "
    \[Add message\]\[Add watchlist entry\]\[Add note\]
    " output += ruler switch(index) @@ -470,10 +470,10 @@ var/index_key = query_list_messages.item[2] if(!index_key) index_key = index_ckey - output += "[index_key]
    " + output += "[index_key]
    " qdel(query_list_messages) else if(!type && !target_ckey && !index) - output += "
    \[Add message\]\[Add watchlist entry\]\[Add note\]
    " + output += "
    \[Add message\]\[Add watchlist entry\]\[Add note\]
    " output += ruler usr << browse({"[jointext(output, "")]"}, "window=browse_messages;size=900x500") @@ -515,7 +515,7 @@ if("memo") output += "Memo by [span_prefix("[admin_key]")] on [timestamp]" if(editor_key) - output += "
    Last edit by [editor_key] (Click here to see edit log)" + output += "
    Last edit by [editor_key] (Click here to see edit log)" output += "
    [text]

    " qdel(query_get_message_output) return output diff --git a/yogstation/code/modules/admin/verbs/adminhelp.dm b/yogstation/code/modules/admin/verbs/adminhelp.dm index d9442327998e3..b5303667c977a 100644 --- a/yogstation/code/modules/admin/verbs/adminhelp.dm +++ b/yogstation/code/modules/admin/verbs/adminhelp.dm @@ -32,10 +32,10 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) /datum/admin_help_tickets/proc/BrowseTickets(state) var/title var/list/dat = list("[title]") - dat += "Refresh

    " + dat += "Refresh

    " for(var/I in tickets_list) var/datum/admin_help/AH = I - dat += "[span_adminhelp("Ticket #[AH.id]")]: [AH.initiator_key_name]: [AH.name]
    " + dat += "[span_adminhelp("Ticket #[AH.id]")]: [AH.initiator_key_name]: [AH.name]
    " usr << browse(dat.Join(), "window=ahelp_list[state];size=600x480") @@ -274,24 +274,24 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) /datum/admin_help/proc/ClosureLinks(ref_src) if(!ref_src) ref_src = "[REF(src)]" - . = " (REJT)" - . += " (IC)" - . += " (RSLVE)" - . += " (WIKI)" - . += " (BUG)" - . += " (MHELP)" + . = " (REJT)" + . += " (IC)" + . += " (RSLVE)" + . += " (WIKI)" + . += " (BUG)" + . += " (MHELP)" //private /datum/admin_help/proc/LinkedReplyName(ref_src) if(!ref_src) ref_src = "[REF(src)]" - return "[initiator_key_name]" + return "[initiator_key_name]" //private /datum/admin_help/proc/TicketHref(msg, ref_src, action = "ticket") if(!ref_src) ref_src = "[REF(src)]" - return "[msg]" + return "[msg]" //message from the initiator without a target, all admins will see this //won't bug irc @@ -580,8 +580,8 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) ui_interact(usr) return - var/reply_link = " Reply" - var/refresh_link = " Refresh" + var/reply_link = " Reply" + var/refresh_link = " Refresh" var/content = "" if(usr.client.holder) @@ -598,19 +598,19 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(initiator && initiator.mob) content += {"

    - ? - PP - VV - SM - FLW - CA - Administer - [state == AHELP_ACTIVE ? "" : "Un"]Resolve - Reject - Close - IC - MHelp - [popups_enabled ? "De" : ""]Activate Popups + ? + PP + VV + SM + FLW + CA + Administer + [state == AHELP_ACTIVE ? "" : "Un"]Resolve + Reject + Close + IC + MHelp + [popups_enabled ? "De" : ""]Activate Popups

    "} if(initiator && initiator.mob) if(initiator.mob.mind && initiator.mob.mind.assigned_role) @@ -637,8 +637,8 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(usr.client.holder) content += "" @@ -798,14 +798,14 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(holder) content += {"

    - Refresh List - All Tickets + Refresh List + All Tickets - [flag & TICKET_FLAG_LIST_MINE ? "� " : ""]My Tickets - [flag & TICKET_FLAG_LIST_UNCLAIMED ? "� " : ""]Unclaimed @@ -863,10 +863,10 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) [T.handling_admin_ckey ? "" : "[span_unclaimed("Unclaimed")]!"] [T.name]
    Owner: [T.initiator_ckey] (DC) [T.TicketHref(" View")] - [T.state == AHELP_ACTIVE ? "" : "Un"]Resolve - Reject - Close - IC + [T.state == AHELP_ACTIVE ? "" : "Un"]Resolve + Reject + Close + IC

    "} else var/ai_found = (T.initiator && isAI(T.initiator_ckey)) @@ -879,19 +879,19 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) "} if(T.initiator.mob) content += {" - ? - PP - VV - SM - FLW - CA - [ai_found ? " CL" : ""] + ? + PP + VV + SM + FLW + CA + [ai_found ? " CL" : ""] "} content += {" - [T.state == AHELP_ACTIVE ? "" : "Un"]Resolve - Reject - Close - IC + [T.state == AHELP_ACTIVE ? "" : "Un"]Resolve + Reject + Close + IC

    "} if(resolved.len > 0) @@ -904,10 +904,10 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) [T.name]
    Owner: [T.initiator_ckey] (DC) [T.TicketHref(" View")] - [T.state == AHELP_ACTIVE ? "" : "Un"]Resolve - Reject - Close - IC + [T.state == AHELP_ACTIVE ? "" : "Un"]Resolve + Reject + Close + IC

    "} else var/ai_found = (T.initiator && isAI(T.initiator_ckey)) @@ -920,22 +920,22 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) "} if(T.initiator.mob) content += {" - ? - PP - VV - SM - FLW - CA - [ai_found ? " CL" : ""] + ? + PP + VV + SM + FLW + CA + [ai_found ? " CL" : ""] "} content += {" - [T.state == AHELP_ACTIVE ? "" : "Un"]Resolve - Reject - Close - IC + [T.state == AHELP_ACTIVE ? "" : "Un"]Resolve + Reject + Close + IC

    "} else - content += "

    Refresh List

    " + content += "

    Refresh List

    " if(tickets_list.len == 0) content += "

    There are no tickets in the system

    " @@ -945,7 +945,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(compare_ckey(T.initiator, usr)) content += {"

    [T.name] - View + View

    "} var/html = get_html("Admin Tickets", "", "", content) @@ -1150,7 +1150,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(found.mind && found.mind.special_role) is_antag = 1 founds += "Name: [found.name]([found.real_name]) Ckey: [found.ckey] [is_antag ? "(Antag)" : null] " - msg += "[original_word](?|F) " + msg += "[original_word](?|F) " continue msg += "[original_word] " if(irc) diff --git a/yogstation/code/modules/admin/verbs/queue.dm b/yogstation/code/modules/admin/verbs/queue.dm index a4a6e0194e79b..10b141a2f3db6 100644 --- a/yogstation/code/modules/admin/verbs/queue.dm +++ b/yogstation/code/modules/admin/verbs/queue.dm @@ -31,7 +31,7 @@ //Below is basically a clone of whatever's in that one part of check_queue() for (var/mob/dead/new_player/NP in queue) - to_chat(NP, span_userdanger("The alive players limit has been released!
    [html_encode(">>Join Game<<")]")) + to_chat(NP, span_userdanger("The alive players limit has been released!
    [html_encode(">>Join Game<<")]")) SEND_SOUND(NP, sound('sound/misc/notice1.ogg')) GLOB.latejoin_menu.ui_interact(NP) queue.len = 0 diff --git a/yogstation/code/modules/client/verbs/antag_token.dm b/yogstation/code/modules/client/verbs/antag_token.dm index db00cd5ac1ee8..f0e5a48edc288 100644 --- a/yogstation/code/modules/client/verbs/antag_token.dm +++ b/yogstation/code/modules/client/verbs/antag_token.dm @@ -31,7 +31,7 @@ GLOBAL_LIST_EMPTY(antag_token_users) return to_chat(src, span_userdanger("You will be notified if your antag token is used")) C.antag_token_timer = addtimer(CALLBACK(src, PROC_REF(deny_antag_token_request)), 45 SECONDS, TIMER_STOPPABLE) - to_chat(GLOB.permissions.admins, span_adminnotice("ANTAG TOKEN REQUEST:[ADMIN_LOOKUPFLW(usr)] wants to use their antag token! (will auto-DENY in [DisplayTimeText(45 SECONDS)]). (APPROVE)")) + to_chat(GLOB.permissions.admins, span_adminnotice("ANTAG TOKEN REQUEST:[ADMIN_LOOKUPFLW(usr)] wants to use their antag token! (will auto-DENY in [DisplayTimeText(45 SECONDS)]). (APPROVE)")) for(var/client/A in GLOB.permissions.admins) if(check_rights_for(A, R_ADMIN) && (A.prefs.toggles & SOUND_ADMINHELP)) // Can't use check_rights here since it's dependent on $usr SEND_SOUND(A, sound('sound/effects/adminhelp.ogg')) diff --git a/yogstation/code/modules/mentor/mentor_memo.dm b/yogstation/code/modules/mentor/mentor_memo.dm index 267dac38ee23a..00a67838e5be9 100644 --- a/yogstation/code/modules/mentor/mentor_memo.dm +++ b/yogstation/code/modules/mentor/mentor_memo.dm @@ -128,7 +128,7 @@ var/last_editor = query_memoshow.item[4] output += "Mentor memo by [span_prefix("[ckey]")] on [timestamp]" if(last_editor) - output += "
    Last edit by [last_editor] (Click here to see edit log)" + output += "
    Last edit by [last_editor] (Click here to see edit log)" output += "
    [memotext]

    " qdel(query_memoshow) diff --git a/yogstation/code/modules/mentor/mentorhelp.dm b/yogstation/code/modules/mentor/mentorhelp.dm index 92d2046ff61f5..4a50f8000ecc4 100644 --- a/yogstation/code/modules/mentor/mentorhelp.dm +++ b/yogstation/code/modules/mentor/mentorhelp.dm @@ -99,9 +99,9 @@ if(key) if(include_link) if(CONFIG_GET(flag/mentors_mobname_only)) - . += "" + . += "" else - . += "" + . += "" if(C && C.holder && C.holder.fakekey) . += "Administrator" @@ -123,9 +123,9 @@ . += "*no key*" if(include_follow) - . += " (F)" + . += " (F)" return . /proc/discord_mentor_link(display_name, id) - return "[display_name]" + return "[display_name]" diff --git a/yogstation/code/modules/mentor/mentortickets.dm b/yogstation/code/modules/mentor/mentortickets.dm index f337359b35aa7..b32749e1053f1 100644 --- a/yogstation/code/modules/mentor/mentortickets.dm +++ b/yogstation/code/modules/mentor/mentortickets.dm @@ -21,7 +21,7 @@ for(var/M in SSYogs.mentortickets) var/datum/mentorticket/T = SSYogs.mentortickets[M] - dat += "[T.owner]
    " + dat += "[T.owner]
    " popup.set_content(dat) popup.open() @@ -37,7 +37,7 @@ dat += "

    " - dat += "Reply" + dat += "Reply" popup.set_content(dat) popup.open() diff --git a/yogstation/code/modules/storytellers/gamemode_subsystem.dm b/yogstation/code/modules/storytellers/gamemode_subsystem.dm index ae7c2a0e8ff3f..7f85181c344ab 100644 --- a/yogstation/code/modules/storytellers/gamemode_subsystem.dm +++ b/yogstation/code/modules/storytellers/gamemode_subsystem.dm @@ -197,7 +197,7 @@ SUBSYSTEM_DEF(gamemode) else if(!sch_event.alerted_admins && world.time >= sch_event.start_time - 1 MINUTES) ///Alert admins 1 minute before running and allow them to cancel or refund the event, once again. sch_event.alerted_admins = TRUE - message_admins("Scheduled Event: [sch_event.event] will run in [(sch_event.start_time - world.time) / 10] seconds. (CANCEL) (REFUND)") + message_admins("Scheduled Event: [sch_event.event] will run in [(sch_event.start_time - world.time) / 10] seconds. (CANCEL) (REFUND)") if(!halted_storyteller && next_storyteller_process <= world.time && storyteller) // We update crew information here to adjust population scalling and event thresholds for the storyteller. @@ -406,9 +406,9 @@ SUBSYSTEM_DEF(gamemode) var/datum/scheduled_event/scheduled = new (passed_event, world.time + passed_time, passed_cost, passed_ignore, passed_announce) var/round_started = SSticker.HasRoundStarted() if(round_started) - message_admins("Event: [passed_event] has been scheduled to run in [passed_time / 10] seconds. (CANCEL) (REFUND)") + message_admins("Event: [passed_event] has been scheduled to run in [passed_time / 10] seconds. (CANCEL) (REFUND)") else //Only roundstart events can be scheduled before round start - message_admins("Event: [passed_event] has been scheduled to run on roundstart. (CANCEL)") + message_admins("Event: [passed_event] has been scheduled to run on roundstart. (CANCEL)") scheduled_events += scheduled /datum/controller/subsystem/gamemode/proc/update_crew_infos() @@ -894,7 +894,7 @@ SUBSYSTEM_DEF(gamemode) var/round_started = SSticker.HasRoundStarted() var/list/dat = list() - dat += "
    HALT Storyteller Event Panel Set Storyteller Refresh" + dat += "
    HALT Storyteller Event Panel Set Storyteller Refresh" if(storyteller) dat += "
    Storyteller: [storyteller.name]" dat += "
    Description: [storyteller.desc]" @@ -904,28 +904,28 @@ SUBSYSTEM_DEF(gamemode) dat += "
    Active Players: [active_players] (Head: [head_crew], Sec: [sec_crew], Eng: [eng_crew], Med: [med_crew])" dat += "
    Antagonist Count vs Maximum: [total_valid_antags] / [get_antag_cap()]" dat += "
    " - dat += "Main" - dat += " Variables" + dat += "Main" + dat += " Variables" dat += "
    " switch(panel_page) if(GAMEMODE_PANEL_VARIABLES) - dat += "Reload Config Vars Configs located in game_options.txt." + dat += "Reload Config Vars Configs located in game_options.txt." dat += "
    Point Gains Multipliers (only over time):" dat += "
    This affects points gained over time towards scheduling new events of the tracks." for(var/track in event_tracks) - dat += "
    [track]: [point_gain_multipliers[track]]" + dat += "
    [track]: [point_gain_multipliers[track]]" dat += "
    " dat += "Roundstart Points Multipliers:" dat += "
    This affects points generated for roundstart events and antagonists." for(var/track in event_tracks) - dat += "
    [track]: [roundstart_point_multipliers[track]]" + dat += "
    [track]: [roundstart_point_multipliers[track]]" dat += "
    " dat += "Point Thresholds:" dat += "
    Those are thresholds the tracks require to reach with points to make an event." for(var/track in event_tracks) - dat += "
    [track]: [point_thresholds[track]]" + dat += "
    [track]: [point_thresholds[track]]" if(GAMEMODE_PANEL_MAIN) var/even = TRUE @@ -954,9 +954,9 @@ SUBSYSTEM_DEF(gamemode) dat += "[percent]% ([lower]/[upper])" //Progress dat += "~[next] seconds" //Next var/datum/round_event_control/forced_event = forced_next_events[track] - var/forced = forced_event ? "[forced_event.name] X" : "" + var/forced = forced_event ? "[forced_event.name] X" : "" dat += "[forced]" //Forced - dat += "Set Pts. Next Event" //Actions + dat += "Set Pts. Next Event" //Actions dat += "" dat += "" @@ -1019,7 +1019,7 @@ SUBSYSTEM_DEF(gamemode) storyteller.calculate_weights(statistics_track_page) else dat += "Storyteller: None
    Weight and chance statistics will be inaccurate due to the present lack of a storyteller." - dat += "
    Roundstart Events Forced Roundstart events will use rolled points, and are guaranteed to trigger (even if the used points are not enough)" + dat += "
    Roundstart Events Forced Roundstart events will use rolled points, and are guaranteed to trigger (even if the used points are not enough)" dat += "
    Avg. event intervals: " for(var/track in event_tracks) if(last_point_gains[track]) @@ -1027,7 +1027,7 @@ SUBSYSTEM_DEF(gamemode) dat += "[track]: ~[est_time] m. | " dat += "
    " for(var/track in EVENT_PANEL_TRACKS) - dat += "[track]" + dat += "[track]" dat += "
    " /// Create event info and stats table dat += "" diff --git a/yogstation/code/modules/storytellers/scheduled_events.dm b/yogstation/code/modules/storytellers/scheduled_events.dm index 9405be24600f0..af32d067e9e6e 100644 --- a/yogstation/code/modules/storytellers/scheduled_events.dm +++ b/yogstation/code/modules/storytellers/scheduled_events.dm @@ -40,9 +40,9 @@ /datum/scheduled_event/proc/get_href_actions() var/round_started = SSticker.HasRoundStarted() if(round_started) - return "Force NowRescheduleCancelRefund" + return "Force NowRescheduleCancelRefund" else - return "Cancel" + return "Cancel" /// Try and fire off the scheduled event /datum/scheduled_event/proc/try_fire() From e4e5ba62e3c962d9386c97a81848f30d8aa4e2c1 Mon Sep 17 00:00:00 2001 From: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Date: Fri, 14 Mar 2025 16:23:56 -0400 Subject: [PATCH 04/38] compile... NOW --- code/_onclick/hud/hud.dm | 2 +- code/modules/admin/admin_investigate.dm | 2 +- code/modules/admin/verbs/debug.dm | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 734d79d002db4..ce9d3464aae19 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -158,7 +158,7 @@ GLOBAL_LIST_INIT(available_ui_styles, list( /datum/hud/proc/client_refresh(datum/source) SIGNAL_HANDLER var/client/client = mymob.canon_client - var/new_byond_version = client.byond_version + var/new_byond_version = client.byond_version #if MIN_COMPILER_VERSION > 515 #warn Fully change default relay_loc to "1,1", rather than changing it based on client version #endif diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index 0e3e90634eee0..4e6f10239ca01 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -39,6 +39,6 @@ if(!fexists(F)) to_chat(src, span_danger("No [selected] logfile was found."), confidential=TRUE) return - var/datum/browser/browser = new(user, "investigate[selected]", "Investigation of [selected]", 800, 300) + var/datum/browser/browser = new(usr, "investigate[selected]", "Investigation of [selected]", 800, 300) browser.set_content(file2text(F)) browser.open() diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 7cfd53f66c644..912db49e7dcd1 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -950,7 +950,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) set name = "Display Initialize(mapload) Log" set desc = "Displays a list of things that didn't handle Initialize(mapload) properly" - var/datum/browser/browser = new(user, "initlog", "Initialize Log", 500, 500) + var/datum/browser/browser = new(usr, "initlog", "Initialize Log", 500, 500) browser.set_content(replacetext(SSatoms.InitLog(), "\n", "
    ")) browser.open() From 2d48bffecf53215470f7e464bb4f717fd7e01bcb Mon Sep 17 00:00:00 2001 From: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Date: Fri, 14 Mar 2025 16:32:46 -0400 Subject: [PATCH 05/38] fix a runtime that was bugging me on localhost --- code/modules/mob/living/simple_animal/bot/mulebot.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 9f43dd566ba19..5f667e83aa8b3 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -67,9 +67,13 @@ suffix = null /mob/living/simple_animal/bot/mulebot/Destroy() + if(!isnull(wires)) + QDEL_NULL(wires) unload(0) - qdel(wires) - wires = null + return ..() + +/mob/living/simple_animal/bot/mulebot/death(gibbed) + QDEL_NULL(wires) return ..() /mob/living/simple_animal/bot/mulebot/proc/set_id(new_id) From 9cd66384812b2acb6227624b2d9491eda6076136 Mon Sep 17 00:00:00 2001 From: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Date: Fri, 14 Mar 2025 16:34:24 -0400 Subject: [PATCH 06/38] Update __byond_version_compat.dm --- code/__byond_version_compat.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/__byond_version_compat.dm b/code/__byond_version_compat.dm index 933e67092c8e0..8a8d131b1d0a5 100644 --- a/code/__byond_version_compat.dm +++ b/code/__byond_version_compat.dm @@ -9,6 +9,14 @@ #error You need version 515.1630 or higher #endif +//If you update these values, update the message in the #error +#define MAX_BYOND_MAJOR 516 +#define MAX_BYOND_MINOR 1658 +#if ((DM_VERSION > MAX_BYOND_MAJOR) || (DM_BUILD > MAX_BYOND_MINOR)) && !defined(SPACEMAN_DMM) +#error Your version of BYOND is too new to compile this project. +#error Download version 515.1647 at www.byond.com/download/build/515/515.1642_byond.exe +#endif + // 515 split call for external libraries into call_ext #if DM_VERSION < 515 #define LIBCALL call From 988e82595f3cee2af043b376c8cec7bc238f1baf Mon Sep 17 00:00:00 2001 From: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Date: Sat, 15 Mar 2025 17:29:40 -0400 Subject: [PATCH 07/38] more 516 stuff --- code/datums/browser.dm | 6 +- code/game/objects/items/storage/book.dm | 2 +- .../modules/asset_cache/asset_cache_client.dm | 5 +- code/modules/asset_cache/validate_assets.html | 2 +- tgui/public/tgui.html | 1297 +++++++++-------- 5 files changed, 696 insertions(+), 616 deletions(-) diff --git a/code/datums/browser.dm b/code/datums/browser.dm index f0ef8fb18e190..f6c2a24f535e3 100644 --- a/code/datums/browser.dm +++ b/code/datums/browser.dm @@ -128,13 +128,13 @@ var/output = {"
    [Message]

    - [Button1]"} + [Button1]"} if (Button2) - output += {"[Button2]"} + output += {"[Button2]"} if (Button3) - output += {"[Button3]"} + output += {"[Button3]"} output += {"
    "} diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index 1856c1abda043..fc20ef7cd33d7 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -64,7 +64,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", var/icon/bibleicon = icon('icons/obj/storage.dmi', GLOB.biblestates[i]) var/nicename = GLOB.biblenames[i] H << browse_rsc(bibleicon, nicename) - dat += {""} + dat += {""} dat += "
    [nicename]
    [nicename]
    " H << browse(dat, "window=editicon;can_close=0;can_minimize=0;size=250x650") diff --git a/code/modules/asset_cache/asset_cache_client.dm b/code/modules/asset_cache/asset_cache_client.dm index 32099175f422f..a9f35738ee7bc 100644 --- a/code/modules/asset_cache/asset_cache_client.dm +++ b/code/modules/asset_cache/asset_cache_client.dm @@ -36,7 +36,10 @@ var/job = ++last_asset_job var/t = 0 var/timeout_time = timeout - src << browse({""}, "window=asset_cache_browser&file=asset_cache_send_verify.htm") + if(byond_version < 516) + src << browse({""}, "window=asset_cache_browser&file=asset_cache_send_verify.htm") + else + src << browse({""}, "window=asset_cache_browser&file=asset_cache_send_verify.htm") while(!completed_asset_jobs["[job]"] && t < timeout_time) // Reception is handled in Topic() stoplag(1) // Lock up the caller_but_not_a_byond_built_in_proc until this is received. diff --git a/code/modules/asset_cache/validate_assets.html b/code/modules/asset_cache/validate_assets.html index 78bcbb92a1ab8..ea5d9edfa6a42 100644 --- a/code/modules/asset_cache/validate_assets.html +++ b/code/modules/asset_cache/validate_assets.html @@ -8,7 +8,7 @@ //this is used over window.location because window.location has a character limit in IE. function sendbyond(text) { var xhr = new XMLHttpRequest(); - xhr.open('GET', '?'+text, true); + xhr.open('GET', 'byond://?' + text, true); xhr.send(null); } var xhr = new XMLHttpRequest(); diff --git a/tgui/public/tgui.html b/tgui/public/tgui.html index 606a8d83a4169..8937a9443bc49 100644 --- a/tgui/public/tgui.html +++ b/tgui/public/tgui.html @@ -1,653 +1,730 @@ + - - - - - - - - - // Perform a standard call via location.href - if (url.length < 2048) { - location.href = 'byond://' + url; - return; - } - // Send an HTTP request to DreamSeeker's HTTP server. - // Allows sending much bigger payloads. - var xhr = new XMLHttpRequest(); - xhr.open('GET', url); - xhr.send(); - }; - - Byond.callAsync = function (path, params) { - if (!window.Promise) { - throw new Error('Async calls require API level of ES2015 or later.'); - } - var index = Byond.__callbacks__.length; - var promise = new window.Promise(function (resolve) { - Byond.__callbacks__.push(resolve); - }); - Byond.call(path, assign({}, params, { - callback: 'Byond.__callbacks__[' + index + ']', - })); - return promise; - }; - - Byond.topic = function (params) { - return Byond.call('', params); - }; - - Byond.command = function (command) { - return Byond.call('winset', { - command: command, - }); - }; - - Byond.winget = function (id, propName) { - if (id === null) { - id = ''; - } - var isArray = propName instanceof Array; - var isSpecific = propName && propName !== '*' && !isArray; - var promise = Byond.callAsync('winget', { - id: id, - property: isArray && propName.join(',') || propName || '*', - }); - if (isSpecific) { - promise = promise.then(function (props) { - return props[propName]; - }); + - - + + + + - - - - - - -
    - - -
    - - -A fatal exception has occurred at 002B:C562F1B7 in TGUI. -The current application will be terminated. -Send the copy of the following stack trace to an authorized -Nanotrasen incident handler at https://github.com/yogstation13/Yogstation. -Thank you for your cooperation. - -
    - -
    - -