How these numbers are produced
Every figure on this site is read out of the Hero Siege client and carries the build it came from. This page is the working: what is measured, what is assumed, and what is not known.
Every value carries its source
Numbers here are read from the game client, not copied from another site, and each records where it came from and when. That record is a field in the data rather than a note beside it: a value that cannot say where it came from does not ship.
This matters more here than it would elsewhere. The same item’s Enhanced Damage reads 660 to 740 on one popular source and 780 to 920 on another. At least one is wrong, both are stated as fact, and neither says how it was obtained.
Drop rates are denominators, not percentages
The client stores a drop rate as the N in a one-in-N, scaled by a per-place multiplier. Read as a percentage it inverts, and the rarest rune in the game becomes the most common thing in it. The value 50,000,000 is not an astronomically small chance: it is the sentinel for does not drop here, and it appears at three separate sites in the client.
This is not hypothetical. It shipped, on this site, and said Zod was 1 in 149 and El was 1 in 142,857. The correct figures are Zod 1 in 334,800 and El 1 in 350.
Some stats feed each other
Hero Siege contains real stat cycles. Faster Cast Rate feeds Movement Speed feeds Damage, and an Incarnation node forms a second loop. A tool that assumes a clean dependency order either hangs or reports whichever number it reached first. The engine detects a cycle, iterates it, and stops when the change between passes falls under a threshold.
A roll is a range
Two copies of the same unique are not the same item. The client declares an upper and a lower bound for most affixes, so both are shown. Where the two ends are equal the client rolls a fixed value, and a single number is shown rather than a range of one. There are 811 uniques in this build.
Runewords have three rules and all three bite
- They form only in common bases. The client gates the whole scan on rarity, so a runeword sequence inside a unique does nothing at all.
- The socket count must equal the recipe length exactly. A six-rune word will not form in a seven-socket base.
- The sequence is never rotated. Order is order.
There are 100 recipes in this build, each listed with its rune order on the runewords pages.
Charms occupy rectangles
56 are 2×2, 16 are 1×2, 9 are 1×1. A charm inventory drawn one charm per cell is not a simplification, it is a different game: it removes the placement constraint that makes charms a decision at all, and it will happily show you a loadout that cannot fit.
Season versioned by default
Hero Siege restarted its season numbering after the 2.0 relaunch, so a 2020 post about “Season 10” describes a different Season 10. Everything here is stamped with the client build it was read from, and nothing is stored as though it were permanent.
What is not known is said
Some values are not recoverable from the client. Where a socket count, an unlock condition or a stat name could not be established, this site says so rather than choosing a plausible number. An unknown printed as a fact is worse than a blank, because nobody reading it can correct it. Drop sources are recovered for 1,119 of 1,975 catalogue records, and the rest say so.