the unit frames are the reference's own, and the water has motes in it
- the player, party, target and pet frames are the reference's own files (`BuffFrame`, `UnitFrame`, `CombatFeedback`, `PlayerFrame`, `PartyFrame`, `TargetFrame`, `PetFrame`, in the reference's toc order) — our 2741-line `UnitFrames.xml` and our `PartyFrame.xml` are deleted; four engine verbs built for them (`PartialPlayTime`, `NoPlayTime`, `UnitPlayerControlled`, `UnitIsCivilian`, each answering 1/nil), the whole-UI load bracketed in the counted sound-suppression scope `0x48fbf0` self-brackets (the reference fires a `PlaySound` during load and throws it away), and `GetBillingTimeRested` read off `SMSG_AUTH_RESPONSE`'s third billing field rather than hardcoded; the differences the stock files bring are pinned rather than papered — `PlayerFrame` never hides, an unresolved name is BLANK not "Unknown", the target frame has no numerals at all (a bar hover pops the unit tooltip instead) - what the swap surfaced, each a hard break under the stock files: `UnitBuff`/`UnitDebuff` returned the Classic Era ten-value tuple, name first, where 1.12 returns two and three values TEXTURE first (`0x519500`/`0x5198f0`) — a raise twice per `UNIT_AURA` on any debuffed target, and all 184 corpus call sites bind the 1.12 shape; the power events are named per resource (`UNIT_MANA`/`RAGE`/`FOCUS`/`ENERGY`/`HAPPINESS` and their MAX twins) and we fired the Era pair, so no mana, rage or energy bar could live-update; `SetRaidTarget` is the engine verb and `SetRaidTargetIcon` the FrameXML toggle wrapper — we had registered the wrapper's name on the engine's body, so every raid mark in the unit popup raised - the underwater drift cloud: the reference draws a fixed 4000-mote field whenever the camera eye is inside a liquid — not a particle system, nothing spawns, ages or dies; a population scattered once into a 30 yd camera-relative cube, advected by the camera's own motion plus a gust and wrapped, so the field stands still in the world; benilla had the murk and nothing in it; a dry frame commits no draw, and the submerged one is bounded by the reference's own 666-quad cap (633–644 of 4000 measured live, which is the expected survivor count of a uniform cube through the 90° cone — an independent check on population, distribution and cone at once) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -1044,10 +1044,11 @@ mod tests {
|
||||
/// A window that reads unblocked in [`chain_gap_report`] can still fail to swap, and the third
|
||||
/// reason found (after a missing widget type and a missing widget method) is this one: our
|
||||
/// `assets/ui` file defines a global the reference defines too, our manifest loads a CHAIN file
|
||||
/// that also defines it, and whichever lands second wins. `PartyFrame.xml` is the worked
|
||||
/// example — `UnitFrames.xml` redefines `UnitFrame_OnEvent`/`UnitFrame_Update` nine manifest
|
||||
/// lines after stock `UnitFrame.lua` defines them, so a stock party row built by the
|
||||
/// reference's own `UnitFrame_Initialize` calls OUR update and indexes a field its rows do not
|
||||
/// that also defines it, and whichever lands second wins. `PartyFrame.xml` was the worked
|
||||
/// example, and it is worth keeping in the past tense because it is what this check was built
|
||||
/// to catch: our `UnitFrames.xml` redefined `UnitFrame_OnEvent`/`UnitFrame_Update` nine
|
||||
/// manifest lines after stock `UnitFrame.lua` defined them, so a stock party row built by the
|
||||
/// reference's own `UnitFrame_Initialize` called OUR update and indexed a field its rows do not
|
||||
/// carry. It loads clean and raises on the first event.
|
||||
///
|
||||
/// Shadowing is not automatically wrong — where we ship a file the reference would have
|
||||
@@ -1062,10 +1063,11 @@ mod tests {
|
||||
/// both would declare the same frames.
|
||||
///
|
||||
/// That half doubles as the map nothing else holds: `ActionBarFrame.xml` is our
|
||||
/// `ActionBar.xml`, `FloatingChatFrame.xml` is our `ChatFrame.xml`, `PlayerFrame.xml` and
|
||||
/// `TargetFrame.xml` and `PetFrame.xml` are all our one `UnitFrames.xml`,
|
||||
/// `ActionBar.xml`, `FloatingChatFrame.xml` is our `ChatFrame.xml`,
|
||||
/// `MainMenuBarMicroButtons.xml` is our `MicroMenu.xml`, `StaticPopup.xml` is our
|
||||
/// `UiPanels.xml`. `chain_gap_report` calls several of those unblocked, and they are —
|
||||
/// `UiPanels.xml`. (The row this map used to lead with — `PlayerFrame.xml`/`TargetFrame.xml`/
|
||||
/// `PetFrame.xml` all being our one `UnitFrames.xml` — is retired: those four are the
|
||||
/// reference's own files now, 1751.) `chain_gap_report` calls several of those unblocked, and they are —
|
||||
/// individually. They just cannot load beside the file of ours already holding their names.
|
||||
///
|
||||
/// Run it before attempting a swap. It predicts which ones will fail without attempting them.
|
||||
@@ -1083,8 +1085,10 @@ mod tests {
|
||||
// and missed the case it was built for), because a reference can live in any file. A
|
||||
// declaration cannot.
|
||||
//
|
||||
// What it catches: our `UnitFrames.xml` declares `PetFrame`, and so does the stock
|
||||
// `PetFrame.xml`. Adding that stock file alongside ours would declare the name twice.
|
||||
// What it catches, in the case it was built for: our `UnitFrames.xml` declared `PetFrame`,
|
||||
// and so does the stock `PetFrame.xml`, so adding that stock file alongside ours would have
|
||||
// declared the name twice. (That pair is resolved — ours is deleted — but the check is not
|
||||
// about those two files; every window still ahead of 1751 has the same collision waiting.)
|
||||
// Several stock windows we do not ship under their own name have an equivalent of ours
|
||||
// under a different one, and `chain_gap_report` calls every one of them unblocked —
|
||||
// truthfully, because the stock file WOULD load; it just cannot load *beside* ours.
|
||||
@@ -1442,17 +1446,6 @@ mod tests {
|
||||
"the twin of the line above, `QuestLogFrame.lua:107`, called on the next line \
|
||||
(`QuestTimerFrame.lua:44`).",
|
||||
),
|
||||
(
|
||||
"UnitFrame.xml",
|
||||
"UnitPlayerControlled",
|
||||
"an engine binding, and the most reachable gap here: `UnitFrame_OnEnter` \
|
||||
(`UnitFrame.lua:62`) calls it while HOVERING any unit frame, behind \
|
||||
`SHOW_NEWBIE_TIPS == \"1\"` — which is the shipped default. wow-re has it carved \
|
||||
(`0x516410`, VERIFIED, `scratch/unit-verbs-controlled-charmed-creaturetype.md`): \
|
||||
one return, `UNIT_FIELD_FLAGS` bit 3, the DOUBLE 1.0 when set and nil when clear, \
|
||||
raising on an unrecognised token. `UnitState` carries no such flag yet, so it is \
|
||||
a field + a push + a binding — the unit frames' own slice.",
|
||||
),
|
||||
];
|
||||
|
||||
let toc = &super::super::addons::Addon::builtin().toc.files;
|
||||
|
||||
Reference in New Issue
Block a user