Add per-character spellbook collector

New Collectors/Spellbook.lua walks GetNumSpellTabs() and emits one entry
per tab with name, texture, offset, numSpells, and a spells[] array of
{ slot, name, rank, spellID, icon }.

3.3.5/Ascension API differences are handled defensively: name comes
from GetSpellBookItemInfo or vanilla GetSpellName; spellID is parsed
out of GetSpellLink (3.3.5 doesn't return it from GetSpellBookItemInfo);
icon falls back to GetSpellTexture if GetSpellInfo doesn't have it yet.

Wiring:
  - CoaExporter.toc: load Collectors/Spellbook.lua after Talents
  - Core.lua: AssembleExport() includes spellbook for all + spellbook
  - Core.lua: HandleExport() accepts /coae export spellbook
  - Core.lua: debug output shows tab + spell counts
  - UI/ExportFrame.lua: "Spellbook" button in the Character section
This commit is contained in:
2026-05-07 12:08:23 +02:00
parent cc5a87d2fb
commit 6badf0e7ea
5 changed files with 124 additions and 7 deletions
+3 -1
View File
@@ -44,8 +44,9 @@ Primary slash: `/coae`. Aliases: `/coaexp`, `/ascx`, `/asxc`.
### Per-character export
```
/coae export all JSON of talents + gear + mystic enchants
/coae export all JSON of talents + spellbook + gear + mystic enchants
/coae export talents JSON, talents only
/coae export spellbook JSON, full spellbook (per tab, with spellID + rank + icon)
/coae export gear JSON, gear only
/coae export enchants JSON, mystic enchants only
@@ -127,6 +128,7 @@ CoaExporter/
├── Data/ScrollCatalog.lua (auto-generated from AtlasLootAscension)
├── Collectors/ (per-character data)
│ ├── Talents.lua
│ ├── Spellbook.lua
│ ├── Gear.lua
│ ├── Enchants.lua
│ ├── MysticScrolls.lua