# file: dungeon_profile.txt

# Contains information about how each type of dungeon level (and the town)
# are generated.

# name: The profile name.  This needs to match the corresponding entry in 
# list-dun-profiles.h so the correct level-building function can be called

# params: block_size : rooms : unusual : rarity
# The dungeon is divided into non-overlapping square blocks of block_size by
# block_size grids.  When rooms are placed, each is assigned a rectangular
# chunk of blocks, and those assignments won't leave a block assigned to more
# than one room (the staircase rooms for persistent levels are an exception
# to that rule).  So, block_size affects how densely the rooms can be packed
# and the maximum number of rooms possible.  rooms is the number of rooms to
# aim for.  unusual is a measure of how likely high rarity roooms are to
# appear - higher values make the rare rooms rarer.  rarity is the maximum
# rarity room allowed with this cave profile.

# tunnel: rnd : chg : con : pen : jct
# These are percentage chances - rnd of choosing a random tunnel direction
# (as opposed to heading in the desired direction), chg the chance of changing
# direction, at any tunnel grid, con the chance of just terminating a tunnel,
# pen the chance of putting a door in a room entrance, jct the chance of a
# door at a tunnel junction.

# streamer: den : rng : mag : mc : qua : qc
# Streamers are drawn as a random walk which stops at the dungeon edge.
# den is the number of grids near any walk grid to make streamer; rng is how
# far from the walk those grids can be; mag and qua are the numbers of magma
# and quartz streamers per level; 1/mc and 1/qc are the chances of treasure in
# magma and quartz.

# alloc is used to decide which profile to use.  For a profile that has a
# positive value for alloc, the profile will be used for a level that satisfies
# the profile's min-level with a probability of the value of alloc divided by
# the sum of the alloc values for all other possible profiles at that level.
# Except for the town profile, if alloc is zero or less than -1, the profile
# will not be used.  If alloc is -1, the profile can only be selected by
# hard-coded tests in generate.c for the profile selection.  If those tests do
# not already include the profile, using a value of -1 will be the same as
# using 0 for alloc.  The hard-coded tests currently include checks for the
# town, moria, and labyrinth profiles.

# min-level is the shallowest dungeon level on which the profile can be used

# room: name : rating : height : width : level : pit : rarity : cutoff
# name is the room name, which must match the name in list-rooms.h so the 
# correct room-building function can be called.
# rating is used only for template rooms
# height and width are the maximum dimensions of the room, and define how much
# space is allocated for that room.
# level is the minimum depth at which this room can appear.
# pit is 1 if the room is a pit/nest, 0 otherwise.
# rarity is the room's rarity - normally 0, 1 or 2 (see comments about profile
# rarity above).  Some rooms are chosen by a different means; in this case
# rarity is usually 0.
# cutoff is used to pick between rooms once a rarity is chosen:  a random value
# from 0 to 99 is selected and a room may appear if its cutoff is greater than
# that value.  Non-zero cutoffs normally appear in ascending order within the
# rooms of the same rarity for a given profile.  A room with a smaller cutoff
# appearing after one with a larger cutoff will only be selected if an attempt
# to place the earlier room fails.  One way that can happen is because of the
# depth restrictions set in this file.  For greater vaults and huge rooms,
# there are also restrictions in the code that make their generation fail
# frequently.

## Town
name:town
streamer:1:1:0:0:0:0
params:1:0:200:0
alloc:-1

## Labyrinth - these have alloc -1, but still appear after other checks
## To completely turn them off, set alloc to zero
name:labyrinth
params:1:0:200:0
alloc:-1

## Cavern
name:cavern
params:1:0:200:0
min-level:15
alloc:10

## Classic
name:classic
params:11:50:200:2
tunnel:10:30:15:25:50
streamer:5:2:3:90:2:40
alloc:90

# Greater vaults only have rarity 0 but they have other checks
room:Greater vault:0:44:66:35:0:0:100

# Very rare rooms (rarity = 2)
room:monster pit:0:11:33:5:1:2:8
room:monster nest:0:11:33:5:1:2:16
room:Medium vault:0:22:33:30:0:2:38
room:Lesser vault:0:22:33:20:0:2:55

# Unusual rooms (rarity = 1)
room:large room:0:11:33:3:0:1:15
room:crossed room:0:11:33:3:0:1:35
room:circular room:0:22:22:1:0:1:50
room:overlap room:0:11:33:1:0:1:70
room:room template:1:11:33:1:0:1:95
room:room template:2:11:33:10:0:1:99
room:room template:3:11:33:30:0:1:100

