summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/dat/ossuary.des
blob: 9c977814a35a8c4a4bba0e89bebfbc475c53053d (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
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
##############################################################################
#
# The Ossuary, a Tomb en miniature (Zaba)
#
#
# The Ossuary 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 ossuary_portal(e)
  local desc_long =
"You can make out a staircase leading downwards into a small tomb. Sand "..
"surrounds the staircase and is continuously pouring onto it. Before long the "..
"staircase will be gone. They say that some distant relatives of the pharaohs "..
"were entombed here."

  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",
        desc_long = desc_long,
        entity = 'staircase',
        dst = "ossuary",
        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
-- : ossuary_setup_features(_G)
-- Note that the function also defines < to be the exit portal.
function ossuary_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 ossuary_milestone(e)
  crawl.mark_milestone("br.enter", "entered an Ossuary.")
end
}}

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

NAME:   enter_ossuary_1
TAGS:   uniq_ossuary no_monster_gen
SUBST:  . = . ':7
COLOUR: ' = yellow
FTILE:  ' = floor_tomb
SUBST:  ' = .
: ossuary_portal(_G)
MAP
.....
.'''.
.'O'.
.'''.
.....
ENDMAP

NAME:    enter_ossuary_2
TAGS:    uniq_ossuary no_monster_gen
SHUFFLE: CD / c+
COLOUR:  ' = yellow
COLOUR:  C = yellow
COLOUR:  D = yellow
SUBST:   D = =
SUBST:   C = c
FTILE:   ' = floor_tomb
SUBST:   ' = .
: ossuary_portal(_G)
MAP
.......
.ccDcc.
.c'''c.
.C'O'C.
.c'''c.
.ccCcc.
.......
ENDMAP

NAME:   enter_ossuary_3
TAGS:   uniq_ossuary 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
: ossuary_portal(_G)
MAP
...
.O.
...
ENDMAP

