# File: v_info.txt
#
# Do not modify this file unless you know exactly what you are doing,
# unless you wish to risk possible system crashes and broken savefiles.
#

######################################################################
# Documentation updated and accurate as of Poschengband v3.4.0

# This file is used to initialize the "lib/raw/v_info.raw" file, which is
# used to initialize the "room template" information for the Angband game.
# This includes vaults, special rooms and various kinds of wilderness encounters.
# (v stands for vaults. Formerly, only vaults were specified in this file.
# I added support for regular rooms and wilderness encounters for Poschengband).

# === Understanding v_info.txt ===

# Summary:
# N:<name>
# T:<type>:<subtype>[:flag_list]
# W:<level>:<max_level>:<rarity>
# L:<letter>:<Directives>+
# M:lines giving map of vault using symbols below or specified in L: lines

# N:<name>
# This line indicates the beginning of a new entry. You no longer need to specify
# increasing serial numbers. They are calculated automatically, but must 
# not exceed the M:ROOMS line in misc.txt. Since numeric identifiers are not stored
# any place or used explicitly in the code, you may reorder entries in this file as
# you wish. The name field is present for flavor and is only displayed with the
# cheat_rooms option.

# T:<type>:<subtype>[:flag_list]
# 'T' is for type information - room type, subtype and any theme options.
# Type must be one of VAULT, ROOM, WILD, or AMBUSH.
# VAULT Subtype must be one of LESSER or GREATER.
# ROOM Subtype must be NORMAL (perhaps we'll add subtypes in the future?)
# WILD and AMBUSH Subtype is a terrain specifier: WATER, SWAMP, GRASS, TREES, LAVA or MOUNTAIN.
# The flag_list is optional, and may contain one or more of the following
# options (use | to separate multiple options):
#   * GOOD: Only good monsters will be generated.
#   * EVIL: Only evil monsters will be generated.
#   * FRIENDLY: Only friendly monsters will be generated.
#   * NIGHT: This WILD or AMBUSH encounter only happens at night.
#   * DAY: This WILD or AMBUSH encounter only happens at day.
#   * NO_ROTATE: Prevents rotation of the room.
#   * FORMATION: Room is a special monster formation room (like the old pits and nests).
#   * DEBUG: Forces this room to be picked every time (Obviously, for debugging new entries).

# W:<level>:<max_level>:<rarity>
# 'W' is for "when" the room should show up - level and rarity. Rooms
# will *never* be generated below the indicated level. You may use * for
# the max_level field if you don't want to indicate a restriction.

