From 4eeed067a1f77f2f66e643e10235c04e55445c12 Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 25 Aug 2026 18:43:04 +0700 Subject: [PATCH] landmarks and the Plaguelands towers on the map, no ultrawide crop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - the world map's landmarks: city icons and the Eastern Plaguelands towers, from AreaPOI.dbc through the reference's own three gates (level flags, exploration, world state) — the tower rows are one per (tower, owner, state), so the server flipping a world state swaps which icon exists; and the always-up PvP readout ("Towers Controlled: n") over a new WorldStateUI.dbc loader, the init clearing the table on a zone change as the client does - the character-select scene holds its authored 4:3 view box: the diagonal-FOV relation was fed the display's aspect, so every extra pixel of width came out of height (1.55× zoom at 21:9, head and feet gone) — now width grows and height never shrinks; the reference does the same and is wrong on the same panel - a trail particle is stored in world space and drawn raw: Sprint's trail was welded to the chest bone (turn and it swings, run and it wobbles) because the trail was faked by subtracting translation inside a bone-local store; the correction machinery deleted itself, gravity is plain world down, and the emitters' live attach frame is retired - the spellbook can shrink: `SMSG_REMOVED_SPELL` had no handler, so a talent wipe took the points back and left every rank drawn; and the chat dock's hover driver rides a frame the dock cannot hide, so selecting the Combat Log no longer freezes the tab alphas Co-Authored-By: Claude Fable 5 --- crates/benilla-app/assets/ui/ChatFrame.xml | 180 +++--- .../benilla-app/assets/ui/WorldMapFrame.xml | 14 +- .../benilla-app/assets/ui/WorldStateFrame.xml | 180 ++++++ crates/benilla-app/assets/ui/benilla.toc | 5 + crates/benilla-app/src/area_poi.rs | 45 ++ crates/benilla-app/src/capture/fxview.rs | 5 +- crates/benilla-app/src/entities/attach/mod.rs | 1 - .../src/entities/equipment/spawn.rs | 1 - crates/benilla-app/src/entities/item_glow.rs | 5 +- .../benilla-app/src/entities/spell_fx/mod.rs | 17 +- crates/benilla-app/src/entities/wmo_props.rs | 1 - crates/benilla-app/src/lib.rs | 4 + crates/benilla-app/src/minimap/blips/mod.rs | 1 + crates/benilla-app/src/minimap/mod.rs | 21 +- crates/benilla-app/src/net/apply.rs | 7 +- crates/benilla-app/src/net/apply/spells.rs | 37 ++ crates/benilla-app/src/net/apply/world.rs | 10 +- crates/benilla-app/src/portrait/booth.rs | 2 - crates/benilla-app/src/portrait/framing.rs | 101 +++ crates/benilla-app/src/portrait/glue_booth.rs | 10 +- crates/benilla-app/src/ui_chat.rs | 4 + crates/benilla-app/src/ui_chat/tests.rs | 94 +++ .../benilla-app/src/ui_script/chat_tests.rs | 134 ++++ crates/benilla-app/src/ui_script/mod.rs | 2 + crates/benilla-app/src/ui_script/session.rs | 6 + .../src/ui_script/world_state_tests.rs | 263 ++++++++ crates/benilla-app/src/ui_talent.rs | 15 + crates/benilla-app/src/ui_world_map.rs | 578 +++++++++++++++++- crates/benilla-app/src/world_state.rs | 69 ++- crates/benilla-app/src/world_state_ui.rs | 505 +++++++++++++++ crates/benilla-formats/src/area_poi.rs | 28 +- crates/benilla-formats/src/area_table.rs | 31 +- crates/benilla-formats/src/lib.rs | 2 + crates/benilla-formats/src/world_state_ui.rs | 297 +++++++++ crates/benilla-protocol/src/events.rs | 4 + crates/benilla-protocol/src/events/decode.rs | 3 + .../benilla-protocol/src/messages/opcode.rs | 6 + .../benilla-protocol/src/messages/packet.rs | 7 + crates/benilla-protocol/src/messages/parse.rs | 3 + .../src/messages/spellbook.rs | 29 + .../src/messages/world_state.rs | 15 +- crates/benilla-ui/src/script/mod.rs | 3 + crates/benilla-ui/src/script/model.rs | 4 + crates/benilla-ui/src/script/worldmap.rs | 36 +- crates/benilla-ui/src/script/worldstate.rs | 144 +++++ crates/benilla-world/src/map_proj.rs | 18 + crates/benilla-world/src/particles.rs | 72 +-- crates/benilla-world/src/particles/model.rs | 5 +- crates/benilla-world/src/particles/quads.rs | 17 +- crates/benilla-world/src/particles/sim.rs | 337 ++++------ .../src/terrain_stream/spawn/fx.rs | 1 - 51 files changed, 2871 insertions(+), 508 deletions(-) create mode 100644 crates/benilla-app/assets/ui/WorldStateFrame.xml create mode 100644 crates/benilla-app/src/area_poi.rs create mode 100644 crates/benilla-app/src/ui_script/world_state_tests.rs create mode 100644 crates/benilla-app/src/world_state_ui.rs create mode 100644 crates/benilla-formats/src/world_state_ui.rs create mode 100644 crates/benilla-ui/src/script/worldstate.rs diff --git a/crates/benilla-app/assets/ui/ChatFrame.xml b/crates/benilla-app/assets/ui/ChatFrame.xml index ab032e35..2903da6b 100644 --- a/crates/benilla-app/assets/ui/ChatFrame.xml +++ b/crates/benilla-app/assets/ui/ChatFrame.xml @@ -269,8 +269,9 @@ -- FCF_SelectDockFrame: show the selected frame, hide the other; selected tab full alpha, -- unselected half (both still scaled by the reveal fade below). Stops the selected tab's - -- whisper flash (ref FCF_SelectDockFrame → UIFrameFlashRemoveFrame). Tab getglobals are - -- guarded: window 2's tab is deliberately unbuilt (see the note at the tab section). + -- whisper flash (ref FCF_SelectDockFrame → UIFrameFlashRemoveFrame). The tab getglobal + -- stays guarded: both dock tabs exist (1575), but the guard also covers ChatFrame3..7, + -- which have no tabs at all and which the error above is what actually keeps out. function BenillaFCF_SelectDock(id) BenillaFCF.selected = id for i = 1, 2 do @@ -687,21 +688,34 @@ - - - - - - - + @@ -851,13 +865,12 @@ SubmitChatInput stands in for ChatEdit_SendText: the grammar behind it is Rust (0881), which is the only part of that chain we replace. --> - this:RegisterEvent("EXECUTE_CHAT_LINE") + if this:GetID() == 1 then this:RegisterEvent("EXECUTE_CHAT_LINE") end if event == "EXECUTE_CHAT_LINE" then SubmitChatInput(arg1) end - FCF_OnUpdate(arg1) ChatFrame_OnUpdate(arg1) @@ -874,92 +887,51 @@ - -