Commit Graph

  • f573d1ad67 TurtleWoW compat: restore OptionsFrameSliders, resolve races 9/10, append .blp to bare M2 textures, nil-safe wipe, explode + addon delimiters, CONTINENTS_LENGTH chairmanpow 2026-10-01 22:52:42 +01:00
  • 031acdd8bb Fix TurtleWoW baked NPC atlases (append .blp) plus in-progress GFX work: moonlight, torch depth, water/scene-depth, skybox chairmanpow 2026-10-01 21:40:02 +01:00
  • f22ec0016c EditBox caret keys, selection and focus blink follow 1.12.1 (#750) Sam SungandClaude Opus 5.5 2026-10-01 10:56:03 +07:00
  • be9e3d8aac Keys are named by the active layout, as 1.12.1 names them (#748) Sam SungandClaude Opus 5.5 2026-10-01 09:55:26 +07:00
  • e9f0e89a0b EditBox events fire from each box's flush, as 1.12.1 orders them (#734) Sam SungandClaude Opus 5.5 2026-10-01 07:38:38 +07:00
  • 87f65faffd fix: stamp the chat log and FrameXML.log in local time (#723) Mathih13andClaude Opus 5.5 2026-10-01 02:21:57 +02:00
  • 4772489aad Arriving bodies composite off the main thread and show once dressed (#732) Sam SungandClaude Opus 5.5 2026-09-30 20:14:10 +07:00
  • 15e83f2483 Ghost and underwater ambience beds resolve by their reference names (#731) Sam SungandClaude Sonnet 5.5 2026-09-30 19:43:09 +07:00
  • 7e117809b2 /errors: the selected error is copyable, in a read-only EditBox (#730) Sam SungandClaude Sonnet 5.5 2026-09-30 19:18:52 +07:00
  • f2e71ccebd A multi-line EditBox grows with its text; a Lua-made box draws its text (#729) Sam SungandClaude Opus 5.5 2026-09-30 18:37:30 +07:00
  • 4c18c23c94 Ambience beds stream from the archive, opened off the main thread (#725) Sam SungandClaude Opus 5.5 2026-09-30 17:22:42 +07:00
  • cd34ab77d2 /errors: put Clear and Close in the panel art's sockets (#720) Sam SungandClaude Sonnet 5.5 2026-09-30 15:31:35 +07:00
  • 2b700e6b0d gates: drop the player build that the player tests already compile (#719) Sam SungandClaude Opus 5.5 2026-09-30 14:02:12 +07:00
  • c03ca1e4be Percentage spell costs use the reference power bases (#646) 2026-09-30 09:50:40 +03:00
  • 010e41e600 unit getters: chained tokens like raid3target answer their unit (#716) Sam SungandClaude Opus 5.5 2026-09-30 13:19:48 +07:00
  • 29c1ec6f0a party: a roster packet updates each member's online bit (#714) Sam SungandClaude Opus 5.5 2026-09-30 13:02:47 +07:00
  • 2b16219357 Spell descriptions resolve $b, $f, $F, $i, $q, $u and $v (#622) 2026-09-30 08:36:29 +03:00
  • 5b3c2a98d4 pet bar: PickupPetAction needs the pet in view (#709) Sam SungandClaude Opus 5.5 2026-09-30 11:49:14 +07:00
  • 4ae99c0609 raid roster: every raid roster packet fires RAID_ROSTER_UPDATE (#708) Sam SungandClaude Opus 5.5 2026-09-30 10:58:27 +07:00
  • 0a920b52fe unit tokens: party1target and other target chains resolve (#706) Sam SungandClaude Opus 5.5 2026-09-30 10:20:16 +07:00
  • 602c30389a spell range: two running units get GetMinMaxRange's moving bonus (#702) Sam SungandClaude Opus 5.5 2026-09-30 09:59:17 +07:00
  • 79cb3b670d PARTY_MEMBERS_CHANGED fires once per SMSG_GROUP_LIST, whatever the list changes, an empty list and an identical one included: GroupState counts the lists and the feed answers each (0x5e6a40, 0x5e6b3c, 0x5e6c61) (#691) Sam SungandClaude Opus 5.5 2026-09-30 08:18:47 +07:00
  • 7623cbae11 pet bar: 0x4bcf70 is one predicate, asked by GetPetActionsUsable, every press and order, Dismiss, both autocast toggles and the drag's writes, so an unusable pet greys the bar and does nothing (#687) Sam SungandClaude Opus 5.5 2026-09-30 07:45:16 +07:00
  • 8f6d337ad6 party and raid tokens: UnitIsConnected answers 1 for a held member whatever the roster status byte says, and reads the record's online bit only with no object (0x517d50, 0x517daf, 0x517dd3) (#686) Sam SungandClaude Opus 5.5 2026-09-30 07:10:56 +07:00
  • 47794e489c pet cooldown list: Cooldowns::add drops the records that have run out before it appends, so neither list outgrows its live records, and the drop fires no flush (#685) Sam SungandClaude Opus 5.5 2026-09-30 06:59:03 +07:00
  • 3a613971bb UnitCreatureType answers the one resolver's type for every unit, so a cat-form druid or a Ghost Wolf shaman is a Beast: the snapshot takes the form, then the template, then the race (0x605570, 0x51a2bc) (#681) Sam SungandClaude Opus 5.5 2026-09-30 06:20:12 +07:00
  • 9d4b3420f3 pet bar: a spell press with no Spell.dbc record, no active player object or no pet object sends nothing and arms nothing, as the spell arm's exits do (0x4bd2e7-0x4bd34f) (#660) Sam SungandClaude Opus 5.5 2026-09-30 05:49:04 +07:00
  • 6a36d8c351 world pick: while no word carries flag 0x20, a unit the active player possesses is no candidate, beside the active player, so the cursor and click reach the unit behind it (0x480610, 0x48064f-0x480674) (#659) Sam SungandClaude Opus 5.5 2026-09-30 04:49:08 +07:00
  • 3a0728cde2 ground-targeting cursor: the range verdict takes GetMinMaxRange's bounds, so a range talent (op 5) and the caster's reaches reach it (0x6e6810, 0x6e3480) (#658) Sam SungandClaude Opus 5.5 2026-09-30 04:31:13 +07:00
  • 79dc262eea pet cooldown list: every mutation fires ACTIONBAR_UPDATE_COOLDOWN, SPELL_UPDATE_COOLDOWN and PET_BAR_UPDATE_COOLDOWN (0x4b31b0, 0x4bce90), and the SMSG_SPELL_GO pet leg no longer signals PET_BAR_UPDATE (#657) Sam SungandClaude Opus 5.5 2026-09-30 03:57:20 +07:00
  • 840719fc98 spell bind: BindTarget's party and raid arms ask 0x606c20 and 0x606d20 and CanAssist, so a group member binds Power Word: Shield, the Blessings and the Seals, and the world pick shares the party predicate (#655) Sam SungandClaude Opus 5.5 2026-09-30 03:36:20 +07:00
  • 3b3ae850fa spell range: min_max_range takes the unit target and the auto-attack target apart, so a tooltip no longer pads a ranged spell by the swing target's reach (#654) Sam SungandClaude Opus 5.5 2026-09-30 03:09:50 +07:00
  • ec5083f471 world pick: while a spell targets, a unit or player the word cannot take is no candidate, so the pick reaches the one behind it (0x481050, 0x480610) (#652) Sam SungandClaude Sonnet 5.5 2026-09-30 02:10:24 +07:00
  • 4573596e27 UnitIsConnected answers 1 for every held unit: snapshot sets it, so the pet frame's power bar reads the pet's power instead of a grey maximum (#651) Sam SungandClaude Opus 5.5 2026-09-30 01:49:11 +07:00
  • 44fb6e5e43 spell tooltip feed: each pushed view records what it read, and a change of the player's state rebuilds only the views that read it (#650) Sam SungandClaude Opus 5.5 2026-09-30 01:22:18 +07:00
  • e071b8ded3 partypetN and raidpetN unit snapshots: the getters read the held pet or its owner's record, UNIT_PET fires with the owner's token, and the stock party pet frame shows (#644) Sam SungandClaude Opus 5.5 2026-09-30 00:02:42 +07:00
  • 34d35881c2 GFX: volumetric light (sun/moon shafts) and moonlight pkuzicandClaude Opus 5.5 2026-09-29 17:31:51 +01:00
  • 72647d4ab0 GFX: volumetric light (sun/moon shafts) and moonlight pkuzicandClaude Opus 5.5 2026-09-29 17:31:51 +01:00
  • 8ef62da6ac spell bind: BindTarget's unit gates run ahead of the relation arms at the press, the click and the hover, through one creature-type resolver (#640) Sam SungandClaude Opus 5.5 2026-09-29 23:31:30 +07:00
  • 0e04e54fbf pet bar: a spell press starts the pet's global cooldown on the pet's list, as 1.12.1's spell arm does before it sends (#636) Sam SungandClaude Opus 5.5 2026-09-29 22:11:40 +07:00
  • 66340800a9 unit tokens: partypetN and raidpetN resolve to the member's held pet, tested before party and raid, and the reach feeds cover them (#635) Sam SungandClaude Opus 5.5 2026-09-29 21:36:15 +07:00
  • f768cf3e60 CastSpellByName's onSelf and CastSpell's third argument cast the spell at the player, the pet book's at the player too, read through GetBoolOrDefault as the reference does (#634) Sam SungandClaude Opus 5.5 2026-09-29 21:11:47 +07:00
  • 666300c6a5 doodad anim gate: a meshed host is drawn only while its fade sphere intersects the world camera's frustum, like a meshless one (#633) Sam SungandClaude Opus 5.5 2026-09-29 20:35:20 +07:00
  • cd441385c7 zone music: a start that plays nothing leaves the pump armed, so the next frame retries with a fresh pick, and a bad path warns once (#632) Sam SungandClaude Opus 5.5 2026-09-29 20:05:34 +07:00
  • 06f9cc93df char create: the CharBaseInfo guard requires every shipped race/class pair and lets a patch add more, as the class-list builder lists every row (#631) Sam SungandClaude Opus 5.5 2026-09-29 19:52:19 +07:00
  • 6e9e5e995d ui_dialog_verbs: a battleground's run time is the time since its status plus the wire's elapsed ms, read forwards so no Instant precedes the clock's origin (#630) Sam SungandClaude Opus 5.5 2026-09-29 19:34:39 +07:00
  • 57f33aa620 guild roster: zone and class keys order a miss after every name and NaN days get a place, so the comparator is a total order (#629) Sam SungandClaude Opus 5.5 2026-09-29 19:25:44 +07:00
  • 45825b0609 ui_battlefield: a queued battleground's time waited is the time since the status plus the wire's waited ms, computed forwards so no Instant precedes the clock's origin (#628) Sam SungandClaude Opus 5.5 2026-09-29 19:17:58 +07:00
  • 61f17d46c3 who_sort: the class, race and zone arms order a miss after every resolved name and tie two misses, a total order sort_by can take (#626) Sam SungandClaude Opus 5.5 2026-09-29 19:08:28 +07:00
  • b065554f4b config.toml saves one quiet second after a change, not only on the exit frame, and a unit test resolves no state folder unless it pins BENILLA_HOME (#625) Sam SungandClaude Opus 5.5 2026-09-29 18:50:38 +07:00
  • b26f7c1f20 terrain_stream: a placement or WMO prop whose model load failed is retired as resolved, so it stops counting as pending and the loading screen clears (#624) Sam SungandClaude Opus 5.5 2026-09-29 18:34:03 +07:00
  • 5d25ac9286 entities: a torn-down net unit gets no new visual work (attach, rebuild, re-dress, re-seat, held items), so no command lands on a despawned unit (#623) Sam SungandClaude Opus 5.5 2026-09-29 18:20:17 +07:00
  • d4c280d2b1 Caps Lock remapped to Escape (X11 caps:escape) acts as Escape on Linux, as in the real client (#602) 2026-09-29 12:19:26 +02:00
  • f000aa0128 The pet bar's, pet book's and pet-learn trainer's spell tooltips are built against the pet: its level scales the per-level terms, cost and cast time, and its base mana is the percentage cost's basis (#606) Sam SungandClaude Opus 5.5 2026-09-29 16:31:47 +07:00
  • e4b06c5c2f The battleground queue slots answer "none" from the first frame, so a party login no longer breaks BattlefieldFrame_Update (#603) Sam SungandClaude Opus 5.5 2026-09-29 15:53:20 +07:00
  • ca7111ed1a What 1.12.1 lacks lives on top of benilla, which opens a piece of itself to a crate only when its own 1.12.1 work creates it, and loads whatever the stock client loads from a patch (#597) Sam SungandClaude Opus 5.5 2026-09-29 14:49:51 +07:00
  • 91cd43c88d fix: apply per-level scaling to spell descriptions (#579) 2026-09-29 10:46:12 +03:00
  • 084354c231 Spell text keeps "every 1 second": the $l plural keying on every token is recorded as a deviation (#595) Sam SungandClaude Opus 5.5 2026-09-29 13:56:56 +07:00
  • 4f86560b4a fix: spell modifiers (#554) 2026-09-29 09:08:34 +03:00
  • 5757ab2334 fix: send no repair-all at a vendor that does not repair (#561) Mathih13andClaude Opus 5.5 2026-09-29 07:59:54 +02:00
  • 34b7c30af2 The core loads the chain's Bindings.xml and DefaultBindings.wtf, and every command runs its stock body (#587) Sam SungandClaude Opus 5.5 2026-09-29 10:51:21 +07:00
  • c574e20031 fix: drop the spell body from passive talent tooltips (#538) 2026-09-29 05:27:16 +02:00
  • 459e0e90c1 The stock video window's boxes are registered and ffx, ffxGlow, ffxDeath and gxMaximize work; benilla's options gain Spell Detail; load failures go to FrameXML.log (#585) Sam SungandClaude Opus 5.5 2026-09-29 10:09:02 +07:00
  • b8cb886210 fix: select the nearest enemy when a combat ability is pressed with no target (#503) 2026-09-29 04:31:42 +02:00
  • 33c2c5aa70 The fourteen missing 1.12.1 functions are defined, the keyring hover runs the stock path, and the stock CloseAllBags keeps a backpack that was open (#581) Sam SungandClaude Opus 5.5 2026-09-29 03:19:56 +07:00
  • 48afcbce0a The host's clock, zone texts, game clock and error-handler slot leave _G, and the getters over them answer the reference's shapes (#580) Sam SungandClaude Opus 5.5 2026-09-29 02:30:40 +07:00
  • 78a983b00e The VM speaks 1.12 alone: the Era globals and the uncalled hooks are gone, the engine's tooltip seams are Rust calls, strata/draw-layer/state-texture/sound/OnClick/quest-item/pickup take their 1.12 shapes, and the surface gate covers the production load (#573) Sam SungandClaude Opus 5.5 2026-09-29 01:44:52 +07:00
  • 0a1f69466c The nameplate verbs write two runtime bits, cleared at world entry, and the setting lives in FrameXML's saved variables, not two CVars (#571) Sam SungandClaude Opus 5.5 2026-09-29 01:21:17 +07:00
  • 05e204de10 benilla's layer speaks the 1.12 API alone: handlers take this and no arguments, GetBinding answers the 1.12 list, the Key Bindings page captures through its window, /errors chains the error handler, and the host hooks leave the VM (#569) Sam SungandClaude Opus 5.5 2026-09-29 00:12:27 +07:00
  • 0f36374445 The core loads the player's own FrameXML.toc in its order, and the boot VM loads no Fonts.xml (#568) Sam SungandClaude Opus 5.5 2026-09-28 23:52:14 +07:00
  • a21fb2750a The stock video options window opens, saves, restores defaults and cancels clean: its CVars are registered, spellEffectLevel drives the particle and shard rates, and the video pairs, frame enumeration and client queries are defined (#565) Sam SungandClaude Opus 5.5 2026-09-28 22:12:45 +07:00
  • 6e869eea4e The core loads the stock GameMenuFrame.xml, and the layer reshapes it in place into benilla's menu, keeping every stock rung in the chain anchored TOP (#564) Sam SungandClaude Opus 5.5 2026-09-28 22:01:24 +07:00
  • 22634279bd benilla's own interface loads as one layer after the stock FrameXML and before the addons; the core loads StatsFrame.xml and runs LocaleProperties.lua once, as FrameXML.toc does (#562) Sam SungandClaude Opus 5.5 2026-09-28 21:01:28 +07:00
  • 44fa1813ac SetCVar and RegisterCVar read their arguments as 1.12.1 does: a number as %.14g text, "0" for a value with no string form, the reference usage text, realmList/realmName/scriptMemory read-only in the world, and CVAR_UPDATE fired inside the call for every token (#557) Sam SungandClaude Opus 5.5 2026-09-28 20:19:05 +07:00
  • db94ea038e fix: show spell tooltips whole on the first hover (#472) 2026-09-28 12:36:21 +02:00
  • ae6d9f3500 MouselookStart and MouselookStop start and end mouse look with no button held, and a look session outlives losing focus with the OS cursor handed back (#534) Sam SungandClaude Opus 5.5 2026-09-28 16:07:37 +07:00
  • 0e39273f13 "mouseover" names nobody once no unit wins the hover: empty ground, a corpse or a nearer GameObject clear it, and the fading tooltip's health bar follows the unit's guid, not the token (#518) Sam SungandClaude Opus 5.5 2026-09-28 15:28:30 +07:00
  • 829194ac1a SendChatMessage sends nothing for an empty line unless its type is AFK or DND, checked after the chat type as 1.12.1 does (#499) (#505) Sam SungandClaude Opus 5.5 2026-09-28 15:09:27 +07:00
  • 6633a11d60 A dev build of a crate on top of benilla finds its install, benilla-config/ and .probe-identity in its own folder, which its build stamp hands in, not in cargo's checkout of benilla (#504) Sam SungandClaude Opus 5.5 2026-09-28 14:55:24 +07:00
  • 1a37909c9c The mouseover unit carries the hovered guid, so UnitIsUnit("mouseover", "target") answers 1 over the target: unit snapshots take their guid (#502) Sam SungandClaude Opus 5.5 2026-09-28 14:04:09 +07:00
  • bacbb791db The player's Attack runs the attack validator's target pick: a friend selected retargets the nearest enemy in call order, a corpse or a fruitless scan says "You cannot attack that target.", nothing selected and no enemy says "There is nothing to attack." (#249) (#501) Sam SungandClaude Opus 5.5 2026-09-28 13:32:22 +07:00
  • c6767d6a79 SendChatMessage resolves its language name against Languages.dbc, raising "Unknown language" on a miss, and the chat send carries that id, so a racial language picked in the chat menu is spoken (#164) (#498) Sam SungandClaude Opus 5.5 2026-09-28 13:09:44 +07:00
  • 65a5e44d48 Unit aura bindings resolve their token as 1.12.1 does, so mouseover, party1target and any casing read the unit they name (#497) Sam SungandClaude Opus 5.5 2026-09-28 12:46:33 +07:00
  • 8d31e9e91e A crate on top of benilla adds its own Bevy plugins through benilla_app::run_with, and a client started through it reads extended in its build line (#495) Sam SungandClaude Opus 5.5 2026-09-28 12:05:27 +07:00
  • 476da9b2f0 GetAuctionItemInfo names the bidder on the player's own owner-list auctions, nil until the name lands, and 1 or nil on every other row (#259) (#492) Sam SungandClaude Opus 5.5 2026-09-28 11:40:53 +07:00
  • a6cbb932fa Guid-tail channel notices are delivered through the channel stamp, so a member's join or leave, a kick, a ban and an owner or moderation change print numbered in the stock chat frame (#491) Sam SungandClaude Opus 5.5 2026-09-28 10:49:04 +07:00
  • 36b359f007 Logout and the AddOns screen's Okay write only a changed character's own enable rows, so a character with no row keeps following the realm's others (#418) (#490) Sam SungandClaude Opus 5.5 2026-09-28 10:11:40 +07:00
  • 78862ff291 UnitBuff and UnitDebuff answer for raid1-40 and raidpet1-40, each unit's list built once and shared by every token naming it (#489) Sam SungandClaude Opus 5.5 2026-09-28 09:39:51 +07:00
  • 06bc451bac The 48 movement, camera and targeting functions Bindings.xml calls are Lua globals on their keys' paths: Start/Stop hold the key's command inside a binding body, targeting and AttackTarget go through the call queue (#485) Sam SungandClaude Opus 5.5 2026-09-28 09:09:45 +07:00
  • 7362a87f95 player-tests gets the addon corpus link as $BENILLA_ADDON_CORPUS and BENILLA_REQUIRE_DATA where the corpus is, so its 30 corpus tests run and a skip fails (#482) Sam SungandClaude Opus 5.5 2026-09-28 07:41:44 +07:00
  • 208ab10cc3 EnableAllAddOns and DisableAllAddOns switch the Lua index array only, so a disable-all leaves the server-hidden Blizzard_* addons loadable (#480) Sam SungandClaude Opus 5.5 2026-09-28 07:31:16 +07:00
  • 3ed9c0b17e fix: show the repair cost on item tooltips in repair mode (#469) Mathih13andClaude Opus 5.5 2026-09-28 01:54:16 +02:00
  • e1e21d0b29 Merge graphics-programme (upstream v0.2.0 sync) into main pkuzicandClaude Opus 5.5 2026-09-27 17:53:47 +01:00
  • 51a3ef5076 Merge graphics-programme (upstream v0.2.0 sync) into main pkuzicandClaude Opus 5.5 2026-09-27 17:53:47 +01:00
  • 4e0e89cb0b MONKEY (sync-020): Update ambiguity ceiling re-measured on the v0.2.0 merge, 5,488 -> 5,509 pkuzicandClaude Opus 5.5 2026-09-27 17:53:25 +01:00
  • 884dff7747 MONKEY (sync-020): Update ambiguity ceiling re-measured on the v0.2.0 merge, 5,488 -> 5,509 pkuzicandClaude Opus 5.5 2026-09-27 17:53:25 +01:00
  • 655854c154 The zoom limit is cameraDistanceMax × cameraDistanceMaxFactor held to [0, 50] by the reference's ordered compares, cameraDistanceMax a registered CVar, and a NaN factor zooms without panicking (#475) Sam SungandClaude Opus 5.5 2026-09-27 20:40:06 +07:00
  • 0237dbd19b Geosets above 1700 stay visible, as 1.12.1 switches off only 0 to 1700: an asset pack's Night Elf eye glow on 1702 shows (#438) 2026-09-27 15:24:33 +02:00
  • bd074c3f47 After thirty idle minutes the logout warning prints once per logout: the idle leg, line and request, is skipped while a logout is pending (0x482ef5) (#474) Sam SungandClaude Opus 5.5 2026-09-27 20:07:30 +07:00
  • 03b1072220 A script's selection, cast and targeting-cursor calls apply in the order it made them, so a macro's /target then /cast casts at the new target (#473) Sam SungandClaude Opus 5.5 2026-09-27 19:48:00 +07:00