# L:<letter>:<Directives>+
# You will use "letters" in the map lines to determine the contents
# of each square in your room. There are a bunch of built-in hard
# coded letters described below, but you might want to add some of
# your own as well. The letter field is required, and must be a single
# character in length. It may override built-in letters if you like.
# Directives guide the feature, monster, trap and object options for the
# square in question. You can specify these directives in any order, separating
# multiple directives with a :. Note: Don't use " as a letter. The parser
# will think you are quoting a string as in MON("fang, farmer maggot's dog", CLONE).
#
# Each directive is of the form NAME[(option_list)] where NAME is one of
# MON, TRAP, OBJ, EGO, ART, or a feature name from f_info.txt (e.g. FLOOR
# or GRANITE). Each directive has its own syntax, which is specified in 
# parentheses. You don't need to specify all directives, just the ones you need.
#   * MON: The MON directive determines the monster for this square.
#          The syntax is MON(<which> [,<options>]) where options are
#          optional, but <which> is required.
#       [1] Which monster? Use * for completely random selection. Or
#           use the display character (from r_info.txt) to limit the
#           kind of monster (e.g. o for orc or Z for zephyr hound). Or
#           enter the name from r_info.txt (like MON(raving lunatic)).
#           You can try a partial match (like MON(lunatic)) but that might
#           not always work.
#           Finally, you can specify one of the various "Summoning Options"
#           to guide monster selection. Look at the code for details, but here
#           are some examples, chosen randomly:
#              - HI_UNDEAD
#              - UNDEAD
#              - AMBERITE
#              - KAMIKAZE
#              - ARMAGE_GOOD  (Armage is probably shorthand for Armageddon ... )
#              - ARMAGE_EVIL
#              - THIEF
#              - HUMAN
#              - UNDEAD_SUMMONER
#              - DEMON_SUMMONER
#              - MAGICAL
#           (As an aside, the various summoning types were already present in the game because
#           either a monster or the player can summon them. This is a numeric code passed to
#           the summon_specific() api. So if the codes seem redundant or useless, just ignore 
#           them. They weren't created for this file).
#       [2] Which Options? The most common option is to generate out of depth monsters,
#           but there are others as well. Separate multiple options with the | character.
#              - NO_GROUP: Suppress normal group code for certain monsters
#              - NO_SLEEP: Monster is always awake
#              - NO_UNIQUE: Prevent unique monsters from being chosen.
#              - FRIENDLY: Force monster to be friendly to the player.
#              - HASTE: Monster is generated with extra speed.
#              - DEPTH+NN: Monster is generated up to NN levels out of depth (e.g. DEPTH+40 or DEPTH+7)
#     Sample MON directives and their meaning are:
#       [1] MON(DRAGON, DEPTH+20): Any dragon, up to 20 levels OoD
#       [2] MON(*, DEPTH+40): Any monster, up to 40 levels OoD
#       [3] MON(ORC, NO_GROUP | HASTE): A hasted orc loner
#       [4] MON(o, NO_GROUP | HASTE): A hasted orc loner (The summon type options are sometimes redundant)
#       [5] MON(black knight): A Black Knight
#       [6] MON(*): Anything at all, subject to normal dungeon type or wilderness terrain restrictions.
#
#  * OBJ: The OBJ directive determines the object for this square. Like the MON directive, the
#         syntax is OBJ(<type> [,<subtype>] [,<options>]). Note that you may augment an OBJ directive with
#         an EGO or even ART directive if you wish to generate ego items or artifacts. Both EGO
#         and ART are described separately below.
#       [1] Which Object? You may use * for a randomly chosen object type if you just don't care.
#           Or, you may specify the type of object by name, which is generally the "tval" of the
#           object kind in question. For example, GLOVES refers to TV_GLOVES and HARD_ARMOR refers
#           to TV_HARD_ARMOR. Look at defines.h for all the various tval codes. In addition, there
#           are a small number of custom descriptive codes that span multiple tvals:
#              - DEVICE: This is a rod, wand, staff, scroll or potion.
#              - JEWELRY: A ring or an amulet.
#              - BOOK: Spellbook from a random realm. Each realm has its own tval and there are like 20 of those!
#              - BODY_ARMOR: Includes soft armor, hard armor and even dragon armor.
#              - OTHER_ARMOR: Any armor not included in BODY_ARMOR (e.g., helms, shields, cloaks)
#              - WEAPON: Any melee weapon (there are 4 tvals for weapons).
#              - BOW_AMMO: Any type of bow or ammo.
#              - MISC: Junk, statues, etc. Basically, anything not caught by one of the preceding special categories.
#           Never use a k_idx directly. Instead, use OBJ(POTION, healing) for a potion of healing,
#           or OBJ(SWORD, long sword, DEPTH+20) for an out of depth long sword. k_idx will be
#           removed at some point ...
#       [2] Which Options? Easy. There is only a single option at the moment: DEPTH+NN which says to generate this
#           object up to NN levels out of depth.
#     Sample OBJ directives are:
#       [1] OBJ(*): Any object
#       [2] OBJ(*, DEPTH+7): Any object, up to 7 levels OoD
#       [3] OBJ(POTION, healing): Potion of Healing
#       [4] OBJ(POTION): Any potion
#
#  * EGO: The EGO directive augments the OBJ directive, specifying that an excellent object should be
#         generated. The syntax is EGO(<which>), where which is either * for a random type (appropriate
#         for the object in question or the full name from e_info.txt. You may use the index for
#         the ego type as well, since, at the moment, ego names are often duplicated. In the future
#         I might be able to fix this based on context, but for now, be careful.
#     Sample EGO directives are (Note you generally want an OBJ directive as well):
#       [1] OBJ(RING):EGO(209): Ring of Speed (Note: Boots and Rings both use 'of Speed')
#       [2] OBJ(RING):EGO(*): Any ego ring
#       [3] OBJ(CLOAK, DEPTH+20):EGO(*): Any ego cloak generated up to 20 levels OoD
#       [4] OBJ(SWORD, diamond edge):EGO(pattern)
#
#  * ART: The ART directive augments the OBJ directive, specifying that a special object should be
#         generated. The syntax is ART(<which>) where which is either * for a rand-art or the 
#         numeric index of a standard artifact from a_info.txt.
#     Sample ART directives are:
#       [1] OBJ(CLOAK, DEPTH+20):ART(*): Rand-art cloak generated 20 levels OoD
#       [2] ART(6): Necklace of the Dwarves (a_idx = 6). Note you don't need an OBJ directive in this case.
#
#  * FEATURE: The FEATURE directive determines the terrain type for the floor in question. If omitted, you
#         get a reasonable default value: In the dungeon, this is the FLOOR feature while in the wilderness,
#         your tile will be transparent, using whatever feature info was randomly generated for this tile.
#         The syntax for this directive is <NAME>[(<options>)] where NAME refers to the name field specified
#         in f_info (e.g. FLOOR, MOUNTAIN, SHALLOW_LAVA) and the optional options list can be one or more
#         of ROOM, ICKY, GLOW or MARK. Typically, you won't need to specify options. Also, there is additional
#         syntax for random wilderness dungeon entrances which I've omitted to explain.
#     Sample FEATURE directives are:
#       [1] GRANITE for a granite wall tile
#       [2] FLOOR(ROOM | ICKY | GLOW) for a floor grid that is part of a vault and already lit.
#
#  * TRAP: The TRAP directive allows for placement of a random or specific trap. In addition, the trap
#          can be given a probability of being generated, which is useful for certain room types where
#          the player might learn which squares to avoid (See the various wall opening rooms below for
#          examples. The syntax is TRAP(<name> [,<prob>]) where name is the trap name as given in the
#          name field of the f_info record and prob is an optional probability for this trap (default 100).
#     Sample TRAP directives are:
#       [1] TRAP(TRAP_OPEN, 25%) for a wall opening trap that is generated 25% of the time.
#       [2] TRAP(*) for a random trap that is always generated.
#       [3] TRAP(TRAP_ARMAGEDDON, 50%) for an armageddon trap generated 50% of the time.
#
#  Here are some sample L: lines in their entirety:
#    [1] L:M:SHALLOW_LAVA(ROOM | GLOW):MON(HI_DEMON, NO_GROUP | NO_SLEEP | DEPTH+50):OBJ(*, DEPTH+20):EGO(*)
#        Generates a tile with shallow lava, with a major demon generated up to 50 levels OoD, and with
#        a nice random ego object to boot. The demon is awake and won't come with escorts or friends.
#    [2] L:M:MON(*)
#        Just a random monster here, using whatever terrain info is appropriate.
#    [3] L:0:DIRT(ROOM):MON(THIEF, DEPTH+5):OBJ(GOLD)
#        A thief with some gold underfoot, standing on a dirt floor.
#    [4] L:p:MON(p, NO_GROUP | FRIENDLY)
#        A friendly human that won't come as part of a monster group.
#    [5] L:4:TEMPLE(GLOW)
#        A lit entrance to a temple shop.
#    [6] L:p:DIRT:MON(old sorcerer):OBJ(BOOK, DEPTH+50)
#        An Old Sorcerer standing on a dirt tile with an out of depth good spellbook underfoot.
#
# M:<map_row>
# 'M' lines describe the layout of the room. The size of the room is calculated automatically for
# you. The width of the room is set by the length of the first M: line and checked on each subsequent
# M: line. You must make all lines the same length, padding with spaces as neeed. The height of the
# room is determined by the number of M: lines.
#
# You can use any symbol defined in an L line for this room entry in your
# map. In addition, the following hard-coded symbols are allowed (TODO: I plan
# to move these to a global pref file in the future):
#
#    % - outside of the vault, where corridors may be connected
#    # - granite
#    $ - glass wall
#    X - impenetrable rock
#    Y - impenetrable glass wall
#    + - secret door
#    - - secret glass door
#    ' - curtain
#
######################################################################
# OK ... let's try remove the hardcoding. There is much voodoo going on
# in the source that I don't yet understand.
# I'm having trouble with the tunneler ...
#L:%:GRANITE(OUTER)
#L:#:GRANITE(INNER)
# ... but at least we can control the OoD levels for vault monsters/objects
L:*:TRAP(*, 25%):OBJ(*, DEPTH+1)
L:^:TRAP(*)
L:&:MON(*, DEPTH+5)
L:,:MON(*, DEPTH+3 | 50%):OBJ(*, DEPTH+7 | 50%)
L:1:MON(*, DEPTH+3)
L:2:MON(*, DEPTH+5)
L:3:MON(*, DEPTH+9)
L:4:MON(*, DEPTH+11)
L:5:MON(*):OBJ(*, DEPTH+1)
L:6:MON(*, NO_GROUP | DEPTH+5):OBJ(*, DEPTH+5)
L:7:MON(*, NO_GROUP | DEPTH+9):OBJ(*, DEPTH+7)
L:8:MON(*, NO_GROUP | DEPTH+10):OBJ(*, DEPTH+5):EGO(*)
L:9:MON(*, NO_GROUP | DEPTH+15):OBJ(*, DEPTH+20):EGO(*)

