OSDN Git Service

[Refactor] #38993 o_list と max_o_idx を floor_type に取り込む。 / Move o_list and max_o_idx...
[hengband/hengband.git] / src / cmd4.c
index bc20c95..f8b48e5 100644 (file)
 #include "world.h"
 #include "player-status.h"
 #include "sort.h"
+#include "mutation.h"
+#include "quest.h"
+#include "store.h"
+#include "artifact.h"
+#include "avatar.h"
+#include "object-hook.h"
 
 
 /*
@@ -386,7 +392,7 @@ errr do_cmd_write_nikki(int type, int num, concptr note)
            type == NIKKI_RAND_QUEST_F ||
            type == NIKKI_TO_QUEST)
        {
-               IDX old_quest;
+               QUEST_IDX old_quest;
 
                old_quest = p_ptr->inside_quest;
                p_ptr->inside_quest = (quest[num].type == QUEST_TYPE_RANDOM) ? 0 : num;
@@ -420,13 +426,13 @@ errr do_cmd_write_nikki(int type, int num, concptr note)
                return (-1);
        }
 
-       q_idx = quest_number(dun_level);
+       q_idx = quest_number(current_floor_ptr->dun_level);
 
        if (write_level)
        {
                if (p_ptr->inside_arena)
                        note_level = _("アリーナ:", "Arane:");
-               else if (!dun_level)
+               else if (!current_floor_ptr->dun_level)
                        note_level = _("地上:", "Surface:");
                else if (q_idx && (is_fixed_quest_idx(q_idx)
                        && !((q_idx == QUEST_OBERON) || (q_idx == QUEST_SERPENT))))
@@ -434,9 +440,9 @@ errr do_cmd_write_nikki(int type, int num, concptr note)
                else
                {
 #ifdef JP
-                       sprintf(note_level_buf, "%d階(%s):", (int)dun_level, d_name+d_info[dungeon_type].name);
+                       sprintf(note_level_buf, "%d階(%s):", (int)current_floor_ptr->dun_level, d_name+d_info[p_ptr->dungeon_idx].name);
 #else
-                       sprintf(note_level_buf, "%s L%d:", d_name+d_info[dungeon_type].name, (int)dun_level);
+                       sprintf(note_level_buf, "%s L%d:", d_name+d_info[p_ptr->dungeon_idx].name, (int)current_floor_ptr->dun_level);
 #endif
                        note_level = note_level_buf;
                }
@@ -511,8 +517,8 @@ errr do_cmd_write_nikki(int type, int num, concptr note)
                {
                        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),
-                                                  _(num, d_name+d_info[dungeon_type].name));
+                                                  _(d_name+d_info[p_ptr->dungeon_idx].name, num),
+                                                  _(num, d_name+d_info[p_ptr->dungeon_idx].name));
                        break;
                }
                case NIKKI_TRUMP:
@@ -533,8 +539,8 @@ errr do_cmd_write_nikki(int type, int num, concptr note)
                        }
                        else
                        {
-                               if (!(dun_level+num)) to = _("地上", "the surface");
-                               else to = format(_("%d階", "level %d"), dun_level+num);
+                               if (!(current_floor_ptr->dun_level+num)) to = _("地上", "the surface");
+                               else to = format(_("%d階", "level %d"), current_floor_ptr->dun_level+num);
                        }
                        fprintf(fff, _(" %2d:%02d %20s %sへ%s。\n", " %2d:%02d %20s %s %s.\n"), hour, min, note_level, _(to, note), _(note, to));
                        break;
@@ -543,8 +549,8 @@ errr do_cmd_write_nikki(int type, int num, concptr 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, (int)max_dlv[dungeon_type]), 
-                                                                                          _((int)max_dlv[dungeon_type], d_name+d_info[dungeon_type].name));
+                                               hour, min, note_level, _(d_name+d_info[p_ptr->dungeon_idx].name, (int)max_dlv[p_ptr->dungeon_idx]), 
+                                                                                          _((int)max_dlv[p_ptr->dungeon_idx], d_name+d_info[p_ptr->dungeon_idx].name));
                        else
                                fprintf(fff, _(" %2d:%02d %20s 帰還を使って地上へと戻った。\n", " %2d:%02d %20s recalled from dungeon to surface.\n"), hour, min, note_level);
                        break;
@@ -600,10 +606,10 @@ errr do_cmd_write_nikki(int type, int num, concptr note)
                case NIKKI_WIZ_TELE:
                {
                        concptr to;
-                       if (!dun_level)
+                       if (!current_floor_ptr->dun_level)
                                to = _("地上", "the surface");
                        else
-                               to = format(_("%d階(%s)", "level %d of %s"), dun_level, d_name+d_info[dungeon_type].name);
+                               to = format(_("%d階(%s)", "level %d of %s"), current_floor_ptr->dun_level, d_name+d_info[p_ptr->dungeon_idx].name);
 
                        fprintf(fff, _(" %2d:%02d %20s %sへとウィザード・テレポートで移動した。\n",
                                                   " %2d:%02d %20s wizard-teleport to %s.\n"), hour, min, note_level, to);
@@ -612,10 +618,10 @@ errr do_cmd_write_nikki(int type, int num, concptr note)
                case NIKKI_PAT_TELE:
                {
                        concptr to;
-                       if (!dun_level)
+                       if (!current_floor_ptr->dun_level)
                                to = _("地上", "the surface");
                        else
-                               to = format(_("%d階(%s)", "level %d of %s"), dun_level, d_name+d_info[dungeon_type].name);
+                               to = format(_("%d階(%s)", "level %d of %s"), current_floor_ptr->dun_level, d_name+d_info[p_ptr->dungeon_idx].name);
 
                        fprintf(fff, _(" %2d:%02d %20s %sへとパターンの力で移動した。\n",
                                                   " %2d:%02d %20s used Pattern to teleport to %s.\n"), hour, min, note_level, to);
@@ -3218,7 +3224,7 @@ void do_cmd_visuals(void)
                case '4':
                {
                        static concptr choice_msg = _("モンスターの[色/文字]を変更します", "Change monster attr/chars");
-                       static IDX r = 0;
+                       static MONRACE_IDX r = 0;
 
                        prt(format(_("コマンド: %s", "Command: %s"), choice_msg), 15, 0);
 
@@ -3852,16 +3858,16 @@ void do_cmd_feeling(void)
        if (p_ptr->wild_mode) return;
 
        /* No useful feeling in quests */