NAME:   enter_ossuary_4
TAGS:   uniq_ossuary 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
: ossuary_portal(_G)
MAP
.........
.xxxxxxx.
.x''O''x.
.x'''''x.
.x'x'x'x.
.x1x'x1x.
.xxx'xxx.
....'....
ENDMAP

NAME:   enter_ossuary_5
TAGS:   uniq_ossuary no_monster_gen
COLOUR: c = white, = = white, ' = yellow
RTILE:  c = wall_tomb, = = wall_tomb
FTILE:  ' = floor_tomb
NSUBST: = = 1:= / *:c
SUBST:  c : cx
: ossuary_portal(_G)
MAP
   ...   
  ..c..  
 ..=c=.. 
..=c'c=..
.cc'O'cc.
..=c'c=..
 ..=c=.. 
  ..c..  
   ...
ENDMAP


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

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

NAME:    ossuary_tomb_1
WEIGHT:  40
ORIENT:  encompass
TAGS:    ossuary 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
: ossuary_setup_features(_G)
: ossuary_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:    ossuary_the_hunt_dpeg
WEIGHT:  10
ORIENT:  encompass
TAGS:    ossuary 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
: ossuary_setup_features(_G)
: ossuary_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:    ossuary_crypta
WEIGHT:  20
ORIENT:  encompass
TAGS:    ossuary 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:   = = =+
: ossuary_setup_features(_G)
: ossuary_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:    ossuary_tomb_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:  40
ORIENT:  encompass
TAGS:    ossuary 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 / water moccasin zombie / gnoll zombie / nothing
MONS:    mummy
: ossuary_setup_features(_G)
: ossuary_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:    ossuary_tomb_3
WEIGHT:  40
ORIENT:  encompass
TAGS:    ossuary 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
: ossuary_setup_features(_G)
: ossuary_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

# Guardian mummies are a clue, and actually quite a scary threat.
NAME:    ossuary_due_mausoleum
WEIGHT:  10
ORIENT:  encompass
TAGS:    ossuary no_item_gen no_monster_gen no_rotate no_vmirror
MONS:    orc skeleton / kobold skeleton / gnoll skeleton / orc skeleton
MONS:    mummy
MONS:    patrolling guardian mummy
# Loot: 22-30 items, with early loot!
ITEM:    any scroll / any potion
ITEM:    any scroll / any potion / nothing
KITEM:   x = any scroll / any potion
KMONS:   x = guardian mummy
: ossuary_setup_features(_G)
: ossuary_milestone(_G)
: crawl.mpr("You feel the presence of a powerful and evil guardian...", "warning")
MAP
ccccccccccccccccccccccccccccc
ccccccccccccccccccccccccccccc
cc1.1...................1.1cc
cc.<.....................<.cc
cc1.1....ccccc+ccccc....1.1cc
cc......cc.........cc......cc
cc.....cc...cc=cc...cc.....cc
cc....cc...cmdxdmc...cc....cc
cc....c...cmdddddmc...c....cc
cc....+...=ddd<ddd=...+....cc
cc....c...cmdddddmc...c....cc
cc....cc...cmdddmc...cc....cc
cc.....cc...cc=cc...cc.....cc
cc......cc.........cc......cc
cc1.1....ccccc+ccccc....1.1cc
cc.<.....................<.cc
cc1.1...................1.1cc
ccccccccccccc+++ccccccccccccc
ccccccccccccc...ccccccccccccc
ccccccccccee+.2.+eecccccccccc
cccccccccceec111ceecccccccccc
ccccccccccccc111ccccccccccccc
ccccccccccccc111ccccccccccccc
ccccccccccccc...ccccccccccccc
ccccccccccccc...ccccccccccccc
ccccccccccccc...ccccccccccccc
ccccccccccccc...ccccccccccccc
ccccccccccccc+++ccccccccccccc
cccccccccccc.....cccccccccccc
ccccccccccc.......ccccccccccc
cccccccc3o...<.A...o3cccccccc
ccccccccccc.......ccccccccccc
cccccccccccc.....cccccccccccc
ccccccccccccc...ccccccccccccc
ccccccccccccccocccccccccccccc
cccccccccccccc3cccccccccccccc
ccccccccccccccccccccccccccccc
ENDMAP

# INDY: Oh, rats! ... He hates rats. He's scared to death of 'em.
NAME:    ossuary_due_small_catacomb
WEIGHT:  10
ORIENT:  encompass
TAGS:    ossuary no_item_gen no_monster_gen
ITEM:    any scroll / any potion
MONS:    kobold skeleton / goblin skeleton / gnoll skeleton / \
         orc skeleton
MONS:    mummy
# Loot: 10-19
# Some random content.
SHUFFLE: Bb/Zz, Dd/Ww, Ee/Vv
SUBST:   Z=c, z=c, W=c, w=c, V=c, v=c
SUBST:   B=X, D=X, E=X
NSUBST:  b = 1:= / c
NSUBST:  d = 1:= / c
NSUBST:  e = 1:= / c
SUBST:   X = x2
# Guaranteed 10 items and 10 mummies, two in hidden rooms.
# 50/50 chance of loot for each of the eleven rats in the rat room.
KITEM:   x = any scroll / any potion
KMONS:   x = mummy
NSUBST:  ' = 10:^ / *:.
KFEAT:   ^ = dart trap / arrow trap
KITEM:   y = any scroll w:5 / any potion w:5 / nothing w:10
KMONS:   y = rat skeleton
: ossuary_setup_features(_G)
: ossuary_milestone(_G)
MAP
           ccc
         cccxccccc
       ccc''''+''c      cccccc
      cc'''ccccc'c     cc'+.1cc
     cc1'ccc  cc+cc   cc''cc''cc
    cc..cc   cc...ccccc''cccc''ccc
ccc cc+cc    c+.x.+.1'''cc  cc'''cc
cAccc'''cc  ccb...cccxccc   cecc'cc
c..+..1'+c  cBcc+cc ccc   cceEec+cc
c<ccc'''cc  ccb''cc   cccccxccc...ccc
ccc cc+cc   cc''=cccccc''+''''+.x.+Xc
     c.cc  cc1'cc'cdDd.1ccccccc...ccc
     c1cc cc..cccc'cdd.cc     cc+cc
     c''cccc+cc  cc'cc+cc      cXc
     cc''cc...cccccc=yyyccccc  ccc 
      cc'+..x..+'''+yyyyy+.1cc
       cccc...cccxcccyyyccc''cc
          cc=cc ccc cc+cc cc''ccccc
           cxc       ccc   cc'''+Xc
           ccc              ccccccc
ENDMAP

# Menkaures's pyramid
NAME:    ossuary_due_pyramid
WEIGHT:  10
ORIENT:  encompass
TAGS:    ossuary no_item_gen no_monster_gen no_rotate no_vmirror no_hmirror
MONS:    kobold zombie / gnoll zombie / orc zombie / rat zombie / \
         goblin zombie / hobgoblin zombie
MONS:    kobold skeleton / gnoll skeleton / orc skeleton / rat skeleton / \
         goblin skeleton / hobgoblin skeleton
MONS:    mummy
KMONS:   4 = Menkaure, mummy
# Loot: 1-16 items
ITEM:    any scroll / any potion / w:5 nothing
KFEAT:   ^ = arrow trap / dart trap / alarm trap
KFEAT:   m = bolt trap
KFEAT:   ~ = alarm trap
NSUBST:  ' = 2:m / 25:1 / 25:2 / 30:^ / .
: ossuary_setup_features(_G)
: ossuary_milestone(_G)
MAP
                            cc
                           cccc
                          cccccc
                         cc''''cc
                        cc''cc''cc
                       cc''cccc''cc
                      cc''cccccc''cc
                     cc''cc''''cc''cc
                    cc''cc''cc''cc''cc
                   cc''cc''cc=c''cc''cc
                  cc''cc''cc=ccc''cc''cc
                 cc''cc''cc''''cc''cc''cc
                cc''cc''cc''cc''cc''cc''cc
               cc''cc''cc''cccc''cc''cc''cc
              cc''cc''cc''ccddcc''cc''cc''cc
             cc''cc''cc''ccddddcc''cc''cc''cc
            cc''cc''cc''ccd3dd3dcc''cc''cc''cc
           cc''cc''cc''cc.^d<<d..cc''cc''cc''cc
          cc''cc''cc''cc.^.4dd3^.^cc''cc''cc''cc
         cc''cc''cc''cc^..^.dd^.~.~cc''cc''cc''cc
        cc''cc''cc''cccccccccccccc==cc''cc''cc''cc
       cc''cc''cc''''''''''''''''''''cc''cc''cc''cc
      cc''cc''cccccccccccccccccccccccccc''cc''cc''cc
     cc''c=''''''''''''''''''''''''''''''''cc''cc''cc
    cc''cccccccccccccccccccccccccccccccccccccc''cc''cc
   cc''''''''''''''''''''''''''''''''''''''''''''=c<Acc
  cccccccccccccccccccccccccccccccccccccccccccccccccccccc
