OSDN Git Service

#37353 SINGING_COUNTを定義。 / Define SINGING_COUNT.
[hengband/hengband.git] / src / spells2.c
index 423e23e..02526df 100644 (file)
@@ -109,52 +109,52 @@ void self_knowledge(void)
        info[i++] = buf[1];
        for (v_nr = 0; v_nr < 8; v_nr++)
        {
-               char v_name [20];
+               char vir_name [20];
                char vir_desc[80];
                int tester = p_ptr->virtues[v_nr];
        
-               strcpy(v_name, virtue[(p_ptr->vir_types[v_nr])-1]);
+               strcpy(vir_name, virtue[(p_ptr->vir_types[v_nr])-1]);
  
-               sprintf(vir_desc, _("おっと。%sの情報なし。", "Oops. No info about %s."), v_name);
+               sprintf(vir_desc, _("おっと。%sの情報なし。", "Oops. No info about %s."), vir_name);
                if (tester < -100)
                        sprintf(vir_desc, _("[%s]の対極 (%d)", "You are the polar opposite of %s (%d)."),
-                               v_name, tester);
+                               vir_name, tester);
                else if (tester < -80)
                        sprintf(vir_desc, _("[%s]の大敵 (%d)", "You are an arch-enemy of %s (%d)."),
-                               v_name, tester);
+                               vir_name, tester);
                else if (tester < -60)
                        sprintf(vir_desc, _("[%s]の強敵 (%d)", "You are a bitter enemy of %s (%d)."),
-                               v_name, tester);
+                               vir_name, tester);
                else if (tester < -40)
                        sprintf(vir_desc, _("[%s]の敵 (%d)", "You are an enemy of %s (%d)."),
-                               v_name, tester);
+                               vir_name, tester);
                else if (tester < -20)
                        sprintf(vir_desc, _("[%s]の罪者 (%d)", "You have sinned against %s (%d)."),
-                               v_name, tester);
+                               vir_name, tester);
                else if (tester < 0)
                        sprintf(vir_desc, _("[%s]の迷道者 (%d)", "You have strayed from the path of %s (%d)."),
-                               v_name, tester);
+                               vir_name, tester);
                else if (tester == 0)
                        sprintf(vir_desc, _("[%s]の中立者 (%d)", "You are neutral to %s (%d)."),
-                               v_name, tester);
+                               vir_name, tester);
                else if (tester < 20)
                        sprintf(vir_desc, _("[%s]の小徳者 (%d)", "You are somewhat virtuous in %s (%d)."),
-                               v_name, tester);
+                               vir_name, tester);
                else if (tester < 40)
                        sprintf(vir_desc, _("[%s]の中徳者 (%d)", "You are virtuous in %s (%d)."),
-                               v_name, tester);
+                               vir_name, tester);
                else if (tester < 60)
                        sprintf(vir_desc, _("[%s]の高徳者 (%d)", "You are very virtuous in %s (%d)."),
-                               v_name, tester);
+                               vir_name, tester);
                else if (tester < 80)
                        sprintf(vir_desc, _("[%s]の覇者 (%d)", "You are a champion of %s (%d)."),
-                               v_name, tester);
+                               vir_name, tester);
                else if (tester < 100)
                        sprintf(vir_desc, _("[%s]の偉大な覇者 (%d)", "You are a great champion of %s (%d)."),
-                               v_name, tester);
+                               vir_name, tester);
                else
                        sprintf(vir_desc, _("[%s]の具現者 (%d)", "You are the living embodiment of %s (%d)."),
-               v_name, tester);
+                               vir_name, tester);
        
                strcpy(v_string[v_nr], vir_desc);
        
@@ -1821,7 +1821,7 @@ void report_magics(void)
  * @param known 地形から危険フラグを外すならTRUE
  * @return 効力があった場合TRUEを返す
  */
-static bool detect_feat_flag(int range, int flag, bool known)
+static bool detect_feat_flag(POSITION range, int flag, bool known)
 {
        int       x, y;
        bool      detect = FALSE;
@@ -1834,7 +1834,7 @@ static bool detect_feat_flag(int range, int flag, bool known)
        {
                for (x = 1; x <= cur_wid - 1; x++)
                {
-                       int dist = distance(py, px, y, x);
+                       int dist = distance(p_ptr->y, p_ptr->x, y, x);
                        if (dist > range) continue;
 
                        /* Access the grid */
@@ -1884,13 +1884,13 @@ static bool detect_feat_flag(int range, int flag, bool known)
  * @param known 感知外範囲を超える警告フラグを立てる場合TRUEを返す
  * @return 効力があった場合TRUEを返す
  */
-bool detect_traps(int range, bool known)
+bool detect_traps(POSITION range, bool known)
 {
        bool detect = detect_feat_flag(range, FF_TRAP, known);
 
        if (known) p_ptr->dtrap = TRUE;
 
-       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 0) detect = FALSE;
+       if (music_singing(MUSIC_DETECT) && SINGING_COUNT(p_ptr) > 0) detect = FALSE;
 
        /* Describe */
        if (detect)
@@ -1908,11 +1908,11 @@ bool detect_traps(int range, bool known)
  * @param range 効果範囲
  * @return 効力があった場合TRUEを返す
  */
-bool detect_doors(int range)
+bool detect_doors(POSITION range)
 {
        bool detect = detect_feat_flag(range, FF_DOOR, TRUE);
 
-       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 0) detect = FALSE;
+       if (music_singing(MUSIC_DETECT) && SINGING_COUNT(p_ptr) > 0) detect = FALSE;
 
        /* Describe */
        if (detect)
@@ -1930,11 +1930,11 @@ bool detect_doors(int range)
  * @param range 効果範囲
  * @return 効力があった場合TRUEを返す
  */
-bool detect_stairs(int range)
+bool detect_stairs(POSITION range)
 {
        bool detect = detect_feat_flag(range, FF_STAIRS, TRUE);
 
-       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 0) detect = FALSE;
+       if (music_singing(MUSIC_DETECT) && SINGING_COUNT(p_ptr) > 0) detect = FALSE;
 
        /* Describe */
        if (detect)
@@ -1952,11 +1952,11 @@ bool detect_stairs(int range)
  * @param range 効果範囲
  * @return 効力があった場合TRUEを返す
  */
-bool detect_treasure(int range)
+bool detect_treasure(POSITION range)
 {
        bool detect = detect_feat_flag(range, FF_HAS_GOLD, TRUE);
 
-       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 6) detect = FALSE;
+       if (music_singing(MUSIC_DETECT) && SINGING_COUNT(p_ptr) > 6) detect = FALSE;
 
        /* Describe */
        if (detect)
@@ -1974,10 +1974,10 @@ bool detect_treasure(int range)
  * @param range 効果範囲
  * @return 効力があった場合TRUEを返す
  */
-bool detect_objects_gold(int range)
+bool detect_objects_gold(POSITION range)
 {
        int i, y, x;
-       int range2 = range;
+       POSITION range2 = range;
 
        bool detect = FALSE;
 
@@ -1999,7 +1999,7 @@ bool detect_objects_gold(int range)
                x = o_ptr->ix;
 
                /* Only detect nearby objects */
-               if (distance(py, px, y, x) > range2) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range2) continue;
 
                /* Detect "gold" objects */
                if (o_ptr->tval == TV_GOLD)
@@ -2015,7 +2015,7 @@ bool detect_objects_gold(int range)
                }
        }
 
-       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 6) detect = FALSE;
+       if (music_singing(MUSIC_DETECT) && SINGING_COUNT(p_ptr) > 6) detect = FALSE;
 
        /* Describe */
        if (detect)
@@ -2038,10 +2038,10 @@ bool detect_objects_gold(int range)
  * @param range 効果範囲
  * @return 効力があった場合TRUEを返す
  */
-bool detect_objects_normal(int range)
+bool detect_objects_normal(POSITION range)
 {
        int i, y, x;
-       int range2 = range;
+       POSITION range2 = range;
 
        bool detect = FALSE;
 
@@ -2063,7 +2063,7 @@ bool detect_objects_normal(int range)
                x = o_ptr->ix;
 
                /* Only detect nearby objects */
-               if (distance(py, px, y, x) > range2) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range2) continue;
 
                /* Detect "real" objects */
                if (o_ptr->tval != TV_GOLD)
