Reckoning
A custom achievement system for World of Warcraft TBC Classic.
Quick Start
lua
local Private = select(2, ...)
local Enums = Private.Enums
-- Register categories with IDs
Private.AchievementUtils:RegisterCategories({
{
id = 1,
name = "Dungeon",
subCategories = {
{ id = 1, name = "Normal" },
{ id = 2, name = "Heroic" }
}
},
{
id = 2,
name = "PVP"
}
})
-- Register an achievement
Private.AchievementUtils:RegisterAchievements({
{
id = 1,
name = "Shadow Labs",
description = "Defeat Murmur in Shadow Labyrinth",
points = 5,
category = 1, -- References category ID
subCategory = 1, -- References sub-category ID (optional)
icon = 136200,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "DUNGEON_BOSS_KILLED",
conditions = {
bossName = "Murmur"
}
}
}
})Core Concepts
| Concept | Description |
|---|---|
| Categories | Organize achievements into groups |
| Cadence | When achievements reset |
| Triggers | Events that advance achievements |
| Progress | Track multi-step achievements |
Categories
Categories use integer IDs for flexibility. Users can customize categories for different expansions.
lua
Private.AchievementUtils:RegisterCategories({
{ id = 1, name = "Dungeon", subCategories = {
{ id = 1, name = "Normal" },
{ id = 2, name = "Heroic" }
}},
{ id = 2, name = "PVP" },
{ id = 3, name = "Professions" },
{ id = 4, name = "Open World" },
{ id = 5, name = "Milestones" }
})Cadence
Achievements can reset on different schedules using the Enums.Cadence enum:
| Enum Value | Description |
|---|---|
Enums.Cadence.AllTime | Never resets, permanent progress |
Enums.Cadence.Weekly | Resets every Tuesday |
Enums.Cadence.OneTime | Time-limited, specific week only |
Events Overview
| Category | Events | Purpose |
|---|---|---|
| Dungeon | 5 | Boss kills, clears, mechanics |
| PVP | 7 | Kills, battlegrounds, arenas |
| Professions | 5 | Crafting, gathering, skill-ups |
| Quests | 2 | Quest completion, reputation |
| Items | 4 | Badges, keys, gear |
| World | 4 | Exploration, gold, leveling |
| Special | 1 | Weekly resets |