Show achievement names from Achievement.dbc in chat notifications

Previously "Achievement earned! (ID 1234)" was the only message. Now
loadAchievementNameCache() lazily loads Achievement.dbc (field 4 = Title,
verified against WotLK 3.3.5a binary) on first earned event and shows
"Achievement earned: Level 10" or "Player has earned the achievement: ..."
Falls back to ID if DBC is unavailable or entry is missing.
This commit is contained in:
Kelsi 2026-03-09 19:34:33 -07:00
parent e12e399c0a
commit 63c8dfa304
3 changed files with 50 additions and 6 deletions

View file

@ -1979,6 +1979,11 @@ private:
struct SpellNameEntry { std::string name; std::string rank; uint32_t schoolMask = 0; };
std::unordered_map<uint32_t, SpellNameEntry> spellNameCache_;
bool spellNameCacheLoaded_ = false;
// Achievement name cache (lazy-loaded from Achievement.dbc on first earned event)
std::unordered_map<uint32_t, std::string> achievementNameCache_;
bool achievementNameCacheLoaded_ = false;
void loadAchievementNameCache();
std::vector<TrainerTab> trainerTabs_;
void handleTrainerList(network::Packet& packet);
void loadSpellNameCache();