Zone Facts

Living page. Every number below is derived from the chronicle’s own spawn files and NPC stats. The zones listed are the ones that have been derived so far — not the whole world. See Coverage.

Where to hunt at a given level, what you’ll meet there, and whether you want a party.

The short version

  1. Level (median) is the middle of what spawns there, measured from the spawn file.
  2. Range is the real spread. A wide range means the zone is not uniform.
  3. Shape says how mobs are packed: field, group, or room.
  4. Mobs per pull is the mean monster count per spawn territory — the practical “how many come at once.”

How the level band is derived

For each zone the deriver reads the spawn file, resolves every NPC id against the chronicle’s stat XML, and takes the median, minimum and maximum of the mobs placed there.

A zone whose range is much wider than its median is telling you something real: the Forbidden Gateway spans levels 42–65 around a median of 63, so the low end is a fringe, not the zone.

Shape — field, group, or room

Shape is inferred from how densely mobs pack into each spawn territory, which the spawn file records directly:

Shape Mean mobs per territory What it feels like
field under 3 Singles and pairs scattered thin — you pick your fights
group 3 to 7 Clusters; a pull brings friends
room over 7 Enclosed territories packed with several types at once

Every figure here is measured from the spawn data.

⚠️ Shape is about packing, not aggression. A dense room of passive mobs is calmer than a sparse field of aggressive clan mobs. Whether a pull brings the whole clan depends on the mobs’ social attributes — see Party Composition, which covers how that decides party size.

Zone facts

Every row is derived from the chronicle’s own spawn files and NPC stats — the level band is the median and range of the mobs spawned there. Shape comes from how densely mobs pack into each spawn territory: a field scatters singles and pairs, a room packs many types into one enclosed territory. Mobs per pull is the mean monster count per territory.

Zone Level (median) Range Shape Mobs per pull Spawns Distinct mobs
Execution Grounds (Dion) 30 20–35 group 5.7 199 14
Cruma Marshlands 31 25–35 room 18.0 414 11
Catacomb of the Branded 45 40–51 group 6.0 228 16
Plains of Glory 48 45–50 room 10.8 173 6
War-Torn Plains 48 45–53 room 9.5 199 8
Fields of Massacre 60 55–65 room 13.6 477 12
Giant’s Cave 62 55–65 room 10.6 605 14
Forbidden Gateway 63 42–65 room 9.5 162 7
Catacomb of the Witch 66 60–72 group 6.0 224 19
Tower of Insolence 67 60–75 group 5.3 487 36
Blazing Swamp 71 65–75 group 6.8 402 12
Catacomb of Dark Omens 76 72–80 group 6.1 176 12
Silent Valley 77 74–79 room 10.0 40 3

Coverage — what this page does not cover

These are the zones derived so far, not a map of the world. A zone missing here is not a zone that doesn’t exist — it means no derivation has been run against its spawn file yet.

Two limits worth knowing:

Limit What it means for you
Zone coverage is partial Most of the world’s geodata tiles are unbaked, so absence here proves nothing.
Names collide in the datapack “Execution Grounds” exists twice. Each row is pinned to a specific spawn file, which is why the Dion one is named as such.

Under the hood

How a row is built

For each zone the deriver walks the chronicle’s own files:

  1. Read the spawn file for that zone and collect every spawn territory.
  2. Resolve each NPC id against the chronicle’s stat XML to get real levels.
  3. Take the median, minimum and maximum across the mobs placed there.
  4. Count mobs per territory to classify the shape as field, group or room.

Nothing in that chain consults a zone name or a label written by hand, so a row can disagree with a name you expect.

Where this comes from

  • Design: docs/design/party-comp-intelligence.md.
  • Generator: scripts/combat/derive_zone_facts.py reads the datapack’s spawn files and NPC stats directly and rebuilds the tables above on every wiki build.
  • Related model: party size is decided from these facts plus gear — see Party Composition.

Derived by scripts/combat/derive_zone_facts.py from the chronicle’s spawns/ and stats/npcs/ XML. The generated block rebuilds every wiki build, per chronicle. Design: docs/design/party-comp-intelligence.md.

← back to l2everdream.com