ENDMAP

NAME:   ossuary_zaba_two_paths
# There is no way up in the end.  This is to give the zombies in the beginning
# more time to go for a walk and another chance to meet the player.
ORIENT: encompass
WEIGHT: 10
TAGS:   ossuary no_item_gen no_monster_gen no_rotate
#
# Standard monsters: small zombies, large zombies, boss:
MONS:   kobold zombie / goblin zombie / orc zombie / hobgoblin zombie
MONS:   big kobold zombie / gnoll zombie
MONS:   mummy
#
KFEAT:  F = floor
COLOUR: F = cyan
KMONS:  F = rat simulacrum / goblin simulacrum / kobold simulacrum /\
            giant bat simulacrum / nothing w:80
KFEAT:  S = floor
COLOUR: S = green
KMONS:  S = spectral rat / spectral goblin / spectral kobold /\
            spectral giant bat / nothing w:80
# Loot.
ITEM:   any potion / any scroll / nothing w:1
#
# There are not always traps in corridors but they are guaranteed near the loot:
KFEAT:  ' = arrow trap w:3 / dart trap w:5 / alarm trap w:7 / floor w:85
KFEAT:  " = bolt trap w:1 / net trap w:3 / arrow trap w:5 / dart trap w:10
#
: ossuary_setup_features(_G)
: ossuary_milestone(_G)
MAP
ccccccccccccccccccccccccccc
c2c2c2cc...........cc2c2c2c
c+c+c+c.............c+c+c+c
c..........G...G..........c
c.........................c
c+c=ccccccccc+ccccccccc=c+c
bScc'ccG2=.......=2Gcc'ccFv
bSScc'ccGc.......cGcc'ccFFv
bSSScc'ccc.12321.ccc'ccFFFv
bSSSScc'cc.......cc'ccFFFFv
bSSSSScc'c.......c'ccFFFFFv
bSSSSSS+'c...G...c'+FFFFFFv
bSSSSScc'c.......c'ccFFFFFv
bSSSScc'cc.""""".cc'ccFFFFv
bSSScc'ccc."ddd".ccc'ccFFFv
bSScc'ccGc."ddd".cGcc'ccFFv
bScc'ccG2=."ddd".=2Gcc'ccFv
ccc+ccccccccccccccccccc+ccc
c11111cc1c1c1c1c1c1cc11111c
c......c+c+c+c+c+c+c......c
c.........................c
c..........<.A.<..........c
ccccccccccccccccccccccccccc
ENDMAP

