Skip to content

taherbert/talent-combinator

Repository files navigation

Talent Combinator

Generate all valid WoW talent builds matching your constraints, exported as SimulationCraft profilesets.

CleanShot 2026-02-19 at 18 02 28 CleanShot 2026-02-19 at 18 05 09

What it does

Talent Combinator explores the full space of valid talent configurations for any World of Warcraft specialization. Set constraints on individual talents (always, never, or conditional), and the app enumerates every legal build that satisfies them. Results export directly as SimC profilesets for batch simming on Raidbots.

Features

  • Three constraint types -- Always (must take), Never (must skip), Conditional (take only when another talent is selected)
  • Live build counting -- See the number of matching builds update instantly as you add constraints
  • Validation -- Detects impossible constraint combinations (unreachable nodes, budget overflows, gate violations) before you generate
  • Import talent hash -- Paste a WoW talent string to auto-set every talent as a constraint
  • Two export formats -- SimC entry-based profilesets or full talent hash strings
  • Save/Load -- Persist constraint sets to disk and reload them later
  • Three independent trees -- Class, spec, and hero talents are counted and generated separately; total builds = product of per-tree counts

Getting started

Download a pre-built release from GitHub Releases, or build from source:

git clone https://github.com/taherbert/talent-combinator.git
cd talent-combinator
npm install
npm run dev

macOS note: The release builds are not code-signed. After installing, you may need to remove the quarantine attribute:

xattr -cr "/Applications/Talent Combinator.app"

Building from source

Prerequisites: Node.js 20+

npm install          # Install dependencies
npm run dev          # Start dev mode with HMR
npm run build        # Production build
npm run package      # Package as distributable (dmg/exe/AppImage)

How it works

Each of the three talent trees (class, spec, hero) is counted independently using a polynomial dynamic programming algorithm that processes nodes tier-by-tier. Ancestor dependencies are tracked via a compact bitmap with dynamic bit assignment and retirement, keeping the state space small (typically 7--10 simultaneous bits instead of 30--40 total ancestors).

Build generation uses suffix-DP unranking: a reverse-pass suffix table is computed once, then individual builds are extracted by index in O(n) time per build. When the total exceeds the output limit, builds are sampled at evenly-spaced indices across the full space.

The solver runs in a Web Worker to keep the UI responsive. Counting is sub-millisecond for all specs, so it runs on the main thread for instant feedback.

Acknowledgments

License

MIT

About

Generates all possible wow talent combinations given a set of limitations

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages