Side project · World of Warcraft add-on

BRAT

Brad's Rotation Assistant Technology

In a fight, BRAT shows the spell to press now and the ones coming next, based on what the best players do.

View the code
A sketch of BRAT in a fight. Key bindings sit in the corner, and "R2" means charge the spell to rank 2.

What you see

  • Now

    The big icon is the spell to press right now, with its key binding on it. It comes from Blizzard's own rotation assistant.

  • Next and then

    Smaller icons show the spells after it, so your hands are ready before the moment comes.

  • Soon

    A heads-up with a countdown, a few seconds before a stronger spell is ready again.

  • Ranks

    For spells you charge up, the icon shows how far to charge, such as "R2", based on how many enemies there are.

Where the advice comes from

Warcraft LogsLearn from Blizzard
What it usesWhat the top 100 or so players cast, boss by boss and dungeon by dungeonWhat Blizzard's assistant picked during your own fights
Where it livesShipped inside the add-on and refreshed with each updateRecorded on your computer as you play
Best forPlaying the way top players do (the default)A rotation that fits your own talents

An A/B mode switches source every fight, so the damage from each can be compared.

How it works

  • Knows where you are

    Each raid boss and Mythic+ dungeon gets its own rotation, with a general raid or dungeon rotation to fall back on. Training dummies count too.

  • Counts the enemies

    Every rotation is split by how many enemies are nearby, from one to eight or more, counted from their nameplates.

  • Works around hidden data

    Since the Midnight expansion, the game hides cooldowns from add-ons during combat. BRAT times them itself from your casts and learns how much each spell shortens another.

  • Watches glowing buttons

    When a proc lights up a spell, BRAT learns how often it should come next, and moves it up when it should.

  • Three layers

    Recorded fights become averages, and averages become the rotation it serves. Both sources go through the same engine.

  • Checks its own work

    Every fight is recorded. BRAT scores its guesses against Blizzard and against top players, and calls a spec ready once it matches Blizzard 90% of the time.

Supported specs

SpecClassStatus (patch 12.1.5)
ShadowPriestFrom guides, not yet confirmed in game
DisciplinePriestDamage spells only. From guides, not yet confirmed in game
HolyPriestDamage spells only. Confirmed in game
DevastationEvokerFrom guides and Warcraft Logs, not yet confirmed in game

Commands

/brat
Opens the settings, where every option is explained
/brat check
Checks everything BRAT depends on, with a fix for anything wrong
/brat why
Explains the current suggestion
/brat analyze
Scores your recorded fights and shows the results
/brat source
Switches between Warcraft Logs and Learn from Blizzard

How it's built

  • Lua

    The add-on is written in Lua, the language World of Warcraft add-ons use. Test harnesses run its logic outside the game with LuaJIT.

  • PowerShell tools

    A data manager downloads top players' fights from Warcraft Logs and writes them into the add-on. Another tool studies your recorded fights on your computer.

  • The code

    BRAT is open source.

    Code