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