%:rooms.txt
%:vaults.txt

######################################################################
# FrogComposband Wilderness Encounters
#
# Type:    WILD | AMBUSH
# Subtype: GRASS | WATER | SWAMP | TREES | LAVA | MOUNTAIN
#
# Wilderness Encounters must fit snugly inside a single scroll tile
# now that the wilderness allows infinite exploration. The current
# scroll tile is 66x22 but the available space is only 62x20.
#
# The terrain subtype limits where the encounter can occur on the surface.
# For example, lava infested demon swarms make sense in lava terrains, but
# not in the oceans!

####################
# Grass Encounters #
####################

N:Hermit's House
T:WILD:GRASS
W:1:*:2
L:_:GRASS
L:.:DIRT(ROOM)
L:p:DIRT(ROOM):MON(HUMAN, DEPTH+15)
L:C:DIRT(ROOM):MON(C, HASTE | DEPTH+10)
L:,:DIRT(ROOM):OBJ(FOOD)
L:!:DIRT(ROOM):OBJ(POTION)
L:&:DIRT(ROOM):OBJ(GOLD)
M:###############
M:#.......#,!..&#
M:+.......#..p..#
M:#.......#.....#
M:#.......###+###
M:#.......#.....#
M:#.......#..C..#
M:#.......#.....#
M:#.......+.....#
M:###############

N:Ruined Home
T:WILD:GRASS
W:1:*:1
L:,:GRASS
L:.:DIRT
L:T:TREE
L:%:RUBBLE
L:*:DIRT(ROOM):MON(*, DEPTH+10)
L:~:DIRT(ROOM):OBJ(*)
M:###%%%######%%TT%#
M:#TT.....~..%TT*.T%
M:+.........~T.....T
M:#*,,,......%.....%
M:#T,,.......###T,,.
M:T....TT....#,TTT,#
M:#TT...TT...#*,T,.#
M:,.TT.......#.T,..%
M:#........~.,TTT..%
M:##   ##%%,,..T#%%,

N:Thieves' Hideout
T:WILD:GRASS:FORMATION
W:1:*:16
L:.:DIRT(ROOM)
L:0:DIRT(ROOM):MON(THIEF, DEPTH+5):OBJ(GOLD)
L:$:DIRT(ROOM):OBJ(GOLD)
M:###########################
M:#$.212...#.......#...212.$#
M:#$21012..+.......+..21012$#
M:#$.212..9#.......#9..212.$#
M:##########.......##########
M:#8.......................8#
M:#8.......................8#
M:#8.......................8#
M:#8...777...........777...8#
M:#############+#############

