Monsters

Every monster type in MonstersData, with the floors it appears on and the combat numbers it brings. These are the Normal-difficulty values.

Two different levels

NumberWhat it drivesHow it scales
Combat level (the Level column below) To-hit, block chance, experience awarded, some missile damage +15 in Nightmare, +30 in Hell, +30 x multiplier in Torment
Loot level (mlvl) Which bases can drop, which tier, how good the roll The area level, +3 for a unique, +2 for a champion
They are deliberately separate. The combat curve is vanilla's, tuned over decades; the loot ladder is this build's. Merging them would rebalance every fight in the game as a side effect of a loot change.

Difficulty scaling

Hit points and damage scale with difficulty on top of the level offsets above. Torment applies Hell's scaling again, multiplied by the Torment Difficulty Multiplier INI setting (default 2.0, range 1.1 to 5.0).

But a re-run is meant to be more than the same dungeon with fatter monsters. Three other things change as you climb, and none of them is a number on a health bar:

DifficultyVariantsLoot rateNew champion modifiers

Variants is the share of ordinary monsters that are recoloured, so a deeper run is denser in encounters that are not the rank and file. Loot rate scales every zone's treasure class - a re-run does not merely drop better items, which the rising item level already handled, it drops more of them. And the champion modifier pool grows: each rung adds, nothing is ever withdrawn, so what you learned to fight keeps turning up.

Normal offers only the three a new character can read and answer - it does not get knocked back, it is armoured, it is large - because none of those needs an item you may not own yet. Resistances arrive with Nightmare, and Vampiric waits for Hell, where the damage exists to out-pace a champion that heals from what it deals.

Monster resistances climb on their own ladder: Nightmare gets Hell's set with the immunities demoted to plain resistances, Hell gets the real set, and Torment hardens Hell's resistances into immunities - never all of them, so nothing is ever unkillable.

Champions and uniques

Beyond the scripted unique monsters, the build spawns lesser uniques: ordinary monsters promoted with a champion modifier, their own name and tint, and a pack of minions. They carry +2 to their loot level (+3 for a true unique) and roll from a better loot table. The spawn rate is an INI setting.

Endgame bosses

From the first Hell floor onward, every generated floor has one. Below that, a chance on floors past the first third, so you meet the idea before you meet the one that matters.

A boss is not a new monster - it is the champion path with a heavier profile, drawn from a type the floor already loaded. It is always Colossal, because the silhouette should tell you before the name does.

ChampionBoss

And it carries two modifiers where a champion carries one: the Dread marker plus a second trait - - so the same boss type met twice is a different fight. The full name shows both, as in Dread Devouring Ashgore.

It also pays its floor's treasure class, against a unique's and a champion's - which, at Hell's table, is what makes one worth hunting rather than avoiding.

Variants

Below the champions sits a cheaper layer: of ordinary monsters are recoloured variants, each with one trait and a word in front of its name. No new art, no new animation - the creature's own palette is walked a step or two along its ramps, so it stays recognisably itself while reading clearly different from its twin.

VariantTrait

Which variants you meet depends on the floor. Each dungeon type offers a subset, so a roster is something you can learn about a place - the Cathedral deliberately has no elemental variant, because a resistance you have no answer to on floor two is a wall rather than a fight.

DungeonOffers
Not saved, and not random. Like the sizes below, a variant is derived from the monster's own seed - a value the save already holds - so it costs no per-monster state and a monster is the same variant every time you walk back onto the floor. Uniques and champions are excluded: they have an identity already, and a "Feral Gharbad the Weak" is two names fighting over one monster.

Sizes

Monsters are not all drawn at one scale. Four sizes exist, and they come from two completely different places.

SizeScaleWhere it comes from
Runt75%Rolled, ordinary monsters only
Normal100%The default - costs nothing, allocates nothing
Giant120%Rolled, ordinary monsters only
Colossal140%The Colossal champion affix, never rolled

Runt and Giant are decided in two stages, and the split is deliberate. First: does this monster type have an odd size on this floor at all? A quarter of types roll Runt, a quarter Giant, and half get neither. Then, within a type that did: a quarter of its individuals actually wear it. So an odd-sized monster reads as one strange individual rather than as a reskin of the whole floor - and the sprite cache never holds more than one extra scaled sheet per type.

Not saved, and not random. The size is a pure integer hash of the level seed, the monster's type and its id - all values the save already holds - so a monster is exactly the same size after a reload as before it. It touches no RNG stream, which is also what stops it shifting a deterministic replay. Colossal is the exception: it follows the affix, which is real saved state.

All monster types