-       if (p_ptr->inside_quest && !random_quest_number(dun_level))
+       if (p_ptr->inside_quest && !random_quest_number(current_floor_ptr->dun_level))
        {
                msg_print(_("典型的なクエストのダンジョンのようだ。", "Looks like a typical quest level."));
                return;
        }
 
        /* No useful feeling in town */
-       else if (p_ptr->town_num && !dun_level)
+       else if (p_ptr->town_num && !current_floor_ptr->dun_level)
        {
-               if (!strcmp(town[p_ptr->town_num].name, _("荒野", "wilderness")))
+               if (!strcmp(town_info[p_ptr->town_num].name, _("荒野", "wilderness")))
                {
                        msg_print(_("何かありそうな荒野のようだ。", "Looks like a strange wilderness."));
                        return;
@@ -3874,7 +3880,7 @@ void do_cmd_feeling(void)
        }
 
        /* No useful feeling in the wilderness */
-       else if (!dun_level)
+       else if (!current_floor_ptr->dun_level)
        {
                msg_print(_("典型的な荒野のようだ。", "Looks like a typical wilderness."));
                return;
@@ -4372,10 +4378,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, IDX object_idx[], BIT_FLAGS8 mode)
+static KIND_OBJECT_IDX collect_objects(int grp_cur, KIND_OBJECT_IDX object_idx[], BIT_FLAGS8 mode)
 {
-       IDX i;
-       int j, k, object_cnt = 0;
+       KIND_OBJECT_IDX i, object_cnt = 0;
+       int j, k;
 
        /* Get a list of x_char in this group */
        byte group_tval = object_group_tval[grp_cur];
@@ -4455,10 +4461,10 @@ static concptr feature_group_text[] =
  *
  * mode & 0x01 : check for non-empty group
  */
-static int collect_features(int grp_cur, IDX *feat_idx, BIT_FLAGS8 mode)
+static FEAT_IDX collect_features(int grp_cur, FEAT_IDX *feat_idx, BIT_FLAGS8 mode)
 {
-       IDX i;
-       int feat_cnt = 0;
+       FEAT_IDX i;
+       FEAT_IDX feat_cnt = 0;
 
        /* Unused;  There is a single group. */
        (void)grp_cur;
@@ -4795,7 +4801,7 @@ static void do_cmd_knowledge_inven(void)
                        do_cmd_knowledge_inven_aux(fff, &inventory[i], &j, tval, where);
                }
 
-               st_ptr = &town[1].store[STORE_HOME];
+               st_ptr = &town_info[1].store[STORE_HOME];
                strcpy(where, _("家", "H "));
                for (i = 0; i < st_ptr->stock_num; i++)
                {
@@ -5264,19 +5270,19 @@ static void do_cmd_knowledge_artifacts(void)
        }
 
        /* Check the dungeon */
-       for (y = 0; y < cur_hgt; y++)
+       for (y = 0; y < current_floor_ptr->height; y++)
        {
-               for (x = 0; x < cur_wid; x++)
+               for (x = 0; x < current_floor_ptr->width; x++)
                {
-                       cave_type *c_ptr = &cave[y][x];
+                       grid_type *g_ptr = &current_floor_ptr->grid_array[y][x];
 
                        OBJECT_IDX this_o_idx, next_o_idx = 0;
 
                        /* Scan all objects in the grid */
-                       for (this_o_idx = c_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx)
+                       for (this_o_idx = g_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx)
                        {
                                object_type *o_ptr;
-                               o_ptr = &o_list[this_o_idx];
+                               o_ptr = &current_floor_ptr->o_list[this_o_idx];
 
                                /* Acquire next object */
                                next_o_idx = o_ptr->next_o_idx;
@@ -5503,7 +5509,8 @@ static void do_cmd_knowledge_uniques(void)
  */
 static void do_cmd_knowledge_weapon_exp(void)
 {
-       int i, num, weapon_exp;
+       int i, num;
+       SUB_EXP weapon_exp;
        KIND_OBJECT_IDX j;
 
        FILE *fff;
@@ -5562,7 +5569,8 @@ static void do_cmd_knowledge_weapon_exp(void)
 static void do_cmd_knowledge_spell_exp(void)
 {
        SPELL_IDX i = 0;
-       int spell_exp, exp_level;
+       SUB_EXP spell_exp;
+       int exp_level;
 
        FILE *fff;
        const magic_type *s_ptr;
@@ -5653,10 +5661,14 @@ static void do_cmd_knowledge_skill_exp(void)
 
        FILE *fff;
 
-       GAME_TEXT file_name[1024];
-       GAME_TEXT skill_name[3][20]={_("マーシャルアーツ", "Martial Arts    "),
-                                                       _("二刀流          ", "Dual Wielding   "), 
-                                                       _("乗馬            ", "Riding          ")};
+       char file_name[1024];
+       char skill_name[GINOU_TEMPMAX][20] =
+       {
+               _("マーシャルアーツ", "Martial Arts    "),
+               _("二刀流          ", "Dual Wielding   "), 
+               _("乗馬            ", "Riding          "),
+               _("盾              ", "Shield          ")
+       };
 
        /* Open a new file */
        fff = my_fopen_temp(file_name, 1024);
@@ -5666,7 +5678,7 @@ static void do_cmd_knowledge_skill_exp(void)
            return;
        }
 
-       for (i = 0; i < 3; i++)
+       for (i = 0; i < GINOU_TEMPMAX; i++)
        {
                skill_exp = p_ptr->skill_exp[i];
                fprintf(fff, "%-20s ", skill_name[i]);
@@ -6156,7 +6168,7 @@ static void browser_cursor(char ch, int *column, IDX *grp_cur, int grp_cnt,
                int old_grp = grp;
 
                /* Move up or down */
-               grp += ddy[d];
+               grp += (IDX)ddy[d];
 
                /* Verify */
                if (grp >= grp_cnt)     grp = grp_cnt - 1;
@@ -6168,7 +6180,7 @@ static void browser_cursor(char ch, int *column, IDX *grp_cur, int grp_cnt,
        else
        {
                /* Move up or down */
-               list += ddy[d];
+               list += (IDX)ddy[d];
 
                /* Verify */
                if (list >= list_cnt) list = list_cnt - 1;
@@ -6202,11 +6214,10 @@ static void display_visual_list(int col, int row, int height, int width, TERM_CO
                /* Display columns until done */
                for (j = 0; j < width; j++)
                {
-                       byte a;
-                       char c;
+                       TERM_COLOR a, ia;
+                       SYMBOL_CODE c, ic;
                        TERM_LEN x = col + j;
                        TERM_LEN y = row + i;
-                       int ia, ic;
 
                        /* Bigtile mode uses double width */
                        if (use_bigtile) x += j;
@@ -6219,8 +6230,8 @@ static void display_visual_list(int col, int row, int height, int width, TERM_CO
                            (!use_graphics && ic > 0x7f))
                                continue;
 
-                       a = (byte)ia;
-                       c = (char)ic;
+                       a = ia;
+                       c = ic;
 
                        /* Force correct code for both ASCII character and tile */
                        if (c & 0x80) a |= 0x80;
@@ -6255,11 +6266,11 @@ static void place_visual_list_cursor(TERM_LEN col, TERM_LEN row, TERM_COLOR a, b
  *  Clipboard variables for copy&paste in visual mode
  */
 static TERM_COLOR attr_idx = 0;
-static byte char_idx = 0;
+static SYMBOL_CODE char_idx = 0;
 
 /* Hack -- for feature lighting */
 static TERM_COLOR attr_idx_feat[F_LIT_MAX];
-static byte char_idx_feat[F_LIT_MAX];
+static SYMBOL_CODE char_idx_feat[F_LIT_MAX];
 
 /*
  *  Do visual mode command -- Change symbols
@@ -6357,8 +6368,8 @@ static bool visual_mode_command(char ch, bool *visual_list_ptr,
                {
                        int eff_width;
                        int d = get_keymap_dir(ch);
-                       byte a = (*cur_attr_ptr & 0x7f);
-                       byte c = *cur_char_ptr;
+                       TERM_COLOR a = (*cur_attr_ptr & 0x7f);
+                       SYMBOL_CODE c = *cur_char_ptr;
 
                        if (use_bigtile) eff_width = width / 2;
                        else eff_width = width;
@@ -6369,8 +6380,8 @@ static bool visual_mode_command(char ch, bool *visual_list_ptr,
                        if ((a == 0x7f) && (ddy[d] > 0)) d = 0;
                        if ((c == 0xff) && (ddx[d] > 0)) d = 0;
 
-                       a += ddy[d];
-                       c += ddx[d];
+                       a += (TERM_COLOR)ddy[d];
+                       c += (SYMBOL_CODE)ddx[d];
 
                        /* Force correct code for both ASCII character and tile */
                        if (c & 0x80) a |= 0x80;
@@ -6692,7 +6703,7 @@ static void do_cmd_knowledge_monsters(bool *need_redraw, bool visual_only, IDX d
        }
 
        /* Free the "mon_idx" array */
-       C_KILL(mon_idx, max_r_idx, s16b);
+       C_KILL(mon_idx, max_r_idx, MONRACE_IDX);
 }
 
 
@@ -6709,7 +6720,7 @@ static void display_object_list(int col, int row, int per_page, IDX object_idx[]
        {
                GAME_TEXT o_name[MAX_NLEN];
                TERM_COLOR a;
-               byte c;
+               SYMBOL_CODE c;
                object_kind *flavor_k_ptr;
 
                /* Get the object index */
@@ -6820,7 +6831,7 @@ static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, IDX di
        int grp_cnt;
        IDX grp_idx[100];
        int object_cnt;
-       IDX *object_idx;
+       OBJECT_IDX *object_idx;
 
        int column = 0;
        bool flag;
@@ -6831,7 +6842,7 @@ static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, IDX di
        byte char_left = 0;
 
        int browser_rows;
-       int wid, hgt;
+       TERM_LEN wid, hgt;
 
        byte mode;
 
@@ -7093,7 +7104,7 @@ static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, IDX di
        }
 
        /* Free the "object_idx" array */
-       C_KILL(object_idx, max_k_idx, IDX);
+       C_KILL(object_idx, max_k_idx, KIND_OBJECT_IDX);
 }
 
 
@@ -7198,8 +7209,8 @@ static void do_cmd_knowledge_features(bool *need_redraw, bool visual_only, IDX d
        TERM_COLOR *cur_attr_ptr;
        SYMBOL_CODE *cur_char_ptr;
 
-       (void)C_WIPE(attr_old, F_LIT_MAX, byte);
-       (void)C_WIPE(char_old, F_LIT_MAX, byte);
+       (void)C_WIPE(attr_old, F_LIT_MAX, TERM_COLOR);
+       (void)C_WIPE(char_old, F_LIT_MAX, SYMBOL_CODE);
 
        Term_get_size(&wid, &hgt);
 
@@ -7516,15 +7527,10 @@ static void do_cmd_knowledge_kubi(void)
        {
                bool listed = FALSE;
 
-#ifdef JP
-               fprintf(fff, "今日のターゲット : %s\n", (p_ptr->today_mon ? r_name + r_info[p_ptr->today_mon].name : "不明"));
-               fprintf(fff, "\n");
-               fprintf(fff, "賞金首リスト\n");
-#else
-               fprintf(fff, "Today target : %s\n", (p_ptr->today_mon ? r_name + r_info[p_ptr->today_mon].name : "unknown"));
+               fprintf(fff, _("今日のターゲット : %s\n", "Today target : %s\n"),
+                       (p_ptr->today_mon ? r_name + r_info[p_ptr->today_mon].name : _("不明", "unknown")));
                fprintf(fff, "\n");
-               fprintf(fff, "List of wanted monsters\n");
-#endif
+               fprintf(fff, _("賞金首リスト\n", "List of wanted monsters\n"));
                fprintf(fff, "----------------------------------------------\n");
 
                for (i = 0; i < MAX_KUBI; i++)
@@ -7582,9 +7588,8 @@ static void do_cmd_knowledge_virtues(void)
 }
 
 /*
-* Dungeon
-*
-*/
+ * Dungeon
+ */
 static void do_cmd_knowledge_dungeon(void)
 {
        FILE *fff;
@@ -7651,15 +7656,11 @@ static void do_cmd_knowledge_stat(void)
                        (2 * p_ptr->hitdie +
                        ((PY_MAX_LEVEL - 1+3) * (p_ptr->hitdie + 1))));
 
-#ifdef JP
-               if (p_ptr->knowledge & KNOW_HPRATE) fprintf(fff, "現在の体力ランク : %d/100\n\n", percent);
-               else fprintf(fff, "現在の体力ランク : ???\n\n");
-               fprintf(fff, "能力の最大値\n\n");
-#else
-               if (p_ptr->knowledge & KNOW_HPRATE) fprintf(fff, "Your current Life Rating is %d/100.\n\n", percent);
-               else fprintf(fff, "Your current Life Rating is ???.\n\n");
-               fprintf(fff, "Limits of maximum stats\n\n");
-#endif
+               if (p_ptr->knowledge & KNOW_HPRATE)
+                       fprintf(fff, _("現在の体力ランク : %d/100\n\n", "Your current Life Rating is %d/100.\n\n"), percent);
+               else fprintf(fff, _("現在の体力ランク : ???\n\n", "Your current Life Rating is ???.\n\n"));
+
+               fprintf(fff, _("能力の最大値\n\n", "Limits of maximum stats\n\n"));
                for (v_nr = 0; v_nr < A_MAX; v_nr++)
                {
                        if ((p_ptr->knowledge & KNOW_STAT) || p_ptr->stat_max[v_nr] == p_ptr->stat_max_max[v_nr]) fprintf(fff, "%s 18/%d\n", stat_names[v_nr], p_ptr->stat_max_max[v_nr]-18);
@@ -7687,7 +7688,7 @@ static void do_cmd_knowledge_quests_current(FILE *fff)
        char rand_tmp_str[120] = "\0";
        GAME_TEXT name[MAX_NLEN];
        monster_race *r_ptr;
-       IDX i;
+       QUEST_IDX i;
        int rand_level = 100;
        int total = 0;
 
@@ -7700,7 +7701,7 @@ static void do_cmd_knowledge_quests_current(FILE *fff)
                        (quest[i].status == QUEST_STATUS_COMPLETED))
                {
                        /* Set the quest number temporary */
-                       IDX old_quest = p_ptr->inside_quest;
+                       QUEST_IDX old_quest = p_ptr->inside_quest;
                        int j;
 
                        /* Clear the text */
@@ -7915,21 +7916,20 @@ static bool do_cmd_knowledge_quests_aux(FILE *fff, IDX q_idx)
 /*
  * Print all finished quests
  */
-void do_cmd_knowledge_quests_completed(FILE *fff, IDX quest_num[])
+void do_cmd_knowledge_quests_completed(FILE *fff, QUEST_IDX quest_num[])
 {
-       int i;
-       int total = 0;
+       QUEST_IDX i;
+       QUEST_IDX total = 0;
 
        fprintf(fff, _("《達成したクエスト》\n", "< Completed Quest >\n"));
        for (i = 1; i < max_q_idx; i++)
        {
-               IDX q_idx = quest_num[i];
+               QUEST_IDX q_idx = quest_num[i];
                quest_type* const q_ptr = &quest[q_idx];
 
-               if (q_ptr->status == QUEST_STATUS_FINISHED &&
-                   do_cmd_knowledge_quests_aux(fff, q_idx))
+               if (q_ptr->status == QUEST_STATUS_FINISHED && do_cmd_knowledge_quests_aux(fff, q_idx))
                {
-                       ++ total;
+                       ++total;
                }
        }
        if (!total) fprintf(fff, _("  なし\n", "  Nothing.\n"));
@@ -7939,21 +7939,21 @@ void do_cmd_knowledge_quests_completed(FILE *fff, IDX quest_num[])
 /*
  * Print all failed quests
  */
-void do_cmd_knowledge_quests_failed(FILE *fff, IDX quest_num[])
+void do_cmd_knowledge_quests_failed(FILE *fff, QUEST_IDX quest_num[])
 {
-       IDX i;
-       int total = 0;
+       QUEST_IDX i;
+       QUEST_IDX total = 0;
 
        fprintf(fff, _("《失敗したクエスト》\n", "< Failed Quest >\n"));
        for (i = 1; i < max_q_idx; i++)
        {
-               IDX q_idx = quest_num[i];
+               QUEST_IDX q_idx = quest_num[i];
                quest_type* const q_ptr = &quest[q_idx];
 
                if (((q_ptr->status == QUEST_STATUS_FAILED_DONE) || (q_ptr->status == QUEST_STATUS_FAILED)) &&
                    do_cmd_knowledge_quests_aux(fff, q_idx))
                {
-                       ++ total;
+                       ++total;
                }
        }
        if (!total) fprintf(fff, _("  なし\n", "  Nothing.\n"));
@@ -7965,9 +7965,9 @@ void do_cmd_knowledge_quests_failed(FILE *fff, IDX quest_num[])
  */
 static void do_cmd_knowledge_quests_wiz_random(FILE *fff)
 {
-       char tmp_str[120];
-       int i;
-       int total = 0;
+       GAME_TEXT tmp_str[120];
+       QUEST_IDX i;
+       QUEST_IDX total = 0;
 
        fprintf(fff, _("《残りのランダムクエスト》\n", "< Remaining Random Quest >\n"));
        for (i = 1; i < max_q_idx; i++)
@@ -8066,7 +8066,7 @@ static void do_cmd_knowledge_quests(void)
        fd_kill(file_name);
 
        /* Free Memory */
-       C_KILL(quest_num, max_q_idx, IDX);
+       C_KILL(quest_num, max_q_idx, QUEST_IDX);
 }
 
 
@@ -8096,7 +8096,7 @@ static void do_cmd_knowledge_home(void)
        if (fff)
        {
                /* Print all homes in the different towns */
-               st_ptr = &town[1].store[STORE_HOME];
+               st_ptr = &town_info[1].store[STORE_HOME];
 
                /* Home -- if anything there */
                if (st_ptr->stock_num)
@@ -8423,16 +8423,8 @@ void do_cmd_time(void)
        if (day < MAX_DAYS) sprintf(day_buf, "%d", day);
        else strcpy(day_buf, "*****");
 
-#ifdef JP
-       msg_format("%s日目, 時刻は%d:%02d %sです。",
-                  day_buf, (hour % 12 == 0) ? 12 : (hour % 12),
-                  min, (hour < 12) ? "AM" : "PM");
-#else
-       msg_format("This is day %s. The time is %d:%02d %s.",
-                  day_buf, (hour % 12 == 0) ? 12 : (hour % 12),
-                  min, (hour < 12) ? "AM" : "PM");
-#endif
-
+       msg_format(_("%s日目, 時刻は%d:%02d %sです。", "This is day %s. The time is %d:%02d %s."),
+                  day_buf, (hour % 12 == 0) ? 12 : (hour % 12), min, (hour < 12) ? "AM" : "PM");
 
        /* Find the path */
        if (!randint0(10) || p_ptr->image)