#include "angband.h"\r
+#include "generate.h"\r
#include "grid.h"\r
#include "rooms.h"\r
-#include "generate.h"\r
+#include "store.h"\r
#include "trap.h"\r
+#include "monster.h"\r
\r
/*\r
* This function creates a random vault that looks like a collection of bubbles.\r
* Note: If two centers are on the same point then this algorithm will create a\r
* blank bubble filled with walls. - This is prevented from happening.\r
*/\r
-static void build_bubble_vault(int x0, int y0, int xsize, int ysize)\r
+static void build_bubble_vault(POSITION x0, POSITION y0, POSITION xsize, POSITION ysize)\r
{\r
#define BUBBLENUM 10 /* number of bubbles */\r
\r
/* array of center points of bubbles */\r
coord center[BUBBLENUM];\r
\r
- int i, j, x, y;\r
+ int i, j;\r
+ POSITION x = 0, y = 0;\r
u16b min1, min2, temp;\r
bool done;\r
\r
/* Offset from center to top left hand corner */\r
- int xhsize = xsize / 2;\r
- int yhsize = ysize / 2;\r
+ POSITION xhsize = xsize / 2;\r
+ POSITION yhsize = ysize / 2;\r
\r
msg_print_wizard(CHEAT_DUNGEON, _("泡型ランダムVaultを生成しました。", "Room Vault."));\r
\r
}\r
}\r
\r
- center[i].x = (byte_hack)x;\r
- center[i].y = (byte_hack)y;\r
+ center[i].x = x;\r
+ center[i].y = y;\r
}\r
\r
\r
{\r
/* Get distances to two closest centers */\r
\r
- /* initialize */\r
min1 = (u16b)distance(x, y, center[0].x, center[0].y);\r
min2 = (u16b)distance(x, y, center[1].x, center[1].y);\r
\r
}\r
\r
/* Create a random vault that looks like a collection of overlapping rooms */\r
-static void build_room_vault(int x0, int y0, int xsize, int ysize)\r
+static void build_room_vault(POSITION x0, POSITION y0, POSITION xsize, POSITION ysize)\r
{\r
- int i, x1, x2, y1, y2, xhsize, yhsize;\r
+ POSITION x1, x2, y1, y2, xhsize, yhsize;\r
+ int i;\r
\r
/* get offset from center */\r
xhsize = xsize / 2;\r
/* fill area so don't get problems with arena levels */\r
for (x1 = 0; x1 < xsize; x1++)\r
{\r
- int x = x0 - xhsize + x1;\r
+ POSITION x = x0 - xhsize + x1;\r
\r
for (y1 = 0; y1 < ysize; y1++)\r
{\r
- int y = y0 - yhsize + y1;\r
+ POSITION y = y0 - yhsize + y1;\r
\r
place_extra_bold(y, x);\r
cave[y][x].info &= (~CAVE_ICKY);\r
\r
\r
/* Create a random vault out of a fractal cave */\r
-static void build_cave_vault(int x0, int y0, int xsiz, int ysiz)\r
+static void build_cave_vault(POSITION x0, POSITION y0, POSITION xsiz, POSITION ysiz)\r
{\r
- int grd, roug, cutoff, xhsize, yhsize, xsize, ysize, x, y;\r
+ int grd, roug, cutoff;\r
bool done, light, room;\r
+ POSITION xhsize, yhsize, xsize, ysize, x, y;\r
\r
/* round to make sizes even */\r
xhsize = xsiz / 2;\r
* @param transno 変換ID\r
* @return なし\r
*/\r
-static void build_vault(POSITION yval, POSITION xval, POSITION ymax, POSITION xmax, cptr data,\r
+static void build_vault(POSITION yval, POSITION xval, POSITION ymax, POSITION xmax, concptr data,\r
POSITION xoffset, POSITION yoffset, int transno)\r
{\r
POSITION dx, dy, x, y, i, j;\r
- cptr t;\r
+ concptr t;\r
cave_type *c_ptr;\r
\r
/* Place dungeon features and objects */\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
}\r
break;\r
\r
+ /* Treasure */\r
+ case '[':\r
+ place_object(y, x, 0L);\r
+ break;\r
+\r
+ /* Tree */\r
+ case ':':\r
+ c_ptr->feat = feat_tree;\r
+ break;\r
+\r
/* Secret doors */\r
case '+':\r
place_secret_door(y, x, DOOR_DEFAULT);\r
set_cave_feat(y, x, feat_deep_lava);\r
break;\r
\r
+ case 'f':\r
+ set_cave_feat(y, x, feat_shallow_acid_puddle);\r
+ break;\r
+\r
+ case 'F':\r
+ set_cave_feat(y, x, feat_deep_acid_puddle);\r
+ break;\r
+\r
+ case 'g':\r
+ set_cave_feat(y, x, feat_shallow_poisonous_puddle);\r
+ break;\r
+\r
+ case 'G':\r
+ set_cave_feat(y, x, feat_deep_poisonous_puddle);\r
+ break;\r
+\r
+ case 'h':\r
+ set_cave_feat(y, x, feat_cold_zone);\r
+ break;\r
+\r
+ case 'H':\r
+ set_cave_feat(y, x, feat_heavy_cold_zone);\r
+ break;\r
+\r
+ case 'i':\r
+ set_cave_feat(y, x, feat_electrical_zone);\r
+ break;\r
+\r
+ case 'I':\r
+ set_cave_feat(y, x, feat_heavy_electrical_zone);\r
+ break;\r
+\r
}\r
}\r
}\r
v_ptr = &v_info[2];\r
#endif\r
\r
- /* Message */\r
msg_format_wizard(CHEAT_DUNGEON, _("小型Vault(%s)を生成しました。", "Lesser vault (%s)."), v_name + v_ptr->name);\r
\r
/* Hack -- Build the vault */\r
POSITION xval, yval;\r
POSITION x, y;\r
int transno;\r
- int xoffset, yoffset;\r
+ POSITION xoffset, yoffset;\r
\r
/* Pick a greater vault */\r
for (dummy = 0; dummy < SAFE_MAX_ATTEMPTS; dummy++)\r
* This is made by two concentric "crypts" with perpendicular\r
* walls creating the cross-hairs.\r
*/\r
-static void build_target_vault(int x0, int y0, int xsize, int ysize)\r
+static void build_target_vault(POSITION x0, POSITION y0, POSITION xsize, POSITION ysize)\r
{\r
- int rad, x, y;\r
+ POSITION rad, x, y;\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
*\r
* Miniture rooms are then scattered across the vault.\r
*/\r
-static void build_elemental_vault(int x0, int y0, int xsiz, int ysiz)\r
+static void build_elemental_vault(POSITION x0, POSITION y0, POSITION xsiz, POSITION ysiz)\r
{\r
int grd, roug;\r
int c1, c2, c3;\r
bool done = FALSE;\r
- int xsize, ysize, xhsize, yhsize, x, y, i;\r
+ POSITION xsize, ysize, xhsize, yhsize, x, y;\r
+ int i;\r
int type;\r
\r
msg_print_wizard(CHEAT_DUNGEON, _("精霊界ランダムVaultを生成しました。", "Elemental Vault"));\r
* The vault has two entrances on opposite sides to guarantee\r
* a way to get in even if the vault abuts a side of the dungeon.\r
*/\r
-static void build_mini_c_vault(int x0, int y0, int xsize, int ysize)\r
+static void build_mini_c_vault(POSITION x0, POSITION y0, POSITION xsize, POSITION ysize)\r
{\r
- int dy, dx;\r
- int y1, x1, y2, x2, y, x, total;\r
+ POSITION dy, dx;\r
+ POSITION y1, x1, y2, x2, y, x, total;\r
int m, n, num_vertices;\r
int *visited;\r
\r
*\r
*This makes a vault that looks like a castle/ city in the dungeon.\r
*/\r
-static void build_castle_vault(int x0, int y0, int xsize, int ysize)\r
+static void build_castle_vault(POSITION x0, POSITION y0, POSITION xsize, POSITION ysize)\r
{\r
- int dy, dx;\r
- int y1, x1, y2, x2;\r
- int y, x;\r
+ POSITION dy, dx;\r
+ POSITION y1, x1, y2, x2;\r
+ POSITION y, x;\r
\r
/* Pick a random room size */\r
dy = ysize / 2 - 1;\r
{\r
POSITION y0, x0, xsize, ysize, vtype;\r
\r
- /* Get size */\r
/* big enough to look good, small enough to be fairly common. */\r
xsize = randint1(22) + 22;\r
ysize = randint1(11) + 11;\r
\r
\r
/*!\r
-* @brief タイプ16の部屋…v_info.txtより固定特殊部屋を生成する / Type 16 -- fixed special room (see "v_info.txt")\r
+* @brief タイプ17の部屋…v_info.txtより固定特殊部屋を生成する / Type 17 -- fixed special room (see "v_info.txt")\r
* @return なし\r
*/\r
bool build_type17(void)\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 == 16) break;\r
+ /* Accept the special fix room. */\r
+ if (v_ptr->typ == 17) break;\r
}\r
\r
/* No lesser vault found */\r
v_ptr = &v_info[2];\r
#endif\r
\r
- /* Message */\r
msg_format_wizard(CHEAT_DUNGEON, _("特殊固定部屋(%s)を生成しました。", "Special Fix room (%s)."), v_name + v_ptr->name);\r
\r
/* Hack -- Build the vault */\r