levels.txt defines every traversable area (level) in D2R: its name, act, physical dimensions, monster spawn pools, monster level, density, waypoint, and navigation connections. It's the table to query for "which areas have mlvl 85?", "what monsters spawn in X?", and "which areas have waypoints?"
139 rows × 187 columns. Row 0 is a Null placeholder; rows 1–138 are the playable areas from Act 1 (Rogue Encampment) through Act 5 (The Worldstone Chamber). Some areas have multiple sub-level entries (e.g., Crypt 1 A, Crypt 2 A) representing layout variants of the same dungeon.
What's in a row
Identity and navigation
| Column | Meaning |
|---|---|
Name | Internal name key — the row's primary identifier (e.g., Act 1 - Wilderness 1, Act 4 - Lava 1). Used by other files; not the display name. |
*StringName | String-table key for the in-game display name (e.g., Blood Moor, River of Flame). The * prefix marks it as a comment column not read by the engine, but it's the human-readable name used here. |
Id | Numeric ID for the area. Used in LvlWarp.txt and portal/waypoint cross-references. |
Act | Act index (0–4 = Acts 1–5). |
Waypoint | Waypoint ID for this area. 255 = no waypoint. A non-255 value means a waypoint shrine can spawn here. |
LevelName | String-table key for the area name shown in the waypoint activation UI. |
LevelWarp | String-table key for the transition label ("To the Blood Moor"). |
LevelEntry | String-table key for the area-entry narration text. |
LevelGroup | Group assignment; used to keep related sub-levels together in the UI. |
PreventTownPortal | 1 = town portals cannot be opened in this area (boss antechambers, Chaos Sanctuary inner ring, etc.). |
Monster levels — Classic vs Expansion
Two sets of monster-level columns exist. D2R always runs in Expansion mode: use MonLvlEx.
| Column | Mode | Meaning |
|---|---|---|
MonLvl | Classic | Base monster level for Normal difficulty in Classic mode. |
MonLvl(N) | Classic | Nightmare equivalent. |
MonLvl(H) | Classic | Hell equivalent. Not used in D2R gameplay. |
MonLvlEx | Expansion | Base monster level for Normal difficulty. D2R reads this. |
MonLvlEx(N) | Expansion | Nightmare equivalent. |
MonLvlEx(H) | Expansion | Hell equivalent. This is the definitive D2R monster level for each area. |
The endgame threshold in D2R is MonLvlEx(H) = 85. Areas at this level allow champions and unique monsters to reach the highest-tier drop pool — capable of generating any item in the game. Areas at lower MonLvlEx(H) values are capped from dropping certain high-end uniques and runes.
Monster density and spawn bounds
| Column | Meaning |
|---|---|
MonDen | Base monster density in Normal. Higher values = denser spawn. |
MonDen(N) | Nightmare density. |
MonDen(H) | Hell density. Blood Moor runs at 520; endgame areas like River of Flame reach 800. |
MonUMin / MonUMax | Min/max unique (champion/boss pack) count in Normal. |
MonUMin(N) / MonUMax(N) | Nightmare. |
MonUMin(H) / MonUMax(H) | Hell. |
MonWndr | 1 = wandering monsters can appear in addition to spawned packs. |
Monster spawn pools
Three parallel spawn pool columns define which monster types appear:
| Columns | Difficulty | Meaning |
|---|---|---|
mon1..mon25 | All | Regular monster spawn pool. References monstats.Id. |
nmon1..nmon25 | Nightmare | Nightmare-specific overrides. Often mirrors the Normal pool. |
umon1..umon25 | Hell | Unique-eligible monster pool for Hell. Determines which monster types can become champion/unique packs. |
rangedspawn | All | 1 = ranged-type monsters are eligible to spawn in this area. |
cmon1..cmon4 | All | Special champion monster slots (fixed champions). |
cpct1..cpct4 | All | Spawn probability for each cmon slot. |
camt1..camt4 | All | Max count for each cmon slot. |
Layout and render
| Column | Meaning |
|---|---|
SizeX(H) / SizeY(H) | Area tile dimensions in Hell difficulty. |
DrlgType | Dungeon layout generator type (maze, preset, wilderness, town). |
LevelType | Tile-set type index. |
Teleport | 1 = Teleport skill works in this area. 0 = blocked (Chaos Sanctuary inner ring, Durance of Hate level 3, etc.). |
Rain | 1 = rain/weather effects enabled. |
Portal | 1 = Red portal (town portal) can be placed here. |
Navigation connections
| Column | Meaning |
|---|---|
Vis0..Vis7 | Adjacent area IDs that are visible from this area (fog-of-war linked). |
Warp0..Warp7 | Warp portal IDs connecting to adjacent areas. References LvlWarp.txt. |
Worked example — Blood Moor (starter area)
SELECT "Name", "*StringName", "Act", "MonLvlEx", "MonLvlEx(N)", "MonLvlEx(H)",
"MonDen(H)", "Waypoint",
mon1, mon2, mon3, "PreventTownPortal"
FROM levels WHERE "Name" = 'Act 1 - Wilderness 1';
| Column | Value | Notes |
|---|---|---|
Name | Act 1 - Wilderness 1 | Internal key |
*StringName | Blood Moor | Display name |
Act | 0 | Act 1 (0-indexed) |
MonLvlEx | 1 | Normal: monsters spawn at level 1 |
MonLvlEx(N) | 36 | Nightmare |
MonLvlEx(H) | 67 | Hell — regular monsters at mlvl 67 |
MonDen(H) | 520 | Standard density |
Waypoint | 255 | No waypoint (waypoint is in the next area, Cold Plains) |
mon1 / mon2 / mon3 | zombie1 / fallen1 / quillrat1 | Monster spawn pool |
PreventTownPortal | 0 | Town portals allowed |
Worked example — River of Flame (mlvl-85 area)
The River of Flame is the canonical Act 4 endgame farming location and one of the areas with MonLvlEx(H) = 85.
SELECT "Name", "*StringName", "Act", "MonLvl(H)", "MonLvlEx(H)",
"MonDen(H)", "Waypoint",
mon1, mon2, mon3, mon4, mon5
FROM levels WHERE "Name" = 'Act 4 - Lava 1';
| Column | Value | Notes |
|---|---|---|
Name | Act 4 - Lava 1 | Internal key |
*StringName | River of Flame | Display name |
Act | 3 | Act 4 (0-indexed) |
MonLvl(H) | 77 | Classic mode (not used in D2R) |
MonLvlEx(H) | 85 | Expansion/D2R — monsters and champions at mlvl 85 |
MonDen(H) | 800 | High density — dense elite packs |
Waypoint | 29 | Has a waypoint |
mon1..mon5 | sandmaggot5, blunderbore4, vilemother3, fingermage2, regurgitator3 | Hell spawn pool |
MonLvl(H) = 77 (Classic) vs MonLvlEx(H) = 85 (Expansion/D2R) — a 10-level gap. D2R drops the Classic values entirely; only MonLvlEx(H) is used for determining item level thresholds and monster scaling.
Endgame areas with MonLvlEx(H) = 85
SELECT "Name", "*StringName", "Act", "MonLvlEx(H)", "Waypoint", "MonDen(H)"
FROM levels WHERE CAST("MonLvlEx(H)" AS INTEGER) = 85
ORDER BY CAST("Act" AS INTEGER), "Name";
This query returns the full set of mlvl-85 areas. Areas with Waypoint != 255 are directly accessible by waypoint; the others require traveling from a nearby waypoint. The 32 results include the canonical endgame zones: River of Flame (Act 4), Worldstone Keep levels (Act 5), various Act 1–3 caves and dungeons with a Treasure sub-room variant at mlvl 85.
Common queries
-- Areas by Act with their Hell monster level and waypoint status
SELECT "Name", "*StringName", "Act", "MonLvlEx(H)",
CASE WHEN "Waypoint" != '255' THEN 'Yes' ELSE 'No' END as has_waypoint
FROM levels
WHERE "Name" != 'Null'
ORDER BY CAST("Act" AS INTEGER), CAST("MonLvlEx(H)" AS INTEGER) DESC;
-- Monster spawn pool for a specific area
SELECT mon1, mon2, mon3, mon4, mon5, mon6, mon7, mon8, mon9, mon10
FROM levels WHERE "*StringName" = 'The Chaos Sanctuary';
-- All areas where Teleport is blocked
SELECT "Name", "*StringName", "Act"
FROM levels WHERE "Teleport" = '0' AND "Name" != 'Null';