# Normal rooms (rarity = 0)
room:simple room:0:11:33:1:0:0:100

# Staircase rooms - rarity 99 to prevent random occurrence
# these rooms are specially generated to join persistent levels
room:staircase room:0:3:3:1:0:99:0

## Modified
name:modified
params:1:50:300:2
tunnel:10:30:15:25:50
streamer:5:2:3:90:2:40
alloc:97

# Really big rooms only have rarity 0 but they have other checks
room:Greater vault:0:44:66:35:0:0:50
room:Greater vault (new):0:44:66:35:0:0:100
room:huge room:0:44:66:40:0:0:100

# Very rare rooms (rarity = 2)
room:room of chambers:0:44:66:10:0:2:4
room:monster pit:0:11:33:5:1:2:12
room:monster nest:0:11:33:5:1:2:20
room:Medium vault:0:22:33:30:0:2:30
room:Medium vault (new):0:22:33:30:0:2:40
room:Lesser vault:0:22:33:20:0:2:50
room:Lesser vault (new):0:22:33:20:0:2:60

# Unusual rooms (rarity = 1)
room:Interesting room:0:44:55:0:0:1:10
room:large room:0:11:33:3:0:1:25
room:crossed room:0:11:33:3:0:1:40
room:circular room:0:22:22:1:0:1:55
room:overlap room:0:11:33:1:0:1:70
room:room template:1:11:33:1:0:1:95
room:room template:2:11:33:10:0:1:99
room:room template:3:11:33:30:0:1:100

# Normal rooms (rarity = 0)
room:simple room:0:11:33:1:0:0:100

# Staircase rooms - rarity 99 to prevent random occurrence
# these rooms are specially generated to join persistent levels
room:staircase room:0:3:3:1:0:99:0

## Moria - these have alloc -1, but still appear after other checks
## To completely turn them off, set alloc to zero
name:moria
params:1:50:250:2
tunnel:10:30:15:25:30
streamer:5:2:3:90:2:40
alloc:-1

# Really big rooms only have rarity 0 but they have other checks
room:Greater vault:0:44:66:35:0:0:50
room:Greater vault (new):0:44:66:35:0:0:100

# Very rare rooms (rarity = 2)
room:room of chambers:0:44:66:10:0:2:4
room:monster pit:0:11:33:5:1:2:12
room:monster nest:0:11:33:5:1:2:20
room:Medium vault:0:22:33:30:0:2:30
room:Medium vault (new):0:22:33:30:0:2:40
room:Lesser vault:0:22:33:20:0:2:50
room:Lesser vault (new):0:22:33:20:0:2:60
room:Interesting room:0:44:55:0:0:2:100

# Normal moria-style rooms (rarity = 0)
room:moria room:0:11:33:1:0:0:100

# Staircase rooms - rarity 99 to prevent random occurrence
# these rooms are specially generated to join persistent levels
room:staircase room:0:3:3:1:0:99:0

## Lair
name:lair
params:1:50:500:2
tunnel:10:30:15:25:50
streamer:5:2:3:90:2:40
min-level:20
alloc:1

# Really big rooms only have rarity 0 but they have other checks
room:Greater vault:0:44:66:35:0:0:50
room:Greater vault (new):0:44:66:35:0:0:100
room:huge room:0:44:66:40:0:0:100

# Very rare rooms (rarity = 2)
room:room of chambers:0:44:66:10:0:2:4
room:monster pit:0:11:33:5:1:2:12
room:monster nest:0:11:33:5:1:2:20
room:Medium vault:0:22:33:30:0:2:30
room:Medium vault (new):0:22:33:30:0:2:40
room:Lesser vault:0:22:33:20:0:2:50
room:Lesser vault (new):0:22:33:20:0:2:60

# Unusual rooms (rarity = 1)
room:Interesting room:0:44:55:0:0:1:10
room:large room:0:11:33:3:0:1:25
room:crossed room:0:11:33:3:0:1:40
room:circular room:0:22:22:1:0:1:55
room:overlap room:0:11:33:1:0:1:70
room:room template:1:11:33:1:0:1:95
room:room template:2:11:33:10:0:1:99
room:room template:3:11:33:30:0:1:100

# Normal rooms (rarity = 0)
room:simple room:0:11:33:1:0:0:100

# Staircase rooms - rarity 99 to prevent random occurrence
# these rooms are specially generated to join persistent levels
room:staircase room:0:3:3:1:0:99:0

## Gauntlet
name:gauntlet
params:1:0:200:0
min-level:20
alloc:1

## Hard Centre
name:hard centre
params:1:0:200:0
min-level:50
alloc:1
