OSDN Git Service

[Refactor] #37353 vault部屋生成処理を rooms.c から rooms-vault.c/h へ分離。
authorDeskull <deskull@users.sourceforge.jp>
Tue, 11 Sep 2018 13:05:05 +0000 (22:05 +0900)
committerDeskull <deskull@users.sourceforge.jp>
Tue, 11 Sep 2018 13:05:05 +0000 (22:05 +0900)
Separate generation vault rooms from rooms.c to rooms-vault.c/h.

Hengband_vcs2015/Hengband/Hengband.vcxproj
Hengband_vcs2015/Hengband/Hengband.vcxproj.filters
src/rooms-pitnest.c
src/rooms-vault.c [new file with mode: 0644]
src/rooms-vault.h [new file with mode: 0644]
src/rooms.c

index 6b62946..1916cc9 100644 (file)
     <ClCompile Include="..\..\src\readdib.c" />\r
     <ClCompile Include="..\..\src\report.c" />\r
     <ClCompile Include="..\..\src\rooms-normal.c" />\r
-    <ClCompile Include="..\..\src\rooms-pitnest.cpp" />\r
+    <ClCompile Include="..\..\src\rooms-pitnest.c" />\r
+    <ClCompile Include="..\..\src\rooms-vault.c" />\r
     <ClCompile Include="..\..\src\rooms.c" />\r
     <ClCompile Include="..\..\src\save.c" />\r
     <ClCompile Include="..\..\src\scores.c" />\r
     <ClInclude Include="..\..\src\readdib.h" />\r
     <ClInclude Include="..\..\src\rooms-normal.h" />\r
     <ClInclude Include="..\..\src\rooms-pitnest.h" />\r
+    <ClInclude Include="..\..\src\rooms-vault.h" />\r
     <ClInclude Include="..\..\src\rooms.h" />\r
     <ClInclude Include="..\..\src\selfinfo.h" />\r
     <ClInclude Include="..\..\src\spells-summon.h" />\r
index 7b1c832..5e1d249 100644 (file)
     <ClCompile Include="..\..\src\rooms-normal.c">\r
       <Filter>Source</Filter>\r
     </ClCompile>\r
-    <ClCompile Include="..\..\src\rooms-pitnest.cpp">\r
+    <ClCompile Include="..\..\src\rooms-pitnest.c">\r
+      <Filter>Source</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\..\src\rooms-vault.c">\r
       <Filter>Source</Filter>\r
     </ClCompile>\r
   </ItemGroup>\r
     <ClInclude Include="..\..\src\rooms-pitnest.h">\r
       <Filter>Header</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="..\..\src\rooms-vault.h">\r
+      <Filter>Header</Filter>\r
+    </ClInclude>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ResourceCompile Include="..\..\src\angband.rc" />\r
index 0a0b6f9..179cc71 100644 (file)
@@ -1,5 +1,6 @@
 #include "angband.h"\r
 #include "grid.h"\r
+#include "generate.h"\r
 #include "rooms.h"\r
 #include "rooms-pitnest.h"\r
 \r