N:Town
T:WILD:GRASS
W:1:*:8
L:p:MON(p)
M:............p...........
M:#####.###########.######
M:#...+.#......+..#.+.p..#
M:#####.#..p...####.######
M:#.p.+.#.........+.+.p..#
M:#####.###########.######
M:.....p..................
M:############+###########
M:#.....p.........p...p..#
M:#........p.............#
M:########################

N:Archery Practice
T:WILD:GRASS:FORMATION
W:1:*:4
L:0:MON(ARCHER)
L:$:OBJ(BOW_AMMO)
M:8640468
M:6  $  6
M:4     4
M:0$   $0
M:4     4
M:6  $  6
M:8640468

N:Thieves' Prison
T:WILD:GRASS
W:1:*:2
L:M:MON(THIEF)
L:+:LOCKED_DOOR_7
M:#########
M:#M#M#M#M#
M:#+#+#+#+#
M:+.......#
M:#+#+#+#+#
M:#M#M#M#M#
M:#########

N:Debtors' Prison
T:WILD:GRASS
W:1:*:4
L:M:MON(p)
L:+:LOCKED_DOOR_5
M:#########
M:#M#M#M#M#
M:#+#+#+#+#
M:+.......#
M:#+#+#+#+#
M:#M#M#M#M#
M:#########

N:Menagerie
T:WILD:GRASS
W:10:*:16
L:M:MON(ANIMAL, DEPTH+10)
L:p:MON(p, NO_GROUP | FRIENDLY)
L:+:GLASS_WALL
M:#########
M:#M#M#M#M#
M:#+#+#+#+#
M:    p    
M:#+#+#+#+#
M:#M#M#M#M#
M:#########

N:Dog Trainer
T:WILD:GRASS:FRIENDLY
W:1:*:8
L:.:FLOOR(ROOM)
L:p:MON(p, NO_UNIQUE | NO_GROUP)
L:C:MON(C, NO_UNIQUE | NO_GROUP)
M:#######
M:#C.C..#
M:#.C..p+
M:#C.C..#
M:#######

N:General Store
T:WILD:GRASS
W:1:*:4
L:1:GENERAL_STORE(GLOW)
M:XXXXXXXXX
M:XXXXXXXXX
M:'.....1XX
M:XXXXXXXXX
M:XXXXXXXXX

N:Temple
T:WILD:GRASS
W:1:*:8
L:4:TEMPLE(GLOW)
M:XXXXXXXXX
M:XXXXXXXXX
M:'.....4XX
M:XXXXXXXXX
M:XXXXXXXXX

N:Black Market
T:WILD:GRASS
W:1:*:32
L:7:BLACK_MARKET(GLOW)
M:XXXXXXXXX
M:XXXXXXXXX
M:'.....7XX
M:XXXXXXXXX
M:XXXXXXXXX

N:Sorcerer's Tower
T:WILD:GRASS
W:20:*:16
L:.:FLOOR(ROOM)
L:p:FLOOR(ROOM):MON(MAGE, NO_SLEEP | NO_GROUP | DEPTH+20):OBJ(WAND, DEPTH+10)
M:################
M:+..............#
M:##############.#
M:#............#.#
M:#.##########.#.#
M:#.#p.........#.#
M:#.############.#
M:#..............#
M:################

N:Chapel
T:WILD:GRASS
W:1:*:16
L:&:OBJ(STATUE, DEPTH+100)
M:XXXXXXXXX
M:XXXXXXXXX
M:'.....&XX
M:XXXXXXXXX
M:XXXXXXXXX

N:Graveyard
T:WILD:GRASS:DAY
W:1:*:8
L:.:DIRT
L:,:GRASS
M: ###########
M: #,,,,,,,,,#
M: #,#,#,#,#,#
M:..........,#
M: #,#,#,#,#,#
M: #,,,,,,,,,#
M: ###########

N:Graveyard
T:WILD:GRASS:NIGHT
W:1:*:8
L:G:GRASS:MON(UNDEAD)
L:z:GRASS:MON(ZOMBIE)
L:.:DIRT
L:,:GRASS
M: ###########
M: #,z,,,G,,G#
M: #z#z#,#,#,#
M:..........G#
M: #z#z#,#,#,#
M: #,z,,,G,,G#
M: ###########

N:Logrus Master
T:WILD:GRASS
W:20:*:16
L:p:DIRT:MON(logrus master)
L:.:DIRT
M:############
M:#..........#
M:#.........p#
M:#..........#
M:#..#########
M:#..........+
M:############

N:Monument
T:WILD:GRASS
W:1:*:16
L:.:DIRT
L:~:SHALLOW_WATER
M:    X    
M:   X.X   
M:  X...X  
M: X..X..X 
M:X..X~X..X
M: X..X..X 
M:  X...X  
M:   X.X   
M:    X    

N:Murder
T:WILD:GRASS
W:10:*:16
L:M:MON(^crow$)
M:  M  
M: MMM 
M:MMMMM
M: MMM 
M:  M  

N:Teaching Academy
T:WILD:GRASS
W:10:*:16
M:------------------------------
M:------------------------------
M:------WWWWWWW.WWWWWWW---------
M:---WWWW#####-.-#####WWWW------
M:-WWW########-.-########WWW----
M:-W#########--.--#########W----
M:WW######-----.-----######WW---
M:W######----##;##----######W---
M:W#####--&-#######----#####W---
M:W#####----#######-&--#####W---
M:W######----#####----######W---
M:WW######-----------######WW---
M:-W#########--9--#########W----
M:-WWW###################WWW----
M:---WWWW#############WWWW------
M:------WWWWWWWWWWWWWWW------9--

