Build a character the way the game resolves one. A specialization opens at level 5; every row opens at its own level; one option is picked per row. Every number the page shows is what the client's own resolver computes for that build.
These tables are the game's authored source, not the public client catalog — the catalog ships no talent collection at all, so unlike every other page here, no public refresh can describe a build. Read from revision a9ca7b618 by scripts/export-talents.mjs.
teleport strike vs kill momentum vs rotational speed
Open
8
Row 2 · level 8Defense
lethal insurance vs hardened Ghostfoot vs active cloud
Open
11
Row 3 · level 11Control
stun payoff vs free utility CC vs mid-fight stun access
Open
14
Row 4 · level 14Kit management
cheaper stealth play vs cheaper poisons vs a faster builder
Open
17
Row 5 · level 17Major window
personal cleave burst vs defense turned tempo vs party rally
Open
20
Row 6 · level 20Capstone
shadow echo vs marked target vs kill momentum
Open
30
Row 7 · level 30Lethal artistry
Open
45
Row 8 · level 45Shadow walker
Open
60
Row 9 · level 60Master assassin
Open
70
Row 10 · level 70Kingpin
Open
80
Row 11 · level 80Smuggler
Open
THE GAME'S OWN BUILD STRING
How a build resolves
A specialization unlocks at level 5 and contributes three things: its signature ability, its mastery effect scaled by the player's level (80 of 80 shown above), and the spec's own baseline effect. Each picked row then folds in that option's effect in row order — statistics and global modifiers add up, abilities gain their own changes, and granted abilities and procs collect. Unpicked rows contribute nothing. Points arrive one per unlocked row, at level 5, 8, 11, 14, 17, 20, 30, 45, 60, 70, 80, so a level 80 character can spend 11.
A build the level cannot reach is repaired rather than refused: the game drops a pick above the player's level when a build is imported, and so does this page. Lowering the level hides a pick instead of forgetting it, and the share string keeps the build you actually picked.
Where the numbers come from
The tables are the game's own authored files — src/sim/content/talents.ts, src/sim/content/talent_rows.ts, src/sim/content/spec_baselines.ts, src/sim/types.ts, src/ui/talent_icons.ts — read from the game checkout at revision a9ca7b618. Nothing here is estimated, sampled or advised: a modifier is a value the client's resolver returns.
The export also records what the client's own computeTalentModifiers(), repairAllocation() and build-string code returned for 81 fixed builds — an empty build, every row's first, second and third option, the class default, an early and a mid level build, a build below the specialization level, and junk input. The page's engine reproduces all 81 exactly, so the calculator cannot drift from the game; that is what scripts/talents.test.mjs checks.
The game's guide page ships no per-option numbers on purpose. This page is not advice: it is the resolver, with the strings attached.
Artwork and the build string
292 of 297 row options draw the client's own painting, mirrored into this site, and each of the 27 specializations carries its painted emblem. The remaining five rows are composed by the client from a crest recipe, which cannot travel as a file, so this site draws a glyph for them behind a dashed frame — the same convention it uses for quest sigils, so site-drawn art is never mistaken for client art.
The share string is the game's own: base64 of v, c, s, r, exported and imported by the client itself. A build copied here loads in the client, and a build copied there loads here. The address bar carries the same string, so a link reopens the exact build. Every ability an effect can name has a page in this database: browse abilities.