# wow-Altoholic-dev
Altoholic: modified development for WotLK

## CoA fork (Exiles)

Ported for the Ascension CoA (Vol'jin) 3.3.5a client by the Exiles guild. Released as `*-coa.N` tags via Gitea Actions; see `Exiles/coa-altoholic`.

- **3.3.002b-coa.5** — Refactor + completeness pass:
  - Extracted the duplicated character header/row blocks into `Altoholic:AddCharacterTooltipHeader()` and `Altoholic:SetCharacterRowNameLevel()` — the nil-guards now live in one place instead of being copy-pasted across frames.
  - Fixed crash sites the per-frame sweep had missed: `Skills.lua` (row + skill-rank tooltip), `Keys.lua` (×3 `format` with possibly-nil name), and the latent `ShowClassIcons` sort (`Altoholic.lua` — getters bypass their own `or 0` via the DataStore wrapper).
  - Restored login scanning: `OnPlayerAlive` in `Altoholic.lua` + `DataStore_Inventory` was gated to ghost-only (commit fdcb25a), so inventory/iLvl never populated on login. Now scans once per session (still skips resurrect/Feign-Death rescans). Removed dated DEBUG leftovers.
- **3.3.002b-coa.4** — Rebranded to the Exiles fork (title `Altoholic (Exiles)`; Thaoky/Telkar-RG still credited as Author). Hardened **all** Altoholic frames against partial alt records: DataStore char-based getters return *no value* for any module that hasn't scanned a char, and the frames assumed full data everywhere. Guarded every `format`/concat/arithmetic/`pairs` site across AccountSummary, Activity, BagUsage, Quests, Reputations, TabCharacters, `DrawCharacterTooltip`, and the recipe tooltip. No DataStore contract change.
- **3.3.002b-coa.3** — More partial-record guards in `DataStore_Characters` (own alts seen via guild comm but never fully scanned):
  - `GetXPRate` — guard nil/zero `XPMax` (crashed AccountSummary; also fixes div-by-zero at max level).
  - `GetRestXPRate` — guard nil/zero `XPMax` and nil `lastLogoutTimestamp` (`nil ~= 0` was true and crashed).
- **3.3.002b-coa.2** — Defensive guards for CoA data shapes (custom classes, records seeded from guild comm before a full scan, ungeared chars). Fixes login/UI crashes:
  - `DataStore_Inventory` — `GetAverageItemLevel` returns `0` instead of `nil` (crashed the Altoholic char sort and AccountSummary iLvl format); guarded the login AIL broadcast and the `0/0` average for ungeared chars.
  - `DataStore_Pets` — `GetNumPets` returns `0` for an unscanned companion table instead of `assert`-crashing TabCharacters.
  - `DataStore_Characters` — `GetColoredCharacterName` tolerates a `nil` name (records known only via guild comm).
  - `Altoholic/Characters.lua` — `GetLineType` returns `nil` for a stale/out-of-range line id (caller already handles it) instead of indexing a nil row.
- **3.3.002b-coa.1** — Initial CoA packaging (Altoholic + Altoholic_Achievements + 16 DataStore modules).

Added "Keys" Tab for better overview of owned keys and some attunement quests.
## Changes
- [Edited Version 1.04a](https://github.com/telkar-rg/wow-Altoholic-dev/releases/tag/t1.04a)
  - Some game lag issues addressed by adjusting how some Scan functions were called by triggering Game Events

- [Edited Version 1.03a](https://github.com/telkar-rg/wow-Altoholic-dev/releases/tag/t1.03a)
  - Added source information to recipes and pets
    
- [Edited Version 1.02](https://github.com/telkar-rg/wow-Altoholic-dev/releases/tag/t1.02)
  - Small fix for "Known Pets" display (thanks to "[UsernameUsername](https://www.rising-gods.de/forum/63-programmiererecke/830273-addon-altoholic-haustier-info.html)") 

- [Edited Version 1.01](https://github.com/telkar-rg/wow-Altoholic-dev/releases/tag/t1.01)
  - Items that start Quests now show if the player has already completed them (only affects items of quality above common)

![The new "Keys" tab](https://github.com/telkar-rg/wow-Altoholic-dev/blob/main/_img/10.png?raw=true)

- [Edited Version 1.0](https://github.com/telkar-rg/wow-Altoholic-dev/releases/tag/t1.0)
  - Added "Keys" tab: will show various relevant keys or attunement quests per character in order to enter instances or allow for quicker entry.
  - Items in "Currencies" tab are now sorted by item id
  - Added button to "DataStore" options to ignore Addon-Communication from the Rising-Gods starter guilds
  - Fixed various "Source tooltip" entries (specifically for Ulduar)
  - Fixed various links between recipes and crafting spells
  - The "Hearthstone" will no longer be counted per character (as everyone has it)
  - Removed deDE mistranslation of "Mail"
  - Characters in the horizontzal tab are now sorted by average item level
  
![The new "Keys" tab](https://github.com/telkar-rg/wow-Altoholic-dev/blob/main/_img/1.png?raw=true)

- [Original 3.3.5 version](https://github.com/telkar-rg/wow-Altoholic-dev/releases/tag/r90)

## Pretty Pictures

<details>
  <summary>Key item, that requires a questline</summary>
  
  ![Mouseover Key Label](https://github.com/telkar-rg/wow-Altoholic-dev/blob/main/_img/8.png?raw=true)
  ![Mouseover Character Item](https://github.com/telkar-rg/wow-Altoholic-dev/blob/main/_img/9.png?raw=true)
</details>

<details>
  <summary>Key, that is a questline</summary>
  
  ![Mouseover Key Label](https://github.com/telkar-rg/wow-Altoholic-dev/blob/main/_img/6.png?raw=true)
  ![Mouseover Character Item](https://github.com/telkar-rg/wow-Altoholic-dev/blob/main/_img/7.png?raw=true)
</details>

<details>
  <summary>Key, that requires reputation</summary>
  
  ![Mouseover Key Label](https://github.com/telkar-rg/wow-Altoholic-dev/blob/main/_img/4.png?raw=true)
  ![Mouseover Character Item](https://github.com/telkar-rg/wow-Altoholic-dev/blob/main/_img/5.png?raw=true)
</details>

<details>
  <summary>Optional Key, for quick instance entry</summary>
  
  ![Mouseover Key Label](https://github.com/telkar-rg/wow-Altoholic-dev/blob/main/_img/2.png?raw=true)
  ![Mouseover Character Item](https://github.com/telkar-rg/wow-Altoholic-dev/blob/main/_img/3.png?raw=true)
</details>
