OSDN Git Service

[Refactor] #37353 コメント整理 / Refactor comments.
[hengband/hengband.git] / src / cave.c
index 88d7730..6334dad 100644 (file)
@@ -31,18 +31,18 @@ static int feat_priority; /*!< マップ縮小表示時に表示すべき地形
  * @param x2 2点目のx座標
  * @return 2点間の距離
  */
-int distance (int y1, int x1, int y2, int x2)
+POSITION distance (POSITION y1, POSITION x1, POSITION y2, POSITION x2)
 {
-       int dy = (y1 > y2) ? (y1 - y2) : (y2 - y1);
-       int dx = (x1 > x2) ? (x1 - x2) : (x2 - x1);
+       POSITION dy = (y1 > y2) ? (y1 - y2) : (y2 - y1);
+       POSITION dx = (x1 > x2) ? (x1 - x2) : (x2 - x1);
 
        /* Squared distance */
-       int target = (dy * dy) + (dx * dx);
+       POSITION target = (dy * dy) + (dx * dx);
 
        /* Approximate distance: hypot(dy,dx) = max(dy,dx) + min(dy,dx) / 2 */
-       int d = (dy > dx) ? (dy + (dx>>1)) : (dx + (dy>>1));
+       POSITION d = (dy > dx) ? (dy + (dx>>1)) : (dx + (dy>>1));
 
-       int err;
+       POSITION err;
 
        /* Simple case */
        if (!dy || !dx) return d;
@@ -67,7 +67,7 @@ int distance (int y1, int x1, int y2, int x2)
  * @param feat 地形情報のID
  * @return 罠持ちの地形ならばTRUEを返す。
  */
-bool is_trap(int feat)
+bool is_trap(IDX feat)
 {
        return have_flag(f_info[feat].flags, FF_TRAP);
 }
@@ -90,7 +90,7 @@ bool is_known_trap(cave_type *c_ptr)
  * @param feat 地形情報のID
  * @return 閉じたドアのある地形ならばTRUEを返す。
  */
-bool is_closed_door(int feat)
+bool is_closed_door(IDX feat)
 {
        feature_type *f_ptr = &f_info[feat];
 
@@ -154,10 +154,10 @@ bool is_hidden_door(cave_type *c_ptr)
  *\n
  * Use the "update_view()" function to determine player line-of-sight.\n
  */
-bool los(int y1, int x1, int y2, int x2)
+bool los(POSITION y1, POSITION x1, POSITION y2, POSITION x2)
 {
        /* Delta */
-       int dx, dy;
+       POSITION dx, dy;
 
        /* Absolute */
        int ax, ay;
@@ -386,11 +386,11 @@ bool los(int y1, int x1, int y2, int x2)
  * @param x x座標
  * @return 指定された座標に照明がかかっているならTRUEを返す。。
  */
-static bool check_local_illumination(int y, int x)
+static bool check_local_illumination(POSITION y, POSITION x)
 {
        /* Hack -- move towards player */
-       int yy = (y < py) ? (y + 1) : (y > py) ? (y - 1) : y;
-       int xx = (x < px) ? (x + 1) : (x > px) ? (x - 1) : x;
+       POSITION yy = (y < p_ptr->y) ? (y + 1) : (y > p_ptr->y) ? (y - 1) : y;
+       POSITION xx = (x < p_ptr->x) ? (x + 1) : (x > p_ptr->x) ? (x - 1) : x;
 
        /* Check for "local" illumination */
 
@@ -437,25 +437,26 @@ static bool check_local_illumination(int y, int x)
  * @param x x座標
  * @return なし
  */
-void update_local_illumination(int y, int x)
+void update_local_illumination(POSITION y, POSITION x)
 {
-       int i, yy, xx;
+       int i;
+       POSITION yy, xx;
 
        if (!in_bounds(y, x)) return;
 
 #ifdef COMPLEX_WALL_ILLUMINATION /* COMPLEX_WALL_ILLUMINATION */
 
-       if ((y != py) && (x != px))
+       if ((y != p_ptr->y) && (x != p_ptr->x))
        {
-               yy = (y < py) ? (y - 1) : (y + 1);
-               xx = (x < px) ? (x - 1) : (x + 1);
+               yy = (y < p_ptr->y) ? (y - 1) : (y + 1);
+               xx = (x < p_ptr->x) ? (x - 1) : (x + 1);
                update_local_illumination_aux(yy, xx);
                update_local_illumination_aux(y, xx);
                update_local_illumination_aux(yy, x);
        }
-       else if (x != px) /* y == py */
+       else if (x != p_ptr->x) /* y == p_ptr->y */
        {
-               xx = (x < px) ? (x - 1) : (x + 1);
+               xx = (x < p_ptr->x) ? (x - 1) : (x + 1);
                for (i = -1; i <= 1; i++)
                {
                        yy = y + i;
@@ -466,9 +467,9 @@ void update_local_illumination(int y, int x)
                yy = y + 1;
                update_local_illumination_aux(yy, x);
        }
-       else if (y != py) /* x == px */
+       else if (y != p_ptr->y) /* x == p_ptr->x */
        {
-               yy = (y < py) ? (y - 1) : (y + 1);
+               yy = (y < p_ptr->y) ? (y - 1) : (y + 1);
                for (i = -1; i <= 1; i++)
                {
                        xx = x + i;
@@ -491,24 +492,24 @@ void update_local_illumination(int y, int x)
 
 #else /* COMPLEX_WALL_ILLUMINATION */
 
-       if ((y != py) && (x != px))
+       if ((y != p_ptr->y) && (x != p_ptr->x))
        {
-               yy = (y < py) ? (y - 1) : (y + 1);
-               xx = (x < px) ? (x - 1) : (x + 1);
+               yy = (y < p_ptr->y) ? (y - 1) : (y + 1);
+               xx = (x < p_ptr->x) ? (x - 1) : (x + 1);
                update_local_illumination_aux(yy, xx);
        }
-       else if (x != px) /* y == py */
+       else if (x != p_ptr->x) /* y == p_ptr->y */
        {
-               xx = (x < px) ? (x - 1) : (x + 1);
+               xx = (x < p_ptr->x) ? (x - 1) : (x + 1);
                for (i = -1; i <= 1; i++)
                {
                        yy = y + i;
                        update_local_illumination_aux(yy, xx);
                }
        }
-       else if (y != py) /* x == px */
+       else if (y != p_ptr->y) /* x == p_ptr->x */
        {
-               yy = (y < py) ? (y - 1) : (y + 1);
+               yy = (y < p_ptr->y) ? (y - 1) : (y + 1);
                for (i = -1; i <= 1; i++)
                {
                        xx = x + i;
@@ -564,7 +565,7 @@ void update_local_illumination(int y, int x)
  * "glowing" grid.  This prevents the player from being able to "see" the\n
  * walls of illuminated rooms from a corridor outside the room.\n
  */
-bool player_can_see_bold(int y, int x)
+bool player_can_see_bold(POSITION y, POSITION x)
 {
        cave_type *c_ptr;
 
@@ -601,7 +602,7 @@ bool player_can_see_bold(int y, int x)
  */
 bool no_lite(void)
 {
-       return (!player_can_see_bold(py, px));
+       return (!player_can_see_bold(p_ptr->y, p_ptr->x));
 }
 
 
@@ -613,12 +614,10 @@ bool no_lite(void)
  * @details 
  * 条件は永久地形でなく、なおかつ該当のマスにアーティファクトが存在しないか、である。英語の旧コメントに反して*破壊*の抑止判定には現在使われていない。
  */
-bool cave_valid_bold(int y, int x)
+bool cave_valid_bold(POSITION y, POSITION x)
 {
        cave_type *c_ptr = &cave[y][x];
-
-       s16b this_o_idx, next_o_idx = 0;
-
+       OBJECT_IDX this_o_idx, next_o_idx = 0;
 
        /* Forbid perma-grids */
        if (cave_perma_grid(c_ptr)) return (FALSE);
@@ -662,7 +661,7 @@ static char image_object_hack[] = "?/|\\\"!$()_-=[]{},~";
  * @param cp 本来のシンボル
  * @return なし
  */
-static void image_monster(byte *ap, char *cp)
+static void image_monster(TERM_COLOR *ap, char *cp)
 {
        /* Random symbol from set above */
        if (use_graphics)
@@ -690,7 +689,7 @@ static void image_monster(byte *ap, char *cp)
  * @param cp 本来のシンボル
  * @return なし
  */
-static void image_object(byte *ap, char *cp)
+static void image_object(TERM_COLOR *ap, char *cp)
 {
        if (use_graphics)
        {
@@ -717,7 +716,7 @@ static void image_object(byte *ap, char *cp)
  * @param cp 本来のシンボル
  * @return なし
  */
-static void image_random(byte *ap, char *cp)
+static void image_random(TERM_COLOR *ap, char *cp)
 {
        /* Normally, assume monsters */
        if (randint0(100) < 75)
@@ -796,9 +795,9 @@ static byte lighting_colours[16][2] =
  * @brief 調査中
  * @todo コメントを付加すること
  */
-void apply_default_feat_lighting(byte f_attr[F_LIT_MAX], byte f_char[F_LIT_MAX])
+void apply_default_feat_lighting(TERM_COLOR f_attr[F_LIT_MAX], byte f_char[F_LIT_MAX])
 {
-       byte s_attr = f_attr[F_LIT_STANDARD];
+       TERM_COLOR s_attr = f_attr[F_LIT_STANDARD];
        byte s_char = f_char[F_LIT_STANDARD];
        int i;
 
@@ -943,20 +942,20 @@ void apply_default_feat_lighting(byte f_attr[F_LIT_MAX], byte f_char[F_LIT_MAX])
  * "x_ptr->xxx", is quicker than "x_info[x].xxx", if this is incorrect\n
  * then a whole lot of code should be changed...  XXX XXX\n
  */
-void map_info(int y, int x, byte *ap, char *cp, byte *tap, char *tcp)
+void map_info(POSITION y, POSITION x, TERM_COLOR *ap, char *cp, TERM_COLOR *tap, char *tcp)
 {
        /* Get the cave */
        cave_type *c_ptr = &cave[y][x];
 
-       s16b this_o_idx, next_o_idx = 0;
+       OBJECT_IDX this_o_idx, next_o_idx = 0;
 
        /* Feature code (applying "mimic" field) */
-       s16b feat = get_feat_mimic(c_ptr);
+       FEAT_IDX feat = get_feat_mimic(c_ptr);
 
        /* Access floor */
        feature_type *f_ptr = &f_info[feat];
 
-       byte a;
+       TERM_COLOR a;
        byte c;
 
        /* Boring grids (floors, etc) */
@@ -1237,7 +1236,6 @@ void map_info(int y, int x, byte *ap, char *cp, byte *tap, char *tcp)
                        /* Hack -- hallucination */
                        if (p_ptr->image) image_object(ap, cp);
 
-                       /* Done */
                        break;
                }
        }
@@ -1405,7 +1403,7 @@ void move_cursor_relative(int row, int col)
 /*
  * Place an attr/char pair at the given map coordinate, if legal.
  */
-void print_rel(char c, byte a, int y, int x)
+void print_rel(char c, byte a, TERM_LEN y, TERM_LEN x)
 {
        /* Only do "legal" locations */
        if (panel_contains(y, x))
@@ -1466,12 +1464,10 @@ void print_rel(char c, byte a, int y, int x)
  * optimized primarily for the most common cases, that is, for the
  * non-marked floor grids.
  */
-void note_spot(int y, int x)
+void note_spot(POSITION y, POSITION x)
 {
        cave_type *c_ptr = &cave[y][x];
-
-       s16b this_o_idx, next_o_idx = 0;
-
+       OBJECT_IDX this_o_idx, next_o_idx = 0;
 
        /* Blind players see nothing */
        if (p_ptr->blind) return;
@@ -1565,16 +1561,16 @@ void note_spot(int y, int x)
 
 void display_dungeon(void)
 {
-       int x, y;
-       byte a;
+       TERM_LEN x, y;
+       TERM_COLOR a;
        char c;
 
-       byte ta;
-       char tc;
+       TERM_COLOR ta = 0;
+       char tc = '\0';
 
-       for (x = px - Term->wid / 2 + 1; x <= px + Term->wid / 2; x++)
+       for (x = p_ptr->x - Term->wid / 2 + 1; x <= p_ptr->x + Term->wid / 2; x++)
        {
-               for (y = py - Term->hgt / 2 + 1; y <= py + Term->hgt / 2; y++)
+               for (y = p_ptr->y - Term->hgt / 2 + 1; y <= p_ptr->y + Term->hgt / 2; y++)
                {
                        if (in_bounds2(y, x))
                        {
@@ -1591,7 +1587,7 @@ void display_dungeon(void)
                                }
 
                                /* Hack -- Queue it */
-                               Term_queue_char(x - px + Term->wid / 2 - 1, y - py + Term->hgt / 2 - 1, a, c, ta, tc);
+                               Term_queue_char(x - p_ptr->x + Term->wid / 2 - 1, y - p_ptr->y + Term->hgt / 2 - 1, a, c, ta, tc);
                        }
                        else
                        {
@@ -1607,7 +1603,7 @@ void display_dungeon(void)
                                c = f_ptr->x_char[F_LIT_STANDARD];
 
                                /* Hack -- Queue it */
-                               Term_queue_char(x - px + Term->wid / 2 - 1, y - py + Term->hgt / 2 - 1, a, c, ta, tc);
+                               Term_queue_char(x - p_ptr->x + Term->wid / 2 - 1, y - p_ptr->y + Term->hgt / 2 - 1, a, c, ta, tc);
                        }
                }
        }
@@ -1619,15 +1615,15 @@ void display_dungeon(void)
  *
  * This function should only be called on "legal" grids
  */
-void lite_spot(int y, int x)
+void lite_spot(POSITION y, POSITION x)
 {
        /* Redraw if on screen */
        if (panel_contains(y, x) && in_bounds2(y, x))
        {
-               byte a;
+               TERM_COLOR a;
                char c;
 
-               byte ta;
+               TERM_COLOR ta;
                char tc;
 
                /* Examine the grid */
@@ -1706,10 +1702,10 @@ void prt_map(void)
                /* Scan the columns of row "y" */
                for (x = xmin; x <= xmax; x++)
                {
-                       byte a;
+                       TERM_COLOR a;
                        char c;
 
-                       byte ta;
+                       TERM_COLOR ta;
                        char tc;
 
                        /* Determine what is there */
@@ -1729,7 +1725,7 @@ void prt_map(void)
        }
 
        /* Display player */
-       lite_spot(py, px);
+       lite_spot(p_ptr->y, p_ptr->x);
 
        /* Restore the cursor */
        (void)Term_set_cursor(v);
@@ -1740,19 +1736,19 @@ void prt_map(void)
 /*
  * print project path
  */
-void prt_path(int y, int x)
+void prt_path(POSITION y, POSITION x)
 {
        int i;
        int path_n;
        u16b path_g[512];
-       int default_color = TERM_SLATE;
+       byte_hack default_color = TERM_SLATE;
 
        if (!display_path) return;
        if (-1 == project_length)
                return;
 
        /* Get projection path */
-       path_n = project_path(path_g, (project_length ? project_length : MAX_RANGE), py, px, y, x, PROJECT_PATH|PROJECT_THRU);
+       path_n = project_path(path_g, (project_length ? project_length : MAX_RANGE), p_ptr->y, p_ptr->x, y, x, PROJECT_PATH|PROJECT_THRU);
 
        /* Redraw map */
        p_ptr->redraw |= (PR_MAP);
@@ -1769,10 +1765,10 @@ void prt_path(int y, int x)
 
                if (panel_contains(ny, nx))
                {
-                       byte a = default_color;
+                       TERM_COLOR a = default_color;
                        char c;
 
-                       byte ta;
+                       TERM_COLOR ta;
                        char tc;
 
                        if (c_ptr->m_idx && m_list[c_ptr->m_idx].ml)
@@ -1840,7 +1836,7 @@ static void display_shortened_item_name(object_type *o_ptr, int y)
        char buf[MAX_NLEN];
        char *c = buf;
        int len = 0;
-       byte attr;
+       TERM_COLOR attr;
 
        object_desc(buf, o_ptr, (OD_NO_FLAVOR | OD_OMIT_PREFIX | OD_NAME_ONLY));
        attr = tval_to_attr[o_ptr->tval % 128];
@@ -1848,11 +1844,7 @@ static void display_shortened_item_name(object_type *o_ptr, int y)
        if (p_ptr->image)
        {
                attr = TERM_WHITE;
-#ifdef JP
-               strcpy(buf, "何か奇妙な物");
-#else
-               strcpy(buf, "something strange");
-#endif
+               strcpy(buf, _("何か奇妙な物", "something strange"));
        }
 
        for (c = buf; *c; c++)
@@ -1915,16 +1907,16 @@ void display_map(int *cy, int *cx)
 {
        int i, j, x, y;
 
-       byte ta;
+       TERM_COLOR ta;
        char tc;
 
        byte tp;
 
-       byte **bigma;
+       TERM_COLOR **bigma;
        char **bigmc;
        byte **bigmp;
 
-       byte **ma;
+       TERM_COLOR **ma;
        char **mc;
        byte **mp;
 
@@ -1951,7 +1943,7 @@ void display_map(int *cy, int *cx)
        view_granite_lite = FALSE;
 
        /* Allocate the maps */
-       C_MAKE(ma, (hgt + 2), byte_ptr);
+       C_MAKE(ma, (hgt + 2), TERM_COLOR *);
        C_MAKE(mc, (hgt + 2), char_ptr);
        C_MAKE(mp, (hgt + 2), byte_ptr);
        C_MAKE(match_autopick_yx, (hgt + 2), sint_ptr);
@@ -1961,7 +1953,7 @@ void display_map(int *cy, int *cx)
        for (y = 0; y < (hgt + 2); y++)
        {
                /* Allocate one row each array */
-               C_MAKE(ma[y], (wid + 2), byte);
+               C_MAKE(ma[y], (wid + 2), TERM_COLOR);
                C_MAKE(mc[y], (wid + 2), char);
                C_MAKE(mp[y], (wid + 2), byte);
                C_MAKE(match_autopick_yx[y], (wid + 2), int);
@@ -1982,7 +1974,7 @@ void display_map(int *cy, int *cx)
        }
 
        /* Allocate the maps */
-       C_MAKE(bigma, (cur_hgt + 2), byte_ptr);
+       C_MAKE(bigma, (cur_hgt + 2), TERM_COLOR *);
        C_MAKE(bigmc, (cur_hgt + 2), char_ptr);
        C_MAKE(bigmp, (cur_hgt + 2), byte_ptr);
 
@@ -1990,7 +1982,7 @@ void display_map(int *cy, int *cx)
        for (y = 0; y < (cur_hgt + 2); y++)
        {
                /* Allocate one row each array */
-               C_MAKE(bigma[y], (cur_wid + 2), byte);
+               C_MAKE(bigma[y], (cur_wid + 2), TERM_COLOR);
                C_MAKE(bigmc[y], (cur_wid + 2), char);
                C_MAKE(bigmp[y], (cur_wid + 2), byte);
 
@@ -2010,7 +2002,6 @@ void display_map(int *cy, int *cx)
        {
                for (j = 0; j < cur_hgt; ++j)
                {
-                       /* Location */
                        x = i / xrat + 1;
                        y = j / yrat + 1;
 
@@ -2022,7 +2013,7 @@ void display_map(int *cy, int *cx)
                        map_info(j, i, &ta, &tc, &ta, &tc);
 
                        /* Extract the priority */
-                       tp = feat_priority;
+                       tp = (byte_hack)feat_priority;
 
                        if(match_autopick!=-1
                           && (match_autopick_yx[y][x] == -1
@@ -2044,7 +2035,6 @@ void display_map(int *cy, int *cx)
        {
                for (i = 0; i < cur_wid; ++i)
                {
-                       /* Location */
                        x = i / xrat + 1;
                        y = j / yrat + 1;
 
@@ -2150,11 +2140,11 @@ void display_map(int *cy, int *cx)
        }
 
        /* Player location */
-               (*cy) = py / yrat + 1 + ROW_MAP;
+               (*cy) = p_ptr->y / yrat + 1 + ROW_MAP;
        if (!use_bigtile)
-               (*cx) = px / xrat + 1 + COL_MAP;
+               (*cx) = p_ptr->x / xrat + 1 + COL_MAP;
        else
-               (*cx) = (px / xrat + 1) * 2 + COL_MAP;
+               (*cx) = (p_ptr->x / xrat + 1) * 2 + COL_MAP;
 
        /* Restore lighting effects */
        view_special_lite = old_view_special_lite;
@@ -2164,7 +2154,7 @@ void display_map(int *cy, int *cx)
        for (y = 0; y < (hgt + 2); y++)
        {
                /* Free one row each array */
-               C_KILL(ma[y], (wid + 2), byte);
+               C_KILL(ma[y], (wid + 2), TERM_COLOR);
                C_KILL(mc[y], (wid + 2), char);
                C_KILL(mp[y], (wid + 2), byte);
                C_KILL(match_autopick_yx[y], (wid + 2), int);
@@ -2172,7 +2162,7 @@ void display_map(int *cy, int *cx)
        }
 
        /* Free each line map */
-       C_KILL(ma, (hgt + 2), byte_ptr);
+       C_KILL(ma, (hgt + 2), TERM_COLOR *);
        C_KILL(mc, (hgt + 2), char_ptr);
        C_KILL(mp, (hgt + 2), byte_ptr);
        C_KILL(match_autopick_yx, (hgt + 2), sint_ptr);
@@ -2182,13 +2172,13 @@ void display_map(int *cy, int *cx)
        for (y = 0; y < (cur_hgt + 2); y++)
        {
                /* Free one row each array */
-               C_KILL(bigma[y], (cur_wid + 2), byte);
+               C_KILL(bigma[y], (cur_wid + 2), TERM_COLOR);
                C_KILL(bigmc[y], (cur_wid + 2), char);
                C_KILL(bigmp[y], (cur_wid + 2), byte);
        }
 
        /* Free each line map */
-       C_KILL(bigma, (cur_hgt + 2), byte_ptr);
+       C_KILL(bigma, (cur_hgt + 2), TERM_COLOR *);
        C_KILL(bigmc, (cur_hgt + 2), char_ptr);
        C_KILL(bigmp, (cur_hgt + 2), byte_ptr);
 }
@@ -2197,7 +2187,7 @@ void display_map(int *cy, int *cx)
 /*
  * Display a "small-scale" map of the dungeon for the player
  *
- * Currently, the "player" is displayed on the map.  XXX XXX XXX
+ * Currently, the "player" is displayed on the map.  
  */
 void do_cmd_view_map(void)
 {
@@ -2208,11 +2198,7 @@ void do_cmd_view_map(void)
        screen_save();
 
        /* Note */
-#ifdef JP
-prt("お待ち下さい...", 0, 0);
-#else
-       prt("Please wait...", 0, 0);
-#endif
+       prt(_("お待ち下さい...", "Please wait..."), 0, 0);
 
        /* Flush */
        Term_fresh();
@@ -2240,11 +2226,8 @@ prt("お待ち下さい...", 0, 0);
                        Term_get_size(&wid, &hgt);
                        row_message = hgt - 1;
 
-#ifdef JP
-                       put_str("何かキーを押してください('M':拾う 'N':放置 'D':M+N 'K':壊すアイテムを表示)", row_message, 1);
-#else
-                       put_str(" Hit M, N(for ~), K(for !), or D(same as M+N) to display auto-picker items.", row_message, 1);
-#endif
+                       put_str(_("何かキーを押してください('M':拾う 'N':放置 'D':M+N 'K':壊すアイテムを表示)",
+                                         " Hit M, N(for ~), K(for !), or D(same as M+N) to display auto-picker items."), row_message, 1);
 
                        /* Hilite the player */
                        move_cursor(cy, cx);
@@ -2277,11 +2260,8 @@ prt("お待ち下さい...", 0, 0);
        }
        else
        {
-#ifdef JP
-               put_str("何かキーを押すとゲームに戻ります", 23, 30);
-#else
-               put_str("Hit any key to continue", 23, 30);
-#endif         /* Hilite the player */
+               put_str(_("何かキーを押すとゲームに戻ります", "Hit any key to continue"), 23, 30);              
+               /* Hilite the player */
                move_cursor(cy, cx);
                /* Get any key */
                inkey();
@@ -2561,8 +2541,6 @@ void forget_lite(void)
 
 
 /*
- * XXX XXX XXX
- *
  * This macro allows us to efficiently add a grid to the "lite" array,
  * note that we are never called for illegal grids, or for grids which
  * have already been placed into the "lite" array, and we are never
@@ -2619,7 +2597,7 @@ void update_lite(void)
                /* forget_lite(); Perhaps don't need? */
 
                /* Add it to later visual update */
-               cave_redraw_later(&cave[py][px], py, px);
+               cave_redraw_later(&cave[p_ptr->y][p_ptr->x], p_ptr->y, p_ptr->x);
        }
 #endif
 
@@ -2653,54 +2631,54 @@ void update_lite(void)
        if (p >= 1)
        {
                /* Player grid */
-               cave_lite_hack(py, px);
+               cave_lite_hack(p_ptr->y, p_ptr->x);
 
                /* Adjacent grid */
-               cave_lite_hack(py+1, px);
-               cave_lite_hack(py-1, px);
-               cave_lite_hack(py, px+1);
-               cave_lite_hack(py, px-1);
+               cave_lite_hack(p_ptr->y+1, p_ptr->x);
+               cave_lite_hack(p_ptr->y-1, p_ptr->x);
+               cave_lite_hack(p_ptr->y, p_ptr->x+1);
+               cave_lite_hack(p_ptr->y, p_ptr->x-1);
 
                /* Diagonal grids */
-               cave_lite_hack(py+1, px+1);
-               cave_lite_hack(py+1, px-1);
-               cave_lite_hack(py-1, px+1);
-               cave_lite_hack(py-1, px-1);
+               cave_lite_hack(p_ptr->y+1, p_ptr->x+1);
+               cave_lite_hack(p_ptr->y+1, p_ptr->x-1);
+               cave_lite_hack(p_ptr->y-1, p_ptr->x+1);
+               cave_lite_hack(p_ptr->y-1, p_ptr->x-1);
        }
 
        /* Radius 2 -- lantern radius */
        if (p >= 2)
        {
                /* South of the player */
-               if (cave_los_bold(py + 1, px))
+               if (cave_los_bold(p_ptr->y + 1, p_ptr->x))
                {
-                       cave_lite_hack(py+2, px);
-                       cave_lite_hack(py+2, px+1);
-                       cave_lite_hack(py+2, px-1);
+                       cave_lite_hack(p_ptr->y+2, p_ptr->x);
+                       cave_lite_hack(p_ptr->y+2, p_ptr->x+1);
+                       cave_lite_hack(p_ptr->y+2, p_ptr->x-1);
                }
 
                /* North of the player */
-               if (cave_los_bold(py - 1, px))
+               if (cave_los_bold(p_ptr->y - 1, p_ptr->x))
                {
-                       cave_lite_hack(py-2, px);
-                       cave_lite_hack(py-2, px+1);
-                       cave_lite_hack(py-2, px-1);
+                       cave_lite_hack(p_ptr->y-2, p_ptr->x);
+                       cave_lite_hack(p_ptr->y-2, p_ptr->x+1);
+                       cave_lite_hack(p_ptr->y-2, p_ptr->x-1);
                }
 
                /* East of the player */
-               if (cave_los_bold(py, px + 1))
+               if (cave_los_bold(p_ptr->y, p_ptr->x + 1))
                {
-                       cave_lite_hack(py, px+2);
-                       cave_lite_hack(py+1, px+2);
-                       cave_lite_hack(py-1, px+2);
+                       cave_lite_hack(p_ptr->y, p_ptr->x+2);
+                       cave_lite_hack(p_ptr->y+1, p_ptr->x+2);
+                       cave_lite_hack(p_ptr->y-1, p_ptr->x+2);
                }
 
                /* West of the player */
-               if (cave_los_bold(py, px - 1))
+               if (cave_los_bold(p_ptr->y, p_ptr->x - 1))
                {
-                       cave_lite_hack(py, px-2);
-                       cave_lite_hack(py+1, px-2);
-                       cave_lite_hack(py-1, px-2);
+                       cave_lite_hack(p_ptr->y, p_ptr->x-2);
+                       cave_lite_hack(p_ptr->y+1, p_ptr->x-2);
+                       cave_lite_hack(p_ptr->y-1, p_ptr->x-2);
                }
        }
 
@@ -2713,43 +2691,43 @@ void update_lite(void)
                if (p > 14) p = 14;
 
                /* South-East of the player */
-               if (cave_los_bold(py + 1, px + 1))
+               if (cave_los_bold(p_ptr->y + 1, p_ptr->x + 1))
                {
-                       cave_lite_hack(py+2, px+2);
+                       cave_lite_hack(p_ptr->y+2, p_ptr->x+2);
                }
 
                /* South-West of the player */
-               if (cave_los_bold(py + 1, px - 1))
+               if (cave_los_bold(p_ptr->y + 1, p_ptr->x - 1))
                {
-                       cave_lite_hack(py+2, px-2);
+                       cave_lite_hack(p_ptr->y+2, p_ptr->x-2);
                }
 
                /* North-East of the player */
-               if (cave_los_bold(py - 1, px + 1))
+               if (cave_los_bold(p_ptr->y - 1, p_ptr->x + 1))
                {
-                       cave_lite_hack(py-2, px+2);
+                       cave_lite_hack(p_ptr->y-2, p_ptr->x+2);
                }
 
                /* North-West of the player */
-               if (cave_los_bold(py - 1, px - 1))
+               if (cave_los_bold(p_ptr->y - 1, p_ptr->x - 1))
                {
-                       cave_lite_hack(py-2, px-2);
+                       cave_lite_hack(p_ptr->y-2, p_ptr->x-2);
                }
 
                /* Maximal north */
-               min_y = py - p;
+               min_y = p_ptr->y - p;
                if (min_y < 0) min_y = 0;
 
                /* Maximal south */
-               max_y = py + p;
+               max_y = p_ptr->y + p;
                if (max_y > cur_hgt-1) max_y = cur_hgt-1;
 
                /* Maximal west */
-               min_x = px - p;
+               min_x = p_ptr->x - p;
                if (min_x < 0) min_x = 0;
 
                /* Maximal east */
-               max_x = px + p;
+               max_x = p_ptr->x + p;
                if (max_x > cur_wid-1) max_x = cur_wid-1;
 
                /* Scan the maximal box */
@@ -2757,8 +2735,8 @@ void update_lite(void)
                {
                        for (x = min_x; x <= max_x; x++)
                        {
-                               int dy = (py > y) ? (py - y) : (y - py);
-                               int dx = (px > x) ? (px - x) : (x - px);
+                               int dy = (p_ptr->y > y) ? (p_ptr->y - y) : (y - p_ptr->y);
+                               int dx = (p_ptr->x > x) ? (p_ptr->x - x) : (x - p_ptr->x);
 
                                /* Skip the "central" grids (above) */
                                if ((dy <= 2) && (dx <= 2)) continue;
@@ -2824,15 +2802,16 @@ void update_lite(void)
 
 
 static bool mon_invis;
-static s16b mon_fy, mon_fx;
+static POSITION mon_fy, mon_fx;
 
 /*
  * Add a square to the changes array
  */
-static void mon_lite_hack(int y, int x)
+static void mon_lite_hack(POSITION y, POSITION x)
 {
        cave_type *c_ptr;
-       int       midpoint, dpf, d;
+       int dpf, d;
+       POSITION midpoint;
 
        /* We trust this grid is in bounds */
        /* if (!in_bounds2(y, x)) return; */
@@ -2847,11 +2826,11 @@ static void mon_lite_hack(int y, int x)
                /* Hack -- Prevent monster lite leakage in walls */
 
                /* Horizontal walls between player and a monster */
-               if (((y < py) && (y > mon_fy)) || ((y > py) && (y < mon_fy)))
+               if (((y < p_ptr->y) && (y > mon_fy)) || ((y > p_ptr->y) && (y < mon_fy)))
                {
-                       dpf = py - mon_fy;
+                       dpf = p_ptr->y - mon_fy;
                        d = y - mon_fy;
-                       midpoint = mon_fx + ((px - mon_fx) * ABS(d)) / ABS(dpf);
+                       midpoint = mon_fx + ((p_ptr->x - mon_fx) * ABS(d)) / ABS(dpf);
 
                        /* Only first wall viewed from mid-x is lit */
                        if (x < midpoint)
@@ -2868,11 +2847,11 @@ static void mon_lite_hack(int y, int x)
                }
 
                /* Vertical walls between player and a monster */
-               if (((x < px) && (x > mon_fx)) || ((x > px) && (x < mon_fx)))
+               if (((x < p_ptr->x) && (x > mon_fx)) || ((x > p_ptr->x) && (x < mon_fx)))
                {
-                       dpf = px - mon_fx;
+                       dpf = p_ptr->x - mon_fx;
                        d = x - mon_fx;
-                       midpoint = mon_fy + ((py - mon_fy) * ABS(d)) / ABS(dpf);
+                       midpoint = mon_fy + ((p_ptr->y - mon_fy) * ABS(d)) / ABS(dpf);
 
                        /* Only first wall viewed from mid-y is lit */
                        if (y < midpoint)
@@ -2915,7 +2894,7 @@ static void mon_lite_hack(int y, int x)
 /*
  * Add a square to the changes array
  */
-static void mon_dark_hack(int y, int x)
+static void mon_dark_hack(POSITION y, POSITION x)
 {
        cave_type *c_ptr;
        int       midpoint, dpf, d;
@@ -2933,11 +2912,11 @@ static void mon_dark_hack(int y, int x)
                /* Hack -- Prevent monster dark lite leakage in walls */
 
                /* Horizontal walls between player and a monster */
-               if (((y < py) && (y > mon_fy)) || ((y > py) && (y < mon_fy)))
+               if (((y < p_ptr->y) && (y > mon_fy)) || ((y > p_ptr->y) && (y < mon_fy)))
                {
-                       dpf = py - mon_fy;
+                       dpf = p_ptr->y - mon_fy;
                        d = y - mon_fy;
-                       midpoint = mon_fx + ((px - mon_fx) * ABS(d)) / ABS(dpf);
+                       midpoint = mon_fx + ((p_ptr->x - mon_fx) * ABS(d)) / ABS(dpf);
 
                        /* Only first wall viewed from mid-x is lit */
                        if (x < midpoint)
@@ -2954,11 +2933,11 @@ static void mon_dark_hack(int y, int x)
                }
 
                /* Vertical walls between player and a monster */
-               if (((x < px) && (x > mon_fx)) || ((x > px) && (x < mon_fx)))
+               if (((x < p_ptr->x) && (x > mon_fx)) || ((x > p_ptr->x) && (x < mon_fx)))
                {
-                       dpf = px - mon_fx;
+                       dpf = p_ptr->x - mon_fx;
                        d = x - mon_fx;
-                       midpoint = mon_fy + ((py - mon_fy) * ABS(d)) / ABS(dpf);
+                       midpoint = mon_fy + ((p_ptr->y - mon_fy) * ABS(d)) / ABS(dpf);
 
                        /* Only first wall viewed from mid-y is lit */
                        if (y < midpoint)
@@ -3002,8 +2981,8 @@ void update_mon_lite(void)
        int i, rad;
        cave_type *c_ptr;
 
-       s16b fx, fy;
-       void (*add_mon_lite)(int, int);
+       POSITION fx, fy;
+       void (*add_mon_lite)(POSITION, POSITION);
        int f_flag;
 
        s16b end_temp;
@@ -3236,8 +3215,8 @@ void update_mon_lite(void)
                }
 
                /* Add to end of temp array */
-               temp_x[temp_n] = (byte)fx;
-               temp_y[temp_n] = (byte)fy;
+               temp_x[temp_n] = fx;
+               temp_y[temp_n] = fy;
                temp_n++;
        }
 
@@ -3296,7 +3275,7 @@ void update_mon_lite(void)
        /* Mega-Hack -- Visual update later */
        p_ptr->update |= (PU_DELAY_VIS);
 
-       p_ptr->monlite = (cave[py][px].info & CAVE_MNLT) ? TRUE : FALSE;
+       p_ptr->monlite = (cave[p_ptr->y][p_ptr->x].info & CAVE_MNLT) ? TRUE : FALSE;
 
        if (p_ptr->special_defense & NINJA_S_STEALTH)
        {
@@ -3304,19 +3283,11 @@ void update_mon_lite(void)
                {
                        if (p_ptr->monlite)
                        {
-#ifdef JP
-                               msg_print("影の覆いが薄れた気がする。");
-#else
-                               msg_print("Your mantle of shadow become thin.");
-#endif
+                               msg_print(_("影の覆いが薄れた気がする。", "Your mantle of shadow become thin."));
                        }
                        else
                        {
-#ifdef JP
-                               msg_print("影の覆いが濃くなった!");
-#else
-                               msg_print("Your mantle of shadow restored its original darkness.");
-#endif
+                               msg_print(_("影の覆いが濃くなった!", "Your mantle of shadow restored its original darkness."));
                        }
                }
        }
@@ -3359,8 +3330,8 @@ void forget_view(void)
        /* Clear them all */
        for (i = 0; i < view_n; i++)
        {
-               int y = view_y[i];
-               int x = view_x[i];
+               POSITION y = view_y[i];
+               POSITION x = view_x[i];
 
                /* Access the grid */
                c_ptr = &cave[y][x];
@@ -3404,8 +3375,8 @@ void forget_view(void)
  *
  * This function assumes that (y,x) is legal (i.e. on the map).
  *
- * Grid (y1,x1) is on the "diagonal" between (py,px) and (y,x)
- * Grid (y2,x2) is "adjacent", also between (py,px) and (y,x).
+ * Grid (y1,x1) is on the "diagonal" between (p_ptr->y,p_ptr->x) and (y,x)
+ * Grid (y2,x2) is "adjacent", also between (p_ptr->y,p_ptr->x) and (y,x).
  *
  * Note that we are using the "CAVE_XTRA" field for marking grids as
  * "easily viewable".  This bit is cleared at the end of "update_view()".
@@ -3414,7 +3385,7 @@ void forget_view(void)
  *
  * This function now returns "TRUE" if vision is "blocked" by grid (y,x).
  */
-static bool update_view_aux(int y, int x, int y1, int x1, int y2, int x2)
+static bool update_view_aux(POSITION y, POSITION x, POSITION y1, POSITION x1, POSITION y2, POSITION x2)
 {
        bool f1, f2, v1, v2, z1, z2, wall;
 
@@ -3495,7 +3466,7 @@ static bool update_view_aux(int y, int x, int y1, int x1, int y2, int x2)
 
 
        /* Hack -- check line of sight */
-       if (los(py, px, y, x))
+       if (los(p_ptr->y, p_ptr->x, y, x))
        {
                cave_view_hack(c_ptr, y, x);
 
@@ -3602,14 +3573,15 @@ static bool update_view_aux(int y, int x, int y1, int x1, int y2, int x2)
  */
 void update_view(void)
 {
-       int n, m, d, k, y, x, z;
+       int n, m, d, k, z;
+       POSITION y, x;
 
        int se, sw, ne, nw, es, en, ws, wn;
 
        int full, over;
 
-       int y_max = cur_hgt - 1;
-       int x_max = cur_wid - 1;
+       POSITION y_max = cur_hgt - 1;
+       POSITION x_max = cur_wid - 1;
 
        cave_type *c_ptr;
 
@@ -3665,8 +3637,8 @@ void update_view(void)
        /*** Step 1 -- adjacent grids ***/
 
        /* Now start on the player */
-       y = py;
-       x = px;
+       y = p_ptr->y;
+       x = p_ptr->x;
 
        /* Access the grid */
        c_ptr = &cave[y][x];
@@ -4101,7 +4073,7 @@ void delayed_visual_update(void)
  */
 void forget_flow(void)
 {
-       int x, y;
+       POSITION x, y;
 
        /* Check the entire dungeon */
        for (y = 0; y < cur_hgt; y++)
@@ -4122,8 +4094,8 @@ void forget_flow(void)
  * it everytime the player moves out of LOS of the last
  * "way-point".
  */
-static u16b flow_x = 0;
-static u16b flow_y = 0;
+static POSITION flow_x = 0;
+static POSITION flow_y = 0;
 
 
 
@@ -4142,7 +4114,7 @@ static u16b flow_y = 0;
  */
 void update_flow(void)
 {
-       int x, y, d;
+       POSITION x, y, d;
        int flow_head = 1;
        int flow_tail = 0;
 
@@ -4167,12 +4139,12 @@ void update_flow(void)
        }
 
        /* Save player position */
-       flow_y = py;
-       flow_x = px;
+       flow_y = p_ptr->y;
+       flow_x = p_ptr->x;
 
        /* Add the player's grid to the queue */
-       temp_y[0] = py;
-       temp_x[0] = px;
+       temp_y[0] = p_ptr->y;
+       temp_x[0] = p_ptr->x;
 
        /* Now process the queue */
        while (flow_head != flow_tail)
@@ -4190,8 +4162,8 @@ void update_flow(void)
                for (d = 0; d < 8; d++)
                {
                        int old_head = flow_head;
-                       int m = cave[ty][tx].cost + 1;
-                       int n = cave[ty][tx].dist + 1;
+                       byte_hack m = cave[ty][tx].cost + 1;
+                       byte_hack n = cave[ty][tx].dist + 1;
                        cave_type *c_ptr;
 
                        /* Child location */
@@ -4252,8 +4224,8 @@ static int scent_when = 0;
  */
 void update_smell(void)
 {
-       int i, j;
-       int y, x;
+       POSITION i, j;
+       POSITION y, x;
 
        /* Create a table that controls the spread of scent */
        const int scent_adjust[5][5] = 
@@ -4291,8 +4263,8 @@ void update_smell(void)
                        cave_type *c_ptr;
 
                        /* Translate table to map grids */
-                       y = i + py - 2;
-                       x = j + px - 2;
+                       y = i + p_ptr->y - 2;
+                       x = j + p_ptr->x - 2;
 
                        /* Check Bounds */
                        if (!in_bounds(y, x)) continue;
@@ -4318,12 +4290,13 @@ void update_smell(void)
 /*
  * Hack -- map the current panel (plus some) ala "magic mapping"
  */
-void map_area(int range)
+void map_area(POSITION range)
 {
-       int             i, x, y;
-       cave_type       *c_ptr;
-       s16b            feat;
-       feature_type    *f_ptr;
+       int i;
+       POSITION x, y;
+       cave_type *c_ptr;
+       FEAT_IDX feat;
+       feature_type *f_ptr;
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
 
@@ -4332,7 +4305,7 @@ void map_area(int range)
        {
                for (x = 1; x < cur_wid - 1; x++)
                {
-                       if (distance(py, px, y, x) > range) continue;
+                       if (distance(p_ptr->y, p_ptr->x, y, x) > range) continue;
 
                        c_ptr = &cave[y][x];
 
@@ -4376,7 +4349,6 @@ void map_area(int range)
        /* Redraw map */
        p_ptr->redraw |= (PR_MAP);
 
-       /* Window stuff */
        p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
 }
 
@@ -4400,8 +4372,9 @@ void map_area(int range)
  */
 void wiz_lite(bool ninja)
 {
-       int i, y, x;
-       s16b feat;
+       OBJECT_IDX i;
+       POSITION y, x;
+       FEAT_IDX feat;
        feature_type *f_ptr;
 
        /* Memorize objects */
@@ -4440,8 +4413,8 @@ void wiz_lite(bool ninja)
                                /* Scan all neighbors */
                                for (i = 0; i < 9; i++)
                                {
-                                       int yy = y + ddy_ddd[i];
-                                       int xx = x + ddx_ddd[i];
+                                       POSITION yy = y + ddy_ddd[i];
+                                       POSITION xx = x + ddx_ddd[i];
 
                                        /* Get the grid */
                                        c_ptr = &cave[yy][xx];
@@ -4483,12 +4456,11 @@ void wiz_lite(bool ninja)
        /* Redraw map */
        p_ptr->redraw |= (PR_MAP);
 
-       /* Window stuff */
        p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
 
        if (p_ptr->special_defense & NINJA_S_STEALTH)
        {
-               if (cave[py][px].info & CAVE_GLOW) set_superstealth(FALSE);
+               if (cave[p_ptr->y][p_ptr->x].info & CAVE_GLOW) set_superstealth(FALSE);
        }
 }
 
@@ -4498,8 +4470,8 @@ void wiz_lite(bool ninja)
  */
 void wiz_dark(void)
 {
-       int i, y, x;
-
+       OBJECT_IDX i;
+       POSITION y, x;
 
        /* Forget every grid */
        for (y = 1; y < cur_hgt - 1; y++)
@@ -4558,18 +4530,13 @@ void wiz_dark(void)
        /* Redraw map */
        p_ptr->redraw |= (PR_MAP);
 
-       /* Window stuff */
        p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
 }
 
-
-
-
-
 /*
  * Change the "feat" flag for a grid, and notice/redraw the grid
  */
-void cave_set_feat(int y, int x, int feat)
+void cave_set_feat(POSITION y, POSITION x, FEAT_IDX feat)
 {
        cave_type *c_ptr = &cave[y][x];
        feature_type *f_ptr = &f_info[feat];
@@ -4586,7 +4553,8 @@ void cave_set_feat(int y, int x, int feat)
                /* Hack -- glow the GLOW terrain */
                if (have_flag(f_ptr->flags, FF_GLOW) && !(d_info[dungeon_type].flags1 & DF1_DARKNESS))
                {
-                       int i, yy, xx;
+                       DIRECTION i;
+                       POSITION yy, xx;
 
                        for (i = 0; i < 9; i++)
                        {
@@ -4626,7 +4594,6 @@ void cave_set_feat(int y, int x, int feat)
        /* Update the monster */
        if (c_ptr->m_idx) update_mon(c_ptr->m_idx, FALSE);
 
-       /* Notice */
        note_spot(y, x);
 
        /* Redraw */
@@ -4649,7 +4616,8 @@ void cave_set_feat(int y, int x, int feat)
        /* Hack -- glow the GLOW terrain */
        if (have_flag(f_ptr->flags, FF_GLOW) && !(d_info[dungeon_type].flags1 & DF1_DARKNESS))
        {
-               int i, yy, xx;
+               DIRECTION i;
+               POSITION yy, xx;
                cave_type *cc_ptr;
 
                for (i = 0; i < 9; i++)
@@ -4665,7 +4633,6 @@ void cave_set_feat(int y, int x, int feat)
                                /* Update the monster */
                                if (cc_ptr->m_idx) update_mon(cc_ptr->m_idx, FALSE);
 
-                               /* Notice */
                                note_spot(yy, xx);
 
                                /* Redraw */
@@ -4677,13 +4644,13 @@ void cave_set_feat(int y, int x, int feat)
 
                if (p_ptr->special_defense & NINJA_S_STEALTH)
                {
-                       if (cave[py][px].info & CAVE_GLOW) set_superstealth(FALSE);
+                       if (cave[p_ptr->y][p_ptr->x].info & CAVE_GLOW) set_superstealth(FALSE);
                }
        }
 }
 
 
-int conv_dungeon_feat(int newfeat)
+FEAT_IDX conv_dungeon_feat(FEAT_IDX newfeat)
 {
        feature_type *f_ptr = &f_info[newfeat];
 
@@ -4717,7 +4684,7 @@ int conv_dungeon_feat(int newfeat)
  * Take a feature, determine what that feature becomes
  * through applying the given action.
  */
-int feat_state(int feat, int action)
+FEAT_IDX feat_state(FEAT_IDX feat, int action)
 {
        feature_type *f_ptr = &f_info[feat];
        int i;
@@ -4737,13 +4704,13 @@ int feat_state(int feat, int action)
  * Takes a location and action and changes the feature at that 
  * location through applying the given action.
  */
-void cave_alter_feat(int y, int x, int action)
+void cave_alter_feat(POSITION y, POSITION x, int action)
 {
        /* Set old feature */
-       int oldfeat = cave[y][x].feat;
+       IDX oldfeat = cave[y][x].feat;
 
        /* Get the new feat */
-       int newfeat = feat_state(oldfeat, action);
+       IDX newfeat = feat_state(oldfeat, action);
 
        /* No change */
        if (newfeat == oldfeat) return;
@@ -4775,11 +4742,7 @@ void cave_alter_feat(int y, int x, int action)
 
                if (found && character_dungeon && player_can_see_bold(y, x))
                {
-#ifdef JP
-                       msg_print("何かを発見した!");
-#else
-                       msg_print("You have found something!");
-#endif
+                       msg_print(_("何かを発見した!", "You have found something!"));
                }
        }
 
@@ -4797,7 +4760,7 @@ void cave_alter_feat(int y, int x, int action)
 
 
 /* Remove a mirror */
-void remove_mirror(int y, int x)
+void remove_mirror(POSITION y, POSITION x)
 {
        cave_type *c_ptr = &cave[y][x];
 
@@ -4816,7 +4779,6 @@ void remove_mirror(int y, int x)
                update_local_illumination(y, x);
        }
 
-       /* Notice */
        note_spot(y, x);
 
        /* Redraw */
@@ -4864,9 +4826,9 @@ bool is_explosive_rune_grid(cave_type *c_ptr)
  * Calculate "incremental motion". Used by project() and shoot().
  * Assumes that (*y,*x) lies on the path from (y1,x1) to (y2,x2).
  */
-void mmove2(int *y, int *x, int y1, int x1, int y2, int x2)
+void mmove2(POSITION *y, POSITION *x, POSITION y1, POSITION x1, POSITION y2, POSITION x2)
 {
-       int dy, dx, dist, shift;
+       POSITION dy, dx, dist, shift;
 
        /* Extract the distance travelled */
        dy = (*y < y1) ? y1 - *y : *y - y1;
@@ -4922,9 +4884,9 @@ void mmove2(int *y, int *x, int y1, int x1, int y2, int x2)
  *
  * This is slightly (but significantly) different from "los(y1,x1,y2,x2)".
  */
-bool projectable(int y1, int x1, int y2, int x2)
+bool projectable(POSITION y1, POSITION x1, POSITION y2, POSITION x2)
 {
-       int y, x;
+       POSITION y, x;
 
        int grid_n = 0;
        u16b grid_g[512];
@@ -4958,12 +4920,9 @@ bool projectable(int y1, int x1, int y2, int x2)
  *
  * Currently the "m" parameter is unused.
  */
-void scatter(int *yp, int *xp, int y, int x, int d, int m)
+void scatter(POSITION *yp, POSITION *xp, POSITION y, POSITION x, POSITION d, BIT_FLAGS mode)
 {
-       int nx, ny;
-
-       /* Unused */
-       m = m;
+       POSITION nx, ny;
 
        /* Pick a location */
        while (TRUE)
@@ -4978,8 +4937,15 @@ void scatter(int *yp, int *xp, int y, int x, int d, int m)
                /* Ignore "excessively distant" locations */
                if ((d > 1) && (distance(y, x, ny, nx) > d)) continue;
 
-               /* Require "line of projection" */
-               if (projectable(y, x, ny, nx)) break;
+               if (mode & PROJECT_LOS)
+               {
+                       if(los(y, x, ny, nx)) break;
+               }
+               else
+               {
+                       if(projectable(y, x, ny, nx)) break;
+               }
+
        }
 
        /* Save the location */
@@ -4993,7 +4959,7 @@ void scatter(int *yp, int *xp, int y, int x, int d, int m)
 /*
  * Track a new monster
  */
-void health_track(int m_idx)
+void health_track(MONSTER_IDX m_idx)
 {
        /* Mount monster is already tracked */
        if (m_idx && m_idx == p_ptr->riding) return;
@@ -5010,12 +4976,11 @@ void health_track(int m_idx)
 /*
  * Hack -- track the given monster race
  */
-void monster_race_track(int r_idx)
+void monster_race_track(MONRACE_IDX r_idx)
 {
        /* Save this monster ID */
        p_ptr->monster_race_idx = r_idx;
 
-       /* Window stuff */
        p_ptr->window |= (PW_MONSTER);
 }
 
@@ -5024,12 +4989,11 @@ void monster_race_track(int r_idx)
 /*
  * Hack -- track the given object kind
  */
-void object_kind_track(int k_idx)
+void object_kind_track(KIND_OBJECT_IDX k_idx)
 {
        /* Save this monster ID */
        p_ptr->object_kind_idx = k_idx;
 
-       /* Window stuff */
        p_ptr->window |= (PW_OBJECT);
 }
 
@@ -5044,7 +5008,7 @@ void object_kind_track(int k_idx)
  *
  * All disturbance cancels repeated commands, resting, and running.
  */
-void disturb(int stop_search, int stop_travel)
+void disturb(bool stop_search, bool stop_travel)
 {
 #ifndef TRAVEL
        /* Unused */
@@ -5111,7 +5075,8 @@ void disturb(int stop_search, int stop_travel)
  */
 void glow_deep_lava_and_bldg(void)
 {
-       int y, x, i, yy, xx;
+       POSITION y, x, yy, xx;
+       DIRECTION i;
        cave_type *c_ptr;
 
        /* Not in the darkness dungeon */
@@ -5144,3 +5109,81 @@ void glow_deep_lava_and_bldg(void)
        /* Redraw map */
        p_ptr->redraw |= (PR_MAP);
 }
+
+/*!
+* @brief 指定されたマスがモンスターのテレポート可能先かどうかを判定する。
+* @param m_idx モンスターID
+* @param y 移動先Y座標
+* @param x 移動先X座標
+* @param mode オプション
+* @return テレポート先として妥当ならばtrue
+*/
+bool cave_monster_teleportable_bold(MONSTER_IDX m_idx, POSITION y, POSITION x, BIT_FLAGS mode)
+{
+       monster_type *m_ptr = &m_list[m_idx];
+       cave_type    *c_ptr = &cave[y][x];
+       feature_type *f_ptr = &f_info[c_ptr->feat];
+
+       /* Require "teleportable" space */
+       if (!have_flag(f_ptr->flags, FF_TELEPORTABLE)) return FALSE;
+
+       if (c_ptr->m_idx && (c_ptr->m_idx != m_idx)) return FALSE;
+       if (player_bold(y, x)) return FALSE;
+
+       /* Hack -- no teleport onto glyph of warding */
+       if (is_glyph_grid(c_ptr)) return FALSE;
+       if (is_explosive_rune_grid(c_ptr)) return FALSE;
+
+       if (!(mode & TELEPORT_PASSIVE))
+       {
+               if (!monster_can_cross_terrain(c_ptr->feat, &r_info[m_ptr->r_idx], 0)) return FALSE;
+       }
+
+       return TRUE;
+}
+
+/*!
+* @brief 指定されたマスにプレイヤーがテレポート可能かどうかを判定する。
+* @param y 移動先Y座標
+* @param x 移動先X座標
+* @param mode オプション
+* @return テレポート先として妥当ならばtrue
+*/
+bool cave_player_teleportable_bold(POSITION y, POSITION x, BIT_FLAGS mode)
+{
+       cave_type    *c_ptr = &cave[y][x];
+       feature_type *f_ptr = &f_info[c_ptr->feat];
+
+       /* Require "teleportable" space */
+       if (!have_flag(f_ptr->flags, FF_TELEPORTABLE)) return FALSE;
+
+       /* No magical teleporting into vaults and such */
+       if (!(mode & TELEPORT_NONMAGICAL) && (c_ptr->info & CAVE_ICKY)) return FALSE;
+
+       if (c_ptr->m_idx && (c_ptr->m_idx != p_ptr->riding)) return FALSE;
+
+       /* don't teleport on a trap. */
+       if (have_flag(f_ptr->flags, FF_HIT_TRAP)) return FALSE;
+
+       if (!(mode & TELEPORT_PASSIVE))
+       {
+               if (!player_can_enter(c_ptr->feat, 0)) return FALSE;
+
+               if (have_flag(f_ptr->flags, FF_WATER) && have_flag(f_ptr->flags, FF_DEEP))
+               {
+                       if (!p_ptr->levitation && !p_ptr->can_swim) return FALSE;
+               }
+
+               if (have_flag(f_ptr->flags, FF_LAVA) && !p_ptr->immune_fire && !IS_INVULN())
+               {
+                       /* Always forbid deep lava */
+                       if (have_flag(f_ptr->flags, FF_DEEP)) return FALSE;
+
+                       /* Forbid shallow lava when the player don't have levitation */
+                       if (!p_ptr->levitation) return FALSE;
+               }
+
+       }
+
+       return TRUE;
+}