1/* 2 * 3 * Iter Vehemens ad Necem (IVAN) 4 * Copyright (C) Timo Kiviluoto 5 * Released under the GNU General 6 * Public License 7 * 8 * See LICENSING which should be included 9 * along with this file for more details 10 * 11 */ 12 13/* 14 * NOTICE!!! 15 * 16 * This file contains SPOILERS, which might ruin your IVAN experience 17 * totally. Also, editing anything can DESTROY GAME BALANCE or CAUSE 18 * OBSCURE BUGS if you don't know what you're doing. So from here on, 19 * proceed at your own risk! 20 */ 21 22Dungeon ATTNAM; 23{ 24 Levels = 5; 25 Description = "attnamese catacombs"; 26 ShortDescription = "AC"; 27 28 LevelDefault 29 { 30 Size = 30, 30; 31 GenerateMonsters = true; 32 Rooms = 10; 33 Items = 0; 34 IsOnGround = false; 35 TeamDefault = MONSTER_TEAM; 36 LOSModifier = 16; 37 IgnoreDefaultSpecialSquares = false; 38 CanGenerateBone = true; 39 EnchantmentMinusChanceBase = 0; 40 EnchantmentMinusChanceDelta = 0; 41 EnchantmentPlusChanceBase = 0; 42 EnchantmentPlusChanceDelta = 5; 43 BackGroundType = GRAY_FRACTAL; 44 FillSquare = GRANITE solidterrain(GROUND), BLACK_GRANITE earth; 45 TunnelSquare = GRANITE solidterrain(GROUND), 0; 46 IsCatacomb = true; 47 DifficultyBase = 0; 48 DifficultyDelta = 10; 49 MonsterAmountBase = 0; 50 MonsterAmountDelta = 5; 51 MonsterGenerationIntervalBase = 150; 52 MonsterGenerationIntervalDelta = -25; 53 EarthquakesAffectTunnels = true; 54 AudioPlayList = 55 { 56 1, 57 "Cathedral.mid"; 58 } 59 60 RoomDefault 61 { 62 Pos = 2:XSize-5,2:YSize-5; 63 WallSquare = GRANITE solidterrain(GROUND), BLACK_GRANITE wall(BRICK_OLD); 64 FloorSquare = GRANITE solidterrain(GROUND), 0; 65 DoorSquare = GRANITE solidterrain(GROUND), 0; 66 67 Size = 4:11,4:11; 68 AltarPossible = false; 69 GenerateDoor = true; 70 DivineMaster = 0; 71 GenerateTunnel = true; 72 GenerateLanterns = false; 73 Type = ROOM_NORMAL; 74 GenerateFountains = false; 75 AllowLockedDoors = false; 76 AllowBoobyTrappedDoors = false; 77 Shape = RECTANGLE; 78 IsInside = true; 79 GenerateWindows = false; 80 UseFillSquareWalls = false; 81 Flags = 0; 82 } 83 } 84 85 Level 0; 86 { 87 Description = "Attnam"; 88 ShortDescription = "Attnam"; 89 FillSquare = solidterrain(SNOW_TERRAIN), 0; 90 Size = 61, 67; 91 GenerateMonsters = false; 92 Rooms = 20:25; 93 Items = 0; 94 IsOnGround = true; 95 TeamDefault = ATTNAM_TEAM; 96 LOSModifier = 48; 97 IgnoreDefaultSpecialSquares = false; 98 CanGenerateBone = false; 99 DifficultyBase = 150; 100 DifficultyDelta = 0; 101 EnchantmentMinusChanceBase = 0; 102 EnchantmentMinusChanceDelta = 0; 103 EnchantmentPlusChanceBase = 0; 104 EnchantmentPlusChanceDelta = 0; 105 BackGroundType = GRAY_FRACTAL; 106 107 RoomDefault 108 { 109 Pos = 2:XSize-5,2:51; 110 Size = 4:11,4:11; 111 AltarPossible = false; 112 WallSquare = solidterrain(SNOW_TERRAIN),wall(BRICK_FINE); 113 FloorSquare = solidterrain(PARQUET), 0; 114 DoorSquare = solidterrain(PARQUET),door; 115 GenerateDoor = true; 116 DivineMaster = 0; 117 GenerateTunnel = false; 118 GenerateLanterns = true; 119 Type = ROOM_NORMAL; 120 GenerateFountains = false; 121 AllowLockedDoors = false; 122 AllowBoobyTrappedDoors = false; 123 Shape = RECTANGLE; 124 IsInside = true; 125 GenerateWindows = true; 126 UseFillSquareWalls = false; 127 Flags = 0; 128 } 129 130 Square, Pos 0, 0; 131 { 132 Character = guard(PATROL) { WayPoint = { 4, 0, 0, XSize - 1, 0, XSize - 1, YSize - 1, 0, YSize - 1; } } 133 } 134 135 Square, Pos 4, 59; { Character = guard(VETERAN); } 136 Square, Pos 6, 59; { Character = guard(VETERAN); } 137 Square, Pos 23, 59; { Character = guard(VETERAN); } 138 Square, Pos 25, 59; { Character = guard(VETERAN); } 139 Square, Pos 35, 59; { Character = guard(VETERAN); } 140 Square, Pos 37, 59; { Character = guard(VETERAN); } 141 Square, Pos 54, 59; { Character = guard(VETERAN); } 142 Square, Pos 56, 59; { Character = guard(VETERAN); } 143 144 Square, Random NOT_IN_ROOM|HAS_NO_OTERRAIN; 145 { 146 OTerrain = decoration(SNOW_PINE); 147 Times = 200; 148 } 149 150 Square, Random NOT_IN_ROOM; 151 { 152 Character = hunter; 153 Times = 10; 154 } 155 156 Square, Random NOT_IN_ROOM; 157 { 158 Character = bear(POLAR_BEAR); 159 } 160 161 Square, Random NOT_IN_ROOM; 162 { 163 Character = farmer; 164 Times = 5; 165 } 166 167 Square, Random NOT_IN_ROOM; 168 { 169 Character = housewife; 170 Times = 5; 171 } 172 173 Square, Random NOT_IN_ROOM; 174 { 175 Character = child(BOY); 176 Times = 5; 177 } 178 179 Square, Random NOT_IN_ROOM; 180 { 181 Character = child(GIRL); 182 Times = 5; 183 } 184 185 Square, Random NOT_IN_ROOM; 186 { 187 Character = cossack; 188 } 189 190 Square, Random NOT_IN_ROOM; 191 { 192 Character = bum; 193 } 194 195 Square, Pos 30,YSize - 1; 196 { 197 EntryIndex = STAIRS_UP; 198 } 199 200 Room 201 { 202 Pos = 10,10; 203 Size = 41,42; 204 WallSquare = solidterrain(SNOW_TERRAIN), GRANITE wall(BRICK_FINE); 205 FloorSquare = solidterrain(SNOW_TERRAIN), 0; 206 GenerateDoor = false; 207 DivineMaster = VALPURUS; 208 GenerateLanterns = false; 209 Type = ROOM_CATHEDRAL; 210 IsInside = false; 211 GenerateWindows = false; 212 213 Square, Pos 1, 1; 214 { 215 Character = floatingeye { WayPoint = { 4, 11, 11, 49, 11, 49, 50, 11, 50; } } 216 } 217 218 Square, Pos 19, 41; 219 { 220 OTerrain = 0; 221 } 222 223 Square, Pos 20, 41; 224 { 225 OTerrain = 0; 226 } 227 228 Square, Pos 21, 41; 229 { 230 OTerrain = 0; 231 } 232 233 GTerrainMap 234 { 235 Pos = 4,3; 236 Size = 33,35; 237 Types 238 { 239 # = MARBLE solidterrain(FLOOR) { IsInside = true; } 240 - = MARBLE solidterrain(FLOOR) { IsInside = true; } 241 ~ = liquidterrain(POOL) { IsInside = true; } 242 = = liquidterrain(POOL); 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 OTerrainMap 284 { 285 Pos = 1,1; 286 Size = 39,40; 287 Types 288 { 289 # = MARBLE wall(BRICK_FINE); 290 @ = MARBLE wall(BRICK_PROPAGANDA); 291 T = throne; 292 | = decoration(CARPET); 293 A = VALPURIUM altar(VALPURUS); 294 D = MARBLE door(HEXAGONAL_LOCK); 295 L = MARBLE door(HEXAGONAL_LOCK) { Parameters = LOCKED; } 296 b = decoration(SNOW_FIR); 297 1 = decoration(POOL_CORNER) { VisualEffects = NONE; } 298 2 = decoration(POOL_CORNER) { VisualEffects = MIRROR; } 299 3 = decoration(POOL_CORNER) { VisualEffects = MIRROR | FLIP; } 300 4 = decoration(POOL_CORNER) { VisualEffects = FLIP; } 301 5 = decoration(POOL_BORDER) { VisualEffects = NONE; } 302 6 = decoration(POOL_BORDER) { VisualEffects = ROTATE; } 303 7 = decoration(POOL_BORDER) { VisualEffects = FLIP; } 304 8 = decoration(POOL_BORDER) { VisualEffects = MIRROR | ROTATE; } 305 s = decoration(COUCH); 306 f = fountain { SecondaryMaterial = ICE; } 307 d = decoration(DOUBLE_BED); 308 B = GOLD boulder(1); 309 _ = decoration(BENCH); 310 - = decoration(DESK); 311 = = decoration(ARM_CHAIR); 312 ~ = decoration(EXPENSIVE_BED); 313 [ = decoration(OVEN); 314 t = decoration(TABLE); 315 x = olterraincontainer(CHEST_OF_DRAWERS) { ItemsInside = { 2, FABRIC cloak, Random { MinPrice = 100; Category = CLOAK|BODY_ARMOR|BELT|BOOT|GAUNTLET; ConfigFlags = NO_BROKEN; } } } 316 X = olterraincontainer(BOOK_CASE) { ItemsInside = { 2, Random { MaxPrice = 500; Category = SCROLL|BOOK; }, Random { MaxPrice = 500; Category = SCROLL|BOOK; } } } 317 c = christmastree; 318 % = GOLD barwall; 319 + = GOLD door(BARDOOR) { Parameters = LOCKED; } 320 S = sign { Text = "Be responsible, sort your waste."; } 321 } 322 } 323 { 324 b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b 325 ....................................... 326 b...b...b..b...b.b.b.b.b..........b...b 327 ..b...b........#########........b...b.. 328 b....b.......bb#.......#bb.......b....b 329 ...####b..b..###.......###..b..b####... 330 b.b#..#.b....#...........#....b.#..#b.b 331 ...#..#....###...........###....#..#... 332 b.b#..#b..b#...............#b..b#+%#b.b 333 ...#..###..#.....T.A.T.....#..###.B#... 334 b.b#....#.b#.......|.......#b.#....#b.b 335 ...#....#..#.......|.......#..#B.-=#... 336 b.b###..#b.###.....|.....###.S#..###b.b 337 ....b#..#@#.f#.....|.....#..#@#.B#b.... 338 b....#....#_.#.....|.....#..#..B.#....b 339 ..bb.###..####.....|.....####..###.bb.. 340 b.....b#.....#.....|.....#...B.#b.....b 341 .b..b..#.....#.....|.....#.B...#..b..b. 342 b..b...####..#.....|.....#..####...b..b 343 b....b....#..#.....|.....#.B#....b....b 344 .b.b....b###D#.....|.....#L###b....b.b. 345 b...b#####.#.#.....|.....#.#.#####b.b.b 346 ....##s....D.#.....|.....#.D.....##.... 347 b..b#X..152#.#.....|.....#.#....._#b..b 348 .b..#X..8.6#.#.....|.....#.#..A.._#..b. 349 b...##.=8.6#.#.....|.....#.#.....##...b 350 ....b#@-8.6#.#.....|.....#.#....@#b.... 351 b.b..b##8.6#.######D######.###L##b..b.b 352 .......#8.6#...............#~..#....... 353 b...b.b#473#...............#x=-#b.b...b 354 .b....##@####...###D###...####@##....b. 355 b..####.s.s.D...#.c.c.#...D..[.[####..b 356 ..b#.d......#####.f.f.#####.....[.[#b.. 357 b..#....s.s.#b..b.....b..b#tttt....#..b 358 .b.##...#####.bb..c.c..bb.#####...##.b. 359 b..b##xx#b.b......f.f......b.b#..##b..b 360 ....b####....b...........b....####b.... 361 b.b...b...b.......c.c.......b...b...b.b 362 ...............bb.f.f.bb............... 363 b.b.b.b.b.b.b.b..c...c..b.b.b.b.b.b.b.b 364 } 365 366 ItemMap 367 { 368 Pos = 4,4; 369 Size = 33,34; 370 Types 371 { 372 # == 0; 373 a == avatarofvalpurus; 374 b == banana; 375 k == kiwi; 376 p == pineapple; 377 e == backpack; 378 g == GOLD stone(SOL_STONE); 379 i == SILVER stone; 380 h == SAPPHIRE stone; 381 r == RUBY stone; 382 d == DIAMOND stone; 383 1 == lantern { SquarePosition = UP; } 384 2 == lantern { SquarePosition = DOWN; } 385 3 == lantern { SquarePosition = RIGHT; } 386 4 == lantern { SquarePosition = LEFT; } 387 C == GOLD itemcontainer(CHEST) { ItemsInside = { 3, meleeweapon(GRAND_STOLLEN_KNIFE), stone { Times = 10; }, GOLD banana; } } 388 y == GOLD itemcontainer(LARGE_CHEST) { ItemsInside = { 14, 389 flamingsword { Chance = 20; }, 390 darkaxe { Chance = 20; }, 391 whipofthievery { Chance = 20; }, 392 thunderhammer { Chance = 20; }, 393 chameleonwhip { Chance = 20; }, 394 wondersmellstaff { Chance = 20; }, 395 daggerofvenom { Chance = 20; }, 396 weepblade { Chance = 20; }, 397 slowaxe { Chance = 20; }, 398 terrorscythe { Chance = 20; }, 399 bansheesickle { Chance = 20; }, 400 sharpaxe { Chance = 20; }, 401 rustscythe { Chance = 20; }, 402 meleeweapon(RUNE_SWORD) { Chance = 20; } 403 } 404 } 405 F == GOLD ring(RING_OF_FIRE_RESISTANCE); 406 I == GOLD ring(RING_OF_INVISIBILITY); 407 E == GOLD amulet(AMULET_OF_ESP); 408 S == GOLD GOLD meleeweapon(LONG_SWORD); 409 U == DIAMOND helmet(HELM_OF_UNDERSTANDING); 410 A == GOLD helmet(HELM_OF_ATTRACTIVITY); 411 L == oillamp; 412 P == GOLD bodyarmor(PLATE_MAIL); 413 O == PHOENIX_FEATHER cloak(CLOAK_OF_FLYING); 414 W == DIAMOND wand(WAND_OF_POLYMORPH); 415 w == Random { MinPrice = 350; Category = WEAPON|SHIELD; ConfigFlags = NO_BROKEN; Enchantment = 1; } 416 c == Random { MinPrice = 700; Category = WEAPON|SHIELD; ConfigFlags = NO_BROKEN; Enchantment = 3; } 417 m == Random { MinPrice = 350; Category = HELMET|CLOAK|BODY_ARMOR|BELT|BOOT|GAUNTLET; ConfigFlags = NO_BROKEN; Enchantment = 1; } 418 X == itemcontainer(LARGE_CHEST) { ItemsInside = { 4, can { Times = 0:3; }, loaf { Times = 2:10; }, banana { Times = 0:10; }, carrot { Times = 0:3; } } } 419 t == itemcontainer(LARGE_CHEST) { ItemsInside = { 7, can { Times = 0:3; SecondaryMaterial = 0; }, PLANT_FIBER lump { Times = 0:1; }, lantern(BROKEN) { Times = 0:2; }, brokenbottle { Times = 0:5; }, bananapeels { Times = 0:5; }, banana(BROKEN) { Times = 0:1; }, bone { Times = 0:5; } } } 420 T == itemcontainer(LARGE_CHEST) { ItemsInside == Random { Times = 3:7; MaxPrice = 10; Category = CLOAK|BODY_ARMOR|BELT|BOOT|GAUNTLET; ConfigFlags = BROKEN; } } 421 n == trinket(POTTED_PLANT); 422 N == trinket(POTTED_CACTUS); 423 Y == trinket(LARGE_CLOCK); 424 } 425 } 426 { 427 ............##2###2##............ 428 ............#.......#............ 429 ####......###.......###......#### 430 #..#......#...........#......#..4 431 #..#....###...........###....#..# 432 #..#....#...r.......r...#....#..# 433 #..###..#.........a.....#..###I.# 434 #...e#..#......b.b......#..#COLF# 435 #...e#..#......k.k......#..#.d..# 436 ##1.e#..##1.h..p.p..h.1##..#Ug1## 437 ..#.e4##..#....b.b....#tt##3r.#.. 438 ..#....#..#....k.k....#Tt#Wh.L#.. 439 ..###..4###....p.p....###3Fi###.. 440 ....#.....3.d..b.b..d.4y.A.I#.... 441 ....#.....#....k.k....#r.gEP#.... 442 ....###3..#....p.p....#Sd4###.... 443 .......#..#....b.b....#h.#....... 444 ......###.3.g..k.k..g.4.###...... 445 ..#####.#.#....p.p....#.#.#####.. 446 .##.......#....b.b....#.......##. 447 .#......3.#....k.k....#.4......#. 448 .#......#.3.i..p.p..i.4.#......#. 449 .##.....4.#....b.b....#.3.....##. 450 ..##....#.#...........#.#....##.. 451 ...##...#.##2###.###2##.###.##... 452 ....#...4...............#...4.... 453 ....#...#...............#...#.... 454 ...###2###...##2.2##...##2####... 455 ####..n......#.....#.........#### 456 #........#####.....#####........# 457 #.....N.n#.............#........4 458 ##Y..#####.............#####...## 459 .##..#.....................#XX##. 460 ..####.....................####.. 461 } 462 463 CharacterMap 464 { 465 Pos = 4,4; 466 Size = 33,34; 467 Types 468 { 469 # = 0; 470 P = petrus { Flags = IS_MASTER; } 471 g = guard(VETERAN); 472 e = guard(EUNUCH); 473 E = guard(ELITE); 474 m = guard(MASTER); 475 p = priest(VALPURUS); 476 L = priest(LEGIFER); 477 d = dolphin(ADULT_FEMALE); 478 D = dolphin(ADULT_MALE); 479 l = frog(LIGHT); 480 f = frog(GREATER_LIGHT); 481 i = frog(GIANT_LIGHT); 482 y = mysticfrog(LIGHT); 483 s = femaleslave(ATTNAM); 484 j = femaleslave(JESTER); 485 1 = petrusswife(1); 486 2 = petrusswife(2); 487 3 = petrusswife(3); 488 4 = petrusswife(4); 489 5 = petrusswife(5); 490 6 = petrusswife(6); 491 k = kamikazedwarf(VALPURUS); 492 K = veterankamikazedwarf(VALPURUS); 493 h = imperialist(HOARD_MASTER); 494 G = golem(GOLD) { Inventory == GOLD stone(SOL_STONE); } 495 o = orc(REPRESENTATIVE); 496 a = siren(AMBASSADOR_SIREN); 497 A = guard(EMISSARY) { WayPoint = { 2, 26, 35, 34, 35; } } 498 } 499 } 500 { 501 ............#########....D....... 502 ............#g.....g#............ 503 ####......###..ymy..###......#### 504 #.K#......#g....l....g#......#G.# 505 #..#....###...........###....#..# 506 #k.#....#E.............E#....#..# 507 #k.###..#....sPs.s.s....#..###..# 508 #k...#..#.jf....i....f..#..#....# 509 #k...#..#E.............E#..#...h# 510 ###..#..###...........###..#..### 511 ..#..###..#...........#..###..#.. 512 ..#....#L.#g.l.....l.g#..#....#.. 513 ..###k.####...........####..###.. 514 ....#k...k#.....o.....#.E...#.... 515 ....#k...k#...........#.....#.... 516 ....####.k#g.........g#..####.... 517 .......#..#...........#..#....... 518 ......###.#.....a.....#.###...... 519 ..#####E#.#...........#.#E#####.. 520 .##.......#g.........g#.......##. 521 .#......#.#...........#.#..p...#. 522 .#....d.#.#.....A.....#.#......#. 523 .##...d.#.#...........#.#.....##. 524 ..##..d.#.#g.........g#.#....##.. 525 ...##.d.#.######.######.###.##... 526 ....#.d.#......g.g......#...#.... 527 ....#...#...............#...#.... 528 ...#######...###.###...#######... 529 ####e3.5.....#g...g#.........#### 530 #.1......#####.....#####........# 531 #....4.6.#.............#........# 532 ##...#####.............#####...## 533 .##2.#.....................#..##. 534 ..####.....................####.. 535 } 536 } 537 538 Square, Pos 44,45; 539 { 540 OTerrain = stairs(STAIRS_DOWN); 541 EntryIndex = STAIRS_DOWN; 542 } 543 544 Room 545 { 546 Pos = 33,53; 547 Size = 7,6; 548 WallSquare = solidterrain(SNOW_TERRAIN),wall(BRICK_FINE); 549 FloorSquare = solidterrain(PARQUET), 0; 550 GenerateDoor = false; 551 DivineMaster = MELLIS; 552 Type = ROOM_SHOP; 553 GenerateLanterns = false; 554 GenerateWindows = false; 555 556 Square, Pos 3, 5; 557 { 558 GTerrain = solidterrain(PARQUET); 559 OTerrain = door; 560 } 561 562 Square, Pos 1, 1; 563 { 564 Character = slave; 565 } 566 567 Square, Pos 1, 4; 568 { 569 Items == banana; 570 Times = 100; 571 } 572 573 Square, Pos 5, 1; 574 { 575 Character = shopkeeper(ATTNAM) { Flags = IS_MASTER; } 576 OTerrain = decoration(CHAIR); 577 } 578 579 Square, Pos 3, 0; 580 { 581 OTerrain = GRANITE wall(BRICK_PROPAGANDA); 582 } 583 584 ItemMap 585 { 586 Pos = 0,0; 587 Size = 7,6; 588 Types 589 { 590 # == 0; 591 a == Random { MinPrice = 250; MaxPrice = 2000; Category = HELMET|CLOAK|BODY_ARMOR|BELT|BOOT|GAUNTLET; } 592 d == Random { MinPrice = 50; MaxPrice = 2000; Category = RING|AMULET; } 593 w == Random { MinPrice = 250; MaxPrice = 2000; Category = WEAPON|SHIELD; } 594 e == Random { MinPrice = 10; MaxPrice = 2000; Category = FOOD|POTION; } 595 u == Random { MinPrice = 50; MaxPrice = 2000; Category = WAND|TOOL; } 596 v == Random { MinPrice = 500; MaxPrice = 2000; } 597 p == lump { MainMaterial = BEAR_FLESH { Volume = 20000; } } 598 l == lantern; 599 2 == lantern { SquarePosition = DOWN; } 600 3 == lantern { SquarePosition = RIGHT; } 601 4 == lantern { SquarePosition = LEFT; } 602 } 603 } 604 { 605 ##2#2## 606 #.aaa.# 607 #edduw# 608 3eeluw4 609 #.epvw# 610 2##.##2 611 } 612 } 613 614 Room 615 { 616 Pos = 52,53; 617 Size = 7,6; 618 WallSquare = solidterrain(SNOW_TERRAIN),wall(BRICK_FINE); 619 FloorSquare = solidterrain(PARQUET), 0; 620 GenerateDoor = false; 621 DivineMaster = SOPHOS; 622 Type = ROOM_LIBRARY; 623 GenerateLanterns = false; 624 GenerateWindows = false; 625 626 Square, Pos 3, 5; 627 { 628 GTerrain = solidterrain(PARQUET); 629 OTerrain = door; 630 } 631 632 Square, Pos 3, 0; 633 { 634 OTerrain = GRANITE wall(BRICK_PROPAGANDA); 635 } 636 637 Square, Pos 3, 3; 638 { 639 Character = librarian { Flags = IS_MASTER; } 640 } 641 642 Square, Pos 3, 3; 643 { 644 OTerrain = decoration(CHAIR); 645 } 646 647 Square, Pos 3, 0; 648 { 649 Items == lantern { SquarePosition = DOWN; } 650 } 651 652 Square, Pos 0, 5; 653 { 654 Items == lantern { SquarePosition = DOWN; } 655 } 656 657 Square, Pos 6, 5; 658 { 659 Items == lantern { SquarePosition = DOWN; } 660 } 661 662 OTerrainMap 663 { 664 Pos = 1,1; 665 Size = 5,4; 666 Types 667 { 668 = = olterraincontainer(BOOK_CASE) { ItemsInside = { 2, Random { MaxPrice = 500; Category = SCROLL|BOOK; }, Random { MaxPrice = 500; Category = SCROLL|BOOK; } } } 669 } 670 } 671 { 672 ===== 673 =...= 674 =...= 675 =...= 676 } 677 } 678 679 Room 680 { 681 Pos = 21,53; 682 Size = 7,6; 683 AltarPossible = false; 684 WallSquare = solidterrain(SNOW_TERRAIN),wall(BRICK_FINE); 685 FloorSquare = solidterrain(FLOOR), 0; 686 DoorSquare = solidterrain(FLOOR), door; 687 GenerateDoor = false; 688 DivineMaster = LORICATUS; 689 GenerateLanterns = false; 690 GenerateWindows = false; 691 692 Square, Pos 3, 5; 693 { 694 GTerrain = solidterrain(FLOOR); 695 OTerrain = door; 696 } 697 698 Square, Pos 3, 0; 699 { 700 OTerrain = GRANITE wall(BRICK_PROPAGANDA); 701 } 702 703 Square, Pos 0, 3; 704 { 705 Items == lantern { SquarePosition = RIGHT; } 706 } 707 708 Square, Pos 6, 3; 709 { 710 Items == lantern { SquarePosition = LEFT; } 711 } 712 713 Square, Pos 2, 0; 714 { 715 Items == lantern { SquarePosition = DOWN; } 716 } 717 718 Square, Pos 4, 0; 719 { 720 Items == lantern { SquarePosition = DOWN; } 721 } 722 723 Square, Pos 0, 5; 724 { 725 Items == lantern { SquarePosition = DOWN; } 726 } 727 728 Square, Pos 6, 5; 729 { 730 Items == lantern { SquarePosition = DOWN; } 731 } 732 733 Square, Pos 3, 2; 734 { 735 Character = smith(ATTNAM) { Flags = IS_MASTER; } 736 } 737 738 Square, Pos 3, 3; 739 { 740 OTerrain = decoration(ANVIL); 741 } 742 743 Square, Pos 1, 1; 744 { 745 OTerrain = decoration(FORGE); 746 } 747 748 Square, Pos 5, 1; 749 { 750 OTerrain = decoration(PLAIN_BED); 751 } 752 } 753 754 Room 755 { 756 Pos = 2,53; 757 Size = 7,6; 758 AltarPossible = false; 759 WallSquare = solidterrain(SNOW_TERRAIN),wall(BRICK_FINE); 760 FloorSquare = solidterrain(PARQUET), 0; 761 GenerateDoor = false; 762 DivineMaster = LORICATUS; 763 GenerateLanterns = false; 764 GenerateWindows = false; 765 766 Square, Pos 3, 5; 767 { 768 GTerrain = OAK_WOOD solidterrain(PARQUET); 769 OTerrain = door; 770 } 771 772 Square, Pos 3, 0; 773 { 774 OTerrain = GRANITE wall(BRICK_PROPAGANDA); 775 } 776 777 Square, Pos 0, 3; 778 { 779 Items == lantern { SquarePosition = RIGHT; } 780 } 781 782 Square, Pos 6, 3; 783 { 784 Items == lantern { SquarePosition = LEFT; } 785 } 786 787 Square, Pos 2, 0; 788 { 789 Items == lantern { SquarePosition = DOWN; } 790 } 791 792 Square, Pos 4, 0; 793 { 794 Items == lantern { SquarePosition = DOWN; } 795 } 796 797 Square, Pos 0, 5; 798 { 799 Items == lantern { SquarePosition = DOWN; } 800 } 801 802 Square, Pos 6, 5; 803 { 804 Items == lantern { SquarePosition = DOWN; } 805 } 806 807 Square, Pos 3, 2; 808 { 809 Character = tailor(ATTNAM) { Flags = IS_MASTER; } 810 } 811 812 Square, Pos 3, 3; 813 { 814 OTerrain = decoration(WORK_BENCH); 815 } 816 817 Square, Pos 1, 2; 818 { 819 OTerrain = decoration(PLAIN_BED); 820 } 821 } 822 823 Room 824 { 825 FloorSquare = solidterrain(FLOOR), 0; 826 WallSquare = solidterrain(SNOW_TERRAIN), FIR_WOOD wall(BRICK_FINE); 827 DoorSquare = solidterrain(FLOOR), door; 828 829 Square, Random HAS_NO_OTERRAIN; 830 { 831 OTerrain = decoration(PLAIN_BED); 832 } 833 834 Square, Random HAS_NO_OTERRAIN; 835 { 836 OTerrain = olterraincontainer(CHEST_OF_DRAWERS) { ItemsInside == materialmanual; } 837 } 838 } 839 840 Room 841 { 842 FloorSquare = solidterrain(FLOOR), 0; 843 WallSquare = solidterrain(SNOW_TERRAIN), FIR_WOOD wall(BRICK_FINE); 844 DoorSquare = solidterrain(FLOOR), door; 845 846 Square, Random HAS_NO_OTERRAIN; 847 { 848 OTerrain = decoration(PLAIN_BED); 849 } 850 851 Square, Random HAS_NO_OTERRAIN; 852 { 853 OTerrain = decoration(CHAIR); 854 } 855 856 Square, Random HAS_NO_OTERRAIN; 857 { 858 OTerrain = decoration(TABLE); 859 } 860 } 861 862 Room 863 { 864 FloorSquare = solidterrain(FLOOR), 0; 865 WallSquare = solidterrain(SNOW_TERRAIN), FIR_WOOD wall(BRICK_FINE); 866 DoorSquare = solidterrain(FLOOR), door; 867 868 Square, Random HAS_NO_OTERRAIN; 869 { 870 OTerrain = decoration(CHEAP_BED); 871 } 872 } 873 } 874 875 Level 1; 876 { 877 Description = "cathedral cellar"; 878 ShortDescription = "Cellar"; 879 Size = 42, 48; 880 GenerateMonsters = false; 881 Rooms = 1; 882 Items = 0; 883 IsOnGround = false; 884 TeamDefault = ATTNAM_TEAM; 885 LOSModifier = 16; 886 IgnoreDefaultSpecialSquares = false; 887 CanGenerateBone = false; 888 DifficultyBase = 150; 889 DifficultyDelta = 0; 890 EnchantmentMinusChanceBase = 0; 891 EnchantmentMinusChanceDelta = 0; 892 EnchantmentPlusChanceBase = 0; 893 EnchantmentPlusChanceDelta = 0; 894 BackGroundType = GRAY_FRACTAL; 895 FillSquare = solidterrain(GROUND), MORAINE earth; 896 TunnelSquare = solidterrain(GROUND), 0; 897 EarthquakesAffectTunnels = false; 898 899 Room 900 { 901 Size = 38, 44; 902 Pos = 2, 2; 903 WallSquare = solidterrain(GROUND), 0; 904 FloorSquare = solidterrain(GROUND), 0; 905 AltarPossible = false; 906 GenerateDoor = false; 907 DivineMaster = VALPURUS; 908 GenerateTunnel = false; 909 GenerateLanterns = false; 910 Type = ROOM_OWNED_AREA; 911 GenerateFountains = false; 912 AllowLockedDoors = false; 913 AllowBoobyTrappedDoors = false; 914 Shape = RECTANGLE; 915 IsInside = true; 916 GenerateWindows = false; 917 UseFillSquareWalls = false; 918 Flags = 0; 919 920 GTerrainMap 921 { 922 Size = 39, 44; 923 Pos = 0, 0; 924 Types 925 { 926 * = 0; 927 # = 0; 928 _ = MARBLE solidterrain(FLOOR); 929 + = solidterrain(PARQUET); 930 } 931 } 932 { 933 ************########################### 934 *####*******#...#..#....#....#....#...# 935 *#..#*******#......#....#....##.###...# 936 *#..#*******#......##.#####.##........# 937 *####*******#...#.................##### 938 ************#######...####...####.....# 939 *****************.....#**#...#**#.#...# 940 #####**********..*#...#.*#...#**#.#...# 941 #...#*************#####*#######*#.##### 942 #...#*******************#.....#*#.....# 943 ##.######################.....#*#.#...# 944 #.............................#*#.#...# 945 #.............................#*#.##### 946 ##.#####.#####.#####.####.....#*#...#** 947 #...#*#...#*#...#*#...#*#.....#*#...#** 948 #...#*#...#*#...#*#...#*#.....#*#...#** 949 #####*#####*#####*#####*##...##*#...#** 950 *************************#...#**#...#** 951 #####*#####*#####*#####*##...##*#...#** 952 #...#*#...#*#...#*#...#*#.....#*#...#** 953 #...#*#...#*#...#*#...#*#.....#*#.###** 954 ##.#####.#####.#####.####.....#*#.#**** 955 #.............................###.##*** 956 #..................................#*** 957 #########################.....#.#..#*** 958 *########.............#*#.....#.#..#*** 959 *#_____##.............#*##...##.#..#*** 960 *#_____##.............#**#...##.#..#*** 961 *#_____##.............####...##.#..#*** 962 *#_____##.............#.......#.####### 963 *#_____##########.#####.......#.......# 964 *#_____##...#...#.#...#.......#.#.....# 965 *#_____##...#...#.....#.......#.#.....# 966 ####_####.#####.#.#####.......#.#.....# 967 #.......#.............#.......#.#.....# 968 #.......#.#####.#.#...#.......#.#.....# 969 #.......#...#...#.#############.#.....# 970 #######.#...#...#...............#.....# 971 *#++++#.#########.##.####.#####.####### 972 *#++++............#...#.....#.........# 973 *#++++#############...#.....#.........# 974 *#++++#***********#####.....#.........# 975 *#++++#***************#.....#.........# 976 *######***************################# 977 } 978 979 OTerrainMap 980 { 981 Size = 39, 44; 982 Pos = 0, 0; 983 Types 984 { 985 * = MORAINE earth; 986 # = BLACK_GRANITE wall(BRICK_OLD); 987 @ = IRON barwall; 988 & = PAPER_BOARD barwall; /* Yes, it's a cardboard prison joke. */ 989 $ = IRON barwall(BROKEN_BARWALL); 990 % = IRON door(BARDOOR); 991 = = PAPER_BOARD door(BARDOOR) { Parameters = LOCKED; } 992 ^ = MARBLE wall(BRICK_PROPAGANDA); 993 > = stairs(STAIRS_DOWN); 994 < = stairs(STAIRS_UP); 995 B = IRON brokendoor(BARDOOR); 996 C = MARBLE coffin { ItemsInside = { 2, skull, bone { Times = 1:3; } } } 997 D = IRON door; 998 E = decoration(DOUBLE_BED); 999 F = decoration(WELL); 1000 H = olterraincontainer(SHELF) 1001 { 1002 ItemsInside = { 4, can { Times = 0:3; }, loaf { Times = 2:10; }, banana { Times = 0:10; }, carrot { Times = 0:3; } } 1003 } 1004 L = IRON door(BARDOOR) { Parameters = LOCKED; } 1005 I = ironmaiden; 1006 N = GRANITE wall(BRICK_FINE); 1007 P = GRANITE wall(BRICK_PROPAGANDA); 1008 R = olterraincontainer(CHEST_OF_DRAWERS) 1009 { 1010 ItemsInside == Random { Category = CLOAK|BODY_ARMOR|BELT|BOOT|GAUNTLET; ConfigFlags = NO_BROKEN; } 1011 } 1012 S = BLACK_GRANITE door(SECRET_DOOR); 1013 T = decoration(TABLE); 1014 X = BLACK_GRANITE wall(BROKEN_WALL); 1015 W = olterraincontainer(SHELF) 1016 { 1017 ItemsInside = { 1, potion { Times = 3:5; SecondaryMaterial = VODKA; } } 1018 } 1019 b = boulder(1); 1020 d = decoration(PLAIN_BED); 1021 c = decoration(CARPET); 1022 e = MARBLE wall(BRICK_OLD); 1023 f = fountain; 1024 l = IRON door { Parameters = LOCKED; } 1025 n = decoration(BENCH); 1026 r = decoration(CHAIR); 1027 s = decoration(SHACKLES); 1028 t = decoration(TORTURE_RACK); 1029 w = decoration(WOODEN_HORSE); 1030 x = MARBLE wall(BRICK_FINE); 1031 1 = MARBLE sign { Text = "Here rests in honored glory an Attnamese soldier known but to Valpurus."; } 1032 } 1033 } 1034 { 1035 ************#######################XX## 1036 *####*******X.s.@..@...sX....#...s$...# 1037 *#..#*******#...@..@....#....#@B@@@...# 1038 *#..#*******#s..L..@@B@@#@@%@#b...%...# 1039 *##S#*******X...@............S....XX### 1040 **#.#*******#######@%$X##X@L@#XX#.%..s# 1041 **#.#************b....#**#...X**X.@...# 1042 ###S#**********>.*#s..#**#.s.#**#.$...X 1043 #..I#*************#XX##*##NPN##*#.#XXX# 1044 #...#*******************#.....#*#.%...X 1045 #@L@#####################.....#*#.@.s.# 1046 #.............................#*#.@...# 1047 #.............................#*#S##### 1048 #@L@###&=&###@L@###@%@###.....#*#.WW#** 1049 #...#*#...#*#...#*#...#*#.....#*#..W#** 1050 #..s#*#.d.#*#.s.#*#...#*#.....#*#.WW#** 1051 #####*#####*#####*#####*##...##*#..W#** 1052 *************************#...#**#.WW#** 1053 #####*#####*#####*#####*##...##*#..W#** 1054 #..s#*#...#*#s..#*#.s.#*#.....#*#.WW#** 1055 #...#*#...#*#...#*#...#*#.....#*#D###** 1056 #@L@###@%@###@%@###@%@###.....#*#.#**** 1057 #.............................###D##*** 1058 #.............................D.D..#*** 1059 #########################.....#D#..#*** 1060 *xx^x^xx#d.d.d.d.d.d.d#*#.....#.#..#*** 1061 *x.....x#.............#*##...##.#..#*** 1062 *x..C..x#.............#**#...##.#..#*** 1063 *x..c..x#.............####...##.#.<#*** 1064 *x..c..x#d.d.d.d...d.d#.......#.####### 1065 *x..c1.x#########D#####.I.....#.D.....# 1066 *x..c..x#..d#..T#.#T.d#.......#.#.rTr.# 1067 *x..c..x#.rT#d..#.D..R#.....w.#.#.rTr.# 1068 #xxxDxxx#D#####D#.#####.t.....#.#.rTr.# 1069 #n.....f#.........D...#.....w.#.#.rTr.# 1070 #.......#D#####D#.#..d#..r....#.#.rTr.# 1071 #n......#..d#d..#.#############.#.rTr.# 1072 #######D#r.R#Tr.#...............#.....# 1073 *#....#.#########.##l####D#####D####### 1074 *#....l...........#..R#H...H#.........# 1075 *#....#############drT#H.F.H#.........# 1076 *#.E..#***********#####H...H#.........# 1077 *#..s.#***************#HHHHH#.........# 1078 *######***************################# 1079 } 1080 1081 ItemMap 1082 { 1083 Size = 39, 44; 1084 Pos = 0, 0; 1085 Types 1086 { 1087 * == 0; 1088 # == 0; 1089 1 == lantern { SquarePosition = UP; } 1090 2 == lantern { SquarePosition = DOWN; } 1091 3 == lantern { SquarePosition = RIGHT; } 1092 4 == lantern { SquarePosition = LEFT; } 1093 r == GRANITE stone; 1094 b == lantern(BROKEN); 1095 c == itemcontainer(SMALL_CHEST) { Parameters = LOCKED; ItemsInside == Random { Category = CLOAK|BODY_ARMOR|BELT|BOOT|GAUNTLET; ConfigFlags = NO_BROKEN; } } 1096 p == COPPER pickaxe(BROKEN); 1097 } 1098 } 1099 { 1100 ************########################### 1101 ************#..b#..#....#....#....#...# 1102 ************#....r.#....#....##.###...# 1103 ************#......##.#####.##........# 1104 ************#..b#...............b.##### 1105 ************#######..#####...####.....# 1106 *****************.r.b#***#...#**#.#...# 1107 #####**********.p*####***#...#**#.#...# 1108 #...#*******************##...##*#.##### 1109 #...#*******************#.....#*#.....# 1110 ##.#####2#####2#####2###3.....#*#.#...# 1111 3.............................#*#.#...# 1112 #.............................#*#.##### 1113 ##.#####.#####.#####.####.....#*#...#** 1114 #...#*#...#*#...#*#...#*3.....#*#...#** 1115 #...#*#...#*#...#*#...#*#.....#*#...#** 1116 #####*#####*#####*#####*##...##*#...#** 1117 *************************#...#**#...#** 1118 #####*#####*#####*#####*##...##*3...#** 1119 #...#*#...#*#...#*#...#*#.....#*#...#** 1120 #...#*#...#*#...#*#...#*3.....#*#.###** 1121 ##.#####.#####.#####.####.....#*#.#**** 1122 #.............................###.##*** 1123 #..................................4*** 1124 ##1#####1#####1#####1###3.....#.#..#*** 1125 *########.............#*#.....#.#..#*** 1126 *#.....##c.c.c.c.c.c.c#*##...##.#..#*** 1127 *3.....43.............4**#...##.3..#*** 1128 *#.....##c.c.c.c...c.c####...##.#..#*** 1129 *3.....4#.............#.......#.###2### 1130 *#.....###2###2#1.##2#3.......4.......# 1131 *3.....4#c..#c..#.#...#.......#.4.....# 1132 *#.....##...#...#.....#.......#.3.....4 1133 ####.####.#####.3.#####.......#.#.....# 1134 #.......3.............3.......4.#.....# 1135 3.......4.#####.#.#cc.#.......#.3.....4 1136 #.......3...#...#.#1####2######.#.....# 1137 #######.#...#...#...............#.....# 1138 *#....#.#######1#.##.###2.####2.###12## 1139 *3................3...#.....#.........# 1140 *#....#####1#######...#.....#.........# 1141 *#....#***********#####.....#.........# 1142 *#....#***************#.....#.........# 1143 *######***************########1#####1## 1144 } 1145 1146 CharacterMap 1147 { 1148 Size = 39, 44; 1149 Pos = 0, 0; 1150 Types 1151 { 1152 * = 0; 1153 # = 0; 1154 G = guard(VETERAN); 1155 H = guard(HONOR); 1156 t = guard(TRAINEE) { WayPoint = { 4, 33, 42, 34, 43, 38, 43, 38, 41; } } 1157 N = necromancer(IMPRISONED_NECROMANCER) { Team = 15; } 1158 P = punisher; 1159 L = punisher(LAW_STUDENT); 1160 M = mistress { Inventory == potion { Times = 1:2; SecondaryMaterial = VALDEMAR; } } 1161 T = imperialist(MASTER_TORTURER) { Flags = IS_MASTER; } 1162 1 = farmer(IMPRISONED_FARMER) { Team = 15; } 1163 2 = hunter(IMPRISONED_HUNTER) { Team = 15; } 1164 3 = femaleslave(IMPRISONED_FEMALE) { Team = 15; } 1165 4 = zombie(IMPRISONED_ZOMBIE) { Team = 15; } 1166 7 = petrusswife(7); 1167 } 1168 } 1169 { 1170 ************########################### 1171 ************#...#..#....#....#....#...# 1172 ************#.4....#....#....##.###...# 1173 ************#......##.#####.##........# 1174 ************#...#.................##### 1175 ************#######..#.###...####.....# 1176 ******************#..#.**#...#**#.#...# 1177 ******************####*.*#7..#**#.#...# 1178 ************************#######*#.##### 1179 ************************#...G.#*#.....# 1180 #########################.....#*#.#...# 1181 #.............................#*#.#...# 1182 #.............................#*#.##### 1183 ##.#####.#####.#####.####.....#*#...#** 1184 #...#*#...#*#...#*#...#*#.....#*#...#** 1185 #1..#*#...#*#2..#*#...#*#.....#*#...#** 1186 #####*#####*#####*#####*##...##*#...#** 1187 *************************#...#**#...#** 1188 #####*#####*#####*#####*##...##*#...#** 1189 #...#*#...#*#...#*#N..#*#.....#*#...#** 1190 #..3#*#...#*#...#*#...#*#.....#*#.###** 1191 ##.#####.#####.#####.####.....#*#.#**** 1192 #.............................###.##*** 1193 #..........................L.......#*** 1194 #########################.....#.#..#*** 1195 *########.............#*#.....#.#.G#*** 1196 *#.....##.............#*##...##.#..#*** 1197 *#.....##.............#**#...##.#..#*** 1198 *#.....##........G....####...##.#G.#*** 1199 *#.....##.............#....P..#.####### 1200 *#.....##########.#####.......#.......# 1201 *#.....##...#...#.#...#..P....#.#.....# 1202 *#.....##...#...#.....#.......#.#.....# 1203 ####.####.#####.#.#####....P..#.#.....# 1204 #..H.H..#.............#.......#.#.....# 1205 #.......#.#####.#.#...#..T....#.#.....# 1206 #.......#...#...#.#############.#.....# 1207 #######.#...#...#...............#.....# 1208 *#....#.#########.##.####.#####.####### 1209 *#................#...#.....#...G...t.# 1210 *#....#############...#.....#.t.......# 1211 *#..M.#***********#####.....#...t...t.# 1212 *#....#***************#.....#.........# 1213 *######***************################# 1214 } 1215 } 1216 1217 Square, Pos 36,30; 1218 { 1219 OTerrain = stairs(STAIRS_UP); 1220 EntryIndex = STAIRS_UP; 1221 } 1222 1223 Square, Pos 17,9; 1224 { 1225 OTerrain = stairs(STAIRS_DOWN); 1226 EntryIndex = STAIRS_DOWN; 1227 } 1228 } 1229 1230 RandomLevel 2:3; /* Beartrap vault */ 1231 { 1232 Room 1233 { 1234 Size = 6,6; 1235 Flags = NO_MONSTER_GENERATION; 1236 1237 Square, Random; 1238 { 1239 Items == Random { Category = RING|SCROLL|WAND; } 1240 } 1241 1242 Square, Random; 1243 { 1244 Items == METEORIC_STEEL beartrap { Team = MONSTER_TEAM; IsActive = true; LifeExpectancy = 1000:10000; } 1245 Times == 3; 1246 } 1247 1248 Square, Random; 1249 { 1250 Items == MITHRIL beartrap { Team = MONSTER_TEAM; IsActive = true; LifeExpectancy = 1000:10000; } 1251 Times == 2; 1252 } 1253 1254 Square, Random; 1255 { 1256 Items == OCTIRON beartrap { Team = MONSTER_TEAM; IsActive = true; LifeExpectancy = 1000:10000; } 1257 } 1258 1259 Square, Random; 1260 { 1261 Items == ADAMANT beartrap { Team = MONSTER_TEAM; IsActive = true; LifeExpectancy = 1000:10000; } 1262 } 1263 } 1264 } 1265 1266 RandomLevel 3:4; /* Sepulcher */ 1267 { 1268 Room 1269 { 1270 GenerateLanterns = false; 1271 GenerateFountains = false; 1272 GenerateDoor = false; 1273 GenerateTunnel = false; 1274 AltarPossible = false; 1275 Size = 5,5; 1276 UseFillSquareWalls = true; 1277 Flags = NO_MONSTER_GENERATION; 1278 1279 OTerrainMap 1280 { 1281 Pos = 1,1; 1282 Size = 3,3; 1283 Types 1284 { 1285 # = BLACK_GRANITE wall(BRICK_OLD); 1286 } 1287 } 1288 { 1289 ### 1290 #.# 1291 ### 1292 } 1293 1294 Square, Pos 2,2; 1295 { 1296 Items == EBONY_WOOD itemcontainer(CHEST|HEXAGONAL_LOCK) { Parameters = LOCKED; ItemsInside = { 2, Random { MinPrice = 500; Category = TOOL|WAND; }, Random { Chance = 75; MinPrice = 750; Times = 2; Category = HELMET|CLOAK|BODY_ARMOR|WEAPON|SHIELD|RING|GAUNTLET|BELT|BOOT; } } } 1297 Character = vampire; 1298 } 1299 } 1300 } 1301 1302 Level 2; 1303 { 1304 Square, Random NOT_WALKABLE|ATTACHABLE; 1305 { 1306 OTerrain = stairs(STAIRS_UP); 1307 EntryIndex = STAIRS_UP; 1308 AttachRequired = true; 1309 } 1310 1311 Square, Random NOT_WALKABLE|ATTACHABLE; 1312 { 1313 OTerrain = stairs(STAIRS_DOWN); 1314 EntryIndex = STAIRS_DOWN; 1315 AttachRequired = true; 1316 } 1317 1318 Square, Random; 1319 { 1320 Character = skeleton(WARRIOR); 1321 } 1322 } 1323 1324 Level 3; 1325 { 1326 Square, Random NOT_WALKABLE|ATTACHABLE; 1327 { 1328 OTerrain = stairs(STAIRS_UP); 1329 EntryIndex = STAIRS_UP; 1330 AttachRequired = true; 1331 } 1332 1333 Square, Random NOT_WALKABLE|ATTACHABLE; 1334 { 1335 OTerrain = stairs(STAIRS_DOWN); 1336 EntryIndex = STAIRS_DOWN; 1337 AttachRequired = true; 1338 } 1339 } 1340 1341 Level 4; 1342 { 1343 Description = "lost tomb"; 1344 ShortDescription = "Lost Tomb"; 1345 LevelMessage = "You hear rhythmic chanting of some profane ritual: \"Ia! Ia! Khaz-zadm fhtagn!\""; 1346 DifficultyBase = 100; 1347 DifficultyDelta = 0; 1348 ItemMinPriceBase = 100; 1349 ItemMinPriceDelta = 10; 1350 1351 Square, Random NOT_IN_ROOM|ATTACHABLE; 1352 { 1353 OTerrain = stairs(STAIRS_UP); 1354 EntryIndex = STAIRS_UP; 1355 AttachRequired = true; 1356 } 1357 1358 Room 1359 { 1360 Size = 11, 11; 1361 DoorSquare = GRANITE solidterrain(GROUND),IRON door; 1362 AltarPossible = false; 1363 DivineMaster = MORTIFER; 1364 GenerateDoor = true; 1365 GenerateTunnel = true; 1366 GenerateLanterns = false; 1367 AllowLockedDoors = true; 1368 Shape = ROUND_CORNERS; 1369 Flags = NO_MONSTER_GENERATION; 1370 1371 OTerrainMap 1372 { 1373 Size = 9, 9; 1374 Pos = 1, 1; 1375 1376 Types 1377 { 1378 b = 0; 1379 s = 0; 1380 C = coffin; 1381 } 1382 } 1383 { 1384 ......... 1385 ...bbb... 1386 ..s...s.. 1387 .b.....b. 1388 .b..C..b. 1389 .b.....b. 1390 ..s...s.. 1391 ...bbb... 1392 ......... 1393 } 1394 1395 ItemMap 1396 { 1397 Size = 9, 9; 1398 Pos = 1, 1; 1399 1400 Types 1401 { 1402 b == bone { Times = 1:4; } 1403 s == skull; 1404 C == 0; 1405 } 1406 } 1407 { 1408 ......... 1409 ...bbb... 1410 ..s...s.. 1411 .b.....b. 1412 .b..C..b. 1413 .b.....b. 1414 ..s...s.. 1415 ...bbb... 1416 ......... 1417 } 1418 1419 CharacterMap 1420 { 1421 Size = 9, 9; 1422 Pos = 1, 1; 1423 1424 Types 1425 { 1426 b = 0; 1427 s = 0; 1428 C = 0; 1429 N = necromancer(APPRENTICE_NECROMANCER) { Inventory = { 2, lantern, wand; } } 1430 Z = zombie(ZOMBIE_OF_KHAZ_ZADM); 1431 p = dog(SKELETON_DOG); 1432 } 1433 } 1434 { 1435 ......... 1436 ...bbb... 1437 ..s...s.. 1438 .b.N.p.b. 1439 .b..C..b. 1440 .b.p.Z.b. 1441 ..s...s.. 1442 ...bbb... 1443 ......... 1444 } 1445 } 1446 1447 Square, Random IN_ROOM; 1448 { 1449 Items == Random { Category = SCROLL; } 1450 } 1451 } 1452} 1453