1# This file contains the randomly used "vaults", or predefined rooms.
2#
3#  - Use the "rndvault" LEVEL flag. (implies noflip)
4#  - To change vault appearing frequency, use "VAULTGEN"
5#  - REGIONs in vaults are always kept as rooms, never discarded.
6#  - "ordinary" vault rooms might be converted to any other type
7#    of random room, as per random level generation.
8#    "rndvault" room type is never converted to another room type.
9#  - To only generate the contents you define in the vault,
10#    set the room, subroom or region "filled" flag.
11#    Otherwise you'll get normal room contents in addition to
12#    the stuff you defined.
13#
14
15
16# normal random room
17LEVEL:"vlt-%04i"
18FLAGS:rndvault
19VAULTGEN:2000
20ROOM:"ordinary", random, random, random, random {
21}
22
23# Fake Delphi
24LEVEL:"vlt-%04i"
25FLAGS:rndvault
26ROOM: "rndvault", lit, random, random, (11,9) {
27  SUBROOM: "ordinary", lit, (4,3), (3,3) {
28     ROOMDOOR:random,random,random,random
29     IF [25%] { ROOMDOOR:random,random,random,random }
30  }
31}
32
33# room with a subroom
34LEVEL:"vlt-%04i"
35FLAGS:rndvault
36ROOM:"rndvault", random, random, random, random {
37   SUBROOM:"ordinary", random, random, random {
38      ROOMDOOR:random, random, random, random
39   }
40}
41
42# big room, 1
43LEVEL:"vlt-%04i"
44FLAGS:rndvault
45ROOM:"rndvault", random, random, random, (30,10) {
46   IF [75%] {
47      SUBROOM:random,random,random,random {
48         ROOMDOOR:random,random,random,random
49         IF [50%] { ROOMDOOR:random,random,random,random }
50      }
51   }
52}
53
54
55
56# lava/ice/pool/tree/fountain room
57LEVEL:"vlt-%04i"
58FLAGS:rndvault
59ROOM:"rndvault", random, random, random, (3,3) {
60  $terr = TERRAIN: { 'L', 'I', 'P', 'T', '{' }
61  SHUFFLE: $terr
62   IF [10%] { TERRAIN:(0,0), $terr[0] }
63   IF [10%] { TERRAIN:(1,0), $terr[0] }
64   IF [10%] { TERRAIN:(2,0), $terr[0] }
65   IF [10%] { TERRAIN:(0,1), $terr[0] }
66   TERRAIN:(1,1),$terr[0]
67   IF [10%] { TERRAIN:(2,1), $terr[0] }
68   IF [10%] { TERRAIN:(0,2), $terr[0] }
69   IF [10%] { TERRAIN:(1,2), $terr[0] }
70   IF [10%] { TERRAIN:(2,2), $terr[0] }
71}
72
73
74
75# big room, 2 (max. vertical height)
76LEVEL:"vlt-%04i"
77FLAGS:rndvault
78ROOM:"rndvault", random, random, random, (10,17) {
79  LOOP [ 2d3 ] {
80     MONSTER: random, random, hostile
81  }
82}
83
84
85# thin, long, horizontal room
86LEVEL:"vlt-%04i"
87FLAGS:rndvault
88ROOM:"rndvault", random, random, random, (17,3) {
89  LOOP [ 2d3 ] {
90     MONSTER: random, random, hostile
91  }
92}
93
94
95# thin, long, vertical room
96LEVEL:"vlt-%04i"
97FLAGS:rndvault
98ROOM:"rndvault", random, random, random, (3,17) {
99  LOOP [ 2d3 ] {
100     MONSTER: random, random, hostile
101  }
102}
103
104
105# tiny cage, big monster
106LEVEL:"vlt-%04i"
107FLAGS:rndvault
108ROOM:"rndvault", random, random, random, (5,5) {
109  SUBROOM:"rndvault", random, (2,2), (1,1), filled {
110    IF [ level.depth < 3 ] { BREAK }
111    $mons = MONSTER: { 'M', 'D', 'O', 'Z', 'T', 'H' }
112    SHUFFLE: $mons
113    MONSTER: $mons[0],(0,0),hostile
114  }
115  REPLACE_TERRAIN:(0,0, 4,4), '-', 'F', 90%
116  REPLACE_TERRAIN:(0,0, 4,4), '|', 'F', 90%
117}
118
119
120# room with dangerous monster and loot
121LEVEL:"vlt-%04i"
122FLAGS:rndvault
123ROOM:"rndvault", random, random, random, random {
124  $mons = MONSTER: { 'M', 'D', 'O', 'Z', 'T', 'H' }
125  SHUFFLE: $mons
126  MONSTER:$mons[0],random, hostile
127  [50%]: MONSTER:$mons[0],random, hostile
128  [25%]: MONSTER:$mons[0],random
129  OBJECT:random,random
130  [75%]: OBJECT:random,random
131  [50%]: OBJECT:random,random
132  [25%]: OBJECT:random,random
133  [10%]: OBJECT:random,random
134}
135
136
137# boulder room
138LEVEL:"vlt-%04i"
139FLAGS:rndvault
140ROOM:"rndvault", random, random, random, random {
141  LOOP [1d6 + 3] {
142    OBJECT:"boulder", random
143  }
144  LOOP [1d4] {
145    TRAP:"rolling boulder", random
146  }
147}
148
149# spider nest
150LEVEL:"vlt-%04i"
151FLAGS:rndvault
152ROOM:"rndvault", unlit, random, random, random {
153  LOOP [3d3] {
154    TRAP:"web", random
155  }
156}
157
158
159# ice room
160LEVEL:"vlt-%04i"
161FLAGS:rndvault
162ROOM:"rndvault", random, random, random, random {
163  [10%]: TRAP: "cold", random
164  TERRAIN:floodfill(1,1), 'I'
165}
166
167
168
169# random cloud/lava/ice/pool/tree room
170LEVEL:"vlt-%04i"
171FLAGS:rndvault
172ROOM:"rndvault", random, random, random, random {
173  $fill = selection: filter(30%, floodfill(1,1))
174  $terr = TERRAIN: { 'C', 'L', 'I', 'P', 'T' }
175  SHUFFLE: $terr
176  TERRAIN:$fill, $terr[0]
177}
178
179
180# buried treasure
181LEVEL:"vlt-%04i"
182FLAGS:rndvault
183# note: intentionally ordinary.
184ROOM:"ordinary", random, random, random, random {
185  CONTAINER:('(', "chest"), random,buried {
186    LOOP [3d4] {
187      OBJECT:random
188    }
189  }
190}
191
192
193# massacre
194LEVEL:"vlt-%04i"
195FLAGS:rndvault
196ROOM:"rndvault", random, random, random, random {
197  $mon = MONSTER: { '@', "apprentice", "warrior", "ninja", "thug", "hunter", "acolyte", "abbot",
198             "page", "attendant", "neanderthal", "chieftain", "student", "wizard", "valkyrie",
199	     "tourist", "samurai", "rogue", "ranger", "priestess", "priest", "monk",
200             "knight", "healer", "cavewoman", "caveman", "barbarian", "archeologist" }
201  SHUFFLE: $mon
202  LOOP [5d5] {
203    [10%]: SHUFFLE: $mon
204    OBJECT:('%', "corpse"), random, montype: $mon[0]
205  }
206}
207
208
209# statuary
210LEVEL:"vlt-%04i"
211FLAGS:rndvault
212ROOM:"rndvault", random, random, random, random {
213  LOOP [5d5] {
214    CONTAINER:('`', "statue"), random { }
215  }
216  [50%]: TRAP:"statue", random
217  [50%]: TRAP:"statue", random
218  [50%]: TRAP:"statue", random
219}
220
221
222# light source
223LEVEL:"vlt-%04i"
224FLAGS:rndvault
225ROOM:"ordinary", unlit, random, random, random {
226  OBJECT:('(', "oil lamp"), random, lit
227}
228
229
230# temple of the gods
231LEVEL:"vlt-%04i"
232FLAGS:rndvault
233ROOM:"rndvault", random, random, random, random, filled {
234  ALTAR:random, align[0], altar
235  ALTAR:random, align[1], altar
236  ALTAR:random, align[2], altar
237}
238
239
240# mausoleum
241LEVEL:"vlt-%04i"
242FLAGS:rndvault
243ROOM:"rndvault", random, random, random, (5,5) {
244  TERRAIN:(1,1) & (2,1) & (3,1) &
245          (1,2) &         (3,2) &
246          (1,3) & (2,3) & (3,3), '-'
247  IF [50%] {
248    $mons = MONSTER: { 'M', 'V', 'L', 'Z' }
249    SHUFFLE: $mons
250    MONSTER:$mons[0],(2,2), hostile
251  } ELSE {
252    OBJECT:('%', "corpse"), random, montype:'@'
253  }
254
255  IF [20%] {
256    $place = { (2,1), (1,2), (3,2), (2,3) }
257    SHUFFLE: $place
258    TERRAIN: $place[0], 'S'
259  }
260}
261
262
263
264# big room, 1, random type
265LEVEL:"vlt-%04i"
266FLAGS:rndvault
267ROOM:random, random, random, random, (17,10) {
268}
269
270
271# big room, 2 (max. vertical height), filled with fog
272LEVEL:"vlt-%04i"
273FLAGS:rndvault
274ROOM:"rndvault", random, random, random, (10,17) {
275  $sel = selection: filter(fillrect(0,0, 9,16),
276       gradient(radial, (1 - 5), (5,8)) )
277  TERRAIN: $sel, 'C'
278  LOOP [ 2d3 ] {
279     MONSTER: random, random, hostile
280  }
281}
282
283# very thin, long, horizontal room
284LEVEL:"vlt-%04i"
285FLAGS:rndvault
286ROOM:"rndvault", random, random, random, (50,5) {
287  LOOP [ 2d3 ] {
288     MONSTER: random, random, hostile
289  }
290}
291
292# very very thin, long, horizontal room
293LEVEL:"vlt-%04i"
294FLAGS:rndvault
295ROOM:"rndvault", random, random, random, (70,3) {
296  LOOP [ 2d3 ] {
297     MONSTER: random, random, hostile
298  }
299}
300
301
302# L-shaped
303LEVEL:"vlt-%04i"
304FLAGS:rndvault
305GEOMETRY:random
306MAP
307-----xxx
308|...|xxx
309|...|xxx
310|...----
311|......|
312|......|
313|......|
314--------
315ENDMAP
316REGION:(1,1,3,3),random,"ordinary",unfilled,irregular { }
317
318# L-shaped, r2
319LEVEL:"vlt-%04i"
320FLAGS:rndvault
321GEOMETRY:random
322MAP
323--------
324|......|
325|......|
326|......|
327|...----
328|...|xxx
329|...|xxx
330-----xxx
331ENDMAP
332REGION:(1,1,3,3),random,"ordinary",unfilled,irregular { }
333
334# L-shaped, r3
335LEVEL:"vlt-%04i"
336FLAGS:rndvault
337GEOMETRY:random
338MAP
339--------
340|......|
341|......|
342|......|
343----...|
344xxx|...|
345xxx|...|
346xxx-----
347ENDMAP
348REGION:(1,1,3,3),random,"ordinary",unfilled,irregular { }
349
350# L-shaped, r4
351LEVEL:"vlt-%04i"
352FLAGS:rndvault
353GEOMETRY:random
354MAP
355xxx-----
356xxx|...|
357xxx|...|
358----...|
359|......|
360|......|
361|......|
362--------
363ENDMAP
364REGION:(4,1,6,3),random,"ordinary",unfilled,irregular { }
365
366
367# L-shaped, big
368LEVEL:"vlt-%04i"
369FLAGS:rndvault
370GEOMETRY:random
371MAP
372-------xxxxxx
373|.....|xxxxxx
374|.....|xxxxxx
375|.....|xxxxxx
376|.....|xxxxxx
377|.....-------
378|...........|
379|...........|
380|...........|
381|...........|
382|...........|
383-------------
384ENDMAP
385REGION:(3,3,3,3),random,"rndvault",unfilled,irregular { }
386
387# L-shaped, big, r2
388LEVEL:"vlt-%04i"
389FLAGS:rndvault
390GEOMETRY:random
391MAP
392-------------
393|...........|
394|...........|
395|...........|
396|...........|
397|...........|
398|.....-------
399|.....|xxxxxx
400|.....|xxxxxx
401|.....|xxxxxx
402|.....|xxxxxx
403-------xxxxxx
404ENDMAP
405REGION:(3,3,3,3),random,"rndvault",unfilled,irregular { }
406
407# L-shaped, big, r3
408LEVEL:"vlt-%04i"
409FLAGS:rndvault
410GEOMETRY:random
411MAP
412-------------
413|...........|
414|...........|
415|...........|
416|...........|
417|...........|
418-------.....|
419xxxxxx|.....|
420xxxxxx|.....|
421xxxxxx|.....|
422xxxxxx|.....|
423xxxxxx-------
424ENDMAP
425REGION:(3,3,3,3),random,"rndvault",unfilled,irregular { }
426
427# L-shaped, big, r4
428LEVEL:"vlt-%04i"
429FLAGS:rndvault
430GEOMETRY:random
431MAP
432xxxxxx-------
433xxxxxx|.....|
434xxxxxx|.....|
435xxxxxx|.....|
436xxxxxx|.....|
437-------.....|
438|...........|
439|...........|
440|...........|
441|...........|
442|...........|
443-------------
444ENDMAP
445REGION:(8,8,8,8),random,"rndvault",unfilled,irregular { }
446
447
448
449# Blocked center
450LEVEL:"vlt-%04i"
451FLAGS:rndvault
452GEOMETRY:random
453MAP
454-----------
455|.........|
456|.........|
457|.........|
458|...LLL...|
459|...LLL...|
460|...LLL...|
461|.........|
462|.........|
463|.........|
464-----------
465ENDMAP
466IF [75%] {
467  $terr = TERRAIN:{ '-', 'P', 'Y' }
468  SHUFFLE: $terr
469  REPLACE_TERRAIN:(1,1,9,9),'L', $terr[0],100%
470}
471REGION:(1,1,1,1),random,"ordinary",unfilled,irregular { }
472
473
474
475# Circular, small
476LEVEL:"vlt-%04i"
477FLAGS:rndvault
478GEOMETRY:random
479MAP
480xx---xx
481x--.--x
482|-...-|
483|.....|
484|-...-|
485x--.--x
486xx---xx
487ENDMAP
488REGION:(3,3,3,3),random,"ordinary",unfilled,irregular { }
489
490
491# Circular, medium
492LEVEL:"vlt-%04i"
493FLAGS:rndvault
494GEOMETRY:random
495MAP
496xx-----xx
497x--...--x
498|-.....-|
499|.......|
500|.......|
501|.......|
502|-.....-|
503x--...--x
504xx-----xx
505ENDMAP
506REGION:(4,4,4,4),random,"ordinary",unfilled,irregular { }
507
508
509# Circular, big
510LEVEL:"vlt-%04i"
511FLAGS:rndvault
512GEOMETRY:random
513MAP
514xxx-----xxx
515x---...---x
516x-.......-x
517|-.......-|
518|.........|
519|.........|
520|.........|
521|-.......-|
522x-.......-x
523x---...---x
524xxx-----xxx
525ENDMAP
526REGION:(5,5,5,5),random,"ordinary",unfilled,irregular { }
527
528
529
530# T-shaped
531LEVEL:"vlt-%04i"
532FLAGS:rndvault
533GEOMETRY:random
534MAP
535xxx-----xxx
536xxx|...|xxx
537xxx|...|xxx
538----...----
539|.........|
540|.........|
541|.........|
542-----------
543ENDMAP
544REGION:(5,5,5,5),random,"ordinary",unfilled,irregular { }
545
546# T-shaped, r2
547LEVEL:"vlt-%04i"
548FLAGS:rndvault
549GEOMETRY:random
550MAP
551-----xxx
552|...|xxx
553|...|xxx
554|...----
555|......|
556|......|
557|......|
558|...----
559|...|xxx
560|...|xxx
561-----xxx
562ENDMAP
563REGION:(5,5,5,5),random,"ordinary",unfilled,irregular { }
564
565# T-shaped, r3
566LEVEL:"vlt-%04i"
567FLAGS:rndvault
568GEOMETRY:random
569MAP
570-----------
571|.........|
572|.........|
573|.........|
574----...----
575xxx|...|xxx
576xxx|...|xxx
577xxx-----xxx
578ENDMAP
579REGION:(5,5,5,5),random,"ordinary",unfilled,irregular { }
580
581# T-shaped, r4
582LEVEL:"vlt-%04i"
583FLAGS:rndvault
584GEOMETRY:random
585MAP
586xxx-----
587xxx|...|
588xxx|...|
589----...|
590|......|
591|......|
592|......|
593----...|
594xxx|...|
595xxx|...|
596xxx-----
597ENDMAP
598REGION:(5,5,5,5),random,"ordinary",unfilled,irregular { }
599
600
601
602# S-shaped
603LEVEL:"vlt-%04i"
604FLAGS:rndvault
605GEOMETRY:random
606MAP
607-----xxx
608|...|xxx
609|...|xxx
610|...----
611|......|
612|......|
613|......|
614----...|
615xxx|...|
616xxx|...|
617xxx-----
618ENDMAP
619REGION:(5,5,5,5),random,"ordinary",unfilled,irregular { }
620
621# S-shaped, r2
622LEVEL:"vlt-%04i"
623FLAGS:rndvault
624GEOMETRY:random
625MAP
626xxx--------
627xxx|......|
628xxx|......|
629----......|
630|......----
631|......|xxx
632|......|xxx
633--------xxx
634ENDMAP
635REGION:(5,5,5,5),random,"ordinary",unfilled,irregular { }
636
637# Z-shaped
638LEVEL:"vlt-%04i"
639FLAGS:rndvault
640GEOMETRY:random
641MAP
642xxx-----
643xxx|...|
644xxx|...|
645----...|
646|......|
647|......|
648|......|
649|...----
650|...|xxx
651|...|xxx
652-----xxx
653ENDMAP
654REGION:(5,5,5,5),random,"ordinary",unfilled,irregular { }
655
656# Z-shaped, r2
657LEVEL:"vlt-%04i"
658FLAGS:rndvault
659GEOMETRY:random
660MAP
661--------xxx
662|......|xxx
663|......|xxx
664|......----
665----......|
666xxx|......|
667xxx|......|
668xxx--------
669ENDMAP
670REGION:(5,5,5,5),random,"ordinary",unfilled,irregular { }
671
672
673
674
675# U-shaped
676LEVEL:"vlt-%04i"
677FLAGS:rndvault
678GEOMETRY:random
679MAP
680-----xxx-----
681|...|xxx|...|
682|...|xxx|...|
683|...-----...|
684|...........|
685|...........|
686|...........|
687-------------
688ENDMAP
689REGION:(5,5,5,5),random,"ordinary",unfilled,irregular { }
690
691# U-shaped, reversed
692LEVEL:"vlt-%04i"
693FLAGS:rndvault
694GEOMETRY:random
695MAP
696-------------
697|...........|
698|...........|
699|...........|
700|...-----...|
701|...|xxx|...|
702|...|xxx|...|
703-----xxx-----
704ENDMAP
705REGION:(1,1,1,1),random,"ordinary",unfilled,irregular { }
706
707
708
709# C-shaped
710LEVEL:"vlt-%04i"
711FLAGS:rndvault
712GEOMETRY:random
713MAP
714--------
715|......|
716|......|
717|...----
718|...|xxx
719|...|xxx
720|...----
721|......|
722|......|
723--------
724ENDMAP
725REGION:(1,1,1,1),random,"ordinary",unfilled,irregular { }
726
727# C-shaped, reversed
728LEVEL:"vlt-%04i"
729FLAGS:rndvault
730GEOMETRY:random
731MAP
732--------
733|......|
734|......|
735----...|
736xxx|...|
737xxx|...|
738----...|
739|......|
740|......|
741--------
742ENDMAP
743REGION:(1,1,1,1),random,"ordinary",unfilled,irregular { }
744
745
746# Tetris L-shaped
747LEVEL:"vlt-%04i"
748FLAGS:rndvault
749GEOMETRY:random
750MAP
751-----xxx
752|...|xxx
753|...|xxx
754|...|xxx
755|...|xxx
756|...|xxx
757|...----
758|......|
759|......|
760|......|
761--------
762ENDMAP
763REGION:(1,1,1,1),random,"ordinary",unfilled,irregular { }
764
765# Tetris L-shaped, r2
766LEVEL:"vlt-%04i"
767FLAGS:rndvault
768GEOMETRY:random
769MAP
770-----------
771|.........|
772|.........|
773|.........|
774|...-------
775|...|xxxxxx
776|...|xxxxxx
777-----xxxxxx
778ENDMAP
779REGION:(1,1,1,1),random,"ordinary",unfilled,irregular { }
780
781# Tetris L-shaped, r3
782LEVEL:"vlt-%04i"
783FLAGS:rndvault
784GEOMETRY:random
785MAP
786--------
787|......|
788|......|
789|......|
790----...|
791xxx|...|
792xxx|...|
793xxx|...|
794xxx|...|
795xxx|...|
796xxx-----
797ENDMAP
798REGION:(5,5,5,5),random,"ordinary",unfilled,irregular { }
799
800# Tetris L-shaped, r4
801LEVEL:"vlt-%04i"
802FLAGS:rndvault
803GEOMETRY:random
804MAP
805xxxxxx-----
806xxxxxx|...|
807xxxxxx|...|
808-------...|
809|.........|
810|.........|
811|.........|
812-----------
813ENDMAP
814REGION:(5,5,5,5),random,"ordinary",unfilled,irregular { }
815
816
817# Tetris J-shaped
818LEVEL:"vlt-%04i"
819FLAGS:rndvault
820GEOMETRY:random
821MAP
822xxx-----
823xxx|...|
824xxx|...|
825xxx|...|
826xxx|...|
827xxx|...|
828----...|
829|......|
830|......|
831|......|
832--------
833ENDMAP
834REGION:(5,5,5,5),random,"ordinary",unfilled,irregular { }
835
836# Tetris J-shaped, r2
837LEVEL:"vlt-%04i"
838FLAGS:rndvault
839GEOMETRY:random
840MAP
841-----xxxxxx
842|...|xxxxxx
843|...|xxxxxx
844|...-------
845|.........|
846|.........|
847|.........|
848-----------
849ENDMAP
850REGION:(1,1,1,1),random,"ordinary",unfilled,irregular { }
851
852# Tetris J-shaped, r3
853LEVEL:"vlt-%04i"
854FLAGS:rndvault
855GEOMETRY:random
856MAP
857--------
858|......|
859|......|
860|......|
861|...----
862|...|xxx
863|...|xxx
864|...|xxx
865|...|xxx
866|...|xxx
867-----xxx
868ENDMAP
869REGION:(1,1,1,1),random,"ordinary",unfilled,irregular { }
870
871# Tetris J-shaped, r4
872LEVEL:"vlt-%04i"
873FLAGS:rndvault
874GEOMETRY:random
875MAP
876-----------
877|.........|
878|.........|
879|.........|
880-------...|
881xxxxxx|...|
882xxxxxx|...|
883xxxxxx-----
884ENDMAP
885REGION:(1,1,1,1),random,"ordinary",unfilled,irregular { }
886
887
888# Four-leaf clover
889LEVEL:"vlt-%04i"
890FLAGS:rndvault
891GEOMETRY:random
892MAP
893-----x-----
894|...|x|...|
895|...---...|
896|.........|
897---.....---
898xx|.....|xx
899---.....---
900|.........|
901|...---...|
902|...|x|...|
903-----x-----
904ENDMAP
905REGION:(1,1,1,1),random,"ordinary",unfilled,irregular { }
906
907
908# Cross
909LEVEL:"vlt-%04i"
910FLAGS:rndvault
911GEOMETRY:random
912MAP
913xxx-----xxx
914xxx|...|xxx
915xxx|...|xxx
916----...----
917|.........|
918|.........|
919|.........|
920----...----
921xxx|...|xxx
922xxx|...|xxx
923xxx-----xxx
924ENDMAP
925REGION:(5,5,5,5),random,"ordinary",unfilled,irregular { }
926
927
928# watcher in the water
929LEVEL:"vlt-%04i"
930FLAGS:rndvault
931ROOM:"rndvault", unlit, random, random, random {
932  LOOP [1d3] {
933    TERRAIN: random, 'P'
934  }
935  IF [ level.depth < 3 ] { BREAK }
936  $mon = monster: { (';', "giant eel"), (';', "electric eel"), (';', "kraken") }
937  SHUFFLE: $mon
938  MONSTER: $mon[0], random
939}
940
941
942# room with sessile growths
943LEVEL:"vlt-%04i"
944FLAGS:rndvault
945ROOM:"rndvault", random, random, random, random {
946  $mon = monster: { ('e', "gas spore"), 'F', 'b', 'j', 'P' }
947  SHUFFLE: $mon
948  LOOP [4d3] {
949    MONSTER: $mon[0], random, asleep
950  }
951}
952
953
954# Pillars
955LEVEL:"vlt-%04i"
956FLAGS:rndvault
957ROOM:"ordinary", random, random, random, (10, 10) {
958  $terr = terrain: { '-', '-', '-', '-', '-', 'L', 'I', 'P', 'T', 'Y' }
959  SHUFFLE: $terr
960  FOR $y = 0 TO ((room.height - 3) / 4) {
961    FOR $x = 0 TO ((room.width - 3) / 4) {
962       TERRAIN:coord(($x * 4) + 2, ($y * 4) + 2), $terr[0]
963       TERRAIN:coord(($x * 4) + 3, ($y * 4) + 2), $terr[0]
964       TERRAIN:coord(($x * 4) + 2, ($y * 4) + 3), $terr[0]
965       TERRAIN:coord(($x * 4) + 3, ($y * 4) + 3), $terr[0]
966    }
967  }
968}
969
970
971# Small tightly-placed pillars
972LEVEL:"vlt-%04i"
973FLAGS:rndvault
974ROOM:"ordinary", random, random, random, random {
975  IF [ (room.width % 2) == 0 ] { BREAK }
976  IF [ (room.height % 2) == 0 ] { BREAK }
977  $terr = terrain: { '-', '-', '-', '-', '-', 'L', 'I', 'P', 'T', 'Y', 'C' ,'F' }
978  SHUFFLE: $terr
979  FOR $y = 0 TO ((room.height - 3) / 2) {
980    FOR $x = 0 TO ((room.width - 3) / 2) {
981       TERRAIN:coord(($x * 2) + 1, ($y * 2) + 1), $terr[0]
982    }
983  }
984}
985
986
987# Mirrored obstacles
988LEVEL:"vlt-%04i"
989FLAGS:rndvault
990ROOM:"ordinary", random, random, random, random {
991  IF [ room.width < 4 ] { BREAK }
992  IF [ room.height < 4 ] { BREAK }
993  $terr = terrain: { '-', '-', '-', '-', '-', 'L', 'I', 'P', 'T', 'Y', 'C', 'F' }
994  SHUFFLE: $terr
995  LOOP [ 1d3 ] {
996     $x = 1d6 - (1)
997     IF [ $x >= room.width ] { $x = (room.width - (1)) }
998     $y = 1d6 - (1)
999     IF [ $y >= room.height ] { $y = (room.height - (1)) }
1000     TERRAIN:coord($x, $y), $terr[0]
1001     $mx = room.width - ($x) - (1)
1002     $my = room.height - ($y) - (1)
1003     TERRAIN:coord($mx, $my), $terr[0]
1004  }
1005}
1006
1007
1008# Trap Room
1009LEVEL:"vlt-%04i"
1010FLAGS:rndvault
1011ROOM:"rndvault", random, random, random, random {
1012  $area = room.width * room.height
1013  $ntraps = rnd($area / 3) + ($area / 4)
1014  SWITCH [ 6 ] {
1015      CASE 0:
1016        LOOP [ $ntraps ] {
1017           IF [ 50% ] {
1018      	      TRAP: "pit", random
1019	   } ELSE {
1020      	      TRAP: "spiked pit", random
1021	   }
1022        }
1023        BREAK
1024      CASE 1:
1025        LOOP [ $ntraps ] {
1026      	   TRAP: "land mine", random
1027        }
1028        BREAK
1029      CASE 2:
1030        LOOP [ $ntraps ] {
1031      	   TRAP: "falling rock", random
1032        }
1033        BREAK
1034      CASE 3:
1035        LOOP [ $ntraps ] {
1036      	   IF [ 50% ] {
1037      	      TRAP: "cold", random
1038		} ELSE {
1039		      TRAP: "fire", random
1040        }
1041		 }
1042        BREAK
1043      CASE 4:
1044        LOOP [ $ntraps ] {
1045           IF [ 50% ] {
1046      	      TRAP: "trap door", random
1047	   } ELSE {
1048      	      TRAP: "hole", random
1049	   }
1050        }
1051        BREAK
1052      CASE 5:
1053        LOOP [ $ntraps ] {
1054           IF [ 50% ] {
1055      	      TRAP: "arrow", random
1056	   } ELSE {
1057      	      TRAP: "dart", random
1058	   }
1059        }
1060        BREAK
1061  }
1062}
1063
1064
1065# Underground rivers
1066LEVEL:"vlt-%04i"
1067FLAGS:rndvault
1068GEOMETRY:random
1069MAP
1070
1071
1072ENDMAP
1073$terr = terrain: { ('L', lit), 'P' }
1074SHUFFLE:$terr
1075SPILL:random, $terr[0], north, 2d4
1076
1077
1078# Trapped rust monster, disenchanter, or disintegrator
1079LEVEL:"vlt-%04i"
1080FLAGS:rndvault
1081ROOM:"rndvault", random, random, random, (5,5) {
1082  SUBROOM:"rndvault", random, (2,2), (1,1), filled {
1083    MONSTER: 'R', (0,0), hostile
1084  }
1085  REPLACE_TERRAIN:(0,0, 4,4), '-', 'P', 100%
1086  REPLACE_TERRAIN:(0,0, 4,4), '|', 'P', 100%
1087}
1088
1089
1090# Fern nursery
1091LEVEL:"vlt-%04i"
1092FLAGS:rndvault
1093ROOM:"rndvault", random, random, random, random {
1094  IF [ level.depth < 3 ] { BREAK }
1095  IF [25%] { MONSTER: ('F', "dungeon fern"), random, hostile }
1096  IF [50%] { MONSTER: ('F', "arctic fern"), random, hostile }
1097  IF [50%] { MONSTER: ('F', "blazing fern"), random, hostile }
1098  IF [50%] { MONSTER: ('F', "swamp fern"), random, hostile }
1099}
1100
1101# Ozymandias' Tomb
1102LEVEL:"vlt-%04i"
1103FLAGS:rndvault
1104GEOMETRY:random
1105MAP
1106---------
1107|.......|
1108|.......|
1109|.......|
1110|......\|
1111|.......|
1112|.......|
1113|.......|
1114---------
1115ENDMAP
1116REGION:(1,1,7,7),lit,"rndvault",filled { }
1117ENGRAVING: (6,4), burn, "Look on my works, ye mighty, and despair"
1118[10%]: ENGRAVING: (5,4), burn, "My name is Ozymandias, king of kings"
1119[50%]: TRAP: "hole", (3,2)
1120[80%]: TRAP: "hole", (5,3)
1121[30%]: TRAP: "hole", (3,6)
1122[75%]: TRAP: "web", (1,1)
1123[75%]: TRAP: "web", (1,6)
1124TRAP: "web", (7,6)
1125CONTAINER:"chest", (7,1), trapped { }
1126TRAP: "statue", (7,3)
1127TRAP: "statue", (7,7)
1128OBJECT:('`',"statue"),(7,3),montype:('d', "werejackal")
1129OBJECT:('`',"statue"),(7,1),montype:('@', "elvenking")
1130