summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/dat/icecave.des
diff options
context:
space:
mode:
authorevktalo <evktalo@users.sourceforge.net>2009-10-10 20:08:18 +0300
committerevktalo <evktalo@users.sourceforge.net>2009-10-10 20:08:18 +0300
commit12ec49f4941b83c362269a7a420d0f709c05a6a6 (patch)
tree303c2428e7f17282461e9c72f5394a87f247ea1a /crawl-ref/source/dat/icecave.des
parent9ebe6ac58f290e4c9874c53ba99225b66360b837 (diff)
downloadcrawl-ref-12ec49f4941b83c362269a7a420d0f709c05a6a6.tar.gz
crawl-ref-12ec49f4941b83c362269a7a420d0f709c05a6a6.zip
A new Ice Cave map by Zaba.
Signed-off-by: evktalo <evktalo@users.sourceforge.net>
Diffstat (limited to 'crawl-ref/source/dat/icecave.des')
-rw-r--r--crawl-ref/source/dat/icecave.des1779
1 files changed, 926 insertions, 853 deletions
diff --git a/crawl-ref/source/dat/icecave.des b/crawl-ref/source/dat/icecave.des
index 7c382cf14d..b03c7612cf 100644
--- a/crawl-ref/source/dat/icecave.des
+++ b/crawl-ref/source/dat/icecave.des
@@ -1,853 +1,926 @@
-###############################################################################
-#
-# The Ice Cave (Eino)
-#
-#
-# Ice Cave is aimed to appear at somewhere in the middle game. It should be
-# fairly challenging, but also allow retreating. The entries shouldn't be out
-# of depth.
-#
-# Flavour: white colours, ice monsters, appropriate clouds.
-# The escape is at the start. The player can back away if s/he decides
-# some challenges are too much to handle.
-#
-###############################################################################
-
-{{
-function ice_cave_portal(e)
- local desc_long = "A permanent cold front seems to surround this " ..
- "portal. Whatever lives on the other side, they will be full of " ..
- "grim and arctic fury. You note that the archway is melting away."
-
- local timeout_turns = crawl.random_range(1200, 1700)
-
- local messager =
- timed_msg {
- visible = true,
- -- $F{xxx} will be substituted with the 'entity' property of the timed
- -- marker, or with the desc property (if entity is not set).
- messages = time_messages(timeout_turns,
- "$F{The} is slowly melting away.",
- "$F{The} is melting away.",
- "$F{The} is quickly melting away.",
- "$F{The} is almost completely melted.")
- }
-
- e.lua_marker('O',
- timed_marker {
- disappear = "The archway melts and disappears.",
- desc = "A frozen archway",
- desc_long = desc_long,
- entity = 'archway',
- dst = "ice_cave",
- dstname_abbrev = "IceCv",
- dstorigin = "in an ice cave",
- overmap = "frozen archway",
- turns = timeout_turns,
- floor = "floor",
- msg = messager })
- e.kfeat("O = enter_portal_vault")
- e.colour("O = white")
-end
-}}
-
-{{
--- Alter short feature descriptions for all ice cave destination vaults.
-function ice_cave_feat_descs()
- dgn.set_feature_desc_short("rock wall", "ice covered $BASE")
- dgn.set_feature_desc_short("gate leading back to the Dungeon",
- "ice covered $BASE")
- dgn.set_feature_desc_short("empty arch of ancient stone",
- "ice choked $BASE")
- dgn.set_feature_desc_short("Some shallow water",
- "Some ice crusted shallow water")
- dgn.set_feature_desc_short("Some deep water",
- "Some ice crusted deep water")
-
- dgn.set_feature_desc_long("Some deep water",
- "It looks freezing!");
-end
-
-dgn.set_lt_callback("ice_cave", "ice_cave_feat_descs")
-}}
-
-# For destination (not entry) vaults, use the following line after all
-# substitutions have been performed:
-# : ice_cave_colours(_G)
-{{
-function ice_cave_colours(e)
- e.kfeat("< = exit_portal_vault")
- e.colour("< = white")
- e.lrockcol("white")
- e.lfloorcol("blue")
- e.lrocktile("wall_ice")
- e.lfloortile("floor_ice")
-end
-}}
-
-# Using this function will turn any ! glyph on the map into a fog generator.
-# Any use requires two parameters as follows:
-# : place_fog(_G, "freezing vapour", 25)
-{{
-function place_fog(e, type, strength)
- e.lua_marker("!", fog_machine { pow_max = strength, cloud_type = type,
- delay_min = 50, delay_max = 300, size = 12,
- start_clouds = 1 } )
-end
-}}
-
-# Monster set functions
-
-# Some random monster lists are the same for multiple destination caves.
-# : ice_cave_random_monster_list_natural_giant(_G)
-{{
-function ice_cave_random_monster_list_natural_giant(e)
- e.set_random_mon_list("wolf w:35 / yak w:35 / polar bear w:15 / death yak / \
- frost giant w:5")
-end
-}}
-
-# : ice_cave_random_monster_list_undead_demon(_G)
-{{
-function ice_cave_random_monster_list_undead_demon(e)
- e.set_random_mon_list("white imp w:20 / ufetubus w:20 / freezing wraith / \
- wolf simulacrum / yak simulacrum / \
- polar bear simulacrum / human simulacrum / \
- elf simulacrum / orc simulacrum / \
- draconian simulacrum / ogre simulacrum / \
- centaur simulacrum / troll simulacrum / \
- naga simulacrum / blue devil / ice devil / \
- ice fiend w:5")
-end
-}}
-
-# : ice_cave_random_monster_list_undead_necromancer(_G)
-{{
-function ice_cave_random_monster_list_undead_necromancer(e)
- e.set_random_mon_list("white imp w:20 / ufetubus w:20 / freezing wraith / \
- wolf simulacrum / yak simulacrum / \
- polar bear simulacrum / human simulacrum / \
- elf simulacrum / orc simulacrum / \
- draconian simulacrum / ogre simulacrum / \
- centaur simulacrum / troll simulacrum / \
- naga simulacrum / necromancer")
-end
-}}
-
-# Currently, all the "caverns" maps use the same monster sets for placement.
-# : ice_cave_caverns_undead_demon_monster_set(_G)
-{{
-function ice_cave_caverns_undead_demon_monster_set(e)
- e.mons("white imp w:5 / ufetubus w:5 / human simulacrum w:2 / \
- elf simulacrum w:2 / orc simulacrum w:2")
- e.mons("polar bear simulacrum / freezing wraith w:3 / nothing w:1")
- e.mons("ice statue")
- e.mons("ice devil")
- e.mons("draconian simulacrum / ogre simulacrum / centaur simulacrum / \
- naga simulacrum / troll simulacrum")
- e.mons("freezing wraith / blue devil")
- e.mons("patrolling ice fiend")
-end
-}}
-
-# : ice_cave_caverns_natural_giant_monster_set(_G)
-{{
-function ice_cave_caverns_natural_giant_monster_set(e)
- e.mons("wolf / yak w:3 / nothing w:1")
- e.mons("polar bear / nothing w:5")
- e.mons("ice statue")
- e.mons("polar bear / death yak w:5")
- e.mons("polar bear / yak")
- e.mons("wolf")
- e.mons("patrolling frost giant")
-end
-}}
-
-# Add a milestone for entering the Ice Cave.
-{{
-function ice_cave_milestone(e)
- crawl.mark_milestone("br.enter", "entered an Ice Cave.")
-end
-}}
-
-# Entries ##########################################
-
-NAME: portal_ice_cave_entry_animals_and_master
-TAGS: uniq_ice_cave
-DEPTH: D:16-20, Lair:6-
-ORIENT: float
-: ice_cave_portal(_G)
-COLOUR: X = white
-KFEAT: X = x
-MONS: wolf / yak w:5 / nothing w:1
-MONS: yak / polar bear w:5 / nothing w:1
-MONS: polar bear / nothing w:2
-MONS: ice dragon w:8 / nothing w:2
-MAP
- xxxxxxx
-xxXXXXXxx
-xXX.4.XXx
-xX.3.3.Xx
-xX..O..Xx
-xX.2.2.Xx
-xXX...XXx
-xxXX.1.Xx
- xX11XXXx
- xXX.XXxx
- xXX.XXx
- xxXX.Xx
-xxXX.XXx
-xXX@XXxx
-ENDMAP
-
-NAME: portal_ice_cave_entry_horrid_things
-TAGS: uniq_ice_cave
-DEPTH: D:14-20, Elf:2-6
-ORIENT: float
-: ice_cave_portal(_G)
-COLOUR: X = white
-KFEAT: X = x
-MONS: ice beast / freezing wraith w:2 / nothing w:2
-MONS: freezing wraith / nothing w:3
-MONS: azure jelly w:3 / freezing wraith w:7
-MAP
-xxxxxxxxxxxxxxxxxxxxxxxx
-xxXXXXXxXXXXXXXXXXxxxxxx
-xXX...XXX........XXxxxxx
-xX.....X....2..1..XXXXXX
-xX..O..+..3..1..1......+
-xX.....X....2..1..XXXXXX
-xXX...XXX........XXxxxxx
-xxXXXXXxXXXXXXXXXXxxxxxx
-xxxxxxxxxxxxxxxxxxxxxxxx
-ENDMAP
-
-NAME: portal_ice_cave_demonic_guard
-TAGS: uniq_ice_cave
-DEPTH: D:14-20, Elf:2-6
-ORIENT: float
-: ice_cave_portal(_G)
-COLOUR: x = white
-MONS: ice devil
-MAP
-xxxxxxx
-x..O..x
-x.....x
-x.1.1.x
-x.....x
-xxx.xxx
-xxx.xxx
-xxx.xxx
-xxx.xxx
-xxx+xxx
-ENDMAP
-
-NAME: portal_ice_cave_entry_ice_statue_001
-TAGS: uniq_ice_cave
-DEPTH: D:14-20, Elf:2-6, Vault:1-7
-ORIENT: float
-: ice_cave_portal(_G)
-COLOUR: x = white
-MONS: ice statue
-MAP
-xxxxxxx
-x.....x
-x..O..x
-x.....x
-x..1..x
-x.....x
-x.....x
-xxx+xxx
-ENDMAP
-
-NAME: portal_ice_cave_entry_ice_statue_002
-TAGS: uniq_ice_cave
-DEPTH: D:14-20, Elf:2-6, Vault:1-7
-ORIENT: float
-: ice_cave_portal(_G)
-MONS: ice statue
-MAP
- .....
- .........
-...........
-.....1.....
-.....O.....
-.....1.....
-...........
- .........
- .....
-ENDMAP
-
-# The destination vaults ############
-#
-# Currently, there are four cave vaults (each of weight 8) and three
-# cavern vaults (each of weight 5).
-
-############################################################################
-# small caves
-#
-# All have the starting point next to the exit, so you can always retreat;
-# a middle point/area where there is some loot; and the end, where there is a
-# bigger challenge and some major loot. Ideally weaker characters attempt
-# to overcome the midpoint and then go back to dungeon, and strong characters
-# can try to clear the whole cave.
-
-# Foes: animals + frost giant & an ice statue.
-# Loot: heavy weapons and rC gear wearable by big races,
-# plus some useful potions in the freezer.
-NAME: ice_cave_small_01
-TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixup
-ORIENT: encompass
-WEIGHT: 8
-# Randomize the layout slightly.
-SHUFFLE: "'
-SUBST: "=. , ':x .:1
-: ice_cave_colours(_G)
-: ice_cave_random_monster_list_natural_giant(_G)
-: ice_cave_milestone(_G)
-MONS: yak / wolf / polar bear w:4
-MONS: polar bear
-MONS: frost giant
-MONS: polar bear w:3 generate_awake / wolf generate_awake / \
- yak generate_awake
-MONS: ice statue
-SHUFFLE: defg
-ITEM: giant club / giant spiked club / great mace w:9 / \
- battleaxe w:7 / glaive w:8 / halberd w:8 / great sword w:6 / \
- nothing w:58
-ITEM: great mace good_item / battleaxe good_item / glaive good_item / \
- halberd good_item / great sword good_item / nothing w:50
-ITEM: battleaxe ego:freezing / glaive ego:freezing / halberd ego:freezing / \
- great sword ego:freezing / battleaxe ego:freezing good_item / \
- glaive ego:freezing good_item / halberd ego:freezing good_item / \
- great sword ego:freezing good_item / nothing w:80
-ITEM: cap ego:cold_resistance w:9 / cap ego:resistance w:1 / \
- cloak ego:cold_resistance w:9 / cloak ego:resistance w:1 / \
- shield ego:cold_resistance w:9 / shield ego:protection w:1 / \
- large shield ego:cold_resistance w:5 / \
- animal skin ego:cold_resistance / nothing w:60
-ITEM: potion of resistance w:5 / potion of gain strength / \
- potion of might / potion of confusion / potion of levitation / \
- potion of experience w:2
-MAP
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-xxxxxxxxxxxxxxxxxxxx..xxxxxxxxxx12....xxxxxxxxxxxxxx
-xxxxxxxxxxxxxxxxx...xx...xxxx...2xxx...xxxxxxxxxxxxx
-xxxxxxxxxx......1..xxxxx..x212.xxxxxxx...1xxxxxxxxxx
-xxxxxxx.......1..1.xxxxxx....xxxxxxxxxxxx21..xxxxxxx
-xxxxxx...xxxx.3.1....xxxxxxxxxxxxxwwwxxxxxx....xxxxx
-xxxx...xxxfgxx.1..1...xxxxxxxxxxwwwwwxxxxxxxx....xxx
-xxx...xxdegefxx..1.....xxxxxwwwwwwwwwwwwwxxxxxx....x
-xxx...x$$$$gdex.......xxxxxwwwwwwwwwwwwwwwwwxxxxx..x
-xxx...x....$$xx.....xxxxwwwwxxwwwwwwwwwwwwxxxxxx11xx
-xxxx.......xxx.....xxwwwwxxxxxxxxxwwwwwwxxxxx...2xxx
-xxxxx............xxxwwwwxxxxxxxxxxxwwwxxxx......xxxx
-xxxx"xx.........x'wwwwwxxxxxxxxxxxxwxxxx...xxxxxxxxx
-xxwwxxxxxxxxxxxxxxwwwxxxxxxxxxxxxxxxxxx..xxxxxxxxxxx
-xxxwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxx..xxxxxxxxxxxx
-xxwwwwwwwwwwwwwwwwwx'xxxxxxxxxxxxxxx5...xxxxxxxxxxxx
-xxwwwxxxxxxxxxxwwxx'x'xxxxxxxxxxxxx.......xxxxxxxxxx
-xxwwxxxxxxxxxxxwwxxx'xxxxxxxxxxxxxxxx.......xxxxxxxx
-x"xxxxxxxxxxxxxxwxx'xxxxxx"xxxxxxxxxxx....2...xxxxxx
-xx"xxxxxxxxxxxxxxx'xxxxxxx""""x..xxxxxxx2......xxxxx
-xxx"xxxxxxxxxxxxx'xxxxxxx"xxxx.......xxx.......xxxxx
-xxx"xxxxxxxxxxxxx''xxxxx"xxx''xx......21x.....xxxxxx
-xxxx""xxxxxxxxxxxxx'xxx"xxx'xxxxx....1..2....xxxxxxx
-xxxxxx""""xxxxxxxxxx'xx"xxx'xxwwxx.1......1.xxxxxxxx
-xxxxxxxxxx"xxxxxxxxx'xxx"xxx'xxwwxx.x....x.xxxxxxxxx
-xxxxxxxxx"xxxxxxxxx'xxx"xxxxx'xxwwxxxx..xxxxxxxxxxxx
-xxxxxxx""xxxxxxxxx'xxx"xxxxxx'xxxwwxxx..xxxwwxxxxxxx
-xxxxxx"xxxxxxxxxxx''xxx"xxxxxx'xxwwxx..xxxwwxxxxxxxx
-xxxxx"xxxxxxxxxxxxx'xxxx""xxxx'xxwxx..xxxwwxxxxxxxxx
-xxxx"xxxxxxxxxxxxxxx'xxxx"xxx'xxxwwx...xxwwxxxxxxxxx
-xxx"xxxxxxxxxxxxxxxxx'xxxx"x'xxxxwwxx...xxwwxxxxxxxx
-xxx"xxxxxxxxxxxxxxxxx'xxxxx2xxxxxwwxxx44.xwwxxxxxxxx
-xxx"xxxxxxxxxxxxxxxxx'x..x.xxxxxwwxxxx4.4xxwwxxxxxxx
-xx"xxxxxxxxxxxxxxxxxxx.hx.xxxxxxwwxxx...xxxwwxxxxxxx
-xx"xxxxxxxxxxxxxxxx.1xhxhx.xxxxwwwxxx...xxxwwwxxxxxx
-x"xxxxxxxxxxxxxxxxx.xhxhxh.xxxwwwxxx.....xxxwwxxxxxx
-xx"xxxxxxxxx"xxxxxxx1.....xxxxxwwxx...A...xxxwxxxxxx
-xxx"""xxx"""x""xxx""xxxxxxxxxxxwwxx.......xxwwxxxxxx
-xxxxxx"""xxxxxx"""xxxxxxxxxxxxxwwxxx..<..xxxwwxxxxxx
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwwxxxx...xxxwwwxxxxxx
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-ENDMAP
-
-# Foes: ice beasts, ice dragons & ice statues.
-# Loot: some gold, jewellery (approximately three rings).
-NAME: ice_cave_small_02
-TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixup
-ORIENT: encompass
-WEIGHT: 8
-# Randomize the layout slightly.
-SHUFFLE: "'
-SUBST: "=. , ':x .:1
-: ice_cave_colours(_G)
-: dgn.set_random_mon_list("ice beast w:90 / ice dragon / nothing")
-: ice_cave_milestone(_G)
-MONS: ice beast
-MONS: ice dragon
-MONS: ice beast generate_awake
-MONS: ice statue
-ITEM: any jewellery / gold w:15 / nothing w:5
-ITEM: any jewellery good_item / gold w:5 / nothing w:5
-MAP
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-xxxxxxxxxxxxxxxxxxxxxxxxxx......xxxxxxxxx
-xxxxxxxxxxxxxxxxxxxxxxx.....xxx....xxxxxx
-xxxxxxxxxxxxxxxxxxxxxx..xxxxxxx...2..xxxx
-xxxxwwwxxxxxxxxxxxxxxxxx.xxxx$$.2....dexx
-xxwwwwwxxxxxxxxxxxxxx..xx.xx$$$$....deddx
-xwwwwwwwwwwxxxxxxxxx.xx..xx$$$$$$..deddxx
-xxxwwwwwwwwwwwxxxxx..xxxxxxxx$$$$$$$xxx'x
-xwwwwwwwwwwwxxxxxx11xxxxwwwxxxxxxxxxxwx'x
-xxxxwwwwwwxxxxx...1xxwwwwwwwwwwwwwwwwwwxx
-xxxxxwwwxxxx......xxwwwwwwwwwwwwwwwwwwwxx
-xxxxxwxxxx...xxxxxxxxxxxxxxxxxxxwwwwwwxxx
-xxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxx'xxxx
-xxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxx.xxxxx
-xxxxxx....xxxxxxxxxxxxxxxxxxx"""x..$$xxxx
-xxxx........xxxxxxxx""xxxxx""xxx.xxx$xxxx
-xxx...........xxxxx"xx""x""xxxxxx'xxx"xxx
-xx..............x""xxxxx"xxxxxxxxx'xxx"xx
-x................xxxxxxxxxxxxxxxxxx'xx"xx
-x.................xxxxxxxxxxxxxxxxxx'xx"x
-xx...1.111.1....xx'xxxxxxxxxxxxxxxxx'xx"x
-xxx...1.1.1.....xxx'xxx''xxxxx''x'x'xx"xx
-xwxx..........xxxxxx'''xx'xxx'xx'x'xx"xxx
-xwwxx4x....x4xxxxxxxxxxxxx''$xxxxxxx"xxxx
-xxwwxxxx..xxxxxxxxxxxxxxxxx$$$xxxx""xxxxx
-xxxwwxxx..xxxxxxxxxxxxxx"xx$$$$xx"xxxxxxx
-xxxwwxx..xxxxxxxxxxxxxx"x""x$$"xxx"xxxxxx
-xxxwxx..xxxxxxxxxxxxxxx"xxxxxxx"x"xxxxxxx
-xxxwwx...x""x"xxxxxxxxxx"xxxxxxx"xxxxxxxx
-xxxwwxx...xx"x""xxxxxxxxx"xxxxxxxxxxxxxxx
-xxxwwxxx33.xxxxx""xxxxx""xxxxxxxxxxxxxxxx
-xxwwxxxx3.3xxxxxxx"""x"xxxxxxxxxxxxxxxxxx
-xxwwxxx...xxxxxxxxxxx"xxxxxxxxxxxxxxxxxxx
-xxxxxxx...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-xwwxxx.....xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-xwwxx...A...xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-xwwxx.......xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-xwwxxx..<..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-xwwxxxx...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-ENDMAP
-
-# Foes: mostly in the undead vein, plus a necromancer and an ice statue.
-# Loot: ice magic loot, gear of cold resistance (one piece).
-NAME: ice_cave_small_03
-TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixup
-ORIENT: encompass
-WEIGHT: 8
-KFEAT: _ = altar_kikubaaqudgha
-SUBST: - = ........-
-KFEAT: - = alarm trap
-: ice_cave_colours(_G)
-: ice_cave_random_monster_list_undead_necromancer(_G)
-: ice_cave_milestone(_G)
-MONS: ice beast
-MONS: white imp
-MONS: freezing wraith
-MONS: human simulacrum / elf simulacrum / orc simulacrum / \
- draconian simulacrum w:5 / ogre simulacrum w:5 / \
- centaur simulacrum w:5 / troll simulacrum w:5 / naga simulacrum w:5
-MONS: necromancer / necromancer ; robe ego:cold_resistance / \
- necromancer ; robe ego:cold_resistance . wand of fire / \
- necromancer ; robe ego:cold_resistance . wand of fireball
-MONS: polar bear simulacrum w:3 generate_awake / \
- wolf simulacrum generate_awake / \
- yak simulacrum generate_awake
-MONS: ice statue
-ITEM: wand of frost / wand of cold w:5
-ITEM: ring of ice / staff of cold
-: if crawl.coinflip() then
-ITEM: manual of ice magic
-ITEM: nothing
-: else
-ITEM: book of ice / book of frost / book of minor magic [frost]
-ITEM: book of ice / book of frost / book of minor magic [frost]
-: end
-ITEM: cap ego:cold_resistance w:9 / \
- pair of gloves ego:cold_resistance w:9 / \
- cloak ego:cold_resistance w:9 / \
- naga barding ego:cold_resistance w:5 / \
- centaur barding ego:cold_resistance w:5 / \
- cap ego:resistance w:1 / pair of gloves ego:resistance w:1 / \
- cloak ego:resistance w:1 / \
- buckler ego:cold_resistance / helmet ego:cold_resistance
-MAP
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-xxxxxxxxxxxxxxxxxxxwwwxxxxxx....xxxxwxxxxxxxxxxxxxxx
-xxxxxxxxxxxxxxxxxxwwwwwxxx.......xxwxxxxxxxxxxxxxxxx
-xxwwxxxxxxxxxxxxxxwwwxxx...xxx..xxxxxxxxxxxxxxxxxxxx
-xxxwwwwwwwwwwwwwwwwwxxx...xxx..xxxxxxxxxxxxxxxxxxxxx
-xxwwwwwwwwwwwwwwwwwxxx...xxx..xxxxxxxxxxxxxxxxxxxxxx
-xxwwwxxxxxxxxxxwwxxxx3..xxx...xxxxxxxxxxxxxxxxxxxxxx
-xxwwxx.G...G.xxwwxx..33xxxx..xxxxxxxxxxxxxxxxxxxxxxx
-xxxxx.........xxwx....xxxxx...xxxxxxx...xxxxxxxxxxxx
-xxdx....2_424..xxx..xxxxxxxx....xxx...2....xxxxxxxxx
-xx*+.....44..2..xx...xxxxxxxx.......2.1.2...xxxxxxxx
-xxdx....423.342.xxx.33xxxxxxxxxx...1.....1...xxxxxxx
-xxxxx..4...324xxxxxxx3..xxxxxxxxx............xxxxxxx
-xxxxxxxG4.2G...xxxxxxxx...xxxxwwxx2........2xxxxxxxx
-xxxxxxxxxxxx....xxxxxxxx....xxxwwxx1x....x1xxxxxxxxx
-xxxxxxxxxxxxxx...xx.xxxxxx....xxwwxxxx..xxxxxxxxxxxx
-xxxxxxxxxxxx....xx...xxxxxxx...xxwwxxx..xxxwwxxxxxxx
-xxxxxlm..xxx..xxx..x..xxxxxxxx..xwwxx..xxxwwxxxxxxxx
-xxxxxxxx+xxxx.....xxx.....xxx..xxwxx..xxxwwxxxxxxxxx
-xxxxx444544xxx...xxxxx........xxxwwx...xxwwxxxxxxxxx
-xxxx.444444.xxxxxxxxx..3..3...xxxwwxx...xxwwxxxxxxxx
-xxx..xgdegx..xxxxxx*%...3.....xxxwwxxx.66xwwxxxxxxxx
-xx...xxffxx...xxxxx*%....3.3..xxwwxxxx6.6xxwwxxxxxxx
-xx....xxxx...xxxxxxxxx.......xxxwwxxx...xxxwwxxxxxxx
-xxxx.........xxxxxxxxxxx...xxxxwwwxxx...xxxwwwxxxxxx
-xxxx...7....xxxxxxxxxxxxx..xxxwwwxxx.....xxxwwxxxxxx
-xxxxx------xxxxxxxxxxxxxxxx..xxwwxx...A...xxxwxxxxxx
-xxxxxx----xxxxxx...xxxxxxxx...xwwxx.......xxwwxxxxxx
-xxxxxx---xxxx...xx...xx.....xxxwwxxx..<..xxxwwxxxxxx
-xxxxxxx.......xxxxxx....xxxxxxwwwxxxx...xxxwwwxxxxxx
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-ENDMAP
-
-# Foes: ice & blue devils, white imps & ufetubi, an ice statue.
-# Loot: weapons and/or armour.
-NAME: ice_cave_small_04
-TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixup
-ORIENT: encompass
-WEIGHT: 8
-NSUBST: . = 9:1 / 1:2 / *:.
-SHUFFLE: Qq / Zz / Nn / Bb / Mm
-SUBST: Q=2, Z=2, N=., B=., M=.
-SUBST: q=!, z=!, n=., b=., m=.
-# Replaces '!'s with fog generators, then makes them floor.
-: place_fog(_G, "freezing vapour", 100)
-KFEAT: ! = .
-# Couple of more random, milder fog generators.
-NSUBST: . = 3:! / *:.
-: place_fog(_G, "freezing vapour", 30)
-KFEAT: ! = .
-# The random ones weren't placed near the entrance, though.
-SUBST: - = .
-# Still more fog, in the water this time.
-NSUBST: w = 3:! / *:w
-: place_fog(_G, "freezing vapour", 50)
-KFEAT: ! = w
-{{
-ice_cave_colours(_G)
-dgn.set_random_mon_list("white imp w:35 / ufetubus w:35 / blue devil w:20 / \
- ice devil / nothing")
-ice_cave_milestone(_G)
-}}
-MONS: white imp / ufetubus
-MONS: ice devil / blue devil w:3
-MONS: ice statue
-MONS: blue devil
-SHUFFLE: dg, efh
-SUBST: e = ed
-ITEM: battleaxe ego:freezing / executioner's axe ego:freezing / \
- glaive ego:freezing / halberd ego:freezing / quick blade ego:freezing / \
- great sword ego:freezing / triple sword ego:freezing / \
- giant spiked club ego:freezing / demon trident ego:freezing
-ITEM: battleaxe ego:freezing good_item / executioner's axe ego:freezing good_item /\
- glaive ego:freezing good_item / halberd ego:freezing good_item / \
- great sword ego:freezing good_item / quick blade ego:freezing good_item /\
- triple sword ego:freezing good_item / demon trident ego:freezing good_item /\
- giant spiked club ego:freezing good_item
-ITEM: demon whip good_item / demon blade good_item / demon trident good_item
-ITEM: cap ego:cold_resistance / pair of gloves ego:cold_resistance / \
- cloak ego:cold_resistance / buckler ego:cold_resistance / \
- pair of boots ego:cold_resistance
-ITEM: crystal plate mail ego:cold_resistance / \
- troll leather armour ego:cold_resistance / \
- ice dragon armour good_item / robe ego:resistance / \
- naga barding ego:cold_resistance good_item w:5 / \
- centaur barding ego:cold_resistance good_item w:5 / \
- crystal plate mail ego:cold_resistance good_item / \
- troll leather armour ego:cold_resistance good_item
-MAP
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-xxxxxxxxxxxxxxxxxxxxxxxx....xxxxxxxxxxxxx
-xxxxxxxxxxxxxxxxxxxxxx........xxxxxxxxxxx
-xxxxxxxxxxxxxxxxxxxxxx...xxx....xxxxxxxxx
-xxxxxxxxxxxxxxxxxxxxx..xxx4xxx...xxxxxxxx
-xxxxxx...xxxxxxxxxxx...xx44..xxxx..xxxxxx
-xxxx..1..1...xxxxxxxx...xx.....xx...xxxxx
-xxx.1......1...xxxxxxx........dxxx..xxxxx
-xxx..........1..xxxx.....xx..dxx...xxxxxx
-xxx..1..1..1....xx.....xxxxxxxx...xxxxxxx
-xxxx................xxxxxxxxxx...xxxxxxxx
-xxxxx.........x...xxxxxxxxxxq..xxxxxxxxxx
-xxxxx1x....x3xxxxxxxxxx....Q..xxxxxxxxxxx
-xxxxxxxx..xxxxwwwxxx......QqQ..xxxxxxxxxx
-xxxxxxxx..xxxwwxxx....xx.........xxxxxxxx
-xxxxxxx..xxxwwxx.....xx..xxxx..z...xxxxxx
-xxxxxx..xxxwwxx4.b.x.....N..x...Z...xxxxx
-xxxxxx...xxwwxx..B.xxx..n.N.xx.ZzZ..4xxxx
-xxxxxxx...xxwwx4BbB..xx..N...xx.......xxx
-xxxxxxxx.-.xwwxx.........x.n........4xxxx
-xxxxxxxx---xxwwxx...xxx..x..xxx.....xxxxx
-xxxxxxx---xxwwwwxxxxx....x.....x..xxxxxxx
-xxxxxxx---xxwwwwwwx.....mx.....xxxxxxxxxx
-xxxxxx-----xxwwwwwxx.xx.M.m..xxxxxxxxxxxx
-xxxxx---A---xxwwwccccc.M.M.cccccxxxxxxxxx
-xxxxx-------xwwwwc...ccc.ccc...cxxxxxxxxx
-xxxxxx--<--xxwwwwc.e.........f.cxxxxxxxxx
-xxxxxxx---xxwwwwwc...cc*|*cc...cxxxxxxxxx
-xxxxxxxxxxxxxxxxxcccccccccccccccxxxxxxxxx
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-ENDMAP
-
-############################################################################
-# sprawling caverns
-#
-# A winding, tight cavern with a hard challenge at the end. You can always
-# go back to the beginning to retreat.
-# The caverns are more rare than the caves.
-
-NAME: ice_cave_caverns_01
-TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixup
-WEIGHT: 5
-ORIENT: encompass
-# A bit of layout randomization.
-: if crawl.coinflip() then
-SUBST: ' = x
-SUBST: - = .
-SUBST: _ = .
-: else
-SUBST: ' = .
-SUBST: - = x
-SUBST: _ = w
-: end
-: ice_cave_colours(_G)
-: ice_cave_milestone(_G)
-# Two different populations: undead/demon and natural/giant.
-: if crawl.coinflip() then
-: ice_cave_random_monster_list_undead_demon(_G)
-: ice_cave_caverns_undead_demon_monster_set(_G)
-ITEM: cloak ego:fire_resistance good_item / wizard hat good_item / \
- pair of gloves good_item / pair of boots good_item / nothing
-ITEM: book of ice / book of unlife / staff of cold / staff of death / \
- nothing w:30
-ITEM: ring of ice / ring of protection from fire / ring of life protection / \
- wand of cold / wand of draining / nothing
-: else
-: ice_cave_random_monster_list_natural_giant(_G)
-: ice_cave_caverns_natural_giant_monster_set(_G)
-ITEM: animal skin good_item ego:fire_resistance / \
- battleaxe good_item ego:freezing w:4 / \
- glaive good_item ego:freezing w:4 / \
- great sword good_item ego:freezing w:2 / nothing
-ITEM: book of ice / \
- crossbow ego:frost good_item no_uniq / \
- longbow ego:frost good_item no_uniq / nothing w:20
-ITEM: ring of ice / ring of protection from fire / wand of cold / \
- arrow ego:ice q:25 / bolt ego:ice q:20 / nothing
-: end
-ITEM: any wand / any potion w:5 / any scroll w:5
-MAP
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-xxxx.xxxxxxxxxxx-'xxxxxxxxxxwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-xx....xxxxxxxxx....xxxxxxxxxwwwxxxx*xxx$$xxxxxxxx...xx...xxxxxxxxgxxxx
-x...A.xxxxxx....xx....xxxxxxxwwwwx*x*xxx$$x-.x...xx...xx...xxxxxgxgxxx
-x.<....'-....xxxxxxx...xxxxxwwwwxxx*x.xxxx.'x..xxxxxxxxxx....xxxx.xxxx
-xx..xx....xxxxxxxx1111xxxxwwwwwwxxxxxx...xxxxx..xxxxxxxxxx..3..x.xxxxx
-xxxxxxxxxxxxxxx....xxxxxxxxwwwwxxxx11..x...x..xxxxwwwxxxxxx.....xxxxxx
-xxwxxwxwxxx.....xxxx______xxwwxxxx51xxxxxx..xxxwwwwxwxxxxx..6xxxxxxxxx
-xxxwxxxxx..xxxxxx___xx_____xxxx...xxxxwxxxxxxwwwxxxxxxxxx.66xxxwwwxxxx
-xwxxxx....xxwxx__xxxxxxxx___xx..xxxwwwxwxxxwwwxxxxxxxx....xxxxwwwxxxxx
-xxxx...xxxxwxx_xxxx....xxx__xxx..xxxxxwwwwwwxxxx....x...xxxxwwwxwwwxxx
-xxx..xxxwwwwx-xxx...xx...xxx_xxx..xxwwwwwxxxx...xx....xxxwwwxxxxxxwwxx
-x...xxwwwwwwxx-...x.xxxx...xx_x..xxxxwwwwxxx..xxxxxxxxxwxxxxxx.xxxxwxx
-x..xxxwwwwwxxx141xxxgxxxx...x_xx.11xxxwwwwxxx...xxxwwwwxx...x.x.xxxxxx
-xx..xxxwwwwxx...xxxgxxx...xxx_xxxx51xxxwwwxxxx..1.xxxwwx.U...xxx..xxxx
-xxx..xwwwwxxxx....xxxx5.xxxwxx_xx...xxxxxwwwxxxx.1.5xxxxx.x.xxx..xxxxx
-xx..xxxwwwwxx'x.xxxxx5..5xxwwxx_xxx1.xxxxxwwxxxxx5415.xxxxxx.xx...xxxx
-xx...xxwwwxx..'xxxxwxx15.5xxwwxx_xxx51xxxxwwxxxxxx5.41.xxxx..xxx454xxx
-xxx..-xxxxx..xxxwxwwwxxx5.1xxwwxx_--x1xxxxxwwwxxxxxx.5..x...xxx5.7.5xx
-xxx...-xx-..xxxwxwwxxwxx-x1.xxwwxx'''xxxxxxwwwwxxxxxxx'...xxxxxx5.5xxx
-xxx...x--xx..1xxxxxwxx--x-..'xxwx'x'xxxxxwxxwwwwxxxx*.xxxxx.xxx..xxx|x
-xxx222x''x''x..xx1xxx----xxxx'xx'''xxxxwxxxwwwwwwxxxx*xxxx.<.xxx.$defx
-xxxx'.'xx'xx1.x.1...2xxxxxxxxx'''xxxxwxxwwxwwwwwwwwxxx--........x|fedx
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'xxxxwxwwwxwwwwwxwxxxxxxxxxx.xxxxxxxxxx
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-ENDMAP
-
-NAME: ice_cave_caverns_02
-TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixup
-WEIGHT: 5
-ORIENT: encompass
-# Two different populations: undead/demon and natural/giant.
-# The fog generators are placed differently - the natural population
-# doesn't have enough cold resistance for many clouds. The ';' placeholder
-# symbol gives the natural monsters some safety padding from generator
-# placement.
-: if crawl.coinflip() then
-: ice_cave_random_monster_list_undead_demon(_G)
-: ice_cave_caverns_undead_demon_monster_set(_G)
-ITEM: cloak ego:fire_resistance good_item / wizard hat good_item / \
- pair of gloves good_item / pair of boots good_item / nothing
-ITEM: book of ice / book of unlife / staff of cold / staff of death / \
- nothing w:30
-ITEM: ring of ice / ring of protection from fire / ring of life protection / \
- wand of cold / wand of draining / nothing
-# Take out ';' safety padding.
-SUBST: ; = .
-# Place the fog generators:
-SUBST: . = .:40 !:1
-: place_fog(_G, "freezing vapour", 25)
-KFEAT: ! = .
-: else
-: ice_cave_random_monster_list_natural_giant(_G)
-: ice_cave_caverns_natural_giant_monster_set(_G)
-ITEM: animal skin good_item ego:fire_resistance / \
- battleaxe good_item ego:freezing w:4 / \
- glaive good_item ego:freezing w:4 / \
- great sword good_item ego:freezing w:2 / nothing
-ITEM: book of ice / \
- crossbow ego:frost good_item no_uniq / \
- longbow ego:frost good_item no_uniq / nothing w:20
-ITEM: ring of ice / ring of protection from fire / wand of cold / \
- arrow ego:ice q:25 / bolt ego:ice q:20 / nothing
-# Place the fog generators. The predetermined ones are mild.
-: place_fog(_G, "freezing vapour", 5)
-# Place a few random, mild ones.
-SUBST: . = .:60 !:1
-: place_fog(_G, "freezing vapour", 10)
-KFEAT: ! = .
-SUBST: ; = .
-: end
-ITEM: any wand / any potion w:5 / any scroll w:5
-# The ':' provides fog-free zone near the entrance.
-SUBST: : = .
-# Some layout randomization.
-: if crawl.coinflip() then
-SUBST: '=x , -=.
-: else
-SUBST: '=. , -=x
-: end
-: ice_cave_colours(_G)
-: ice_cave_milestone(_G)
-MAP
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-xx::xxwwwwxxx.x.'x-;x5;;5xxwwwwwxxx1;;;x;Wxxxxxx15415;xxxxxx......xxxx
-xx:<:xwwwwxx...x.x;x;x15;5xxwwxxx''';;x;xxWWxx15xx5;41;xxxx..xxx...xxx
-xxx::xxwwxx..xxx-;'xx;xx5;1xxxx'''xxx.-xxxxWWWxxxxxx;;;;x...xxx..U..xx
-xxx:A:xxwx..xxxwxxxwwwwxxx1;x'''xxwwx---xxxxWWwxwwwxxx'...xxxxxx...xxx
-xxx:::xwwxx;;;xxxxxwwwwwxx;;'xxxxxxxxxx--xxwwwwwwwxx*.xxxxxxxxx..xxxxx
-xxx:::xxwxxxx;;xx1-'xxwwxxx--xxxxx'''x--xxwwwwwwwxx.x*xxxx..xxxx..xxxx
-xxxx:11xwwxx1;x;1;1;2xxwx---xx.*.*.xx..xxxwwwwwwwwww-x-x..xx.x..xxxxxx
-xxx11:xxwwwxxx1xxxxx1;xxxx--x.g.T.g.xxx;;xwwwwwwwwx-xx..xxxxx.xxxxxxxx
-xxxx::xwwwwwxx2;;1x11;;xxxx-...*.*..xx;;;xxwwwwwwx'...xxxxxxxxxxxxxxxx
-xxxxx:xxwxxxxxxxxx;xxx;;xwxx...xxxxxxxxx;;xxwwwxxx.-xxxxxxxxxxxxxxxxxx
-xxxxx;;xxxx.x....xxxx;;;xxwxxx.-xwwwxxx1xxxxwwwxx..xxxxxxxxxxxxxxxxxxx
-x*x$xx..xx.*..-'..xxxxx..xxx''.-xwwwx15xxxwwwwxxxx;;xxxxxxxxxxxxxxxxxx
-xx$x.xx..xx..xxxx..xwwxxx;;''xx--xxxx115xxwwwwwxxxx;;;xxxxxxxxxxxxxxxx
-x$x..x.!..xx..xxx..xwwwwxx--xxxx-xx;1;xxxwwwwwwxxxxx;;;;xxxxxxxxxxxxxx
-xx.xx;x;;xxx..xx...xxwwwwxx1;xxxx.;;xxxxxwwwwwwxxxxxx;2;2;xxxxxxxxxxxx
-xxxxxx;;xxxx...xx.3.xxwwxx'-;1x'''xxxxxwwwwwwwwxxxxxx;54;2;xxxxxxxxxxx
-xxxxx;;xxxx...xxxx...xxxx;;x;;''xxxxxxwwwwwwwxxxx$$x;2475;;;xxxxxxxxxx
-xxxx5;5xx...xxxx.x.xxxxx..;x;xxxxxxwwwwwwwwxxxxdf$$;;;;;;;xx;xxxxxxxxx
-xxxx;;xx;..xxwwxx|x.xx...xx;xxxxxwwwwwwwwwwwxxed|$$$;;;xxxxxx..xxxxxxx
-xxxx122;;.xxwwwwxx....xxxxxxxxxxwwwwwwwwwwwwwxxfe|$$$$.xxxxxxxx....xxx
-xxxxx1;;xxxwwwwwxxxxxxxxxxxxxxxxxwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxx...<x
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-ENDMAP
-
-NAME: ice_cave_caverns_03
-TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixup
-WEIGHT: 5
-ORIENT: encompass
-# Two different populations: undead/demon and natural/giant.
-# Different fog generator generation according to population,
-# as the natural monsters can't stomach the clouds.
-: if crawl.coinflip() then
-: ice_cave_random_monster_list_undead_demon(_G)
-: ice_cave_caverns_undead_demon_monster_set(_G)
-ITEM: cloak ego:fire_resistance good_item / wizard hat good_item / \
- pair of gloves good_item / pair of boots good_item / nothing
-ITEM: book of ice / book of unlife / staff of cold / staff of death / \
- nothing w:30
-ITEM: ring of ice / ring of protection from fire / ring of life protection / \
- wand of cold / wand of draining / nothing
-# Place fog generators.
-SUBST: 3 = 3!
-: place_fog(_G, "freezing vapour", 25)
-KFEAT: ! = .
-SUBST: ; = .
-SUBST: . = .:100 !:1
-: place_fog(_G, "freezing vapour", 15)
-KFEAT: ! = .
-: else
-: ice_cave_random_monster_list_natural_giant(_G)
-: ice_cave_caverns_natural_giant_monster_set(_G)
-ITEM: animal skin good_item ego:fire_resistance / \
- battleaxe good_item ego:freezing w:4 / \
- glaive good_item ego:freezing w:4 / \
- great sword good_item ego:freezing w:2 / nothing
-ITEM: book of ice / \
- crossbow ego:frost good_item no_uniq / \
- longbow ego:frost good_item no_uniq / nothing w:20
-ITEM: ring of ice / ring of protection from fire / wand of cold / \
- arrow ego:ice q:25 / bolt ego:ice q:20 / nothing
-# Place fog generators.
-SUBST: 3 = 3!
-: place_fog(_G, "freezing vapour", 20)
-KFEAT: ! = .
-SUBST: . = .:100 !:1
-: place_fog(_G, "freezing vapour", 8)
-KFEAT: ! = .
-SUBST: ; = .
-: end
-ITEM: any wand / any potion w:5 / any scroll w:5
-# The ':' provides a fog-free zone near the entrance.
-SUBST: : = .
-# A bit of layout randomization for the middle part.
-: if crawl.coinflip() then
-SUBST: '=x , -=.
-: else
-SUBST: '=. , -=x
-: end
-: ice_cave_colours(_G)
-: ice_cave_milestone(_G)
-MAP
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.x.xxxxxxxxxxxxxxxxxxxxxxxx
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.U.x$xxxxxxxx...xx;;;xxxxxxx
-xxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwxxx.xxx$x..x...xx...xx;55xxxxx
-xxxxxxxxxxxxxxxxxxxxxxxxwwwwxWWWxxxxxxx..x..xxxxxxxxxx;554xxx
-xxxxxxxxxxxxxxxxxxxxxxxxxwxxxxxWwWxWW.xxxxx..xxwwwwwwxx;2525x
-xxxxxxxxxxxxxxxxxxxxxwwxxxxxxxxxWWWWxW..xx..xxwwwwwwwwxx427;x
-xxxxxxxxxxxxxxxxxxxwwwwwxxxxxxxWWxwWwxx...xxxwwwwwwwxxx;;5xxx
-xxxxxxxxxxxxxxxxxxxxwwwwwxxx.WWxxxxwwwxxxxxwwwwwwxxxxx;;;xxxx
-xxxxxxxxxxxxxxxxxxxxxxwwwxx."xxxwwwwwxwwxwwwxxxxxxx....xxxxxx
-xxxxxxxxxxxxxxxx;...xxxwwwxx..xxxwwwwwwwwwwxx<..!x...xx.xfxxx
-xxxxxxxxxxxxxx;;;xx...xxxwwxx..xxxxwwwwwwwwxxxx....xxxxxex|xx
-xxxxxxxxxxxx;44x;xxxx...xxwx..xxxxxxwwxwxwwwwxxxxxxxxxxdx$xdx
-xxxxxxxxxxx;4;xxx$xxxx;;;xwxx"..xxxxxwwwwwxwwwxxxxxxxxxx|xexx
-xxxxxxxxxx;;;xxx$xxx;;;xxxwwxxx..xxxwwwxxwwwwxwxxxxxxxxxxfxxx
-xxxxxxxxxxx;;..xxxx5;xxxwwwwxx...xxxxxwwwwwwwxxxxxxxxxxxxxxxx
-xxxxxxxxxx.x.xxxxx51;5xxwwwwxxxx..xxxxxwwxxxxxxxxxxxxxxxxxxxx
-xxxxxxxxx;;;xxxxxxx15;5xxwwxxx'''".xxxxwwxxxxxxxxxxxxxxxxxxxx
-xxxxxxxx;;xxxxxxxxxxx5;1xxxx''xxxx.-xxxxwwwxxxxxxxxxxxxxxxxxx
-xxxxxxx;1xxxxxxxxxxxxxx;;x'''xxxxx---xxxwwwwxxxxxxxxxxxxxxxxx
-xxxxxxxx;11xxxxxxxxxxxx;;''xxxxx'xxx--xxxwwwwxxxxxxxxxxxxxxxx
-xxxxxxxxxx1;xx.xxxxxxxxx--xxxxx''''--xxxwwwwwwxxxxxxxxxxxxxxx
-xxxxxxxxx;;x;;....xxxx---xx.*.*.xx..xxxxwwwwwwwwxxxxxxxxxxxxx
-xxxxxxxxxxx;xxxxx.;xxxx--x.g.T.g.xxx..xxxwwwwxxxxxxxxxxxxxxxx
-xxxxxxxxxxx2;;2x;;;;xxxx-...*.*..xx.;;xxwwwwwwxxxxxxxxxxxxxxx
-xxxxxxxxxxxxxxx;xxx;1xxxx...xxxxxxxxx;;xxwwwxxxxxxxxxxxxxxxxx
-xxxxxxxx.x;;;'xxxx;1;xxxxxx.-xxxxxxx1xxxxwwwxxxxxxxxxxxxxxxxx
-xxxxxxx;*66-x..xxxxx11xxxx'.--x---15xxxwwwwxxxxxxxxxxxxxxxxxx
-xxx::<xx;;xxxx..xxxxxx;;''xx-x-xxx115xxwwwwwxxxxxxxxxxxxxxxxx
-xxA::xxxx;.xxx..xxxxxxx--xxxx-xx.11xxxwwwwwwxxxxxxxxxxxxxxxxx
-xx::::xxx;,xx...xxxxxxxx1;xxx-;;;xxxxxwwwwwwxxxxxxxxxxxxxxxxx
-xx:::xxxx;;;xx.3.xxxxxxxx;1x'''xxxxxwwwwwwwwxxxxxxxxxxxxxxxxx
-xx::xxxx21;xxxx...xxxx..x;;''xxxxxxwwwwwwwxxxxxxxxxxxxxxxxxxx
-x:::xx;12xxxx.x.xxxxx...x;xxxxxxwwwwwwwwxxxxxxxxxxxxxxxxxxxxx
-x::xx;;;xxxxxx|x.xx...xx;xxxxxwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxx
-x:::..;xxxxxxxx....xxxxxxxxxxwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxx
-xx:..xxxxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxx
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-ENDMAP
+###############################################################################
+#
+# The Ice Cave (Eino)
+#
+#
+# Ice Cave is aimed to appear at somewhere in the middle game. It should be
+# fairly challenging, but also allow retreating. The entries shouldn't be out
+# of depth.
+#
+# Flavour: white colours, ice monsters, appropriate clouds.
+# The escape is at the start. The player can back away if s/he decides
+# some challenges are too much to handle.
+#
+###############################################################################
+
+{{
+function ice_cave_portal(e)
+ local desc_long = "A permanent cold front seems to surround this " ..
+ "portal. Whatever lives on the other side, they will be full of " ..
+ "grim and arctic fury. You note that the archway is melting away."
+
+ local timeout_turns = crawl.random_range(1200, 1700)
+
+ local messager =
+ timed_msg {
+ visible = true,
+ -- $F{xxx} will be substituted with the 'entity' property of the timed
+ -- marker, or with the desc property (if entity is not set).
+ messages = time_messages(timeout_turns,
+ "$F{The} is slowly melting away.",
+ "$F{The} is melting away.",
+ "$F{The} is quickly melting away.",
+ "$F{The} is almost completely melted.")
+ }
+
+ e.lua_marker('O',
+ timed_marker {
+ disappear = "The archway melts and disappears.",
+ desc = "A frozen archway",
+ desc_long = desc_long,
+ entity = 'archway',
+ dst = "ice_cave",
+ dstname_abbrev = "IceCv",
+ dstorigin = "in an ice cave",
+ overmap = "frozen archway",
+ turns = timeout_turns,
+ floor = "floor",
+ msg = messager })
+ e.kfeat("O = enter_portal_vault")
+ e.colour("O = white")
+end
+}}
+
+{{
+-- Alter short feature descriptions for all ice cave destination vaults.
+function ice_cave_feat_descs()
+ dgn.set_feature_desc_short("rock wall", "ice covered $BASE")
+ dgn.set_feature_desc_short("gate leading back to the Dungeon",
+ "ice covered $BASE")
+ dgn.set_feature_desc_short("empty arch of ancient stone",
+ "ice choked $BASE")
+ dgn.set_feature_desc_short("Some shallow water",
+ "Some ice crusted shallow water")
+ dgn.set_feature_desc_short("Some deep water",
+ "Some ice crusted deep water")
+
+ dgn.set_feature_desc_long("Some deep water",
+ "It looks freezing!");
+end
+
+dgn.set_lt_callback("ice_cave", "ice_cave_feat_descs")
+}}
+
+# For destination (not entry) vaults, use the following line after all
+# substitutions have been performed:
+# : ice_cave_colours(_G)
+{{
+function ice_cave_colours(e)
+ e.kfeat("< = exit_portal_vault")
+ e.colour("< = white")
+ e.lrockcol("white")
+ e.lfloorcol("blue")
+ e.lrocktile("wall_ice")
+ e.lfloortile("floor_ice")
+end
+}}
+
+# Using this function will turn any ! glyph on the map into a fog generator.
+# Any use requires two parameters as follows:
+# : place_fog(_G, "freezing vapour", 25)
+{{
+function place_fog(e, type, strength)
+ e.lua_marker("!", fog_machine { pow_max = strength, cloud_type = type,
+ delay_min = 50, delay_max = 300, size = 12,
+ start_clouds = 1 } )
+end
+}}
+
+# Monster set functions
+
+# Some random monster lists are the same for multiple destination caves.
+# : ice_cave_random_monster_list_natural_giant(_G)
+{{
+function ice_cave_random_monster_list_natural_giant(e)
+ e.set_random_mon_list("wolf w:35 / yak w:35 / polar bear w:15 / death yak / \
+ frost giant w:5")
+end
+}}
+
+# : ice_cave_random_monster_list_undead_demon(_G)
+{{
+function ice_cave_random_monster_list_undead_demon(e)
+ e.set_random_mon_list("white imp w:20 / ufetubus w:20 / freezing wraith / \
+ wolf simulacrum / yak simulacrum / \
+ polar bear simulacrum / human simulacrum / \
+ elf simulacrum / orc simulacrum / \
+ draconian simulacrum / ogre simulacrum / \
+ centaur simulacrum / troll simulacrum / \
+ naga simulacrum / blue devil / ice devil / \
+ ice fiend w:5")
+end
+}}
+
+# : ice_cave_random_monster_list_undead_necromancer(_G)
+{{
+function ice_cave_random_monster_list_undead_necromancer(e)
+ e.set_random_mon_list("white imp w:20 / ufetubus w:20 / freezing wraith / \
+ wolf simulacrum / yak simulacrum / \
+ polar bear simulacrum / human simulacrum / \
+ elf simulacrum / orc simulacrum / \
+ draconian simulacrum / ogre simulacrum / \
+ centaur simulacrum / troll simulacrum / \
+ naga simulacrum / necromancer")
+end
+}}
+
+# Currently, all the "caverns" maps use the same monster sets for placement.
+# : ice_cave_caverns_undead_demon_monster_set(_G)
+{{
+function ice_cave_caverns_undead_demon_monster_set(e)
+ e.mons("white imp w:5 / ufetubus w:5 / human simulacrum w:2 / \
+ elf simulacrum w:2 / orc simulacrum w:2")
+ e.mons("polar bear simulacrum / freezing wraith w:3 / nothing w:1")
+ e.mons("ice statue")
+ e.mons("ice devil")
+ e.mons("draconian simulacrum / ogre simulacrum / centaur simulacrum / \
+ naga simulacrum / troll simulacrum")
+ e.mons("freezing wraith / blue devil")
+ e.mons("patrolling ice fiend")
+end
+}}
+
+# : ice_cave_caverns_natural_giant_monster_set(_G)
+{{
+function ice_cave_caverns_natural_giant_monster_set(e)
+ e.mons("wolf / yak w:3 / nothing w:1")
+ e.mons("polar bear / nothing w:5")
+ e.mons("ice statue")
+ e.mons("polar bear / death yak w:5")
+ e.mons("polar bear / yak")
+ e.mons("wolf")
+ e.mons("patrolling frost giant")
+end
+}}
+
+# Add a milestone for entering the Ice Cave.
+{{
+function ice_cave_milestone(e)
+ crawl.mark_milestone("br.enter", "entered an Ice Cave.")
+end
+}}
+
+# Entries ##########################################
+
+NAME: portal_ice_cave_entry_animals_and_master
+TAGS: uniq_ice_cave
+DEPTH: D:16-20, Lair:6-
+ORIENT: float
+: ice_cave_portal(_G)
+COLOUR: X = white
+KFEAT: X = x
+MONS: wolf / yak w:5 / nothing w:1
+MONS: yak / polar bear w:5 / nothing w:1
+MONS: polar bear / nothing w:2
+MONS: ice dragon w:8 / nothing w:2
+MAP
+ xxxxxxx
+xxXXXXXxx
+xXX.4.XXx
+xX.3.3.Xx
+xX..O..Xx
+xX.2.2.Xx
+xXX...XXx
+xxXX.1.Xx
+ xX11XXXx
+ xXX.XXxx
+ xXX.XXx
+ xxXX.Xx
+xxXX.XXx
+xXX@XXxx
+ENDMAP
+
+NAME: portal_ice_cave_entry_horrid_things
+TAGS: uniq_ice_cave
+DEPTH: D:14-20, Elf:2-6
+ORIENT: float
+: ice_cave_portal(_G)
+COLOUR: X = white
+KFEAT: X = x
+MONS: ice beast / freezing wraith w:2 / nothing w:2
+MONS: freezing wraith / nothing w:3
+MONS: azure jelly w:3 / freezing wraith w:7
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxx
+xxXXXXXxXXXXXXXXXXxxxxxx
+xXX...XXX........XXxxxxx
+xX.....X....2..1..XXXXXX
+xX..O..+..3..1..1......+
+xX.....X....2..1..XXXXXX
+xXX...XXX........XXxxxxx
+xxXXXXXxXXXXXXXXXXxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+NAME: portal_ice_cave_demonic_guard
+TAGS: uniq_ice_cave
+DEPTH: D:14-20, Elf:2-6
+ORIENT: float
+: ice_cave_portal(_G)
+COLOUR: x = white
+MONS: ice devil
+MAP
+xxxxxxx
+x..O..x
+x.....x
+x.1.1.x
+x.....x
+xxx.xxx
+xxx.xxx
+xxx.xxx
+xxx.xxx
+xxx+xxx
+ENDMAP
+
+NAME: portal_ice_cave_entry_ice_statue_001
+TAGS: uniq_ice_cave
+DEPTH: D:14-20, Elf:2-6, Vault:1-7
+ORIENT: float
+: ice_cave_portal(_G)
+COLOUR: x = white
+MONS: ice statue
+MAP
+xxxxxxx
+x.....x
+x..O..x
+x.....x
+x..1..x
+x.....x
+x.....x
+xxx+xxx
+ENDMAP
+
+NAME: portal_ice_cave_entry_ice_statue_002
+TAGS: uniq_ice_cave
+DEPTH: D:14-20, Elf:2-6, Vault:1-7
+ORIENT: float
+: ice_cave_portal(_G)
+MONS: ice statue
+MAP
+ .....
+ .........
+...........
+.....1.....
+.....O.....
+.....1.....
+...........
+ .........
+ .....
+ENDMAP
+
+# The destination vaults ############
+#
+# Currently, there are five cave vaults (each of weight 6) and three
+# cavern vaults (each of weight 5).
+
+############################################################################
+# small caves
+#
+# All have the starting point next to the exit, so you can always retreat;
+# a middle point/area where there is some loot; and the end, where there is a
+# bigger challenge and some major loot. Ideally weaker characters attempt
+# to overcome the midpoint and then go back to dungeon, and strong characters
+# can try to clear the whole cave.
+
+# Foes: animals + frost giant & an ice statue.
+# Loot: heavy weapons and rC gear wearable by big races,
+# plus some useful potions in the freezer.
+NAME: ice_cave_small_01
+TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixup
+ORIENT: encompass
+WEIGHT: 6
+# Randomize the layout slightly.
+SHUFFLE: "'
+SUBST: "=. , ':x .:1
+: ice_cave_colours(_G)
+: ice_cave_random_monster_list_natural_giant(_G)
+: ice_cave_milestone(_G)
+MONS: yak / wolf / polar bear w:4
+MONS: polar bear
+MONS: frost giant
+MONS: polar bear w:3 generate_awake / wolf generate_awake / \
+ yak generate_awake
+MONS: ice statue
+SHUFFLE: defg
+ITEM: giant club / giant spiked club / great mace w:9 / \
+ battleaxe w:7 / glaive w:8 / halberd w:8 / great sword w:6 / \
+ nothing w:58
+ITEM: great mace good_item / battleaxe good_item / glaive good_item / \
+ halberd good_item / great sword good_item / nothing w:50
+ITEM: battleaxe ego:freezing / glaive ego:freezing / halberd ego:freezing / \
+ great sword ego:freezing / battleaxe ego:freezing good_item / \
+ glaive ego:freezing good_item / halberd ego:freezing good_item / \
+ great sword ego:freezing good_item / nothing w:80
+ITEM: cap ego:cold_resistance w:9 / cap ego:resistance w:1 / \
+ cloak ego:cold_resistance w:9 / cloak ego:resistance w:1 / \
+ shield ego:cold_resistance w:9 / shield ego:protection w:1 / \
+ large shield ego:cold_resistance w:5 / \
+ animal skin ego:cold_resistance / nothing w:60
+ITEM: potion of resistance w:5 / potion of gain strength / \
+ potion of might / potion of confusion / potion of levitation / \
+ potion of experience w:2
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxx..xxxxxxxxxx12....xxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxx...xx...xxxx...2xxx...xxxxxxxxxxxxx
+xxxxxxxxxx......1..xxxxx..x212.xxxxxxx...1xxxxxxxxxx
+xxxxxxx.......1..1.xxxxxx....xxxxxxxxxxxx21..xxxxxxx
+xxxxxx...xxxx.3.1....xxxxxxxxxxxxxwwwxxxxxx....xxxxx
+xxxx...xxxfgxx.1..1...xxxxxxxxxxwwwwwxxxxxxxx....xxx
+xxx...xxdegefxx..1.....xxxxxwwwwwwwwwwwwwxxxxxx....x
+xxx...x$$$$gdex.......xxxxxwwwwwwwwwwwwwwwwwxxxxx..x
+xxx...x....$$xx.....xxxxwwwwxxwwwwwwwwwwwwxxxxxx11xx
+xxxx.......xxx.....xxwwwwxxxxxxxxxwwwwwwxxxxx...2xxx
+xxxxx............xxxwwwwxxxxxxxxxxxwwwxxxx......xxxx
+xxxx"xx.........x'wwwwwxxxxxxxxxxxxwxxxx...xxxxxxxxx
+xxwwxxxxxxxxxxxxxxwwwxxxxxxxxxxxxxxxxxx..xxxxxxxxxxx
+xxxwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxx..xxxxxxxxxxxx
+xxwwwwwwwwwwwwwwwwwx'xxxxxxxxxxxxxxx5...xxxxxxxxxxxx
+xxwwwxxxxxxxxxxwwxx'x'xxxxxxxxxxxxx.......xxxxxxxxxx
+xxwwxxxxxxxxxxxwwxxx'xxxxxxxxxxxxxxxx.......xxxxxxxx
+x"xxxxxxxxxxxxxxwxx'xxxxxx"xxxxxxxxxxx....2...xxxxxx
+xx"xxxxxxxxxxxxxxx'xxxxxxx""""x..xxxxxxx2......xxxxx
+xxx"xxxxxxxxxxxxx'xxxxxxx"xxxx.......xxx.......xxxxx
+xxx"xxxxxxxxxxxxx''xxxxx"xxx''xx......21x.....xxxxxx
+xxxx""xxxxxxxxxxxxx'xxx"xxx'xxxxx....1..2....xxxxxxx
+xxxxxx""""xxxxxxxxxx'xx"xxx'xxwwxx.1......1.xxxxxxxx
+xxxxxxxxxx"xxxxxxxxx'xxx"xxx'xxwwxx.x....x.xxxxxxxxx
+xxxxxxxxx"xxxxxxxxx'xxx"xxxxx'xxwwxxxx..xxxxxxxxxxxx
+xxxxxxx""xxxxxxxxx'xxx"xxxxxx'xxxwwxxx..xxxwwxxxxxxx
+xxxxxx"xxxxxxxxxxx''xxx"xxxxxx'xxwwxx..xxxwwxxxxxxxx
+xxxxx"xxxxxxxxxxxxx'xxxx""xxxx'xxwxx..xxxwwxxxxxxxxx
+xxxx"xxxxxxxxxxxxxxx'xxxx"xxx'xxxwwx...xxwwxxxxxxxxx
+xxx"xxxxxxxxxxxxxxxxx'xxxx"x'xxxxwwxx...xxwwxxxxxxxx
+xxx"xxxxxxxxxxxxxxxxx'xxxxx2xxxxxwwxxx44.xwwxxxxxxxx
+xxx"xxxxxxxxxxxxxxxxx'x..x.xxxxxwwxxxx4.4xxwwxxxxxxx
+xx"xxxxxxxxxxxxxxxxxxx.hx.xxxxxxwwxxx...xxxwwxxxxxxx
+xx"xxxxxxxxxxxxxxxx.1xhxhx.xxxxwwwxxx...xxxwwwxxxxxx
+x"xxxxxxxxxxxxxxxxx.xhxhxh.xxxwwwxxx.....xxxwwxxxxxx
+xx"xxxxxxxxx"xxxxxxx1.....xxxxxwwxx...A...xxxwxxxxxx
+xxx"""xxx"""x""xxx""xxxxxxxxxxxwwxx.......xxwwxxxxxx
+xxxxxx"""xxxxxx"""xxxxxxxxxxxxxwwxxx..<..xxxwwxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwwxxxx...xxxwwwxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+# Foes: ice beasts, ice dragons & ice statues.
+# Loot: some gold, jewellery (approximately three rings).
+NAME: ice_cave_small_02
+TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixup
+ORIENT: encompass
+WEIGHT: 6
+# Randomize the layout slightly.
+SHUFFLE: "'
+SUBST: "=. , ':x .:1
+: ice_cave_colours(_G)
+: dgn.set_random_mon_list("ice beast w:90 / ice dragon / nothing")
+: ice_cave_milestone(_G)
+MONS: ice beast
+MONS: ice dragon
+MONS: ice beast generate_awake
+MONS: ice statue
+ITEM: any jewellery / gold w:15 / nothing w:5
+ITEM: any jewellery good_item / gold w:5 / nothing w:5
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxx......xxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxx.....xxx....xxxxxx
+xxxxxxxxxxxxxxxxxxxxxx..xxxxxxx...2..xxxx
+xxxxwwwxxxxxxxxxxxxxxxxx.xxxx$$.2....dexx
+xxwwwwwxxxxxxxxxxxxxx..xx.xx$$$$....deddx
+xwwwwwwwwwwxxxxxxxxx.xx..xx$$$$$$..deddxx
+xxxwwwwwwwwwwwxxxxx..xxxxxxxx$$$$$$$xxx'x
+xwwwwwwwwwwwxxxxxx11xxxxwwwxxxxxxxxxxwx'x
+xxxxwwwwwwxxxxx...1xxwwwwwwwwwwwwwwwwwwxx
+xxxxxwwwxxxx......xxwwwwwwwwwwwwwwwwwwwxx
+xxxxxwxxxx...xxxxxxxxxxxxxxxxxxxwwwwwwxxx
+xxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxx'xxxx
+xxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxx.xxxxx
+xxxxxx....xxxxxxxxxxxxxxxxxxx"""x..$$xxxx
+xxxx........xxxxxxxx""xxxxx""xxx.xxx$xxxx
+xxx...........xxxxx"xx""x""xxxxxx'xxx"xxx
+xx..............x""xxxxx"xxxxxxxxx'xxx"xx
+x................xxxxxxxxxxxxxxxxxx'xx"xx
+x.................xxxxxxxxxxxxxxxxxx'xx"x
+xx...1.111.1....xx'xxxxxxxxxxxxxxxxx'xx"x
+xxx...1.1.1.....xxx'xxx''xxxxx''x'x'xx"xx
+xwxx..........xxxxxx'''xx'xxx'xx'x'xx"xxx
+xwwxx4x....x4xxxxxxxxxxxxx''$xxxxxxx"xxxx
+xxwwxxxx..xxxxxxxxxxxxxxxxx$$$xxxx""xxxxx
+xxxwwxxx..xxxxxxxxxxxxxx"xx$$$$xx"xxxxxxx
+xxxwwxx..xxxxxxxxxxxxxx"x""x$$"xxx"xxxxxx
+xxxwxx..xxxxxxxxxxxxxxx"xxxxxxx"x"xxxxxxx
+xxxwwx...x""x"xxxxxxxxxx"xxxxxxx"xxxxxxxx
+xxxwwxx...xx"x""xxxxxxxxx"xxxxxxxxxxxxxxx
+xxxwwxxx33.xxxxx""xxxxx""xxxxxxxxxxxxxxxx
+xxwwxxxx3.3xxxxxxx"""x"xxxxxxxxxxxxxxxxxx
+xxwwxxx...xxxxxxxxxxx"xxxxxxxxxxxxxxxxxxx
+xxxxxxx...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xwwxxx.....xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xwwxx...A...xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xwwxx.......xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xwwxxx..<..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xwwxxxx...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+# Foes: mostly in the undead vein, plus a necromancer and an ice statue.
+# Loot: ice magic loot, gear of cold resistance (one piece).
+NAME: ice_cave_small_03
+TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixup
+ORIENT: encompass
+WEIGHT: 6
+KFEAT: _ = altar_kikubaaqudgha
+SUBST: - = ........-
+KFEAT: - = alarm trap
+: ice_cave_colours(_G)
+: ice_cave_random_monster_list_undead_necromancer(_G)
+: ice_cave_milestone(_G)
+MONS: ice beast
+MONS: white imp
+MONS: freezing wraith
+MONS: human simulacrum / elf simulacrum / orc simulacrum / \
+ draconian simulacrum w:5 / ogre simulacrum w:5 / \
+ centaur simulacrum w:5 / troll simulacrum w:5 / naga simulacrum w:5
+MONS: necromancer / necromancer ; robe ego:cold_resistance / \
+ necromancer ; robe ego:cold_resistance . wand of fire / \
+ necromancer ; robe ego:cold_resistance . wand of fireball
+MONS: polar bear simulacrum w:3 generate_awake / \
+ wolf simulacrum generate_awake / \
+ yak simulacrum generate_awake
+MONS: ice statue
+ITEM: wand of frost / wand of cold w:5
+ITEM: ring of ice / staff of cold
+: if crawl.coinflip() then
+ITEM: manual of ice magic
+ITEM: nothing
+: else
+ITEM: book of ice / book of frost / book of minor magic [frost]
+ITEM: book of ice / book of frost / book of minor magic [frost]
+: end
+ITEM: cap ego:cold_resistance w:9 / \
+ pair of gloves ego:cold_resistance w:9 / \
+ cloak ego:cold_resistance w:9 / \
+ naga barding ego:cold_resistance w:5 / \
+ centaur barding ego:cold_resistance w:5 / \
+ cap ego:resistance w:1 / pair of gloves ego:resistance w:1 / \
+ cloak ego:resistance w:1 / \
+ buckler ego:cold_resistance / helmet ego:cold_resistance
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxwwwxxxxxx....xxxxwxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxwwwwwxxx.......xxwxxxxxxxxxxxxxxxx
+xxwwxxxxxxxxxxxxxxwwwxxx...xxx..xxxxxxxxxxxxxxxxxxxx
+xxxwwwwwwwwwwwwwwwwwxxx...xxx..xxxxxxxxxxxxxxxxxxxxx
+xxwwwwwwwwwwwwwwwwwxxx...xxx..xxxxxxxxxxxxxxxxxxxxxx
+xxwwwxxxxxxxxxxwwxxxx3..xxx...xxxxxxxxxxxxxxxxxxxxxx
+xxwwxx.G...G.xxwwxx..33xxxx..xxxxxxxxxxxxxxxxxxxxxxx
+xxxxx.........xxwx....xxxxx...xxxxxxx...xxxxxxxxxxxx
+xxdx....2_424..xxx..xxxxxxxx....xxx...2....xxxxxxxxx
+xx*+.....44..2..xx...xxxxxxxx.......2.1.2...xxxxxxxx
+xxdx....423.342.xxx.33xxxxxxxxxx...1.....1...xxxxxxx
+xxxxx..4...324xxxxxxx3..xxxxxxxxx............xxxxxxx
+xxxxxxxG4.2G...xxxxxxxx...xxxxwwxx2........2xxxxxxxx
+xxxxxxxxxxxx....xxxxxxxx....xxxwwxx1x....x1xxxxxxxxx
+xxxxxxxxxxxxxx...xx.xxxxxx....xxwwxxxx..xxxxxxxxxxxx
+xxxxxxxxxxxx....xx...xxxxxxx...xxwwxxx..xxxwwxxxxxxx
+xxxxxlm..xxx..xxx..x..xxxxxxxx..xwwxx..xxxwwxxxxxxxx
+xxxxxxxx+xxxx.....xxx.....xxx..xxwxx..xxxwwxxxxxxxxx
+xxxxx444544xxx...xxxxx........xxxwwx...xxwwxxxxxxxxx
+xxxx.444444.xxxxxxxxx..3..3...xxxwwxx...xxwwxxxxxxxx
+xxx..xgdegx..xxxxxx*%...3.....xxxwwxxx.66xwwxxxxxxxx
+xx...xxffxx...xxxxx*%....3.3..xxwwxxxx6.6xxwwxxxxxxx
+xx....xxxx...xxxxxxxxx.......xxxwwxxx...xxxwwxxxxxxx
+xxxx.........xxxxxxxxxxx...xxxxwwwxxx...xxxwwwxxxxxx
+xxxx...7....xxxxxxxxxxxxx..xxxwwwxxx.....xxxwwxxxxxx
+xxxxx------xxxxxxxxxxxxxxxx..xxwwxx...A...xxxwxxxxxx
+xxxxxx----xxxxxx...xxxxxxxx...xwwxx.......xxwwxxxxxx
+xxxxxx---xxxx...xx...xx.....xxxwwxxx..<..xxxwwxxxxxx
+xxxxxxx.......xxxxxx....xxxxxxwwwxxxx...xxxwwwxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+# Foes: ice & blue devils, white imps & ufetubi, an ice statue.
+# Loot: weapons and/or armour.
+NAME: ice_cave_small_04
+TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixup
+ORIENT: encompass
+WEIGHT: 6
+NSUBST: . = 9:1 / 1:2 / *:.
+SHUFFLE: Qq / Zz / Nn / Bb / Mm
+SUBST: Q=2, Z=2, N=., B=., M=.
+SUBST: q=!, z=!, n=., b=., m=.
+# Replaces '!'s with fog generators, then makes them floor.
+: place_fog(_G, "freezing vapour", 100)
+KFEAT: ! = .
+# Couple of more random, milder fog generators.
+NSUBST: . = 3:! / *:.
+: place_fog(_G, "freezing vapour", 30)
+KFEAT: ! = .
+# The random ones weren't placed near the entrance, though.
+SUBST: - = .
+# Still more fog, in the water this time.
+NSUBST: w = 3:! / *:w
+: place_fog(_G, "freezing vapour", 50)
+KFEAT: ! = w
+{{
+ice_cave_colours(_G)
+dgn.set_random_mon_list("white imp w:35 / ufetubus w:35 / blue devil w:20 / \
+ ice devil / nothing")
+ice_cave_milestone(_G)
+}}
+MONS: white imp / ufetubus
+MONS: ice devil / blue devil w:3
+MONS: ice statue
+MONS: blue devil
+SHUFFLE: dg, efh
+SUBST: e = ed
+ITEM: battleaxe ego:freezing / executioner's axe ego:freezing / \
+ glaive ego:freezing / halberd ego:freezing / quick blade ego:freezing / \
+ great sword ego:freezing / triple sword ego:freezing / \
+ giant spiked club ego:freezing / demon trident ego:freezing
+ITEM: battleaxe ego:freezing good_item / executioner's axe ego:freezing good_item /\
+ glaive ego:freezing good_item / halberd ego:freezing good_item / \
+ great sword ego:freezing good_item / quick blade ego:freezing good_item /\
+ triple sword ego:freezing good_item / demon trident ego:freezing good_item /\
+ giant spiked club ego:freezing good_item
+ITEM: demon whip good_item / demon blade good_item / demon trident good_item
+ITEM: cap ego:cold_resistance / pair of gloves ego:cold_resistance / \
+ cloak ego:cold_resistance / buckler ego:cold_resistance / \
+ pair of boots ego:cold_resistance
+ITEM: crystal plate mail ego:cold_resistance / \
+ troll leather armour ego:cold_resistance / \
+ ice dragon armour good_item / robe ego:resistance / \
+ naga barding ego:cold_resistance good_item w:5 / \
+ centaur barding ego:cold_resistance good_item w:5 / \
+ crystal plate mail ego:cold_resistance good_item / \
+ troll leather armour ego:cold_resistance good_item
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxx....xxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxx........xxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxx...xxx....xxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxx..xxx4xxx...xxxxxxxx
+xxxxxx...xxxxxxxxxxx...xx44..xxxx..xxxxxx
+xxxx..1..1...xxxxxxxx...xx.....xx...xxxxx
+xxx.1......1...xxxxxxx........dxxx..xxxxx
+xxx..........1..xxxx.....xx..dxx...xxxxxx
+xxx..1..1..1....xx.....xxxxxxxx...xxxxxxx
+xxxx................xxxxxxxxxx...xxxxxxxx
+xxxxx.........x...xxxxxxxxxxq..xxxxxxxxxx
+xxxxx1x....x3xxxxxxxxxx....Q..xxxxxxxxxxx
+xxxxxxxx..xxxxwwwxxx......QqQ..xxxxxxxxxx
+xxxxxxxx..xxxwwxxx....xx.........xxxxxxxx
+xxxxxxx..xxxwwxx.....xx..xxxx..z...xxxxxx
+xxxxxx..xxxwwxx4.b.x.....N..x...Z...xxxxx
+xxxxxx...xxwwxx..B.xxx..n.N.xx.ZzZ..4xxxx
+xxxxxxx...xxwwx4BbB..xx..N...xx.......xxx
+xxxxxxxx.-.xwwxx.........x.n........4xxxx
+xxxxxxxx---xxwwxx...xxx..x..xxx.....xxxxx
+xxxxxxx---xxwwwwxxxxx....x.....x..xxxxxxx
+xxxxxxx---xxwwwwwwx.....mx.....xxxxxxxxxx
+xxxxxx-----xxwwwwwxx.xx.M.m..xxxxxxxxxxxx
+xxxxx---A---xxwwwccccc.M.M.cccccxxxxxxxxx
+xxxxx-------xwwwwc...ccc.ccc...cxxxxxxxxx
+xxxxxx--<--xxwwwwc.e.........f.cxxxxxxxxx
+xxxxxxx---xxwwwwwc...cc*|*cc...cxxxxxxxxx
+xxxxxxxxxxxxxxxxxcccccccccccccccxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+NAME: ice_cave_tombish
+# This is an ice cave which is also a tomb of a necromancer who likes staying
+# alive and simulacrums, or just a chillout of an ice fiend. By Zaba.
+# Weighted as a small cave, although this is pretty tough. --Eino
+TAGS: ice_cave no_item_gen no_monster_gen
+ORIENT: encompass
+WEIGHT: 6
+# S is either an ice statue or a granite statue.
+SUBST: S = GGS
+KMONS: S = ice statue
+# I is an ice statue with loot underneath.
+KITEM: I = any scroll q:3
+KMONS: I = ice statue
+MONS: ice devil / blue devil / nothing w:7
+# FIXME: I can't quite make up more simulacrums
+MONS: grizzly bear simulacrum / bear simulacrum / dragon simulacrum /\
+ human simulacrum / golden dragon simulacrum w:1
+MONS: Ice Fiend w:2 / necromancer
+ITEM: any potion / any scroll / any weapon good_item / any armour good_item
+KFEAT: ' = alarm trap / net trap / arrow trap / bolt trap w:5 / floor w:5
+: ice_cave_colours(_G)
+: ice_cave_milestone(_G)
+: ice_cave_random_monster_list_undead_demon(_G)
+MAP
+ xxxxx
+ xx...xx
+ xx.....xx
+ x...A...x
+ x...<...x
+ xx.....xx
+ xx...xx
+ x...xx
+ xx...x
+ xx...x
+ x...xx
+ xxxx...xxxx
+ xxIx.....xIxx
+ xx...........xx
+ x.............x
+xx.............xx
+x.......1.......x
+x....1.....1....x
+x.......U.......x
+x....1.....1....x
+x.......1.......x
+xx.............xx
+ x.cnnc...cnnc.x
+ xxc11c...c11cxx
+ xc11cc+cc11cx
+ ccc+c...c+ccc
+ c...c...c...c
+ccc.ccc...ccc.ccc
+c...c2c...c2c...c
+c+ccc+c...c+ccc+c
+c'c2+.......+2c'c
+c'ccc.G...G.ccc'c
+c'c2+.......+2c'c
+c'ccc.G...G.ccc'c
+c'c2+.......+2c'c
+c'ccc.G...G.ccc'c
+c'c2+.......+2c'c
+c+cccccc+cccccc+c
+c...............c
+ccccS.ccccc.Scccc
+ cc.cd3dc.cc
+ c.cdUdc.c
+ c.cdddc.c
+ c.cc+cc.c
+ c.'''''.c
+ ccccScccc
+ ccc
+ENDMAP
+
+############################################################################
+# sprawling caverns
+#
+# A winding, tight cavern with a hard challenge at the end. You can always
+# go back to the beginning to retreat.
+# The caverns are more rare than the caves.
+
+NAME: ice_cave_caverns_01
+TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixup
+WEIGHT: 5
+ORIENT: encompass
+# A bit of layout randomization.
+: if crawl.coinflip() then
+SUBST: ' = x
+SUBST: - = .
+SUBST: _ = .
+: else
+SUBST: ' = .
+SUBST: - = x
+SUBST: _ = w
+: end
+: ice_cave_colours(_G)
+: ice_cave_milestone(_G)
+# Two different populations: undead/demon and natural/giant.
+: if crawl.coinflip() then
+: ice_cave_random_monster_list_undead_demon(_G)
+: ice_cave_caverns_undead_demon_monster_set(_G)
+ITEM: cloak ego:fire_resistance good_item / wizard hat good_item / \
+ pair of gloves good_item / pair of boots good_item / nothing
+ITEM: book of ice / book of unlife / staff of cold / staff of death / \
+ nothing w:30
+ITEM: ring of ice / ring of protection from fire / ring of life protection / \
+ wand of cold / wand of draining / nothing
+: else
+: ice_cave_random_monster_list_natural_giant(_G)
+: ice_cave_caverns_natural_giant_monster_set(_G)
+ITEM: animal skin good_item ego:fire_resistance / \
+ battleaxe good_item ego:freezing w:4 / \
+ glaive good_item ego:freezing w:4 / \
+ great sword good_item ego:freezing w:2 / nothing
+ITEM: book of ice / \
+ crossbow ego:frost good_item no_uniq / \
+ longbow ego:frost good_item no_uniq / nothing w:20
+ITEM: ring of ice / ring of protection from fire / wand of cold / \
+ arrow ego:ice q:25 / bolt ego:ice q:20 / nothing
+: end
+ITEM: any wand / any potion w:5 / any scroll w:5
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxx.xxxxxxxxxxx-'xxxxxxxxxxwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xx....xxxxxxxxx....xxxxxxxxxwwwxxxx*xxx$$xxxxxxxx...xx...xxxxxxxxgxxxx
+x...A.xxxxxx....xx....xxxxxxxwwwwx*x*xxx$$x-.x...xx...xx...xxxxxgxgxxx
+x.<....'-....xxxxxxx...xxxxxwwwwxxx*x.xxxx.'x..xxxxxxxxxx....xxxx.xxxx
+xx..xx....xxxxxxxx1111xxxxwwwwwwxxxxxx...xxxxx..xxxxxxxxxx..3..x.xxxxx
+xxxxxxxxxxxxxxx....xxxxxxxxwwwwxxxx11..x...x..xxxxwwwxxxxxx.....xxxxxx
+xxwxxwxwxxx.....xxxx______xxwwxxxx51xxxxxx..xxxwwwwxwxxxxx..6xxxxxxxxx
+xxxwxxxxx..xxxxxx___xx_____xxxx...xxxxwxxxxxxwwwxxxxxxxxx.66xxxwwwxxxx
+xwxxxx....xxwxx__xxxxxxxx___xx..xxxwwwxwxxxwwwxxxxxxxx....xxxxwwwxxxxx
+xxxx...xxxxwxx_xxxx....xxx__xxx..xxxxxwwwwwwxxxx....x...xxxxwwwxwwwxxx
+xxx..xxxwwwwx-xxx...xx...xxx_xxx..xxwwwwwxxxx...xx....xxxwwwxxxxxxwwxx
+x...xxwwwwwwxx-...x.xxxx...xx_x..xxxxwwwwxxx..xxxxxxxxxwxxxxxx.xxxxwxx
+x..xxxwwwwwxxx141xxxgxxxx...x_xx.11xxxwwwwxxx...xxxwwwwxx...x.x.xxxxxx
+xx..xxxwwwwxx...xxxgxxx...xxx_xxxx51xxxwwwxxxx..1.xxxwwx.U...xxx..xxxx
+xxx..xwwwwxxxx....xxxx5.xxxwxx_xx...xxxxxwwwxxxx.1.5xxxxx.x.xxx..xxxxx
+xx..xxxwwwwxx'x.xxxxx5..5xxwwxx_xxx1.xxxxxwwxxxxx5415.xxxxxx.xx...xxxx
+xx...xxwwwxx..'xxxxwxx15.5xxwwxx_xxx51xxxxwwxxxxxx5.41.xxxx..xxx454xxx
+xxx..-xxxxx..xxxwxwwwxxx5.1xxwwxx_--x1xxxxxwwwxxxxxx.5..x...xxx5.7.5xx
+xxx...-xx-..xxxwxwwxxwxx-x1.xxwwxx'''xxxxxxwwwwxxxxxxx'...xxxxxx5.5xxx
+xxx...x--xx..1xxxxxwxx--x-..'xxwx'x'xxxxxwxxwwwwxxxx*.xxxxx.xxx..xxx|x
+xxx222x''x''x..xx1xxx----xxxx'xx'''xxxxwxxxwwwwwwxxxx*xxxx.<.xxx.$defx
+xxxx'.'xx'xx1.x.1...2xxxxxxxxx'''xxxxwxxwwxwwwwwwwwxxx--........x|fedx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'xxxxwxwwwxwwwwwxwxxxxxxxxxx.xxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+NAME: ice_cave_caverns_02
+TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixup
+WEIGHT: 5
+ORIENT: encompass
+# Two different populations: undead/demon and natural/giant.
+# The fog generators are placed differently - the natural population
+# doesn't have enough cold resistance for many clouds. The ';' placeholder
+# symbol gives the natural monsters some safety padding from generator
+# placement.
+: if crawl.coinflip() then
+: ice_cave_random_monster_list_undead_demon(_G)
+: ice_cave_caverns_undead_demon_monster_set(_G)
+ITEM: cloak ego:fire_resistance good_item / wizard hat good_item / \
+ pair of gloves good_item / pair of boots good_item / nothing
+ITEM: book of ice / book of unlife / staff of cold / staff of death / \
+ nothing w:30
+ITEM: ring of ice / ring of protection from fire / ring of life protection / \
+ wand of cold / wand of draining / nothing
+# Take out ';' safety padding.
+SUBST: ; = .
+# Place the fog generators:
+SUBST: . = .:40 !:1
+: place_fog(_G, "freezing vapour", 25)
+KFEAT: ! = .
+: else
+: ice_cave_random_monster_list_natural_giant(_G)
+: ice_cave_caverns_natural_giant_monster_set(_G)
+ITEM: animal skin good_item ego:fire_resistance / \
+ battleaxe good_item ego:freezing w:4 / \
+ glaive good_item ego:freezing w:4 / \
+ great sword good_item ego:freezing w:2 / nothing
+ITEM: book of ice / \
+ crossbow ego:frost good_item no_uniq / \
+ longbow ego:frost good_item no_uniq / nothing w:20
+ITEM: ring of ice / ring of protection from fire / wand of cold / \
+ arrow ego:ice q:25 / bolt ego:ice q:20 / nothing
+# Place the fog generators. The predetermined ones are mild.
+: place_fog(_G, "freezing vapour", 5)
+# Place a few random, mild ones.
+SUBST: . = .:60 !:1
+: place_fog(_G, "freezing vapour", 10)
+KFEAT: ! = .
+SUBST: ; = .
+: end
+ITEM: any wand / any potion w:5 / any scroll w:5
+# The ':' provides fog-free zone near the entrance.
+SUBST: : = .
+# Some layout randomization.
+: if crawl.coinflip() then
+SUBST: '=x , -=.
+: else
+SUBST: '=. , -=x
+: end
+: ice_cave_colours(_G)
+: ice_cave_milestone(_G)
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xx::xxwwwwxxx.x.'x-;x5;;5xxwwwwwxxx1;;;x;Wxxxxxx15415;xxxxxx......xxxx
+xx:<:xwwwwxx...x.x;x;x15;5xxwwxxx''';;x;xxWWxx15xx5;41;xxxx..xxx...xxx
+xxx::xxwwxx..xxx-;'xx;xx5;1xxxx'''xxx.-xxxxWWWxxxxxx;;;;x...xxx..U..xx
+xxx:A:xxwx..xxxwxxxwwwwxxx1;x'''xxwwx---xxxxWWwxwwwxxx'...xxxxxx...xxx
+xxx:::xwwxx;;;xxxxxwwwwwxx;;'xxxxxxxxxx--xxwwwwwwwxx*.xxxxxxxxx..xxxxx
+xxx:::xxwxxxx;;xx1-'xxwwxxx--xxxxx'''x--xxwwwwwwwxx.x*xxxx..xxxx..xxxx
+xxxx:11xwwxx1;x;1;1;2xxwx---xx.*.*.xx..xxxwwwwwwwwww-x-x..xx.x..xxxxxx
+xxx11:xxwwwxxx1xxxxx1;xxxx--x.g.T.g.xxx;;xwwwwwwwwx-xx..xxxxx.xxxxxxxx
+xxxx::xwwwwwxx2;;1x11;;xxxx-...*.*..xx;;;xxwwwwwwx'...xxxxxxxxxxxxxxxx
+xxxxx:xxwxxxxxxxxx;xxx;;xwxx...xxxxxxxxx;;xxwwwxxx.-xxxxxxxxxxxxxxxxxx
+xxxxx;;xxxx.x....xxxx;;;xxwxxx.-xwwwxxx1xxxxwwwxx..xxxxxxxxxxxxxxxxxxx
+x*x$xx..xx.*..-'..xxxxx..xxx''.-xwwwx15xxxwwwwxxxx;;xxxxxxxxxxxxxxxxxx
+xx$x.xx..xx..xxxx..xwwxxx;;''xx--xxxx115xxwwwwwxxxx;;;xxxxxxxxxxxxxxxx
+x$x..x.!..xx..xxx..xwwwwxx--xxxx-xx;1;xxxwwwwwwxxxxx;;;;xxxxxxxxxxxxxx
+xx.xx;x;;xxx..xx...xxwwwwxx1;xxxx.;;xxxxxwwwwwwxxxxxx;2;2;xxxxxxxxxxxx
+xxxxxx;;xxxx...xx.3.xxwwxx'-;1x'''xxxxxwwwwwwwwxxxxxx;54;2;xxxxxxxxxxx
+xxxxx;;xxxx...xxxx...xxxx;;x;;''xxxxxxwwwwwwwxxxx$$x;2475;;;xxxxxxxxxx
+xxxx5;5xx...xxxx.x.xxxxx..;x;xxxxxxwwwwwwwwxxxxdf$$;;;;;;;xx;xxxxxxxxx
+xxxx;;xx;..xxwwxx|x.xx...xx;xxxxxwwwwwwwwwwwxxed|$$$;;;xxxxxx..xxxxxxx
+xxxx122;;.xxwwwwxx....xxxxxxxxxxwwwwwwwwwwwwwxxfe|$$$$.xxxxxxxx....xxx
+xxxxx1;;xxxwwwwwxxxxxxxxxxxxxxxxxwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxx...<x
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+NAME: ice_cave_caverns_03
+TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixup
+WEIGHT: 5
+ORIENT: encompass
+# Two different populations: undead/demon and natural/giant.
+# Different fog generator generation according to population,
+# as the natural monsters can't stomach the clouds.
+: if crawl.coinflip() then
+: ice_cave_random_monster_list_undead_demon(_G)
+: ice_cave_caverns_undead_demon_monster_set(_G)
+ITEM: cloak ego:fire_resistance good_item / wizard hat good_item / \
+ pair of gloves good_item / pair of boots good_item / nothing
+ITEM: book of ice / book of unlife / staff of cold / staff of death / \
+ nothing w:30
+ITEM: ring of ice / ring of protection from fire / ring of life protection / \
+ wand of cold / wand of draining / nothing
+# Place fog generators.
+SUBST: 3 = 3!
+: place_fog(_G, "freezing vapour", 25)
+KFEAT: ! = .
+SUBST: ; = .
+SUBST: . = .:100 !:1
+: place_fog(_G, "freezing vapour", 15)
+KFEAT: ! = .
+: else
+: ice_cave_random_monster_list_natural_giant(_G)
+: ice_cave_caverns_natural_giant_monster_set(_G)
+ITEM: animal skin good_item ego:fire_resistance / \
+ battleaxe good_item ego:freezing w:4 / \
+ glaive good_item ego:freezing w:4 / \
+ great sword good_item ego:freezing w:2 / nothing
+ITEM: book of ice / \
+ crossbow ego:frost good_item no_uniq / \
+ longbow ego:frost good_item no_uniq / nothing w:20
+ITEM: ring of ice / ring of protection from fire / wand of cold / \
+ arrow ego:ice q:25 / bolt ego:ice q:20 / nothing
+# Place fog generators.
+SUBST: 3 = 3!
+: place_fog(_G, "freezing vapour", 20)
+KFEAT: ! = .
+SUBST: . = .:100 !:1
+: place_fog(_G, "freezing vapour", 8)
+KFEAT: ! = .
+SUBST: ; = .
+: end
+ITEM: any wand / any potion w:5 / any scroll w:5
+# The ':' provides a fog-free zone near the entrance.
+SUBST: : = .
+# A bit of layout randomization for the middle part.
+: if crawl.coinflip() then
+SUBST: '=x , -=.
+: else
+SUBST: '=. , -=x
+: end
+: ice_cave_colours(_G)
+: ice_cave_milestone(_G)
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.x.xxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.U.x$xxxxxxxx...xx;;;xxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwxxx.xxx$x..x...xx...xx;55xxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxwwwwxWWWxxxxxxx..x..xxxxxxxxxx;554xxx
+xxxxxxxxxxxxxxxxxxxxxxxxxwxxxxxWwWxWW.xxxxx..xxwwwwwwxx;2525x
+xxxxxxxxxxxxxxxxxxxxxwwxxxxxxxxxWWWWxW..xx..xxwwwwwwwwxx427;x
+xxxxxxxxxxxxxxxxxxxwwwwwxxxxxxxWWxwWwxx...xxxwwwwwwwxxx;;5xxx
+xxxxxxxxxxxxxxxxxxxxwwwwwxxx.WWxxxxwwwxxxxxwwwwwwxxxxx;;;xxxx
+xxxxxxxxxxxxxxxxxxxxxxwwwxx."xxxwwwwwxwwxwwwxxxxxxx....xxxxxx
+xxxxxxxxxxxxxxxx;...xxxwwwxx..xxxwwwwwwwwwwxx<..!x...xx.xfxxx
+xxxxxxxxxxxxxx;;;xx...xxxwwxx..xxxxwwwwwwwwxxxx....xxxxxex|xx
+xxxxxxxxxxxx;44x;xxxx...xxwx..xxxxxxwwxwxwwwwxxxxxxxxxxdx$xdx
+xxxxxxxxxxx;4;xxx$xxxx;;;xwxx"..xxxxxwwwwwxwwwxxxxxxxxxx|xexx
+xxxxxxxxxx;;;xxx$xxx;;;xxxwwxxx..xxxwwwxxwwwwxwxxxxxxxxxxfxxx
+xxxxxxxxxxx;;..xxxx5;xxxwwwwxx...xxxxxwwwwwwwxxxxxxxxxxxxxxxx
+xxxxxxxxxx.x.xxxxx51;5xxwwwwxxxx..xxxxxwwxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxx;;;xxxxxxx15;5xxwwxxx'''".xxxxwwxxxxxxxxxxxxxxxxxxxx
+xxxxxxxx;;xxxxxxxxxxx5;1xxxx''xxxx.-xxxxwwwxxxxxxxxxxxxxxxxxx
+xxxxxxx;1xxxxxxxxxxxxxx;;x'''xxxxx---xxxwwwwxxxxxxxxxxxxxxxxx
+xxxxxxxx;11xxxxxxxxxxxx;;''xxxxx'xxx--xxxwwwwxxxxxxxxxxxxxxxx
+xxxxxxxxxx1;xx.xxxxxxxxx--xxxxx''''--xxxwwwwwwxxxxxxxxxxxxxxx
+xxxxxxxxx;;x;;....xxxx---xx.*.*.xx..xxxxwwwwwwwwxxxxxxxxxxxxx
+xxxxxxxxxxx;xxxxx.;xxxx--x.g.T.g.xxx..xxxwwwwxxxxxxxxxxxxxxxx
+xxxxxxxxxxx2;;2x;;;;xxxx-...*.*..xx.;;xxwwwwwwxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxx;xxx;1xxxx...xxxxxxxxx;;xxwwwxxxxxxxxxxxxxxxxx
+xxxxxxxx.x;;;'xxxx;1;xxxxxx.-xxxxxxx1xxxxwwwxxxxxxxxxxxxxxxxx
+xxxxxxx;*66-x..xxxxx11xxxx'.--x---15xxxwwwwxxxxxxxxxxxxxxxxxx
+xxx::<xx;;xxxx..xxxxxx;;''xx-x-xxx115xxwwwwwxxxxxxxxxxxxxxxxx
+xxA::xxxx;.xxx..xxxxxxx--xxxx-xx.11xxxwwwwwwxxxxxxxxxxxxxxxxx
+xx::::xxx;,xx...xxxxxxxx1;xxx-;;;xxxxxwwwwwwxxxxxxxxxxxxxxxxx
+xx:::xxxx;;;xx.3.xxxxxxxx;1x'''xxxxxwwwwwwwwxxxxxxxxxxxxxxxxx
+xx::xxxx21;xxxx...xxxx..x;;''xxxxxxwwwwwwwxxxxxxxxxxxxxxxxxxx
+x:::xx;12xxxx.x.xxxxx...x;xxxxxxwwwwwwwwxxxxxxxxxxxxxxxxxxxxx
+x::xx;;;xxxxxx|x.xx...xx;xxxxxwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxx
+x:::..;xxxxxxxx....xxxxxxxxxxwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxx
+xx:..xxxxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP