summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/dat/asciiart.des526
-rw-r--r--crawl-ref/source/dat/tricky.des784
-rw-r--r--crawl-ref/source/externs.h2
-rw-r--r--crawl-ref/source/initfile.cc38
-rw-r--r--crawl-ref/source/maps.cc9
-rw-r--r--crawl-ref/source/monstuff.cc6
6 files changed, 1347 insertions, 18 deletions
diff --git a/crawl-ref/source/dat/asciiart.des b/crawl-ref/source/dat/asciiart.des
new file mode 100644
index 0000000000..543d45b86c
--- /dev/null
+++ b/crawl-ref/source/dat/asciiart.des
@@ -0,0 +1,526 @@
+##############################################################################
+# ASCIIart entry vaults
+# This file contains a number of entries which may not suit all players - they
+# contain ASCII art in the sense of pictures of things and being, or words etc.
+# By default, they are not used. If you want to try them, set in the init.txt
+# entries += asciiart
+##############################################################################
+
+##############################################################################
+# Arecibo
+
+NAME: erik_asciiartentry_001
+TAGS: entry
+ORIENT: float
+FLAGS: no_rotate no_hmirror
+SHUFFLE: {[(
+MAP
+.....@.....({[......@....xxx....@...............@....
+.......x.x.x.x...........x.+.....vv....++......v.....
+...x.x.....x.x.......x...x.+....v......+........v....
+.x...x...x...x..x.xx..x..x.+...v.......++........v...
+.x.x.x.x.x.x.x.x..x..x...x.x..v........++........v...
+.........................x.x..v.........+.......v....
+.............xx..........x.x...v.......+.......v.....
+...........xx.x..........x.x....v............vv......
+@..........xx.x..........x.x.....vv........vv.......@
+..........x.x.x..........x.x...v...vvv.x.vv..........
+..........xxxxx..........x.x...v.......x.............
+.........................x.x...v.....xxxxx...........
+.bb....bbb...bb....bb....x.x...v....x.xxx.x..+.++.++.
+.b.............bb..b.....x.x.......x..xxx..x..++++++.
+.bb.b...bb...bb....bb.b..x.x.+.+++....xxx.....++.+++.
+.bbbbb.bbbbb.bbbbb.bbbbb.x.x..........x.x.....+++.++.
+.........................x.x...v......x.x.....++++++.
+....c.................c..x.x...v......x.x.....++.....
+@........................x.x...v.....xx.xx..........@
+.....c.................c.x.x.........................
+.ccccc.............ccccc.x.x...aaa.....a.............
+.cc....cc....ccc...cc....x.x...aaa.a.a...a.a.a.a.a.a.
+.c.......c.........c.....x.x...aaa.........a.a.a.a...
+.cc.c....cc...ccc..cc.c..x.x...............a.a.......
+.ccccc.ccccc.ccccc.ccccc.x.x...............a.a.......
+.........................x.x.........=====...........
+....c......++.........c..x.x.......=========.........
+@..........++............x.x.....===.......===......@
+.....c.....++..........c.x.x....==...........==......
+.ccccc.....++......ccccc.x.x...==.=.........=.==.....
+...v........+........v...x.x..==..==.......==..==....
+....v......++.......v....x.x..=...=.=.....=.=...=....
+.....vv....++......v.....x.x..=...=..=...=..=...=....
+.......vv...+....vv......x.x......=...=.=...=........
+@..........++..vv........x.x......=....=....=.......@
+.......vv...+....vv......+.x......=.........=........
+.........................+.x........x..x.x...........
+.........................+.x..vvvv..xxxxx.x..vvvv....
+....@...............@....xxx....@...............@....
+ENDMAP
+
+##############################################################################
+# Game-of-Life Cheshire Cat
+
+NAME: erik_asciiartentry_002
+TAGS: entry
+ORIENT: float
+SHUFFLE: {[(
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xx..........x..........x..........x..........x
+xx..........x..........x..........x..........x
+xx...c..c...x...c..c...x..cc..cc..x..cccccc..x
+xx...cccc...x..cccccc..x..c.cc.c..x..c....c..x
+x(..c....c.....c....c.......cc......c......c.x
+x[..c.cc.c....cc....cc...ccc..ccc...c......c.x
+x{..c....c..x..c....c..x.cc.cc.cc.x.c..cc..c.x
+xx...cccc...x...cccc...x...c..c...x...c..c...x
+xx..........x....cc....x...c..c...x..........x
+xx..........x..........x..........x..........x
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx..xxxxx
+xx..........x..........x....cc....x..........x
+xx..........x..........x..c....c..x...cccc...x
+xx..........x..........x.c......c.x..cccccc..x
+xx..........x..........x..........x.cc.cc.cc.x
+xx.....................x............cc....cc.x
+xx......................c........c.ccc....cccx
+xx..........x..........x..c.cc.c..x..c.cc.c..x
+xx...cc.....x...c..c...x...cccc...x....cc....x
+xx...cc.....x....cc....x..........x..........x
+xx..........x..........x..........x..........x
+xxxxx@@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+##############################################################################
+# Zot Side Story
+
+NAME: erik_asciiartentry_003
+TAGS: entry
+ORIENT: float
+MONS: giant bat, small snake, worm, gnoll, imp, orc
+ITEM: stone, scroll of paper, banana, potion of healing
+SHUFFLE: {[(
+MAP
+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+bb.........................................................b
+b(...xxx...xxx...xxx...xxx..gaaa...vvvvvvvvv...ccccccccc...b
+b[.x.+Cx...+6x..2+ex..3+ex...+fa...+++===4ev...===g5e===...b
+b{...xxx...xxx...xxx...xxx..gaaa...vvvvvvvvv...ccccccccc...b
+bb.........................................................b
+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb+++bbbbbbbbbbbbbb=b
+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...+...+...bbbbbbbbbb.....b
+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...+...+...bbbbbbbbbb.bbbbb
+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...+...+...bbbbbbbbbb...bbb
+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb+++bbbbbbbbbbbbbbbbbbbb.bbb
+bbbbbbbbbbbbbbbbb...........................bbbb.........bbb
+bbbbbbbbbbbbbbbbb......xbXXXXXXXXXXXbx......bbbb.bbbbbbbbbbb
+bbbbbbbbbbbbbbbbb......xXXX...1...XXXx......bbbb.bbbbbbbbbbb
+bbbbbbbbbbbbbbbbb......xXX..1...1..XXx......bbbb.bb.....bbbb
+bbbbbbbbbbbbbbbbb......xX1.........1Xx......bbbb.bb.bbb.bbbb
+bbbbbbbbbbbbbbbbb..........1..d..1..........bbbb.bb.bbb.bbbb
+bbbbbbbbbbbbbbbbb......xX1.........1Xx......bbbb.bb..bb.bbbb
+bbbbbbbbbbbbbbbbb......xXX..1...1..XXx......bbbb.bbb.bb.bbbb
+bbbbbbbbbbbbbbbbb......xXXX...1...XXXx......bbbb.....bbebbbb
+bbbbbbbbbbbbbbbbb......xbXXXXXXXXXXXbx......bbbbbbbbbbbbbbbb
+bbbbbbbbbbbbbbbbb.............<.............bbbbbbbbbbbbbbbb
+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+ENDMAP
+
+##############################################################################
+# The Frivolous Dungeonbuilder #1
+
+NAME: erik_asciiartentry_004
+TAGS: entry no_monster_gen
+ORIENT: float
+FLAGS: no_rotate no_hmirror no_vmirror
+SHUFFLE: {[(
+MAP
+...............
+.....aa........
+......a...aa...
+..aaaaaa.aa....
+......aawaaaaa.
+....aaabaaa..a.
+...aa..b..a....
+.......b..aa...
+.......b.......
+.......bb......
+........b......
+........b......
+........bb.....
+.........b.....
+..({.xx..b.....
+.x[xxxxxxbbxx..
+.xxxxxxxxxxxxx.
+...............
+ENDMAP
+
+
+##############################################################################
+# The Frivolous Dungeonbuilder #2
+
+NAME: erik_asciiartentry_005
+TAGS: entry no_monster_gen
+ORIENT: float
+FLAGS: no_rotate no_hmirror no_vmirror
+SHUFFLE: {[(
+MAP
+...............
+....bbb........
+...x..b...bb...
+..bbbbbbbbb....
+..x...bxxbbbbb.
+....bbbxxbb..b.
+...bb..xx.b..x.
+...x...xx.bb...
+........xx.x...
+........xx.....
+........xx.....
+........xx.....
+........xx.....
+.........xx....
+..({.aa..xx....
+..[aaaaaaxxaaaw
+waaaaaaaaaaaaaw
+wwwwwwwwwwwwwww
+ENDMAP
+
+
+##############################################################################
+# The Frivolous Dungeonbuilder #3 and enough, enough already!
+
+NAME: erik_asciiartentry_006
+TAGS: entry no_monster_gen
+ORIENT: float
+FLAGS: no_rotate
+SHUFFLE: {[(
+# Supposed to be an Easter egg. Get it?! Easter egg?! Sigh.
+MAP
+...............
+......aaa......
+....aawwwaa....
+..bwwwwwwwwwb..
+.bbbwwwwwwwbbb.
+.bbbbbbbbbbbbb.
+.wwwwwwwwwwwww.
+.bbbbbbbbbbbbb.
+.bbbwwwwwwwbbb.
+..xwxwxwxwxwx..
+...aaawwwaaa...
+......aaa......
+......({[......
+ENDMAP
+
+
+##############################################################################
+# Yars' Revenge
+
+NAME: erik_asciiartentry_007
+TAGS: entry
+ORIENT: float
+MONS: goblin
+SHUFFLE: {[(
+MAP
+vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+v.........x.x..................vvv...............................x
+v........x.x.x.........xxx.....vvv.b..b.bbbb.b..b.b..b.bbbb.b..b.x
+v(........x.x.........xxx.....1xxx.b..b.b....b..b.b..b.b....b..b.x
+v{.......x.x.x.......xxx.1.....+.=.bbbb.bbbb.b.cb.b.cb.bbbb.bbbb.x
+v[........x.x.........xxx.....1xxx.b..b....b.b.cb.b.cb....b.b..b.x
+v........x.x.x.........xxx.....vvv.b..b.bbbb.bbbb.bbbb.bbbb.b..b.x
+v.........x.x..................vvv...............................x
+vvvvvvvvvvvvvvvvvvvvvvvvvvvv@@@vvvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+##############################################################################
+# Lazy Man's Vault
+
+NAME: erik_asciiartentry_008
+TAGS: entry
+ORIENT: float
+# deliberately has no stairs
+MAP
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+ENDMAP
+
+##############################################################################
+# Shusaku - Inseki, "ear-reddening move"
+
+NAME: erik_asciiartentry_009
+TAGS: entry
+ORIENT: float
+# deliberately has no stairs
+MAP
+.......................................
+.c.c.c.c.c.c.c.c.c.x.a.a.c.c.c.c.c.c.c.
+.......................................
+.c.c.c.x.c.c.c.c.c.x.a.c.a.c.a.a.x.c.c.
+.......................................
+.c.c.a.a.c.x.c.c.a.x.x.a.a.c.a.x.c.c.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.x.x.x.c.c.x.c.c.
+.......................................
+.c.c.c.c.c.x.c.c.c.c.x.c.c.c.c.x.x.c.c.
+.......................................
+.c.c.a.c.c.c.c.c.c.c.c.c.c.c.c.x.a.a.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.a.a.a.x.x.x.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.x.a.a.a.x.
+.......................................
+.c.c.c.c.c.c.c.c.c.x.c.c.x.a.a.x.x.x.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.a.a.x.c.x.a.c.
+.......................................
+.c.c.a.c.c.c.c.c.c.c.c.c.c.c.a.x.x.a.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.a.x.a.x.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.a.c.a.x.a.a.c.
+.......................................
+.c.c.a.c.c.c.c.c.c.x.c.x.a.c.a.x.c.c.c.
+.......................................
+.c.c.c.c.c.c.x.c.a.c.c.x.a.x.a.x.a.c.c.
+.......................................
+.c.c.x.c.x.c.c.x.c.c.c.x.a.a.x.a.a.c.c.
+.......................................
+.c.c.c.c.c.x.a.x.a.c.a.a.x.x.x.x.a.a.c.
+.......................................
+.c.c.c.c.c.c.x.a.c.a.a.c.a.x.x.c.x.a.c.
+.......................................
+.c.c.c.c.c.c.c.c.a.c.c.a.c.x.c.x.c.x.c.
+.......................................
+ENDMAP
+
+
+##############################################################################
+# Shussai - Go Seigen, infamous tesuji
+
+NAME: erik_asciiartentry_010
+TAGS: entry
+ORIENT: float
+# deliberately has no stairs
+MAP
+.......................................
+.c.c.c.c.x.c.c.c.c.c.c.c.c.c.x.c.c.c.c.
+.......................................
+.c.x.x.x.x.a.a.c.c.c.c.c.a.a.x.c.c.c.c.
+.......................................
+.c.x.a.x.a.x.c.a.a.x.a.c.c.c.c.c.x.c.c.
+.......................................
+.c.a.a.a.a.c.x.x.a.c.a.c.c.x.c.a.x.c.c.
+.......................................
+.c.c.c.c.c.c.x.a.a.a.x.x.x.x.x.a.c.c.c.
+.......................................
+.c.c.c.c.c.x.c.x.c.x.c.c.a.x.a.c.c.x.c.
+.......................................
+.c.c.c.c.c.c.c.x.c.c.c.c.a.a.x.x.x.c.c.
+.......................................
+.c.a.a.c.c.c.a.c.c.c.c.c.c.c.a.a.c.a.c.
+.......................................
+.a.c.c.a.a.c.c.a.c.c.c.c.c.c.c.a.c.c.c.
+.......................................
+.c.a.a.x.x.x.x.c.c.x.c.c.c.a.c.x.a.c.c.
+.......................................
+.x.c.x.c.x.c.c.c.c.c.x.c.c.c.c.x.a.c.c.
+.......................................
+.c.c.x.c.x.c.c.c.c.c.c.x.c.x.c.x.x.a.c.
+.......................................
+.c.c.a.x.a.a.x.c.c.c.c.a.c.x.x.a.x.a.c.
+.......................................
+.c.c.a.c.a.x.c.c.c.c.c.c.a.x.a.a.a.x.c.
+.......................................
+.c.c.a.c.a.x.c.c.c.c.x.x.x.a.c.c.c.x.c.
+.......................................
+.c.a.x.x.x.x.x.x.x.x.a.a.x.c.a.c.x.c.c.
+.......................................
+.c.c.a.a.x.a.a.x.a.a.x.a.a.a.c.a.a.x.c.
+.......................................
+.c.c.c.a.a.x.a.a.c.c.c.c.c.c.c.a.x.x.c.
+.......................................
+.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.
+.......................................
+ENDMAP
+
+
+##############################################################################
+# Rinrii
+
+NAME: erik_asciiartentry_011
+TAGS: entry
+ORIENT: float
+FLAGS: no_rotate no_hmirror no_vmirror
+SHUFFLE: {[(
+MAP
+ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
+c...........................................................c
+c.vvv...vvv....v..............v.....vvv...vvv...............c
+c.vvv...vvv...vvvvv.........vvvv....vvv...vvv...............c
+c.vvv...vvv.....vvvvv......vvvv.....vvv...vvv...............c
+c.vvv...vvv.......vvvvv...vvvv......vvv...vvv..vvvvvvvvvvvv.c
+c.vvv...vvv.........v...vvvv........vvv...vvv..vvvvvvvvvvvv.c
+c.vvv...vvv...........vvvvv.........vvv...vvv...............c
+c.vvv...vvv.........vvvvv...........vvv...vvv...............c
+c......vvv........vvvvv..................vvv................c
+c.....vvv......vvvvv....................vvv.................c
+c....vv.........v..........[({.........vv...................c
+c...........................................................c
+ccccccccccccccccccccccccccc...ccccccccccccccccccccccccccccccc
+ENDMAP
+
+
+##############################################################################
+# Mitsuhiro Itakura
+
+NAME: erik_asciiartentry_012
+TAGS: entry
+ORIENT: float
+FLAGS: no_rotate no_hmirror no_vmirror
+SHUFFLE: {[(
+MAP
+ccccccccccccccccccccccccccccccccccccccccccccc
+c...............................G...........c
+c...G.....GGGGGGGGGGG..........G.G..........c
+c...G.....G.................GGG...GGG.......c
+c...G.....G..............GGG..GGGGG..GGG....c
+c.GGGGG...G...........GGG...............GGG.c
+c...G.....GGGGGGGGG.......GGGGGGGGGGGGGG....c
+c...G.....G.G.....G.......G............G....c
+c..GGG....G.G.....G.......GGGGGGGGGGGGGG....c
+c..GG.G...G..G...G........G............G....c
+c.G.G.....G..G...G........GGGGGGGGGGGGGG....c
+c.G.G.....G...GGG......G....................c
+c...G.....G...GGG......G...GGGGGGGGGGGGG....c
+c...G....G...G...G....G....G...........G....c
+c...G....G..G.....G..G.....G...........G....c
+....G...G..G.......G.......GGGGGGGGGGGGG.....
+.............................................
+ccccccccccccccccccc([{ccccccccccccccccccccccc
+.............................................
+............G...........G....G.....G.........
+c...........G............G....G....G........c
+c....GGGGGGGGGGGGGGGG.....G...G...G.........c
+c..........G...............GGGGGGGGGGGG.....c
+c.........G.....G......G........G...........c
+c.........G......G......G.......G...........c
+c........G....GGG.G......G...GGGGGGGGG......c
+c.....GGGGGGGGG...G.............G...........c
+c.........G...G.................G...........c
+c.........G...G..........G......G...........c
+c........G....G..........G.GGGGGGGGGGGG.....c
+c........G....G.........G.......G...........c
+c.......G.....G....G....G.......G...........c
+c......G......G....G...G........G...........c
+c....GG........GGGGG...G........G...........c
+c...........................................c
+ccccccccccccccccccccccccccccccccccccccccccccc
+ENDMAP
+
+
+##############################################################################
+# Yin-Yang
+
+NAME: erik_asciiartentry_013
+TAGS: entry
+ORIENT: float
+FLAGS: no_rotate
+SHUFFLE: {[(
+# I am worried about getting ported into the 2x2 closet
+# IF we replace G with c, we could place a secret door
+MAP
+xxxxxxxxxxxvvvvvvvvvvvvxxxxxxxxxx
+xxxxxxvvvvv...........vvvxxxxxxxx
+xxxvvvv......GGGG.......vvvvxxxxx
+xxxv.......GGGGG.GGG.......vvvxxx
+xxv.....GGGGGG..G...GGG......vvxx
+xvv...GGGGGGG.GG.......GG.....vvx
+xv...GGGGGGG.G......GG...G.....vx
+vv..GGGGGGG.G.......GG....G....vx
+v...GGGGGGG.G.............G.....v
+v..GGGGGGGG.G..............G....v
+v..GGGGGGGGG.G.............G....v
+v..GGGGGGGGG.G.............G....v
+v..GGGGGGGGGG.G............G....v
+v..GGGGGGGGGGG.GG..........G....v
+v...GGGGGGGGGGG..G........G..[..v
+vv..GGGGG..GGGGGG.G.......G..{..@
+xv...GGGG}.GGGGGG.G......G...(..v
+xvv...GGGGGGGGGGGG.G...GG.....vvv
+xxv.....GGGGGGGGGG.GGGG......vvxx
+xxvv.......GGGGGG.GG.......vvvxxx
+xxxvvvvv.................vvvxxxxx
+xxxxxxxvvvv...........vvvvxxxxxxx
+xxxxxxxxxxvvvvvvvvvvvvvxxxxxxxxxx
+ENDMAP
+
+##############################################################################
+# Hello? Cthulhu calling!
+
+NAME: erik_asciiartentry_014
+TAGS: entry
+ORIENT: float
+MONS: pit fiend
+# Pan demon would be more appropriate, but they're enormously buggy when used this way.
+# Shadow fiend would too, but might be too easy for spoiled mummies.
+ITEM: potion of decay / potion of paralysis / potion of poison
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxccccccdccccccxxxx
+x.....xxxxxxxxxcccccccxxccccccxxx
+......xxxxxxxxccccccccxccccccccxx
+x.....xxxxxxxxccccccccxccccccccxx
+x.....xxxxxxxxccccccccxccccccccxx
+xx.xxxxxxxxxxxccccccccxccccccccxx
+xx.xxxxxxxxxxxccccccccxccccccccxx
+xx.xxxxxxxxxxxccccccccxccccccccxx
+xx.xxxxxxxxxxxdxxxxxxx1xxxxxxxdxx
+xx.xxxxxxxxxxxccccccccxccccccccxx
+xx.xxxxxxxxxxxccccccccxccccccccxx
+x...xxxxxxxxxxccccccccxccccccccxx
+x...xxxxxxxxxxccccccccxccccccccxx
+....xxxxxxxxxxccccccccxccccccccxx
+x...xxxxxxxxxxccccccccxccccccccxx
+xx.xxxxxxxxxxxxcccccccxcccccccxxx
+xx.xxxxxxxxxxxxxccccccdccccccxxxx
+bb.bbbxxxxxxxxxxxxxxxxxxxxxxxxxxx
+b...(bxxx........................
+..b.[...................xxxx.....
+b...{bxxx...............xxxx.....
+bb.bbbxxxxxxxxxxxxxx.xxxxxxx.....
+ENDMAP
diff --git a/crawl-ref/source/dat/tricky.des b/crawl-ref/source/dat/tricky.des
new file mode 100644
index 0000000000..2288e9f079
--- /dev/null
+++ b/crawl-ref/source/dat/tricky.des
@@ -0,0 +1,784 @@
+##############################################################################
+# Tricky entry vaults
+# This file contains a number of entries which may not be appropriate for
+# certain players, like newbies. These entries may require the use of certain
+# item, or demand searching for hidden passages, or may be plain more risky.
+# By default, they are not used. If you want to try them, set in the init.txt
+# entries += tricky
+##############################################################################
+
+###################################
+# pick a door
+
+NAME: lemuel_trickyentry_001_a
+TAGS: entry
+ORIENT: float
+SHUFFLE: [{
+CHANCE: 2
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxx{([xxxxxxxxxxx
+xxxxxxxxxxx...xxxxxxxxxxx
+xxxxxxxxxxxx+xxxxxxxxxxxx
+x.......................x
+x+x+x+x+x+x+x+x+x+x+x+x+x
+x.x.x.x.x.x.x.x.x.x.x.x.x
+x.x.x.x.x.x.xxx.x.x.x.x.x
+x.xxx.x.x.x.x...x.x.x.x.x
+x...x.x.xxx.x.xxx.x.x.x.x
+xxx.x.x.x.x.x.xxx.x.x.x.x
+xxx.x.x.x.x.x.x.....x.x.x
+x.x.x.x.x.x.x.x.xxxxx.x.x
+x.x.x.x.x.x.x.xxx...x.x.x
+x.x.xxx.x.x.x...x.x.x.x.x
+x.x.xxx.x.x.xxx.x.x.x.x.x
+x.x.x.x.x.x.x.x.x.x.x.xxx
+x.x.x.x.x.x.x.x.x.x.x...x
+x.x.x.x.x.x.x.x.x.x.x=x.x
+x.x.x...x.x.x.x.x.x.=.x.x
+x.x.xxx=x.x.x.x.x.xxxxx.x
+x...x...x.x.x.x.x.x.....x
+xxxxx=xxx.x.x.x.x.x.xxxxx
+.......==...x.x...x...xxx
+.......xxxxxxxxxxxxxx+xxx
+@......xxxxxxxxxxxxxx@xxx
+ENDMAP
+
+NAME: lemuel_trickyentry_001_b
+TAGS: entry
+ORIENT: float
+SHUFFLE: [{
+CHANCE: 2
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxx{([xxxxxxxxxxx
+xxxxxxxxxxx...xxxxxxxxxxx
+xxxxxxxxxxxx+xxxxxxxxxxxx
+x.......................x
+x+x+x+x+x+x+x+x+x+x+x+x+x
+x.x.x.x.x.x.x.x.x.x.x.x.x
+x.x...x.x...x.x.x.x.x.x.x
+x.xxx.x.x.xxx.x.x.x...x.x
+x...x.x.xxx...x...xxxxx.x
+xxx.x.x.x.x.xxx=xxx.....x
+x.x.x.x.x.x.x...xxx.xxxxx
+x.x.x.x.....x.x.xxx.x...x
+x.x.x.xxx.x.x.x.....x.x.x
+x.x.x=x.x.x.x.xxxxx.x.x.x
+x.....x.x.xxx.x...x...x.x
+x.xxxxx...x.x...x.xxxxxxx
+x.x...x.xxx.xxxxx.x...x.@
+x.x.x.x.x...x.x.x.x.x.x..
+x.x.x.....xxx.x.x...x.x+x
+x=xxxxxxx.x...x.x=xxx.x.x
+x.....x.x.x.x.x.x.x.....x
+x..]..x.x.x.x...x.x.xxxxx
+x.....x.....x.x...x.....x
+xxx+xxxxxxxxx=xxxxxxxxxxx
+@......................@.
+ENDMAP
+
+NAME: lemuel_trickyentry_001_c
+TAGS: entry
+ORIENT: float
+SHUFFLE: [{
+CHANCE: 2
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxx{([xxxxxxxxxxx
+xxxxxxxxxxx...xxxxxxxxxxx
+xxxxxxxxxxxx+xxxxxxxxxxxx
+x.......................x
+x+x+x+x+x+x+x+x+x+x+x+x+x
+x.x.x.x.x.x.x.x.x.x.x.x.x
+x.x...x.x.....x.x.x.x.x.x
+x.xxx.x.x.xxxxxxx.x.x.x.x
+x...x.x.x.x.......x.xxx.x
+xxx.x.x.x.x.xxx.xxx...x.x
+x.x.x.x.x.x.xxx.xxx.xxx.x
+x.xxx.x...x.xxx.xxx.x...x
+x.....x.x.x.....x...x.xxx
+x.xxxxx.x.xxxxxxxxx.x.xxx
+x.....x.x.xxx%x.....x...x
+x.xxxxx...x.x%x.x.xxxxxxx
+x.x...xxxxx.x=x.x.x.....x
+x.x.x.xxx...x0x.xxx.x.x.x
+x...x.....x.x0x.....x.x.x
+xxxxxxxxxxx+x=xxxxxxx.x.x
+x.................=.....x
+x.xxxxxxxxxxxxxxx.x.xxxxx
+x.................x.....x
+xxxx=xxxxxxxxxxx=xxxxx..x
+@......................@.
+ENDMAP
+
+NAME: lemuel_trickyentry_001_d
+TAGS: entry
+ORIENT: float
+SHUFFLE: [{
+CHANCE: 2
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxx{([xxxxxxxxxxx
+xxxxxxxxxxx...xxxxxxxxxxx
+xxxxxxxxxxxx+xxxxxxxxxxxx
+x.......................x
+x+x+x+x+x+x+x+x+x+x+x+x+x
+x.x.x.x.x.x.x.x.x.x.x.x.x
+x.....x.x.....x.x.x.x.x.x
+xxx+xxx.x.xxxxxxx.x.x.x.x
+x...x...x.x.x.....x.x.x.x
+x.x.x.xxx.x.x.xxxxx...x.x
+x.x.x.xxx...x...xxx.xxx.x
+x.xxx.x...xxxxx.xxx.x...x
+x...x.x.x.x.....x...xxxxx
+xxxxx.x.x.x.xxxxxxx.xxxxx
+x.x...x.x.x.xxxxxxx.....x
+x.x.xxx=x.x.......xxxxx.x
+x.x.x...x.xxxxxxx.x.....x
+x.x.x.b.x...x.xxx.x.xxx.x
+x...x...xxxxxxxxx.x.x.x.x
+xx=xx=xxx.........xxx.x.x
+xx=x....x.xxxxxxxxx.....x
+xx=x.>..x.xxxxxxxxxxx=x.x
+...x....x.............x.x
+...x....xxxxxxxxxxxxx+xxx
+@..xx=xxxxxxxxxxxxxxx..@.
+ENDMAP
+
+NAME: lemuel_trickyentry_001_e
+TAGS: entry
+MONS: nothing
+ORIENT: float
+SHUFFLE: [{
+SHUFFLE: 1cv=
+CHANCE: 2
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxx{([xxxxxxxxxxx
+xxxxxxxxxxx...xxxxxxxxxxx
+xxxxxxxxxxxx+xxxxxxxxxxxx
+x.......................x
+x+x+x+x+x+x+x+x+x+x+x+x+x
+x.x.x.x.x.x.x.x.x.x.x.x.x
+x.x.x.x.x.x.x.x.x.x.x.x.x
+x.x.x.x.x.x.x.x.x.x.x.x.x
+x.x.x.x.x.x.x.x.x.x.x.x.x
+x.x.x.x.x.x.x.x.x.x.x.x.x
+x.x.x.x.x.x=xcx.x.x.x.x.x
+x.x.x.x.x.1.x.1.x.x.x.x.x
+x.x.x.xxxcx.x.xvxxx.x.x.x
+x.x.x.x.v.x.x.x.=.x.x.x.x
+x.x.x.x.x.x.x.x.x.x.x.x.x
+x.x.xxx1x.x.x.x.x=xxx.x.x
+x.x.xxx.c.x.x.x.v.xxx.x.x
+x.x.xxx.xvx.x.xcx.xxx.x.x
+x.xxxxx.x.=.x.1.x.xxxxx.x
+x.xxxxx.x.xxxxx.x.xxxxx.x
+x.xxxxx.x.x...x.x.xxxxx.x
+xxxxxxx.x.xvxvx.x.xxxxxxx
+xxxxxxx.....=.....xxxxxxx
+xxxxxxxvxxcxxx=xx1xxxxxxx
+@......................@.
+ENDMAP
+
+#########################
+# if bats scare you, close the door!
+# minus entry, could be a good standalone vault for low levels
+
+NAME: lemuel_trickyentry_002_batcave
+TAGS: entry
+ORIENT: float
+SHUFFLE: {[(
+MONS: giant bat
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+x{x[x(xxxxxxxxxxx.........%xxxx
+x.x.x.xxxxxxxx...............xx
+x.x.x.xxxxxx..................x
+x.x.x.xxxx....1.1.1.1.1......%x
+x.x.x.xx.......1.1.1.1.1....%xx
+x.....+.......1.1.1.1.1.....%xx
+xxx.xxx........1.1.1.1.1....xxx
+xxx.xxxx.................xxxxxx
+xxx.xxxxx.............xxxxxxxxx
+@...xxxxxxx.......xxxxxxxxxxxxx
+xxx.xxxxxxxxx...xxxxxxxxxxxxxxx
+xxx.xxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxx.xxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxx@xxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+##############################################################################
+# the eight (infinity)
+
+NAME: david_trickyentry_001_infinity
+TAGS: entry
+FLAGS: no_rotate
+ORIENT: float
+SHUFFLE: {[
+SHUFFLE: bcva
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxx..........xx(xx..........xxxxx
+xxx...c=cccccc.......ccc=cccc...xxx
+xx..ccc......c=ccccccc......ccc..xx
+xx.cc...cccc...ccccc...cccc...cc.xx
+x..c..cccccccc..ccc..cccccccc..=..x
+x.cc.cc..........ccc........cc.cc.x
+x.c..c....bb..cc...cc..bb.{..c..c.x
+x.=..c..[.bb..cc...cc..bb....c..c.x
+x.cc.cc........ccc..........cc.cc.x
+x..=..cccccccc..ccc..cccccccc..c..x
+xx.cc...cccc...cccc....cccc...cc.xx
+xx..ccc......ccccccccc......ccc..xx
+xxx...cc=ccccc.......ccccc=cc...xxx
+xxxxx..........xx.xx..........xxxxx
+xxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxx
+ENDMAP
+
+########################################################################
+# Array of rooms (five variations on the theme).
+
+NAME: david_trickyentry_002_a
+TAGS: entry no_monster_gen no_pool_fixup
+ORIENT: float
+CHANCE: 2
+SHUFFLE: {[(
+SHUFFLE: wWl
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+x...xxxxxxx.+...xxxxx.xvvvvvx...x
+x.(.+.....+.xxxxxxxxx.+.....+...x
+x...xxxxxxx.xx....x.+.xvvvvvx...x
+xxxxx..x.xx.xx.ww.+.x.+.~..~+...x
+x...x..+.xx+xx.ww.xxx.xvvvvvx...x
+x.{.+..x.+...+....x.+.+~.~..+...@
+x...xxxxxxxx+xxx+xx.x.xvvvvvx...x
+xxxxx...x..x...x..xxx.+...~~+...x
+x...x...+..xxx+x..+.+.xvvvvvx...x
+x.[.+...x..+...xxxxxx.+.~.~.+...x
+x...x...xxxx...xxxxxx.xvvvvvx...x
+xxxxxxxxxxxxxxxxxxxxxx=.....=xxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+NAME: david_trickyentry_002_b
+TAGS: entry no_monster_gen no_pool_fixup
+ORIENT: float
+CHANCE: 2
+SHUFFLE: {[(
+SHUFFLE: wWl
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+x...xxxxxxx.+...xxxxx.xvvvvvx...x
+x.(.+.....+.xxxxxxxxx.+..~.~+...x
+x...xxxxxxx.xx....x.+.xvvvvvx...x
+xxxxx..x.xx.xx.ww.+.x.+.....+...x
+x...x..+.xx+xx.ww.xxx.xvvvvvx...x
+x.{.+..x.+...+....x.+.+~~...+...@
+x...xxxxxxxx+xxx+xx.x.xvvvvvx...x
+xxxxx...x..x...x..xxx.+.~..~+...x
+x...x...+..xxx+x..+.+.xvvvvvx...x
+x.[.+...x..+...xxxxxx.+~.~..+...x
+x...x...xxxx...xxxxxx.xvv=vvx...x
+xxxxxxxxxxxxxxxxxxxxxx=...xxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+NAME: david_trickyentry_002_c
+TAGS: entry no_monster_gen no_pool_fixup
+ORIENT: float
+CHANCE: 2
+SHUFFLE: {[(
+SHUFFLE: wWl
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxx=.....=xxxx
+x...xxxxxxx.+...xxxxx.xvvvvvx...x
+x.[.+.....+.xxxxxxxxx.+~~..~+...x
+x...xxxxxxx.xx....x.+.xvvvvvx...x
+xxxxx..x.xx.xx.ww.+.x.+..~.~+...x
+x...x..+.xx+xx.ww.xxx.xvvvvvx...x
+x.{.+..x.+...+....x.+.+.....+...@
+x...xxxxxxxx+xxx+xx.x.xvvvvvx...x
+xxxxx...x..x...x..xxx.+~...~+...x
+x...x...+..xxx+x..+.+.xvvvvvx...x
+x.(.+...x..+...xxxxxx.+..~~.+...x
+x...x...xxxx...xxxxxx.xvvvvvx...x
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+NAME: david_trickyentry_002_d
+TAGS: entry no_monster_gen no_pool_fixup
+ORIENT: float
+CHANCE: 2
+SHUFFLE: {[(
+SHUFFLE: wWl
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxx=.....=xxxx
+x...xxxxxxx.+...xxxxx.xvvvvvx...x
+x.{.+.....+.xxxxxxxxx.+...~~+...x
+x...xxxxxxx.xx....x.+.xvvvvvx...x
+xxxxx..x.xx.xx.ww.+.x.+.~~..+...x
+x...x..+.xx+xx.ww.xxx.xvvvvvx...x
+x.[.+..x.+...+....x.+.+..~.~+...@
+x...xxxxxxxx+xxx+xx.x.xvvvvvx...x
+xxxxx...x..x...x..xxx.+.....+...x
+x...x...+..xxx+x..+.+.xvvvvvx...x
+x.(.+...x..+...xxxxxx.+~..~~+...x
+x...x...xxxx...xxxxxx.xvvvvvx...x
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+NAME: david_trickyentry_002_e
+TAGS: entry no_monster_gen no_pool_fixup
+ORIENT: float
+CHANCE: 2
+SHUFFLE: {[(
+SHUFFLE: wWl
+MAP
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+x...xxxxxxx.+...xxxxx.xvvvvvx...x
+x.[.+.....+.xxxxxxxxx.+..~.~+...x
+x...xxxxxxx.xx....x.+.xvvvvvx...x
+xxxxx..x.xx.xx.ww.+.x.+..~~.+...x
+x...x..+.xx+xx.ww.xxx.xvvvvvx...x
+x.(.+..x.+...+....x.+.+~.~..+...@
+x...xxxxxxxx+xxx+xx.x.xvvvvvx...x
+xxxxx...x..x...x..xxx.+...~~+...x
+x...x...+..xxx+x..+.+.xvvvvvx...x
+x.{.+...x..+...xxxxxx.+.....+...x
+x...x...xxxx...xxxxxx.xvvvvvx...x
+xxxxxxxxxxxxxxxxxxxxxx=.....=xxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+##############################################################################
+# concentric eggs, the baby version
+
+NAME: david_trickyentry_003_concentric_mini_eggs
+TAGS: entry no_monster_gen
+ITEM: pear / apple / banana
+ORIENT: float
+SHUFFLE: =+
+MAP
+xxxxxxxxxx.@.xxxxxxxxxx
+xxxxxxxx.......xxxxxxxx
+xxxx...............xxxx
+xx......xxx=xxx......xx
+xx....xxxx.d.xxxx....xx
+x....xxx.......xxx....x
+x...xxx..xxxxx..xxx...x
+....xx..xx...xx..xx....
+@.[.+=d.=+.{.=+.d+=.(.@
+....xx..xx...xx..xx....
+x...xxx..xxxxx..xxx...x
+x....xxx.......xxx....x
+xx....xxxx.d.xxxx....xx
+xx......xxx=xxx......xx
+xxxx...............xxxx
+xxxxxxxx.......xxxxxxxx
+xxxxxxxxxx.@.xxxxxxxxxx
+ENDMAP
+
+##############################################################################
+# Evil foreboding
+
+NAME: david_trickyentry_004_a
+TAGS: entry no_monster_gen
+MONS: troll
+ORIENT: float
+CHANCE: 2
+SHUFFLE: {[(<
+MAP
+{...............[
+......lll........
+...lll.lll.......
+..l.llll.llll..l.
+...lll]..1lllll..
+..ll.ll...ll.....
+.....lll.ll......
+....ll.lll.......
+<...............(
+ENDMAP
+
+NAME: david_trickyentry_004_b
+TAGS: entry no_monster_gen
+MONS: giant bat
+ORIENT: float
+CHANCE: 8
+SHUFFLE: {[(<
+MAP
+{...............<
+......lll........
+...lll.lll.......
+..l.l.lllllll..l.
+...lll].11lllll..
+..ll.ll.11ll.....
+.....lll.ll......
+....ll.lll.......
+[...............(
+ENDMAP
+
+##############################################################################
+# The pits are prepared
+
+NAME: david_trickyentry_005_a
+TAGS: entry no_monster_gen
+ORIENT: float
+CHANCE: 3
+MAP
+@..................@
+..wwww........llll..
+.w.wwww......llllll.
+.ww{}ww......llllll.
+.wwwwww......llllll.
+..wwww..bbbb..llll..
+.......bbbbbb.......
+.......bbbbbb.......
+.......bbbbbb.......
+........bbbb........
+@..................@
+ENDMAP
+
+NAME: david_trickyentry_005_b
+TAGS: entry no_monster_gen
+ORIENT: float
+CHANCE: 3
+MAP
+@..................@
+..wwww........llll..
+.wwwwww......llllll.
+.wwwwww......ll}{ll.
+.wwwwww......llll.l.
+..wwww..bbbb..llll..
+.......bbbbbb.......
+.......bbbbbb.......
+.......bbbbbb.......
+........bbbb........
+@..................@
+ENDMAP
+
+NAME: david_trickyentry_005_c
+TAGS: entry no_monster_gen
+ORIENT: float
+CHANCE: 3
+MAP
+@..................@
+..wwww........llll..
+.wwwwww......llllll.
+.wwwwww......llllll.
+.wwwwww......llllll.
+..wwww..b=bb..llll..
+.......bb.bbb.......
+.......bb{}bb.......
+.......bb.b=b.......
+........b=bb........
+@..................@
+ENDMAP
+
+NAME: david_trickyentry_005_d
+TAGS: entry no_monster_gen
+ORIENT: float
+CHANCE: 1
+MAP
+@..................@
+..wwww........llll..
+.wwwwww..{}..llllll.
+.wwwwww......llllll.
+.wwwwww......llllll.
+..wwww..bbbb..llll..
+.......bbbbbb.......
+.......bbbbbb.......
+.......bbbbbb.......
+........bbbb........
+@..................@
+ENDMAP
+
+##############################################################################
+# Caged fury
+
+NAME: david_trickyentry_006
+TAGS: entry
+MONS: weight:30 nothing / worm
+MONS: weight:30 nothing / ooze / weight:2 jelly
+MONS: weight:30 nothing / jackal / rat
+FLAGS: no_rotate
+ORIENT: float
+SUBST: ?=Gx
+SHUFFLE: xc
+SHUFFLE: 123
+MAP
+.................
+.xxxxxxxxxxxxxxx.
+.x123132>332213x.
+.x2312132211321x.
+.x3123213123132x.
+.x?????G+G?????x.
+.x.............x.
+.=T....xxx....T=.
+.x.....({[.....x.
+.x..T.......T..x.
+.xxx=xxxxxxx=xxx.
+.................
+ENDMAP
+
+##############################################################################
+# Morbid curiosity
+
+NAME: david_trickyentry_007
+TAGS: entry
+MONS: goblin, kobold, orc priest
+ITEM: needle, dart, stone
+ORIENT: float
+MAP
+xxxxxxxxxxxxxx.xxxxxxxxxxxxxx
+xxxxxxxxx...........xxxxxxxxx
+xxxxxx...xxxxx+xxxxx...xxxxxx
+xxxx..xxxxxlllllllxxxxx..xxxx
+xxx.xxxxxlll..3..lllxxxxx.xxx
+xx.xxxxxx...........xxxxxx.xx
+xx.xxxxxxxxxxx=xxxxxxxxxxx.xx
+xx.xxxxxxxxx.....xxxxxxxxx.xx
+x.xx...xxx..G.G.G..xxx..lxx.x
+x.x....xx...........xx1fllx.x
+x.x....x.............x...lx.x
+..+...........{....G.=..1l+..
+x.x....x.............x...lx.x
+x.x....xx...........xx..llx.x
+x.xx...xxx...G.G...xxx..lxx.x
+xx.xxxxxxxxx.....xxxxxxxxxx.x
+xx.xxxxxxxxxxx=xxxxxxxxxxx.xx
+xx.xxxxxx2d....2..e2xxxxxx.xx
+xxx.xxxxxlll2....lllxxxxx.xxx
+xxxx..xxxxxlllllllxxxxx..xxxx
+xxxxxx...xxxxx+xxxxx...xxxxxx
+xxxxxxxxx...........xxxxxxxxx
+xxxxxxxxxxxxxx.xxxxxxxxxxxxxx
+ENDMAP
+
+##############################################################################
+# Stupid exit shuffling
+
+NAME: david_trickyentry_008
+TAGS: entry
+ITEM: nothing
+ORIENT: float
+SHUFFLE: [{(
+SHUFFLE: GIcbv=
+MAP
+xxxxxxxxxxxxx
+x[....{....(x
+x...........x
+x+x+x+x+x+x+x
+x.x.x.x.x.x.x
+x.x.x.x.x.x.x
+x.x.x.x.x.x.x
+x.x.x.x.x.x.x
+x.x.x.x.x.x.x
+x.x.x.x.x.x.x
+x.x.x.x.x.x.x
+x.x.x.x.x.x.x
+xGxIxcxbxvx=x
+x.....@.....x
+ENDMAP
+
+##############################################################################
+# Water fire reprise
+
+NAME: david_trickyentry_009_water_fire
+TAGS: entry no_monster_gen no_pool_fixup
+FLAGS: no_rotate
+CHANCE: 1
+MONS: plant, plant / nothing
+ITEM: bread ration / weight:20 meat ration, weight:20 any food / nothing
+ORIENT: float
+SHUFFLE: {[(
+SHUFFLE: lw
+MAP
+xxxxxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxxxxx
+xxxxxxxxxxxxx...............xxxxxxxxxxxxx
+xxxxxxxx.........ll....ww........xxxxxxxx
+xxxx..........llllllxwwwwww..........xxxx
+xx......ll...lllxxllxwwww..ww..ww......xx
+x...llllllllll.dllllxw..2wwwxxx..www....x
+x.xl.lel.lx.l.lxxxxxx.xxxxw.wwx.x21wwwwwx
+xxllxxx.x.l.lx.1llww21wwwwxx.wxwx.1w..wwx
+x.l.xx.lxl.lxx22x.w.xww.1111xw.wxw.2xx.wx
+xl.xx..lxl.lx..111..x..xxxwx11.wxw.wx.xxx
+xll.xll.xxll.1x1xx.xx.x....wxxx.xxw.xw.wx
+xlx.x..lxll.x..xxe..x...x...xw.xx.wwxxw.x
+x.x.x...xx.xxx..x.x.x.x.x.wxxww.x.xxxw.wx
+x...x...x.xxx...x.x.x...xx..x..wx...xw..x
+xx+xx...x...x...x...x...x...x...x...xx+xx
+x..xxx..x...x...x...x...x...x...x..xxx..x
+x....x+xx...x...x...x...x...x...xx+x....x
+xx......xx+xxx+xx...x...xx+xxx+xx......xx
+xxxx...........xxx+xxx+xxx...........xxxx
+xxxxxxxx.........................xxxxxxxx
+xxxxxxxxxxxxx.....[.{.(.....xxxxxxxxxxxxx
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+##############################################################################
+# The zoo
+
+NAME: david_trickyentry_010
+TAGS: entry no_monster_gen no_pool_fixup
+MONS: nothing / hobgoblin / warg / war dog / hog / hound / wolf
+MONS: nothing / giant gecko / giant iguana / giant lizard / giant newt
+MONS: nothing / orc / generate_awake orc priest / generate_awake orc warrior / generate_awake orc wizard
+MONS: nothing / generate_awake brain worm / generate_awake lava worm / generate_awake swamp worm / worm
+ITEM: any food
+ORIENT: float
+SHUFFLE: {[(
+SHUFFLE: lw
+SHUFFLE: 1234d
+MAP
+xxxxxx@xxxxxx
+x...........x
+x.v+v+v+v+v.x
+x.v=v=v=v=v.x
+x.v=v=v=v=v.x
+x.v1v2v3v4v.x
+x.vwvwvwvwv.x
+x.v+v+v+v+v.x
+x...........x
+x..I.I.I.I..x
+x...........x
+x...{.[.(...x
+xxxxxxxxxxxxx
+ENDMAP
+
+##############################################################################
+# Goblin Pantry
+
+NAME: erik_trickyentry_001
+TAGS: entry
+ORIENT: float
+FLAGS: no_rotate
+MONS: goblin, hobgoblin
+ITEM: sausage / beef jerky / cheese / pizza / pizza / pizza
+SHUFFLE: {[(
+MAP
+xxxxxxxx...xxxxxx
+xxxxxxxx.x.xxxxxx
+xxxxxxxx...xxxxxx
+xxxxxxxx.x.xxxxxx
+xxxxxxxx...xxxxxx
+xxxxxxxx.x.xxxxxx
+xxxxxxxx...xxxxxx
+xxxxxxxx.x.xxxxxx
+xxxxxxxx...xxxxxx
+xxxxxxxx...xxxxxx
+xdx2+.x.....xxxxx
+x$x2x.x.....xxxxx
+x.x2x.x.[{(.xxxxx
+xdx1x.x.....xxxxx
+xd+1x.+.....xxxxx
+xxxxxxxxxxxxxxxxx
+ENDMAP
+
+##############################################################################
+# Spiral Da Hi
+
+NAME: erik_trickyentry_002
+TAGS: entry
+ORIENT: float
+MONS: fungus
+MAP
+x@xxxxxxxxxxxxxxxxxxxx
+x.=xxxxxxxxxxxxxxxxxxx
+x.x..................x
+x.x.=xxxxxxxxxxxxxx1.x
+x.x.x..............x.x
+x.x.x.=xxxxxxxxxx1.x.x
+x.x.x.x..........x.x.x
+x.x.x.x.=xxxxxx1.x.x.x
+x.x.x.x.x......x.x.x.x
+x.x.x.x.x.=xxx.x.x.x.x
+x.x.x.x.x.x{[x.x.x.x.x
+x.x.x.x.x.xx(x.x.x.x.x
+x.x.x.x.x....x.x.x.x.x
+x.x.x.x.1xxxx=.x.x.x.x
+x.x.x.x........x.x.x.x
+x.x.x.1xxxxxxxx=.x.x.x
+x.x.x............x.x.x
+x.x.1xxxxxxxxxxxx=.x.x
+x.x................x.x
+x.1xxxxxxxxxxxxxxxx=.x
+x....................x
+xxxxxxxxxxxxxxxxxxxxxx
+ENDMAP
+
+##############################################################################
+# Ooh! Treasure!, Low Noise Edition Now with Added Exity Goodness
+
+NAME: erik_trickyentry_003
+TAGS: entry no_monster_gen
+ORIENT: float
+ITEM: scroll of paper, potion of water, wand of slowing
+ITEM: club, knife, stone, ring of teleportation
+SHUFFLE: {[(<
+MAP
+bbbbbbbbbbbbbbbbbbbbb
+b0g....d..}g.......0b
+b.g..ge...e..d.d....b
+b..d................b
+bh..............g.d.b
+b.........j.........b
+b...................b
+b.........d.........b
+b........ddd......g.b
+b.h.....ddddd.......b
+b..g......d......g..b
+b.........d.........b
+b.........d.........b
+b...f.....d.......e.b
+b...................b
+b..........i........b
+b.....e...........hib
+bh........(......h..b
+bh..d....<[<....j...b
+b0........{........0b
+bbbbbbbbbbbbbbbbbbbbb
+ENDMAP
+
+##############################################################################
+# Being Mean Is Cool
+
+NAME: erik_trickyentry_004_a
+TAGS: entry
+ORIENT: float
+CHANCE: 5
+ITEM: scroll of curse armour, scroll of teleportation
+MAP
+xxxxx
+xxexx
+xd{ex
+xxdxx
+xxxxx
+ENDMAP
+
+NAME: erik_trickyentry_004_b
+TAGS: entry
+ORIENT: float
+CHANCE: 5
+ITEM: scroll of curse armour / scroll of random uselessness / scroll of identify
+ITEM: scroll of curse armour / scroll of fear / scroll of teleportation
+MAP
+@.....@
+.xx=xx.
+.xxexx.
+.=d{e=.
+.xxdxx.
+.xx=xx.
+@.....@
+ENDMAP
diff --git a/crawl-ref/source/externs.h b/crawl-ref/source/externs.h
index b99b03fa64..048782eca5 100644
--- a/crawl-ref/source/externs.h
+++ b/crawl-ref/source/externs.h
@@ -1087,6 +1087,8 @@ public:
std::string morgue_dir; // Directory where character dumps and morgue
// dumps are saved. Overrides crawl_dir.
+ std::vector<std::string> extra_levels;
+
std::string player_name;
bool autopickup_on;
diff --git a/crawl-ref/source/initfile.cc b/crawl-ref/source/initfile.cc
index d5ae9102d1..50bcb190b7 100644
--- a/crawl-ref/source/initfile.cc
+++ b/crawl-ref/source/initfile.cc
@@ -728,6 +728,7 @@ void game_options::reset_options()
channels[i] = MSGCOL_DEFAULT;
// Clear vector options.
+ extra_levels.clear();
dump_order.clear();
new_dump_fields("header,stats,misc,inventory,skills,"
"spells,,overview,mutations,messages,screenshot,"
@@ -1301,7 +1302,8 @@ void game_options::read_option_line(const std::string &str, bool runscript)
&& key != "note_monsters" && key != "note_messages"
&& key.find("cset") != 0 && key != "dungeon"
&& key != "feature" && key != "fire_items_start"
- && key != "menu_colour" && key != "menu_color")
+ && key != "menu_colour" && key != "menu_color"
+ && key != "levels" && key != "level" && key != "entries")
{
tolower_string( field );
}
@@ -1387,13 +1389,13 @@ void game_options::read_option_line(const std::string &str, bool runscript)
}
else if (key == "default_autopickup")
{
- // should autopickup default to on or off?
- autopickup_on = read_bool( field, autopickup_on );
+ // should autopickup default to on or off?
+ autopickup_on = read_bool( field, autopickup_on );
}
else if (key == "default_autoprayer")
{
- // should autoprayer default to on or off?
- autoprayer_on = read_bool( field, autoprayer_on );
+ // should autoprayer default to on or off?
+ autoprayer_on = read_bool( field, autoprayer_on );
}
else if (key == "detailed_stat_dump")
{
@@ -1545,6 +1547,10 @@ void game_options::read_option_line(const std::string &str, bool runscript)
// As a suggestion, try "rxvt -rv -fn 10x20" under Un*xes
friend_brand = curses_attribute(field);
}
+ else if (key == "levels" || key == "level" || key == "entries")
+ {
+ extra_levels.push_back(field);
+ }
else if (key == "stab_brand")
{
stab_brand = curses_attribute(field);
@@ -1885,19 +1891,19 @@ void game_options::read_option_line(const std::string &str, bool runscript)
}
else if (key == "note_skill_levels")
{
- std::vector<std::string> thesplit = split_string(",", field);
- for ( unsigned i = 0; i < thesplit.size(); ++i )
+ std::vector<std::string> thesplit = split_string(",", field);
+ for ( unsigned i = 0; i < thesplit.size(); ++i )
{
- int num = atoi(thesplit[i].c_str());
- if ( num > 0 && num <= 27 )
- note_skill_levels.push_back(num);
- else
+ int num = atoi(thesplit[i].c_str());
+ if ( num > 0 && num <= 27 )
+ note_skill_levels.push_back(num);
+ else
{
- fprintf(stderr, "Bad skill level to note -- %s\n",
- thesplit[i].c_str());
- continue;
- }
- }
+ fprintf(stderr, "Bad skill level to note -- %s\n",
+ thesplit[i].c_str());
+ continue;
+ }
+ }
}
else if (key == "pickup_thrown")
{
diff --git a/crawl-ref/source/maps.cc b/crawl-ref/source/maps.cc
index 4994fc5a69..7df752a3e8 100644
--- a/crawl-ref/source/maps.cc
+++ b/crawl-ref/source/maps.cc
@@ -376,6 +376,15 @@ void read_maps()
{
parse_maps( lc_desfile = datafile_path( "splev.des" ) );
parse_maps( lc_desfile = datafile_path( "vaults.des" ) );
+
+ for (int i = 0, size = Options.extra_levels.size(); i < size; ++i)
+ {
+ lc_desfile = datafile_path( Options.extra_levels[i] + ".des", false );
+ if (lc_desfile.empty())
+ continue;
+
+ parse_maps( lc_desfile );
+ }
}
void add_parsed_map( const map_def &md )
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc
index 8126a72afa..62abbf8868 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -4542,8 +4542,10 @@ void mons_check_pool(monsters *mons, int killer)
ptr_monam(mons, DESC_CAP_THE),
(grid == DNGN_LAVA ? "lava" : "water"));
- // Even fire resistant monsters perish in lava!
- if (!monster_habitable_grid(mons, grid))
+ // Even fire resistant monsters perish in lava, but undead can survive
+ // deep water.
+ if (!monster_habitable_grid(mons, grid)
+ && (grid == DNGN_LAVA || mons->holiness() != MH_UNDEAD))
{
if (message)
{