OSDN Git Service

[Refactor] #37353 effects.c を player-effects.c に改名しつつ、宣言を player-effects.h を分離。
[hengband/hengband.git] / src / cmd4.c
index 3d433bf..0e1c081 100644 (file)
 
 #include "angband.h"
 #include "cmd-pet.h"
+#include "cmd-spell.h"
 #include "world.h"
-
+#include "player-effects.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-flavor.h"
+#include "object-hook.h"
+#include "monster.h"
+#include "monster-status.h"
+#include "floor.h"
+#include "view-mainwindow.h"
+#include "dungeon-file.h"
+#include "files.h"
 
 /*
  */
@@ -57,7 +73,7 @@ static char auto_dump_footer[] = "# ^^^^^^^== %s ==^^^^^^^";
  * Variables for auto dump
  */
 static FILE *auto_dump_stream;
-static cptr auto_dump_mark;
+static concptr auto_dump_mark;
 static int auto_dump_line_num;
 
 
@@ -66,7 +82,7 @@ static int auto_dump_line_num;
  * Remove old lines automatically generated before.
  * @param orig_file 消去を行うファイル名
  */
-static void remove_auto_dump(cptr orig_file)
+static void remove_auto_dump(concptr orig_file)
 {
        FILE *tmp_fff, *orig_fff;
 
@@ -228,9 +244,9 @@ static void remove_auto_dump(cptr orig_file)
  * Dump a formatted line, using "vstrnfmt()".
  * @param fmt 出力内容
  */
-static void auto_dump_printf(cptr fmt, ...)
+static void auto_dump_printf(concptr fmt, ...)
 {
-       cptr p;
+       concptr p;
        va_list vp;
 
        char buf[1024];
@@ -262,7 +278,7 @@ static void auto_dump_printf(cptr fmt, ...)
  * @param mark 出力するヘッダマーク
  * @return ファイルポインタを取得できたらTRUEを返す
  */
-static bool open_auto_dump(cptr buf, cptr mark)
+static bool open_auto_dump(concptr buf, concptr mark)
 {
 
        char header_mark_str[80];
@@ -335,7 +351,7 @@ static void close_auto_dump(void)
  * @param num number
  * @return pointer of suffix string.
  */
-cptr get_ordinal_number_suffix(int num)
+concptr get_ordinal_number_suffix(int num)
 {
        num = ABS(num) % 100;
        switch (num % 10)
@@ -361,13 +377,13 @@ cptr get_ordinal_number_suffix(int num)
  * @param note 日記内容のIDに応じた文字列参照ポインタ
  * @return エラーID
  */
-errr do_cmd_write_nikki(int type, int num, cptr note)
+errr do_cmd_write_nikki(int type, int num, concptr note)
 {
        int day, hour, min;
        FILE *fff = NULL;
        GAME_TEXT file_name[MAX_NLEN];
        char buf[1024];
-       cptr note_level = "";
+       concptr note_level = "";
        bool do_level = TRUE;
        char note_level_buf[40];
        QUEST_IDX q_idx;
@@ -384,7 +400,7 @@ errr do_cmd_write_nikki(int type, int num, cptr 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;
@@ -418,13 +434,13 @@ errr do_cmd_write_nikki(int type, int num, cptr 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))))
@@ -432,9 +448,9 @@ errr do_cmd_write_nikki(int type, int num, cptr 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;
                }
@@ -509,8 +525,8 @@ errr do_cmd_write_nikki(int type, int num, cptr 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:
@@ -523,7 +539,7 @@ errr do_cmd_write_nikki(int type, int num, cptr note)
                }
                case NIKKI_STAIR:
                {
-                       cptr to;
+                       concptr to;
                        if (q_idx && (is_fixed_quest_idx(q_idx)
                             && !((q_idx == QUEST_OBERON) || (q_idx == QUEST_SERPENT))))
                        {
@@ -531,8 +547,8 @@ errr do_cmd_write_nikki(int type, int num, cptr 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;
@@ -541,8 +557,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, (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;
@@ -597,11 +613,11 @@ errr do_cmd_write_nikki(int type, int num, cptr note)
                }
                case NIKKI_WIZ_TELE:
                {
-                       cptr to;
-                       if (!dun_level)
+                       concptr to;
+                       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);
@@ -609,11 +625,11 @@ errr do_cmd_write_nikki(int type, int num, cptr note)
                }
                case NIKKI_PAT_TELE:
                {
-                       cptr to;
-                       if (!dun_level)
+                       concptr to;
+                       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);
@@ -804,11 +820,9 @@ static void do_cmd_disp_nikki(void)
        else strcpy(tmp,subtitle[randint0(MAX_SUBTITLE-2)+1]);
 
 #ifdef JP
-       sprintf(nikki_title, "「%s%s%sの伝説 -%s-」",
-               ap_ptr->title, ap_ptr->no ? "の" : "", p_ptr->name, tmp);
+       sprintf(nikki_title, "「%s%s%sの伝説 -%s-」", ap_ptr->title, ap_ptr->no ? "の" : "", p_ptr->name, tmp);
 #else
-       sprintf(nikki_title, "Legend of %s %s '%s'",
-               ap_ptr->title, p_ptr->name, tmp);
+       sprintf(nikki_title, "Legend of %s %s '%s'", ap_ptr->title, p_ptr->name, tmp);
 #endif
 
        /* Display the file contents */
@@ -839,18 +853,18 @@ static void do_cmd_bunshou(void)
 static void do_cmd_last_get(void)
 {
        char buf[256];
-       s32b turn_tmp;
+       GAME_TURN turn_tmp;
 
        if (record_o_name[0] == '\0') return;
 
        sprintf(buf,_("%sの入手を記録します。", "Do you really want to record getting %s? "),record_o_name);
        if (!get_check(buf)) return;
 
-       turn_tmp = turn;
-       turn = record_turn;
+       turn_tmp = current_world_ptr->game_turn;
+       current_world_ptr->game_turn = record_turn;
        sprintf(buf,_("%sを手に入れた。", "descover %s."), record_o_name);
        do_cmd_write_nikki(NIKKI_BUNSHOU, 0, buf);
-       turn = turn_tmp;
+       current_world_ptr->game_turn = turn_tmp;
 }
 
 /*!
@@ -868,8 +882,6 @@ static void do_cmd_erase_nikki(void)
 
        /* Build the filename */
        path_build(buf, sizeof(buf), ANGBAND_DIR_USER, file_name);
-
-       /* Remove the file */
        fd_kill(buf);
 
        fff = my_fopen(buf, "w");
@@ -963,18 +975,14 @@ void do_cmd_nikki(void)
 void do_cmd_redraw(void)
 {
        int j;
-
        term *old = Term;
 
 
        /* Hack -- react to changes */
        Term_xtra(TERM_XTRA_REACT, 0);
 
-
        /* Combine and Reorder the pack (later) */
-       p_ptr->notice |= (PN_COMBINE | PN_REORDER);
-
-
+       p_ptr->update |= (PU_COMBINE | PU_REORDER);
        p_ptr->update |= (PU_TORCH);
        p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
        p_ptr->update |= (PU_UN_VIEW | PU_UN_LITE);
@@ -1134,7 +1142,7 @@ void do_cmd_messages(int num_now)
        char shower_str[81];
        char finder_str[81];
        char back_str[81];
-       cptr shower = NULL;
+       concptr shower = NULL;
        int wid, hgt;
        int num_lines;
 
@@ -1166,7 +1174,7 @@ void do_cmd_messages(int num_now)
                /* Dump up to 20 lines of messages */
                for (j = 0; (j < num_lines) && (i + j < n); j++)
                {
-                       cptr msg = message_str(i+j);
+                       concptr msg = message_str(i+j);
 
                        /* Dump the messages, bottom to top */
                        c_prt((i + j < num_now ? TERM_WHITE : TERM_SLATE), msg, num_lines + 1 - j, 0);
@@ -1174,7 +1182,7 @@ void do_cmd_messages(int num_now)
                        /* Hilite "shower" */
                        if (shower && shower[0])
                        {
-                               cptr str = msg;
+                               concptr str = msg;
 
                                /* Display matches */
                                while ((str = my_strstr(str, shower)) != NULL)
@@ -1259,7 +1267,7 @@ void do_cmd_messages(int num_now)
                                /* Scan messages */
                                for (z = i + 1; z < n; z++)
                                {
-                                       cptr msg = message_str(z);
+                                       concptr msg = message_str(z);
 
                                        /* Search for it */
                                        if (my_strstr(msg, finder_str))
@@ -1344,7 +1352,7 @@ void do_cmd_messages(int num_now)
  * @param info 表示メッセージ
  * @return なし
  */
-static void do_cmd_options_cheat(cptr info)
+static void do_cmd_options_cheat(concptr info)
 {
        char    ch;
        int             i, k = 0, n = CHEAT_MAX;
@@ -1492,7 +1500,7 @@ static s16b toggle_frequency(s16b current)
  * @param info 表示メッセージ
  * @return なし
  */
-static void do_cmd_options_autosave(cptr info)
+static void do_cmd_options_autosave(concptr info)
 {
        char ch;
        int i, k = 0, n = 2;
@@ -1607,7 +1615,7 @@ static void do_cmd_options_autosave(cptr info)
  * @param info 表示メッセージ
  * @return なし
  */
-void do_cmd_options_aux(int page, cptr info)
+void do_cmd_options_aux(int page, concptr info)
 {
        char    ch;
        int     i, k = 0, n = 0, l;
@@ -1783,7 +1791,7 @@ static void do_cmd_options_win(void)
                {
                        byte a = TERM_WHITE;
 
-                       cptr s = angband_term_name[j];
+                       concptr s = angband_term_name[j];
 
                        /* Use color */
                        if (j == x) a = TERM_L_BLUE;
@@ -1797,7 +1805,7 @@ static void do_cmd_options_win(void)
                {
                        byte a = TERM_WHITE;
 
-                       cptr str = window_flag_desc[i];
+                       concptr str = window_flag_desc[i];
 
                        /* Use color */
                        if (i == y) a = TERM_L_BLUE;
@@ -1923,7 +1931,7 @@ static void do_cmd_options_win(void)
 static struct opts
 {
        char key;
-       cptr name;
+       concptr name;
        int row;
 }
 option_fields[OPT_NUM] =
@@ -2300,9 +2308,9 @@ void do_cmd_reload_autopick(void)
  * @param fname ファイル名
  * @return なし
  */
-static errr macro_dump(cptr fname)
+static errr macro_dump(concptr fname)
 {
-       static cptr mark = "Macro Dump";
+       static concptr mark = "Macro Dump";
 
        int i;
 
@@ -2441,9 +2449,9 @@ static void do_cmd_macro_aux_keymap(char *buf)
  * @return エラーコード
  * @details
  */
-static errr keymap_dump(cptr fname)
+static errr keymap_dump(concptr fname)
 {
-       static cptr mark = "Keymap Dump";
+       static concptr mark = "Keymap Dump";
        int i;
 
        char key[1024];
@@ -2479,7 +2487,7 @@ static errr keymap_dump(cptr fname)
        /* Dump them */
        for (i = 0; i < 256; i++)
        {
-               cptr act;
+               concptr act;
 
                /* Loop up the keymap */
                act = keymap_act[mode][i];
@@ -2769,7 +2777,7 @@ void do_cmd_macros(void)
                /* Query a keymap */
                else if (i == '7')
                {
-                       cptr act;
+                       concptr act;
 
                        /* Prompt */
                        prt(_("コマンド: キー配置の確認", "Command: Query a keymap"), 16, 0);
@@ -2912,7 +2920,7 @@ void do_cmd_macros(void)
 /*!
  * @brief キャラクタ色の明暗表現
  */
-static cptr lighting_level_str[F_LIT_MAX] =
+static concptr lighting_level_str[F_LIT_MAX] =
 {
 #ifdef JP
        "標準色",
@@ -2962,7 +2970,7 @@ static bool cmd_visuals_aux(int i, IDX *num, IDX max)
  * @param choice_msg 選択メッセージ
  * @return なし
  */
-static void print_visuals_menu(cptr choice_msg)
+static void print_visuals_menu(concptr choice_msg)
 {
        prt(_("[ 画面表示の設定 ]", "Interact with Visuals"), 1, 0);
        
@@ -3000,7 +3008,7 @@ void do_cmd_visuals(void)
        char tmp[160];
        char buf[1024];
        bool need_redraw = FALSE;
-       cptr empty_symbol = "<< ? >>";
+       concptr empty_symbol = "<< ? >>";
 
        if (use_bigtile) empty_symbol = "<< ?? >>";
 
@@ -3048,7 +3056,7 @@ void do_cmd_visuals(void)
                /* Dump monster attr/chars */
                case '1':
                {
-                       static cptr mark = "Monster attr/chars";
+                       static concptr mark = "Monster attr/chars";
 
                        /* Prompt */
                        prt(_("コマンド: モンスターの[色/文字]をファイルに書き出します", "Command: Dump monster attr/chars"), 15, 0);
@@ -3098,7 +3106,7 @@ void do_cmd_visuals(void)
                /* Dump object attr/chars */
                case '2':
                {
-                       static cptr mark = "Object attr/chars";
+                       static concptr mark = "Object attr/chars";
                        KIND_OBJECT_IDX k_idx;
 
                        /* Prompt */
@@ -3166,7 +3174,7 @@ void do_cmd_visuals(void)
                /* Dump feature attr/chars */
                case '3':
                {
-                       static cptr mark = "Feature attr/chars";
+                       static concptr mark = "Feature attr/chars";
 
                        /* Prompt */
                        prt(_("コマンド: 地形の[色/文字]をファイルに書き出します", "Command: Dump feature attr/chars"), 15, 0);
@@ -3221,8 +3229,8 @@ void do_cmd_visuals(void)
                /* Modify monster attr/chars (numeric operation) */
                case '4':
                {
-                       static cptr choice_msg = _("モンスターの[色/文字]を変更します", "Change monster attr/chars");
-                       static IDX r = 0;
+                       static concptr choice_msg = _("モンスターの[色/文字]を変更します", "Change monster attr/chars");
+                       static MONRACE_IDX r = 0;
 
                        prt(format(_("コマンド: %s", "Command: %s"), choice_msg), 15, 0);
 
@@ -3311,7 +3319,7 @@ void do_cmd_visuals(void)
                /* Modify object attr/chars (numeric operation) */
                case '5':
                {
-                       static cptr choice_msg = _("アイテムの[色/文字]を変更します", "Change object attr/chars");
+                       static concptr choice_msg = _("アイテムの[色/文字]を変更します", "Change object attr/chars");
                        static IDX k = 0;
                        prt(format(_("コマンド: %s", "Command: %s"), choice_msg), 15, 0);
 
@@ -3401,7 +3409,7 @@ void do_cmd_visuals(void)
                /* Modify feature attr/chars (numeric operation) */
                case '6':
                {
-                       static cptr choice_msg = _("地形の[色/文字]を変更します", "Change feature attr/chars");
+                       static concptr choice_msg = _("地形の[色/文字]を変更します", "Change feature attr/chars");
                        static IDX f = 0;
                        static IDX lighting_level = F_LIT_STANDARD;
                        prt(format(_("コマンド: %s", "Command: %s"), choice_msg), 15, 0);
@@ -3622,7 +3630,7 @@ void do_cmd_colors(void)
                /* Dump colors */
                else if (i == '2')
                {
-                       static cptr mark = "Colors";
+                       static concptr mark = "Colors";
 
                        /* Prompt */
                        prt(_("コマンド: カラーの設定をファイルに書き出します", "Command: Dump colors"), 8, 0);
@@ -3653,7 +3661,7 @@ void do_cmd_colors(void)
                                int gv = angband_color_table[i][2];
                                int bv = angband_color_table[i][3];
 
-                               cptr name = _("未知", "unknown");
+                               concptr name = _("未知", "unknown");
 
                                /* Skip non-entries */
                                if (!kv && !rv && !gv && !bv) continue;
@@ -3686,7 +3694,7 @@ void do_cmd_colors(void)
                        /* Hack -- query until done */
                        while (1)
                        {
-                               cptr name;
+                               concptr name;
                                byte j;
 
                                /* Clear */
@@ -3787,8 +3795,6 @@ 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);
@@ -3803,7 +3809,7 @@ void do_cmd_version(void)
 /*
  * Array of feeling strings
  */
-static cptr do_cmd_feeling_text[11] =
+static concptr do_cmd_feeling_text[11] =
 {
        _("この階の雰囲気を感じとれなかった...", "Looks like any other level."),
        _("この階には何か特別なものがあるような気がする。", "You feel there is something special about this level."),
@@ -3818,7 +3824,7 @@ static cptr do_cmd_feeling_text[11] =
        _("なんて退屈なところだ...", "What a boring place...")
 };
 
-static cptr do_cmd_feeling_text_combat[11] =
+static concptr do_cmd_feeling_text_combat[11] =
 {
        _("この階の雰囲気を感じとれなかった...", "Looks like any other level."),
        _("この階には何か特別なものがあるような気がする。", "You feel there is something special about this level."),
@@ -3833,7 +3839,7 @@ static cptr do_cmd_feeling_text_combat[11] =
        _("なんて退屈なところだ...", "What a boring place...")
 };
 
-static cptr do_cmd_feeling_text_lucky[11] =
+static concptr do_cmd_feeling_text_lucky[11] =
 {
        _("この階の雰囲気を感じとれなかった...", "Looks like any other level."),
        _("この階には何か特別なものがあるような気がする。", "You feel there is something special about this level."),
@@ -3855,17 +3861,19 @@ static cptr do_cmd_feeling_text_lucky[11] =
  */
 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;
@@ -3878,7 +3886,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;
@@ -3899,7 +3907,7 @@ void do_cmd_feeling(void)
 /*
  * Description of each monster group.
  */
-static cptr monster_group_text[] = 
+static concptr monster_group_text[] = 
 {
 #ifdef JP
        "ユニーク", /* "Uniques" */
@@ -4032,7 +4040,7 @@ static cptr monster_group_text[] =
  * Symbols of monsters in each group. Note the "Uniques" group
  * is handled differently.
  */
-static cptr monster_group_char[] =
+static concptr monster_group_char[] =
 {
        (char *) -1L,
        (char *) -2L,
@@ -4099,30 +4107,6 @@ static cptr monster_group_char[] =
 
 
 /*
- * hook function to sort monsters by level
- */
-static bool ang_sort_comp_monster_level(vptr u, vptr v, int a, int b)
-{
-       u16b *who = (u16b*)(u);
-
-       int w1 = who[a];
-       int w2 = who[b];
-
-       monster_race *r_ptr1 = &r_info[w1];
-       monster_race *r_ptr2 = &r_info[w2];
-
-       /* Unused */
-       (void)v;
-
-       if (r_ptr2->level > r_ptr1->level) return TRUE;
-       if (r_ptr1->level > r_ptr2->level) return FALSE;
-
-       if ((r_ptr2->flags1 & RF1_UNIQUE) && !(r_ptr1->flags1 & RF1_UNIQUE)) return TRUE;
-       if ((r_ptr1->flags1 & RF1_UNIQUE) && !(r_ptr2->flags1 & RF1_UNIQUE)) return FALSE;
-       return w1 <= w2;
-}
-
-/*
  * Build a list of monster indexes in the given group. Return the number
  * of monsters in the group.
  *
@@ -4136,7 +4120,7 @@ static IDX collect_monsters(IDX grp_cur, IDX mon_idx[], BIT_FLAGS8 mode)
        int dummy_why;
 
        /* Get a list of x_char in this group */
-       cptr group_char = monster_group_char[grp_cur];
+       concptr group_char = monster_group_char[grp_cur];
 
        /* XXX Hack -- Check if this is the "Uniques" group */
        bool grp_unique = (monster_group_char[grp_cur] == (char *) -1L);
@@ -4179,7 +4163,7 @@ static IDX collect_monsters(IDX grp_cur, IDX mon_idx[], BIT_FLAGS8 mode)
                        int j;
                        for (j = 0; j < MAX_KUBI; j++)
                        {
-                               if (kubi_r_idx[j] == i || kubi_r_idx[j] - 10000 == i ||
+                               if (current_world_ptr->bounty_r_idx[j] == i || current_world_ptr->bounty_r_idx[j] - 10000 == i ||
                                        (p_ptr->today_mon && p_ptr->today_mon == i))
                                {
                                        wanted = TRUE;
@@ -4210,12 +4194,7 @@ static IDX collect_monsters(IDX grp_cur, IDX mon_idx[], BIT_FLAGS8 mode)
        /* Terminate the list */
        mon_idx[mon_cnt] = -1;
 
-       /* Select the sort method */
-       ang_sort_comp = ang_sort_comp_monster_level;
-       ang_sort_swap = ang_sort_swap_hook;
-
-       /* Sort by monster level */
-       ang_sort(mon_idx, &dummy_why, mon_cnt);
+       ang_sort(mon_idx, &dummy_why, mon_cnt, ang_sort_comp_monster_level, ang_sort_swap_hook);
 
        /* Return the number of races */
        return mon_cnt;
@@ -4225,7 +4204,7 @@ static IDX collect_monsters(IDX grp_cur, IDX mon_idx[], BIT_FLAGS8 mode)
 /*
  * Description of each monster group.
  */
-static cptr object_group_text[] = 
+static concptr object_group_text[] = 
 {
 #ifdef JP
        "キノコ",    /* "Mushrooms" */
@@ -4376,10 +4355,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];
@@ -4446,7 +4425,7 @@ static int collect_objects(int grp_cur, IDX object_idx[], BIT_FLAGS8 mode)
 /*
  * Description of each feature group.
  */
-static cptr feature_group_text[] = 
+static concptr feature_group_text[] = 
 {
        "terrains",
        NULL
@@ -4459,10 +4438,10 @@ static cptr 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;
@@ -4470,7 +4449,6 @@ static int collect_features(int grp_cur, IDX *feat_idx, BIT_FLAGS8 mode)
        /* Check every feature */
        for (i = 0; i < max_f_idx; i++)
        {
-               /* Access the index */
                feature_type *f_ptr = &f_info[i];
 
                /* Skip empty index */
@@ -4546,18 +4524,14 @@ static char hack[17] = "dwsorgbuDWvyRGBU";
  */
 void do_cmd_load_screen(void)
 {
-       int i, y, x;
-
+       int i;
+       TERM_LEN y, x;
        TERM_COLOR a = 0;
-       char c = ' ';
-
+       SYMBOL_CODE c = ' ';
        bool okay = TRUE;
-
        FILE *fff;
-
        char buf[1024];
-
-       int wid, hgt;
+       TERM_LEN wid, hgt;
 
        Term_get_size(&wid, &hgt);
 
@@ -4631,12 +4605,8 @@ void do_cmd_load_screen(void)
                        Term_draw(x, y, a, c);
                }
        }
-
-
-       /* Close it */
        my_fclose(fff);
 
-
        prt(_("ファイルに書き出された画面(記念撮影)をロードしました。", "Screen dump loaded."), 0, 0);
 
        flush();
@@ -4648,7 +4618,7 @@ void do_cmd_load_screen(void)
 
 
 
-cptr inven_res_label = _("                               酸電火冷毒光闇破轟獄因沌劣 盲怖乱痺透命感消復浮",
+concptr inven_res_label = _("                               酸電火冷毒光闇破轟獄因沌劣 盲怖乱痺透命感消復浮",
                                                 "                               AcElFiCoPoLiDkShSoNtNxCaDi BlFeCfFaSeHlEpSdRgLv");
 
 
@@ -4768,16 +4738,13 @@ static void do_cmd_knowledge_inven_aux(FILE *fff, object_type *o_ptr, int *j, OB
 static void do_cmd_knowledge_inven(void)
 {
        FILE *fff;
-
        GAME_TEXT file_name[1024];
-
        store_type  *st_ptr;
-
        OBJECT_TYPE_VALUE tval;
        int i = 0;
        int j = 0;
 
-       char  where[32];
+       char where[32];
 
        /* Open a new file */
        fff = my_fopen_temp(file_name, 1024);
@@ -4808,7 +4775,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++)
                {
@@ -4819,15 +4786,14 @@ static void do_cmd_knowledge_inven(void)
 
        /* Display the file contents */
        show_file(TRUE, file_name, _("*鑑定*済み武器/防具の耐性リスト", "Resistances of *identified* equipment"), 0, 0);
-
-       /* Remove the file */
        fd_kill(file_name);
 }
 
 
 void do_cmd_save_screen_html_aux(char *filename, int message)
 {
-       int y, x, i;
+       TERM_LEN y, x;
+       int i;
 
        TERM_COLOR a = 0, old_a = 0;
        char c = ' ';
@@ -4836,25 +4802,25 @@ void do_cmd_save_screen_html_aux(char *filename, int message)
        char buf[2048];
 
        int yomikomu = 0;
-       cptr tags[4] = {
+       concptr tags[4] = {
                "HEADER_START:",
                "HEADER_END:",
                "FOOTER_START:",
                "FOOTER_END:",
        };
 
-       cptr html_head[] = {
+       concptr html_head[] = {
                "<html>\n<body text=\"#ffffff\" bgcolor=\"#000000\">\n",
                "<pre>",
                0,
        };
-       cptr html_foot[] = {
+       concptr html_foot[] = {
                "</pre>\n",
                "</body>\n</html>\n",
                0,
        };
 
-       int wid, hgt;
+       TERM_LEN wid, hgt;
 
        Term_get_size(&wid, &hgt);
 
@@ -4907,7 +4873,7 @@ void do_cmd_save_screen_html_aux(char *filename, int message)
                for (x = 0; x < wid - 1; x++)
                {
                        int rv, gv, bv;
-                       cptr cc = NULL;
+                       concptr cc = NULL;
                        /* Get the attr/char */
                        (void)(Term_what(x, y, &a, &c));
 
@@ -4962,8 +4928,6 @@ void do_cmd_save_screen_html_aux(char *filename, int message)
 
        /* Skip a line */
        fprintf(fff, "\n");
-
-       /* Close it */
        my_fclose(fff);
 
        if (message) {
@@ -5051,13 +5015,10 @@ void do_cmd_save_screen(void)
        }
        else /* Dump the screen as text */
        {
-               int y, x;
-
+               TERM_LEN y, x;
                TERM_COLOR a = 0;
-               char c = ' ';
-
+               SYMBOL_CODE c = ' ';
                FILE *fff;
-
                char buf[1024];
 
                /* Build the filename */
@@ -5125,8 +5086,6 @@ void do_cmd_save_screen(void)
 
                /* Skip a line */
                fprintf(fff, "\n");
-
-               /* Close it */
                my_fclose(fff);
 
                msg_print(_("画面(記念撮影)をファイルに書き出しました。", "Screen dump saved."));
@@ -5143,107 +5102,20 @@ void do_cmd_save_screen(void)
        }
 }
 
-
-/*
- * Sorting hook -- Comp function -- see below
- *
- * We use "u" to point to array of monster indexes,
- * and "v" to select the type of sorting to perform on "u".
- */
-static bool ang_sort_art_comp(vptr u, vptr v, int a, int b)
-{
-       u16b *who = (u16b*)(u);
-
-       u16b *why = (u16b*)(v);
-
-       int w1 = who[a];
-       int w2 = who[b];
-
-       int z1, z2;
-
-       /* Sort by total kills */
-       if (*why >= 3)
-       {
-               /* Extract total kills */
-               z1 = a_info[w1].tval;
-               z2 = a_info[w2].tval;
-
-               /* Compare total kills */
-               if (z1 < z2) return (TRUE);
-               if (z1 > z2) return (FALSE);
-       }
-
-
-       /* Sort by monster level */
-       if (*why >= 2)
-       {
-               /* Extract levels */
-               z1 = a_info[w1].sval;
-               z2 = a_info[w2].sval;
-
-               /* Compare levels */
-               if (z1 < z2) return (TRUE);
-               if (z1 > z2) return (FALSE);
-       }
-
-
-       /* Sort by monster experience */
-       if (*why >= 1)
-       {
-               /* Extract experience */
-               z1 = a_info[w1].level;
-               z2 = a_info[w2].level;
-
-               /* Compare experience */
-               if (z1 < z2) return (TRUE);
-               if (z1 > z2) return (FALSE);
-       }
-
-
-       /* Compare indexes */
-       return (w1 <= w2);
-}
-
-
-/*
- * Sorting hook -- Swap function -- see below
- *
- * We use "u" to point to array of monster indexes,
- * and "v" to select the type of sorting to perform.
- */
-static void ang_sort_art_swap(vptr u, vptr v, int a, int b)
-{
-       u16b *who = (u16b*)(u);
-
-       u16b holder;
-
-       /* Unused */
-       (void)v;
-
-       /* Swap */
-       holder = who[a];
-       who[a] = who[b];
-       who[b] = holder;
-}
-
-
 /*
  * Check the status of "artifacts"
  */
 static void do_cmd_knowledge_artifacts(void)
 {
-       IDX i;
-       IDX k;
+       ARTIFACT_IDX i;
+       ARTIFACT_IDX k;
        POSITION x, y;
        int n = 0;
-       IDX z;
+       ARTIFACT_IDX z;
        u16b why = 3;
-       IDX *who;
-
+       ARTIFACT_IDX *who;
        FILE *fff;
-
        GAME_TEXT file_name[1024];
-
        GAME_TEXT base_name[MAX_NLEN];
 
        bool *okay;
@@ -5258,7 +5130,7 @@ static void do_cmd_knowledge_artifacts(void)
        }
 
        /* Allocate the "who" array */
-       C_MAKE(who, max_a_idx, s16b);
+       C_MAKE(who, max_a_idx, ARTIFACT_IDX);
 
        /* Allocate the "okay" array */
        C_MAKE(okay, max_a_idx, bool);
@@ -5282,21 +5154,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];
-
-                               /* Acquire next object */
+                               o_ptr = &current_floor_ptr->o_list[this_o_idx];
                                next_o_idx = o_ptr->next_o_idx;
 
                                /* Ignore non-artifacts */
@@ -5334,19 +5204,12 @@ static void do_cmd_knowledge_artifacts(void)
                if (okay[k]) who[n++] = k;
        }
 
-       /* Select the sort method */
-       ang_sort_comp = ang_sort_art_comp;
-       ang_sort_swap = ang_sort_art_swap;
-
-       /* Sort the array by dungeon depth of monsters */
-       ang_sort(who, &why, n);
+       ang_sort(who, &why, n, ang_sort_art_comp, ang_sort_art_swap);
 
        /* Scan the artifacts */
        for (k = 0; k < n; k++)
        {
                artifact_type *a_ptr = &a_info[who[k]];
-
-               /* Paranoia */
                strcpy(base_name, _("未知の伝説のアイテム", "Unknown Artifact"));
 
                /* Obtain the base object type */
@@ -5377,7 +5240,7 @@ static void do_cmd_knowledge_artifacts(void)
        }
 
        /* Free the "who" array */
-       C_KILL(who, max_a_idx, s16b);
+       C_KILL(who, max_a_idx, ARTIFACT_IDX);
 
        /* Free the "okay" array */
        C_KILL(okay, max_a_idx, bool);
@@ -5385,8 +5248,6 @@ static void do_cmd_knowledge_artifacts(void)
 
        /* Display the file contents */
        show_file(TRUE, file_name, _("既知の伝説のアイテム", "Artifacts Seen"), 0, 0);
-
-       /* Remove the file */
        fd_kill(file_name);
 }
 
@@ -5425,7 +5286,7 @@ static void do_cmd_knowledge_uniques(void)
        }
 
        /* Allocate the "who" array */
-       C_MAKE(who, max_r_idx, s16b);
+       C_MAKE(who, max_r_idx, MONRACE_IDX);
 
        /* Scan the monsters */
        for (i = 1; i < max_r_idx; i++)
@@ -5463,12 +5324,8 @@ static void do_cmd_knowledge_uniques(void)
                who[n++] = i;
        }
 
-       /* Select the sort method */
-       ang_sort_comp = ang_sort_comp_hook;
-       ang_sort_swap = ang_sort_swap_hook;
-
        /* Sort the array by dungeon depth of monsters */
-       ang_sort(who, &why, n);
+       ang_sort(who, &why, n, ang_sort_comp_hook, ang_sort_swap_hook);
 
        if (n_alive_surface)
        {
@@ -5510,8 +5367,6 @@ static void do_cmd_knowledge_uniques(void)
 
        /* Display the file contents */
        show_file(TRUE, file_name, _("まだ生きているユニーク・モンスター", "Alive Uniques"), 0, 0);
-
-       /* Remove the file */
        fd_kill(file_name);
 }
 
@@ -5521,7 +5376,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;
@@ -5566,8 +5422,6 @@ static void do_cmd_knowledge_weapon_exp(void)
 
        /* Display the file contents */
        show_file(TRUE, file_name, _("武器の経験値", "Weapon Proficiency"), 0, 0);
-
-       /* Remove the file */
        fd_kill(file_name);
 }
 
@@ -5580,7 +5434,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;
@@ -5654,8 +5509,6 @@ static void do_cmd_knowledge_spell_exp(void)
 
        /* Display the file contents */
        show_file(TRUE, file_name, _("魔法の経験値", "Spell Proficiency"), 0, 0);
-
-       /* Remove the file */
        fd_kill(file_name);
 }
 
@@ -5671,10 +5524,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);
@@ -5684,7 +5541,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]);
@@ -5698,8 +5555,6 @@ static void do_cmd_knowledge_skill_exp(void)
 
        /* Display the file contents */
        show_file(TRUE, file_name, _("技能の経験値", "Miscellaneous Proficiency"), 0, 0);
-
-       /* Remove the file */
        fd_kill(file_name);
 }
 
@@ -5731,10 +5586,10 @@ void plural_aux(char *Name)
        }
        else if (my_strstr(Name, " of "))
        {
-               cptr aider = my_strstr(Name, " of ");
+               concptr aider = my_strstr(Name, " of ");
                char dummy[80];
                int i = 0;
-               cptr ctr = Name;
+               concptr ctr = Name;
 
                while (ctr < aider)
                {
@@ -5857,10 +5712,10 @@ static void do_cmd_knowledge_pets(void)
        for (i = m_max - 1; i >= 1; i--)
        {
                /* Access the monster */
-               m_ptr = &m_list[i];
+               m_ptr = &current_floor_ptr->m_list[i];
 
                /* Ignore "dead" monsters */
-               if (!m_ptr->r_idx) continue;
+               if (!monster_is_valid(m_ptr)) continue;
 
                /* Calculate "upkeep" for pets */
                if (is_pet(m_ptr))
@@ -5876,20 +5731,16 @@ static void do_cmd_knowledge_pets(void)
        fprintf(fff, "----------------------------------------------\n");
 #ifdef JP
        fprintf(fff, "    合計: %d 体のペット\n", t_friends);
-       fprintf(fff, " 維持コスト: %d%% MP\n", show_upkeep);
 #else
-       fprintf(fff, "   Total: %d pet%s.\n",
-               t_friends, (t_friends == 1 ? "" : "s"));
-       fprintf(fff, "   Upkeep: %d%% mana.\n", show_upkeep);
+       fprintf(fff, "   Total: %d pet%s.\n", t_friends, (t_friends == 1 ? "" : "s"));
 #endif
+       fprintf(fff, _(" 維持コスト: %d%% MP\n", "   Upkeep: %d%% mana.\n"), show_upkeep);
 
 
        my_fclose(fff);
 
        /* Display the file contents */
        show_file(TRUE, file_name, _("現在のペット", "Current Pets"), 0, 0);
-
-       /* Remove the file */
        fd_kill(file_name);
 }
 
@@ -5902,13 +5753,11 @@ static void do_cmd_knowledge_pets(void)
  */
 static void do_cmd_knowledge_kill_count(void)
 {
-       IDX i;
+       MONRACE_IDX i;
        int k, n = 0;
        u16b why = 2;
-       IDX *who;
-
+       MONRACE_IDX *who;
        FILE *fff;
-
        GAME_TEXT file_name[1024];
 
        s32b Total = 0;
@@ -5918,13 +5767,13 @@ static void do_cmd_knowledge_kill_count(void)
        fff = my_fopen_temp(file_name, 1024);
 
        if (!fff) {
-           msg_format(_("一時ファイル %s を作成できませんでした。", "Failed to create temporary file %s."), file_name);
-           msg_print(NULL);
-           return;
+               msg_format(_("一時ファイル %s を作成できませんでした。", "Failed to create temporary file %s."), file_name);
+               msg_print(NULL);
+               return;
        }
 
        /* Allocate the "who" array */
-       C_MAKE(who, max_r_idx, s16b);
+       C_MAKE(who, max_r_idx, MONRACE_IDX);
 
        {
                /* Monsters slain */
@@ -5975,12 +5824,8 @@ static void do_cmd_knowledge_kill_count(void)
                if (r_ptr->name) who[n++] = i;
        }
 
-       /* Select the sort method */
-       ang_sort_comp = ang_sort_comp_hook;
-       ang_sort_swap = ang_sort_swap_hook;
-
        /* Sort the array by dungeon depth of monsters */
-       ang_sort(who, &why, n);
+       ang_sort(who, &why, n, ang_sort_comp_hook, ang_sort_swap_hook);
 
        /* Scan the monster races */
        for (k = 0; k < n; k++)
@@ -6050,8 +5895,6 @@ static void do_cmd_knowledge_kill_count(void)
 
        /* Display the file contents */
        show_file(TRUE, file_name, _("倒した敵の数", "Kill Count"), 0, 0);
-
-       /* Remove the file */
        fd_kill(file_name);
 }
 
@@ -6069,7 +5912,7 @@ static void do_cmd_knowledge_kill_count(void)
  * @param grp_top 現在の選択リスト最上部ID
  * @return なし
  */
-static void display_group_list(int col, int row, int wid, int per_page, IDX grp_idx[], cptr group_text[], int grp_cur, int grp_top)
+static void display_group_list(int col, int row, int wid, int per_page, IDX grp_idx[], concptr group_text[], int grp_cur, int grp_top)
 {
        int i;
 
@@ -6178,7 +6021,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;
@@ -6190,7 +6033,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;
@@ -6224,11 +6067,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;
@@ -6241,8 +6083,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;
@@ -6277,11 +6119,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
@@ -6379,8 +6221,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;
@@ -6391,8 +6233,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;
@@ -6508,7 +6350,7 @@ static void do_cmd_knowledge_monsters(bool *need_redraw, bool visual_only, IDX d
        browser_rows = hgt - 8;
 
        /* Allocate the "mon_idx" array */
-       C_MAKE(mon_idx, max_r_idx, s16b);
+       C_MAKE(mon_idx, max_r_idx, MONRACE_IDX);
 
        max = 0;
        grp_cnt = 0;
@@ -6568,22 +6410,12 @@ static void do_cmd_knowledge_monsters(bool *need_redraw, bool visual_only, IDX d
                if (redraw)
                {
                        clear_from(0);
-
-#ifdef JP
-                       prt(format("%s - モンスター", !visual_only ? "知識" : "表示"), 2, 0);
-                       if (direct_r_idx < 0) prt("グループ", 4, 0);
-                       prt("名前", 4, max + 3);
+                       prt(format(_("%s - モンスター", "%s - monsters"), !visual_only ? _("知識", "Knowledge") : _("表示", "Visuals")), 2, 0);
+                       if (direct_r_idx < 0) prt(_("グループ", "Group"), 4, 0);
+                       prt(_("名前", "Name"), 4, max + 3);
                        if (p_ptr->wizard || visual_only) prt("Idx", 4, 62);
-                       prt("文字", 4, 67);
-                       if (!visual_only) prt("殺害数", 4, 72);
-#else
-                       prt(format("%s - monsters", !visual_only ? "Knowledge" : "Visuals"), 2, 0);
-                       if (direct_r_idx < 0) prt("Group", 4, 0);
-                       prt("Name", 4, max + 3);
-                       if (p_ptr->wizard || visual_only) prt("Idx", 4, 62);
-                       prt("Sym", 4, 68);
-                       if (!visual_only) prt("Kills", 4, 73);
-#endif
+                       prt(_("文字", "Sym"), 4, 67);
+                       if (!visual_only) prt(_("殺害数", "Kills"), 4, 72);
 
                        for (i = 0; i < 78; i++)
                        {
@@ -6642,19 +6474,11 @@ static void do_cmd_knowledge_monsters(bool *need_redraw, bool visual_only, IDX d
                }
 
                /* Prompt */
-#ifdef JP
-               prt(format("<方向>%s%s%s, ESC",
-                       (!visual_list && !visual_only) ? ", 'r'で思い出を見る" : "",
-                       visual_list ? ", ENTERで決定" : ", 'v'でシンボル変更",
-                       (attr_idx || char_idx) ? ", 'c', 'p'でペースト" : ", 'c'でコピー"),
-                       hgt - 1, 0);
-#else
-               prt(format("<dir>%s%s%s, ESC",
-                       (!visual_list && !visual_only) ? ", 'r' to recall" : "",
-                       visual_list ? ", ENTER to accept" : ", 'v' for visuals",
-                       (attr_idx || char_idx) ? ", 'c', 'p' to paste" : ", 'c' to copy"),
+               prt(format(_("<方向>%s%s%s, ESC", "<dir>%s%s%s, ESC"),
+                       (!visual_list && !visual_only) ? _(", 'r'で思い出を見る", ", 'r' to recall") : "",
+                       visual_list ? _(", ENTERで決定", ", ENTER to accept") : _(", 'v'でシンボル変更", ", 'v' for visuals"),
+                       (attr_idx || char_idx) ? _(", 'c', 'p'でペースト", ", 'c', 'p' to paste") : _(", 'c'でコピー", ", 'c' to copy")),
                        hgt - 1, 0);
-#endif
 
                /* Get the current monster */
                r_ptr = &r_info[mon_idx[mon_cur]];
@@ -6732,7 +6556,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);
 }
 
 
@@ -6749,7 +6573,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 */
@@ -6825,8 +6649,6 @@ static void desc_obj_fake(KIND_OBJECT_IDX k_idx)
        object_type object_type_body;
        o_ptr = &object_type_body;
        object_wipe(o_ptr);
-
-       /* Create the artifact */
        object_prep(o_ptr, k_idx);
 
        /* It's fully know */
@@ -6860,7 +6682,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;
@@ -6871,7 +6693,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;
 
@@ -6880,7 +6702,7 @@ static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, IDX di
        browser_rows = hgt - 8;
 
        /* Allocate the "object_idx" array */
-       C_MAKE(object_idx, max_k_idx, IDX);
+       C_MAKE(object_idx, max_k_idx, KIND_OBJECT_IDX);
 
        max = 0;
        grp_cnt = 0;
@@ -7133,7 +6955,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);
 }
 
 
@@ -7155,13 +6977,8 @@ static void display_feature_list(int col, int row, int per_page, FEAT_IDX *feat_
        for (i = 0; i < per_page && (feat_idx[feat_top + i] >= 0); i++)
        {
                TERM_COLOR attr;
-
-               /* Get the index */
                FEAT_IDX f_idx = feat_idx[feat_top + i];
-
-               /* Access the index */
                feature_type *f_ptr = &f_info[f_idx];
-
                int row_i = row + i;
 
                /* Choose a color */
@@ -7213,16 +7030,16 @@ static void display_feature_list(int col, int row, int per_page, FEAT_IDX *feat_
  */
 static void do_cmd_knowledge_features(bool *need_redraw, bool visual_only, IDX direct_f_idx, IDX *lighting_level)
 {
-       IDX i;
+       FEAT_IDX i;
        int len, max;
-       IDX grp_cur, grp_top, old_grp_cur;
-       IDX feat_cur, feat_top;
+       FEAT_IDX grp_cur, grp_top, old_grp_cur;
+       FEAT_IDX feat_cur, feat_top;
        int grp_cnt;
-       IDX grp_idx[100];
+       FEAT_IDX grp_idx[100];
        int feat_cnt;
-       IDX *feat_idx;
+       FEAT_IDX *feat_idx;
 
-       int column = 0;
+       TERM_LEN column = 0;
        bool flag;
        bool redraw;
 
@@ -7230,23 +7047,23 @@ static void do_cmd_knowledge_features(bool *need_redraw, bool visual_only, IDX d
        TERM_COLOR attr_top = 0;
        byte char_left = 0;
 
-       int browser_rows;
-       int wid, hgt;
+       TERM_LEN browser_rows;
+       TERM_LEN wid, hgt;
 
        TERM_COLOR attr_old[F_LIT_MAX];
        SYMBOL_CODE char_old[F_LIT_MAX];
        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);
 
        browser_rows = hgt - 8;
 
        /* Allocate the "feat_idx" array */
-       C_MAKE(feat_idx, max_f_idx, IDX);
+       C_MAKE(feat_idx, max_f_idx, FEAT_IDX);
 
        max = 0;
        grp_cnt = 0;
@@ -7311,35 +7128,19 @@ static void do_cmd_knowledge_features(bool *need_redraw, bool visual_only, IDX d
                {
                        clear_from(0);
 
-#ifdef JP
-                       prt("表示 - 地形", 2, 0);
-                       if (direct_f_idx < 0) prt("グループ", 4, 0);
-                       prt("名前", 4, max + 3);
+                       prt(_("表示 - 地形", "Visuals - features"), 2, 0);
+                       if (direct_f_idx < 0) prt(_("グループ", "Group"), 4, 0);
+                       prt(_("名前", "Name"), 4, max + 3);
                        if (use_bigtile)
                        {
                                if (p_ptr->wizard || visual_only) prt("Idx", 4, 62);
-                               prt("文字 ( l/ d)", 4, 66);
+                               prt(_("文字 ( l/ d)", "Sym ( l/ d)"), 4, 66);
                        }
                        else
                        {
                                if (p_ptr->wizard || visual_only) prt("Idx", 4, 64);
-                               prt("文字 (l/d)", 4, 68);
+                               prt(_("文字 (l/d)", "Sym (l/d)"), 4, 68);
                        }
-#else
-                       prt("Visuals - features", 2, 0);
-                       if (direct_f_idx < 0) prt("Group", 4, 0);
-                       prt("Name", 4, max + 3);
-                       if (use_bigtile)
-                       {
-                               if (p_ptr->wizard || visual_only) prt("Idx", 4, 62);
-                               prt("Sym ( l/ d)", 4, 67);
-                       }
-                       else
-                       {
-                               if (p_ptr->wizard || visual_only) prt("Idx", 4, 64);
-                               prt("Sym (l/d)", 4, 69);
-                       }
-#endif
 
                        for (i = 0; i < 78; i++)
                        {
@@ -7398,17 +7199,10 @@ static void do_cmd_knowledge_features(bool *need_redraw, bool visual_only, IDX d
                }
 
                /* Prompt */
-#ifdef JP
-               prt(format("<方向>%s, 'd'で標準光源効果%s, ESC",
-                       visual_list ? ", ENTERで決定, 'a'で対象明度変更" : ", 'v'でシンボル変更",
-                       (attr_idx || char_idx) ? ", 'c', 'p'でペースト" : ", 'c'でコピー"),
-                       hgt - 1, 0);
-#else
-               prt(format("<dir>%s, 'd' for default lighting%s, ESC",
-                       visual_list ? ", ENTER to accept, 'a' for lighting level" : ", 'v' for visuals",
-                       (attr_idx || char_idx) ? ", 'c', 'p' to paste" : ", 'c' to copy"),
+               prt(format(_("<方向>%s, 'd'で標準光源効果%s, ESC", "<dir>%s, 'd' for default lighting%s, ESC"),
+                       visual_list ? _(", ENTERで決定, 'a'で対象明度変更", ", ENTER to accept, 'a' for lighting level") : _(", 'v'でシンボル変更", ", 'v' for visuals"),
+                       (attr_idx || char_idx) ? _(", 'c', 'p'でペースト", ", 'c', 'p' to paste") : _(", 'c'でコピー", ", 'c' to copy")),
                        hgt - 1, 0);
-#endif
 
                /* Get the current feature */
                f_ptr = &f_info[feat_idx[feat_cur]];
@@ -7552,7 +7346,7 @@ static void do_cmd_knowledge_features(bool *need_redraw, bool visual_only, IDX d
        }
 
        /* Free the "feat_idx" array */
-       C_KILL(feat_idx, max_f_idx, IDX);
+       C_KILL(feat_idx, max_f_idx, FEAT_IDX);
 }
 
 
@@ -7579,22 +7373,17 @@ 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++)
                {
-                       if (kubi_r_idx[i] <= 10000)
+                       if (current_world_ptr->bounty_r_idx[i] <= 10000)
                        {
-                               fprintf(fff,"%s\n", r_name + r_info[kubi_r_idx[i]].name);
+                               fprintf(fff,"%s\n", r_name + r_info[current_world_ptr->bounty_r_idx[i]].name);
 
                                listed = TRUE;
                        }
@@ -7609,8 +7398,6 @@ static void do_cmd_knowledge_kubi(void)
        
        /* Display the file contents */
        show_file(TRUE, file_name, _("賞金首の一覧", "Wanted monsters"), 0, 0);
-       
-       /* Remove the file */
        fd_kill(file_name);
 }
 
@@ -7639,15 +7426,12 @@ static void do_cmd_knowledge_virtues(void)
        
        /* Display the file contents */
        show_file(TRUE, file_name, _("八つの徳", "Virtues"), 0, 0);
-       
-       /* Remove the file */
        fd_kill(file_name);
 }
 
 /*
-* Dungeon
-*
-*/
+ * Dungeon
+ */
 static void do_cmd_knowledge_dungeon(void)
 {
        FILE *fff;
@@ -7684,8 +7468,6 @@ static void do_cmd_knowledge_dungeon(void)
        
        /* Display the file contents */
        show_file(TRUE, file_name, _("今までに入ったダンジョン", "Dungeon"), 0, 0);
-       
-       /* Remove the file */
        fd_kill(file_name);
 }
 
@@ -7714,16 +7496,12 @@ 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
-               for (v_nr = 0; v_nr < 6; v_nr++)
+               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);
                        else fprintf(fff, "%s ???\n", stat_names[v_nr]);
@@ -7735,8 +7513,6 @@ static void do_cmd_knowledge_stat(void)
        
        /* Display the file contents */
        show_file(TRUE, file_name, _("自分に関する情報", "HP-rate & Max stat"), 0, 0);
-       
-       /* Remove the file */
        fd_kill(file_name);
 }
 
@@ -7750,7 +7526,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;
 
@@ -7763,7 +7539,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 */
@@ -7978,21 +7754,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"));
@@ -8002,21 +7777,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"));
@@ -8028,9 +7803,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++)
@@ -8051,35 +7826,6 @@ static void do_cmd_knowledge_quests_wiz_random(FILE *fff)
        if (!total) fprintf(fff, _("  なし\n", "  Nothing.\n"));
 }
 
-
-bool ang_sort_comp_quest_num(vptr u, vptr v, int a, int b)
-{
-       QUEST_IDX *q_num = (QUEST_IDX *)u;
-       quest_type *qa = &quest[q_num[a]];
-       quest_type *qb = &quest[q_num[b]];
-
-       /* Unused */
-       (void)v;
-
-       return (qa->comptime != qb->comptime) ?
-               (qa->comptime < qb->comptime) :
-               (qa->level <= qb->level);
-}
-
-void ang_sort_swap_quest_num(vptr u, vptr v, int a, int b)
-{
-       QUEST_IDX *q_num = (QUEST_IDX *)u;
-       QUEST_IDX tmp;
-
-       /* Unused */
-       (void)v;
-
-       tmp = q_num[a];
-       q_num[a] = q_num[b];
-       q_num[b] = tmp;
-}
-
-
 /*
  * Print quest status of all active quests
  */
@@ -8101,13 +7847,11 @@ static void do_cmd_knowledge_quests(void)
        }
 
        /* Allocate Memory */
-       C_MAKE(quest_num, max_q_idx, IDX);
+       C_MAKE(quest_num, max_q_idx, QUEST_IDX);
 
        /* Sort by compete level */
        for (i = 1; i < max_q_idx; i++) quest_num[i] = i;
-       ang_sort_comp = ang_sort_comp_quest_num;
-       ang_sort_swap = ang_sort_swap_quest_num;
-       ang_sort(quest_num, &dummy, max_q_idx);
+       ang_sort(quest_num, &dummy, max_q_idx, ang_sort_comp_quest_num, ang_sort_swap_quest_num);
 
        /* Dump Quest Information */
        do_cmd_knowledge_quests_current(fff);
@@ -8124,12 +7868,10 @@ static void do_cmd_knowledge_quests(void)
 
        /* Display the file contents */
        show_file(TRUE, file_name, _("クエスト達成状況", "Quest status"), 0, 0);
-
-       /* Remove the file */
        fd_kill(file_name);
 
        /* Free Memory */
-       C_KILL(quest_num, max_q_idx, IDX);
+       C_KILL(quest_num, max_q_idx, QUEST_IDX);
 }
 
 
@@ -8144,9 +7886,9 @@ static void do_cmd_knowledge_home(void)
        GAME_TEXT file_name[1024];
        store_type  *st_ptr;
        GAME_TEXT o_name[MAX_NLEN];
-       cptr            paren = ")";
+       concptr         paren = ")";
 
-       process_dungeon_file("w_info.txt", 0, 0, max_wild_y, max_wild_x);
+       process_dungeon_file("w_info.txt", 0, 0, current_world_ptr->max_wild_y, current_world_ptr->max_wild_x);
 
        /* Open a new file */
        fff = my_fopen_temp(file_name, 1024);
@@ -8159,7 +7901,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)
@@ -8206,8 +7948,6 @@ static void do_cmd_knowledge_home(void)
 
        /* Display the file contents */
        show_file(TRUE, file_name, _("我が家のアイテム", "Home Inventory"), 0, 0);
-
-       /* Remove the file */
        fd_kill(file_name);
 }
 
@@ -8243,7 +7983,7 @@ static void do_cmd_knowledge_autopick(void)
 
        for (k = 0; k < max_autopick; k++)
        {
-               cptr tmp;
+               concptr tmp;
                byte act = autopick_list[k].action;
                if (act & DONT_AUTOPICK)
                {
@@ -8275,8 +8015,6 @@ static void do_cmd_knowledge_autopick(void)
        my_fclose(fff);
        /* Display the file contents */
        show_file(TRUE, file_name, _("自動拾い/破壊 設定リスト", "Auto-picker/Destroyer"), 0, 0);
-
-       /* Remove the file */
        fd_kill(file_name);
 }
 
@@ -8486,16 +8224,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)