N:Knight's Stronghold
T:WILD:GRASS:FORMATION | GOOD | NO_ROTATE
W:20:*:32
L:.:DIRT(ROOM)
L:0:DIRT(ROOM):MON(KNIGHT, DEPTH+30):OBJ(*, DEPTH+5):EGO(*)
L:1:DIRT(ROOM):OBJ(*)
L:C:DIRT(ROOM):MON(HOUND, DEPTH+10)
L:q:DIRT(ROOM):MON(HORSE, DEPTH+10)
M:####                                         ####
M:#qq#                                         #qq#
M:#qq#            #################            #qq#
M:#qq##############CCCCCCCCCCCCCCC##############qq#
M:###+............+CCCCCCCCCCCCCCC+............+###
M:  #.....#################################.....#  
M:###...###...............................###...###
M:#9999##...#############################...##9999#
M:#9999#....#888887777666111666777788888#....#9999#
M:.9999+....+888887777666101666777788888+....+9999.
M:#9999#....#888887777666111666777788888#....#9999#
M:#9999##...#############################...##9999#
M:###...###...............................###...###
M:  #.....#################################.....#  
M:###+............+CCCCCCCCCCCCCCC+............+###
M:#qq##############CCCCCCCCCCCCCCC##############qq#
M:#qq#            #################            #qq#
M:#qq#                                         #qq#
M:####                                         ####


#Nivim
N:Villa
T:WILD:GRASS
W:10:30:24
L:_:FLOOR
L:.:FLOOR(ROOM)
L:0:FLOOR(ROOM):MON(p, NO_GROUP | DEPTH+25)
L:1:FLOOR(ROOM):MON(p, NO_UNIQUE | DEPTH+17)
L:2:FLOOR(ROOM):MON(p, NO_UNIQUE)
L:`:FLOOR(ROOM):OBJ(STATUE, DEPTH+10)
L:*:FLOOR(ROOM):OBJ(GOLD, DEPTH+15)
L:&:FLOOR(ROOM):OBJ(CHEST)
L:%:FLOOR(ROOM):OBJ(FOOD)
L:x:CLOSED_DOOR(ROOM)
M:___           
M:_+############
M:_#...#...#..%#
M: #.22+..2x..%#
M: #2..#..2#2.%#
M: ##+##########
M: #...#.&&#`..#
M: #...#...#*.0$
M: #.22#...#...#
M: ##x###+###x##
M: #2..#1..#...#
M: #...x...x...#
M: #...#..1#.%%#
M: #############

#Nivim (Unfinished)
N:Keep of Four Pillars
T:WILD:GRASS
W:20:*:32
L:.:FLOOR(ROOM)
L:_:FLOOR
L:x:CLOSED_DOOR(ROOM)
L:v:SHALLOW_LAVA
#To-do; a cold analogue to lava, probably G:#:B
L:b:GLASS_FLOOR
L:n:DEEP_WATER
L:m:MOUNTAIN
#The following is actually supposed to be more like a
#line selecting mages with a high summon chance or
#1/5 chance of silent watchers, and a line selecting
#warriors (p or not).
L:*:FLOOR(GLOW):MON(DEMON_SUMMONER, NO_GROUP | DEPTH+25):OBJ(LITE, DEPTH+10):EGO(*)
L:`:FLOOR(GLOW):MON(silent watcher, NO_GROUP):OBJ(LITE, DEPTH+10):EGO(*)
L:p:FLOOR(ROOM):MON(p, NO_UNIQUE | DEPTH+15)
M: vvvv      mmmm 
M:vvv__________mmm
M:vv#v_##__##_m#mm
M:v_v__#####+__m_m
M:v___##..p.##___m
M: _#+#p....p###_ 
M: _##..#x##..##_ 
M: __#p.#*`x..#__ 
M: __#..x**#.p#__ 
M: _##..##x#..##_ 
M: _###p....p#+#_ 
M:b___##.p..##___n
M:b_b__+#####__n_n
M:bb#b_##__##_n#nn
M:bbb__________nnn
M: bbbb      nnnn 

##################
# Grass Ambushes #
##################

N:Flanked
T:AMBUSH:GRASS:FORMATION
W:1:*:3
L:0:MON(*, DEPTH+5)
M:         0       
M:      6666666    
M:      4444444    
M:      2222222    
M:                 
M:                 
M:         @       
M:                 
M:                 
M:      2222222    
M:      4444444    
M:      6666666    
M:         0       

N:Surrounded
T:AMBUSH:GRASS:FORMATION
W:1:*:2
L:0:MON(*, DEPTH+5)
M:                 
M:                 
M:         8       
M:        8 8      
M:       8   8     
M:  2   8     8    
M: 202 8   @   8   
M:  2   8     8    
M:       8   8     
M:        8 8      
M:         8       
M:                 
M:                 

N:Marauding Orcs
T:AMBUSH:GRASS:FORMATION | NIGHT
W:1:*:1
L:0:MON(o, DEPTH+5)
L:T:MON(T, NO_SLEEP | NO_GROUP | DEPTH+10)
M:T 6 T        T
M: 636          
M:63036     @   
M: 636          
M:T 6 T        T

N:Dread of Night
T:AMBUSH:GRASS:FORMATION | NIGHT
W:1:*:1
L:0:MON(UNDEAD, DEPTH+5)
M:      6   8   6  
M:                 
M:   0   8  @  8  0
M:                 
M:      6   8   6  

