framexml: six rows of the chain's own toc the manifest never had

benilla loads `assets/ui/benilla.toc`, not the player's `Interface\FrameXML\FrameXML.toc`, so a row
the chain carries and the manifest omits is silently absent — no read, no warning, just a missing
global or template surfacing as somebody else's error. Diffing the two found 29 such rows.

Six of them land here. `Turtle_ArenaUI\Turtle_ArenaUITemplates.xml` is the one that was costing
four errors per inspect: `Blizzard_InspectUI\InspectArenaFrame.xml` inherits `ArenaTeamTemplate`
from it and then reads `$parentText`, `$parentDetails` and nine `$parentDetails*` children by name,
so all three team-button OnLoads and `InspectArenaFrame_OnShow` raised on nil. `Globals.lua`
publishes `print`, `TURTLE_WOW_VERSION`, `TW_CLASS_TOKEN`, `Turtle_AvailableChallenges`,
`GAME_YELLOW` and the realm's three `ADDON_MSG_*_DELIMITER`s. `Overrides.lua` is Turtle's
two-continent map. `Hooks.lua` is the realm's tooltip layer: the guild line, the shift-click hint
and `FixSetInspect`. `ChronoboonTimers.lua` and `SpellChatLinks.lua` are self-contained.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SgstFWtn1RxEJ5kVrpgYwn
This commit is contained in:
2026-10-17 22:13:14 -06:00
co-authored by Claude Opus 5
parent a1359d8df1
commit 981e2ee498
+30
View File
@@ -17,6 +17,16 @@ Interface\FrameXML\Fonts.xml
# Second, not first as in the reference, because entry 0 must be Fonts.xml.
Interface\FrameXML\GlobalStrings.lua
# TurtleWoW's own two rows after GlobalStrings (its `FrameXML.toc` 11-12), both the client half of
# server-side systems. `Globals.lua` publishes `print`, `TURTLE_WOW_VERSION`, `TW_CLASS_TOKEN`,
# `Turtle_AvailableChallenges`, `GAME_YELLOW` and the three `ADDON_MSG_*_DELIMITER`s that every
# `CHAT_MSG_ADDON` protocol on this realm splits on; it also re-declares `sizeof`/`explode`/`wipe`/
# `trim`, which our UI stdlib seeds for a chain that lacks the file, and the chain's own copy wins
# here, as in the reference. `Overrides.lua` is Turtle's two-continent map: `CONTINENTS_LENGTH = 2`
# and a `GetMapContinents` wrapper that returns exactly Kalimdor and Azeroth, dropping any further
# row the chain's `WorldMapContinent.dbc` carries.
Interface\FrameXML\Globals.lua
Interface\FrameXML\Overrides.lua
# `Localize()` runs at load and overwrites GlobalStrings keys, so this follows them.
Interface\FrameXML\Localization.xml
# `GetText` is a Lua global, not an engine binding: the client's `0x703bf0` calls it.
@@ -170,6 +180,17 @@ Interface\FrameXML\LFT\LFT.lua
Interface\FrameXML\LFT\LFTTemplates.xml
Interface\FrameXML\LFT\LFT.xml
Interface\FrameXML\OctoLFTBlinkPause\OctoLFTBlinkPause.lua
# TurtleWoW's own three loose rows (its `FrameXML.toc` 103-105), all Lua over verbs that already
# exist. `Hooks.lua` is the realm's tooltip layer: the guild line under a player's name (gated on
# its own `TOOLTIP_GUILD_NAMES` CVar), the shift-click hint while a trade, auction or mail window
# is up, and `FixSetInspect`, which recolours an inspected or transmogrified item's set lines by
# what the unit actually wears — the reason a set bonus reads gray on this realm without it.
# `ChronoboonTimers.lua` adds the Chronoboon Displacer's stored-buff lines to its bag tooltip;
# `SpellChatLinks.lua` answers the realm's `TW_CHAT_MSG_WHISPER` spell/talent link protocol, so a
# linked spell in chat opens a tooltip instead of nothing.
Interface\FrameXML\Hooks.lua
Interface\FrameXML\ChronoboonTimers.lua
Interface\FrameXML\SpellChatLinks.lua
# TurtleWoW's own FrameXML additions, in the reference `FrameXML.toc` order (patch-3.mpq). These
# are the client half of Turtle's custom systems: `Turtle_TransmogUI` hooks `GOSSIP_SHOW`, hides
# the stock gossip frame for its NPCs and drives the transmog window over `TW_TRANSMOG` addon
@@ -186,6 +207,15 @@ Interface\FrameXML\Turtle_TransmogUI\Turtle_TransmogUITemplates.xml
Interface\FrameXML\Turtle_TransmogUI\Turtle_TransmogUI.xml
Interface\FrameXML\Turtle_ShopUI\Turtle_ShopUITemplates.xml
Interface\FrameXML\Turtle_ShopUI\Turtle_ShopUI.xml
# Turtle's arena templates, the one row of its `# Arena` block (its `FrameXML.toc` 108-112) that
# stands alone: it inherits nothing but stock fonts and declares no handler of its own at load.
# `Blizzard_InspectUI`'s own `InspectArenaFrame.xml` inherits `ArenaTeamTemplate` for its three
# team buttons and then reads `$parentText`, `$parentDetails` and nine `$parentDetails*` children
# by name, so without this row the inspect window raised four times per inspect — three OnLoads
# and `InspectArenaFrame_OnShow`. The other four rows (`Turtle_ArenaUI.lua` and the arena, queue
# and registrar windows) are the same pattern as the Inspect-Talents and Guild-Bank UIs above:
# they need the arena verbs built first, so they are not loaded here yet.
Interface\FrameXML\Turtle_ArenaUI\Turtle_ArenaUITemplates.xml
# Turtle's honour/arena merchant (Stormwind armoury PvP gear, the Custom_Merchant NPCs): it hooks
# `GOSSIP_SHOW`, hides the gossip frame for an NPC whose greeting is `CUSTOM_MERCHANT_TRIGGER` and
# fills over `TW_Merchant` addon messages. Without it that trigger text is what the stock gossip