Examples
Real achievement examples based on the achievement sheet.
Category Setup
lua
local Private = select(2, ...)
local Enums = Private.Enums
-- Define categories (users can customize for different expansions)
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"
}
})Dungeon Achievements
Boss Kill (Normal)
lua
{
id = 1,
name = "Shadow Labs",
description = "Defeat Murmur in Shadow Labyrinth on Normal Difficulty",
points = 5,
category = 1,
subCategory = 1,
icon = 136200,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "DUNGEON_BOSS_KILLED",
conditions = {
bossName = "Murmur",
instance = "Shadow Labyrinth",
difficulty = Enums.Difficulty.Normal
}
}
}Boss Kill (Heroic)
lua
{
id = 2,
name = "Big Boom",
description = "Kill Murmur in Heroic Shadow Labyrinth",
points = 20,
category = 1,
subCategory = 2,
icon = 136200,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "DUNGEON_BOSS_KILLED",
conditions = {
bossName = "Murmur",
difficulty = Enums.Difficulty.Heroic
}
}
}Timed Kill
lua
{
id = 3,
name = "Strikes at Midnight",
description = "Defeat Attumen the Huntsman in 70 seconds",
points = 20,
category = 1,
icon = 132160,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "DUNGEON_BOSS_KILLED",
conditions = {
bossName = "Attumen the Huntsman",
duration = function(d) return d <= 70 end
}
}
}Mechanic Avoidance
lua
{
id = 4,
name = "Flame Warden",
description = "Defeat Shade of Aran without moving during Flame Wreath",
points = 25,
category = 1,
icon = 135789,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "DUNGEON_BOSS_KILLED",
conditions = {
bossName = "Shade of Aran"
}
},
failCondition = {
event = "DUNGEON_MECHANIC_FAILED",
conditions = {
mechanicName = "Flame Wreath"
}
}
}Deathless Clear
lua
{
id = 5,
name = "No One Dies Tonight",
description = "Finish any Heroic without a single Party Death",
points = 20,
category = 1,
subCategory = 2,
icon = 136168,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "DUNGEON_CLEARED",
conditions = {
difficulty = Enums.Difficulty.Heroic,
totalDeaths = 0
}
}
}Weekly Dungeon Count
lua
{
id = 6,
name = "Weekly Warrior",
description = "Complete 25 Heroic Dungeons this week",
points = 50,
category = 1,
subCategory = 2,
icon = 136168,
cadence = Enums.Cadence.Weekly,
trigger = {
event = "DUNGEON_CLEARED",
conditions = {
difficulty = Enums.Difficulty.Heroic
}
},
progress = {
type = "count",
required = 25
}
}PVP Achievements
Honorable Kills Milestone
lua
{
id = 100,
name = "5000 Honorable Kills",
description = "Earn 5000 Honorable Kills",
points = 50,
category = 2,
icon = 132485,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "PVP_KILL"
},
progress = {
type = "count",
required = 5000
}
}Class Diversity
lua
{
id = 101,
name = "That Takes Class",
description = "Get a Killing Blow on each class",
points = 20,
category = 2,
icon = 132485,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "PVP_KILLING_BLOW",
criteriaSet = {
{ victimClass = Enums.Class.Warrior },
{ victimClass = Enums.Class.Paladin },
{ victimClass = Enums.Class.Hunter },
{ victimClass = Enums.Class.Rogue },
{ victimClass = Enums.Class.Priest },
{ victimClass = Enums.Class.Shaman },
{ victimClass = Enums.Class.Mage },
{ victimClass = Enums.Class.Warlock },
{ victimClass = Enums.Class.Druid }
}
}
}Battleground Wins
lua
{
id = 102,
name = "Warsong Warrior",
description = "Win 6 Warsong Gulch Matches",
points = 20,
category = 2,
icon = 132485,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "BATTLEGROUND_MATCH_END",
conditions = {
battleground = "Warsong Gulch",
result = Enums.BattlegroundResult.Victory
}
},
progress = {
type = "count",
required = 6
}
}Arena Rating
lua
{
id = 103,
name = "Arena Champion",
description = "Earn a 1850 Rating in any arena Bracket",
points = 50,
category = 2,
icon = 132485,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "ARENA_RATING_MILESTONE",
conditions = {
rating = function(r) return r >= 1850 end
}
}
}Arena Bracket Specific
lua
{
id = 104,
name = "2v2 Specialist",
description = "Win 50 2v2 Arena Matches",
points = 30,
category = 2,
icon = 132485,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "ARENA_MATCH_END",
conditions = {
bracket = Enums.ArenaBracket.TwoVTwo,
result = Enums.BattlegroundResult.Victory
}
},
progress = {
type = "count",
required = 50
}
}Objective Captures
lua
{
id = 105,
name = "Flag Runner",
description = "Capture 50 flags in WSG",
points = 30,
category = 2,
icon = 132485,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "PVP_OBJECTIVE_CAPTURED",
conditions = {
objectiveType = Enums.ObjectiveType.Flag,
location = "Warsong Gulch"
}
},
progress = {
type = "count",
required = 50
}
}Profession Achievements
Crafting Count
lua
{
id = 200,
name = "Master Alchemist",
description = "Craft 500 Haste Potions",
points = 30,
category = 3,
icon = 136240,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "ITEM_CRAFTED",
conditions = {
itemName = "Haste Potion"
}
},
progress = {
type = "count",
required = 500
}
}Gathering
lua
{
id = 201,
name = "Outland Herbalist",
description = "Gather 5000 herbs in Outland",
points = 30,
category = 3,
icon = 136065,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "RESOURCE_GATHERED",
conditions = {
gatherType = Enums.GatherType.Herbalism
}
},
progress = {
type = "count",
required = 5000
}
}Skill Milestone
lua
{
id = 202,
name = "Master Blacksmith",
description = "Reach 375 Blacksmithing",
points = 20,
category = 3,
icon = 136241,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "SKILL_UP",
conditions = {
profession = Enums.Profession.Blacksmithing,
newLevel = 375
}
}
}Fishing
lua
{
id = 203,
name = "Master Angler",
description = "Catch 1000 fish",
points = 30,
category = 3,
icon = 133888,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "FISH_CAUGHT"
},
progress = {
type = "count",
required = 1000
}
}Weekly Gathering
lua
{
id = 204,
name = "Weekly Herbalist",
description = "Gather 200 herbs this week",
points = 30,
category = 3,
icon = 136065,
cadence = Enums.Cadence.Weekly,
trigger = {
event = "RESOURCE_GATHERED",
conditions = {
gatherType = Enums.GatherType.Herbalism
}
},
progress = {
type = "count",
required = 200
}
}Open World Achievements
Reputation
lua
{
id = 300,
name = "Sha'tar Champion",
description = "Reach Exalted with the Sha'tar",
points = 30,
category = 4,
icon = 134939,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "REPUTATION_GAINED",
conditions = {
faction = "The Sha'tar",
standing = Enums.Standing.Exalted
}
}
}Quest Count
lua
{
id = 301,
name = "Loremaster",
description = "Complete 500 quests",
points = 50,
category = 4,
icon = 134939,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "QUEST_COMPLETED"
},
progress = {
type = "count",
required = 500
}
}Kill Count
lua
{
id = 302,
name = "Monster Slayer",
description = "Kill 5000 creatures",
points = 30,
category = 4,
icon = 132366,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "CREATURE_KILLED"
},
progress = {
type = "count",
required = 5000
}
}Milestone Achievements
Badge Collection
lua
{
id = 400,
name = "Badge Collector",
description = "Collect 50 Badges of Justice",
points = 30,
category = 5,
icon = 133585,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "BADGE_EARNED"
},
progress = {
type = "count",
required = 50
}
}Key Collection
lua
{
id = 401,
name = "Keymaster",
description = "Obtain all Heroic keys",
points = 30,
category = 5,
icon = 134237,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "KEY_OBTAINED",
conditions = {
keyType = Enums.KeyType.Heroic
},
criteriaSet = {
{ keyName = "Flamewrought Key" },
{ keyName = "Reservoir Key" },
{ keyName = "Auchenai Key" },
{ keyName = "Warpforged Key" },
{ keyName = "Key of Time" }
}
}
}Epic Gearing
lua
{
id = 402,
name = "Epic Adventurer",
description = "Equip 10 epic items",
points = 30,
category = 5,
icon = 133585,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "EPIC_GEAR_EQUIPPED"
},
progress = {
type = "count",
required = 10
}
}Gold Milestone
lua
{
id = 403,
name = "Wealthy",
description = "Reach 10,000 gold",
points = 30,
category = 5,
icon = 133784,
cadence = Enums.Cadence.AllTime,
trigger = {
event = "GOLD_MILESTONE",
conditions = {
amount = function(g) return g >= 10000 end
}
}
}