###################
# Lava Encounters #
###################

N:Random Volcano Level
T:WILD:LAVA
W:40:*:1
L:>:ENTRANCE(GLOW | MARK, 27)
L:~:DEEP_LAVA(GLOW)
L:.:SHALLOW_LAVA(GLOW)
L:^:MOUNTAIN
M:  ^^^^^  
M: ^^...^^ 
M:^^..~..^^
M:^..~>~..^
M:^^..~..^^
M: ^^...^^ 
M:  ^^^^^  

N:Demonologist
T:WILD:LAVA
W:40:*:16
L:~:DEEP_LAVA
L:U:DEEP_LAVA:MON(BALROG, NO_SLEEP | DEPTH+40)
L:p:DIRT:MON(demonologist, NO_SLEEP)
L:.:SHALLOW_LAVA
M:.......
M:..~~~..
M:.~~~~~.
M:~~~U~~~
M:.~~~~~.
M:..~~~..
M:...p...

N:How Vile!
T:WILD:LAVA
W:20:*:2
L:u:MON(arch-vile)
M:u   u
M:  u  
M:u   u

N:Hounds of Hell
T:WILD:LAVA
W:40:*:32
L:C:MON(hell hound of julian, NO_SLEEP)
M:C

#######################
# Mountain Encounters #
#######################

N:Empty Cave
T:WILD:MOUNTAIN
W:40:*:1
L:.:DIRT
L:~:SHALLOW_WATER
L:,:GRASS
L:T:TREE
L:#:MOUNTAIN
M:     ,##,,         
M: #####..###,       
M:#.,TT,,..~~###     
M: #.,TT,,.,,..#,    
M:  #.,,T,,,T~,.####,
M:  #.,T,,.,,T~,....#
M: #,TTT....,~T,....#
M:#..,,,T,..,T,...##.
M:.#####,~~.######.  
M:      #...#        
M:      ####.        

N:Ogre Cave
T:WILD:MOUNTAIN:FORMATION
W:40:*:2
L:.:DIRT
L:~:SHALLOW_WATER
L:,:GRASS
L:T:TREE
L:#:MOUNTAIN
L:0:DIRT:MON(O, DEPTH+20)
L:$:DIRT:OBJ(SKELETON)
M:     ,##,,         
M: #####.6###,       
M:#8,TT,,..~~###     
M: #.,TT,,$,,..#,    
M:  #.,,T,,,T~,.####,
M:  #.,T,,0,,T~,.$..#
M: #,TTT2...,~T,....#
M:#7.,,,T,..,T,2..##.
M:.#####,~~.######.  
M:      #$..#        
M:      ####.        

N:Troll Cave
T:WILD:MOUNTAIN:FORMATION
W:40:*:2
L:.:DIRT
L:~:SHALLOW_WATER
L:,:GRASS
L:T:TREE
L:#:MOUNTAIN
L:0:DIRT:MON(T, DEPTH+20)
L:$:DIRT:OBJ(SKELETON)
M:     ,##,,         
M: #####.6###,       
M:#8,TT,,..~~###     
M: #.,TT,,$,,..#,    
M:  #.,,T,,,T~,.####,
M:  #.,T,,0,,T~,.$..#
M: #,TTT2...,~T,....#
M:#7.,,,T,..,T,2..##.
M:.#####,~~.######.  
M:      #$..#        
M:      ####.        

N:Giant Cave
T:WILD:MOUNTAIN:FORMATION
W:40:*:8
L:.:DIRT
L:~:SHALLOW_WATER
L:,:GRASS
L:T:TREE
L:#:MOUNTAIN
L:0:DIRT:MON(GIANT, DEPTH+20)
L:$:DIRT:OBJ(SKELETON)
M:     ,##,,         
M: #####.6###,       
M:#8,TT,,..~~###     
M: #.,TT,,$,,..#,    
M:  #.,,T,,,T~,.####,
M:  #.,T,,0,,T~,.$..#
M: #,TTT2...,~T,....#
M:#7.,,,T,..,T,2..##.
M:.#####,~~.######.  
M:      #$..#        
M:      ####.        

N:Eyrie
T:WILD:MOUNTAIN:FORMATION
W:40:*:4
L:0:DIRT:MON(B, DEPTH+10)
M:    88    
M:   66466  
M:    43245 
M:     40357
M:    89    

N:Monastery
T:WILD:MOUNTAIN:FORMATION
W:40:*:8
L:.:GRASS
L:0:GRASS(ROOM):MON(MONK, DEPTH+20)
L:?:GRASS(ROOM):OBJ(BOOK)
L:!:GRASS(ROOM):OBJ(BOOK, DEPTH+20)
L:$:GRASS(ROOM):OBJ(STATUE)
L:#:MOUNTAIN
M:  .....    
M:###888###  
M:#6##+##7#  
M:##+.9.+##  
M:#5#'''#4#  
M:##+9.9+##  
M:#2#'''#3#  
M:##+.9.+##  
M:#1#9.9#0#  
M:####+####  
M:#?$?$?$!#  
M:#########  

N:Lord of Chaos
T:WILD:MOUNTAIN
W:40:*:16
L:p:DIRT:MON(lord of chaos)
L:.:DIRT
M:############    
M:#..........#    
M:#.........p#    
M:#..........#  ..
M:#..######### .. 
M:#..........+..  
M:############    