# A larger ossuary than usual: there is a corridor with some monsters (and 
# chances of wights) to get past, and then a little treasure room at the end.
#
# A hidden door in the treasure room leads to another corridor this one flanked
# with a guardian mummy (a hint of what's to come) on one side, and a flying 
# skull on the other: the flying skull is basically an intelligent alarm trap,
# both behind glass.
#
# At the end of the corridor is a second treasure room, this one also 
# containing more flying skeleton alarm traps, plus guardian mummies inside
# 3x3 rooms with secret doors.
#
# The intent is that someone with a relatively high stealth skill (at least
# for early) will be able to sneak past all of the flying skulls and grab the
# loot, and escape out before waking anyone up. Whereas someone with 0 stealth
# skill will wake up the mummies immediately.
#
# XXX: Should be looked at when noise/stealth is redone.
#
NAME:    ossuary_due_cavern
WEIGHT:  10
ORIENT:  encompass
TAGS:    ossuary no_item_gen no_monster_gen
MONS:    centaur zombie w:1 / orc zombie / hobgoblin zombie /\
         kobold zombie / snake zombie / orc skeleton / hobgoblin skeleton /\
         small snake skeleton / nothing w:5
MONS:    wight 
MONS:    flying skull
MONS:    guardian mummy / mummy w:2
ITEM:    any scroll / any potion 
ITEM:    any scroll / any potion / any wand w:4
KMONS:   V = guardian mummy
KMONS:   X = flying skull
SHUFFLE: VX
SUBST:   x = c:20 o:8
SUBST:   z = c:20 o:4
SUBST:   y = c:20 o:1
SUBST:   $ = 1:10 2:1
KFEAT:   L = =
MARKER:  L = lua:message_at_spot ( \
                 "Something ancient and evil stirs ahead...", \
                 "warning" \
             )
: ossuary_setup_features(_G)
: ossuary_milestone(_G)
MAP
  ccccccccc
 cc.......cc
cc.........c
c...<..A..cc
cc.......cc
 ccc.....cc
   cc...cc
    cc.ccc
     cc.cc
     cc.cc
     cc.cc
    cc.cc 
   cc.cc                          ccccccccccccccccc
   cc..ccc                        c...............c
    cc...cc                       c.=cc..xxx..cc=.c
  ccc...ccc                       c.c4c..x3x..c4c.c
 cc......cccccccccccccccccccccccccc.ccc..yzy..ccc.c
cc........cc$c$c$c$c$cc.....cccVccc...............c
c..........c+c+c+c+c+cc.GdG.cccoccc.cxy..eee..yxx.c
c..c.......+..........+..d..L.....+.c3z..eee..z3x.c
cc.cc......c+c+c+c+c+cc.GdG.cccoccc.cxy..eee..yxx.c
cc.c......cc$c$c$c$c$cc.....cccXccc...............c
cc.cc....cccccccccccccccccccccccccc.ccc..yzy..ccc.c
 cc.....cc                        c.c4c..x3x..c4c.c
  cc...cc                         c.=cc..xxx..cc=.c
   ccccc                          c...............c
                                  ccccccccccccccccc
ENDMAP