summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/dat/minitomb.des
blob: 30aed481abbd14bf058381e204ccc4c4bda46842 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
##############################################################################
#
# The Miniature Tomb (Zaba)
#
#
# The Tomb en miniature tries to pose an unusual early challenge: many traps
# and slow monsters, making the player choose between pressing on towards the
# loot or leaving the vault.
#
# Flavour: Mini versions of Tomb:* and otherwise crypt like.
#
##############################################################################

{{
function minitomb_portal(e)
 local timeout_turns = crawl.random_range(1500, 2000)

  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,
          "Nearby sand pours into $F{the}.",
          "Nearby sand pours into $F{the}, lightly covering it.",
          "Nearby sand pours into $F{the}, greatly covering it.",
          "Nearby sand pours into $F{the}, almost completely blocking access.")
    }

  e.lua_marker('O',
      timed_marker {
        disappear = "The staircase has disappeared completely beneath the sand.",
        desc = "A sand-covered staircase",
        entity = 'staircase',
        dst = "minitomb",
        dstorigin = "in a tomb",
        overmap = "sand-covered staircase",
        turns = timeout_turns,
        floor = "floor",
        msg = messager })
  e.kfeat("O = enter_portal_vault")
  e.colour("O = yellow")
end

-- Use the following line in destination maps after all SUBSTs
-- : minitomb_setup_features(_G)
-- Note that the function also defines < to be the exit portal.
function minitomb_setup_features(e)
        e.kfeat("< = exit_portal_vault")
        e.colour("< = yellow")
        e.lrockcol("white")
        e.lfloorcol("yellow")
        e.lrocktile("wall_tomb")
        e.lfloortile("floor_tomb")
end
}}

# Add the milestone.
{{
function minitomb_milestone(e)
  crawl.mark_milestone("br.enter", "entered a Minitomb.")
end
}}

#### Portal entry vaults.
default-depth: D:4-8

NAME:   enter_minitomb_1
TAGS:   uniq_minitomb no_monster_gen
SUBST:  . = . Y:7
COLOUR: Y = yellow
FTILE:  Y = floor_tomb
SUBST:  Y = .
: minitomb_portal(_G)
MAP
.....
.....
..O..
.....
.....
ENDMAP

NAME:   enter_minitomb_2
TAGS:   uniq_minitomb no_monster_gen
COLOUR: ' = yellow
FTILE:  ' = floor_tomb
SUBST:  ' = .
: minitomb_portal(_G)
MAP
.......
.cc=cc.
.c'''c.
.c'O'c.
.c'''c.
.ccccc.
.......
ENDMAP

NAME:   enter_minitomb_3
TAGS:   uniq_minitomb no_monster_gen
SUBST:  . = Y .
COLOUR: Y = yellow
FTILE:  Y = floor_tomb
SUBST:  Y = .
MONS:   rat zombie / jackal zombie / worm zombie
MONS:   kobold zombie / goblin zombie / hobgoblin zombie
MONS:   orc zombie / gnoll zombie / human zombie
SUBST:  . = .:100 11 2 3
: minitomb_portal(_G)
MAP
...
.O.
...
ENDMAP