N:Sorcerer's Tower II
T:WILD:MOUNTAIN
W:50:*:32
L:.:DIRT
L:p:DIRT:MON(old sorcerer):OBJ(BOOK, DEPTH+50)
M:.################
M:.+..............#
M:.##############.#
M: #............#.#
M: #.##########.#.#
M: #.#p.........#.#
M: #.############.#
M: #..............#
M: ################

N:Dragon's Lair
T:WILD:MOUNTAIN
W:40:*:32
L:M:GRASS:MON(HI_DRAGON, DEPTH+20)
L:$:GRASS:OBJ(GOLD)
L:.:DIRT
L:~:SHALLOW_WATER
L:,:GRASS
L:T:TREE
L:#:MOUNTAIN
M:       ###       
M:     ###.###     
M:    ##T....##    
M:   ##..TT...##   
M:  ##,...$....##  
M: ##,~,.$$$..T~## 
M:##.T,~$$$$$..T~##
M:#..,~$$$M$$$..,,#
M:##T,~~$$$$$....##
M: ##.,,~$$$....## 
M:  ##.T,,$....##  
M:   ##..TT...##   
M:    ##.....##    
M:     ###.###     
M:       ###       

N:Mountain Resort
T:WILD:MOUNTAIN:SHOP
W:50:*:32
L:#:MOUNTAIN
L:.:TREE
L:1:GENERAL_STORE(GLOW)
L:2:ARMOURY(GLOW)
L:3:WEAPON_SMITHS(GLOW)
L:4:TEMPLE(GLOW)
L:5:ALCHEMY_SHOP(GLOW)
L:6:MAGIC_SHOP(GLOW)
L:7:BLACK_MARKET(GLOW)
L:9:BOOKSTORE(GLOW)
M:#################
M:##..##.#.#####7##
M:#.#2..#.#3##5#.##
M:######.####...#9#
M:#.#1#...##4.#6###
M:#....###...######
M:#################

N:Random Mountain Level
T:WILD:MOUNTAIN
W:40:*:16
L:>:ENTRANCE(GLOW | MARK, 28)
M:>

N:Random Volcano Level
T:WILD:MOUNTAIN
W:40:*:16
L:>:ENTRANCE(GLOW | MARK, 27)
L:~:DEEP_LAVA(GLOW)
L:.:SHALLOW_LAVA(GLOW)
L:^:MOUNTAIN
M:  ^^^^^  
M: ^^...^^ 
M:^^..~..^^
M:^..~>~..^
M:^^..~..^^
M: ^^...^^ 
M:  ^^^^^  

#####################
# Mountain Ambushes #
#####################

N:The Enchantress
T:AMBUSH:MOUNTAIN:FORMATION
W:30:*:8
L:0:TREE:MON(DRAGON)
L:p:TREE:MON(^enchantress$, NO_SLEEP)
L:.:TREE
M:741.....
M:8p0..@..
M:953.....

####################
# Swamp Encounters #
####################

N:Bat Attack!
T:WILD:SWAMP:FORMATION
W:10:*:3
L:0:DIRT:MON(b, DEPTH+10)
M:    88    
M:   66466  
M:    43245 
M:     40357
M:    89    

N:Ick!
T:WILD:SWAMP:FORMATION
W:10:*:1
L:0:DIRT:MON(i)
M:    88    
M:   66466  
M:  7743245 
M: 987640357
M:  988992  
M:    99329 

N:Ewwwww!
T:WILD:SWAMP:FORMATION
W:10:*:2
L:0:DIRT:MON(j, DEPTH+10)
M:    88    
M:   66466  
M:    43245 
M:     40357
M:    89    

N:Who would live here?
T:WILD:SWAMP
W:10:*:4
L:-:BROKEN_DOOR
L:~:OBJ(JUNK)
M:######
M:#   ~#
M:# ####
M:#-#   

N:The Sacred Temple of Ick
T:WILD:SWAMP
W:10:*:16
L:j:MON(j, DEPTH+5)
M:  ####  
M:  #jj#  
M:###jj###
M:+jjjjjj#
M:###jj###
M:  #jj#  
M:  ####  

#Haunted House
#Witch's Hut

#####################
# Forest Encounters #
#####################

N:Spiders
T:WILD:TREES:FORMATION
W:10:*:2
L:0:MON(S, DEPTH+10)
L:$:OBJ(SKELETON)
M:   8$  4  $8   
M:  8  $232$  8  
M: 8   2$1$2   8 
M:8   4310134   8
M: 8   2$1$2   8 
M:  8  $232$  8  
M:   8$  4  $8   

N:Roasting Hobbits
T:WILD:TREES:NIGHT
W:15:*:4
L:T:MON(forest troll, NO_SLEEP | NO_GROUP)
L:h:MON(scruffy looking hobbit, FRIENDLY)
L:~:SHALLOW_LAVA
L:$:OBJ(*)
M:            T
M:   T  $T h   
M:      T~T h T
M:   T   T h   
M:T            

N:Ewok Village
T:WILD:TREES
W:10:*:4
L:h:TREE:MON(^ewok$)
L:T:TREE
L:~:GRASS
M:TTh~hTTTh
M: TTh~hT~ 
M:  ~TTT~h~
M:TThTTT~~T
M:   ThhTT 

