From 0b838dc3c4cc34dacd634b9358ec8eb945e823a0 Mon Sep 17 00:00:00 2001
From: S34N <12197162+S34NW@users.noreply.github.com>
Date: Mon, 15 Apr 2024 19:49:50 +0100
Subject: [PATCH] [READY] BYOND 516 compatability (#25105)
* Preliminary changes for 516
* Also removes the goon folder
* Fixes a BUNCH of UIs
* update our things
* debug proc
* le maintainer verb
* fix strip panel
* browseroutput => chat_panel
* prettier, remove obsolete bat
* tidu tgui say css
* href purge
* 515 compat
* 515 compat 2
* more required chores
* comments
* fully working 515
* bungle
* correct this
* fixes 515 support
* prettier
* new CI
* fixes old href styles sneaking in
* update docs to reflect href changes
* more href fixes (thanks cdui)
* MORE href nonsense
* even more hrefs (seriously wtf)
* Update code/modules/admin/permissionverbs/permissionedit.dm
* error on fail
---------
Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
---
.github/CONTRIBUTING.md | 4 +-
code/__DEFINES/admin_defines.dm | 26 +-
code/__HELPERS/mob_helpers.dm | 6 +-
code/__HELPERS/unsorted.dm | 2 +-
code/controllers/subsystem/SSdbcore.dm | 2 +-
code/controllers/subsystem/SSdebugview.dm | 2 +-
code/controllers/subsystem/SSevents.dm | 44 +-
code/controllers/subsystem/SSghost_spawns.dm | 4 +-
code/controllers/subsystem/SSticker.dm | 2 +-
code/controllers/subsystem/tickets/tickets.dm | 32 +-
code/datums/datumvars.dm | 42 +-
code/datums/helper_datums/async_input.dm | 2 +-
code/datums/log_viewer.dm | 22 +-
code/datums/mind.dm | 124 +-
code/datums/wires/nuclearbomb_wires.dm | 4 +-
code/defines/procs/admin_keyname_procs.dm | 4 +-
code/game/dna/mutations/mutation_powers.dm | 2 +-
.../miniantags/abduction/machinery/console.dm | 26 +-
code/game/gamemodes/nuclear/nuclearbomb.dm | 6 +-
code/game/gamemodes/scoreboard.dm | 4 +-
code/game/jobs/job_exp.dm | 2 +-
code/game/machinery/camera/camera.dm | 4 +-
.../machinery/computer/message_monitor.dm | 46 +-
code/game/machinery/computer/robot_control.dm | 2 +-
code/game/machinery/cryopod.dm | 2 +-
code/game/machinery/dance_machine.dm | 20 +-
code/game/machinery/doors/airlock_types.dm | 2 +-
code/game/machinery/gameboard.dm | 2 +-
code/game/machinery/hologram.dm | 18 +-
code/game/machinery/spaceheater.dm | 6 +-
code/game/mecha/combat/honker.dm | 6 +-
code/game/mecha/combat/phazon.dm | 2 +-
code/game/mecha/equipment/mecha_equipment.dm | 2 +-
.../mecha/equipment/tools/medical_tools.dm | 10 +-
.../game/mecha/equipment/tools/other_tools.dm | 8 +-
code/game/mecha/equipment/tools/work_tools.dm | 4 +-
code/game/mecha/equipment/weapons/weapons.dm | 4 +-
code/game/mecha/mecha.dm | 4 +-
code/game/mecha/mecha_topic.dm | 50 +-
code/game/mecha/working/ripley.dm | 2 +-
.../effect_system/effects_chem_smoke.dm | 2 +-
code/game/objects/items/blueprints.dm | 10 +-
code/game/objects/items/crayons.dm | 16 +-
code/game/objects/items/devices/powersink.dm | 4 +-
.../objects/items/devices/transfer_valve.dm | 2 +-
code/game/objects/items/mixing_bowl.dm | 2 +-
code/game/objects/items/robot/robot_parts.dm | 12 +-
code/game/objects/items/stacks/stack.dm | 8 +-
.../game/objects/items/stacks/stack_recipe.dm | 2 +-
.../items/stacks/tiles/tile_mineral.dm | 2 +-
code/game/objects/items/weapons/explosives.dm | 4 +-
.../items/weapons/grenades/chem_grenade.dm | 8 +-
.../objects/items/weapons/grenades/grenade.dm | 2 +-
.../objects/items/weapons/storage/backpack.dm | 2 +-
.../game/objects/items/weapons/tanks/tanks.dm | 2 +-
code/game/objects/structures/mineral_doors.dm | 2 +-
code/game/objects/structures/noticeboard.dm | 4 +-
code/game/objects/structures/safe.dm | 2 +-
.../turfs/simulated/floor/mineral_floors.dm | 4 +-
code/game/turfs/simulated/minerals.dm | 4 +-
code/game/turfs/simulated/walls_mineral.dm | 4 +-
code/game/verbs/who.dm | 2 +-
code/modules/admin/admin_memo.dm | 2 +-
code/modules/admin/admin_verbs.dm | 1 +
code/modules/admin/misc_admin_procs.dm | 172 +-
code/modules/admin/outfits.dm | 8 +-
.../admin/permissionverbs/permissionedit.dm | 16 +-
code/modules/admin/player_panel.dm | 44 +-
code/modules/admin/secrets.dm | 114 +-
code/modules/admin/sql_notes.dm | 29 +-
code/modules/admin/topic.dm | 96 +-
code/modules/admin/verbs/SDQL2/SDQL_2.dm | 2 +-
code/modules/admin/verbs/adminpm.dm | 26 +-
code/modules/admin/verbs/debug.dm | 15 +
.../admin/verbs/map_template_loadverb.dm | 4 +-
code/modules/admin/verbs/one_click_antag.dm | 14 +-
code/modules/admin/verbs/playsound.dm | 2 +-
code/modules/admin/verbs/pray.dm | 4 +-
code/modules/admin/verbs/randomverbs.dm | 18 +-
code/modules/admin/verbs/serialization.dm | 2 +-
code/modules/admin/watchlist.dm | 8 +-
.../modules/antagonists/_common/antag_team.dm | 26 +-
code/modules/antagonists/cult/team_cult.dm | 6 +-
.../arcade/mob_hunt/battle_computer.dm | 10 +-
code/modules/assembly/infrared.dm | 10 +-
code/modules/assembly/proximity.dm | 8 +-
code/modules/assembly/timer.dm | 10 +-
.../modules/asset_cache/asset_cache_client.dm | 2 +-
.../machinery/other/area_atmos_computer.dm | 4 +-
.../machinery/portable/canister.dm | 4 +-
code/modules/client/client_procs.dm | 8 +-
.../client/login_processing/39-cid_count.dm | 2 +-
code/modules/client/preference/character.dm | 28 +-
code/modules/client/preference/preferences.dm | 208 +-
code/modules/error_handler/error_viewer.dm | 22 +-
code/modules/events/immovable_rod.dm | 2 +-
.../food_and_drinks/drinks/bottler/bottler.dm | 12 +-
.../food_and_drinks/drinks/drinks/bottle.dm | 2 +-
.../food_and_drinks/food/foods/pizza.dm | 6 +-
.../kitchen_machinery/gibber.dm | 2 +-
.../kitchen_machinery/icecream_vat.dm | 34 +-
code/modules/games/cards.dm | 4 +-
code/modules/hydroponics/grown/kudzu.dm | 2 +-
code/modules/hydroponics/grown/misc_seeds.dm | 2 +-
code/modules/library/book.dm | 4 +-
code/modules/library/library_admin.dm | 4 +-
code/modules/mining/equipment/survival_pod.dm | 2 +-
.../mining/lavaland/loot/ashdragon_loot.dm | 4 +-
.../mining/lavaland/loot/colossus_loot.dm | 2 +-
code/modules/mining/machine_processing.dm | 8 +-
code/modules/mining/machine_stacking.dm | 2 +-
code/modules/mining/mint.dm | 16 +-
code/modules/mining/satchel_ore_boxdm.dm | 2 +-
.../mob/dead/observer/observer_base.dm | 2 +-
.../mob/living/carbon/human/human_examine.dm | 10 +-
.../mob/living/carbon/human/human_mob.dm | 8 +-
code/modules/mob/living/death.dm | 2 +-
code/modules/mob/living/silicon/ai/ai_mob.dm | 16 +-
code/modules/mob/living/silicon/ai/ai_say.dm | 2 +-
.../modules/mob/living/silicon/pai/recruit.dm | 2 +-
.../modules/mob/living/silicon/silicon_mob.dm | 4 +-
.../mob/living/simple_animal/bot/bot.dm | 8 +-
.../mob/living/simple_animal/bot/mulebot.dm | 30 +-
.../hostile/mining/elites/elite.dm | 4 +-
.../hostile/terror_spiders/terror_spiders.dm | 2 +-
code/modules/mob/mob_login_base.dm | 4 +-
code/modules/mob/new_player/new_player.dm | 2 +-
code/modules/newscaster/obj/newspaper.dm | 8 +-
code/modules/paperwork/clipboard.dm | 8 +-
code/modules/paperwork/fax.dm | 12 +-
code/modules/paperwork/faxmachine.dm | 2 +-
code/modules/paperwork/folders.dm | 10 +-
code/modules/paperwork/paper.dm | 6 +-
code/modules/paperwork/paper_bundle.dm | 16 +-
code/modules/pda/messenger.dm | 2 +-
.../power/engines/singularity/emitter.dm | 2 +-
.../particle_accelerator/particle_control.dm | 4 +-
.../power/engines/singularity/singularity.dm | 2 +-
.../power/engines/singularity/singulogen.dm | 2 +-
code/modules/power/gravitygenerator.dm | 4 +-
code/modules/power/smes.dm | 2 +-
.../reagents/chemistry/machinery/pandemic.dm | 16 +-
code/modules/research/experimentor.dm | 2 +-
code/modules/research/server.dm | 24 +-
code/modules/research/strange_objects.dm | 2 +-
code/modules/shuttle/shuttle.dm | 2 +-
code/modules/telesci/telesci_computer.dm | 18 +-
code/modules/tgui/tgui_panel/tgui_panel.dm | 2 +-
.../tgui/tgui_panel/tgui_panel_external.dm | 8 +-
.../tgui_input/say_modal/tgui_say_modal.dm | 5 +-
code/modules/vote/vote_datum.dm | 2 +-
code/modules/world_topic/adminmsg.dm | 4 +-
goon/browserassets/css/font-awesome.css | 788 --
goon/browserassets/css/fonts/LICENSE | 11 -
.../css/fonts/PxPlus_IBM_MDA.ttf | Bin 72240 -> 0 bytes
.../css/fonts/fontawesome-webfont.eot | Bin 37405 -> 0 bytes
.../css/fonts/fontawesome-webfont.svg | 399 -
.../css/fonts/fontawesome-webfont.ttf | Bin 79076 -> 0 bytes
.../css/fonts/fontawesome-webfont.woff | Bin 43572 -> 0 bytes
goon/browserassets/html/adminOutput.html | 104 -
goon/browserassets/html/saveInstructions.html | 19 -
goon/browserassets/js/jquery.min.js | 9789 -----------------
goon/browserassets/js/twemoji.min.js | 2 -
.../browserassets/js/unicode_9_annotations.js | 1490 ---
html/statbrowser.js | 10 +-
interface/skin.dmf | 2 +-
tgui/.gitignore | 1 +
tgui/bin/tgui-inspect-dev-tools.bat | 2 -
tgui/global.d.ts | 20 -
tgui/package.json | 4 +-
tgui/packages/common/package.json | 2 +-
tgui/packages/tgui-dev-server/package.json | 2 +-
tgui/packages/tgui-panel/Panel.js | 4 -
tgui/packages/tgui-panel/audio/player.js | 4 -
tgui/packages/tgui-panel/chat/middleware.js | 4 +-
tgui/packages/tgui-panel/chat/renderer.js | 18 +-
tgui/packages/tgui-panel/index.js | 4 +-
tgui/packages/tgui-panel/package.json | 4 +-
tgui/packages/tgui-panel/panelFocus.js | 2 +-
.../tgui-panel/styles/tgchat/chat-dark.scss | 6 -
tgui/packages/tgui-polyfill/package.json | 2 +-
tgui/packages/tgui-say/TguiSay.tsx | 10 +
tgui/packages/tgui-say/index.tsx | 19 +-
tgui/packages/tgui-say/package.json | 2 +-
tgui/packages/tgui-say/styles/button.scss | 7 +
tgui/packages/tgui-say/styles/colors.scss | 1 +
tgui/packages/tgui-say/styles/content.scss | 39 +-
tgui/packages/tgui-say/styles/dragzone.scss | 12 +-
tgui/packages/tgui-say/styles/textarea.scss | 50 +-
tgui/packages/tgui-say/styles/window.scss | 10 +-
tgui/packages/tgui/backend.ts | 4 +-
tgui/packages/tgui/components/Box.tsx | 10 +-
tgui/packages/tgui/components/Button.js | 4 -
tgui/packages/tgui/components/ByondUi.js | 12 -
tgui/packages/tgui/components/Chart.js | 2 +-
tgui/packages/tgui/components/Flex.tsx | 8 +-
tgui/packages/tgui/components/Knob.js | 5 -
tgui/packages/tgui/components/NumberInput.js | 2 +-
tgui/packages/tgui/components/Popper.tsx | 3 +-
tgui/packages/tgui/components/RoundGauge.js | 5 -
tgui/packages/tgui/components/Section.tsx | 1 -
tgui/packages/tgui/components/Slider.js | 4 -
tgui/packages/tgui/layouts/Window.js | 2 +-
tgui/packages/tgui/package.json | 5 +-
tgui/packages/tgui/stories/ByondUi.stories.js | 2 +-
tgui/packages/tgui/styles/layouts/Layout.scss | 20 +-
tgui/public/tgui-panel.bundle.css | 2 +-
tgui/public/tgui-panel.bundle.js | 240 +-
tgui/public/tgui-say.bundle.css | 2 +-
tgui/public/tgui-say.bundle.js | 24 +-
tgui/public/tgui.bundle.css | 2 +-
tgui/public/tgui.bundle.js | 156 +-
tgui/public/tgui.html | 102 +-
tgui/webpack.config.js | 22 +-
tgui/yarn.lock | 2858 ++---
tools/ci/check_grep2.py | 6 +
216 files changed, 2971 insertions(+), 15327 deletions(-)
delete mode 100644 goon/browserassets/css/font-awesome.css
delete mode 100644 goon/browserassets/css/fonts/LICENSE
delete mode 100644 goon/browserassets/css/fonts/PxPlus_IBM_MDA.ttf
delete mode 100644 goon/browserassets/css/fonts/fontawesome-webfont.eot
delete mode 100644 goon/browserassets/css/fonts/fontawesome-webfont.svg
delete mode 100644 goon/browserassets/css/fonts/fontawesome-webfont.ttf
delete mode 100644 goon/browserassets/css/fonts/fontawesome-webfont.woff
delete mode 100644 goon/browserassets/html/adminOutput.html
delete mode 100644 goon/browserassets/html/saveInstructions.html
delete mode 100644 goon/browserassets/js/jquery.min.js
delete mode 100644 goon/browserassets/js/twemoji.min.js
delete mode 100644 goon/browserassets/js/unicode_9_annotations.js
delete mode 100644 tgui/bin/tgui-inspect-dev-tools.bat
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 79083339ae3..e711d1a7206 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -288,10 +288,10 @@ Usage of this system is mandatory for any `Topic()` calls, and will produce erro
```dm
//Bad
-"Link!"
+"Link!"
//Good
-"Link!"
+"Link!"
```
### Use `var/name` format when declaring variables
diff --git a/code/__DEFINES/admin_defines.dm b/code/__DEFINES/admin_defines.dm
index 86805b43bc5..1856a55e010 100644
--- a/code/__DEFINES/admin_defines.dm
+++ b/code/__DEFINES/admin_defines.dm
@@ -46,26 +46,26 @@
#define R_HOST ((1<<18)-1) //17 bit bitmask, update me if we ever add more admin permissions. Sum of all permissions to allow easy setting.
-#define ADMIN_QUE(user,display) "[display]"
-#define ADMIN_FLW(user,display) "[display]"
-#define ADMIN_PP(user,display) "[display]"
-#define ADMIN_VV(atom,display) "[display]"
-#define ADMIN_SM(user,display) "[display]"
-#define ADMIN_TP(user,display) "[display]"
-#define ADMIN_ALERT(user, display) "[display]"
-#define ADMIN_BSA(user,display) "[display]"
-#define ADMIN_CENTCOM_REPLY(user,display) "[display]"
-#define ADMIN_SYNDICATE_REPLY(user,display) "[display]"
-#define ADMIN_SC(user,display) "[display]"
+#define ADMIN_QUE(user,display) "[display]"
+#define ADMIN_FLW(user,display) "[display]"
+#define ADMIN_PP(user,display) "[display]"
+#define ADMIN_VV(atom,display) "[display]"
+#define ADMIN_SM(user,display) "[display]"
+#define ADMIN_TP(user,display) "[display]"
+#define ADMIN_ALERT(user, display) "[display]"
+#define ADMIN_BSA(user,display) "[display]"
+#define ADMIN_CENTCOM_REPLY(user,display) "[display]"
+#define ADMIN_SYNDICATE_REPLY(user,display) "[display]"
+#define ADMIN_SC(user,display) "[display]"
#define ADMIN_LOOKUP(user) "[key_name_admin(user)]([ADMIN_QUE(user,"?")])"
#define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")])"
#define ADMIN_FULLMONTY(user) "[key_name_admin(user)] ([ADMIN_QUE(user,"?")]) ([ADMIN_PP(user,"PP")]) ([ADMIN_VV(user,"VV")]) ([ADMIN_SM(user,"SM")]) ([ADMIN_FLW(user,"FLW")]) ([ADMIN_TP(user,"TP")])"
-#define ADMIN_JMP(src) "(JMP)"
+#define ADMIN_JMP(src) "(JMP)"
#define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]"
#define AREACOORD(src) "[src ? "[get_area_name(src, TRUE)] [COORD(src)]" : "nonexistent location" ]"
#define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]"
#define ADMIN_VERBOSEJMP(src) "[src ? "[AREACOORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]"
-#define ADMIN_SHOWDETAILS(mask, content) "[mask]"
+#define ADMIN_SHOWDETAILS(mask, content) "[mask]"
/// Note text for suppressed CID warning
#define CIDWARNING_SUPPRESSED_NOTETEXT "CID COUNT WARNING DISABLED - Delete this note to re-enable"
diff --git a/code/__HELPERS/mob_helpers.dm b/code/__HELPERS/mob_helpers.dm
index 8054554c411..654e404f47e 100644
--- a/code/__HELPERS/mob_helpers.dm
+++ b/code/__HELPERS/mob_helpers.dm
@@ -310,8 +310,8 @@
var/area/A
if(isatom(MT) && !QDELETED(MT))
A = get_area(MT)
- else
- A = get_area(user)
+ else
+ A = get_area(user)
if(A && A.hide_attacklogs)
loglevel = ATKLOG_ALL
else if(istype(MT))
@@ -556,7 +556,7 @@ GLOBAL_LIST_EMPTY(do_after_once_tracker)
to_chat(user, "Name = [M.name]; Real_name = [M.real_name]; Mind_name = [M.mind?"[M.mind.name]":""]; Key = [M.key];")
to_chat(user, "Location = [location_description];")
to_chat(user, "[special_role_description]")
- to_chat(user, "(PM) ([ADMIN_PP(M,"PP")]) ([ADMIN_VV(M,"VV")]) ([ADMIN_TP(M,"TP")]) ([ADMIN_SM(M,"SM")]) ([ADMIN_FLW(M,"FLW")])")
+ to_chat(user, "(PM) ([ADMIN_PP(M,"PP")]) ([ADMIN_VV(M,"VV")]) ([ADMIN_TP(M,"TP")]) ([ADMIN_SM(M,"SM")]) ([ADMIN_FLW(M,"FLW")])")
// Gets the first mob contained in an atom, and warns the user if there's not exactly one
/proc/get_mob_in_atom_with_warning(atom/A, mob/user = usr)
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 19ec5637a14..579be0eb83a 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -1252,7 +1252,7 @@ Standard way to write links -Sayu
/proc/topic_link(datum/D, arglist, content)
if(islist(arglist))
arglist = list2params(arglist)
- return "[content]"
+ return "[content]"
diff --git a/code/controllers/subsystem/SSdbcore.dm b/code/controllers/subsystem/SSdbcore.dm
index 03d147e9aac..9299f837106 100644
--- a/code/controllers/subsystem/SSdbcore.dm
+++ b/code/controllers/subsystem/SSdbcore.dm
@@ -463,7 +463,7 @@ SUBSYSTEM_DEF(dbcore)
// Just tells the admins if a query timed out, and asks if the server hung to help error reporting
/datum/db_query/proc/slow_query_check()
- message_admins("HEY! A database query timed out. Did the server just hang? \[YES\]|\[NO\]")
+ message_admins("HEY! A database query timed out. Did the server just hang? \[YES\]|\[NO\]")
/**
diff --git a/code/controllers/subsystem/SSdebugview.dm b/code/controllers/subsystem/SSdebugview.dm
index bfb8a8857c8..4d4547f5dd7 100644
--- a/code/controllers/subsystem/SSdebugview.dm
+++ b/code/controllers/subsystem/SSdebugview.dm
@@ -87,7 +87,7 @@ SUBSYSTEM_DEF(debugview)
if((SS.flags & SS_NO_FIRE) || !SS.can_fire)
continue
- html += "[SS.state_colour()]\[[SS.state_letter()]][SS.ss_id]\t[round(SS.cost, 1)]ms | [round(SS.tick_usage, 1)]% [SS.get_stat_details() ? "| [SS.get_stat_details()] " : ""]| VV Edit"
+ html += "[SS.state_colour()]\[[SS.state_letter()]][SS.ss_id]\t[round(SS.cost, 1)]ms | [round(SS.tick_usage, 1)]% [SS.get_stat_details() ? "| [SS.get_stat_details()] " : ""]| VV Edit"
popup.set_content(html.Join("
"))
popup.open(FALSE)
diff --git a/code/controllers/subsystem/SSevents.dm b/code/controllers/subsystem/SSevents.dm
index bd01160067c..af184bc45c5 100644
--- a/code/controllers/subsystem/SSevents.dm
+++ b/code/controllers/subsystem/SSevents.dm
@@ -101,11 +101,11 @@ SUBSYSTEM_DEF(events)
to_chat(world, message)
/datum/controller/subsystem/events/proc/GetInteractWindow()
- var/html = "Refresh"
+ var/html = "Refresh"
if(selected_event_container)
var/event_time = max(0, selected_event_container.next_event_time - world.time)
- html += "Back
"
+ html += "Back
"
html += "Time till start: [round(event_time / 600, 0.1)]
"
html += "
| Name | Type | Weight | OneShot | ||||
| [new_event.name ? new_event.name : "Enter Event"] | " - html += "[new_event.event_type ? new_event.event_type : "Select Type"] | " - html += "[new_event.weight ? new_event.weight : 0] | " - html += "[new_event.one_shot] | " + html += "[new_event.name ? new_event.name : "Enter Event"] | " + html += "[new_event.event_type ? new_event.event_type : "Select Type"] | " + html += "[new_event.weight ? new_event.weight : 0] | " + html += "[new_event.one_shot] | " html += "
| ResolveDetails #[ticket.ticketNum] ([ticket.ingame_time_opened]) [ticket.ticketState == TICKET_STALE ? "STALE" : ""] | [makeUrlMessage(ticket, one_line = TRUE)] |
| ResolveDetails #[ticket.ticketNum] ([ticket.ingame_time_opened]) [ticket.ticketState == TICKET_STALE ? "STALE" : ""] | [makeUrlMessage(ticket, one_line = TRUE)] |
| ResolveDetails #[ticket.ticketNum] ([ticket.ingame_time_opened]) | [makeUrlMessage(ticket, one_line = TRUE)] |
| ResolveDetails #[ticket.ticketNum] ([ticket.ingame_time_opened]) | [makeUrlMessage(ticket, one_line = TRUE)] |
| ResolveDetails #[ticket.ticketNum] ([ticket.ingame_time_opened]) | [makeUrlMessage(ticket, one_line = TRUE)] |
| ResolveDetails #[ticket.ticketNum] ([ticket.ingame_time_opened]) | [makeUrlMessage(ticket, one_line = TRUE)] |