4c2cce979c
Macros and the action bar's queries follow 1.12.1. - Create, edit and delete fire `UPDATE_MACROS` and the edited slots' `ACTIONBAR_SLOT_CHANGED` in the reference's order, inside the call, and derive the bound spell there (`0x4f1322`, `0x4f1329`, `0x4f1313`). - A macro's spell is re-derived only at load, arrival, create and edit (`0x4efe00`'s four callers). - A rank supersede rewrites bar macros, and clears slots still on the old rank, items included (`0x4e5e60`, `0x5e6392`); an unlearn clears every slot on the spell (`0x4e5e20`). - The macro file reads and writes as `0x4f0600` and its writer do: final newlines, `END`, quote-aware names, signed ids, 255-byte lines. - Item slots answer range by their on-use spell; `ActionHasRange` tests "not below" 2^-22 (`0x4e5a50`, `0x8029d4`). A line cut that would split a UTF-8 character is a recorded Deviation. Tests pin each address. Built on macOS. Fixes #2115 Fixes #2111 Fixes #2107 Fixes #2065 Fixes #2062 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>