diff --git a/src/rooms-vault.c b/src/rooms-vault.c
new file mode 100644 (file)
index 0000000..8a268c8
--- /dev/null
@@ -0,0 +1,484 @@
+#include "angband.h"\r
+#include "grid.h"\r
+#include "rooms.h"\r
+#include "generate.h"\r
+\r
+\r
+\r
+/*!\r
+* @brief Vault\92n\8c`\82ð\89ñ\93]\81A\8fã\89º\8d\89E\94½\93]\82·\82é\82½\82ß\82Ì\8dÀ\95W\95Ï\8a·\82ð\95Ô\82· / coordinate translation code\r
+* @param x \95Ï\8a·\82µ\82½\82¢\93_\82ÌX\8dÀ\95W\8eQ\8fÆ\83|\83C\83\93\83^\r
+* @param y \95Ï\8a·\82µ\82½\82¢\93_\82ÌY\8dÀ\95W\8eQ\8fÆ\83|\83C\83\93\83^\r
+* @param xoffset Vault\90\90¬\8e\9e\82Ì\8aî\8f\80X\8dÀ\95W\r
+* @param yoffset Vault\90\90¬\8e\9e\82Ì\8aî\8f\80Y\8dÀ\95W\r
+* @param transno \8f\88\97\9dID\r
+* @return \82È\82µ\r
+*/\r
+static void coord_trans(POSITION *x, POSITION *y, POSITION xoffset, POSITION yoffset, int transno)\r
+{\r
+       int i;\r
+       int temp;\r
+\r
+       /*\r
+       * transno specifies what transformation is required. (0-7)\r
+       * The lower two bits indicate by how much the vault is rotated,\r
+       * and the upper bit indicates a reflection.\r
+       * This is done by using rotation matrices... however since\r
+       * these are mostly zeros for rotations by 90 degrees this can\r
+       * be expressed simply in terms of swapping and inverting the\r
+       * x and y coordinates.\r
+       */\r
+       for (i = 0; i < transno % 4; i++)\r
+       {\r
+               /* rotate by 90 degrees */\r
+               temp = *x;\r
+               *x = -(*y);\r
+               *y = temp;\r
+       }\r
+\r
+       if (transno / 4)\r
+       {\r
+               /* Reflect depending on status of 3rd bit. */\r
+               *x = -(*x);\r
+       }\r
+\r
+       /* Add offsets so vault stays in the first quadrant */\r
+       *x += xoffset;\r
+       *y += yoffset;\r
+}\r
+\r
+\r
+/*!\r
+* @brief Vault\82ð\83t\83\8d\83A\82É\94z\92u\82·\82é / Hack -- fill in "vault" rooms\r
+* @param yval \90\90¬\8aî\8f\80Y\8dÀ\95W\r
+* @param xval \90\90¬\8aî\8f\80X\8dÀ\95W\r
+* @param ymax Vault\82ÌY\83T\83C\83Y\r
+* @param xmax Vault\82ÌX\83T\83C\83Y\r
+* @param data Vault\82Ì\83f\81[\83^\95\8e\9a\97ñ\r
+* @param xoffset \95Ï\8a·\8aî\8f\80X\8dÀ\95W\r
+* @param yoffset \95Ï\8a·\8aî\8f\80Y\8dÀ\95W\r
+* @param transno \95Ï\8a·ID\r
+* @return \82È\82µ\r
+*/\r
+static void build_vault(POSITION yval, POSITION xval, POSITION ymax, POSITION xmax, cptr data,\r
+       POSITION xoffset, POSITION yoffset, int transno)\r
+{\r
+       POSITION dx, dy, x, y, i, j;\r
+       cptr t;\r
+       cave_type *c_ptr;\r
+\r
+       /* Place dungeon features and objects */\r
+       for (t = data, dy = 0; dy < ymax; dy++)\r
+       {\r
+               for (dx = 0; dx < xmax; dx++, t++)\r
+               {\r
+                       /* prevent loop counter from being overwritten */\r
+                       i = dx;\r
+                       j = dy;\r
+\r
+                       /* Flip / rotate */\r
+                       coord_trans(&i, &j, xoffset, yoffset, transno);\r
+\r
+                       /* Extract the location */\r
+                       if (transno % 2 == 0)\r
+                       {\r
+                               /* no swap of x/y */\r
+                               x = xval - (xmax / 2) + i;\r
+                               y = yval - (ymax / 2) + j;\r
+                       }\r
+                       else\r
+                       {\r
+                               /* swap of x/y */\r
+                               x = xval - (ymax / 2) + i;\r
+                               y = yval - (xmax / 2) + j;\r
+                       }\r
+\r
+                       /* Hack -- skip "non-grids" */\r
+                       if (*t == ' ') continue;\r
+\r
+                       /* Access the grid */\r
+                       c_ptr = &cave[y][x];\r
+\r
+                       /* Lay down a floor */\r
+                       place_floor_grid(c_ptr);\r
+\r
+                       /* Remove any mimic */\r
+                       c_ptr->mimic = 0;\r
+\r
+                       /* Part of a vault */\r
+                       c_ptr->info |= (CAVE_ROOM | CAVE_ICKY);\r
+\r
+                       /* Analyze the grid */\r
+                       switch (*t)\r
+                       {\r
+                               /* Granite wall (outer) */\r
+                       case '%':\r
+                               place_outer_noperm_grid(c_ptr);\r
+                               break;\r
+\r
+                               /* Granite wall (inner) */\r
+                       case '#':\r
+                               place_inner_grid(c_ptr);\r
+                               break;\r
+\r
+                               /* Glass wall (inner) */\r
+                       case '$':\r
+                               place_inner_grid(c_ptr);\r
+                               c_ptr->feat = feat_glass_wall;\r
+                               break;\r
+\r
+                               /* Permanent wall (inner) */\r
+                       case 'X':\r
+                               place_inner_perm_grid(c_ptr);\r
+                               break;\r
+\r
+                               /* Permanent glass wall (inner) */\r
+                       case 'Y':\r
+                               place_inner_perm_grid(c_ptr);\r
+                               c_ptr->feat = feat_permanent_glass_wall;\r
+                               break;\r
+\r
+                               /* Treasure/trap */\r
+                       case '*':\r
+                               if (randint0(100) < 75)\r
+                               {\r
+                                       place_object(y, x, 0L);\r
+                               }\r
+                               else\r
+                               {\r
+                                       place_trap(y, x);\r
+                               }\r
+                               break;\r
+\r
+                               /* Secret doors */\r
+                       case '+':\r
+                               place_secret_door(y, x, DOOR_DEFAULT);\r
+                               break;\r
+\r
+                               /* Secret glass doors */\r
+                       case '-':\r
+                               place_secret_door(y, x, DOOR_GLASS_DOOR);\r
+                               if (is_closed_door(c_ptr->feat)) c_ptr->mimic = feat_glass_wall;\r
+                               break;\r
+\r
+                               /* Curtains */\r
+                       case '\'':\r
+                               place_secret_door(y, x, DOOR_CURTAIN);\r
+                               break;\r
+\r
+                               /* Trap */\r
+                       case '^':\r
+                               place_trap(y, x);\r
+                               break;\r
+\r
+                               /* Black market in a dungeon */\r
+                       case 'S':\r
+                               set_cave_feat(y, x, feat_black_market);\r
+                               store_init(NO_TOWN, STORE_BLACK);\r
+                               break;\r
+\r
+                               /* The Pattern */\r
+                       case 'p':\r
+                               set_cave_feat(y, x, feat_pattern_start);\r
+                               break;\r
+\r
+                       case 'a':\r
+                               set_cave_feat(y, x, feat_pattern_1);\r
+                               break;\r
+\r
+                       case 'b':\r
+                               set_cave_feat(y, x, feat_pattern_2);\r
+                               break;\r
+\r
+                       case 'c':\r
+                               set_cave_feat(y, x, feat_pattern_3);\r
+                               break;\r
+\r
+                       case 'd':\r
+                               set_cave_feat(y, x, feat_pattern_4);\r
+                               break;\r
+\r
+                       case 'P':\r
+                               set_cave_feat(y, x, feat_pattern_end);\r
+                               break;\r
+\r
+                       case 'B':\r
+                               set_cave_feat(y, x, feat_pattern_exit);\r
+                               break;\r
+\r
+                       case 'A':\r
+                               /* Reward for Pattern walk */\r
+                               object_level = base_level + 12;\r
+                               place_object(y, x, AM_GOOD | AM_GREAT);\r
+                               object_level = base_level;\r
+                               break;\r
+                       }\r
+               }\r
+       }\r
+\r
+\r
+       /* Place dungeon monsters and objects */\r
+       for (t = data, dy = 0; dy < ymax; dy++)\r
+       {\r
+               for (dx = 0; dx < xmax; dx++, t++)\r
+               {\r
+                       /* prevent loop counter from being overwritten */\r
+                       i = dx;\r
+                       j = dy;\r
+\r
+                       /* Flip / rotate */\r
+                       coord_trans(&i, &j, xoffset, yoffset, transno);\r
+\r
+                       /* Extract the location */\r
+                       if (transno % 2 == 0)\r
+                       {\r
+                               /* no swap of x/y */\r
+                               x = xval - (xmax / 2) + i;\r
+                               y = yval - (ymax / 2) + j;\r
+                       }\r
+                       else\r
+                       {\r
+                               /* swap of x/y */\r
+                               x = xval - (ymax / 2) + i;\r
+                               y = yval - (xmax / 2) + j;\r
+                       }\r
+\r
+                       /* Hack -- skip "non-grids" */\r
+                       if (*t == ' ') continue;\r
+\r
+                       /* Analyze the symbol */\r
+                       switch (*t)\r
+                       {\r
+                               /* Monster */\r
+                       case '&':\r
+                       {\r
+                               monster_level = base_level + 5;\r
+                               place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP));\r
+                               monster_level = base_level;\r
+                               break;\r
+                       }\r
+\r
+                       /* Meaner monster */\r
+                       case '@':\r
+                       {\r
+                               monster_level = base_level + 11;\r
+                               place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP));\r
+                               monster_level = base_level;\r
+                               break;\r
+                       }\r
+\r
+                       /* Meaner monster, plus treasure */\r
+                       case '9':\r
+                       {\r
+                               monster_level = base_level + 9;\r
+                               place_monster(y, x, PM_ALLOW_SLEEP);\r
+                               monster_level = base_level;\r
+                               object_level = base_level + 7;\r
+                               place_object(y, x, AM_GOOD);\r
+                               object_level = base_level;\r
+                               break;\r
+                       }\r
+\r
+                       /* Nasty monster and treasure */\r
+                       case '8':\r
+                       {\r
+                               monster_level = base_level + 40;\r
+                               place_monster(y, x, PM_ALLOW_SLEEP);\r
+                               monster_level = base_level;\r
+                               object_level = base_level + 20;\r
+                               place_object(y, x, AM_GOOD | AM_GREAT);\r
+                               object_level = base_level;\r
+                               break;\r
+                       }\r
+\r
+                       /* Monster and/or object */\r
+                       case ',':\r
+                       {\r
+                               if (randint0(100) < 50)\r
+                               {\r
+                                       monster_level = base_level + 3;\r
+                                       place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP));\r
+                                       monster_level = base_level;\r
+                               }\r
+                               if (randint0(100) < 50)\r
+                               {\r
+                                       object_level = base_level + 7;\r
+                                       place_object(y, x, 0L);\r
+                                       object_level = base_level;\r
+                               }\r
+                               break;\r
+                       }\r
+\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+\r
+\r
+/*!\r
+* @brief \83^\83C\83v7\82Ì\95\94\89®\81cv_info.txt\82æ\82è\8f¬\8c^vault\82ð\90\90¬\82·\82é / Type 7 -- simple vaults (see "v_info.txt")\r
+* @return \82È\82µ\r
+*/\r
+bool build_type7(void)\r
+{\r
+       vault_type *v_ptr = NULL;\r
+       int dummy;\r
+       POSITION x, y;\r
+       POSITION xval, yval;\r
+       POSITION xoffset, yoffset;\r
+       int transno;\r
+\r
+       /* Pick a lesser vault */\r
+       for (dummy = 0; dummy < SAFE_MAX_ATTEMPTS; dummy++)\r
+       {\r
+               /* Access a random vault record */\r
+               v_ptr = &v_info[randint0(max_v_idx)];\r
+\r
+               /* Accept the first lesser vault */\r
+               if (v_ptr->typ == 7) break;\r
+       }\r
+\r
+       /* No lesser vault found */\r
+       if (dummy >= SAFE_MAX_ATTEMPTS)\r
+       {\r
+               msg_print_wizard(CHEAT_DUNGEON, _("\8f¬\8c^\8cÅ\92èVault\82ð\94z\92u\82Å\82«\82Ü\82¹\82ñ\82Å\82µ\82½\81B", "Could not place lesser vault."));\r
+               return FALSE;\r
+       }\r
+\r
+       /* pick type of transformation (0-7) */\r
+       transno = randint0(8);\r
+\r
+       /* calculate offsets */\r
+       x = v_ptr->wid;\r
+       y = v_ptr->hgt;\r
+\r
+       /* Some huge vault cannot be ratated to fit in the dungeon */\r
+       if (x + 2 > cur_hgt - 2)\r
+       {\r
+               /* Forbid 90 or 270 degree ratation */\r
+               transno &= ~1;\r
+       }\r
+\r
+       coord_trans(&x, &y, 0, 0, transno);\r
+\r
+       if (x < 0)\r
+       {\r
+               xoffset = -x - 1;\r
+       }\r
+       else\r
+       {\r
+               xoffset = 0;\r
+       }\r
+\r
+       if (y < 0)\r
+       {\r
+               yoffset = -y - 1;\r
+       }\r
+       else\r
+       {\r
+               yoffset = 0;\r
+       }\r
+\r
+       /* Find and reserve some space in the dungeon.  Get center of room. */\r
+       if (!find_space(&yval, &xval, abs(y), abs(x))) return FALSE;\r
+\r
+#ifdef FORCE_V_IDX\r
+       v_ptr = &v_info[2];\r
+#endif\r
+\r
+       /* Message */\r
+       msg_format_wizard(CHEAT_DUNGEON, _("\8f¬\8c^Vault(%s)\82ð\90\90¬\82µ\82Ü\82µ\82½\81B", "Lesser vault (%s)."), v_name + v_ptr->name);\r
+\r
+       /* Hack -- Build the vault */\r
+       build_vault(yval, xval, v_ptr->hgt, v_ptr->wid,\r
+               v_text + v_ptr->text, xoffset, yoffset, transno);\r
+\r
+       return TRUE;\r
+}\r
+\r
+/*!\r
+* @brief \83^\83C\83v8\82Ì\95\94\89®\81cv_info.txt\82æ\82è\91å\8c^vault\82ð\90\90¬\82·\82é / Type 8 -- greater vaults (see "v_info.txt")\r
+* @return \82È\82µ\r
+*/\r
+bool build_type8(void)\r
+{\r
+       vault_type *v_ptr;\r
+       int dummy;\r
+       POSITION xval, yval;\r
+       POSITION x, y;\r
+       int transno;\r
+       int xoffset, yoffset;\r
+\r
+       /* Pick a greater vault */\r
+       for (dummy = 0; dummy < SAFE_MAX_ATTEMPTS; dummy++)\r
+       {\r
+               /* Access a random vault record */\r
+               v_ptr = &v_info[randint0(max_v_idx)];\r
+\r
+               /* Accept the first greater vault */\r
+               if (v_ptr->typ == 8) break;\r
+       }\r
+\r
+       /* No greater vault found */\r
+       if (dummy >= SAFE_MAX_ATTEMPTS)\r
+       {\r
+               msg_print_wizard(CHEAT_DUNGEON, _("\91å\8c^\8cÅ\92èVault\82ð\94z\92u\82Å\82«\82Ü\82¹\82ñ\82Å\82µ\82½\81B", "Could not place greater vault."));\r
+               return FALSE;\r
+       }\r
+\r
+       /* pick type of transformation (0-7) */\r
+       transno = randint0(8);\r
+\r
+       /* calculate offsets */\r
+       x = v_ptr->wid;\r
+       y = v_ptr->hgt;\r
+\r
+       /* Some huge vault cannot be ratated to fit in the dungeon */\r
+       if (x + 2 > cur_hgt - 2)\r
+       {\r
+               /* Forbid 90 or 270 degree ratation */\r
+               transno &= ~1;\r
+       }\r
+\r
+       coord_trans(&x, &y, 0, 0, transno);\r
+\r
+       if (x < 0)\r
+       {\r
+               xoffset = -x - 1;\r
+       }\r
+       else\r
+       {\r
+               xoffset = 0;\r
+       }\r
+\r
+       if (y < 0)\r
+       {\r
+               yoffset = -y - 1;\r
+       }\r
+       else\r
+       {\r
+               yoffset = 0;\r
+       }\r
+\r
+       /*\r
+       * Try to allocate space for room.  If fails, exit\r
+       *\r
+       * Hack -- Prepare a bit larger space (+2, +2) to\r
+       * prevent generation of vaults with no-entrance.\r
+       */\r
+       /* Find and reserve some space in the dungeon.  Get center of room. */\r
+       if (!find_space(&yval, &xval, (POSITION)(abs(y) + 2), (POSITION)(abs(x) + 2))) return FALSE;\r
+\r
+#ifdef FORCE_V_IDX\r
+       v_ptr = &v_info[76 + randint1(3)];\r
+#endif\r
+\r
+       msg_format_wizard(CHEAT_DUNGEON, _("\91å\8c^\8cÅ\92èVault(%s)\82ð\90\90¬\82µ\82Ü\82µ\82½\81B", "Greater vault (%s)."), v_name + v_ptr->name);\r
+\r
+       /* Hack -- Build the vault */\r
+       build_vault(yval, xval, v_ptr->hgt, v_ptr->wid,\r
+               v_text + v_ptr->text, xoffset, yoffset, transno);\r
+\r
+       return TRUE;\r
+}\r
diff --git a/src/rooms-vault.h b/src/rooms-vault.h
new file mode 100644 (file)
index 0000000..b935531
--- /dev/null
@@ -0,0 +1,3 @@
+extern bool build_type7(void);\r
+extern bool build_type8(void);\r
+\r
index 42fa0de..cb11eb7 100644 (file)
@@ -43,6 +43,7 @@
 
 #include "rooms-normal.h"
 #include "rooms-pitnest.h"