@@ -2079,7 +2079,7 @@ bool detect_objects_normal(int range)
                }
        }
 
-       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 6) detect = FALSE;
+       if (music_singing(MUSIC_DETECT) && SINGING_COUNT(p_ptr) > 6) detect = FALSE;
 
        /* Describe */
        if (detect)
@@ -2110,7 +2110,7 @@ bool detect_objects_normal(int range)
  * It can probably be argued that this function is now too powerful.
  * </pre>
  */
-bool detect_objects_magic(int range)
+bool detect_objects_magic(POSITION range)
 {
        int i, y, x, tv;
 
@@ -2134,7 +2134,7 @@ bool detect_objects_magic(int range)
                x = o_ptr->ix;
 
                /* Only detect nearby objects */
-               if (distance(py, px, y, x) > range) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range) continue;
 
                /* Examine the tval */
                tv = o_ptr->tval;
@@ -2192,9 +2192,10 @@ bool detect_objects_magic(int range)
  * @param range 効果範囲
  * @return 効力があった場合TRUEを返す
  */
-bool detect_monsters_normal(int range)
+bool detect_monsters_normal(POSITION range)
 {
-       int i, y, x;
+       MONSTER_IDX i;
+       POSITION y, x;
 
        bool flag = FALSE;
 
@@ -2214,7 +2215,7 @@ bool detect_monsters_normal(int range)
                x = m_ptr->fx;
 
                /* Only detect nearby monsters */
-               if (distance(py, px, y, x) > range) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range) continue;
 
                /* Detect all non-invisible monsters */
                if (!(r_ptr->flags2 & RF2_INVISIBLE) || p_ptr->see_inv)
@@ -2233,7 +2234,7 @@ bool detect_monsters_normal(int range)
                }
        }
 
-       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 3) flag = FALSE;
+       if (music_singing(MUSIC_DETECT) && SINGING_COUNT(p_ptr) > 3) flag = FALSE;
 
        /* Describe */
        if (flag)
@@ -2252,9 +2253,10 @@ bool detect_monsters_normal(int range)
  * @param range 効果範囲
  * @return 効力があった場合TRUEを返す
  */
-bool detect_monsters_invis(int range)
+bool detect_monsters_invis(POSITION range)
 {
-       int i, y, x;
+       MONSTER_IDX i;
+       POSITION y, x;
        bool flag = FALSE;
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
@@ -2273,7 +2275,7 @@ bool detect_monsters_invis(int range)
                x = m_ptr->fx;
 
                /* Only detect nearby monsters */
-               if (distance(py, px, y, x) > range) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range) continue;
 
                /* Detect invisible monsters */
                if (r_ptr->flags2 & RF2_INVISIBLE)
@@ -2299,7 +2301,7 @@ bool detect_monsters_invis(int range)
                }
        }
 
-       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 3) flag = FALSE;
+       if (music_singing(MUSIC_DETECT) && SINGING_COUNT(p_ptr) > 3) flag = FALSE;
 
        /* Describe */
        if (flag)
@@ -2317,9 +2319,10 @@ bool detect_monsters_invis(int range)
  * @param range 効果範囲
  * @return 効力があった場合TRUEを返す
  */
-bool detect_monsters_evil(int range)
+bool detect_monsters_evil(POSITION range)
 {
-       int i, y, x;
+       MONSTER_IDX i;
+       POSITION y, x;
        bool flag = FALSE;
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
@@ -2338,7 +2341,7 @@ bool detect_monsters_evil(int range)
                x = m_ptr->fx;
 
                /* Only detect nearby monsters */
-               if (distance(py, px, y, x) > range) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range) continue;
 
                /* Detect evil monsters */
                if (r_ptr->flags3 & RF3_EVIL)
@@ -2386,10 +2389,11 @@ bool detect_monsters_evil(int range)
  * @param range 効果範囲
  * @return 効力があった場合TRUEを返す
  */
-bool detect_monsters_nonliving(int range)
+bool detect_monsters_nonliving(POSITION range)
 {
-       int     i, y, x;
-       bool    flag = FALSE;
+       MONSTER_IDX i;
+       POSITION y, x;
+       bool flag = FALSE;
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
 
@@ -2407,7 +2411,7 @@ bool detect_monsters_nonliving(int range)
                x = m_ptr->fx;
 
                /* Only detect nearby monsters */
-               if (distance(py, px, y, x) > range) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range) continue;
 
                /* Detect non-living monsters */
                if (!monster_living(r_ptr))
@@ -2449,9 +2453,10 @@ bool detect_monsters_nonliving(int range)
  * @param range 効果範囲
  * @return 効力があった場合TRUEを返す
  */
-bool detect_monsters_mind(int range)
+bool detect_monsters_mind(POSITION range)
 {
-       int     i, y, x;
+       MONSTER_IDX i;
+       POSITION y, x;
        bool    flag = FALSE;
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
@@ -2470,7 +2475,7 @@ bool detect_monsters_mind(int range)
                x = m_ptr->fx;
 
                /* Only detect nearby monsters */
-               if (distance(py, px, y, x) > range) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range) continue;
 
                /* Detect non-living monsters */
                if (!(r_ptr->flags2 & RF2_EMPTY_MIND))
@@ -2514,9 +2519,10 @@ bool detect_monsters_mind(int range)
  * @param Match 対応シンボルの混じったモンスター文字列(複数指定化)
  * @return 効力があった場合TRUEを返す
  */
-bool detect_monsters_string(int range, cptr Match)
+bool detect_monsters_string(POSITION range, cptr Match)
 {
-       int i, y, x;
+       MONSTER_IDX i;
+       POSITION y, x;
        bool flag = FALSE;
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
@@ -2535,7 +2541,7 @@ bool detect_monsters_string(int range, cptr Match)
                x = m_ptr->fx;
 
                /* Only detect nearby monsters */
-               if (distance(py, px, y, x) > range) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range) continue;
 
                /* Detect monsters with the same symbol */
                if (my_strchr(Match, r_ptr->d_char))
@@ -2561,7 +2567,7 @@ bool detect_monsters_string(int range, cptr Match)
                }
        }
 
-       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 3) flag = FALSE;
+       if (music_singing(MUSIC_DETECT) && SINGING_COUNT(p_ptr) > 3) flag = FALSE;
 
        /* Describe */
        if (flag)
@@ -2580,9 +2586,10 @@ bool detect_monsters_string(int range, cptr Match)
  * @param match_flag 感知フラグ
  * @return 効力があった場合TRUEを返す
  */
-bool detect_monsters_xxx(int range, u32b match_flag)
+bool detect_monsters_xxx(POSITION range, u32b match_flag)
 {
-       int  i, y, x;
+       MONSTER_IDX i;
+       POSITION y, x;
        bool flag = FALSE;
        cptr desc_monsters = _("変なモンスター", "weird monsters");
 
@@ -2602,7 +2609,7 @@ bool detect_monsters_xxx(int range, u32b match_flag)
                x = m_ptr->fx;
 
                /* Only detect nearby monsters */
-               if (distance(py, px, y, x) > range) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range) continue;
 
                /* Detect evil monsters */
                if (r_ptr->flags3 & (match_flag))
@@ -2662,7 +2669,7 @@ bool detect_monsters_xxx(int range, u32b match_flag)
  * @param range 効果範囲
  * @return 効力があった場合TRUEを返す
  */
