This reverts commit 12ec49f4941b83c362269a7a420d0f709c05a6a6.
3XCKCQRD5AQKE6EH3QIEYHUYA2KDGUHTARIQHJOXDC2SFOASR6UQC ################################################################################# 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!");enddgn.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_masterTAGS: uniq_ice_caveDEPTH: D:16-20, Lair:6-ORIENT: float: ice_cave_portal(_G)COLOUR: X = whiteKFEAT: X = xMONS: wolf / yak w:5 / nothing w:1MONS: yak / polar bear w:5 / nothing w:1MONS: polar bear / nothing w:2MONS: ice dragon w:8 / nothing w:2MAPxxxxxxxxxXXXXXxxxXX.4.XXxxX.3.3.XxxX..O..XxxX.2.2.XxxXX...XXxxxXX.1.XxxX11XXXxxXX.XXxxxXX.XXxxxXX.XxxxXX.XXxxXX@XXxxENDMAPNAME: portal_ice_cave_entry_horrid_thingsTAGS: uniq_ice_caveDEPTH: D:14-20, Elf:2-6ORIENT: float: ice_cave_portal(_G)COLOUR: X = whiteKFEAT: X = xMONS: ice beast / freezing wraith w:2 / nothing w:2MONS: freezing wraith / nothing w:3MONS: azure jelly w:3 / freezing wraith w:7MAPxxxxxxxxxxxxxxxxxxxxxxxxxxXXXXXxXXXXXXXXXXxxxxxxxXX...XXX........XXxxxxxxX.....X....2..1..XXXXXXxX..O..+..3..1..1......+xX.....X....2..1..XXXXXXxXX...XXX........XXxxxxxxxXXXXXxXXXXXXXXXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxENDMAPNAME: portal_ice_cave_demonic_guardTAGS: uniq_ice_caveDEPTH: D:14-20, Elf:2-6ORIENT: float: ice_cave_portal(_G)COLOUR: x = whiteMONS: ice devilMAPxxxxxxxx..O..xx.....xx.1.1.xx.....xxxx.xxxxxx.xxxxxx.xxxxxx.xxxxxx+xxxENDMAPNAME: portal_ice_cave_entry_ice_statue_001TAGS: uniq_ice_caveDEPTH: D:14-20, Elf:2-6, Vault:1-7ORIENT: float: ice_cave_portal(_G)COLOUR: x = whiteMONS: ice statueMAPxxxxxxxx.....xx..O..xx.....xx..1..xx.....xx.....xxxx+xxxENDMAPNAME: portal_ice_cave_entry_ice_statue_002TAGS: uniq_ice_caveDEPTH: D:14-20, Elf:2-6, Vault:1-7ORIENT: float: ice_cave_portal(_G)MONS: ice statueMAP..............................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_01TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixupORIENT: encompassWEIGHT: 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:4MONS: polar bearMONS: frost giantMONS: polar bear w:3 generate_awake / wolf generate_awake / \yak generate_awakeMONS: ice statueSHUFFLE: defgITEM: giant club / giant spiked club / great mace w:9 / \battleaxe w:7 / glaive w:8 / halberd w:8 / great sword w:6 / \nothing w:58ITEM: great mace good_item / battleaxe good_item / glaive good_item / \halberd good_item / great sword good_item / nothing w:50ITEM: 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:80ITEM: 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:60ITEM: potion of resistance w:5 / potion of gain strength / \potion of might / potion of confusion / potion of levitation / \potion of experience w:2MAPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx..xxxxxxxxxx12....xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...xx...xxxx...2xxx...xxxxxxxxxxxxxxxxxxxxxxx......1..xxxxx..x212.xxxxxxx...1xxxxxxxxxxxxxxxxx.......1..1.xxxxxx....xxxxxxxxxxxx21..xxxxxxxxxxxxx...xxxx.3.1....xxxxxxxxxxxxxwwwxxxxxx....xxxxxxxxx...xxxfgxx.1..1...xxxxxxxxxxwwwwwxxxxxxxx....xxxxxx...xxdegefxx..1.....xxxxxwwwwwwwwwwwwwxxxxxx....xxxx...x$$$$gdex.......xxxxxwwwwwwwwwwwwwwwwwxxxxx..xxxx...x....$$xx.....xxxxwwwwxxwwwwwwwwwwwwxxxxxx11xxxxxx.......xxx.....xxwwwwxxxxxxxxxwwwwwwxxxxx...2xxxxxxxx............xxxwwwwxxxxxxxxxxxwwwxxxx......xxxxxxxx"xx.........x'wwwwwxxxxxxxxxxxxwxxxx...xxxxxxxxxxxwwxxxxxxxxxxxxxxwwwxxxxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxwwwwwwwwwwwwwwwwwx'xxxxxxxxxxxxxxx5...xxxxxxxxxxxxxxwwwxxxxxxxxxxwwxx'x'xxxxxxxxxxxxx.......xxxxxxxxxxxxwwxxxxxxxxxxxwwxxx'xxxxxxxxxxxxxxxx.......xxxxxxxxx"xxxxxxxxxxxxxxwxx'xxxxxx"xxxxxxxxxxx....2...xxxxxxxx"xxxxxxxxxxxxxxx'xxxxxxx""""x..xxxxxxx2......xxxxxxxx"xxxxxxxxxxxxx'xxxxxxx"xxxx.......xxx.......xxxxxxxx"xxxxxxxxxxxxx''xxxxx"xxx''xx......21x.....xxxxxxxxxx""xxxxxxxxxxxxx'xxx"xxx'xxxxx....1..2....xxxxxxxxxxxxx""""xxxxxxxxxx'xx"xxx'xxwwxx.1......1.xxxxxxxxxxxxxxxxxx"xxxxxxxxx'xxx"xxx'xxwwxx.x....x.xxxxxxxxxxxxxxxxxx"xxxxxxxxx'xxx"xxxxx'xxwwxxxx..xxxxxxxxxxxxxxxxxxx""xxxxxxxxx'xxx"xxxxxx'xxxwwxxx..xxxwwxxxxxxxxxxxxx"xxxxxxxxxxx''xxx"xxxxxx'xxwwxx..xxxwwxxxxxxxxxxxxx"xxxxxxxxxxxxx'xxxx""xxxx'xxwxx..xxxwwxxxxxxxxxxxxx"xxxxxxxxxxxxxxx'xxxx"xxx'xxxwwx...xxwwxxxxxxxxxxxx"xxxxxxxxxxxxxxxxx'xxxx"x'xxxxwwxx...xxwwxxxxxxxxxxx"xxxxxxxxxxxxxxxxx'xxxxx2xxxxxwwxxx44.xwwxxxxxxxxxxx"xxxxxxxxxxxxxxxxx'x..x.xxxxxwwxxxx4.4xxwwxxxxxxxxx"xxxxxxxxxxxxxxxxxxx.hx.xxxxxxwwxxx...xxxwwxxxxxxxxx"xxxxxxxxxxxxxxxx.1xhxhx.xxxxwwwxxx...xxxwwwxxxxxxx"xxxxxxxxxxxxxxxxx.xhxhxh.xxxwwwxxx.....xxxwwxxxxxxxx"xxxxxxxxx"xxxxxxx1.....xxxxxwwxx...A...xxxwxxxxxxxxx"""xxx"""x""xxx""xxxxxxxxxxxwwxx.......xxwwxxxxxxxxxxxx"""xxxxxx"""xxxxxxxxxxxxxwwxxx..<..xxxwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwwxxxx...xxxwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxENDMAP# Foes: ice beasts, ice dragons & ice statues.# Loot: some gold, jewellery (approximately three rings).NAME: ice_cave_small_02TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixupORIENT: encompassWEIGHT: 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 beastMONS: ice dragonMONS: ice beast generate_awakeMONS: ice statueITEM: any jewellery / gold w:15 / nothing w:5ITEM: any jewellery good_item / gold w:5 / nothing w:5MAPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx......xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.....xxx....xxxxxxxxxxxxxxxxxxxxxxxxxxxx..xxxxxxx...2..xxxxxxxxwwwxxxxxxxxxxxxxxxxx.xxxx$$.2....dexxxxwwwwwxxxxxxxxxxxxxx..xx.xx$$$$....deddxxwwwwwwwwwwxxxxxxxxx.xx..xx$$$$$$..deddxxxxxwwwwwwwwwwwxxxxx..xxxxxxxx$$$$$$$xxx'xxwwwwwwwwwwwxxxxxx11xxxxwwwxxxxxxxxxxwx'xxxxxwwwwwwxxxxx...1xxwwwwwwwwwwwwwwwwwwxxxxxxxwwwxxxx......xxwwwwwwwwwwwwwwwwwwwxxxxxxxwxxxx...xxxxxxxxxxxxxxxxxxxwwwwwwxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxx'xxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxx....xxxxxxxxxxxxxxxxxxx"""x..$$xxxxxxxx........xxxxxxxx""xxxxx""xxx.xxx$xxxxxxx...........xxxxx"xx""x""xxxxxx'xxx"xxxxx..............x""xxxxx"xxxxxxxxx'xxx"xxx................xxxxxxxxxxxxxxxxxx'xx"xxx.................xxxxxxxxxxxxxxxxxx'xx"xxx...1.111.1....xx'xxxxxxxxxxxxxxxxx'xx"xxxx...1.1.1.....xxx'xxx''xxxxx''x'x'xx"xxxwxx..........xxxxxx'''xx'xxx'xx'x'xx"xxxxwwxx4x....x4xxxxxxxxxxxxx''$xxxxxxx"xxxxxxwwxxxx..xxxxxxxxxxxxxxxxx$$$xxxx""xxxxxxxxwwxxx..xxxxxxxxxxxxxx"xx$$$$xx"xxxxxxxxxxwwxx..xxxxxxxxxxxxxx"x""x$$"xxx"xxxxxxxxxwxx..xxxxxxxxxxxxxxx"xxxxxxx"x"xxxxxxxxxxwwx...x""x"xxxxxxxxxx"xxxxxxx"xxxxxxxxxxxwwxx...xx"x""xxxxxxxxx"xxxxxxxxxxxxxxxxxxwwxxx33.xxxxx""xxxxx""xxxxxxxxxxxxxxxxxxwwxxxx3.3xxxxxxx"""x"xxxxxxxxxxxxxxxxxxxxwwxxx...xxxxxxxxxxx"xxxxxxxxxxxxxxxxxxxxxxxxxx...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwxxx.....xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwxx...A...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwxx.......xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwxxx..<..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwxxxx...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxENDMAP# 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_03TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixupORIENT: encompassWEIGHT: 6KFEAT: _ = altar_kikubaaqudghaSUBST: - = ........-KFEAT: - = alarm trap: ice_cave_colours(_G): ice_cave_random_monster_list_undead_necromancer(_G): ice_cave_milestone(_G)MONS: ice beastMONS: white impMONS: freezing wraithMONS: 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:5MONS: necromancer / necromancer ; robe ego:cold_resistance / \necromancer ; robe ego:cold_resistance . wand of fire / \necromancer ; robe ego:cold_resistance . wand of fireballMONS: polar bear simulacrum w:3 generate_awake / \wolf simulacrum generate_awake / \yak simulacrum generate_awakeMONS: ice statueITEM: wand of frost / wand of cold w:5ITEM: ring of ice / staff of cold: if crawl.coinflip() thenITEM: manual of ice magicITEM: nothing: elseITEM: book of ice / book of frost / book of minor magic [frost]ITEM: book of ice / book of frost / book of minor magic [frost]: endITEM: 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_resistanceMAPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwwxxxxxx....xxxxwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwwwwxxx.......xxwxxxxxxxxxxxxxxxxxxwwxxxxxxxxxxxxxxwwwxxx...xxx..xxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwwwwwwwwwwxxx...xxx..xxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwwwwwwwwwwxxx...xxx..xxxxxxxxxxxxxxxxxxxxxxxxwwwxxxxxxxxxxwwxxxx3..xxx...xxxxxxxxxxxxxxxxxxxxxxxxwwxx.G...G.xxwwxx..33xxxx..xxxxxxxxxxxxxxxxxxxxxxxxxxxx.........xxwx....xxxxx...xxxxxxx...xxxxxxxxxxxxxxdx....2_424..xxx..xxxxxxxx....xxx...2....xxxxxxxxxxx*+.....44..2..xx...xxxxxxxx.......2.1.2...xxxxxxxxxxdx....423.342.xxx.33xxxxxxxxxx...1.....1...xxxxxxxxxxxx..4...324xxxxxxx3..xxxxxxxxx............xxxxxxxxxxxxxxG4.2G...xxxxxxxx...xxxxwwxx2........2xxxxxxxxxxxxxxxxxxxx....xxxxxxxx....xxxwwxx1x....x1xxxxxxxxxxxxxxxxxxxxxxx...xx.xxxxxx....xxwwxxxx..xxxxxxxxxxxxxxxxxxxxxxxx....xx...xxxxxxx...xxwwxxx..xxxwwxxxxxxxxxxxxlm..xxx..xxx..x..xxxxxxxx..xwwxx..xxxwwxxxxxxxxxxxxxxxx+xxxx.....xxx.....xxx..xxwxx..xxxwwxxxxxxxxxxxxxx444544xxx...xxxxx........xxxwwx...xxwwxxxxxxxxxxxxx.444444.xxxxxxxxx..3..3...xxxwwxx...xxwwxxxxxxxxxxx..xgdegx..xxxxxx*%...3.....xxxwwxxx.66xwwxxxxxxxxxx...xxffxx...xxxxx*%....3.3..xxwwxxxx6.6xxwwxxxxxxxxx....xxxx...xxxxxxxxx.......xxxwwxxx...xxxwwxxxxxxxxxxx.........xxxxxxxxxxx...xxxxwwwxxx...xxxwwwxxxxxxxxxx...7....xxxxxxxxxxxxx..xxxwwwxxx.....xxxwwxxxxxxxxxxx------xxxxxxxxxxxxxxxx..xxwwxx...A...xxxwxxxxxxxxxxxx----xxxxxx...xxxxxxxx...xwwxx.......xxwwxxxxxxxxxxxx---xxxx...xx...xx.....xxxwwxxx..<..xxxwwxxxxxxxxxxxxx.......xxxxxx....xxxxxxwwwxxxx...xxxwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxENDMAP# Foes: ice & blue devils, white imps & ufetubi, an ice statue.# Loot: weapons and/or armour.NAME: ice_cave_small_04TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixupORIENT: encompassWEIGHT: 6NSUBST: . = 9:1 / 1:2 / *:.SHUFFLE: Qq / Zz / Nn / Bb / MmSUBST: 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 / ufetubusMONS: ice devil / blue devil w:3MONS: ice statueMONS: blue devilSHUFFLE: dg, efhSUBST: e = edITEM: 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:freezingITEM: 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_itemITEM: demon whip good_item / demon blade good_item / demon trident good_itemITEM: cap ego:cold_resistance / pair of gloves ego:cold_resistance / \cloak ego:cold_resistance / buckler ego:cold_resistance / \pair of boots ego:cold_resistanceITEM: 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_itemMAPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx....xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx........xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...xxx....xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx..xxx4xxx...xxxxxxxxxxxxxx...xxxxxxxxxxx...xx44..xxxx..xxxxxxxxxx..1..1...xxxxxxxx...xx.....xx...xxxxxxxx.1......1...xxxxxxx........dxxx..xxxxxxxx..........1..xxxx.....xx..dxx...xxxxxxxxx..1..1..1....xx.....xxxxxxxx...xxxxxxxxxxx................xxxxxxxxxx...xxxxxxxxxxxxx.........x...xxxxxxxxxxq..xxxxxxxxxxxxxxx1x....x3xxxxxxxxxx....Q..xxxxxxxxxxxxxxxxxxx..xxxxwwwxxx......QqQ..xxxxxxxxxxxxxxxxxx..xxxwwxxx....xx.........xxxxxxxxxxxxxxx..xxxwwxx.....xx..xxxx..z...xxxxxxxxxxxx..xxxwwxx4.b.x.....N..x...Z...xxxxxxxxxxx...xxwwxx..B.xxx..n.N.xx.ZzZ..4xxxxxxxxxxx...xxwwx4BbB..xx..N...xx.......xxxxxxxxxxx.-.xwwxx.........x.n........4xxxxxxxxxxxx---xxwwxx...xxx..x..xxx.....xxxxxxxxxxxx---xxwwwwxxxxx....x.....x..xxxxxxxxxxxxxx---xxwwwwwwx.....mx.....xxxxxxxxxxxxxxxx-----xxwwwwwxx.xx.M.m..xxxxxxxxxxxxxxxxx---A---xxwwwccccc.M.M.cccccxxxxxxxxxxxxxx-------xwwwwc...ccc.ccc...cxxxxxxxxxxxxxxx--<--xxwwwwc.e.........f.cxxxxxxxxxxxxxxxx---xxwwwwwc...cc*|*cc...cxxxxxxxxxxxxxxxxxxxxxxxxxxcccccccccccccccxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxENDMAPNAME: 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. --EinoTAGS: ice_cave no_item_gen no_monster_genORIENT: encompassWEIGHT: 6# S is either an ice statue or a granite statue.SUBST: S = GGSKMONS: S = ice statue# I is an ice statue with loot underneath.KITEM: I = any scroll q:3KMONS: I = ice statueMONS: ice devil / blue devil / nothing w:7# FIXME: I can't quite make up more simulacrumsMONS: grizzly bear simulacrum / bear simulacrum / dragon simulacrum /\human simulacrum / golden dragon simulacrum w:1MONS: Ice Fiend w:2 / necromancerITEM: any potion / any scroll / any weapon good_item / any armour good_itemKFEAT: ' = 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)MAPxxxxxxx...xxxx.....xxx...A...xx...<...xxx.....xxxx...xxx...xxxx...xxx...xx...xxxxxx...xxxxxxIx.....xIxxxx...........xxx.............xxx.............xxx.......1.......xx....1.....1....xx.......U.......xx....1.....1....xx.......1.......xxx.............xxx.cnnc...cnnc.xxxc11c...c11cxxxc11cc+cc11cxccc+c...c+cccc...c...c...cccc.ccc...ccc.cccc...c2c...c2c...cc+ccc+c...c+ccc+cc'c2+.......+2c'cc'ccc.G...G.ccc'cc'c2+.......+2c'cc'ccc.G...G.ccc'cc'c2+.......+2c'cc'ccc.G...G.ccc'cc'c2+.......+2c'cc+cccccc+cccccc+cc...............cccccS.ccccc.Scccccc.cd3dc.ccc.cdUdc.cc.cdddc.cc.cc+cc.cc.'''''.cccccScccccccENDMAP############################################################################# 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_01TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixupWEIGHT: 5ORIENT: encompass# A bit of layout randomization.: if crawl.coinflip() thenSUBST: ' = xSUBST: - = .SUBST: _ = .: elseSUBST: ' = .SUBST: - = xSUBST: _ = 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 / nothingITEM: book of ice / book of unlife / staff of cold / staff of death / \nothing w:30ITEM: 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 / nothingITEM: book of ice / \crossbow ego:frost good_item no_uniq / \longbow ego:frost good_item no_uniq / nothing w:20ITEM: ring of ice / ring of protection from fire / wand of cold / \arrow ego:ice q:25 / bolt ego:ice q:20 / nothing: endITEM: any wand / any potion w:5 / any scroll w:5MAPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxx-'xxxxxxxxxxwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx....xxxxxxxxx....xxxxxxxxxwwwxxxx*xxx$$xxxxxxxx...xx...xxxxxxxxgxxxxx...A.xxxxxx....xx....xxxxxxxwwwwx*x*xxx$$x-.x...xx...xx...xxxxxgxgxxxx.<....'-....xxxxxxx...xxxxxwwwwxxx*x.xxxx.'x..xxxxxxxxxx....xxxx.xxxxxx..xx....xxxxxxxx1111xxxxwwwwwwxxxxxx...xxxxx..xxxxxxxxxx..3..x.xxxxxxxxxxxxxxxxxxxx....xxxxxxxxwwwwxxxx11..x...x..xxxxwwwxxxxxx.....xxxxxxxxwxxwxwxxx.....xxxx______xxwwxxxx51xxxxxx..xxxwwwwxwxxxxx..6xxxxxxxxxxxxwxxxxx..xxxxxx___xx_____xxxx...xxxxwxxxxxxwwwxxxxxxxxx.66xxxwwwxxxxxwxxxx....xxwxx__xxxxxxxx___xx..xxxwwwxwxxxwwwxxxxxxxx....xxxxwwwxxxxxxxxx...xxxxwxx_xxxx....xxx__xxx..xxxxxwwwwwwxxxx....x...xxxxwwwxwwwxxxxxx..xxxwwwwx-xxx...xx...xxx_xxx..xxwwwwwxxxx...xx....xxxwwwxxxxxxwwxxx...xxwwwwwwxx-...x.xxxx...xx_x..xxxxwwwwxxx..xxxxxxxxxwxxxxxx.xxxxwxxx..xxxwwwwwxxx141xxxgxxxx...x_xx.11xxxwwwwxxx...xxxwwwwxx...x.x.xxxxxxxx..xxxwwwwxx...xxxgxxx...xxx_xxxx51xxxwwwxxxx..1.xxxwwx.U...xxx..xxxxxxx..xwwwwxxxx....xxxx5.xxxwxx_xx...xxxxxwwwxxxx.1.5xxxxx.x.xxx..xxxxxxx..xxxwwwwxx'x.xxxxx5..5xxwwxx_xxx1.xxxxxwwxxxxx5415.xxxxxx.xx...xxxxxx...xxwwwxx..'xxxxwxx15.5xxwwxx_xxx51xxxxwwxxxxxx5.41.xxxx..xxx454xxxxxx..-xxxxx..xxxwxwwwxxx5.1xxwwxx_--x1xxxxxwwwxxxxxx.5..x...xxx5.7.5xxxxx...-xx-..xxxwxwwxxwxx-x1.xxwwxx'''xxxxxxwwwwxxxxxxx'...xxxxxx5.5xxxxxx...x--xx..1xxxxxwxx--x-..'xxwx'x'xxxxxwxxwwwwxxxx*.xxxxx.xxx..xxx|xxxx222x''x''x..xx1xxx----xxxx'xx'''xxxxwxxxwwwwwwxxxx*xxxx.<.xxx.$defxxxxx'.'xx'xx1.x.1...2xxxxxxxxx'''xxxxwxxwwxwwwwwwwwxxx--........x|fedxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'xxxxwxwwwxwwwwwxwxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxENDMAPNAME: ice_cave_caverns_02TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixupWEIGHT: 5ORIENT: 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 / nothingITEM: book of ice / book of unlife / staff of cold / staff of death / \nothing w:30ITEM: 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 / nothingITEM: book of ice / \crossbow ego:frost good_item no_uniq / \longbow ego:frost good_item no_uniq / nothing w:20ITEM: 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: ; = .: endITEM: 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() thenSUBST: '=x , -=.: elseSUBST: '=. , -=x: end: ice_cave_colours(_G): ice_cave_milestone(_G)MAPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx::xxwwwwxxx.x.'x-;x5;;5xxwwwwwxxx1;;;x;Wxxxxxx15415;xxxxxx......xxxxxx:<:xwwwwxx...x.x;x;x15;5xxwwxxx''';;x;xxWWxx15xx5;41;xxxx..xxx...xxxxxx::xxwwxx..xxx-;'xx;xx5;1xxxx'''xxx.-xxxxWWWxxxxxx;;;;x...xxx..U..xxxxx:A:xxwx..xxxwxxxwwwwxxx1;x'''xxwwx---xxxxWWwxwwwxxx'...xxxxxx...xxxxxx:::xwwxx;;;xxxxxwwwwwxx;;'xxxxxxxxxx--xxwwwwwwwxx*.xxxxxxxxx..xxxxxxxx:::xxwxxxx;;xx1-'xxwwxxx--xxxxx'''x--xxwwwwwwwxx.x*xxxx..xxxx..xxxxxxxx:11xwwxx1;x;1;1;2xxwx---xx.*.*.xx..xxxwwwwwwwwww-x-x..xx.x..xxxxxxxxx11:xxwwwxxx1xxxxx1;xxxx--x.g.T.g.xxx;;xwwwwwwwwx-xx..xxxxx.xxxxxxxxxxxx::xwwwwwxx2;;1x11;;xxxx-...*.*..xx;;;xxwwwwwwx'...xxxxxxxxxxxxxxxxxxxxx:xxwxxxxxxxxx;xxx;;xwxx...xxxxxxxxx;;xxwwwxxx.-xxxxxxxxxxxxxxxxxxxxxxx;;xxxx.x....xxxx;;;xxwxxx.-xwwwxxx1xxxxwwwxx..xxxxxxxxxxxxxxxxxxxx*x$xx..xx.*..-'..xxxxx..xxx''.-xwwwx15xxxwwwwxxxx;;xxxxxxxxxxxxxxxxxxxx$x.xx..xx..xxxx..xwwxxx;;''xx--xxxx115xxwwwwwxxxx;;;xxxxxxxxxxxxxxxxx$x..x.!..xx..xxx..xwwwwxx--xxxx-xx;1;xxxwwwwwwxxxxx;;;;xxxxxxxxxxxxxxxx.xx;x;;xxx..xx...xxwwwwxx1;xxxx.;;xxxxxwwwwwwxxxxxx;2;2;xxxxxxxxxxxxxxxxxx;;xxxx...xx.3.xxwwxx'-;1x'''xxxxxwwwwwwwwxxxxxx;54;2;xxxxxxxxxxxxxxxx;;xxxx...xxxx...xxxx;;x;;''xxxxxxwwwwwwwxxxx$$x;2475;;;xxxxxxxxxxxxxx5;5xx...xxxx.x.xxxxx..;x;xxxxxxwwwwwwwwxxxxdf$$;;;;;;;xx;xxxxxxxxxxxxx;;xx;..xxwwxx|x.xx...xx;xxxxxwwwwwwwwwwwxxed|$$$;;;xxxxxx..xxxxxxxxxxx122;;.xxwwwwxx....xxxxxxxxxxwwwwwwwwwwwwwxxfe|$$$$.xxxxxxxx....xxxxxxxx1;;xxxwwwwwxxxxxxxxxxxxxxxxxwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxx...<xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxENDMAPNAME: ice_cave_caverns_03TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixupWEIGHT: 5ORIENT: 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 / nothingITEM: book of ice / book of unlife / staff of cold / staff of death / \nothing w:30ITEM: 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 / nothingITEM: book of ice / \crossbow ego:frost good_item no_uniq / \longbow ego:frost good_item no_uniq / nothing w:20ITEM: 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: ; = .: endITEM: 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() thenSUBST: '=x , -=.: elseSUBST: '=. , -=x: end: ice_cave_colours(_G): ice_cave_milestone(_G)MAPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.x.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.U.x$xxxxxxxx...xx;;;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwxxx.xxx$x..x...xx...xx;55xxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwwwxWWWxxxxxxx..x..xxxxxxxxxx;554xxxxxxxxxxxxxxxxxxxxxxxxxxxxwxxxxxWwWxWW.xxxxx..xxwwwwwwxx;2525xxxxxxxxxxxxxxxxxxxxxxwwxxxxxxxxxWWWWxW..xx..xxwwwwwwwwxx427;xxxxxxxxxxxxxxxxxxxxwwwwwxxxxxxxWWxwWwxx...xxxwwwwwwwxxx;;5xxxxxxxxxxxxxxxxxxxxxxxwwwwwxxx.WWxxxxwwwxxxxxwwwwwwxxxxx;;;xxxxxxxxxxxxxxxxxxxxxxxxxxwwwxx."xxxwwwwwxwwxwwwxxxxxxx....xxxxxxxxxxxxxxxxxxxxxx;...xxxwwwxx..xxxwwwwwwwwwwxx<..!x...xx.xfxxxxxxxxxxxxxxxxx;;;xx...xxxwwxx..xxxxwwwwwwwwxxxx....xxxxxex|xxxxxxxxxxxxxx;44x;xxxx...xxwx..xxxxxxwwxwxwwwwxxxxxxxxxxdx$xdxxxxxxxxxxxx;4;xxx$xxxx;;;xwxx"..xxxxxwwwwwxwwwxxxxxxxxxx|xexxxxxxxxxxxx;;;xxx$xxx;;;xxxwwxxx..xxxwwwxxwwwwxwxxxxxxxxxxfxxxxxxxxxxxxxx;;..xxxx5;xxxwwwwxx...xxxxxwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxx.x.xxxxx51;5xxwwwwxxxx..xxxxxwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;;;xxxxxxx15;5xxwwxxx'''".xxxxwwxxxxxxxxxxxxxxxxxxxxxxxxxxxx;;xxxxxxxxxxx5;1xxxx''xxxx.-xxxxwwwxxxxxxxxxxxxxxxxxxxxxxxxx;1xxxxxxxxxxxxxx;;x'''xxxxx---xxxwwwwxxxxxxxxxxxxxxxxxxxxxxxxx;11xxxxxxxxxxxx;;''xxxxx'xxx--xxxwwwwxxxxxxxxxxxxxxxxxxxxxxxxxx1;xx.xxxxxxxxx--xxxxx''''--xxxwwwwwwxxxxxxxxxxxxxxxxxxxxxxxx;;x;;....xxxx---xx.*.*.xx..xxxxwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxx;xxxxx.;xxxx--x.g.T.g.xxx..xxxwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxx2;;2x;;;;xxxx-...*.*..xx.;;xxwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;xxx;1xxxx...xxxxxxxxx;;xxwwwxxxxxxxxxxxxxxxxxxxxxxxxx.x;;;'xxxx;1;xxxxxx.-xxxxxxx1xxxxwwwxxxxxxxxxxxxxxxxxxxxxxxx;*66-x..xxxxx11xxxx'.--x---15xxxwwwwxxxxxxxxxxxxxxxxxxxxx::<xx;;xxxx..xxxxxx;;''xx-x-xxx115xxwwwwwxxxxxxxxxxxxxxxxxxxA::xxxx;.xxx..xxxxxxx--xxxx-xx.11xxxwwwwwwxxxxxxxxxxxxxxxxxxx::::xxx;,xx...xxxxxxxx1;xxx-;;;xxxxxwwwwwwxxxxxxxxxxxxxxxxxxx:::xxxx;;;xx.3.xxxxxxxx;1x'''xxxxxwwwwwwwwxxxxxxxxxxxxxxxxxxx::xxxx21;xxxx...xxxx..x;;''xxxxxxwwwwwwwxxxxxxxxxxxxxxxxxxxx:::xx;12xxxx.x.xxxxx...x;xxxxxxwwwwwwwwxxxxxxxxxxxxxxxxxxxxxx::xx;;;xxxxxx|x.xx...xx;xxxxxwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxx:::..;xxxxxxxx....xxxxxxxxxxwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxx:..xxxxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxENDMAP
################################################################################# 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!");enddgn.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_masterTAGS: uniq_ice_caveDEPTH: D:16-20, Lair:6-ORIENT: float: ice_cave_portal(_G)COLOUR: X = whiteKFEAT: X = xMONS: wolf / yak w:5 / nothing w:1MONS: yak / polar bear w:5 / nothing w:1MONS: polar bear / nothing w:2MONS: ice dragon w:8 / nothing w:2MAPxxxxxxxxxXXXXXxxxXX.4.XXxxX.3.3.XxxX..O..XxxX.2.2.XxxXX...XXxxxXX.1.XxxX11XXXxxXX.XXxxxXX.XXxxxXX.XxxxXX.XXxxXX@XXxxENDMAPNAME: portal_ice_cave_entry_horrid_thingsTAGS: uniq_ice_caveDEPTH: D:14-20, Elf:2-6ORIENT: float: ice_cave_portal(_G)COLOUR: X = whiteKFEAT: X = xMONS: ice beast / freezing wraith w:2 / nothing w:2MONS: freezing wraith / nothing w:3MONS: azure jelly w:3 / freezing wraith w:7MAPxxxxxxxxxxxxxxxxxxxxxxxxxxXXXXXxXXXXXXXXXXxxxxxxxXX...XXX........XXxxxxxxX.....X....2..1..XXXXXXxX..O..+..3..1..1......+xX.....X....2..1..XXXXXXxXX...XXX........XXxxxxxxxXXXXXxXXXXXXXXXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxENDMAPNAME: portal_ice_cave_demonic_guardTAGS: uniq_ice_caveDEPTH: D:14-20, Elf:2-6ORIENT: float: ice_cave_portal(_G)COLOUR: x = whiteMONS: ice devilMAPxxxxxxxx..O..xx.....xx.1.1.xx.....xxxx.xxxxxx.xxxxxx.xxxxxx.xxxxxx+xxxENDMAPNAME: portal_ice_cave_entry_ice_statue_001TAGS: uniq_ice_caveDEPTH: D:14-20, Elf:2-6, Vault:1-7ORIENT: float: ice_cave_portal(_G)COLOUR: x = whiteMONS: ice statueMAPxxxxxxxx.....xx..O..xx.....xx..1..xx.....xx.....xxxx+xxxENDMAPNAME: portal_ice_cave_entry_ice_statue_002TAGS: uniq_ice_caveDEPTH: D:14-20, Elf:2-6, Vault:1-7ORIENT: float: ice_cave_portal(_G)MONS: ice statueMAP..............................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_01TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixupORIENT: encompassWEIGHT: 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:4MONS: polar bearMONS: frost giantMONS: polar bear w:3 generate_awake / wolf generate_awake / \yak generate_awakeMONS: ice statueSHUFFLE: defgITEM: giant club / giant spiked club / great mace w:9 / \battleaxe w:7 / glaive w:8 / halberd w:8 / great sword w:6 / \nothing w:58ITEM: great mace good_item / battleaxe good_item / glaive good_item / \halberd good_item / great sword good_item / nothing w:50ITEM: 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:80ITEM: 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:60ITEM: potion of resistance w:5 / potion of gain strength / \potion of might / potion of confusion / potion of levitation / \potion of experience w:2MAPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx..xxxxxxxxxx12....xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...xx...xxxx...2xxx...xxxxxxxxxxxxxxxxxxxxxxx......1..xxxxx..x212.xxxxxxx...1xxxxxxxxxxxxxxxxx.......1..1.xxxxxx....xxxxxxxxxxxx21..xxxxxxxxxxxxx...xxxx.3.1....xxxxxxxxxxxxxwwwxxxxxx....xxxxxxxxx...xxxfgxx.1..1...xxxxxxxxxxwwwwwxxxxxxxx....xxxxxx...xxdegefxx..1.....xxxxxwwwwwwwwwwwwwxxxxxx....xxxx...x$$$$gdex.......xxxxxwwwwwwwwwwwwwwwwwxxxxx..xxxx...x....$$xx.....xxxxwwwwxxwwwwwwwwwwwwxxxxxx11xxxxxx.......xxx.....xxwwwwxxxxxxxxxwwwwwwxxxxx...2xxxxxxxx............xxxwwwwxxxxxxxxxxxwwwxxxx......xxxxxxxx"xx.........x'wwwwwxxxxxxxxxxxxwxxxx...xxxxxxxxxxxwwxxxxxxxxxxxxxxwwwxxxxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxwwwwwwwwwwwwwwwwwx'xxxxxxxxxxxxxxx5...xxxxxxxxxxxxxxwwwxxxxxxxxxxwwxx'x'xxxxxxxxxxxxx.......xxxxxxxxxxxxwwxxxxxxxxxxxwwxxx'xxxxxxxxxxxxxxxx.......xxxxxxxxx"xxxxxxxxxxxxxxwxx'xxxxxx"xxxxxxxxxxx....2...xxxxxxxx"xxxxxxxxxxxxxxx'xxxxxxx""""x..xxxxxxx2......xxxxxxxx"xxxxxxxxxxxxx'xxxxxxx"xxxx.......xxx.......xxxxxxxx"xxxxxxxxxxxxx''xxxxx"xxx''xx......21x.....xxxxxxxxxx""xxxxxxxxxxxxx'xxx"xxx'xxxxx....1..2....xxxxxxxxxxxxx""""xxxxxxxxxx'xx"xxx'xxwwxx.1......1.xxxxxxxxxxxxxxxxxx"xxxxxxxxx'xxx"xxx'xxwwxx.x....x.xxxxxxxxxxxxxxxxxx"xxxxxxxxx'xxx"xxxxx'xxwwxxxx..xxxxxxxxxxxxxxxxxxx""xxxxxxxxx'xxx"xxxxxx'xxxwwxxx..xxxwwxxxxxxxxxxxxx"xxxxxxxxxxx''xxx"xxxxxx'xxwwxx..xxxwwxxxxxxxxxxxxx"xxxxxxxxxxxxx'xxxx""xxxx'xxwxx..xxxwwxxxxxxxxxxxxx"xxxxxxxxxxxxxxx'xxxx"xxx'xxxwwx...xxwwxxxxxxxxxxxx"xxxxxxxxxxxxxxxxx'xxxx"x'xxxxwwxx...xxwwxxxxxxxxxxx"xxxxxxxxxxxxxxxxx'xxxxx2xxxxxwwxxx44.xwwxxxxxxxxxxx"xxxxxxxxxxxxxxxxx'x..x.xxxxxwwxxxx4.4xxwwxxxxxxxxx"xxxxxxxxxxxxxxxxxxx.hx.xxxxxxwwxxx...xxxwwxxxxxxxxx"xxxxxxxxxxxxxxxx.1xhxhx.xxxxwwwxxx...xxxwwwxxxxxxx"xxxxxxxxxxxxxxxxx.xhxhxh.xxxwwwxxx.....xxxwwxxxxxxxx"xxxxxxxxx"xxxxxxx1.....xxxxxwwxx...A...xxxwxxxxxxxxx"""xxx"""x""xxx""xxxxxxxxxxxwwxx.......xxwwxxxxxxxxxxxx"""xxxxxx"""xxxxxxxxxxxxxwwxxx..<..xxxwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwwxxxx...xxxwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxENDMAP# Foes: ice beasts, ice dragons & ice statues.# Loot: some gold, jewellery (approximately three rings).NAME: ice_cave_small_02TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixupORIENT: encompassWEIGHT: 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 beastMONS: ice dragonMONS: ice beast generate_awakeMONS: ice statueITEM: any jewellery / gold w:15 / nothing w:5ITEM: any jewellery good_item / gold w:5 / nothing w:5MAPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx......xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.....xxx....xxxxxxxxxxxxxxxxxxxxxxxxxxxx..xxxxxxx...2..xxxxxxxxwwwxxxxxxxxxxxxxxxxx.xxxx$$.2....dexxxxwwwwwxxxxxxxxxxxxxx..xx.xx$$$$....deddxxwwwwwwwwwwxxxxxxxxx.xx..xx$$$$$$..deddxxxxxwwwwwwwwwwwxxxxx..xxxxxxxx$$$$$$$xxx'xxwwwwwwwwwwwxxxxxx11xxxxwwwxxxxxxxxxxwx'xxxxxwwwwwwxxxxx...1xxwwwwwwwwwwwwwwwwwwxxxxxxxwwwxxxx......xxwwwwwwwwwwwwwwwwwwwxxxxxxxwxxxx...xxxxxxxxxxxxxxxxxxxwwwwwwxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxx'xxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxx....xxxxxxxxxxxxxxxxxxx"""x..$$xxxxxxxx........xxxxxxxx""xxxxx""xxx.xxx$xxxxxxx...........xxxxx"xx""x""xxxxxx'xxx"xxxxx..............x""xxxxx"xxxxxxxxx'xxx"xxx................xxxxxxxxxxxxxxxxxx'xx"xxx.................xxxxxxxxxxxxxxxxxx'xx"xxx...1.111.1....xx'xxxxxxxxxxxxxxxxx'xx"xxxx...1.1.1.....xxx'xxx''xxxxx''x'x'xx"xxxwxx..........xxxxxx'''xx'xxx'xx'x'xx"xxxxwwxx4x....x4xxxxxxxxxxxxx''$xxxxxxx"xxxxxxwwxxxx..xxxxxxxxxxxxxxxxx$$$xxxx""xxxxxxxxwwxxx..xxxxxxxxxxxxxx"xx$$$$xx"xxxxxxxxxxwwxx..xxxxxxxxxxxxxx"x""x$$"xxx"xxxxxxxxxwxx..xxxxxxxxxxxxxxx"xxxxxxx"x"xxxxxxxxxxwwx...x""x"xxxxxxxxxx"xxxxxxx"xxxxxxxxxxxwwxx...xx"x""xxxxxxxxx"xxxxxxxxxxxxxxxxxxwwxxx33.xxxxx""xxxxx""xxxxxxxxxxxxxxxxxxwwxxxx3.3xxxxxxx"""x"xxxxxxxxxxxxxxxxxxxxwwxxx...xxxxxxxxxxx"xxxxxxxxxxxxxxxxxxxxxxxxxx...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwxxx.....xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwxx...A...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwxx.......xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwxxx..<..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwxxxx...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxENDMAP# 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_03TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixupORIENT: encompassWEIGHT: 8KFEAT: _ = altar_kikubaaqudghaSUBST: - = ........-KFEAT: - = alarm trap: ice_cave_colours(_G): ice_cave_random_monster_list_undead_necromancer(_G): ice_cave_milestone(_G)MONS: ice beastMONS: white impMONS: freezing wraithMONS: 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:5MONS: necromancer / necromancer ; robe ego:cold_resistance / \necromancer ; robe ego:cold_resistance . wand of fire / \necromancer ; robe ego:cold_resistance . wand of fireballMONS: polar bear simulacrum w:3 generate_awake / \wolf simulacrum generate_awake / \yak simulacrum generate_awakeMONS: ice statueITEM: wand of frost / wand of cold w:5ITEM: ring of ice / staff of cold: if crawl.coinflip() thenITEM: manual of ice magicITEM: nothing: elseITEM: book of ice / book of frost / book of minor magic [frost]ITEM: book of ice / book of frost / book of minor magic [frost]: endITEM: 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_resistanceMAPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwwxxxxxx....xxxxwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwwwwxxx.......xxwxxxxxxxxxxxxxxxxxxwwxxxxxxxxxxxxxxwwwxxx...xxx..xxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwwwwwwwwwwxxx...xxx..xxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwwwwwwwwwwxxx...xxx..xxxxxxxxxxxxxxxxxxxxxxxxwwwxxxxxxxxxxwwxxxx3..xxx...xxxxxxxxxxxxxxxxxxxxxxxxwwxx.G...G.xxwwxx..33xxxx..xxxxxxxxxxxxxxxxxxxxxxxxxxxx.........xxwx....xxxxx...xxxxxxx...xxxxxxxxxxxxxxdx....2_424..xxx..xxxxxxxx....xxx...2....xxxxxxxxxxx*+.....44..2..xx...xxxxxxxx.......2.1.2...xxxxxxxxxxdx....423.342.xxx.33xxxxxxxxxx...1.....1...xxxxxxxxxxxx..4...324xxxxxxx3..xxxxxxxxx............xxxxxxxxxxxxxxG4.2G...xxxxxxxx...xxxxwwxx2........2xxxxxxxxxxxxxxxxxxxx....xxxxxxxx....xxxwwxx1x....x1xxxxxxxxxxxxxxxxxxxxxxx...xx.xxxxxx....xxwwxxxx..xxxxxxxxxxxxxxxxxxxxxxxx....xx...xxxxxxx...xxwwxxx..xxxwwxxxxxxxxxxxxlm..xxx..xxx..x..xxxxxxxx..xwwxx..xxxwwxxxxxxxxxxxxxxxx+xxxx.....xxx.....xxx..xxwxx..xxxwwxxxxxxxxxxxxxx444544xxx...xxxxx........xxxwwx...xxwwxxxxxxxxxxxxx.444444.xxxxxxxxx..3..3...xxxwwxx...xxwwxxxxxxxxxxx..xgdegx..xxxxxx*%...3.....xxxwwxxx.66xwwxxxxxxxxxx...xxffxx...xxxxx*%....3.3..xxwwxxxx6.6xxwwxxxxxxxxx....xxxx...xxxxxxxxx.......xxxwwxxx...xxxwwxxxxxxxxxxx.........xxxxxxxxxxx...xxxxwwwxxx...xxxwwwxxxxxxxxxx...7....xxxxxxxxxxxxx..xxxwwwxxx.....xxxwwxxxxxxxxxxx------xxxxxxxxxxxxxxxx..xxwwxx...A...xxxwxxxxxxxxxxxx----xxxxxx...xxxxxxxx...xwwxx.......xxwwxxxxxxxxxxxx---xxxx...xx...xx.....xxxwwxxx..<..xxxwwxxxxxxxxxxxxx.......xxxxxx....xxxxxxwwwxxxx...xxxwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxENDMAP# Foes: ice & blue devils, white imps & ufetubi, an ice statue.# Loot: weapons and/or armour.NAME: ice_cave_small_04TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixupORIENT: encompassWEIGHT: 8NSUBST: . = 9:1 / 1:2 / *:.SHUFFLE: Qq / Zz / Nn / Bb / MmSUBST: 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 / ufetubusMONS: ice devil / blue devil w:3MONS: ice statueMONS: blue devilSHUFFLE: dg, efhSUBST: e = edITEM: 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:freezingITEM: 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_itemITEM: demon whip good_item / demon blade good_item / demon trident good_itemITEM: cap ego:cold_resistance / pair of gloves ego:cold_resistance / \cloak ego:cold_resistance / buckler ego:cold_resistance / \pair of boots ego:cold_resistanceITEM: 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_itemMAPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx....xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx........xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...xxx....xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx..xxx4xxx...xxxxxxxxxxxxxx...xxxxxxxxxxx...xx44..xxxx..xxxxxxxxxx..1..1...xxxxxxxx...xx.....xx...xxxxxxxx.1......1...xxxxxxx........dxxx..xxxxxxxx..........1..xxxx.....xx..dxx...xxxxxxxxx..1..1..1....xx.....xxxxxxxx...xxxxxxxxxxx................xxxxxxxxxx...xxxxxxxxxxxxx.........x...xxxxxxxxxxq..xxxxxxxxxxxxxxx1x....x3xxxxxxxxxx....Q..xxxxxxxxxxxxxxxxxxx..xxxxwwwxxx......QqQ..xxxxxxxxxxxxxxxxxx..xxxwwxxx....xx.........xxxxxxxxxxxxxxx..xxxwwxx.....xx..xxxx..z...xxxxxxxxxxxx..xxxwwxx4.b.x.....N..x...Z...xxxxxxxxxxx...xxwwxx..B.xxx..n.N.xx.ZzZ..4xxxxxxxxxxx...xxwwx4BbB..xx..N...xx.......xxxxxxxxxxx.-.xwwxx.........x.n........4xxxxxxxxxxxx---xxwwxx...xxx..x..xxx.....xxxxxxxxxxxx---xxwwwwxxxxx....x.....x..xxxxxxxxxxxxxx---xxwwwwwwx.....mx.....xxxxxxxxxxxxxxxx-----xxwwwwwxx.xx.M.m..xxxxxxxxxxxxxxxxx---A---xxwwwccccc.M.M.cccccxxxxxxxxxxxxxx-------xwwwwc...ccc.ccc...cxxxxxxxxxxxxxxx--<--xxwwwwc.e.........f.cxxxxxxxxxxxxxxxx---xxwwwwwc...cc*|*cc...cxxxxxxxxxxxxxxxxxxxxxxxxxxcccccccccccccccxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxENDMAP############################################################################# 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_01TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixupWEIGHT: 5ORIENT: encompass# A bit of layout randomization.: if crawl.coinflip() thenSUBST: ' = xSUBST: - = .SUBST: _ = .: elseSUBST: ' = .SUBST: - = xSUBST: _ = 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 / nothingITEM: book of ice / book of unlife / staff of cold / staff of death / \nothing w:30ITEM: 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 / nothingITEM: book of ice / \crossbow ego:frost good_item no_uniq / \longbow ego:frost good_item no_uniq / nothing w:20ITEM: ring of ice / ring of protection from fire / wand of cold / \arrow ego:ice q:25 / bolt ego:ice q:20 / nothing: endITEM: any wand / any potion w:5 / any scroll w:5MAPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxx-'xxxxxxxxxxwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx....xxxxxxxxx....xxxxxxxxxwwwxxxx*xxx$$xxxxxxxx...xx...xxxxxxxxgxxxxx...A.xxxxxx....xx....xxxxxxxwwwwx*x*xxx$$x-.x...xx...xx...xxxxxgxgxxxx.<....'-....xxxxxxx...xxxxxwwwwxxx*x.xxxx.'x..xxxxxxxxxx....xxxx.xxxxxx..xx....xxxxxxxx1111xxxxwwwwwwxxxxxx...xxxxx..xxxxxxxxxx..3..x.xxxxxxxxxxxxxxxxxxxx....xxxxxxxxwwwwxxxx11..x...x..xxxxwwwxxxxxx.....xxxxxxxxwxxwxwxxx.....xxxx______xxwwxxxx51xxxxxx..xxxwwwwxwxxxxx..6xxxxxxxxxxxxwxxxxx..xxxxxx___xx_____xxxx...xxxxwxxxxxxwwwxxxxxxxxx.66xxxwwwxxxxxwxxxx....xxwxx__xxxxxxxx___xx..xxxwwwxwxxxwwwxxxxxxxx....xxxxwwwxxxxxxxxx...xxxxwxx_xxxx....xxx__xxx..xxxxxwwwwwwxxxx....x...xxxxwwwxwwwxxxxxx..xxxwwwwx-xxx...xx...xxx_xxx..xxwwwwwxxxx...xx....xxxwwwxxxxxxwwxxx...xxwwwwwwxx-...x.xxxx...xx_x..xxxxwwwwxxx..xxxxxxxxxwxxxxxx.xxxxwxxx..xxxwwwwwxxx141xxxgxxxx...x_xx.11xxxwwwwxxx...xxxwwwwxx...x.x.xxxxxxxx..xxxwwwwxx...xxxgxxx...xxx_xxxx51xxxwwwxxxx..1.xxxwwx.U...xxx..xxxxxxx..xwwwwxxxx....xxxx5.xxxwxx_xx...xxxxxwwwxxxx.1.5xxxxx.x.xxx..xxxxxxx..xxxwwwwxx'x.xxxxx5..5xxwwxx_xxx1.xxxxxwwxxxxx5415.xxxxxx.xx...xxxxxx...xxwwwxx..'xxxxwxx15.5xxwwxx_xxx51xxxxwwxxxxxx5.41.xxxx..xxx454xxxxxx..-xxxxx..xxxwxwwwxxx5.1xxwwxx_--x1xxxxxwwwxxxxxx.5..x...xxx5.7.5xxxxx...-xx-..xxxwxwwxxwxx-x1.xxwwxx'''xxxxxxwwwwxxxxxxx'...xxxxxx5.5xxxxxx...x--xx..1xxxxxwxx--x-..'xxwx'x'xxxxxwxxwwwwxxxx*.xxxxx.xxx..xxx|xxxx222x''x''x..xx1xxx----xxxx'xx'''xxxxwxxxwwwwwwxxxx*xxxx.<.xxx.$defxxxxx'.'xx'xx1.x.1...2xxxxxxxxx'''xxxxwxxwwxwwwwwwwwxxx--........x|fedxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'xxxxwxwwwxwwwwwxwxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxENDMAPNAME: ice_cave_caverns_02TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixupWEIGHT: 5ORIENT: 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 / nothingITEM: book of ice / book of unlife / staff of cold / staff of death / \nothing w:30ITEM: 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 / nothingITEM: book of ice / \crossbow ego:frost good_item no_uniq / \longbow ego:frost good_item no_uniq / nothing w:20ITEM: 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: ; = .: endITEM: 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() thenSUBST: '=x , -=.: elseSUBST: '=. , -=x: end: ice_cave_colours(_G): ice_cave_milestone(_G)MAPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx::xxwwwwxxx.x.'x-;x5;;5xxwwwwwxxx1;;;x;Wxxxxxx15415;xxxxxx......xxxxxx:<:xwwwwxx...x.x;x;x15;5xxwwxxx''';;x;xxWWxx15xx5;41;xxxx..xxx...xxxxxx::xxwwxx..xxx-;'xx;xx5;1xxxx'''xxx.-xxxxWWWxxxxxx;;;;x...xxx..U..xxxxx:A:xxwx..xxxwxxxwwwwxxx1;x'''xxwwx---xxxxWWwxwwwxxx'...xxxxxx...xxxxxx:::xwwxx;;;xxxxxwwwwwxx;;'xxxxxxxxxx--xxwwwwwwwxx*.xxxxxxxxx..xxxxxxxx:::xxwxxxx;;xx1-'xxwwxxx--xxxxx'''x--xxwwwwwwwxx.x*xxxx..xxxx..xxxxxxxx:11xwwxx1;x;1;1;2xxwx---xx.*.*.xx..xxxwwwwwwwwww-x-x..xx.x..xxxxxxxxx11:xxwwwxxx1xxxxx1;xxxx--x.g.T.g.xxx;;xwwwwwwwwx-xx..xxxxx.xxxxxxxxxxxx::xwwwwwxx2;;1x11;;xxxx-...*.*..xx;;;xxwwwwwwx'...xxxxxxxxxxxxxxxxxxxxx:xxwxxxxxxxxx;xxx;;xwxx...xxxxxxxxx;;xxwwwxxx.-xxxxxxxxxxxxxxxxxxxxxxx;;xxxx.x....xxxx;;;xxwxxx.-xwwwxxx1xxxxwwwxx..xxxxxxxxxxxxxxxxxxxx*x$xx..xx.*..-'..xxxxx..xxx''.-xwwwx15xxxwwwwxxxx;;xxxxxxxxxxxxxxxxxxxx$x.xx..xx..xxxx..xwwxxx;;''xx--xxxx115xxwwwwwxxxx;;;xxxxxxxxxxxxxxxxx$x..x.!..xx..xxx..xwwwwxx--xxxx-xx;1;xxxwwwwwwxxxxx;;;;xxxxxxxxxxxxxxxx.xx;x;;xxx..xx...xxwwwwxx1;xxxx.;;xxxxxwwwwwwxxxxxx;2;2;xxxxxxxxxxxxxxxxxx;;xxxx...xx.3.xxwwxx'-;1x'''xxxxxwwwwwwwwxxxxxx;54;2;xxxxxxxxxxxxxxxx;;xxxx...xxxx...xxxx;;x;;''xxxxxxwwwwwwwxxxx$$x;2475;;;xxxxxxxxxxxxxx5;5xx...xxxx.x.xxxxx..;x;xxxxxxwwwwwwwwxxxxdf$$;;;;;;;xx;xxxxxxxxxxxxx;;xx;..xxwwxx|x.xx...xx;xxxxxwwwwwwwwwwwxxed|$$$;;;xxxxxx..xxxxxxxxxxx122;;.xxwwwwxx....xxxxxxxxxxwwwwwwwwwwwwwxxfe|$$$$.xxxxxxxx....xxxxxxxx1;;xxxwwwwwxxxxxxxxxxxxxxxxxwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxx...<xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxENDMAPNAME: ice_cave_caverns_03TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixupWEIGHT: 5ORIENT: 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 / nothingITEM: book of ice / book of unlife / staff of cold / staff of death / \nothing w:30ITEM: 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 / nothingITEM: book of ice / \crossbow ego:frost good_item no_uniq / \longbow ego:frost good_item no_uniq / nothing w:20ITEM: 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: ; = .: endITEM: 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() thenSUBST: '=x , -=.: elseSUBST: '=. , -=x: end: ice_cave_colours(_G): ice_cave_milestone(_G)MAPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.x.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.U.x$xxxxxxxx...xx;;;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwxxx.xxx$x..x...xx...xx;55xxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwwwxWWWxxxxxxx..x..xxxxxxxxxx;554xxxxxxxxxxxxxxxxxxxxxxxxxxxxwxxxxxWwWxWW.xxxxx..xxwwwwwwxx;2525xxxxxxxxxxxxxxxxxxxxxxwwxxxxxxxxxWWWWxW..xx..xxwwwwwwwwxx427;xxxxxxxxxxxxxxxxxxxxwwwwwxxxxxxxWWxwWwxx...xxxwwwwwwwxxx;;5xxxxxxxxxxxxxxxxxxxxxxxwwwwwxxx.WWxxxxwwwxxxxxwwwwwwxxxxx;;;xxxxxxxxxxxxxxxxxxxxxxxxxxwwwxx."xxxwwwwwxwwxwwwxxxxxxx....xxxxxxxxxxxxxxxxxxxxxx;...xxxwwwxx..xxxwwwwwwwwwwxx<..!x...xx.xfxxxxxxxxxxxxxxxxx;;;xx...xxxwwxx..xxxxwwwwwwwwxxxx....xxxxxex|xxxxxxxxxxxxxx;44x;xxxx...xxwx..xxxxxxwwxwxwwwwxxxxxxxxxxdx$xdxxxxxxxxxxxx;4;xxx$xxxx;;;xwxx"..xxxxxwwwwwxwwwxxxxxxxxxx|xexxxxxxxxxxxx;;;xxx$xxx;;;xxxwwxxx..xxxwwwxxwwwwxwxxxxxxxxxxfxxxxxxxxxxxxxx;;..xxxx5;xxxwwwwxx...xxxxxwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxx.x.xxxxx51;5xxwwwwxxxx..xxxxxwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;;;xxxxxxx15;5xxwwxxx'''".xxxxwwxxxxxxxxxxxxxxxxxxxxxxxxxxxx;;xxxxxxxxxxx5;1xxxx''xxxx.-xxxxwwwxxxxxxxxxxxxxxxxxxxxxxxxx;1xxxxxxxxxxxxxx;;x'''xxxxx---xxxwwwwxxxxxxxxxxxxxxxxxxxxxxxxx;11xxxxxxxxxxxx;;''xxxxx'xxx--xxxwwwwxxxxxxxxxxxxxxxxxxxxxxxxxx1;xx.xxxxxxxxx--xxxxx''''--xxxwwwwwwxxxxxxxxxxxxxxxxxxxxxxxx;;x;;....xxxx---xx.*.*.xx..xxxxwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxx;xxxxx.;xxxx--x.g.T.g.xxx..xxxwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxx2;;2x;;;;xxxx-...*.*..xx.;;xxwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;xxx;1xxxx...xxxxxxxxx;;xxwwwxxxxxxxxxxxxxxxxxxxxxxxxx.x;;;'xxxx;1;xxxxxx.-xxxxxxx1xxxxwwwxxxxxxxxxxxxxxxxxxxxxxxx;*66-x..xxxxx11xxxx'.--x---15xxxwwwwxxxxxxxxxxxxxxxxxxxxx::<xx;;xxxx..xxxxxx;;''xx-x-xxx115xxwwwwwxxxxxxxxxxxxxxxxxxxA::xxxx;.xxx..xxxxxxx--xxxx-xx.11xxxwwwwwwxxxxxxxxxxxxxxxxxxx::::xxx;,xx...xxxxxxxx1;xxx-;;;xxxxxwwwwwwxxxxxxxxxxxxxxxxxxx:::xxxx;;;xx.3.xxxxxxxx;1x'''xxxxxwwwwwwwwxxxxxxxxxxxxxxxxxxx::xxxx21;xxxx...xxxx..x;;''xxxxxxwwwwwwwxxxxxxxxxxxxxxxxxxxx:::xx;12xxxx.x.xxxxx...x;xxxxxxwwwwwwwwxxxxxxxxxxxxxxxxxxxxxx::xx;;;xxxxxx|x.xx...xx;xxxxxwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxx:::..;xxxxxxxx....xxxxxxxxxxwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxx:..xxxxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxENDMAP