OSDN Git Service

#37287 #37353 (2.2.0.89) 型の置換を継続中。 / Ongoing type replacement.
[hengband/hengband.git] / src / cmd4.c
index 54c8176..3ed8cb0 100644 (file)
@@ -1,4 +1,4 @@
-/*!
+/*!
  * @file cmd4.c
  * @brief プレイヤーのインターフェイスに関するコマンドの実装 / Interface commands
  * @date 2014/01/02
@@ -383,7 +383,7 @@ errr do_cmd_write_nikki(int type, int num, cptr note)
            type == NIKKI_RAND_QUEST_F ||
            type == NIKKI_TO_QUEST)
        {
-               int old_quest;
+               IDX old_quest;
 
                old_quest = p_ptr->inside_quest;
                p_ptr->inside_quest = (quest[num].type == QUEST_TYPE_RANDOM) ? 0 : num;
@@ -431,9 +431,9 @@ errr do_cmd_write_nikki(int type, int num, cptr note)
                else
                {
 #ifdef JP
-                       sprintf(note_level_buf, "%d階(%s):", dun_level, d_name+d_info[dungeon_type].name);
+                       sprintf(note_level_buf, "%d階(%s):", (int)dun_level, d_name+d_info[dungeon_type].name);
 #else
-                       sprintf(note_level_buf, "%s L%d:", d_name+d_info[dungeon_type].name, dun_level);
+                       sprintf(note_level_buf, "%s L%d:", d_name+d_info[dungeon_type].name, (int)dun_level);
 #endif
                        note_level = note_level_buf;
                }
@@ -464,6 +464,11 @@ errr do_cmd_write_nikki(int type, int num, cptr note)
                        fprintf(fff, _(" %2d:%02d %20s %sを発見した。\n", " %2d:%02d %20s discovered %s.\n"), hour, min, note_level, note);
                        break;
                }
+               case NIKKI_ART_SCROLL:
+               {
+                       fprintf(fff, _(" %2d:%02d %20s 巻物によって%sを生成した。\n", " %2d:%02d %20s created %s by scroll.\n"), hour, min, note_level, note);
+                       break;
+               }
                case NIKKI_UNIQUE:
                {
                        fprintf(fff, _(" %2d:%02d %20s %sを倒した。\n", " %2d:%02d %20s defeated %s.\n"), hour, min, note_level, note);
@@ -502,13 +507,17 @@ errr do_cmd_write_nikki(int type, int num, cptr note)
                case NIKKI_MAXDEAPTH:
                {
                        fprintf(fff, _(" %2d:%02d %20s %sの最深階%d階に到達した。\n",
-                                                  " %2d:%02d %20s reached level %d of %s for the first time.\n"), hour, min, note_level, d_name+d_info[dungeon_type].name, num);
+                                                  " %2d:%02d %20s reached level %d of %s for the first time.\n"), hour, min, note_level,
+                                                  _(d_name+d_info[dungeon_type].name, num),
+                                                  _(num, d_name+d_info[dungeon_type].name));
                        break;
                }
                case NIKKI_TRUMP:
                {
                        fprintf(fff, _(" %2d:%02d %20s %s%sの最深階を%d階にセットした。\n",
-                                                  " %2d:%02d %20s reset recall level of %s to %d %s.\n"), hour, min, note_level, note, d_name + d_info[num].name, max_dlv[num]);
+                                                  " %2d:%02d %20s reset recall level of %s to %d %s.\n"), hour, min, note_level, note,
+                                                  _(d_name + d_info[num].name, (int)max_dlv[num]),
+                                                  _((int)max_dlv[num], d_name + d_info[num].name));
                        break;
                }
                case NIKKI_STAIR:
@@ -531,8 +540,8 @@ errr do_cmd_write_nikki(int type, int num, cptr note)
                {
                        if (!num)
                        fprintf(fff, _(" %2d:%02d %20s 帰還を使って%sの%d階へ下りた。\n", " %2d:%02d %20s recalled to dungeon level %d of %s.\n"), 
-                                               hour, min, note_level, _(d_name+d_info[dungeon_type].name, max_dlv[dungeon_type]), 
-                                                                                          _(max_dlv[dungeon_type], d_name+d_info[dungeon_type].name));
+                                               hour, min, note_level, _(d_name+d_info[dungeon_type].name, (int)max_dlv[dungeon_type]), 
+                                                                                          _((int)max_dlv[dungeon_type], d_name+d_info[dungeon_type].name));
                        else
                                fprintf(fff, _(" %2d:%02d %20s 帰還を使って地上へと戻った。\n", " %2d:%02d %20s recalled from dungeon to surface.\n"), hour, min, note_level);
                        break;
@@ -565,12 +574,12 @@ errr do_cmd_write_nikki(int type, int num, cptr note)
                        if (num < 0)
                        {
                                int n = -num;
-                               fprintf(fff, _(" %2d:%02d %20s 闘技場の%d回戦で、%sの前に敗れ去った。\n", " %2d:%02d %20s beaten by %s in the %d%s fight.\n"),
-                                                       hour, min, note_level, _(n, note), _(note, n), _("", get_ordinal_number_suffix(n)));
+                               fprintf(fff, _(" %2d:%02d %20s 闘技場の%d%s回戦で、%sの前に敗れ去った。\n", " %2d:%02d %20s beaten by %s in the %d%s fight.\n"),
+                                                       hour, min, note_level, _(n, note), _("", n), _(note, get_ordinal_number_suffix(n)));
                                break;
                        }
-                       fprintf(fff, _(" %2d:%02d %20s 闘技場の%d回戦(%s)に勝利した。\n", " %2d:%02d %20s won the %d%s fight (%s).\n"), 
-                                               hour, min, note_level, num, _(note, get_ordinal_number_suffix(num)), note);
+                       fprintf(fff, _(" %2d:%02d %20s 闘技場の%d%s回戦(%s)に勝利した。\n", " %2d:%02d %20s won the %d%s fight (%s).\n"),
+                                               hour, min, note_level, num, _("", get_ordinal_number_suffix(num)), note);
                        
                        if (num == MAX_ARENA_MONS)
                        {
@@ -676,12 +685,19 @@ errr do_cmd_write_nikki(int type, int num, cptr note)
                                case RECORD_NAMED_PET_LOSE_PARENT:
                                        fprintf(fff, _("%sの召喚者が既にいないため消え去った。\n", "%s disappeared because there does not exist summoner.\n"), note);
                                        break;
+
+
                                default:
                                        fprintf(fff, "\n");
                                        break;
                        }
                        break;
                }
+
+               case NIKKI_WIZARD_LOG:
+                       fprintf(fff, "%s\n", note);
+                       break;
+
                default:
                        break;
        }
@@ -699,6 +715,8 @@ errr do_cmd_write_nikki(int type, int num, cptr note)
 /*!
  * @brief 日記のタイトル表記と内容出力 /
  * @return なし
+ * @details
+ * 日記のタイトルは本関数の subtitle ローカル変数で定義されている。
  */
 static void do_cmd_disp_nikki(void)
 {
@@ -707,6 +725,7 @@ static void do_cmd_disp_nikki(void)
        char buf[1024];
        char tmp[80];
 #ifdef JP
+       /*! */
        static const char subtitle[][30] = {"最強の肉体を求めて",
                                           "人生それははかない",
                                           "明日に向かって",
@@ -785,10 +804,10 @@ static void do_cmd_disp_nikki(void)
 
 #ifdef JP
        sprintf(nikki_title, "「%s%s%sの伝説 -%s-」",
-               ap_ptr->title, ap_ptr->no ? "の" : "", player_name, tmp);
+               ap_ptr->title, ap_ptr->no ? "の" : "", p_ptr->name, tmp);
 #else
        sprintf(nikki_title, "Legend of %s %s '%s'",
-               ap_ptr->title, player_name, tmp);
+               ap_ptr->title, p_ptr->name, tmp);
 #endif
 
        /* Display the file contents */
@@ -833,6 +852,10 @@ static void do_cmd_last_get(void)
        turn = turn_tmp;
 }
 
+/*!
+ * @brief ファイル中の全日記記録を消去する /
+ * @return なし
+ */
 static void do_cmd_erase_nikki(void)
 {
        char file_name[80];
@@ -1214,14 +1237,9 @@ void do_cmd_messages(int num_now)
                }
 
                /* Display header XXX XXX XXX */
-#ifdef JP
                /* translation */
-               prt(format("以前のメッセージ %d-%d 全部で(%d)",
-                          i, i + j - 1, n), 0, 0);
-#else
-               prt(format("Message Recall (%d-%d of %d)",
+               prt(format(_("以前のメッセージ %d-%d 全部で(%d)", "Message Recall (%d-%d of %d)"),
                           i, i + j - 1, n), 0, 0);
-#endif
 
                /* Display prompt (not very informative) */
                prt(_("[ 'p' で更に古いもの, 'n' で更に新しいもの, '/' で検索, ESC で中断 ]",
@@ -1369,7 +1387,7 @@ void do_cmd_messages(int num_now)
 /*!
  * チートオプションの最大数 / Number of cheating options
  */
-#define CHEAT_MAX 7
+#define CHEAT_MAX 9
 
 /*!
  * チーとオプションの定義テーブル / Cheating options
@@ -1402,7 +1420,17 @@ static option_type cheat_info[CHEAT_MAX] =
 
        { &cheat_save,          FALSE,  255,    0x40, 0x00,
                "cheat_save",           _("死んだ時セーブするか確認する", "Ask for saving death")
+       },
+
+       { &cheat_diary_output,  FALSE,  255,    0x80, 0x00,
+               "cheat_diary_output",   _("ウィザードログを日記に出力する", "Output wizard log to diary.")
+       },
+
+       { &cheat_turn,  FALSE,  255,    0x81, 0x00,
+               "cheat_turn",   _("ゲームメッセージにターン表示を行う", "Put turn to game message.")
        }
+
+
 };
 
 /*!
@@ -1847,14 +1875,10 @@ void do_cmd_options_aux(int page, cptr info)
 static void do_cmd_options_win(void)
 {
        int i, j, d;
-
        int y = 0;
        int x = 0;
-
        char ch;
-
        bool go = TRUE;
-
        u32b old_flag[8];
 
 
@@ -1908,9 +1932,8 @@ static void do_cmd_options_win(void)
                        /* Display the windows */
                        for (j = 0; j < 8; j++)
                        {
-                               byte a = TERM_WHITE;
-
                                char c = '.';
+                               a = TERM_WHITE;
 
                                /* Use color */
                                if ((i == y) && (j == x)) a = TERM_L_BLUE;
@@ -2473,11 +2496,10 @@ static errr macro_dump(cptr fname)
  */
 static void do_cmd_macro_aux(char *buf)
 {
-       int i, n = 0;
-
+       char i;
+       int n = 0;
        char tmp[1024];
 
-
        /* Flush */
        flush();
 
@@ -3042,7 +3064,9 @@ void do_cmd_macros(void)
        screen_load();
 }
 
-
+/*!
+ * @brief キャラクタ色の明暗表現
+ */
 static cptr lighting_level_str[F_LIT_MAX] =
 {
 #ifdef JP
@@ -3057,6 +3081,13 @@ static cptr lighting_level_str[F_LIT_MAX] =
 };
 
 
+/*!
+ * @brief キャラクタのビジュアルIDを変更する際の対象指定関数
+ * @param i 指定対象となるキャラクタコード
+ * @param num 指定されたビジュアルIDを返す参照ポインタ
+ * @param max ビジュアルIDの最大数
+ * @return 指定が実際に行われた場合TRUE、キャンセルされた場合FALSE
+ */
 static bool cmd_visuals_aux(int i, int *num, int max)
 {
        if (iscntrl(i))
@@ -3081,6 +3112,11 @@ static bool cmd_visuals_aux(int i, int *num, int max)
        return TRUE;
 }
 
+/*!
+ * @brief キャラクタの変更メニュー表示
+ * @param choice_msg 選択メッセージ
+ * @return なし
+ */
 static void print_visuals_menu(cptr choice_msg)
 {
        prt(_("[ 画面表示の設定 ]", "Interact with Visuals"), 1, 0);
@@ -3106,9 +3142,9 @@ static void print_visuals_menu(cptr choice_msg)
        prt(format("コマンド: %s", choice_msg ? choice_msg : _("", "")), 15, 0);
 }
 
-static void do_cmd_knowledge_monsters(bool *need_redraw, bool visual_only, int direct_r_idx);
-static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, int direct_k_idx);
-static void do_cmd_knowledge_features(bool *need_redraw, bool visual_only, int direct_f_idx, int *lighting_level);
+static void do_cmd_knowledge_monsters(bool *need_redraw, bool visual_only, IDX direct_r_idx);
+static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, IDX direct_k_idx);
+static void do_cmd_knowledge_features(bool *need_redraw, bool visual_only, IDX direct_f_idx, int *lighting_level);
 
 /*
  * Interact with "visuals"
@@ -3223,6 +3259,7 @@ void do_cmd_visuals(void)
                case '2':
                {
                        static cptr mark = "Object attr/chars";
+                       IDX k_idx;
 
                        /* Prompt */
                        prt(_("コマンド: アイテムの[色/文字]をファイルに書き出します", "Command: Dump object attr/chars"), 15, 0);
@@ -3246,10 +3283,10 @@ void do_cmd_visuals(void)
                        auto_dump_printf(_("\n# アイテムの[色/文字]の設定\n\n", "\n# Object attr/char definitions\n\n"));
 
                        /* Dump objects */
-                       for (i = 0; i < max_k_idx; i++)
+                       for (k_idx = 0; k_idx < max_k_idx; k_idx++)
                        {
                                char o_name[80];
-                               object_kind *k_ptr = &k_info[i];
+                               object_kind *k_ptr = &k_info[k_idx];
 
                                /* Skip non-entries */
                                if (!k_ptr->name) continue;
@@ -3257,14 +3294,14 @@ void do_cmd_visuals(void)
                                if (!k_ptr->flavor)
                                {
                                        /* Tidy name */
-                                       strip_name(o_name, i);
+                                       strip_name(o_name, k_idx);
                                }
                                else
                                {
                                        object_type forge;
 
                                        /* Prepare dummy object */
-                                       object_prep(&forge, i);
+                                       object_prep(&forge, k_idx);
 
                                        /* Get un-shuffled flavor name */
                                        object_desc(o_name, &forge, OD_FORCE_FLAVOR);
@@ -3274,7 +3311,7 @@ void do_cmd_visuals(void)
                                auto_dump_printf("# %s\n", o_name);
 
                                /* Dump the object attr/char info */
-                               auto_dump_printf("K:%d:0x%02X/0x%02X\n\n", i,
+                               auto_dump_printf("K:%d:0x%02X/0x%02X\n\n", (int)k_idx,
                                        (byte)(k_ptr->x_attr), (byte)(k_ptr->x_char));
                        }
 
@@ -3347,7 +3384,7 @@ void do_cmd_visuals(void)
                case '4':
                {
                        static cptr choice_msg = _("モンスターの[色/文字]を変更します", "Change monster attr/chars");
-                       static int r = 0;
+                       static IDX r = 0;
 
                        prt(format(_("コマンド: %s", "Command: %s"), choice_msg), 15, 0);
 
@@ -3936,8 +3973,14 @@ void do_cmd_note(void)
 void do_cmd_version(void)
 {
        /* Silly message */
+
+#if FAKE_VER_EXTRA > 0
+       msg_format(_("変愚蛮怒(Hengband) %d.%d.%d.%d", "You are playing Hengband %d.%d.%d.%d."),
+               FAKE_VER_MAJOR-10, FAKE_VER_MINOR, FAKE_VER_PATCH, FAKE_VER_EXTRA);
+#else
        msg_format(_("変愚蛮怒(Hengband) %d.%d.%d", "You are playing Hengband %d.%d.%d."),
-                               FAKE_VER_MAJOR-10, FAKE_VER_MINOR, FAKE_VER_PATCH);
+               FAKE_VER_MAJOR - 10, FAKE_VER_MINOR, FAKE_VER_PATCH);
+#endif
 }
 
 
@@ -4271,7 +4314,7 @@ static bool ang_sort_comp_monster_level(vptr u, vptr v, int a, int b)
  * mode & 0x01 : check for non-empty group
  * mode & 0x02 : visual operation only
  */
-static int collect_monsters(int grp_cur, s16b mon_idx[], byte mode)
+static int collect_monsters(int grp_cur, s16b mon_idx[], BIT_FLAGS8 mode)
 {
        int i, mon_cnt = 0;
        int dummy_why;
@@ -4517,9 +4560,10 @@ static byte object_group_tval[] =
  * mode & 0x01 : check for non-empty group
  * mode & 0x02 : visual operation only
  */
-static int collect_objects(int grp_cur, int object_idx[], byte mode)
+static int collect_objects(int grp_cur, IDX object_idx[], BIT_FLAGS8 mode)
 {
-       int i, j, k, object_cnt = 0;
+       IDX i;
+       int j, k, object_cnt = 0;
 
        /* Get a list of x_char in this group */
        byte group_tval = object_group_tval[grp_cur];
@@ -4599,9 +4643,10 @@ static cptr feature_group_text[] =
  *
  * mode & 0x01 : check for non-empty group
  */
-static int collect_features(int grp_cur, int *feat_idx, byte mode)
+static int collect_features(int grp_cur, IDX *feat_idx, BIT_FLAGS8 mode)
 {
-       int i, feat_cnt = 0;
+       IDX i;
+       int feat_cnt = 0;
 
        /* Unused;  There is a single group. */
        (void)grp_cur;
@@ -5404,7 +5449,8 @@ static void ang_sort_art_swap(vptr u, vptr v, int a, int b)
  */
 static void do_cmd_knowledge_artifacts(void)
 {
-       int i, k, z, x, y, n = 0;
+       int i, k, x, y, n = 0;
+       IDX z;
        u16b why = 3;
        s16b *who;
 
@@ -5675,7 +5721,7 @@ static void do_cmd_knowledge_uniques(void)
                monster_race *r_ptr = &r_info[who[k]];
 
                /* Print a message */
-               fprintf(fff, _("     %s (レベル%d)\n", "     %s (level %d)\n"), r_name + r_ptr->name, r_ptr->level);
+               fprintf(fff, _("     %s (レベル%d)\n", "     %s (level %d)\n"), r_name + r_ptr->name, (int)r_ptr->level);
        }
 
        /* Free the "who" array */
@@ -5722,7 +5768,7 @@ static void do_cmd_knowledge_weapon_exp(void)
 
                                if ((k_ptr->tval == TV_SWORD - i) && (k_ptr->sval == num))
                                {
-                                       if ((k_ptr->tval == TV_BOW) && (k_ptr->sval == SV_CRIMSON)) continue;
+                                       if ((k_ptr->tval == TV_BOW) && (k_ptr->sval == SV_CRIMSON || k_ptr->sval == SV_HARP)) continue;
 
                                        weapon_exp = p_ptr->weapon_exp[4 - i][num];
                                        strip_name(tmp, j);
@@ -6256,7 +6302,7 @@ static void do_cmd_knowledge_kill_count(void)
  * @return なし
  */
 static void display_group_list(int col, int row, int wid, int per_page,
-       int grp_idx[], cptr group_text[], int grp_cur, int grp_top)
+       IDX grp_idx[], cptr group_text[], int grp_cur, int grp_top)
 {
        int i;
 
@@ -6281,13 +6327,13 @@ static void display_group_list(int col, int row, int wid, int per_page,
 /* 
  * Move the cursor in a browser window 
  */
-static void browser_cursor(char ch, int *column, int *grp_cur, int grp_cnt, 
-                                                  int *list_cur, int list_cnt)
+static void browser_cursor(char ch, int *column, IDX *grp_cur, int grp_cnt, 
+                                                  IDX *list_cur, int list_cnt)
 {
        int d;
        int col = *column;
-       int grp = *grp_cur;
-       int list = *list_cur;
+       IDX grp = *grp_cur;
+       IDX list = *list_cur;
 
        /* Extract direction */
        if (ch == ' ')
@@ -6667,14 +6713,15 @@ static void display_monster_list(int col, int row, int per_page, s16b mon_idx[],
 /*
  * Display known monsters.
  */
-static void do_cmd_knowledge_monsters(bool *need_redraw, bool visual_only, int direct_r_idx)
+static void do_cmd_knowledge_monsters(bool *need_redraw, bool visual_only, IDX direct_r_idx)
 {
-       int i, len, max;
-       int grp_cur, grp_top, old_grp_cur;
-       int mon_cur, mon_top;
-       int grp_cnt, grp_idx[100];
-       int mon_cnt;
-       s16b *mon_idx;
+       IDX i;
+       int len, max;
+       IDX grp_cur, grp_top, old_grp_cur;
+       IDX mon_cur, mon_top;
+       IDX grp_cnt, grp_idx[100];
+       IDX mon_cnt;
+       IDX *mon_idx;
 
        int column = 0;
        bool flag;
@@ -6684,9 +6731,9 @@ static void do_cmd_knowledge_monsters(bool *need_redraw, bool visual_only, int d
        byte attr_top = 0, char_left = 0;
 
        int browser_rows;
-       int wid, hgt;
+       POSITION wid, hgt;
 
-       byte mode;
+       BIT_FLAGS8 mode;
 
        /* Get size */
        Term_get_size(&wid, &hgt);
@@ -6927,7 +6974,7 @@ static void do_cmd_knowledge_monsters(bool *need_redraw, bool visual_only, int d
 /*
  * Display the objects in a group.
  */
-static void display_object_list(int col, int row, int per_page, int object_idx[],
+static void display_object_list(int col, int row, int per_page, IDX object_idx[],
        int object_cur, int object_top, bool visual_only)
 {
        int i;
@@ -7006,7 +7053,7 @@ static void display_object_list(int col, int row, int per_page, int object_idx[]
 /*
  * Describe fake object
  */
-static void desc_obj_fake(int k_idx)
+static void desc_obj_fake(IDX k_idx)
 {
        object_type *o_ptr;
        object_type object_type_body;
@@ -7044,14 +7091,16 @@ static void desc_obj_fake(int k_idx)
 /*
  * Display known objects
  */
-static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, int direct_k_idx)
+static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, IDX direct_k_idx)
 {
-       int i, len, max;
-       int grp_cur, grp_top, old_grp_cur;
-       int object_old, object_cur, object_top;
-       int grp_cnt, grp_idx[100];
+       IDX i;
+       int len, max;
+       IDX grp_cur, grp_top, old_grp_cur;
+       IDX object_old, object_cur, object_top;
+       int grp_cnt;
+       IDX grp_idx[100];
        int object_cnt;
-       int *object_idx;
+       IDX *object_idx;
 
        int column = 0;
        bool flag;
@@ -7071,7 +7120,7 @@ static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, int di
        browser_rows = hgt - 8;
 
        /* Allocate the "object_idx" array */
-       C_MAKE(object_idx, max_k_idx, int);
+       C_MAKE(object_idx, max_k_idx, IDX);
 
        max = 0;
        grp_cnt = 0;
@@ -7325,7 +7374,7 @@ static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, int di
        }
 
        /* Free the "object_idx" array */
-       C_KILL(object_idx, max_k_idx, int);
+       C_KILL(object_idx, max_k_idx, IDX);
 }
 
 
@@ -7405,12 +7454,14 @@ static void display_feature_list(int col, int row, int per_page, int *feat_idx,
  */
 static void do_cmd_knowledge_features(bool *need_redraw, bool visual_only, int direct_f_idx, int *lighting_level)
 {
-       int i, len, max;
-       int grp_cur, grp_top, old_grp_cur;
-       int feat_cur, feat_top;
-       int grp_cnt, grp_idx[100];
+       IDX i;
+       int len, max;
+       IDX grp_cur, grp_top, old_grp_cur;
+       IDX feat_cur, feat_top;
+       int grp_cnt;
+       IDX grp_idx[100];
        int feat_cnt;
-       int *feat_idx;
+       IDX *feat_idx;
 
        int column = 0;
        bool flag;
@@ -7873,7 +7924,7 @@ static void do_cmd_knowledge_dungeon(void)
                        }
                        else if (max_dlv[i] == d_info[i].maxdepth) seiha = TRUE;
                        
-                       fprintf(fff, _("%c%-12s :  %3d 階\n", "%c%-16s :  level %3d\n"), seiha ? '!' : ' ', d_name + d_info[i].name, max_dlv[i]);
+                       fprintf(fff, _("%c%-12s :  %3d 階\n", "%c%-16s :  level %3d\n"), seiha ? '!' : ' ', d_name + d_info[i].name, (int)max_dlv[i]);
                }
        }
        
@@ -7950,7 +8001,7 @@ static void do_cmd_knowledge_quests_current(FILE *fff)
        char rand_tmp_str[120] = "\0";
        char name[80];
        monster_race *r_ptr;
-       int i;
+       IDX i;
        int rand_level = 100;
        int total = 0;
 
@@ -7963,7 +8014,7 @@ static void do_cmd_knowledge_quests_current(FILE *fff)
                        (quest[i].status == QUEST_STATUS_COMPLETED))
                {
                        /* Set the quest number temporary */
-                       int old_quest = p_ptr->inside_quest;
+                       IDX old_quest = p_ptr->inside_quest;
                        int j;
 
                        /* Clear the text */
@@ -8018,7 +8069,7 @@ static void do_cmd_knowledge_quests_current(FILE *fff)
                                                        artifact_type *a_ptr = &a_info[quest[i].k_idx];
                                                        object_type forge;
                                                        object_type *q_ptr = &forge;
-                                                       int k_idx = lookup_kind(a_ptr->tval, a_ptr->sval);
+                                                       IDX k_idx = lookup_kind(a_ptr->tval, a_ptr->sval);
                                                        object_prep(q_ptr, k_idx);
                                                        q_ptr->name1 = quest[i].k_idx;
                                                        q_ptr->ident = IDENT_STORE;
@@ -8048,13 +8099,8 @@ static void do_cmd_knowledge_quests_current(FILE *fff)
                                }
 
                                /* Print the quest info */
-#ifdef JP
-                               sprintf(tmp_str, "  %s (危険度:%d階相当)%s\n",
-                                       quest[i].name, quest[i].level, note);
-#else
-                               sprintf(tmp_str, "  %s (Danger level: %d)%s\n",
-                                       quest[i].name, quest[i].level, note);
-#endif
+                               sprintf(tmp_str, _("  %s (危険度:%d階相当)%s\n", "  %s (Danger level: %d)%s\n"),
+                                       quest[i].name, (int)quest[i].level, note);
 
                                fputs(tmp_str, fff);
 
@@ -8089,13 +8135,13 @@ static void do_cmd_knowledge_quests_current(FILE *fff)
                                        {
 #ifdef JP
                                                sprintf(rand_tmp_str,"  %s (%d 階) - %d 体の%sを倒す。(あと %d 体)\n",
-                                                       quest[i].name, quest[i].level,
+                                                       quest[i].name, (int)quest[i].level,
                                                        quest[i].max_num, name, quest[i].max_num - quest[i].cur_num);
 #else
                                                plural_aux(name);
 
                                                sprintf(rand_tmp_str,"  %s (Dungeon level: %d)\n  Kill %d %s, have killed %d.\n",
-                                                       quest[i].name, quest[i].level,
+                                                       quest[i].name, (idx)quest[i].level,
                                                        quest[i].max_num, name, quest[i].cur_num);
 #endif
                                        }
@@ -8121,7 +8167,7 @@ static void do_cmd_knowledge_quests_current(FILE *fff)
 }
 
 
-static bool do_cmd_knowledge_quests_aux(FILE *fff, int q_idx)
+static bool do_cmd_knowledge_quests_aux(FILE *fff, IDX q_idx)
 {
        char tmp_str[120];
        char playtime_str[16];
@@ -8158,7 +8204,7 @@ static bool do_cmd_knowledge_quests_aux(FILE *fff, int q_idx)
                                _("  %-35s (%3d階)            -   不戦勝 - %s\n",
                                  "  %-35s (Dungeon level: %3d) - Unearned - %s\n") ,
                                r_name+r_info[q_ptr->r_idx].name,
-                               q_ptr->level, playtime_str);
+                               (int)q_ptr->level, playtime_str);
                }
                else
                {
@@ -8166,7 +8212,7 @@ static bool do_cmd_knowledge_quests_aux(FILE *fff, int q_idx)
                                _("  %-35s (%3d階)            - レベル%2d - %s\n",
                                  "  %-35s (Dungeon level: %3d) - level %2d - %s\n") ,
                                r_name+r_info[q_ptr->r_idx].name,
-                               q_ptr->level,
+                               (int)q_ptr->level,
                                q_ptr->complev,
                                playtime_str);
                }
@@ -8177,7 +8223,7 @@ static bool do_cmd_knowledge_quests_aux(FILE *fff, int q_idx)
                sprintf(tmp_str,
                        _("  %-35s (危険度:%3d階相当) - レベル%2d - %s\n",
                          "  %-35s (Danger  level: %3d) - level %2d - %s\n") ,
-                       q_ptr->name, q_ptr->level, q_ptr->complev, playtime_str);
+                       q_ptr->name, (int)q_ptr->level, q_ptr->complev, playtime_str);
        }
 
        fputs(tmp_str, fff);
@@ -8188,7 +8234,7 @@ static bool do_cmd_knowledge_quests_aux(FILE *fff, int q_idx)
 /*
  * Print all finished quests
  */
-void do_cmd_knowledge_quests_completed(FILE *fff, int quest_num[])
+void do_cmd_knowledge_quests_completed(FILE *fff, IDX quest_num[])
 {
        int i;
        int total = 0;
@@ -8196,7 +8242,7 @@ void do_cmd_knowledge_quests_completed(FILE *fff, int quest_num[])
        fprintf(fff, _("《達成したクエスト》\n", "< Completed Quest >\n"));
        for (i = 1; i < max_quests; i++)
        {
-               int q_idx = quest_num[i];
+               IDX q_idx = quest_num[i];
                quest_type* const q_ptr = &quest[q_idx];
 
                if (q_ptr->status == QUEST_STATUS_FINISHED &&
@@ -8212,7 +8258,7 @@ void do_cmd_knowledge_quests_completed(FILE *fff, int quest_num[])
 /*
  * Print all failed quests
  */
-void do_cmd_knowledge_quests_failed(FILE *fff, int quest_num[])
+void do_cmd_knowledge_quests_failed(FILE *fff, IDX quest_num[])
 {
        int i;
        int total = 0;
@@ -8300,7 +8346,8 @@ static void do_cmd_knowledge_quests(void)
 {
        FILE *fff;
        char file_name[1024];
-       int *quest_num, dummy, i;
+       IDX *quest_num;
+       int dummy, i;
 
        /* Open a new file */
        fff = my_fopen_temp(file_name, 1024);