-bool detect_all(int range)
+bool detect_all(POSITION range)
 {
        bool detect = FALSE;
 
@@ -2697,7 +2704,7 @@ bool detect_all(int range)
  * this is done in two passes. -- JDL
  * </pre>
  */
-bool project_hack(int typ, int dam)
+bool project_hack(int typ, HIT_POINT dam)
 {
        int     i, x, y;
        int     flg = PROJECT_JUMP | PROJECT_KILL | PROJECT_HIDE;
@@ -2717,7 +2724,7 @@ bool project_hack(int typ, int dam)
                x = m_ptr->fx;
 
                /* Require line of sight */
-               if (!player_has_los_bold(y, x) || !projectable(py, px, y, x)) continue;
+               if (!player_has_los_bold(y, x) || !projectable(p_ptr->y, p_ptr->x, y, x)) continue;
 
                /* Mark the monster */
                m_ptr->mflag |= (MFLAG_TEMP);
@@ -2799,7 +2806,7 @@ bool turn_undead(void)
  * @brief 視界内のアンデッド・モンスターにダメージを与える処理 / Dispel undead monsters
  * @return 効力があった場合TRUEを返す
  */
-bool dispel_undead(int dam)
+bool dispel_undead(HIT_POINT dam)
 {
        bool tester = (project_hack(GF_DISP_UNDEAD, dam));
        if (tester)
@@ -2811,7 +2818,7 @@ bool dispel_undead(int dam)
  * @brief 視界内の邪悪なモンスターにダメージを与える処理 / Dispel evil monsters
  * @return 効力があった場合TRUEを返す
  */
-bool dispel_evil(int dam)
+bool dispel_evil(HIT_POINT dam)
 {
        return (project_hack(GF_DISP_EVIL, dam));
 }
@@ -2820,7 +2827,7 @@ bool dispel_evil(int dam)
  * @brief 視界内の善良なモンスターにダメージを与える処理 / Dispel good monsters
  * @return 効力があった場合TRUEを返す
  */
-bool dispel_good(int dam)
+bool dispel_good(HIT_POINT dam)
 {
        return (project_hack(GF_DISP_GOOD, dam));
 }
@@ -2829,7 +2836,7 @@ bool dispel_good(int dam)
  * @brief 視界内のあらゆるモンスターにダメージを与える処理 / Dispel all monsters
  * @return 効力があった場合TRUEを返す
  */
-bool dispel_monsters(int dam)
+bool dispel_monsters(HIT_POINT dam)
 {
        return (project_hack(GF_DISP_ALL, dam));
 }
@@ -2838,7 +2845,7 @@ bool dispel_monsters(int dam)
  * @brief 視界内の生命のあるモンスターにダメージを与える処理 / Dispel 'living' monsters
  * @return 効力があった場合TRUEを返す
  */
-bool dispel_living(int dam)
+bool dispel_living(HIT_POINT dam)
 {
        return (project_hack(GF_DISP_LIVING, dam));
 }
@@ -2847,7 +2854,7 @@ bool dispel_living(int dam)
  * @brief 視界内の悪魔系モンスターにダメージを与える処理 / Dispel 'living' monsters
  * @return 効力があった場合TRUEを返す
  */
-bool dispel_demons(int dam)
+bool dispel_demons(HIT_POINT dam)
 {
        return (project_hack(GF_DISP_DEMON, dam));
 }
@@ -2866,9 +2873,9 @@ bool crusade(void)
  * @param who 怒らせる原因を起こしたモンスター(0ならばプレイヤー)
  * @return なし
  */
-void aggravate_monsters(int who)
+void aggravate_monsters(MONSTER_IDX who)
 {
-       int     i;
+       MONSTER_IDX i;
        bool    sleep = FALSE;
        bool    speed = FALSE;
 
@@ -2929,7 +2936,7 @@ void aggravate_monsters(int who)
  * @param spell_name 抹殺効果を起こした魔法の名前
  * @return 効力があった場合TRUEを返す
  */
-bool genocide_aux(int m_idx, int power, bool player_cast, int dam_side, cptr spell_name)
+bool genocide_aux(MONSTER_IDX m_idx, int power, bool player_cast, int dam_side, cptr spell_name)
 {
        int          msec = delay_factor * delay_factor * delay_factor;
        monster_type *m_ptr = &m_list[m_idx];
@@ -3001,7 +3008,7 @@ bool genocide_aux(int m_idx, int power, bool player_cast, int dam_side, cptr spe
        }
 
        /* Visual feedback */
-       move_cursor_relative(py, px);
+       move_cursor_relative(p_ptr->y, p_ptr->x);
 
        /* Redraw */
        p_ptr->redraw |= (PR_HP);
@@ -3030,7 +3037,7 @@ bool genocide_aux(int m_idx, int power, bool player_cast, int dam_side, cptr spe
  */
 bool symbol_genocide(int power, bool player_cast)
 {
-       int  i;
+       MONSTER_IDX i;
        char typ;
        bool result = FALSE;
 
@@ -3077,7 +3084,7 @@ bool symbol_genocide(int power, bool player_cast)
  */
 bool mass_genocide(int power, bool player_cast)
 {
-       int  i;
+       MONSTER_IDX i;
        bool result = FALSE;
 
        /* Prevent mass genocide in quest levels */
@@ -3119,7 +3126,7 @@ bool mass_genocide(int power, bool player_cast)
  */
 bool mass_genocide_undead(int power, bool player_cast)
 {
-       int  i;
+       MONSTER_IDX i;
        bool result = FALSE;
 
        /* Prevent mass genocide in quest levels */
@@ -3162,9 +3169,9 @@ bool mass_genocide_undead(int power, bool player_cast)
  */
 bool probing(void)
 {
-       int     i, speed;
-       int cu, cv;
-       bool    probe = FALSE;
+       int i, speed;
+       bool_hack cu, cv;
+       bool probe = FALSE;
        char buf[256];
        cptr align;
 
@@ -3233,11 +3240,9 @@ bool probing(void)
 #endif
 
                        /* Describe the monster */
-#ifdef JP
-sprintf(buf,"%s ... 属性:%s HP:%d/%d AC:%d 速度:%s%d 経験:", m_name, align, m_ptr->hp, m_ptr->maxhp, r_ptr->ac, (speed > 0) ? "+" : "", speed);
-#else
-sprintf(buf, "%s ... align:%s HP:%d/%d AC:%d speed:%s%d exp:", m_name, align, m_ptr->hp, m_ptr->maxhp, r_ptr->ac, (speed > 0) ? "+" : "", speed);
-#endif
+                       sprintf(buf,_("%s ... 属性:%s HP:%d/%d AC:%d 速度:%s%d 経験:", "%s ... align:%s HP:%d/%d AC:%d speed:%s%d exp:"),
+                               m_name, align, (int)m_ptr->hp, (int)m_ptr->maxhp, r_ptr->ac, (speed > 0) ? "+" : "", speed);
+
                        if (r_ptr->next_r_idx)
                        {
                                strcat(buf, format("%d/%d ", m_ptr->exp, r_ptr->next_exp));
@@ -3276,8 +3281,6 @@ sprintf(buf, "%s ... align:%s HP:%d/%d AC:%d speed:%s%d exp:", m_name, align, m_
                        /* Learn everything about this monster */
                        if (lore_do_probe(m_ptr->r_idx))
                        {
-                               char buf[80];
-
                                /* Get base name of monster */
                                strcpy(buf, (r_name + r_ptr->name));
 
@@ -3592,7 +3595,7 @@ bool destroy_area(int y1, int x1, int r, bool in_generate)
 
                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);
                }
        }
 
@@ -3628,11 +3631,12 @@ bool destroy_area(int y1, int x1, int r, bool in_generate)
  * This has allowed massive simplification of the "monster" code.
  * </pre>
  */
-bool earthquake_aux(int cy, int cx, int r, int m_idx)
+bool earthquake_aux(int cy, int cx, int r, MONSTER_IDX m_idx)
 {
        int             i, t, y, x, yy, xx, dy, dx;
        int             damage = 0;
-       int             sn = 0, sy = 0, sx = 0;
+       int             sn = 0;
+       POSITION        sy = 0, sx = 0;
        bool            hurt = FALSE;
        cave_type       *c_ptr;
        bool            map[32][32];
@@ -3701,8 +3705,8 @@ bool earthquake_aux(int cy, int cx, int r, int m_idx)
                for (i = 0; i < 8; i++)
                {
                        /* Access the location */
-                       y = py + ddy_ddd[i];
-                       x = px + ddx_ddd[i];
+                       y = p_ptr->y + ddy_ddd[i];
+                       x = p_ptr->x + ddx_ddd[i];
 
                        /* Skip non-empty grids */
                        if (!cave_empty_bold(y, x)) continue;
@@ -3783,7 +3787,7 @@ bool earthquake_aux(int cy, int cx, int r, int m_idx)
                }
 
                /* Important -- no wall on player */
-               map[16+py-cy][16+px-cx] = FALSE;
+               map[16+p_ptr->y-cy][16+p_ptr->x-cx] = FALSE;
 
                /* Take some damage */
                if (damage)
@@ -3930,13 +3934,13 @@ bool earthquake_aux(int cy, int cx, int r, int m_idx)
                                        /* Hack -- Escape from the rock */
                                        if (sn)
                                        {
-                                               int m_idx = cave[yy][xx].m_idx;
+                                               IDX m_idx_aux = cave[yy][xx].m_idx;
 
                                                /* Update the old location */
                                                cave[yy][xx].m_idx = 0;
 
                                                /* Update the new location */
-                                               cave[sy][sx].m_idx = m_idx;
+                                               cave[sy][sx].m_idx = m_idx_aux;
 
                                                /* Move the monster */
                                                m_ptr->fy = sy;
@@ -4076,7 +4080,7 @@ bool earthquake_aux(int cy, int cx, int r, int m_idx)
 
        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);
        }
 
        /* Success */
@@ -4089,6 +4093,7 @@ bool earthquake_aux(int cy, int cx, int r, int m_idx)
  * @return 効力があった場合TRUEを返す
  * @param cy 中心Y座標
  * @param cx 中心X座標
+ * @param r 効果半径
  */
 bool earthquake(int cy, int cx, int r)
 {
@@ -4101,7 +4106,7 @@ bool earthquake(int cy, int cx, int r)
  */
 void discharge_minion(void)
 {
-       int i;
+       MONSTER_IDX i;
        bool okay = TRUE;
 
        for (i = 1; i < m_max; i++)
@@ -4117,7 +4122,7 @@ void discharge_minion(void)
        }
        for (i = 1; i < m_max; i++)
        {
-               int dam;
+               HIT_POINT dam;
                monster_type *m_ptr = &m_list[i];
                monster_race *r_ptr;
 
@@ -4424,7 +4429,7 @@ static void cave_temp_room_aux(int y, int x, bool only_room, bool (*pass_bold)(i
                if (!in_bounds2(y, x)) return;
 
                /* Do not exceed the maximum spell range */
-               if (distance(py, px, y, x) > MAX_RANGE) return;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > MAX_RANGE) return;
 
                /* Verify this grid */
                /*
@@ -4454,7 +4459,7 @@ static void cave_temp_room_aux(int y, int x, bool only_room, bool (*pass_bold)(i
 /*!
  * @brief 指定のマスが光を通すか(LOSフラグを持つか)を返す。 / Aux function -- see below
  * @param y 指定Y座標
- * @param y 指定X座標
+ * @param x 指定X座標
  * @return 光を通すならばtrueを返す。
  */
 static bool cave_pass_lite_bold(int y, int x)
@@ -4465,7 +4470,7 @@ static bool cave_pass_lite_bold(int y, int x)
 /*!
  * @brief 部屋内にある一点の周囲がいくつ光を通すかをグローバル変数temp_nに返す / Aux function -- see below
  * @param y 指定Y座標
- * @param y 指定X座標
+ * @param x 指定X座標
  * @return なし
  */
 static void cave_temp_lite_room_aux(int y, int x)
@@ -4476,7 +4481,7 @@ static void cave_temp_lite_room_aux(int y, int x)
 /*!
  * @brief 指定のマスが光を通さず射線のみを通すかを返す。 / Aux function -- see below
  * @param y 指定Y座標
- * @param y 指定X座標
+ * @param x 指定X座標
  * @return 射線を通すならばtrueを返す。
  */
 static bool cave_pass_dark_bold(int y, int x)
@@ -4488,7 +4493,7 @@ static bool cave_pass_dark_bold(int y, int x)
 /*!
  * @brief 部屋内にある一点の周囲がいくつ射線を通すかをグローバル変数temp_nに返す / Aux function -- see below
  * @param y 指定Y座標
- * @param y 指定X座標
+ * @param x 指定X座標
  * @return なし
  */
 static void cave_temp_unlite_room_aux(int y, int x)
@@ -4499,8 +4504,8 @@ static void cave_temp_unlite_room_aux(int y, int x)
 
 /*!
  * @brief 指定された部屋内を照らす / Illuminate any room containing the given location.
- * @param y 指定Y座標
- * @param y 指定X座標
+ * @param y1 指定Y座標
+ * @param x1 指定X座標
  * @return なし
  */
 void lite_room(int y1, int x1)
@@ -4536,15 +4541,15 @@ void lite_room(int y1, int x1)
 
        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);
        }
 }
 
 
 /*!
  * @brief 指定された部屋内を暗くする / Darken all rooms containing the given location
- * @param y 指定Y座標
- * @param y 指定X座標
+ * @param y1 指定Y座標
+ * @param x1 指定X座標
  * @return なし
  */
 void unlite_room(int y1, int x1)
@@ -4583,13 +4588,13 @@ void unlite_room(int y1, int x1)
 
 /*!
  * @brief プレイヤー位置を中心にLITE_WEAK属性を通じた照明処理を行う / Hack -- call light around the player Affect all monsters in the projection radius
- * @param y 指定Y座標
- * @param y 指定X座標
+ * @param dam 威力
+ * @param rad 効果半径
  * @return 作用が実際にあった場合TRUEを返す
  */
-bool lite_area(int dam, int rad)
+bool lite_area(HIT_POINT dam, int rad)
 {
-       int flg = PROJECT_GRID | PROJECT_KILL;
+       BIT_FLAGS flg = PROJECT_GRID | PROJECT_KILL;
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS)
        {
@@ -4604,10 +4609,10 @@ bool lite_area(int dam, int rad)
        }
 
        /* Hook into the "project()" function */
-       (void)project(0, rad, py, px, dam, GF_LITE_WEAK, flg, -1);
+       (void)project(0, rad, p_ptr->y, p_ptr->x, dam, GF_LITE_WEAK, flg, -1);
 
        /* Lite up the room */
-       lite_room(py, px);
+       lite_room(p_ptr->y, p_ptr->x);
 
        /* Assume seen */
        return (TRUE);
@@ -4616,13 +4621,13 @@ bool lite_area(int dam, int rad)
 
 /*!
  * @brief プレイヤー位置を中心にLITE_DARK属性を通じた消灯処理を行う / Hack -- call light around the player Affect all monsters in the projection radius
- * @param y 指定Y座標
- * @param y 指定X座標
+ * @param dam 威力
+ * @param rad 効果半径
  * @return 作用が実際にあった場合TRUEを返す
  */
-bool unlite_area(int dam, int rad)
+bool unlite_area(HIT_POINT dam, int rad)
 {
-       int flg = PROJECT_GRID | PROJECT_KILL;
+       BIT_FLAGS flg = PROJECT_GRID | PROJECT_KILL;
 
        /* Hack -- Message */
        if (!p_ptr->blind)
@@ -4631,10 +4636,10 @@ bool unlite_area(int dam, int rad)
        }
 
        /* Hook into the "project()" function */
-       (void)project(0, rad, py, px, dam, GF_DARK_WEAK, flg, -1);
+       (void)project(0, rad, p_ptr->y, p_ptr->x, dam, GF_DARK_WEAK, flg, -1);
 
        /* Lite up the room */
-       unlite_room(py, px);
+       unlite_room(p_ptr->y, p_ptr->x);
 
        /* Assume seen */
        return (TRUE);
@@ -4656,16 +4661,16 @@ bool unlite_area(int dam, int rad)
  * Affect grids, objects, and monsters
  * </pre>
  */
-bool fire_ball(int typ, int dir, int dam, int rad)
+bool fire_ball(int typ, int dir, HIT_POINT dam, int rad)
 {
        int tx, ty;
 
-       int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
 
        if (typ == GF_CONTROL_LIVING) flg|= PROJECT_HIDE;
        /* Use the given direction */
-       tx = px + 99 * ddx[dir];
-       ty = py + 99 * ddy[dir];
+       tx = p_ptr->x + 99 * ddx[dir];
+       ty = p_ptr->y + 99 * ddy[dir];
 
        /* Hack -- Use an actual "target" */
        if ((dir == 5) && target_okay())
@@ -4695,15 +4700,15 @@ bool fire_ball(int typ, int dir, int dam, int rad)
  * Affect grids, objects, and monsters
  * </pre>
  */
-bool fire_rocket(int typ, int dir, int dam, int rad)
+bool fire_rocket(int typ, int dir, HIT_POINT dam, int rad)
 {
        int tx, ty;
 
-       int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
 
        /* Use the given direction */
-       tx = px + 99 * ddx[dir];
-       ty = py + 99 * ddy[dir];
+       tx = p_ptr->x + 99 * ddx[dir];
+       ty = p_ptr->y + 99 * ddy[dir];
 
        /* Hack -- Use an actual "target" */
        if ((dir == 5) && target_okay())
@@ -4731,15 +4736,15 @@ bool fire_rocket(int typ, int dir, int dam, int rad)
  * Affect grids, objects, and monsters
  * </pre>
  */
-bool fire_ball_hide(int typ, int dir, int dam, int rad)
+bool fire_ball_hide(int typ, int dir, HIT_POINT dam, int rad)
 {
        int tx, ty;
 
-       int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_HIDE;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_HIDE;
 
        /* Use the given direction */
-       tx = px + 99 * ddx[dir];
-       ty = py + 99 * ddy[dir];
+       tx = p_ptr->x + 99 * ddx[dir];
+       ty = p_ptr->y + 99 * ddy[dir];
 
        /* Hack -- Use an actual "target" */
        if ((dir == 5) && target_okay())
@@ -4758,9 +4763,10 @@ bool fire_ball_hide(int typ, int dir, int dam, int rad)
  * @brief メテオ系スペルの発動 / Cast a meteor spell
  * @param who スぺル詠唱者のモンスターID(0=プレイヤー)
  * @param typ 効果属性
- * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
  * @param dam 威力
  * @param rad 半径
+ * @param y 中心点Y座標
+ * @param x 中心点X座標
  * @return 作用が実際にあった場合TRUEを返す
  * @details
  * <pre>
@@ -4768,13 +4774,12 @@ bool fire_ball_hide(int typ, int dir, int dam, int rad)
  * player, or outside source, that starts out at an arbitrary location, and 
  * leaving no trail from the "caster" to the target.  This function is 
  * especially useful for bombardments and similar. -LM-
- *
  * Option to hurt the player.
  * </pre>
  */
-bool fire_meteor(int who, int typ, int y, int x, int dam, int rad)
+bool fire_meteor(MONSTER_IDX who, EFFECT_ID typ, POSITION y, POSITION x, HIT_POINT dam, POSITION rad)
 {
-       int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
 
        /* Analyze the "target" and the caster. */
        return (project(who, rad, y, x, dam, typ, flg, -1));
@@ -4783,7 +4788,6 @@ bool fire_meteor(int who, int typ, int y, int x, int dam, int rad)
 
 /*!
  * @brief ブラスト系スペルの発動 / Cast a blast spell
- * @param who スぺル詠唱者のモンスターID(0=プレイヤー)
  * @param typ 効果属性
  * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
  * @param dd 威力ダイス数
@@ -4798,7 +4802,7 @@ bool fire_blast(int typ, int dir, int dd, int ds, int num, int dev)
        int ty, tx, y, x;
        int i;
 
-       int flg = PROJECT_FAST | PROJECT_THRU | PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE | PROJECT_GRID;
+       BIT_FLAGS flg = PROJECT_FAST | PROJECT_THRU | PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE | PROJECT_GRID;
 
        /* Assume okay */
        bool result = TRUE;
@@ -4806,8 +4810,8 @@ bool fire_blast(int typ, int dir, int dd, int ds, int num, int dev)
        /* Use the given direction */
        if (dir != 5)
        {
-               ly = ty = py + 20 * ddy[dir];
-               lx = tx = px + 20 * ddx[dir];
+               ly = ty = p_ptr->y + 20 * ddy[dir];
+               lx = tx = p_ptr->x + 20 * ddx[dir];
        }
 
        /* Use an actual "target" */
@@ -4816,11 +4820,11 @@ bool fire_blast(int typ, int dir, int dd, int ds, int num, int dev)
                tx = target_col;
                ty = target_row;
 
-               lx = 20 * (tx - px) + px;
-               ly = 20 * (ty - py) + py;
+               lx = 20 * (tx - p_ptr->x) + p_ptr->x;
+               ly = 20 * (ty - p_ptr->y) + p_ptr->y;
        }
 
-       ld = distance(py, px, ly, lx);
+       ld = distance(p_ptr->y, p_ptr->x, ly, lx);
 
        /* Blast */
        for (i = 0; i < num; i++)
@@ -4864,8 +4868,8 @@ bool teleport_swap(int dir)
        }
        else
        {
-               tx = px + ddx[dir];
-               ty = py + ddy[dir];
+               tx = p_ptr->x + ddx[dir];
+               ty = p_ptr->y + ddy[dir];
        }
        c_ptr = &cave[ty][tx];
 
@@ -4883,7 +4887,7 @@ bool teleport_swap(int dir)
                return FALSE;
        }
 
-       if ((c_ptr->info & CAVE_ICKY) || (distance(ty, tx, py, px) > p_ptr->lev * 3 / 2 + 10))
+       if ((c_ptr->info & CAVE_ICKY) || (distance(ty, tx, p_ptr->y, p_ptr->x) > p_ptr->lev * 3 / 2 + 10))
        {
                msg_print(_("失敗した。", "Failed to swap."));
 
@@ -4924,7 +4928,7 @@ bool teleport_swap(int dir)
  * @param flg フラグ
  * @return 作用が実際にあった場合TRUEを返す
  */
-bool project_hook(int typ, int dir, int dam, int flg)
+bool project_hook(int typ, int dir, HIT_POINT dam, BIT_FLAGS flg)
 {
        int tx, ty;
 
@@ -4932,8 +4936,8 @@ bool project_hook(int typ, int dir, int dam, int flg)
        flg |= (PROJECT_THRU);
 
        /* Use the given direction */
-       tx = px + ddx[dir];
-       ty = py + ddy[dir];
+       tx = p_ptr->x + ddx[dir];
+       ty = p_ptr->y + ddy[dir];
 
        /* Hack -- Use an actual "target" */
        if ((dir == 5) && target_okay())
@@ -4959,9 +4963,9 @@ bool project_hook(int typ, int dir, int dam, int flg)
  * Affect monsters and grids (not objects).
  * </pre>
  */
-bool fire_bolt(int typ, int dir, int dam)
+bool fire_bolt(int typ, int dir, HIT_POINT dam)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_GRID;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_GRID;
        if (typ != GF_ARROW) flg |= PROJECT_REFLECTABLE;
        return (project_hook(typ, dir, dam, flg));
 }
@@ -4979,9 +4983,9 @@ bool fire_bolt(int typ, int dir, int dam)
  * Affect monsters, grids and objects.
  * </pre>
  */
-bool fire_beam(int typ, int dir, int dam)
+bool fire_beam(int typ, int dir, HIT_POINT dam)
 {
-       int flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_GRID | PROJECT_ITEM;
+       BIT_FLAGS flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_GRID | PROJECT_ITEM;
        return (project_hook(typ, dir, dam, flg));
 }
 
@@ -4999,7 +5003,7 @@ bool fire_beam(int typ, int dir, int dam)
  * Affect monsters, grids and objects.
  * </pre>
  */
-bool fire_bolt_or_beam(int prob, int typ, int dir, int dam)
+bool fire_bolt_or_beam(int prob, int typ, int dir, HIT_POINT dam)
 {
        if (randint0(100) < prob)
        {
@@ -5017,9 +5021,9 @@ bool fire_bolt_or_beam(int prob, int typ, int dir, int dam)
  * @param dam 威力
  * @return 作用が実際にあった場合TRUEを返す
  */
-bool lite_line(int dir, int dam)
+bool lite_line(int dir, HIT_POINT dam)
 {
-       int flg = PROJECT_BEAM | PROJECT_GRID | PROJECT_KILL;
+       BIT_FLAGS flg = PROJECT_BEAM | PROJECT_GRID | PROJECT_KILL;
        return (project_hook(GF_LITE_WEAK, dir, dam, flg));
 }
 
@@ -5029,9 +5033,9 @@ bool lite_line(int dir, int dam)
  * @param dam 威力
  * @return 作用が実際にあった場合TRUEを返す
  */
-bool drain_life(int dir, int dam)
+bool drain_life(int dir, HIT_POINT dam)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        return (project_hook(GF_OLD_DRAIN, dir, dam, flg));
 }
 
@@ -5041,9 +5045,9 @@ bool drain_life(int dir, int dam)
  * @param dam 威力
  * @return 作用が実際にあった場合TRUEを返す
  */
-bool wall_to_mud(int dir, int dam)
+bool wall_to_mud(int dir, HIT_POINT dam)
 {
-       int flg = PROJECT_BEAM | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
+       BIT_FLAGS flg = PROJECT_BEAM | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
        return (project_hook(GF_KILL_WALL, dir, dam, flg));
 }
 
@@ -5054,7 +5058,7 @@ bool wall_to_mud(int dir, int dam)
  */
 bool wizard_lock(int dir)
 {
-       int flg = PROJECT_BEAM | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
+       BIT_FLAGS flg = PROJECT_BEAM | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
        return (project_hook(GF_JAM_DOOR, dir, 20 + randint1(30), flg));
 }
 
@@ -5065,7 +5069,7 @@ bool wizard_lock(int dir)
  */
 bool destroy_door(int dir)
 {
-       int flg = PROJECT_BEAM | PROJECT_GRID | PROJECT_ITEM;
+       BIT_FLAGS flg = PROJECT_BEAM | PROJECT_GRID | PROJECT_ITEM;
        return (project_hook(GF_KILL_DOOR, dir, 0, flg));
 }
 
@@ -5076,7 +5080,7 @@ bool destroy_door(int dir)
  */
 bool disarm_trap(int dir)
 {
-       int flg = PROJECT_BEAM | PROJECT_GRID | PROJECT_ITEM;
+       BIT_FLAGS flg = PROJECT_BEAM | PROJECT_GRID | PROJECT_ITEM;
        return (project_hook(GF_KILL_TRAP, dir, 0, flg));
 }
 
@@ -5086,9 +5090,9 @@ bool disarm_trap(int dir)
  * @param dam 威力
  * @return 作用が実際にあった場合TRUEを返す
  */
-bool heal_monster(int dir, int dam)
+bool heal_monster(int dir, HIT_POINT dam)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        return (project_hook(GF_OLD_HEAL, dir, dam, flg));
 }
 
@@ -5100,7 +5104,7 @@ bool heal_monster(int dir, int dam)
  */
 bool speed_monster(int dir, int power)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        return (project_hook(GF_OLD_SPEED, dir, power, flg));
 }
 
@@ -5112,7 +5116,7 @@ bool speed_monster(int dir, int power)
  */
 bool slow_monster(int dir, int power)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        return (project_hook(GF_OLD_SLOW, dir, power, flg));
 }
 
@@ -5124,7 +5128,7 @@ bool slow_monster(int dir, int power)
  */
 bool sleep_monster(int dir, int power)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        return (project_hook(GF_OLD_SLEEP, dir, power, flg));
 }
 
@@ -5158,7 +5162,7 @@ bool stasis_evil(int dir)
  */
 bool confuse_monster(int dir, int plev)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        return (project_hook(GF_OLD_CONF, dir, plev, flg));
 }
 
@@ -5170,7 +5174,7 @@ bool confuse_monster(int dir, int plev)
  */
 bool stun_monster(int dir, int plev)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        return (project_hook(GF_STUN, dir, plev, flg));
 }
 
@@ -5182,7 +5186,7 @@ bool stun_monster(int dir, int plev)
  */
 bool poly_monster(int dir, int power)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        bool tester = (project_hook(GF_OLD_POLY, dir, power, flg));
        if (tester)
                chg_virtue(V_CHANCE, 1);
@@ -5196,7 +5200,7 @@ bool poly_monster(int dir, int power)
  */
 bool clone_monster(int dir)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        return (project_hook(GF_OLD_CLONE, dir, 0, flg));
 }
 
@@ -5208,7 +5212,7 @@ bool clone_monster(int dir)
  */
 bool fear_monster(int dir, int plev)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        return (project_hook(GF_TURN_ALL, dir, plev, flg));
 }
 
@@ -5220,7 +5224,7 @@ bool fear_monster(int dir, int plev)
  */
 bool death_ray(int dir, int plev)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        return (project_hook(GF_DEATH_RAY, dir, plev * 200, flg));
 }
 
@@ -5232,7 +5236,7 @@ bool death_ray(int dir, int plev)
  */
 bool teleport_monster(int dir, int distance)
 {
-       int flg = PROJECT_BEAM | PROJECT_KILL;
+       BIT_FLAGS flg = PROJECT_BEAM | PROJECT_KILL;
        return (project_hook(GF_AWAY_ALL, dir, distance, flg));
 }
 
@@ -5242,8 +5246,8 @@ bool teleport_monster(int dir, int distance)
  */
 bool door_creation(void)
 {
-       int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
-       return (project(0, 1, py, px, 0, GF_MAKE_DOOR, flg, -1));
+       BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
+       return (project(0, 1, p_ptr->y, p_ptr->x, 0, GF_MAKE_DOOR, flg, -1));
 }
 
 /*!
@@ -5254,7 +5258,7 @@ bool door_creation(void)
  */
 bool trap_creation(int y, int x)
 {
-       int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
+       BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
        return (project(0, 1, y, x, 0, GF_MAKE_TRAP, flg, -1));
 }
 
@@ -5264,8 +5268,8 @@ bool trap_creation(int y, int x)
  */
 bool tree_creation(void)
 {
-       int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
-       return (project(0, 1, py, px, 0, GF_MAKE_TREE, flg, -1));
+       BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
+       return (project(0, 1, p_ptr->y, p_ptr->x, 0, GF_MAKE_TREE, flg, -1));
 }
 
 /*!
@@ -5274,8 +5278,8 @@ bool tree_creation(void)
  */
 bool glyph_creation(void)
 {
-       int flg = PROJECT_GRID | PROJECT_ITEM;
-       return (project(0, 1, py, px, 0, GF_MAKE_GLYPH, flg, -1));
+       BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM;
+       return (project(0, 1, p_ptr->y, p_ptr->x, 0, GF_MAKE_GLYPH, flg, -1));
 }
 
 /*!
@@ -5284,9 +5288,9 @@ bool glyph_creation(void)
  */
 bool wall_stone(void)
 {
-       int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
+       BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
 
-       bool dummy = (project(0, 1, py, px, 0, GF_STONE_WALL, flg, -1));
+       bool dummy = (project(0, 1, p_ptr->y, p_ptr->x, 0, GF_STONE_WALL, flg, -1));
 
        /* Update stuff */
        p_ptr->update |= (PU_FLOW);
@@ -5297,33 +5301,54 @@ bool wall_stone(void)
        return dummy;
 }
 
-
+/*!
+ * @brief ドア破壊処理(プレイヤー中心に周囲1マス)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool destroy_doors_touch(void)
 {
-       int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
-       return (project(0, 1, py, px, 0, GF_KILL_DOOR, flg, -1));
+       BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
+       return (project(0, 1, p_ptr->y, p_ptr->x, 0, GF_KILL_DOOR, flg, -1));
 }
 
+/*!
+ * @brief トラップ解除処理(プレイヤー中心に周囲1マス)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool disarm_traps_touch(void)
 {
-       int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
-       return (project(0, 1, py, px, 0, GF_KILL_TRAP, flg, -1));
+       BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
+       return (project(0, 1, p_ptr->y, p_ptr->x, 0, GF_KILL_TRAP, flg, -1));
 }
 
+/*!
+ * @brief スリープモンスター処理(プレイヤー中心に周囲1マス)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool sleep_monsters_touch(void)
 {
-       int flg = PROJECT_KILL | PROJECT_HIDE;
-       return (project(0, 1, py, px, p_ptr->lev, GF_OLD_SLEEP, flg, -1));
+       BIT_FLAGS flg = PROJECT_KILL | PROJECT_HIDE;
+       return (project(0, 1, p_ptr->y, p_ptr->x, p_ptr->lev, GF_OLD_SLEEP, flg, -1));
 }
 
 
-bool animate_dead(int who, int y, int x)
+/*!
+ * @brief 死者復活処理(起点より周囲5マス)
+ * @param who 術者モンスターID(0ならばプレイやー)
+ * @param y 起点Y座標
+ * @param x 起点X座標
+ * @return 作用が実際にあった場合TRUEを返す
+ */
+bool animate_dead(MONSTER_IDX who, POSITION y, POSITION x)
 {
-       int flg = PROJECT_ITEM | PROJECT_HIDE;
+       BIT_FLAGS flg = PROJECT_ITEM | PROJECT_HIDE;
        return (project(who, 5, y, x, 0, GF_ANIM_DEAD, flg, -1));
 }
 
-
+/*!
+ * @brief 混沌招来処理
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 void call_chaos(void)
 {
        int Chaos_type, dummy, dir;
@@ -5335,7 +5360,7 @@ void call_chaos(void)
                GF_ELEC,      GF_POIS,    GF_ACID,    GF_COLD,
                GF_FIRE,      GF_MISSILE, GF_ARROW,   GF_PLASMA,
                GF_HOLY_FIRE, GF_WATER,   GF_LITE,    GF_DARK,
-               GF_FORCE,     GF_INERTIA, GF_MANA,    GF_METEOR,
+               GF_FORCE,     GF_INERTIAL, GF_MANA,    GF_METEOR,
                GF_ICE,       GF_CHAOS,   GF_NETHER,  GF_DISENCHANT,
                GF_SHARDS,    GF_SOUND,   GF_NEXUS,   GF_CONFUSION,
                GF_TIME,      GF_GRAVITY, GF_ROCKET,  GF_NUKE,
@@ -5372,17 +5397,22 @@ void call_chaos(void)
        }
 }
 
-
-/*
- * Activate the evil Topi Ylinen curse
+/*!
+ * @brief TY_CURSE処理発動 / Activate the evil Topi Ylinen curse
+ * @param stop_ty 再帰処理停止フラグ
+ * @param count 発動回数
+ * @return 作用が実際にあった場合TRUEを返す
+ * @details
+ * <pre>
  * rr9: Stop the nasty things when a Cyberdemon is summoned
  * or the player gets paralyzed.
+ * </pre>
  */
 bool activate_ty_curse(bool stop_ty, int *count)
 {
        int     i = 0;
 
-       int flg = (PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_JUMP);
+       BIT_FLAGS flg = (PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_JUMP);
 
        do
        {
@@ -5392,15 +5422,15 @@ bool activate_ty_curse(bool stop_ty, int *count)
                        if (!(*count))
                        {
                                msg_print(_("地面が揺れた...", "The ground trembles..."));
-                               earthquake(py, px, 5 + randint0(10));
+                               earthquake(p_ptr->y, p_ptr->x, 5 + randint0(10));
                                if (!one_in_(6)) break;
                        }
                case 30: case 31:
                        if (!(*count))
                        {
-                               int dam = damroll(10, 10);
+                               HIT_POINT dam = damroll(10, 10);
                                msg_print(_("純粋な魔力の次元への扉が開いた!", "A portal opens to a plane of raw mana!"));
-                               project(0, 8, py, px, dam, GF_MANA, flg, -1);
+                               project(0, 8, p_ptr->y, p_ptr->x, dam, GF_MANA, flg, -1);
                                take_hit(DAMAGE_NOESCAPE, dam, _("純粋な魔力の解放", "released pure mana"), -1);
                                if (!one_in_(6)) break;
                        }
@@ -5409,7 +5439,7 @@ bool activate_ty_curse(bool stop_ty, int *count)
                        {
                                msg_print(_("周囲の空間が歪んだ!", "Space warps about you!"));
                                teleport_player(damroll(10, 10), TELEPORT_PASSIVE);
-                               if (randint0(13)) (*count) += activate_hi_summon(py, px, FALSE);
+                               if (randint0(13)) (*count) += activate_hi_summon(p_ptr->y, p_ptr->x, FALSE);
                                if (!one_in_(6)) break;
                        }
                case 34:
@@ -5417,7 +5447,7 @@ bool activate_ty_curse(bool stop_ty, int *count)
                        wall_breaker();
                        if (!randint0(7))
                        {
-                               project(0, 7, py, px, 50, GF_KILL_WALL, flg, -1);
+                               project(0, 7, p_ptr->y, p_ptr->x, 50, GF_KILL_WALL, flg, -1);
                                take_hit(DAMAGE_NOESCAPE, 50, _("エネルギーのうねり", "surge of energy"), -1);
                        }
                        if (!one_in_(6)) break;
@@ -5425,10 +5455,10 @@ bool activate_ty_curse(bool stop_ty, int *count)
                        aggravate_monsters(0);
                        if (!one_in_(6)) break;
                case 4: case 5: case 6:
-                       (*count) += activate_hi_summon(py, px, FALSE);
+                       (*count) += activate_hi_summon(p_ptr->y, p_ptr->x, FALSE);
                        if (!one_in_(6)) break;
                case 7: case 8: case 9: case 18:
-                       (*count) += summon_specific(0, py, px, dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
+                       (*count) += summon_specific(0, p_ptr->y, p_ptr->x, dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
                        if (!one_in_(6)) break;
                case 10: case 11: case 12:
                        msg_print(_("経験値が体から吸い取られた気がする!", "You feel your experience draining away..."));
@@ -5462,7 +5492,7 @@ bool activate_ty_curse(bool stop_ty, int *count)
                         */
                        if ((dun_level > 65) && !stop_ty)
                        {
-                               (*count) += summon_cyber(-1, py, px);
+                               (*count) += summon_cyber(-1, p_ptr->y, p_ptr->x);
                                stop_ty = TRUE;
                                break;
                        }
@@ -5485,13 +5515,19 @@ bool activate_ty_curse(bool stop_ty, int *count)
        return stop_ty;
 }
 
-
-int activate_hi_summon(int y, int x, bool can_pet)
+/*!
+ * @brief HI_SUMMON(上級召喚)処理発動
+ * @param y 召喚位置Y座標
+ * @param x 召喚位置X座標
+ * @param can_pet プレイヤーのペットとなる可能性があるならばTRUEにする
+ * @return 作用が実際にあった場合TRUEを返す
+ */
+int activate_hi_summon(POSITION y, POSITION x, bool can_pet)
 {
        int i;
        int count = 0;
-       int summon_lev;
-       u32b mode = PM_ALLOW_GROUP;
+       DEPTH summon_lev;
+       BIT_FLAGS mode = PM_ALLOW_GROUP;
        bool pet = FALSE;
 
        if (can_pet)
@@ -5568,13 +5604,19 @@ int activate_hi_summon(int y, int x, bool can_pet)
 }
 
 
-/* ToDo: check */
-int summon_cyber(int who, int y, int x)
+/*!
+ * @brief サイバーデーモンの召喚
+ * @param who 召喚主のモンスターID(0ならばプレイヤー)
+ * @param y 召喚位置Y座標
+ * @param x 召喚位置X座標
+ * @return 作用が実際にあった場合TRUEを返す
+ */
+int summon_cyber(MONSTER_IDX who, POSITION y, POSITION x)
 {
        int i;
        int max_cyber = (easy_band ? 1 : (dun_level / 50) + randint1(2));
        int count = 0;
-       u32b mode = PM_ALLOW_GROUP;
+       BIT_FLAGS mode = PM_ALLOW_GROUP;
 
        /* Summoned by a monster */
        if (who > 0)
@@ -5593,18 +5635,21 @@ int summon_cyber(int who, int y, int x)
        return count;
 }
 
-
+/*!
+ * @brief 周辺破壊効果(プレイヤー中心)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 void wall_breaker(void)
 {
        int i;
-       int y, x;
+       POSITION y = 0, x = 0;
        int attempts = 1000;
 
        if (randint1(80 + p_ptr->lev) < 70)
        {
                while (attempts--)
                {
-                       scatter(&y, &x, py, px, 4, 0);
+                       scatter(&y, &x, p_ptr->y, p_ptr->x, 4, 0);
 
                        if (!cave_have_flag_bold(y, x, FF_PROJECT)) continue;
 
@@ -5616,7 +5661,7 @@ void wall_breaker(void)
        }
        else if (randint1(100) > 30)
        {
-               earthquake(py, px, 1);
+               earthquake(p_ptr->y, p_ptr->x, 1);
        }
        else
        {
@@ -5626,7 +5671,7 @@ void wall_breaker(void)
                {
                        while (1)
                        {
-                               scatter(&y, &x, py, px, 10, 0);
+                               scatter(&y, &x, p_ptr->y, p_ptr->x, 10, 0);
 
                                if (!player_bold(y, x)) break;
                        }
@@ -5638,62 +5683,76 @@ void wall_breaker(void)
 }
 
 
-/*
- * Confuse monsters
+/*!
+ * @brief パニック・モンスター効果(プレイヤー視界範囲内) / Confuse monsters
+ * @param dam 効力
+ * @return 作用が実際にあった場合TRUEを返す
  */
-bool confuse_monsters(int dam)
+bool confuse_monsters(HIT_POINT dam)
 {
        return (project_hack(GF_OLD_CONF, dam));
 }
 
 
-/*
- * Charm monsters
+/*!
+ * @brief チャーム・モンスター効果(プレイヤー視界範囲内) / Charm monsters
+ * @param dam 効力
+ * @return 作用が実際にあった場合TRUEを返す
  */
-bool charm_monsters(int dam)
+bool charm_monsters(HIT_POINT dam)
 {
        return (project_hack(GF_CHARM, dam));
 }
 
 
-/*
- * Charm animals
+/*!
+ * @brief 動物魅了効果(プレイヤー視界範囲内) / Charm Animals
+ * @param dam 効力
+ * @return 作用が実際にあった場合TRUEを返す
  */
-bool charm_animals(int dam)
+bool charm_animals(HIT_POINT dam)
 {
        return (project_hack(GF_CONTROL_ANIMAL, dam));
 }
 
 
-/*
- * Stun monsters
+/*!
+ * @brief モンスター朦朧効果(プレイヤー視界範囲内) / Stun monsters
+ * @param dam 効力
+ * @return 作用が実際にあった場合TRUEを返す
  */
-bool stun_monsters(int dam)
+bool stun_monsters(HIT_POINT dam)
 {
        return (project_hack(GF_STUN, dam));
 }
 
 
-/*
- * Stasis monsters
+/*!
+ * @brief モンスター停止効果(プレイヤー視界範囲内) / Stasis monsters
+ * @param dam 効力
+ * @return 作用が実際にあった場合TRUEを返す
  */
-bool stasis_monsters(int dam)
+bool stasis_monsters(HIT_POINT dam)
 {
        return (project_hack(GF_STASIS, dam));
 }
 
 
-/*
- * Mindblast monsters
+/*!
+ * @brief モンスター精神攻撃効果(プレイヤー視界範囲内) / Mindblast monsters
+ * @param dam 効力
+ * @return 作用が実際にあった場合TRUEを返す
  */
-bool mindblast_monsters(int dam)
+bool mindblast_monsters(HIT_POINT dam)
 {
        return (project_hack(GF_PSI, dam));
 }
 
 
-/*
- * Banish all monsters
+/*!
+ * @brief モンスター追放効果(プレイヤー視界範囲内) / Banish all monsters
+ * @param dist 効力(距離)
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool banish_monsters(int dist)
 {
@@ -5701,68 +5760,102 @@ bool banish_monsters(int dist)
 }
 
 
-/*
- * Turn evil
+/*!
+ * @brief 邪悪退散効果(プレイヤー視界範囲内) / Turn evil
+ * @param dam 効力
+ * @return 作用が実際にあった場合TRUEを返す
  */
-bool turn_evil(int dam)
+bool turn_evil(HIT_POINT dam)
 {
        return (project_hack(GF_TURN_EVIL, dam));
 }
 
 
-/*
- * Turn everyone
+/*!
+ * @brief 全モンスター退散効果(プレイヤー視界範囲内) / Turn everyone
+ * @param dam 効力
+ * @return 作用が実際にあった場合TRUEを返す
  */
-bool turn_monsters(int dam)
+bool turn_monsters(HIT_POINT dam)
 {
        return (project_hack(GF_TURN_ALL, dam));
 }
 
 
-/*
- * Death-ray all monsters (note: OBSCENELY powerful)
+/*!
+ * @brief 死の光線(プレイヤー視界範囲内) / Death-ray all monsters (note: OBSCENELY powerful)
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool deathray_monsters(void)
 {
        return (project_hack(GF_DEATH_RAY, p_ptr->lev * 200));
 }
 
-
+/*!
+ * @brief チャーム・モンスター(1体)
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param plev パワー
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool charm_monster(int dir, int plev)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL;
        return (project_hook(GF_CHARM, dir, plev, flg));
 }
 
-
+/*!
+ * @brief アンデッド支配(1体)
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param plev パワー
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool control_one_undead(int dir, int plev)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL;
        return (project_hook(GF_CONTROL_UNDEAD, dir, plev, flg));
 }
 
-
+/*!
+ * @brief 悪魔支配(1体)
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param plev パワー
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool control_one_demon(int dir, int plev)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL;
        return (project_hook(GF_CONTROL_DEMON, dir, plev, flg));
 }
 
-
+/*!
+ * @brief 動物支配(1体)
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param plev パワー
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool charm_animal(int dir, int plev)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL;
        return (project_hook(GF_CONTROL_ANIMAL, dir, plev, flg));
 }
 
-
+/*!
+ * @brief 生物支配(1体)
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param plev パワー
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool charm_living(int dir, int plev)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL;
+       BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL;
        return (project_hook(GF_CONTROL_LIVING, dir, plev, flg));
 }
 
-
+/*!
+ * @brief 変わり身処理
+ * @param success 判定成功上の処理ならばTRUE
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool kawarimi(bool success)
 {
        object_type forge;
@@ -5781,8 +5874,8 @@ bool kawarimi(bool success)
                return FALSE;
        }
 
-       y = py;
-       x = px;
+       y = p_ptr->y;
+       x = p_ptr->x;
 
        teleport_player(10 + randint1(90), 0L);
 
@@ -5811,9 +5904,10 @@ bool kawarimi(bool success)
 }
 
 
-/*
- * "Rush Attack" routine for Samurai or Ninja
- * Return value is for checking "done"
+/*!
+ * @brief 入身処理 / "Rush Attack" routine for Samurai or Ninja
+ * @param mdeath 目標モンスターが死亡したかを返す
+ * @return 作用が実際にあった場合TRUEを返す /  Return value is for checking "done"
  */
 bool rush_attack(bool *mdeath)
 {
@@ -5831,8 +5925,8 @@ bool rush_attack(bool *mdeath)
        if (!get_aim_dir(&dir)) return FALSE;
 
        /* Use the given direction */
-       tx = px + project_length * ddx[dir];
-       ty = py + project_length * ddy[dir];
+       tx = p_ptr->x + project_length * ddx[dir];
+       ty = p_ptr->y + project_length * ddy[dir];
 
        /* Hack -- Use an actual "target" */
        if ((dir == 5) && target_okay())
@@ -5843,15 +5937,15 @@ bool rush_attack(bool *mdeath)
 
        if (in_bounds(ty, tx)) tm_idx = cave[ty][tx].m_idx;
 
-       path_n = project_path(path_g, project_length, py, px, ty, tx, PROJECT_STOP | PROJECT_KILL);
+       path_n = project_path(path_g, project_length, p_ptr->y, p_ptr->x, ty, tx, PROJECT_STOP | PROJECT_KILL);
        project_length = 0;
 
        /* No need to move */
        if (!path_n) return TRUE;
 
        /* Use ty and tx as to-move point */
-       ty = py;
-       tx = px;
+       ty = p_ptr->y;
+       tx = p_ptr->x;
 
        /* Project along the path */
        for (i = 0; i < path_n; i++)
@@ -5927,8 +6021,10 @@ bool rush_attack(bool *mdeath)
 }
 
 
-/*
- * Remove all mirrors in this floor
+/*!
+ * @brief 全鏡の消去 / Remove all mirrors in this floor
+ * @param explode 爆発処理を伴うならばTRUE
+ * @return なし
  */
 void remove_all_mirrors(bool explode)
 {