florian.berthold 166eb1ec5e Common.lua: fall back to player's class when entry.Class is missing
Ascension's `C_CharacterAdvancement.GetEntryByInternalID` returns the
active character's *own* class entries with `Class` empty (the API
treats the player's class as implicit), while still returning `Class`
populated for every other class.

The entry-walk gate `if entry and entry.Class then ...` was therefore
silently dropping every talent of whatever class you ran the export
on. A Venomancer alt would correctly capture the 41 *other* classes'
talents/skills but produce zero rows for Prophet itself, leaving the
db.exil.es Venomancer page perpetually missing icons for Rotting Away,
Lure, Envenomed Weapons, and friends.

Cache UnitClass("player") at the start of C.Run and substitute it for
`entry.Class` whenever that field is missing or empty. The bucketing
key in `info.cls` now matches the localized class string (consistent
with how the other 41 classes show up in CoaExporterCatalog.talents).
2026-05-09 21:11:09 +02:00

CoA Exporter

One Lua addon for Children of Ascension. Two jobs:

  1. Per-character export — your character's talents, gear, mystic enchants, and the full mystic-scroll tooltip DB. Output as JSON or Wiki.js Markdown for guides on the guild wiki / exil.es.
  2. Game-data catalog dump — every skill, level passive, dispel, and talent-tree node for all 21 CoA classes. Feeds db.exil.es and the talent calculator.

Built for Ascension WotLK 3.3.5 and depends on Ascension's C_CharacterAdvancement / C_MysticEnchant APIs.

This is the merged successor to:

  • ascension-char-exporter (per-character, /ascx)
  • CoA_SkillExporter (/skilldump, /dispels, /passives)
  • CoA_TalentExporter (/talentdumpall)

Install

Copy CoaExporter/ into your AddOns directory:

<wow>/Interface/AddOns/CoaExporter/CoaExporter.toc

Or, on Sub-Net's setup with the addons path symlinked:

./scripts/install_addon_sub.sh

Reload (/reload or relog) so the .toc is picked up.

Slash commands

Primary slash: /coae. Aliases: /coaexp, /ascx, /asxc.

Per-character export

/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

/coae export mdgear           Markdown gear table  (Wiki.js)
/coae export mdenchants       Markdown enchants table
/coae export mdspellbook      Markdown spellbook (one section per tab)
/coae export md               Full wiki page (header + gear + enchants + talents + spellbook)

Mystic scroll catalog (per-account, slow scan)

/coae scrolls scan            Resolve all 825 scrolls' tooltips (~20s, retries)
/coae scrolls export          JSON of the resolved cache
/coae scrolls reset           Clear the cache
/coae scrolls status          How many scrolls have been resolved

The cache lives in CoaExporterScrollCache (SavedVariables). Run scan once per account; results persist across sessions and characters.

Game-data catalog (for db.exil.es / talent-calc)

/coae catalog all             One pass: dump skills + talents
/coae catalog skills          Dump skills/dispels/passives only
/coae catalog talents         Dump talent-tree nodes only

/coae catalog dispels [class] Print dispel summary (or for one class)
/coae catalog passives [class]Print level-passive summary (or for one class)
/coae catalog status          Last scan time and counts

The catalog dump walks C_CharacterAdvancement.GetAllEntries() once and fans out to all registered collectors, so catalog all only walks the list once. After it finishes, /reload to flush the SavedVariable CoaExporterCatalog to disk; pick it up in WTF/Account/<acct>/SavedVariables/CoaExporter.lua.

The legacy slashes still work as aliases: /skilldumpcatalog skills, /talentdumpallcatalog talents, /dispels and /passives map to the catalog list helpers.

Misc

/coae sv on|off               Toggle SavedVariables snapshot of /coae export
/coae debug                   Show collector status
/coae help

UI

/coae (with no args) opens the export window. Two rows of buttons:

  • Row 1 — character: All / Talents / Gear / Enchants / MD Gear / MD Enchants / MD Full
  • Row 2 — catalogs: Catalog: Skills / Catalog: Talents / Catalog: All / Scrolls: Scan

The window is a plain copy-out box. Ctrl+C after it auto-selects the text.

SavedVariables

Key Written by Notes
CoaExporterSaved /coae export … when sv = on Latest character export, keyed by realm:name
CoaExporterConfig /coae sv on/off Just enableSavedVariables for now
CoaExporterScrollCache /coae scrolls scan Mystic scroll item tooltips
CoaExporterCatalog /coae catalog … skills, dispels, levelPassives, talents, _meta

Layout

CoaExporter/
├── CoaExporter.toc
├── Util/Json.lua
├── Data/ScrollCatalog.lua          (auto-generated from AtlasLootAscension)
├── Collectors/                      (per-character data)
│   ├── Talents.lua
│   ├── Spellbook.lua
│   ├── Gear.lua
│   ├── Enchants.lua
│   ├── MysticScrolls.lua
│   └── MysticScrollProbe.lua
├── Catalogs/                        (game-data dumps for the wiki/calc)
│   ├── Common.lua                   (one entry-walk; fans out to collectors)
│   ├── Skills.lua
│   └── Talents.lua
├── UI/ExportFrame.lua
└── Core.lua                         (slash router)

Re-generate the scroll catalog from the latest AtlasLootAscension copy:

scripts/regen_scroll_catalog.py
S
Description
In-game Lua addons that dump talents skills dispels items
Readme 121 KiB
Languages
Lua 97.2%
Python 1.9%
Shell 0.9%