From 8ae42cc7ab7eadb8474f3fb920d6568dd9130ecb Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 31 Aug 2026 20:16:49 +0700 Subject: [PATCH] 71 more key commands, and the quest windows wear the reference's names MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - the binding registry goes 130 → 201 of the client's 228 live commands: a coverage gate makes registered ∪ recorded-absent exactly the 1.12 surface, each absence naming the Lua globals whose arrival refutes it — which is how 37 rows whose mechanism had already landed came home (the keyring, the pet book, the raid tab, the six action-bar pages, both vertical multibars) — and then four mechanisms bring 71 more: the five camera views with the reference's default table and its sixteen camera CVars read out of the binary (NextView/PrevView do NOT wrap), self-cast riding UseAction's third argument with autoSelfCast a real CVar at last, the friendly target cone / assist / last-hostile as one cycler with a side (the two sides use different deadness tests on purpose, and assist neither requires an assistable target nor swings), and REPLY2 — reply to the last person you told; the friendly cone also stops borrowing the enemy side's in-combat score bonus, which would have shoved a healer targeting you to the head of every cycle - the key names close their gaps: NUMPADEQUALS, F13-F24 and BUTTON6+ were keys the binding window listed and the file saved that the dispatcher could never press — named both ways now, with the namer and the codec structurally unable to disagree again; platform= becomes the OS gate it really is (off a Mac build the iTunes-remote category never even exists), and the Mac 1.12 slice settles that its F13 IS print-screen while F14/F15 map to UNKNOWN on purpose and stay unbindable; and the last-enemy stamp gains the four conjuncts it shipped without — you resolve, are not dead, not a ghost, not mounted, and the new target is alive-or-feigning — so TargetLastEnemy can no longer land somewhere the real client's never would - the quest windows wear the reference's names: ~40 of the quest window's globals were ours (the reference's name usually sitting in the comment beside them), its two six-item reward pools merge into the reference's single ten-item run with the update function ported line-for-line, the four panels and the quest log take REAL scroll frames (the thumb drags now), the gossip window gets its greeting panel, the two mail panes' inert painted-at-rest scrollbars become real ones, the Skills detail pane nests as the reference has it, and nine private constants take their real names; the one that broke a feature detect: our QuestLogCount — a name 1.12 doesn't publish — made pfUI conclude it was running on TBC and die in that branch - an EditBox is born with its constructor's five regions (the text, three selection quads and the caret), so GetRegions answers the reference's own count and authored regions start at index 6 — and a bare now builds a live blank texture, since the element is what creates the region, not its file=; OpacityFrame lands, its first customer having arrived; and the equip / auto-equip / use bind confirms complete the soulbind arc — three different predicates with no quality leg (borrowing the loot arm's would have silenced the confirm on every white bind-on-equip item), Accept re-issuing the original action with the reference's suppress flag because 1.12 ships no confirm packet, and the soulstone use going through the same gate Co-Authored-By: Claude Fable 5 --- crates/benilla-app/assets/ui/AuctionFrame.xml | 11 + .../benilla-app/assets/ui/CharacterFrame.xml | 8 +- crates/benilla-app/assets/ui/ChatFrame.xml | 10 +- .../assets/ui/ColorPickerFrame.xml | 104 +- crates/benilla-app/assets/ui/GossipFrame.xml | 360 +++--- crates/benilla-app/assets/ui/MailFrame.xml | 72 +- .../benilla-app/assets/ui/MerchantFrame.xml | 16 +- .../assets/ui/PetPaperDollFrame.xml | 4 +- crates/benilla-app/assets/ui/QuestFrame.xml | 871 ++++++-------- .../benilla-app/assets/ui/QuestLogFrame.xml | 427 +++---- .../benilla-app/assets/ui/ScrollTemplates.xml | 8 +- crates/benilla-app/assets/ui/SkillFrame.xml | 243 ++-- crates/benilla-app/assets/ui/TradeFrame.xml | 6 +- crates/benilla-app/assets/ui/UiPanels.xml | 102 ++ crates/benilla-app/src/bindings.rs | 23 +- crates/benilla-app/src/bindings/chord.rs | 189 ++- crates/benilla-app/src/bindings/commands.rs | 1064 ++++++++++++++++- crates/benilla-app/src/cvars.rs | 95 +- crates/benilla-app/src/death.rs | 13 +- crates/benilla-app/src/lib.rs | 1 + crates/benilla-app/src/player.rs | 5 + crates/benilla-app/src/player/camera_saved.rs | 11 +- crates/benilla-app/src/player/camera_view.rs | 672 +++++++++++ crates/benilla-app/src/target/by_name.rs | 66 +- crates/benilla-app/src/target/click.rs | 194 ++- crates/benilla-app/src/target/mod.rs | 26 +- crates/benilla-app/src/target/scan.rs | 720 ++++++++++- crates/benilla-app/src/ui_action/drain.rs | 62 +- crates/benilla-app/src/ui_action/mod.rs | 1 + crates/benilla-app/src/ui_bind_confirm.rs | 249 ++++ crates/benilla-app/src/ui_chat/edit.rs | 29 +- crates/benilla-app/src/ui_items/drain.rs | 959 ++++++++++++++- crates/benilla-app/src/ui_items/mod.rs | 36 + crates/benilla-app/src/ui_pet/drain.rs | 2 +- .../src/ui_script/action_bar_tests.rs | 29 +- .../src/ui_script/character_tests.rs | 10 +- .../benilla-app/src/ui_script/errors_tests.rs | 5 + .../src/ui_script/frame_flag_gate.rs | 10 +- .../src/ui_script/keybindings_tests.rs | 41 +- .../src/ui_script/multibar_stance_tests.rs | 13 +- .../benilla-app/src/ui_script/panel_tests.rs | 75 +- .../src/ui_script/pet_frame_tests.rs | 13 +- .../benilla-app/src/ui_script/quest_tests.rs | 93 +- .../src/ui_script/questlog_tests.rs | 177 ++- .../benilla-app/src/ui_script/raid_tests.rs | 8 +- .../src/ui_script/skills_frame_tests.rs | 5 + .../src/ui_script/tot_frame_tests.rs | 11 +- .../src/ui_script/unit_frame_tests.rs | 12 +- crates/benilla-app/src/ui_unit.rs | 6 +- crates/benilla-app/tests/character_stats.rs | 2 +- .../src/messages/update_object/fields/unit.rs | 11 + crates/benilla-ui/src/bindings_xml.rs | 34 +- crates/benilla-ui/src/loader/regions.rs | 47 +- crates/benilla-ui/src/loader/tests.rs | 49 + crates/benilla-ui/src/loader/widgets.rs | 29 +- crates/benilla-ui/src/script/action.rs | 75 +- crates/benilla-ui/src/script/bind_confirm.rs | 156 +++ crates/benilla-ui/src/script/camera_view.rs | 193 +++ crates/benilla-ui/src/script/editbox.rs | 52 +- crates/benilla-ui/src/script/editbox/tests.rs | 81 ++ crates/benilla-ui/src/script/keybind.rs | 61 +- crates/benilla-ui/src/script/mod.rs | 15 +- crates/benilla-ui/src/script/model.rs | 49 +- crates/benilla-ui/src/script/tick.rs | 22 + crates/benilla-ui/src/script/unit/bindings.rs | 86 +- crates/benilla-ui/src/script/unit/mod.rs | 39 +- crates/benilla-ui/src/script/unit/tests.rs | 55 +- crates/benilla-ui/src/widget/kinds/editbox.rs | 38 +- crates/benilla-ui/src/widget/mod.rs | 47 + 69 files changed, 6829 insertions(+), 1479 deletions(-) create mode 100644 crates/benilla-app/src/player/camera_view.rs create mode 100644 crates/benilla-app/src/ui_bind_confirm.rs create mode 100644 crates/benilla-ui/src/script/bind_confirm.rs create mode 100644 crates/benilla-ui/src/script/camera_view.rs diff --git a/crates/benilla-app/assets/ui/AuctionFrame.xml b/crates/benilla-app/assets/ui/AuctionFrame.xml index 0871b86c..9ca49c73 100644 --- a/crates/benilla-app/assets/ui/AuctionFrame.xml +++ b/crates/benilla-app/assets/ui/AuctionFrame.xml @@ -105,6 +105,17 @@ -->