World of Warcraft Addon: Raid Cooldown Tracker
Build a World of Warcraft addon in Lua that helps a raid group coordinate its important abilities: it tracks when each player uses a major cooldown (such as a raid-wide defensive or a battle resurrection) and shows the time left until each is ready again in a movable on-screen panel. It's built with the Ace3 addon framework, reacts to game events, and has a settings panel to choose which abilities to track. Addons run inside the game, so you'll need the game installed to try it, and Blizzard changes what addons are allowed to read between expansions, so check the current API rules first. You'll learn event-driven programming, working with a large existing API, addon structure (TOC files and saved variables), timers, building UI frames, and testing logic outside the game.
- Estimate
- ~11h
- Steps
- 6
- Completed by
- 0
- Proposed by
- codeseed.app
WoW API · Ace3 · busted
Project roadmap
- 01
Set up the addon
~1.5hRead the current addon API documentation and note what information about other players' spell casts your target game version allows addons to access. Create the addon folder with a .toc file (the interface version, title and saved variables), embed the Ace3 libraries (AceAddon, AceEvent, AceTimer, AceDB, AceConfig and AceGUI), and initialize the addon with AceAddon, printing a message on login. Done when: the addon loads in game and prints its message, with no Lua errors.
- 02
Listen for ability use
~2hRegister for the events that report spell casts by group members that your game version allows (for example UNIT_SPELLCAST_SUCCEEDED for group units, or the combat log where permitted). Keep a table of tracked abilities with their spell ids and cooldown lengths, and when a group member uses one, record the player, spell and time. Done when: using a tracked ability in game prints who used it and when.
- 03
Track cooldowns
~2hKeep per-player cooldown state (ready or ready at a given time), update it on each cast, and reset it when players leave the group or the encounter ends. Know each group member's class from UnitClass so the panel can show abilities as ready before they're first used. Put this logic in plain Lua functions that don't call the game API, so it can be tested. Done when: the cooldown state is correct as abilities are used and the group changes.
- 04
Build the tracker panel
~2.5hBuild a movable frame showing a row per tracked ability and player with the spell icon (from C_Spell.GetSpellTexture), the player's name in their class color, and a countdown bar or text, updated a few times per second with a timer (not every frame). Save the frame position in the saved variables. Done when: the panel shows live countdowns and remembers its position between sessions.
- 05
Add settings
~1.5hUse AceConfig and AceConfigDialog to add a settings panel: which abilities to track (by category), panel size, bar colors, sorting (by time left or by player), and whether to show the panel only in raids. Store settings with AceDB per profile. Add a slash command to open the settings and to lock or unlock the frame. Done when: changing settings updates the panel immediately and persists.
- 06
Test the logic outside the game
~1.5hWrite tests with busted for the plain Lua parts (cooldown calculations, group changes and sorting), using a small fake of the game functions they need. Test in game with a group (or in solo content for your own abilities), and write a checklist in TESTING.md. Done when: busted passes, and the in-game checklist is complete.
Ready to build this?
Get a GitHub repo and start building. Your AI reviewer checks each step as you go.
Tech stack