N:Druidic Circle
T:WILD:TREES
W:10:*:32
L:T:TREE
L:M:GRASS:MON(^huorn$, NO_SLEEP)
L:p:GRASS:MON(^druid$)
L:~:GRASS
M:       TTT       
M:     TTTTTTT     
M:    TTTTTTTTT    
M:   TTTTTpTTTTT   
M:  TTTTTp~pTTTTT  
M: TTTTTp~~~pTTTTT 
M:TTTTTp~~M~~pTTTTT
M:TTTTp~~MMM~~pTTTT
M:TTTTTp~~M~~pTTTTT
M: TTTTTp~~~pTTTTT 
M:  TTTTTp~pTTTTT  
M:   TTTTTpTTTTT   
M:    TTTTTTTTT    
M:     TTTTTTT     
M:       TTT       

N:Treeherder
T:WILD:TREES
W:30:*:200
L:T:MON(^ent$, FRIENDLY | NO_SLEEP)
M:T

#Fishing Hole
#Robin Hood and his Merry Men
#Huorns
#Hermit's Hut
#Snake infested ruins

N:Random Forest Level
T:WILD:TREES
W:20:*:8
L:>:ENTRANCE(GLOW | MARK, 26)
M:>

####################
# Water Encounters #
####################

#Treasure Island
#Convict's Island
#Land of the Lost (Dinosaur Island!)
#Rookery
#Trading Port
#Piranhas
#Shipwrecked
#Reef of Despair
#Shark Infested Waters (Complete with bathers!)

N:Random Sea Level
T:WILD:WATER
W:40:*:8
L:>:ENTRANCE(GLOW | MARK, 29)
L:~:DEEP_WATER
L:_:SHALLOW_WATER
M:__~__~___
M:_~_~__~_~
M:~_~_~~_~_
M:_~~~>~~__
M:~__~~~__~
M:_~~___~~_

###################
# Snow Encounters #
###################

N:Troll Clearing
T:WILD:SNOW
W:20:50:2
L:.:SNOW_FLOOR
L:T:SNOW_TREE
L:t:MON(TROLL, DEPTH+10)
M:    TTTTT TT
M:  TTT...TT  
M: TT......TT 
M:TT...t....T 
M:TT........TT
M:TTT......TTT
M:T TT...TT.TT
M:T  TTTTT.TT 

N:Troll Ambush
T:AMBUSH:SNOW
W:25:50:2
L:.:SNOW_FLOOR
L:T:SNOW_TREE
L:t:MON(TROLL, DEPTH+10 | NO_SLEEP)
M:    TTTTT TT
M:  TTT...TT  
M: TT......TT 
M:TT..t.@.t.T 
M:TT........TT
M:TTT......TTT
M:T TT...TT.TT
M:T  TTTTT.TT 

N:Swimming Hole
T:WILD:SNOW
W:25:*:3
L:.:ICE_FLOOR
L:~:SHALLOW_WATER
L:>:ENTRANCE(GLOW | MARK, 29)
M: .... 
M:..~~..
M:..~.. 
M: ...  

N:Surprise Dungeon
T:WILD:SNOW
W:50:*:8
L:.:ICE_FLOOR
L:~:DEEP_WATER
L:>:ENTRANCE(GLOW | MARK, 29)
M: .... 
M:..~>..
M:..~.. 
M: ...  

N:Bear Cave
T:WILD:SNOW
W:20:*:2
L:#:GLACIER_STEEP
L:.:SNOW_FLOOR
L:q:SNOW_FLOOR:MON(polar bear)
L:o:SNOW_FLOOR:OBJ(*, 25% | DEPTH+5)
L:k:SNOW_FLOOR:OBJ(human skeleton)
M:  #####
M: ##...#
M:##..##.
M:#....##
M:#k.q.##
M:##o.## 
M: ####  

N:Ice Giants
T:WILD:SNOW
W:40:*:6
L:#:GLACIER
L:%:GLACIER_STEEP
L:.:SNOW_FLOOR
L:p:GLACIER:MON(^ice giant$)
M:    ####.#     
M: ######..##### 
M: ##%%%#.%%%### 
M:#%%%#%%.##%%%##
M:#%p####.####%%#
M:#%%####.%%##p%#
M:##%##%%.#%%%%%#
M: #%%%%#.###### 
M: #####..####   
M:  ###..##      

N:Ice Giants II
T:AMBUSH:SNOW
W:40:*:4
L:#:GLACIER
L:%:GLACIER_STEEP
L:.:SNOW_FLOOR
L:p:GLACIER:MON(^ice giant$, NO_SLEEP)
M:    #### #     
M: ###### .##### 
M: ##%%p# %%%### 
M:#%%%#%% ##%%%##
M:#%%####@####%%#
M:#%%#### %%##%%#
M:##%##%% #p%%%%#
M: #%%%%# ###### 
M: #####  ####   
M:  ###  ##      

N:Dragon Family
T:WILD:SNOW
W:30:60:3
L:b:MON(baby white dragon, 75%)
L:y:MON(young white dragon)
L:m:MON(mature white dragon)
L:a:MON(ancient white dragon, 50%)
L:T:SNOW_TREE
M:TT   TT
M:Ty   yT
M:   b   
M:  bab  
M:   b   
M:Tm   mT
M:TT   TT

N:Winnipeg
T:WILD:SNOW
W:15:35:2
L:C:MON(white wolf)
L:W:MON(warg)
L:T:SNOW_TREE
M: T     T   TT
M:TC  T   T T  
M:TTTT  T   C T
M:T     T    T 
M:   T   TTT   
M:     W      T
M:  TT TT  TT  

# vim: filetype=q :