+#include "rooms-vault.h"
 
 
 /*!
@@ -522,481 +523,6 @@ bool find_space(POSITION *y, POSITION *x, POSITION height, POSITION width)
 
 
 
-/*!
- * @brief Vault地形を回転、上下左右反転するための座標変換を返す / coordinate translation code
- * @param x 変換したい点のX座標参照ポインタ
- * @param y 変換したい点のY座標参照ポインタ
- * @param xoffset Vault生成時の基準X座標
- * @param yoffset Vault生成時の基準Y座標
- * @param transno 処理ID
- * @return なし
- */
-static void coord_trans(POSITION *x, POSITION *y, POSITION xoffset, POSITION yoffset, int transno)
-{
-       int i;
-       int temp;
-
-       /*
-        * transno specifies what transformation is required. (0-7)
-        * The lower two bits indicate by how much the vault is rotated,
-        * and the upper bit indicates a reflection.
-        * This is done by using rotation matrices... however since
-        * these are mostly zeros for rotations by 90 degrees this can
-        * be expressed simply in terms of swapping and inverting the
-        * x and y coordinates.
-        */
-       for (i = 0; i < transno % 4; i++)
-       {
-               /* rotate by 90 degrees */
-               temp = *x;
-               *x = -(*y);
-               *y = temp;
-       }
-
-       if (transno / 4)
-       {
-               /* Reflect depending on status of 3rd bit. */
-               *x = -(*x);
-       }
-
-       /* Add offsets so vault stays in the first quadrant */
-       *x += xoffset;
-       *y += yoffset;
-}
-
-/*!
- * @brief Vaultをフロアに配置する / Hack -- fill in "vault" rooms
- * @param yval 生成基準Y座標
- * @param xval 生成基準X座標
- * @param ymax VaultのYサイズ
- * @param xmax VaultのXサイズ
- * @param data Vaultのデータ文字列
- * @param xoffset 変換基準X座標
- * @param yoffset 変換基準Y座標
- * @param transno 変換ID
- * @return なし
- */
-static void build_vault(POSITION yval, POSITION xval, POSITION ymax, POSITION xmax, cptr data,
-               POSITION xoffset, POSITION yoffset, int transno)
-{
-       POSITION dx, dy, x, y, i, j;
-       cptr t;
-       cave_type *c_ptr;
-
-       /* Place dungeon features and objects */
-       for (t = data, dy = 0; dy < ymax; dy++)
-       {
-               for (dx = 0; dx < xmax; dx++, t++)
-               {
-                       /* prevent loop counter from being overwritten */
-                       i = dx;
-                       j = dy;
-
-                       /* Flip / rotate */
-                       coord_trans(&i, &j, xoffset, yoffset, transno);
-
-                       /* Extract the location */
-                       if (transno % 2 == 0)
-                       {
-                               /* no swap of x/y */
-                               x = xval - (xmax / 2) + i;
-                               y = yval - (ymax / 2) + j;
-                       }
-                       else
-                       {
-                               /* swap of x/y */
-                               x = xval - (ymax / 2) + i;
-                               y = yval - (xmax / 2) + j;
-                       }
-
-                       /* Hack -- skip "non-grids" */
-                       if (*t == ' ') continue;
-
-                       /* Access the grid */
-                       c_ptr = &cave[y][x];
-
-                       /* Lay down a floor */
-                       place_floor_grid(c_ptr);
-
-                       /* Remove any mimic */
-                       c_ptr->mimic = 0;
-
-                       /* Part of a vault */
-                       c_ptr->info |= (CAVE_ROOM | CAVE_ICKY);
-
-                       /* Analyze the grid */
-                       switch (*t)
-                       {
-                               /* Granite wall (outer) */
-                       case '%':
-                               place_outer_noperm_grid(c_ptr);
-                               break;
-
-                               /* Granite wall (inner) */
-                       case '#':
-                               place_inner_grid(c_ptr);
-                               break;
-
-                               /* Glass wall (inner) */
-                       case '$':
-                               place_inner_grid(c_ptr);
-                               c_ptr->feat = feat_glass_wall;
-                               break;
-
-                               /* Permanent wall (inner) */
-                       case 'X':
-                               place_inner_perm_grid(c_ptr);
-                               break;
-
-                               /* Permanent glass wall (inner) */
-                       case 'Y':
-                               place_inner_perm_grid(c_ptr);
-                               c_ptr->feat = feat_permanent_glass_wall;
-                               break;
-
-                               /* Treasure/trap */
-                       case '*':
-                               if (randint0(100) < 75)
-                               {
-                                       place_object(y, x, 0L);
-                               }
-                               else
-                               {
-                                       place_trap(y, x);
-                               }
-                               break;
-
-                               /* Secret doors */
-                       case '+':
-                               place_secret_door(y, x, DOOR_DEFAULT);
-                               break;
-
-                               /* Secret glass doors */
-                       case '-':
-                               place_secret_door(y, x, DOOR_GLASS_DOOR);
-                               if (is_closed_door(c_ptr->feat)) c_ptr->mimic = feat_glass_wall;
-                               break;
-
-                               /* Curtains */
-                       case '\'':
-                               place_secret_door(y, x, DOOR_CURTAIN);
-                               break;
-
-                               /* Trap */
-                       case '^':
-                               place_trap(y, x);
-                               break;
-
-                               /* Black market in a dungeon */
-                       case 'S':
-                               set_cave_feat(y, x, feat_black_market);
-                               store_init(NO_TOWN, STORE_BLACK);
-                               break;
-
-                               /* The Pattern */
-                       case 'p':
-                               set_cave_feat(y, x, feat_pattern_start);
-                               break;
-
-                       case 'a':
-                               set_cave_feat(y, x, feat_pattern_1);
-                               break;
-
-                       case 'b':
-                               set_cave_feat(y, x, feat_pattern_2);
-                               break;
-
-                       case 'c':
-                               set_cave_feat(y, x, feat_pattern_3);
-                               break;
-
-                       case 'd':
-                               set_cave_feat(y, x, feat_pattern_4);
-                               break;
-
-                       case 'P':
-                               set_cave_feat(y, x, feat_pattern_end);
-                               break;
-
-                       case 'B':
-                               set_cave_feat(y, x, feat_pattern_exit);
-                               break;
-
-                       case 'A':
-                               /* Reward for Pattern walk */
-                               object_level = base_level + 12;
-                               place_object(y, x, AM_GOOD | AM_GREAT);
-                               object_level = base_level;
-                               break;
-                       }
-               }
-       }
-
-
-       /* Place dungeon monsters and objects */
-       for (t = data, dy = 0; dy < ymax; dy++)
-       {
-               for (dx = 0; dx < xmax; dx++, t++)
-               {
-                       /* prevent loop counter from being overwritten */
-                       i = dx;
-                       j = dy;
-
-                       /* Flip / rotate */
-                       coord_trans(&i, &j, xoffset, yoffset, transno);
-
-                       /* Extract the location */
-                       if (transno % 2 == 0)
-                       {
-                               /* no swap of x/y */
-                               x = xval - (xmax / 2) + i;
-                               y = yval - (ymax / 2) + j;
-                       }
-                       else
-                       {
-                               /* swap of x/y */
-                               x = xval - (ymax / 2) + i;
-                               y = yval - (xmax / 2) + j;
-                       }
-
-                       /* Hack -- skip "non-grids" */
-                       if (*t == ' ') continue;
-
-                       /* Analyze the symbol */
-                       switch (*t)
-                       {
-                               /* Monster */
-                               case '&':
-                               {
-                                       monster_level = base_level + 5;
-                                       place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP));
-                                       monster_level = base_level;
-                                       break;
-                               }
-
-                               /* Meaner monster */
-                               case '@':
-                               {
-                                       monster_level = base_level + 11;
-                                       place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP));
-                                       monster_level = base_level;
-                                       break;
-                               }
-
-                               /* Meaner monster, plus treasure */
-                               case '9':
-                               {
-                                       monster_level = base_level + 9;
-                                       place_monster(y, x, PM_ALLOW_SLEEP);
-                                       monster_level = base_level;
-                                       object_level = base_level + 7;
-                                       place_object(y, x, AM_GOOD);
-                                       object_level = base_level;
-                                       break;
-                               }
-
-                               /* Nasty monster and treasure */
-                               case '8':
-                               {
-                                       monster_level = base_level + 40;
-                                       place_monster(y, x, PM_ALLOW_SLEEP);
-                                       monster_level = base_level;
-                                       object_level = base_level + 20;
-                                       place_object(y, x, AM_GOOD | AM_GREAT);
-                                       object_level = base_level;
-                                       break;
-                               }
-
-                               /* Monster and/or object */
-                               case ',':
-                               {
-                                       if (randint0(100) < 50)
-                                       {
-                                               monster_level = base_level + 3;
-                                               place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP));
-                                               monster_level = base_level;
-                                       }
-                                       if (randint0(100) < 50)
-                                       {
-                                               object_level = base_level + 7;
-                                               place_object(y, x, 0L);
-                                               object_level = base_level;
-                                       }
-                                       break;
-                               }
-
-                       }
-               }
-       }
-}
-
-
-/*!
- * @brief タイプ7の部屋…v_info.txtより小型vaultを生成する / Type 7 -- simple vaults (see "v_info.txt")
- * @return なし
- */
-static bool build_type7(void)
-{
-       vault_type *v_ptr = NULL;
-       int dummy;
-       POSITION x, y;
-       POSITION xval, yval;
-       POSITION xoffset, yoffset;
-       int transno;
-
-       /* Pick a lesser vault */
-       for (dummy = 0; dummy < SAFE_MAX_ATTEMPTS; dummy++)
-       {
-               /* Access a random vault record */
-               v_ptr = &v_info[randint0(max_v_idx)];
-
-               /* Accept the first lesser vault */
-               if (v_ptr->typ == 7) break;
-       }
-
-       /* No lesser vault found */
-       if (dummy >= SAFE_MAX_ATTEMPTS)
-       {
-               msg_print_wizard(CHEAT_DUNGEON, _("小型固定Vaultを配置できませんでした。", "Could not place lesser vault."));
-               return FALSE;
-       }
-
-       /* pick type of transformation (0-7) */
-       transno = randint0(8);
-
-       /* calculate offsets */
-       x = v_ptr->wid;
-       y = v_ptr->hgt;
-
-       /* Some huge vault cannot be ratated to fit in the dungeon */
-       if (x+2 > cur_hgt-2)
-       {
-               /* Forbid 90 or 270 degree ratation */
-               transno &= ~1;
-       }
-
-       coord_trans(&x, &y, 0, 0, transno);
-
-       if (x < 0)
-       {
-               xoffset = -x - 1;
-       }
-       else
-       {
-               xoffset = 0;
-       }
-
-       if (y < 0)
-       {
-               yoffset = -y - 1;
-       }
-       else
-       {
-               yoffset = 0;
-       }
-
-       /* Find and reserve some space in the dungeon.  Get center of room. */
-       if (!find_space(&yval, &xval, abs(y), abs(x))) return FALSE;
-
-#ifdef FORCE_V_IDX
-       v_ptr = &v_info[2];
-#endif
-
-       /* Message */
-       msg_format_wizard(CHEAT_DUNGEON, _("小型Vault(%s)を生成しました。", "Lesser vault (%s)."), v_name + v_ptr->name);
-
-       /* Hack -- Build the vault */
-       build_vault(yval, xval, v_ptr->hgt, v_ptr->wid,
-                   v_text + v_ptr->text, xoffset, yoffset, transno);
-
-       return TRUE;
-}
-
-/*!
- * @brief タイプ8の部屋…v_info.txtより大型vaultを生成する / Type 8 -- greater vaults (see "v_info.txt")
- * @return なし
- */
-static bool build_type8(void)
-{
-       vault_type *v_ptr;
-       int dummy;
-       POSITION xval, yval;
-       POSITION x, y;
-       int transno;
-       int xoffset, yoffset;
-
-       /* Pick a greater vault */
-       for (dummy = 0; dummy < SAFE_MAX_ATTEMPTS; dummy++)
-       {
-               /* Access a random vault record */
-               v_ptr = &v_info[randint0(max_v_idx)];
-
-               /* Accept the first greater vault */
-               if (v_ptr->typ == 8) break;
-       }
-
-       /* No greater vault found */
-       if (dummy >= SAFE_MAX_ATTEMPTS)
-       {
-               msg_print_wizard(CHEAT_DUNGEON, _("大型固定Vaultを配置できませんでした。", "Could not place greater vault."));
-               return FALSE;
-       }
-
-       /* pick type of transformation (0-7) */
-       transno = randint0(8);
-
-       /* calculate offsets */
-       x = v_ptr->wid;
-       y = v_ptr->hgt;
-
-       /* Some huge vault cannot be ratated to fit in the dungeon */
-       if (x+2 > cur_hgt-2)
-       {
-               /* Forbid 90 or 270 degree ratation */
-               transno &= ~1;
-       }
-
-       coord_trans(&x, &y, 0, 0, transno);
-
-       if (x < 0)
-       {
-               xoffset = - x - 1;
-       }
-       else
-       {
-               xoffset = 0;
-       }
-
-       if (y < 0)
-       {
-               yoffset = - y - 1;
-       }
-       else
-       {
-               yoffset = 0;
-       }
-
-       /*
-        * Try to allocate space for room.  If fails, exit
-        *
-        * Hack -- Prepare a bit larger space (+2, +2) to 
-        * prevent generation of vaults with no-entrance.
-        */
-       /* Find and reserve some space in the dungeon.  Get center of room. */
-       if (!find_space(&yval, &xval, (POSITION)(abs(y) + 2), (POSITION)(abs(x) + 2))) return FALSE;
-
-#ifdef FORCE_V_IDX
-       v_ptr = &v_info[76 + randint1(3)];
-#endif
-
-       msg_format_wizard(CHEAT_DUNGEON, _("大型固定Vault(%s)を生成しました。", "Greater vault (%s)."), v_name + v_ptr->name);
-
-       /* Hack -- Build the vault */
-       build_vault(yval, xval, v_ptr->hgt, v_ptr->wid,
-                   v_text + v_ptr->text, xoffset, yoffset, transno);
-
-       return TRUE;
-}
 
 /*
  * Structure to hold all "fill" data