NAME:   enter_minitomb_4
TAGS:   uniq_minitomb no_monster_gen
COLOUR: 1 = yellow, ' = yellow, x = white
MONS:   rat zombie / quokka zombie / goblin zombie
FTILE:  1 = floor_tomb, ' = floor_tomb, x = floor_tomb, O = floor_tomb
RTILE:  x = wall_tomb
: minitomb_portal(_G)
MAP
.........
.xxxxxxx.
.x''O''x.
.x'''''x.
.x'x'x'x.
.x1x'x1x.
.xxx'xxx.
....'....
ENDMAP


#### The portal vaults ####################################

# Reset default depth to prevent random generation of portal vaults.
default-depth:

NAME:    minitomb_1
WEIGHT:  60
ORIENT:  encompass
TAGS:    minitomb no_item_gen no_monster_gen no_rotate
SHUFFLE: dwyz
SUBST:   w=2, y=2
NSUBST:  z= 1:1 / *:3
KFEAT:   T = alarm trap / floor
# loot: 12.5 items
ITEM:    any scroll w:2 / any scroll q:2 w:3 / \
         any potion w:4 / any potion q:2 w:6
MONS:    mummy
MONS:    rat zombie / jackal zombie / snake zombie / goblin zombie / \
         hobgoblin zombie / kobold zombie / big kobold zombie / \
         human zombie / elf zombie / centaur zombie
MONS:    kobold zombie / orc zombie / hobgoblin zombie
: minitomb_setup_features(_G)
: minitomb_milestone(_G)
MAP
xxxxxxxxxxxxxxxxxxxxxx
x.........<A.........x
x....................x
x...cccccccccccccc...x
x...c.22*c...cdddc...x
x3..c1cccc...cdddc..3x
x..3c........+cccc3..x
x3..cccccc.<.....c..3x
x..3c.zzzc.......c3..x
x3..c.czzc.......c..3x
x...c.cccc.......c...x
x...c............c...x
x...c.ccccTTcccc.c...x
x...c.cyycTTcwwc.c...x
x...c.yyycTTcwww.c...x
x...ccccccTTcccccc...x
x....................x
x.3.3.3..G..G..3.3.3.x
x..3.3..........3.3..x
x....................x
xxxxxxxxxxxxxxxxxxxxxx
ENDMAP

NAME:    minitomb_the_hunt_dp
WEIGHT:  10
ORIENT:  encompass
TAGS:    minitomb no_item_gen no_monster_gen
# loot: 8 items of which 6 should be good.
# Most of the loot helps right here, if need be.
ITEM:    potion of healing / potion of heal wounds / potion of speed / \
         potion of confusion w:5 / potion of mutation w:5 / \
         scroll of identify / scroll of teleportation w:5 / \
         scroll of blinking w:5 / scroll of holy word / \
         scroll of curse armour w:5 / scroll of curse weapon w:5
# There are three setups than can occur:
# 10% - part of the loot in the closets, secret doors, bit more loot
# 45% - doors are secret, traps are nasty, monsters asleep
# 45% - doors are obvious, traps are softer, monsters are awake
: if crawl.one_chance_in(10) then
SUBST:   3 = d
NSUBST:  d = 6:3 / *:d
SUBST:   M = 111.
: elseif crawl.coinflip() then
SUBST:   M = 111.
: else
SUBST:   = = +
SUBST:   ~ = T
SUBST:   3 = 2
NSUBST:  M = 1:1 / *:.
:end
MONS:    mummy
MONS:    generate_awake centaur zombie / generate_awake hobgoblin zombie / \
         generate_awake big kobold zombie / nothing w:20
MONS:    centaur zombie / hobgoblin zombie / big kobold zombie / nothing w:20
KFEAT:   ~ = dart trap w:20 / axe trap w:2 / net trap / needle trap / \
             alarm trap / floor w:40
KFEAT:   T = alarm trap w:20 / net trap / floor w:70
KFEAT:   ^ = net trap w:15 / needle trap w:4 / axe trap w:1 / floor w:20
COLOUR:  ^ = red
KFEAT:   W = dart trap / floor w:20
: minitomb_setup_features(_G)
: minitomb_milestone(_G)
MAP
           cccccccccccccccccccc
   ccccccccc3c3c3c3c3c3c3cddddccc
 ccc.....WWc=c=c=c=c=c=c=c^.....c
cc1.....WW~~~~~~~~~~~~~~~~^.....cc
c......WWW~~~~~~~~~~~~~~~~^.....Mcc
c1....AW<W~~~~~~~~~~~~~~~~^.....M<c
c......WWW~~~~~~~~~~~~~~~~^.....Mcc
cc1.....WW~~~~~~~~~~~~~~~~^.....cc
 ccc.....WWc=c=c=c=c=c=c=c^.....c
   ccccccccc3c3c3c3c3c3c3cddddccc
           cccccccccccccccccccc
ENDMAP

NAME:    minitomb_crypta
WEIGHT:  30
ORIENT:  encompass
TAGS:    minitomb no_item_gen no_monster_gen no_rotate no_vmirror
MONS:    mummy
MONS:    gnoll zombie / hobgoblin zombie / orc zombie / \
         human zombie / kobold zombie / goblin zombie / \
         big kobold zombie / centaur zombie
# mix of strictly good items with strictly useless ones
ITEM:    scroll of curse armour / scroll of enchant armour w:5 / \
         scroll of curse weapon / scroll of remove curse       / \
         potion of mutation w:5 / potion of cure mutation w:5  / \
         potion of confusion    / potion of healing w:15       / \
         potion of degeneration / potion of restore abilities  / \
         scroll of immolation   / scroll of identify
# and sometimes strictly useless ones
ITEM:    scroll of curse armour / scroll of curse weapon / \
         scroll of paper        / scroll of random uselessness / \
         potion of mutation w:5 / potion of confusion    / \
         potion of degeneration / scroll of immolation   / \
         potion of confusion    / potion of paralysis
# occasionally just use this
ITEM:    any potion / any scroll w:5 / nothing
SHUFFLE: hjkl
SUBST:   h:d, j:e, k:de, l:.de
NSUBST:  f = 6:f / *:e
NSUBST:  d = 2:M / *:d
NSUBST:  e = 2:M / *:e
SUBST:   M = 1f, d = dddf, e = eeef
NSUBST:  . = 6:^ / *:.
KFEAT:   ^ = alarm trap / floor w:20
SUBST:   = : =+
SUBST:   = = =+
: minitomb_setup_features(_G)
: minitomb_milestone(_G)
MAP
          vvv
        vvv1vvv
 ccccc vvfffffvv ccccc
 clllc vfff1fffv chhhc
 clllc vvvv^vvvv chhhc
 cc^cc    c^c    cc^cc
ccc.c   ccc+ccc   c.ccc
c2+.cc cc.....cc cc.+2c
ccc..ccc.......ccc..ccc
c2+...c.........c...+2c
ccc...=....U....=...ccc
c2+...c.........c...+2c
ccc..ccc.......ccc..ccc
c2+.cc cc.....cc cc.+2c
ccc.c   ccc+ccc   c.ccc
 cc^cc    c.c    cc^cc
 ckkkc   cc.cc   cjjjc
 ckkkc   c.A.c   cjjjc
 ccccc   c.<.c   ccccc
         ccccc
ENDMAP

NAME:    minitomb_2
# Generally have rooms full of either monsters or traps. To protect the
# monsters, all doors are secret, no alarm traps, and mostly needle
# traps.
WEIGHT:  30
ORIENT:  encompass
TAGS:    minitomb no_item_gen no_monster_gen no_rotate
KFEAT:   ~ = dart trap w:1 / arrow trap w:1 / needle trap
KFEAT:   ^ = dart trap / arrow trap
# Number of 1's is 53, number of ~'s is 57.
: if crawl.one_chance_in(10) then
SUBST:   ~ = 1
SUBST:   1 = 1:20 2:10 ~:50 .:30
: else
SHUFFLE: 1~
SUBST:   1 = 1:20 2:10 .:20
SUBST:   ~ = ~:20 .:10
:end
SUBST:   z = 1
NSUBST:  B = 1:= / *:c
NSUBST:  C = 1:= / *:c
NSUBST:  D = 1:= / *:c
NSUBST:  E = 1:= / *:c
NSUBST:  F = 1:= / *:c
NSUBST:  G = 1:= / *:c
NSUBST:  H = 1:= / *:c
NSUBST:  I = 1:= / *:c
NSUBST:  J = 1:= / *:c
NSUBST:  K = 1:= / *:c
# loot: 12 items
ITEM:    any scroll w:6 / any potion / any potion q:2 w:2
MONS:    snake zombie / hobgoblin zombie / orc zombie / kobold zombie / nothing
MONS:    big kobold zombie / brown snake zombie / gnoll zombie / nothing
MONS:    mummy
: minitomb_setup_features(_G)
: minitomb_milestone(_G)
MAP
cccccccccccccccccccccc
c<11H~~~G1111F~~~E111c
c111H~~~G1111F~~~E111c
c111H~~~G1111F~~~E111c
cIIIccccccccccccccDDDc
c~~~c            c~~~c
c~~~c            c~~~c
c~~~c            c~~~c
c~~~c            c~~~c
cJJJc            cCCCc
c111c            c111c
c111c            c111c
c111c            c111c
c111c            c111c
cKKKc            cBBBc
c~~~c            c^^^c
c~~~cccccccccccccc^^^c
c~~~c...cddddc...c.z^c
c~~~+3<3=d**dn.A.+.^^c
c~~~c...cddddc...c.z<c
cccccccccccccccccccccc
ENDMAP

NAME:    minitomb_3
WEIGHT:  10
ORIENT:  encompass
TAGS:    minitomb no_item_gen no_monster_gen no_rotate no_vmirror
# zombies should be awake, so they march downwards in a line
MONS:    generate_awake orc zombie / generate_awake kobold zombie / \
         generate_awake hobgoblin zombie / generate_awake gnoll zombie
MONS:    mummy
MONS:    orc zombie / kobold zombie / big kobold zombie / hobgoblin zombie
# loot: 24 items
ITEM:    nothing / any scroll w:5 / any potion
KFEAT:   ^ = alarm trap
: minitomb_setup_features(_G)
: minitomb_milestone(_G)
MAP
cccccccccccccccccccccc
cccc.....2222.....cccc
ccc..2...cccc...2..ccc
cc......cc..cc......cc
cc.....cc....cc.....cc
cc........22........cc
ccc..3....22....3..ccc
cccc..............cccc
cccc+cc........cc+cccc
cccc^^cc111111cc^^cccc
cccd...cc....cc...dccc
ccdd....c....c....ddcc
c$ddd...c....c...ddd$c
c$ddd...c....c...ddd$c
c$$dd...c....c...dd$$c
cc$ddd..c....c..ddd$cc
cc$$dd.cc....cc.dd$$cc
ccc$dd.cc....cc.dd$ccc
ccc$ddccc.<A.cccdd$ccc
cccccccccccccccccccccc
ENDMAP