POSITION y1a, x1a, y2a, x2a;\r
POSITION y1b, x1b, y2b, x2b;\r
POSITION yval, xval;\r
- bool light;\r
- cave_type *c_ptr;\r
+ bool light;\r
+ cave_type *c_ptr;\r
\r
\r
/* Find and reserve some space in the dungeon. Get center of room. */\r
{\r
POSITION y, x, y1, x1;\r
POSITION y2, x2, tmp, yval, xval;\r
- bool light;\r
- cave_type *c_ptr;\r
+ bool light;\r
+ cave_type *c_ptr;\r
\r
\r
/* Find and reserve some space in the dungeon. Get center of room. */\r
/* Inner room variations */\r
switch (randint1(5))\r
{\r
- /* Just an inner room with a monster */\r
- case 1:\r
- {\r
- /* Place a secret door */\r
- switch (randint1(4))\r
+ /* Just an inner room with a monster */\r
+ case 1:\r
{\r
- case 1: place_secret_door(y1 - 1, xval, DOOR_DEFAULT); break;\r
- case 2: place_secret_door(y2 + 1, xval, DOOR_DEFAULT); break;\r
- case 3: place_secret_door(yval, x1 - 1, DOOR_DEFAULT); break;\r
- case 4: place_secret_door(yval, x2 + 1, DOOR_DEFAULT); break;\r
- }\r
-\r
- /* Place a monster in the room */\r
- vault_monsters(yval, xval, 1);\r
+ /* Place a secret door */\r
+ switch (randint1(4))\r
+ {\r
+ case 1: place_secret_door(y1 - 1, xval, DOOR_DEFAULT); break;\r
+ case 2: place_secret_door(y2 + 1, xval, DOOR_DEFAULT); break;\r
+ case 3: place_secret_door(yval, x1 - 1, DOOR_DEFAULT); break;\r
+ case 4: place_secret_door(yval, x2 + 1, DOOR_DEFAULT); break;\r
+ }\r
\r
- break;\r
- }\r
+ /* Place a monster in the room */\r
+ vault_monsters(yval, xval, 1);\r
\r
- /* Treasure Vault (with a door) */\r
- case 2:\r
- {\r
- /* Place a secret door */\r
- switch (randint1(4))\r
- {\r
- case 1: place_secret_door(y1 - 1, xval, DOOR_DEFAULT); break;\r
- case 2: place_secret_door(y2 + 1, xval, DOOR_DEFAULT); break;\r
- case 3: place_secret_door(yval, x1 - 1, DOOR_DEFAULT); break;\r
- case 4: place_secret_door(yval, x2 + 1, DOOR_DEFAULT); break;\r
+ break;\r
}\r
\r
- /* Place another inner room */\r
- for (y = yval - 1; y <= yval + 1; y++)\r
+ /* Treasure Vault (with a door) */\r
+ case 2:\r
{\r
- for (x = xval - 1; x <= xval + 1; x++)\r
+ /* Place a secret door */\r
+ switch (randint1(4))\r
{\r
- if ((x == xval) && (y == yval)) continue;\r
- c_ptr = &cave[y][x];\r
- place_inner_grid(c_ptr);\r
+ case 1: place_secret_door(y1 - 1, xval, DOOR_DEFAULT); break;\r
+ case 2: place_secret_door(y2 + 1, xval, DOOR_DEFAULT); break;\r
+ case 3: place_secret_door(yval, x1 - 1, DOOR_DEFAULT); break;\r
+ case 4: place_secret_door(yval, x2 + 1, DOOR_DEFAULT); break;\r
}\r
- }\r
\r
- /* Place a locked door on the inner room */\r
- switch (randint1(4))\r
- {\r
- case 1: place_locked_door(yval - 1, xval); break;\r
- case 2: place_locked_door(yval + 1, xval); break;\r
- case 3: place_locked_door(yval, xval - 1); break;\r
- case 4: place_locked_door(yval, xval + 1); break;\r
- }\r
+ /* Place another inner room */\r
+ for (y = yval - 1; y <= yval + 1; y++)\r
+ {\r
+ for (x = xval - 1; x <= xval + 1; x++)\r
+ {\r
+ if ((x == xval) && (y == yval)) continue;\r
+ c_ptr = &cave[y][x];\r
+ place_inner_grid(c_ptr);\r
+ }\r
+ }\r
\r
- /* Monsters to guard the "treasure" */\r
- vault_monsters(yval, xval, randint1(3) + 2);\r
+ /* Place a locked door on the inner room */\r
+ switch (randint1(4))\r
+ {\r
+ case 1: place_locked_door(yval - 1, xval); break;\r
+ case 2: place_locked_door(yval + 1, xval); break;\r
+ case 3: place_locked_door(yval, xval - 1); break;\r
+ case 4: place_locked_door(yval, xval + 1); break;\r
+ }\r
\r
- /* Object (80%) */\r
- if (randint0(100) < 80)\r
- {\r
- place_object(yval, xval, 0L);\r
- }\r
+ /* Monsters to guard the "treasure" */\r
+ vault_monsters(yval, xval, randint1(3) + 2);\r
\r
- /* Stairs (20%) */\r
- else\r
- {\r
- place_random_stairs(yval, xval);\r
- }\r
+ /* Object (80%) */\r
+ if (randint0(100) < 80)\r
+ {\r
+ place_object(yval, xval, 0L);\r
+ }\r
\r
- /* Traps to protect the treasure */\r
- vault_traps(yval, xval, 4, 10, 2 + randint1(3));\r
+ /* Stairs (20%) */\r
+ else\r
+ {\r
+ place_random_stairs(yval, xval);\r
+ }\r
\r
- break;\r
- }\r
+ /* Traps to protect the treasure */\r
+ vault_traps(yval, xval, 4, 10, 2 + randint1(3));\r
\r
- /* Inner pillar(s). */\r
- case 3:\r
- {\r
- /* Place a secret door */\r
- switch (randint1(4))\r
- {\r
- case 1: place_secret_door(y1 - 1, xval, DOOR_DEFAULT); break;\r
- case 2: place_secret_door(y2 + 1, xval, DOOR_DEFAULT); break;\r
- case 3: place_secret_door(yval, x1 - 1, DOOR_DEFAULT); break;\r
- case 4: place_secret_door(yval, x2 + 1, DOOR_DEFAULT); break;\r
+ break;\r
}\r
\r
- /* Large Inner Pillar */\r
- for (y = yval - 1; y <= yval + 1; y++)\r
+ /* Inner pillar(s). */\r
+ case 3:\r
{\r
- for (x = xval - 1; x <= xval + 1; x++)\r
+ /* Place a secret door */\r
+ switch (randint1(4))\r
{\r
- c_ptr = &cave[y][x];\r
- place_inner_grid(c_ptr);\r
+ case 1: place_secret_door(y1 - 1, xval, DOOR_DEFAULT); break;\r
+ case 2: place_secret_door(y2 + 1, xval, DOOR_DEFAULT); break;\r
+ case 3: place_secret_door(yval, x1 - 1, DOOR_DEFAULT); break;\r
+ case 4: place_secret_door(yval, x2 + 1, DOOR_DEFAULT); break;\r
}\r
- }\r
\r
- /* Occasionally, two more Large Inner Pillars */\r
- if (one_in_(2))\r
- {\r
- tmp = randint1(2);\r
+ /* Large Inner Pillar */\r
for (y = yval - 1; y <= yval + 1; y++)\r
{\r
- for (x = xval - 5 - tmp; x <= xval - 3 - tmp; x++)\r
+ for (x = xval - 1; x <= xval + 1; x++)\r
{\r
c_ptr = &cave[y][x];\r
place_inner_grid(c_ptr);\r
}\r
- for (x = xval + 3 + tmp; x <= xval + 5 + tmp; x++)\r
+ }\r
+\r
+ /* Occasionally, two more Large Inner Pillars */\r
+ if (one_in_(2))\r
+ {\r
+ tmp = randint1(2);\r
+ for (y = yval - 1; y <= yval + 1; y++)\r
{\r
- c_ptr = &cave[y][x];\r
- place_inner_grid(c_ptr);\r
+ for (x = xval - 5 - tmp; x <= xval - 3 - tmp; x++)\r
+ {\r
+ c_ptr = &cave[y][x];\r
+ place_inner_grid(c_ptr);\r
+ }\r
+ for (x = xval + 3 + tmp; x <= xval + 5 + tmp; x++)\r
+ {\r
+ c_ptr = &cave[y][x];\r
+ place_inner_grid(c_ptr);\r
+ }\r
}\r
}\r
- }\r
-\r
- /* Occasionally, some Inner rooms */\r
- if (one_in_(3))\r
- {\r
- int door_type = ((d_info[dungeon_type].flags1 & DF1_CURTAIN) &&\r
- one_in_((d_info[dungeon_type].flags1 & DF1_NO_CAVE) ? 16 : 256)) ? DOOR_CURTAIN :\r
- ((d_info[dungeon_type].flags1 & DF1_GLASS_DOOR) ? DOOR_GLASS_DOOR : DOOR_DOOR);\r
\r
- /* Long horizontal walls */\r
- for (x = xval - 5; x <= xval + 5; x++)\r
+ /* Occasionally, some Inner rooms */\r
+ if (one_in_(3))\r
{\r
- c_ptr = &cave[yval - 1][x];\r
+ int door_type = ((d_info[dungeon_type].flags1 & DF1_CURTAIN) &&\r
+ one_in_((d_info[dungeon_type].flags1 & DF1_NO_CAVE) ? 16 : 256)) ? DOOR_CURTAIN :\r
+ ((d_info[dungeon_type].flags1 & DF1_GLASS_DOOR) ? DOOR_GLASS_DOOR : DOOR_DOOR);\r
+\r
+ /* Long horizontal walls */\r
+ for (x = xval - 5; x <= xval + 5; x++)\r
+ {\r
+ c_ptr = &cave[yval - 1][x];\r
+ place_inner_grid(c_ptr);\r
+ c_ptr = &cave[yval + 1][x];\r
+ place_inner_grid(c_ptr);\r
+ }\r
+\r
+ /* Close off the left/right edges */\r
+ c_ptr = &cave[yval][xval - 5];\r
place_inner_grid(c_ptr);\r
- c_ptr = &cave[yval + 1][x];\r
+ c_ptr = &cave[yval][xval + 5];\r
place_inner_grid(c_ptr);\r
- }\r
\r
- /* Close off the left/right edges */\r
- c_ptr = &cave[yval][xval - 5];\r
- place_inner_grid(c_ptr);\r
- c_ptr = &cave[yval][xval + 5];\r
- place_inner_grid(c_ptr);\r
+ /* Secret doors (random top/bottom) */\r
+ place_secret_door(yval - 3 + (randint1(2) * 2), xval - 3, door_type);\r
+ place_secret_door(yval - 3 + (randint1(2) * 2), xval + 3, door_type);\r
\r
- /* Secret doors (random top/bottom) */\r
- place_secret_door(yval - 3 + (randint1(2) * 2), xval - 3, door_type);\r
- place_secret_door(yval - 3 + (randint1(2) * 2), xval + 3, door_type);\r
+ /* Monsters */\r
+ vault_monsters(yval, xval - 2, randint1(2));\r
+ vault_monsters(yval, xval + 2, randint1(2));\r
\r
- /* Monsters */\r
- vault_monsters(yval, xval - 2, randint1(2));\r
- vault_monsters(yval, xval + 2, randint1(2));\r
+ /* Objects */\r
+ if (one_in_(3)) place_object(yval, xval - 2, 0L);\r
+ if (one_in_(3)) place_object(yval, xval + 2, 0L);\r
+ }\r
\r
- /* Objects */\r
- if (one_in_(3)) place_object(yval, xval - 2, 0L);\r
- if (one_in_(3)) place_object(yval, xval + 2, 0L);\r
+ break;\r
}\r
\r
- break;\r
- }\r
-\r
- /* Maze inside. */\r
- case 4:\r
- {\r
- /* Place a secret door */\r
- switch (randint1(4))\r
+ /* Maze inside. */\r
+ case 4:\r
{\r
- case 1: place_secret_door(y1 - 1, xval, DOOR_DEFAULT); break;\r
- case 2: place_secret_door(y2 + 1, xval, DOOR_DEFAULT); break;\r
- case 3: place_secret_door(yval, x1 - 1, DOOR_DEFAULT); break;\r
- case 4: place_secret_door(yval, x2 + 1, DOOR_DEFAULT); break;\r
- }\r
+ /* Place a secret door */\r
+ switch (randint1(4))\r
+ {\r
+ case 1: place_secret_door(y1 - 1, xval, DOOR_DEFAULT); break;\r
+ case 2: place_secret_door(y2 + 1, xval, DOOR_DEFAULT); break;\r
+ case 3: place_secret_door(yval, x1 - 1, DOOR_DEFAULT); break;\r
+ case 4: place_secret_door(yval, x2 + 1, DOOR_DEFAULT); break;\r
+ }\r
\r
- /* Maze (really a checkerboard) */\r
- for (y = y1; y <= y2; y++)\r
- {\r
- for (x = x1; x <= x2; x++)\r
+ /* Maze (really a checkerboard) */\r
+ for (y = y1; y <= y2; y++)\r
{\r
- if (0x1 & (x + y))\r
+ for (x = x1; x <= x2; x++)\r
{\r
- c_ptr = &cave[y][x];\r
- place_inner_grid(c_ptr);\r
+ if (0x1 & (x + y))\r
+ {\r
+ c_ptr = &cave[y][x];\r
+ place_inner_grid(c_ptr);\r
+ }\r
}\r
}\r
- }\r
-\r
- /* Monsters just love mazes. */\r
- vault_monsters(yval, xval - 5, randint1(3));\r
- vault_monsters(yval, xval + 5, randint1(3));\r
\r
- /* Traps make them entertaining. */\r
- vault_traps(yval, xval - 3, 2, 8, randint1(3));\r
- vault_traps(yval, xval + 3, 2, 8, randint1(3));\r
+ /* Monsters just love mazes. */\r
+ vault_monsters(yval, xval - 5, randint1(3));\r
+ vault_monsters(yval, xval + 5, randint1(3));\r
\r
- /* Mazes should have some treasure too. */\r
- vault_objects(yval, xval, 3);\r
+ /* Traps make them entertaining. */\r
+ vault_traps(yval, xval - 3, 2, 8, randint1(3));\r
+ vault_traps(yval, xval + 3, 2, 8, randint1(3));\r
\r
- break;\r
- }\r
-\r
- /* Four small rooms. */\r
- case 5:\r
- {\r
- int door_type = ((d_info[dungeon_type].flags1 & DF1_CURTAIN) &&\r
- one_in_((d_info[dungeon_type].flags1 & DF1_NO_CAVE) ? 16 : 256)) ? DOOR_CURTAIN :\r
- ((d_info[dungeon_type].flags1 & DF1_GLASS_DOOR) ? DOOR_GLASS_DOOR : DOOR_DOOR);\r
+ /* Mazes should have some treasure too. */\r
+ vault_objects(yval, xval, 3);\r
\r
- /* Inner "cross" */\r
- for (y = y1; y <= y2; y++)\r
- {\r
- c_ptr = &cave[y][xval];\r
- place_inner_grid(c_ptr);\r
- }\r
- for (x = x1; x <= x2; x++)\r
- {\r
- c_ptr = &cave[yval][x];\r
- place_inner_grid(c_ptr);\r
+ break;\r
}\r
\r
- /* Doors into the rooms */\r
- if (randint0(100) < 50)\r
- {\r
- int i = randint1(10);\r
- place_secret_door(y1 - 1, xval - i, door_type);\r
- place_secret_door(y1 - 1, xval + i, door_type);\r
- place_secret_door(y2 + 1, xval - i, door_type);\r
- place_secret_door(y2 + 1, xval + i, door_type);\r
- }\r
- else\r
+ /* Four small rooms. */\r
+ case 5:\r
{\r
- int i = randint1(3);\r
- place_secret_door(yval + i, x1 - 1, door_type);\r
- place_secret_door(yval - i, x1 - 1, door_type);\r
- place_secret_door(yval + i, x2 + 1, door_type);\r
- place_secret_door(yval - i, x2 + 1, door_type);\r
- }\r
+ int door_type = ((d_info[dungeon_type].flags1 & DF1_CURTAIN) &&\r
+ one_in_((d_info[dungeon_type].flags1 & DF1_NO_CAVE) ? 16 : 256)) ? DOOR_CURTAIN :\r
+ ((d_info[dungeon_type].flags1 & DF1_GLASS_DOOR) ? DOOR_GLASS_DOOR : DOOR_DOOR);\r
+\r
+ /* Inner "cross" */\r
+ for (y = y1; y <= y2; y++)\r
+ {\r
+ c_ptr = &cave[y][xval];\r
+ place_inner_grid(c_ptr);\r
+ }\r
+ for (x = x1; x <= x2; x++)\r
+ {\r
+ c_ptr = &cave[yval][x];\r
+ place_inner_grid(c_ptr);\r
+ }\r
+\r
+ /* Doors into the rooms */\r
+ if (randint0(100) < 50)\r
+ {\r
+ int i = randint1(10);\r
+ place_secret_door(y1 - 1, xval - i, door_type);\r
+ place_secret_door(y1 - 1, xval + i, door_type);\r
+ place_secret_door(y2 + 1, xval - i, door_type);\r
+ place_secret_door(y2 + 1, xval + i, door_type);\r
+ }\r
+ else\r
+ {\r
+ int i = randint1(3);\r
+ place_secret_door(yval + i, x1 - 1, door_type);\r
+ place_secret_door(yval - i, x1 - 1, door_type);\r
+ place_secret_door(yval + i, x2 + 1, door_type);\r
+ place_secret_door(yval - i, x2 + 1, door_type);\r
+ }\r
\r
- /* Treasure, centered at the center of the cross */\r
- vault_objects(yval, xval, 2 + randint1(2));\r
+ /* Treasure, centered at the center of the cross */\r
+ vault_objects(yval, xval, 2 + randint1(2));\r
\r
- /* Gotta have some monsters. */\r
- vault_monsters(yval + 1, xval - 4, randint1(4));\r
- vault_monsters(yval + 1, xval + 4, randint1(4));\r
- vault_monsters(yval - 1, xval - 4, randint1(4));\r
- vault_monsters(yval - 1, xval + 4, randint1(4));\r
+ /* Gotta have some monsters. */\r
+ vault_monsters(yval + 1, xval - 4, randint1(4));\r
+ vault_monsters(yval + 1, xval + 4, randint1(4));\r
+ vault_monsters(yval - 1, xval - 4, randint1(4));\r
+ vault_monsters(yval - 1, xval + 4, randint1(4));\r
\r
- break;\r
- }\r
+ break;\r
+ }\r
}\r
\r
return TRUE;\r
bool emptyflag = TRUE;\r
\r
/* Make a random metric */\r
- int h1, h2, h3, h4;\r
+ POSITION h1, h2, h3, h4;\r
h1 = randint1(32) - 16;\r
h2 = randint1(16);\r
h3 = randint1(32);\r