From c3dd67e3f12f4a8a8c0d0654f7d6688a7bb37bc0 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 2 Sep 2026 16:58:13 +0700 Subject: [PATCH] seven more windows are the reference's own files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - seven more windows run off the player's own patch chain: the durability shield (`DurabilityFrame.xml`, with a Rust-side repair for the reference's own stale side-glyph inset the director caught on screen), `Localization.xml` + `GameTime.xml` (so `LocalizeFrames` finally runs from `VARIABLES_LOADED`, and the clock's 24-hour flag comes from where 1.12 sets it), the chat-link tooltip (`ItemRef.xml` — draggable now, and its shift-click arm fills the friend/ignore/who boxes as the reference's does), the mirror timers (`MirrorTimer.xml`, which exposed that our `STATICPOPUP_NUMDIALOGS` was 2 against the reference's 4, so a third breath/fatigue/feign bar could never be claimed), the zone splash with the fading kit, the item-text reader and the combo-point dots — each under the reference's published frame names, which is what an addon reaches for - `AddMessage` swallows a text it cannot use, silently, as the reference does: `0x795590` is a `lua_isstring` gate whose failure edge jumps straight to the epilogue — no line, no error, no record — and stock FrameXML takes that path: a full keyring calls `AddMessage(NO_EMPTY_KEYRING_SLOTS, …)` and no such GlobalString exists in 1.12, so it is a dead click on a real client where benilla put a script-error dialog on it; byte-verified by a four-worker cross-check in wow-re, and NOT generalised — a bad r/g/b/a still adds the line opaque white, only a bad text shows nothing Co-Authored-By: Claude Fable 5.1 --- crates/benilla-app/assets/ui/ChatFrame.xml | 2 +- crates/benilla-app/assets/ui/ComboFrame.xml | 199 -------- .../benilla-app/assets/ui/DurabilityFrame.xml | 324 ------------- crates/benilla-app/assets/ui/Fonts.xml | 29 +- crates/benilla-app/assets/ui/FriendsFrame.xml | 35 +- crates/benilla-app/assets/ui/GameTime.xml | 137 ------ crates/benilla-app/assets/ui/ItemRef.xml | 134 ------ .../benilla-app/assets/ui/ItemTextFrame.xml | 416 ----------------- crates/benilla-app/assets/ui/MirrorTimer.xml | 232 ---------- crates/benilla-app/assets/ui/RaidFrame.xml | 2 +- crates/benilla-app/assets/ui/UIParent.xml | 110 +++++ crates/benilla-app/assets/ui/UiPanels.xml | 27 +- crates/benilla-app/assets/ui/UnitFrames.xml | 9 + crates/benilla-app/assets/ui/ZoneText.xml | 425 ------------------ crates/benilla-app/assets/ui/benilla.toc | 187 ++++++-- crates/benilla-app/src/capture/scenarios.rs | 2 +- crates/benilla-app/src/ui_mirror.rs | 7 + crates/benilla-app/src/ui_script/bag_tests.rs | 22 +- .../src/ui_script/combo_frame_tests.rs | 27 +- .../src/ui_script/dressup_tests.rs | 2 +- .../src/ui_script/durability_tests.rs | 38 +- .../src/ui_script/frame_flag_gate.rs | 10 - .../src/ui_script/friends_tests.rs | 3 +- .../benilla-app/src/ui_script/guild_tests.rs | 6 +- crates/benilla-app/src/ui_script/manifest.rs | 40 ++ .../src/ui_script/minimap_tests.rs | 40 +- .../src/ui_script/mirror_timer_tests.rs | 72 +-- .../src/ui_script/tooltip_compare_tests.rs | 8 +- .../src/ui_script/unit_popup_tests.rs | 48 +- .../src/ui_script/zone_text_tests.rs | 44 +- crates/benilla-app/tests/item_text_frame.rs | 74 ++- .../benilla-ui/src/script/messageframe/mod.rs | 42 ++ .../src/script/messageframe/plain.rs | 71 ++- .../src/script/messageframe/scrolling.rs | 15 +- crates/benilla-ui/src/script/tests/anchors.rs | 2 +- 35 files changed, 735 insertions(+), 2106 deletions(-) delete mode 100644 crates/benilla-app/assets/ui/ComboFrame.xml delete mode 100644 crates/benilla-app/assets/ui/DurabilityFrame.xml delete mode 100644 crates/benilla-app/assets/ui/GameTime.xml delete mode 100644 crates/benilla-app/assets/ui/ItemRef.xml delete mode 100644 crates/benilla-app/assets/ui/ItemTextFrame.xml delete mode 100644 crates/benilla-app/assets/ui/MirrorTimer.xml delete mode 100644 crates/benilla-app/assets/ui/ZoneText.xml diff --git a/crates/benilla-app/assets/ui/ChatFrame.xml b/crates/benilla-app/assets/ui/ChatFrame.xml index 734e2e3c..563db094 100644 --- a/crates/benilla-app/assets/ui/ChatFrame.xml +++ b/crates/benilla-app/assets/ui/ChatFrame.xml @@ -847,7 +847,7 @@ -- declared width as `noResize` + a fixed list width (UIDropDownMenu.xml l.672-679), -- so transcribing it would pin the menu at 50 px and cut "Background" in half. In the -- reference, MENU mode never draws the capsule at all, so its width is inert there. - -- `BenillaFriendsDropDown` (FriendsFrame.xml) is already this same shape. + -- `FriendsDropDown` (FriendsFrame.xml) is already this same shape. function FCFOptionsDropDown_OnLoad() this.initialize = FCFOptionsDropDown_Initialize this.displayMode = "MENU" diff --git a/crates/benilla-app/assets/ui/ComboFrame.xml b/crates/benilla-app/assets/ui/ComboFrame.xml deleted file mode 100644 index 020b9aba..00000000 --- a/crates/benilla-app/assets/ui/ComboFrame.xml +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - this:RegisterEvent("PLAYER_TARGET_CHANGED"); - this:RegisterEvent("PLAYER_COMBO_POINTS"); - ComboPoint1Highlight:SetAlpha(0); - ComboPoint1Shine:SetAlpha(0); - - - ComboPointsFrame_OnEvent(); - - - - - - diff --git a/crates/benilla-app/assets/ui/DurabilityFrame.xml b/crates/benilla-app/assets/ui/DurabilityFrame.xml deleted file mode 100644 index a5850189..00000000 --- a/crates/benilla-app/assets/ui/DurabilityFrame.xml +++ /dev/null @@ -1,324 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - this:SetFrameLevel(this:GetFrameLevel() - 1) - this:RegisterEvent("UPDATE_INVENTORY_ALERTS") - this:RegisterEvent("PLAYER_ENTERING_WORLD") - - - DurabilityFrame_SetAlerts() - -- benilla re-manages the HUD right-stack on every alert recompute. The ref keeps - -- the durability seat (and the quest tracker stacked under it) fresh because it - -- fires UIParent_ManageFramePositions from dozens of OnShow/OnHide sites; benilla - -- fires it from only a handful, so a showSeparate glyph that arrives AFTER the - -- frame is already shown — equipment streams in per-slot at login, the weapon - -- often breaking before the shield's slot lands — would otherwise leave - -- durabilityOffset stale and hang the shield off the screen's right edge - -- (director-caught). SetAlerts's own Show()/Hide() only re-manages on a - -- shown-state transition, which a mere glyph-set change is not. - UIParent_ManageFramePositions() - - - UIParent_ManageFramePositions() - - - UIParent_ManageFramePositions() - - - - diff --git a/crates/benilla-app/assets/ui/Fonts.xml b/crates/benilla-app/assets/ui/Fonts.xml index cbacae2e..83894284 100644 --- a/crates/benilla-app/assets/ui/Fonts.xml +++ b/crates/benilla-app/assets/ui/Fonts.xml @@ -135,10 +135,31 @@ -- iterates it). Still zero corpus addons, so the demand here is ours, not theirs. CHAT_FONT_HEIGHTS = { 12, 14, 16, 18 } - -- The two OTHER tables the reference's Fonts.xml ` diff --git a/crates/benilla-app/assets/ui/FriendsFrame.xml b/crates/benilla-app/assets/ui/FriendsFrame.xml index e9baaa03..155a1b8a 100644 --- a/crates/benilla-app/assets/ui/FriendsFrame.xml +++ b/crates/benilla-app/assets/ui/FriendsFrame.xml @@ -36,7 +36,7 @@ GuildRegistrar / PetitionFrame / TabardFrame, no charter or emblem path. Nothing in it is reachable until you are IN a guild, which is what this file now covers. · The row right-click menu IS the shared UnitPopup "FRIEND" menu, addressed by name - (see `BenillaFriendsFrame_ShowDropdown`). Its TARGET row stays hidden by UnitPopup's + (see `FriendsFrame_ShowDropdown`). Its TARGET row stays hidden by UnitPopup's own deferred set; its GUILD_PROMOTE/GUILD_LEAVE rows are live but gate themselves on `GuildFrame:IsVisible()`, so a friends-list or /who row still opens Whisper / Invite / Cancel and a guild roster row opens more. @@ -274,6 +274,16 @@ end -- ── The row right-click menu (ref FriendsFrame_ShowDropdown l.35-47) ─────────────────── + -- **The reference's own names, in the reference's own file, since 1751 window 6.** These + -- three carried a `Benilla` prefix for one reason: our ItemRef.xml declared a second + -- private copy of the same pair under the plain names, loaded 262 entries earlier, and + -- two definitions of one name is the collision this manifest's order exists to settle. + -- That window is the reference's own file now and its `SetItemRef` calls + -- `FriendsFrame_ShowDropdown` by name — so the duplicate is deleted, the one body answers + -- to the name its home file publishes in 1.12, and `FriendsDropDown` is seated where the + -- reference seats it (which retired a `frame_flag_gate` KNOWN entry whose whole reasoning + -- was that forward-parent problem). + -- A row's right-click opens the shared UnitPopup "FRIEND" menu addressed by NAME rather -- than by a unit token — which is the whole reason that menu exists: a friend or a /who -- hit is a name with no unit behind it (they need not even be in the world). The kit @@ -282,22 +292,23 @@ -- -- `connected` gates the whole menu, ref-verbatim: there is nothing to offer an offline -- player. A /who hit is by definition online, so that call passes 1. - function BenillaFriendsFrame_ShowDropdown(name, connected) + function FriendsFrame_ShowDropdown(name, connected) HideDropDownMenu(1) if not connected or not name or name == "" then return end - BenillaFriendsDropDown.initialize = BenillaFriendsFrameDropDown_Initialize - BenillaFriendsDropDown.displayMode = "MENU" - BenillaFriendsDropDown.name = name - ToggleDropDownMenu(1, nil, BenillaFriendsDropDown, "cursor") + FriendsDropDown.initialize = FriendsFrameDropDown_Initialize + FriendsDropDown.displayMode = "MENU" + FriendsDropDown.name = name + ToggleDropDownMenu(1, nil, FriendsDropDown, "cursor") end - function BenillaFriendsFrameDropDown_Initialize() + function FriendsFrameDropDown_Initialize() UnitPopup_ShowMenu(getglobal(UIDROPDOWNMENU_OPEN_MENU), "FRIEND", nil, - BenillaFriendsDropDown.name) + FriendsDropDown.name) end + -- ── The window's repaint (ref FriendsFrame_Update l.81-126) ──────────────────────────── -- Each tab swaps the four corner art textures as well as the sub-frame: the ref reuses one -- 384x512 window shell for lists that want different bottom art. @@ -820,7 +831,7 @@ local guildIndex = this.guildIndex local name, rank, rankIndex, level, class, zone, note, officernote, online = GetGuildRosterInfo(guildIndex) - BenillaFriendsFrame_ShowDropdown(name, online) + FriendsFrame_ShowDropdown(name, online) return end GuildFrame.previousSelectedGuildMember = GuildFrame.selectedGuildMember @@ -1308,7 +1319,7 @@ function FriendsFrameFriendButton_OnClick(button) if button == "RightButton" then local name, _, _, _, connected = GetFriendInfo(this:GetID()) - BenillaFriendsFrame_ShowDropdown(name, connected) + FriendsFrame_ShowDropdown(name, connected) return end SetSelectedFriend(this:GetID()) @@ -1324,7 +1335,7 @@ local name = getglobal(this:GetName() .. "Name"):GetText() if button == "RightButton" then -- A /who hit is online by construction, so the menu is never gated shut here. - BenillaFriendsFrame_ShowDropdown(name, 1) + FriendsFrame_ShowDropdown(name, 1) return end WhoFrame.selectedWho = this.whoIndex @@ -2081,7 +2092,7 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - this.timeOfDay = 0; - this:SetFrameLevel(this:GetFrameLevel() + 2); - GameTimeFrame_Update(); - - - GameTooltip:SetOwner(this, "ANCHOR_BOTTOMLEFT"); - GameTimeFrame_UpdateTooltip(GetGameTime()); - - - GameTooltip:Hide(); - - - GameTimeFrame_Update(); - - - - diff --git a/crates/benilla-app/assets/ui/ItemRef.xml b/crates/benilla-app/assets/ui/ItemRef.xml deleted file mode 100644 index ba279778..00000000 --- a/crates/benilla-app/assets/ui/ItemRef.xml +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - diff --git a/crates/benilla-app/assets/ui/ItemTextFrame.xml b/crates/benilla-app/assets/ui/ItemTextFrame.xml deleted file mode 100644 index 6906cca7..00000000 --- a/crates/benilla-app/assets/ui/ItemTextFrame.xml +++ /dev/null @@ -1,416 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ItemTextFrame_OnLoad() - ItemTextFrame_OnEvent(event) - ItemTextFrame_OnUpdate(arg1) - PlaySound("igMainMenuOpen") - - CloseItemText() - PlaySound("igMainMenuClose") - - - - diff --git a/crates/benilla-app/assets/ui/MirrorTimer.xml b/crates/benilla-app/assets/ui/MirrorTimer.xml deleted file mode 100644 index 3dc1fd37..00000000 --- a/crates/benilla-app/assets/ui/MirrorTimer.xml +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - this:SetFrameLevel(this:GetFrameLevel() - 1) - - - - - - MirrorTimerFrame_OnLoad() - MirrorTimerFrame_OnEvent() - MirrorTimerFrame_OnUpdate(this, arg1) - - - - - - - - - - - - - - - - - - - - - - - - - MirrorTimerDriver_OnLoad() - MirrorTimerDriver_OnEvent() - - - diff --git a/crates/benilla-app/assets/ui/RaidFrame.xml b/crates/benilla-app/assets/ui/RaidFrame.xml index f7553390..ff5a2adb 100644 --- a/crates/benilla-app/assets/ui/RaidFrame.xml +++ b/crates/benilla-app/assets/ui/RaidFrame.xml @@ -796,7 +796,7 @@ - diff --git a/crates/benilla-app/assets/ui/UIParent.xml b/crates/benilla-app/assets/ui/UIParent.xml index 54a5e7dd..a9e2c22e 100644 --- a/crates/benilla-app/assets/ui/UIParent.xml +++ b/crates/benilla-app/assets/ui/UIParent.xml @@ -32,6 +32,8 @@ + this:RegisterEvent("VARIABLES_LOADED") + this:RegisterEvent("MIRROR_TIMER_START") this:RegisterEvent("PLAYER_ENTERING_WORLD") this:RegisterEvent("READY_CHECK") @@ -205,6 +207,32 @@ -- ~25 per-window harnesses that load this file load no bars; the binding itself is engine -- level and always installed. Decision 1500. function UIParent_OnEvent(event) + -- The reference's own first arm (UIParent.lua l.230-235). `LocalizeFrames` comes from + -- the sourced `Interface\FrameXML\Localization.xml` (1751 window 5) and is the file + -- that sets `TwentyFourHourTime` and the locale's frame adjustments; nothing called it + -- here before, which is why GameTime.xml used to set that global itself and why + -- HelpFrame.xml's header records a family of strings that never arrived. Guarded like + -- every other cross-file reach in this function: the per-window harnesses load + -- UIParent.xml with no chain behind it. `UpdateNameplates` is the ref's other call in + -- this arm and is not bound here — left absent rather than stubbed (1203). + if ( event == "VARIABLES_LOADED" ) then + if ( LocalizeFrames ) then + LocalizeFrames() + end + return + end + -- The mirror bars' START driver (ref UIParent.lua l.97 + l.374-377). It lived on a + -- hidden `MirrorTimerDriver` frame in our own MirrorTimer.xml until 1751 window 7, + -- on the reasoning that "our UIParent.xml is script-only — it has no frame of its own + -- to register events on". That stopped being true when this file grew a real UIParent + -- frame with a Scripts block, so the driver came home and the extra frame is gone. + -- `MirrorTimer_Show` is the sourced `Interface\FrameXML\MirrorTimer.lua`'s. + if ( event == "MIRROR_TIMER_START" ) then + if ( MirrorTimer_Show ) then + MirrorTimer_Show(arg1, arg2, arg3, arg4, arg5, arg6) + end + return + end if ( event == "PLAYER_ENTERING_WORLD" ) then SHOW_MULTI_ACTIONBAR_1, SHOW_MULTI_ACTIONBAR_2, SHOW_MULTI_ACTIONBAR_3, SHOW_MULTI_ACTIONBAR_4 = GetActionBarToggles() @@ -292,6 +320,88 @@ table.insert(UIPARENT_MANAGED_POSITION_LISTENERS, fn) end + -- ── GetMaterialTextColors (ref UIParent.lua l.1880-1888) ───────────────────────────── + -- + -- The page ink and the title ink for a readable's material. Transcribed here rather than + -- left absent because the sourced `Interface\FrameXML\ItemTextFrame.xml` (1751 window 9) + -- calls it, and it belongs in this file because it belongs in `UIParent.lua`. The two + -- tables it reads are the reference's own, in the reference's own home — our Fonts.xml, + -- which grew them with the same window. + -- + -- The fallback is BOTH-or-neither on purpose (the reference's own `not(a and b)`), so an + -- unrecognised material never gets one table's colour and the other's default. + function GetMaterialTextColors(material) + local textColor = MATERIAL_TEXT_COLOR_TABLE[material] + local titleColor = MATERIAL_TITLETEXT_COLOR_TABLE[material] + if ( not (textColor and titleColor) ) then + textColor = MATERIAL_TEXT_COLOR_TABLE["Default"] + titleColor = MATERIAL_TITLETEXT_COLOR_TABLE["Default"] + end + return textColor, titleColor + end + + -- ── ValidateFramePosition (ref UIParent.lua l.1513-1557) ───────────────────────────── + -- + -- Shove a frame the player has dragged mostly off the screen back on. Transcribed here + -- rather than left absent because its one caller in 1.12 is the sourced + -- `Interface\FrameXML\ItemRef.xml`'s OnDragStop (l.48) — so with that window migrated + -- (1751, window 6) a player dragging a chat-link tooltip would otherwise hit a nil global, + -- which is a raise on an ordinary gesture rather than a loud missing feature. It belongs + -- in this file because it belongs in `UIParent.lua`, which this file is our copy of. + -- + -- Verbatim, quirks included. Two are worth naming so nobody "fixes" them later: + -- · the two axes are exclusive, not additive — a frame off BOTH corners takes the + -- `not newAnchorX` branch and re-derives x from `left`, so only one axis moves per + -- drop. That is the reference's own control flow (l.1544-1548), not a transcription + -- slip. + -- · the bottom test is against `MainMenuBar:GetHeight()`, so this raises with no action + -- bar loaded. The reference has the same dependency; the harnesses that drive + -- ItemRefTooltip load ActionBar.xml for it. + function ValidateFramePosition(frame, offscreenPadding, returnOffscreen) + if ( not frame ) then + return + end + local left = frame:GetLeft() + local right = frame:GetRight() + local top = frame:GetTop() + local bottom = frame:GetBottom() + local newAnchorX, newAnchorY + if ( not offscreenPadding ) then + offscreenPadding = 15 + end + if ( top < (0 + MainMenuBar:GetHeight() + offscreenPadding) ) then + -- Off the bottom of the screen + newAnchorY = MainMenuBar:GetHeight() + frame:GetHeight() - GetScreenHeight() + elseif ( bottom > GetScreenHeight() ) then + -- Off the top of the screen + newAnchorY = 0 + end + if ( right < 0 ) then + -- Off the left of the screen + newAnchorX = 0 + elseif ( left > GetScreenWidth() ) then + -- Off the right of the screen + newAnchorX = GetScreenWidth() - frame:GetWidth() + end + if ( newAnchorX or newAnchorY ) then + if ( returnOffscreen ) then + return 1 + else + if ( not newAnchorX ) then + newAnchorX = left + elseif ( not newAnchorY ) then + newAnchorY = top - GetScreenHeight() + end + frame:ClearAllPoints() + frame:SetPoint("TOPLEFT", nil, "TOPLEFT", newAnchorX, newAnchorY) + end + else + if ( returnOffscreen ) then + return nil + end + end + end + function UIParent_ManageFramePositions() -- Frames that affect offsets in y axis local yOffsetFrames = {} diff --git a/crates/benilla-app/assets/ui/UiPanels.xml b/crates/benilla-app/assets/ui/UiPanels.xml index 13835054..0b99154c 100644 --- a/crates/benilla-app/assets/ui/UiPanels.xml +++ b/crates/benilla-app/assets/ui/UiPanels.xml @@ -972,9 +972,15 @@ -- the StaticPopupDialogs registry + StaticPopup_Show(which, arg1, arg2) + the OnUpdate -- countdown/StartDelay machinery — the death arc's dialogs exercise nearly all of it, and -- StaticPopup_Show/StaticPopupDialogs are 1.14 addon-API surface (0068). v1 scope: - -- · TWO dialog instances (STATICPOPUP_NUMDIALOGS = 2; the ref runs 4) — the deepest - -- nesting exercised so far is decline-res re-showing DEATH (Show precedes the click's - -- hide, so a free second instance is required). Grow toward 4 when a third coexists. + -- · FOUR dialog instances, the reference's own count. It was 2 for a long time, on the + -- reasoning that the deepest nesting exercised was decline-res re-showing DEATH (Show + -- precedes the click's hide, so a free second instance is required) and that it should + -- "grow toward 4 when a third coexists". 1751 window 7 supplied that third caller from + -- an unexpected direction: the reference's own `MirrorTimer_Show` bounds its free-bar + -- search by this constant rather than by `MIRRORTIMER_NUMTIMERS` (MirrorTimer.lua + -- l.32, a copy-paste from StaticPopup.lua), so at 2 the third mirror bar was + -- unreachable for a new timer. The coupling is the reference's bug and this is not the + -- file to fix it in; matching its count is. -- · info fields honored: text, button1, button2, DisplayButton2, OnShow(data), -- OnHide(data), OnAccept(data, data2) (truthy return = keep open — RECOVER_CORPSE -- waits for the server, XP_LOSS's first Accept re-asks), OnCancel(data, reason) @@ -1007,7 +1013,7 @@ -- · Resize runs per tick while shown, not only on text swaps: GetHeight's measure has a -- frame of latency (the measured-width convention below), so the height self-corrects -- the frame after any text change. - STATICPOPUP_NUMDIALOGS = 2 + STATICPOPUP_NUMDIALOGS = 4 StaticPopupDialogs = {} local function StaticPopupTimeUnit(n, minutes) @@ -2448,6 +2454,19 @@ + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ZoneSplashFrame_OnLoad(); - - - ZoneTextFrame_OnEvent(event); - - - FadingFrame_OnUpdate(); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SubZoneTextFrame_OnLoad(); - - - SubZoneTextFrame_OnEvent(); - - - FadingFrame_OnUpdate(); - - - - - - - - - - - - - - - - - - - - - - - - AutoFollowStatus_OnLoad(); - - - AutoFollowStatus_OnEvent(event); - - - AutoFollowStatus_OnUpdate(arg1); - - - - diff --git a/crates/benilla-app/assets/ui/benilla.toc b/crates/benilla-app/assets/ui/benilla.toc index 71bbf7e3..1ad9d32e 100644 --- a/crates/benilla-app/assets/ui/benilla.toc +++ b/crates/benilla-app/assets/ui/benilla.toc @@ -39,6 +39,22 @@ # The named virtual Font objects (decision 0084) — must load first so any FontString's # `inherits="GameFontNormal"` resolves against a registered object. Fonts.xml +# ══ THE LOCALE ADJUSTMENTS — the reference's own, off the player's chain (1751, window 5) ══ +# `Localize()` (which this file also CALLS at load, exactly as the reference's own two-part +# `