## DungeonMaker

###
Determining the Dungeon Character

(stats-file reference)

Luckily, there is only one line to explain - it determines the
characteristics of one generation of WallCrawlers, and is repeated for
generation 0 through 9. If there are more than 10 generations of
Crawlers in the dungeon, later generations all share the values
for generation 9. Generation 0 refers to the Crawlers who are manually created
in the rooms-file. All lines start with the
generation number, and these must be in the correct order. A sample line looks
like this:

**Generation: 1; StepLength: 5; CorridorWidth: 4;
ChangeDirProb: 30; StraightSpawnProb: 100; DoubleSpawnProb: 100; JumperProb:
100; OpenStartProb: 30; MaxAge: 8; SkipGenerations: 5; LateSpawn: 4;
LateSpawnProb: 40; NoDirectionProb: 50. **

**StepLength** is the number of wall tiles that the Crawlers of this
generation build during one iteration when they have enough space in their
*Forward* direction. **CorridorWidth** is the minimum number of
open squares the Crawlers of this generation will leave between wall
tiles they build and those that are already there. They only look
*Forward* and to the sides to determine this, thus ignoring any wall
tiles they have laid themselves. **ChangeDirProb** is the probability in
percent that a Crawler of this generation will change direction after having
laid down his wall tiles (except for generation 0, where this is modified to
create walls that head more closely in the desired *Direction* -
this is explained here under the heading
*chDirOnStraight*). Whenever a Crawler changes
direction at this point,
he will spawn at least one baby, and will spawn two with probability
**doubleSpawnProb**. At the end of a building step, when the Crawler
does *not* change direction, it will spawn a baby with probability
**straightSpawnProb**. Note that when a Crawler is forced to change
direction because there are exactly *corridorWidth* spaces between him and
the next obstacle, he will not go through the building cycle, and will not
get a chance to spawn.

**JumperProb** is the probability (as always in percent) that a Crawler, at
the point where he has the chance to spawn a baby, will spawn a ColumnJumper.
These Jumpers only become active after **skipGenerations** generations.
**OpenStartProb** is the probability that Crawlers of this generation will
leave an opening at the start of their run and later attempt to join up with an
existing wall. Be sure to heed the warnings given
here about using this option.
**MaxAge** is the age after which this Crawler is deleted. Together
with *stepLength* this determines the number of wall tiles one
Crawler can lay down. **NoDirectionProb** is the probability that Crawlers of this generation
will have a *Direction* value of zero assigned to them, and thus have no
preferred heading. This is valid only for generations other than 0 -
Crawlers in generation 0 have their *Direction* assigned individually
in the rooms-file. Crawlers with no assigned *Direction* are the only ones
that can turn back on themselves and go in the direction opposite their
starting *Forward* direction. You find more detail on that
here.

**LateSpawnProb** is the probability that a baby spawned by a Crawler of
this generation will not become activated in the next generation, but with
**lateSpawn** generations delay. A baby spawned by generation 1 with
lateSpawn = 4 will become active in generation 6.

That's it for the description of the parameters in the stats-file. All
ways to use these parameters will not immediately become obvious. See the
design-howto for some hints to get you started.