OSDN Git Service

[Refactor] #37353 'kubi'/'shoukinkubi'を'bounty'に変更 / Changed 'kubi' and 'shoukinkubi...
[hengband/hengband.git] / src / bldg.c
index f3bdc7c..320ee72 100644 (file)
@@ -53,6 +53,7 @@
 #include "player-effects.h"
 #include "player-class.h"
 #include "player-personality.h"
+#include "player-inventory.h"
 #include "scores.h"
 #include "shoot.h"
 #include "view-mainwindow.h"
@@ -349,12 +350,12 @@ static void arena_comm(int cmd)
                                                msg_print(NULL);
                                        
                                                p_ptr->exit_bldg = FALSE;
-                                               reset_tim_flags();
+                                               reset_tim_flags(p_ptr);
 
                                                /* Save the surface floor as saved floor */
                                                prepare_change_floor_mode(CFM_SAVE_FLOORS);
 
-                                               p_ptr->inside_arena = TRUE;
+                                               p_ptr->current_floor_ptr->inside_arena = TRUE;
                                                p_ptr->leaving = TRUE;
                                                p_ptr->leave_bldg = TRUE;
                                        }
@@ -379,12 +380,12 @@ static void arena_comm(int cmd)
                        else
                        {
                                p_ptr->exit_bldg = FALSE;
-                               reset_tim_flags();
+                               reset_tim_flags(p_ptr);
 
                                /* Save the surface floor as saved floor */
                                prepare_change_floor_mode(CFM_SAVE_FLOORS);
 
-                               p_ptr->inside_arena = TRUE;
+                               p_ptr->current_floor_ptr->inside_arena = TRUE;
                                p_ptr->leaving = TRUE;
                                p_ptr->leave_bldg = TRUE;
                        }
@@ -1428,12 +1429,12 @@ static bool gamble_comm(int cmd)
                        {
                                msg_print(_("「今回は儲けたな!でも次はこっちが勝ってやるからな、絶対に!」",
                                                        "You came out a winner! We'll win next time, I'm sure."));
-                               chg_virtue(V_CHANCE, 3);
+                               chg_virtue(p_ptr, V_CHANCE, 3);
                        }
                        else
                        {
                                msg_print(_("「金をスッてしまったな、わはは!うちに帰った方がいいぜ。」", "You lost gold! Haha, better head home."));
-                               chg_virtue(V_CHANCE, -3);
+                               chg_virtue(p_ptr, V_CHANCE, -3);
                        }
                }
                msg_print(NULL);
@@ -1455,7 +1456,7 @@ void update_gambling_monsters(void)
        bool tekitou;
        bool old_inside_battle = p_ptr->phase_out;
 
-       for (i = 0; i < max_d_idx; i++)
+       for (i = 0; i < current_world_ptr->max_d_idx; i++)
                if (max_dl < max_dlv[i]) max_dl = max_dlv[i];
 
        mon_level = randint1(MIN(max_dl, 122)) + 5;
@@ -1529,12 +1530,11 @@ void update_gambling_monsters(void)
                                power[i] = power[i] * 9 / 10;
                        if (r_ptr->flagsr & RFR_RES_ALL) power[i] *= 100000;
                        if (r_ptr->arena_ratio) power[i] = power[i] * r_ptr->arena_ratio / 100;
-
-
                        total += power[i];
                }
                for (i = 0; i < 4; i++)
                {
+                       if (power[i] <= 0) break;
                        power[i] = total * 60 / power[i];
                        if (tekitou && ((power[i] < 160) || power[i] > 1500)) break;
                        if ((power[i] < 160) && randint0(20)) break;
@@ -1657,7 +1657,7 @@ static bool kakutoujou(void)
                        battle_odds = MAX(wager+1, wager * battle_odds / 100);
                        kakekin = wager;
                        p_ptr->au -= wager;
-                       reset_tim_flags();
+                       reset_tim_flags(p_ptr);
 
                        /* Save the surface floor as saved floor */
                        prepare_change_floor_mode(CFM_SAVE_FLOORS);
@@ -1714,7 +1714,7 @@ static void tsuchinoko(void)
  * @brief 通常の賞金首情報を表示する。
  * @return なし
  */
-static void shoukinkubi(void)
+static void show_bounty(void)
 {
        int i;
        TERM_LEN y = 0;
@@ -1723,7 +1723,7 @@ static void shoukinkubi(void)
        prt(_("死体を持ち帰れば報酬を差し上げます。", "Offer a prize when you bring a wanted monster's corpse"),4 ,10);
        c_put_str(TERM_YELLOW, _("現在の賞金首", "Wanted monsters"), 6, 10);
 
-       for (i = 0; i < MAX_KUBI; i++)
+       for (i = 0; i < MAX_BOUNTY; i++)
        {
                byte color;
                concptr done_mark;
@@ -1743,7 +1743,7 @@ static void shoukinkubi(void)
                c_prt(color, format("%s %s", r_name + r_ptr->name, done_mark), y+7, 10);
 
                y = (y+1) % 10;
-               if (!y && (i < MAX_KUBI -1))
+               if (!y && (i < MAX_BOUNTY -1))
                {
                        prt(_("何かキーを押してください", "Hit any key."), 0, 0);
                        (void)inkey();
@@ -1761,7 +1761,7 @@ static void shoukinkubi(void)
 static struct {
        OBJECT_TYPE_VALUE tval; /*!< ベースアイテムのメイン種別ID */
        OBJECT_SUBTYPE_VALUE sval; /*!< ベースアイテムのサブ種別ID */
-} prize_list[MAX_KUBI] = 
+} prize_list[MAX_BOUNTY] = 
 {
        {TV_POTION, SV_POTION_CURING},
        {TV_POTION, SV_POTION_SPEED},
@@ -1800,7 +1800,7 @@ static bool kankin(void)
        GAME_TEXT o_name[MAX_NLEN];
        object_type *o_ptr;
 
-       /* Loop for p_ptr->inventory_list and right/left arm */
+       /* Loop for inventory and right/left arm */
        for (i = 0; i <= INVEN_LARM; i++)
        {
                o_ptr = &p_ptr->inventory_list[i];
@@ -1816,9 +1816,7 @@ static bool kankin(void)
                                msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)(1000000L * o_ptr->number));
                                p_ptr->au += 1000000L * o_ptr->number;
                                p_ptr->redraw |= (PR_GOLD);
-                               inven_item_increase(i, -o_ptr->number);
-                               inven_item_describe(i);
-                               inven_item_optimize(i);
+                               vary_item(i, -o_ptr->number);
                        }
                        change = TRUE;
                }
@@ -1839,9 +1837,7 @@ static bool kankin(void)
                                msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)(200000L * o_ptr->number));
                                p_ptr->au += 200000L * o_ptr->number;
                                p_ptr->redraw |= (PR_GOLD);
-                               inven_item_increase(i, -o_ptr->number);
-                               inven_item_describe(i);
-                               inven_item_optimize(i);
+                               vary_item(i, -o_ptr->number);
                        }
                        change = TRUE;
                }
@@ -1862,9 +1858,7 @@ static bool kankin(void)
                                msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)(100000L * o_ptr->number));
                                p_ptr->au += 100000L * o_ptr->number;
                                p_ptr->redraw |= (PR_GOLD);
-                               inven_item_increase(i, -o_ptr->number);
-                               inven_item_describe(i);
-                               inven_item_optimize(i);
+                               vary_item(i, -o_ptr->number);
                        }
                        change = TRUE;
                }
@@ -1883,9 +1877,7 @@ static bool kankin(void)
                                msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)((r_info[today_mon].level * 50 + 100) * o_ptr->number));
                                p_ptr->au += (r_info[today_mon].level * 50 + 100) * o_ptr->number;
                                p_ptr->redraw |= (PR_GOLD);
-                               inven_item_increase(i, -o_ptr->number);
-                               inven_item_describe(i);
-                               inven_item_optimize(i);
+                               vary_item(i, -o_ptr->number);
                        }
                        change = TRUE;
                }
@@ -1905,15 +1897,13 @@ static bool kankin(void)
                                msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)((r_info[today_mon].level * 30 + 60) * o_ptr->number));
                                p_ptr->au += (r_info[today_mon].level * 30 + 60) * o_ptr->number;
                                p_ptr->redraw |= (PR_GOLD);
-                               inven_item_increase(i, -o_ptr->number);
-                               inven_item_describe(i);
-                               inven_item_optimize(i);
+                               vary_item(i, -o_ptr->number);
                        }
                        change = TRUE;
                }
        }
 
-       for (j = 0; j < MAX_KUBI; j++)
+       for (j = 0; j < MAX_BOUNTY; j++)
        {
                /* Need reverse order --- Positions will be changed in the loop */
                for (i = INVEN_PACK-1; i >= 0; i--)
@@ -1934,25 +1924,21 @@ static bool kankin(void)
                                msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (r_info[current_world_ptr->bounty_r_idx[j]].level + 1) * 300 * o_ptr->number);
                                p_ptr->au += (r_info[current_world_ptr->bounty_r_idx[j]].level+1) * 300 * o_ptr->number;
                                p_ptr->redraw |= (PR_GOLD);
-                               inven_item_increase(i, -o_ptr->number);
-                               inven_item_describe(i);
-                               inven_item_optimize(i);
-                               chg_virtue(V_JUSTICE, 5);
+                               vary_item(i, -o_ptr->number);
+                               chg_virtue(p_ptr, V_JUSTICE, 5);
                                current_world_ptr->bounty_r_idx[j] += 10000;
 
                                change = TRUE;
 #endif /* Obsoleted */
 
                                /* Hand it first */
-                               inven_item_increase(i, -o_ptr->number);
-                               inven_item_describe(i);
-                               inven_item_optimize(i);
+                               vary_item(i, -o_ptr->number);
 
-                               chg_virtue(V_JUSTICE, 5);
+                               chg_virtue(p_ptr, V_JUSTICE, 5);
                                current_world_ptr->bounty_r_idx[j] += 10000;
 
                                /* Count number of unique corpses already handed */
-                               for (num = 0, k = 0; k < MAX_KUBI; k++)
+                               for (num = 0, k = 0; k < MAX_BOUNTY; k++)
                                {
                                        if (current_world_ptr->bounty_r_idx[k] >= 10000) num++;
                                }
@@ -1960,7 +1946,7 @@ static bool kankin(void)
 
                                /* Prepare to make a prize */
                                object_prep(&forge, lookup_kind(prize_list[num-1].tval, prize_list[num-1].sval));
-                               apply_magic(&forge, current_floor_ptr->object_level, AM_NO_FIXED_ART);
+                               apply_magic(&forge, p_ptr->current_floor_ptr->object_level, AM_NO_FIXED_ART);
 
                                object_aware(&forge);
                                object_known(&forge);
@@ -2005,22 +1991,22 @@ static bool kankin(void)
  * @param cmd 宿屋の利用施設ID
  * @return 施設の利用が実際に行われたか否か。
  */
-static bool inn_comm(int cmd)
+static bool inn_comm(player_type *customer_ptr, int cmd)
 {
        switch (cmd)
        {
                case BACT_FOOD: /* Buy food & drink */
-                       if (p_ptr->food >= PY_FOOD_FULL)
+                       if (customer_ptr->food >= PY_FOOD_FULL)
                        {
                                msg_print(_("今は満腹だ。", "You are full now."));
                                return FALSE;
                        }
                        msg_print(_("バーテンはいくらかの食べ物とビールをくれた。", "The barkeep gives you some gruel and a beer."));
-                       (void)set_food(p_ptr, PY_FOOD_MAX - 1);
+                       (void)set_food(customer_ptr, PY_FOOD_MAX - 1);
                        break;
 
                case BACT_REST: /* Rest for the night */
-                       if ((p_ptr->poisoned) || (p_ptr->cut))
+                       if ((customer_ptr->poisoned) || (customer_ptr->cut))
                        {
                                msg_print(_("あなたに必要なのは部屋ではなく、治療者です。", "You need a healer, not a room."));
                                msg_print(NULL);
@@ -2033,9 +2019,9 @@ static bool inn_comm(int cmd)
 
                                extract_day_hour_min(&prev_day, &prev_hour, &prev_min);
                                if ((prev_hour >= 6) && (prev_hour <= 17)) 
-                                       do_cmd_write_nikki(NIKKI_BUNSHOU, 0, _("宿屋に泊まった。", "stay over daytime at the inn."));
+                                       exe_write_diary(customer_ptr, NIKKI_BUNSHOU, 0, _("宿屋に泊まった。", "stay over daytime at the inn."));
                                else
-                                       do_cmd_write_nikki(NIKKI_BUNSHOU, 0, _("宿屋に泊まった。", "stay over night at the inn."));
+                                       exe_write_diary(customer_ptr, NIKKI_BUNSHOU, 0, _("宿屋に泊まった。", "stay over night at the inn."));
                                
                                current_world_ptr->game_turn = (current_world_ptr->game_turn / (TURNS_PER_TICK * TOWN_DAWN / 2) + 1) * (TURNS_PER_TICK * TOWN_DAWN / 2);
                                if (current_world_ptr->dungeon_turn < current_world_ptr->dungeon_turn_limit)
@@ -2046,8 +2032,8 @@ static bool inn_comm(int cmd)
 
                                prevent_turn_overflow();
 
-                               if ((prev_hour >= 18) && (prev_hour <= 23)) do_cmd_write_nikki(NIKKI_HIGAWARI, 0, NULL);
-                               p_ptr->chp = p_ptr->mhp;
+                               if ((prev_hour >= 18) && (prev_hour <= 23)) exe_write_diary(customer_ptr, NIKKI_HIGAWARI, 0, NULL);
+                               customer_ptr->chp = customer_ptr->mhp;
 
                                if (ironman_nightmare)
                                {
@@ -2056,42 +2042,42 @@ static bool inn_comm(int cmd)
                                        /* Have some nightmares */
                                        while(1)
                                        {
-                                               sanity_blast(NULL, FALSE);
+                                               sanity_blast(customer_ptr, NULL, FALSE);
                                                if (!one_in_(3)) break;
                                        }
 
                                        msg_print(_("あなたは絶叫して目を覚ました。", "You awake screaming."));
-                                       do_cmd_write_nikki(NIKKI_BUNSHOU, 0, _("悪夢にうなされてよく眠れなかった。", "be troubled by a nightmare."));
+                                       exe_write_diary(customer_ptr, NIKKI_BUNSHOU, 0, _("悪夢にうなされてよく眠れなかった。", "be troubled by a nightmare."));
                                }
                                else
                                {
-                                       set_blind(p_ptr, 0);
-                                       set_confused(p_ptr, 0);
-                                       p_ptr->stun = 0;
-                                       p_ptr->chp = p_ptr->mhp;
-                                       p_ptr->csp = p_ptr->msp;
-                                       if (p_ptr->pclass == CLASS_MAGIC_EATER)
+                                       set_blind(customer_ptr, 0);
+                                       set_confused(customer_ptr, 0);
+                                       customer_ptr->stun = 0;
+                                       customer_ptr->chp = customer_ptr->mhp;
+                                       customer_ptr->csp = customer_ptr->msp;
+                                       if (customer_ptr->pclass == CLASS_MAGIC_EATER)
                                        {
                                                int i;
                                                for (i = 0; i < 72; i++)
                                                {
-                                                       p_ptr->magic_num1[i] = p_ptr->magic_num2[i] * EATER_CHARGE;
+                                                       customer_ptr->magic_num1[i] = customer_ptr->magic_num2[i] * EATER_CHARGE;
                                                }
                                                for (; i < 108; i++)
                                                {
-                                                       p_ptr->magic_num1[i] = 0;
+                                                       customer_ptr->magic_num1[i] = 0;
                                                }
                                        }
 
                                        if ((prev_hour >= 6) && (prev_hour <= 17))
                                        {
                                                msg_print(_("あなたはリフレッシュして目覚め、夕方を迎えた。", "You awake refreshed for the evening."));
-                                               do_cmd_write_nikki(NIKKI_BUNSHOU, 0, _("夕方を迎えた。", "awake refreshed."));
+                                               exe_write_diary(customer_ptr, NIKKI_BUNSHOU, 0, _("夕方を迎えた。", "awake refreshed."));
                                        }
                                        else
                                        {
                                                msg_print(_("あなたはリフレッシュして目覚め、新たな日を迎えた。", "You awake refreshed for the new day."));
-                                               do_cmd_write_nikki(NIKKI_BUNSHOU, 0, _("すがすがしい朝を迎えた。", "awake refreshed."));
+                                               exe_write_diary(customer_ptr, NIKKI_BUNSHOU, 0, _("すがすがしい朝を迎えた。", "awake refreshed."));
                                        }
                                }
                        }
@@ -2129,8 +2115,8 @@ static void get_questinfo(IDX questnum, bool do_init)
        quest_text_line = 0;
 
        /* Set the quest number temporary */
-       old_quest = p_ptr->inside_quest;
-       p_ptr->inside_quest = questnum;
+       old_quest = p_ptr->current_floor_ptr->inside_quest;
+       p_ptr->current_floor_ptr->inside_quest = questnum;
 
        /* Get the quest text */
        init_flags = INIT_SHOW_TEXT;
@@ -2139,7 +2125,7 @@ static void get_questinfo(IDX questnum, bool do_init)
        process_dungeon_file("q_info.txt", 0, 0, 0, 0);
 
        /* Reset the old quest number */
-       p_ptr->inside_quest = old_quest;
+       p_ptr->current_floor_ptr->inside_quest = old_quest;
 
        /* Print the quest info */
        sprintf(tmp_str, _("クエスト情報 (危険度: %d 階相当)", "Quest Information (Danger level: %d)"), (int)quest[questnum].level);
@@ -2169,7 +2155,7 @@ static void castle_quest(void)
        clear_bldg(4, 18);
 
        /* Current quest of the building */
-       q_index = current_floor_ptr->grid_array[p_ptr->y][p_ptr->x].special;
+       q_index = p_ptr->current_floor_ptr->grid_array[p_ptr->y][p_ptr->x].special;
 
        /* Is there a quest available at the building? */
        if (!q_index)
@@ -2366,16 +2352,16 @@ static void show_weapon_dmg(int r, int c, int mindice, int maxdice, int blows, i
  * the current number of blows for the player.\n
  * @return なし
  */
-static void compare_weapon_aux(object_type *o_ptr, int col, int r)
+static void compare_weapon_aux(player_type *owner_ptr, object_type *o_ptr, int col, int r)
 {
        BIT_FLAGS flgs[TR_FLAG_SIZE];
-       int blow = p_ptr->num_blow[0];
+       int blow = owner_ptr->num_blow[0];
        bool force = FALSE;
        bool dokubari = FALSE;
        
        /* Effective dices */
-       int eff_dd = o_ptr->dd + p_ptr->to_dd[0];
-       int eff_ds = o_ptr->ds + p_ptr->to_ds[0];
+       int eff_dd = o_ptr->dd + owner_ptr->to_dd[0];
+       int eff_ds = o_ptr->ds + owner_ptr->to_ds[0];
        
        int mindice = eff_dd;
        int maxdice = eff_ds * eff_dd;
@@ -2383,7 +2369,7 @@ static void compare_weapon_aux(object_type *o_ptr, int col, int r)
        int maxdam = 0;
        int vorpal_mult = 1;
        int vorpal_div = 1;
-       int dmg_bonus = o_ptr->to_d + p_ptr->to_d[0];
+       int dmg_bonus = o_ptr->to_d + owner_ptr->to_d[0];
        
 
        /* Get the flags of the weapon */
@@ -2393,8 +2379,8 @@ static void compare_weapon_aux(object_type *o_ptr, int col, int r)
        
        
        /* Show Critical Damage*/
-       mindam = calc_expect_crit(o_ptr->weight, o_ptr->to_h, mindice, p_ptr->to_h[0], dokubari);
-       maxdam = calc_expect_crit(o_ptr->weight, o_ptr->to_h, maxdice, p_ptr->to_h[0], dokubari);
+       mindam = calc_expect_crit(o_ptr->weight, o_ptr->to_h, mindice, owner_ptr->to_h[0], dokubari);
+       maxdam = calc_expect_crit(o_ptr->weight, o_ptr->to_h, maxdice, owner_ptr->to_h[0], dokubari);
        
        show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("会心:", "Critical:"), TERM_L_RED);
 
@@ -2413,157 +2399,157 @@ static void compare_weapon_aux(object_type *o_ptr, int col, int r)
                        vorpal_div = 9;
                }
                
-               mindam = calc_expect_dice(mindice, 1, 1, FALSE, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 1, 1, FALSE, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);         
+               mindam = calc_expect_dice(mindice, 1, 1, FALSE, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 1, 1, FALSE, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);             
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("切れ味:", "Vorpal:") , TERM_L_RED);
        }       
        
-       if ((p_ptr->pclass != CLASS_SAMURAI) && have_flag(flgs, TR_FORCE_WEAPON) && (p_ptr->csp > (o_ptr->dd * o_ptr->ds / 5)))
+       if ((owner_ptr->pclass != CLASS_SAMURAI) && have_flag(flgs, TR_FORCE_WEAPON) && (owner_ptr->csp > (o_ptr->dd * o_ptr->ds / 5)))
        {
                force = TRUE;
                
-               mindam = calc_expect_dice(mindice, 1, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 1, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 1, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 1, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("理力:", "Force  :"), TERM_L_BLUE);
        }
                
        /* Print the relevant lines */
        if (have_flag(flgs, TR_KILL_ANIMAL))
        {
-               mindam = calc_expect_dice(mindice, 4, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 4, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);         
+               mindam = calc_expect_dice(mindice, 4, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 4, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);             
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("動物:", "Animals:"), TERM_YELLOW);
        }
        else if (have_flag(flgs, TR_SLAY_ANIMAL)) 
        {
-               mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("動物:", "Animals:"), TERM_YELLOW);
        }
        if (have_flag(flgs, TR_KILL_EVIL))
        {       
-               mindam = calc_expect_dice(mindice, 7, 2, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 7, 2, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 7, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 7, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("邪悪:", "Evil:"), TERM_YELLOW);
        }
        else if (have_flag(flgs, TR_SLAY_EVIL))
        {       
-               mindam = calc_expect_dice(mindice, 2, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 2, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);         
+               mindam = calc_expect_dice(mindice, 2, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 2, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);             
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("邪悪:", "Evil:"), TERM_YELLOW);
        }
        if (have_flag(flgs, TR_KILL_HUMAN))
        {       
-               mindam = calc_expect_dice(mindice, 4, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 4, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 4, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 4, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("人間:", "Human:"), TERM_YELLOW);
        }
        else if (have_flag(flgs, TR_SLAY_HUMAN))
        {       
-               mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("人間:", "Human:"), TERM_YELLOW);
        }
        if (have_flag(flgs, TR_KILL_UNDEAD))
        {
-               mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 5, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("不死:", "Undead:"), TERM_YELLOW);
        }
        else if (have_flag(flgs, TR_SLAY_UNDEAD)) 
        {
-               mindam = calc_expect_dice(mindice, 3, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("不死:", "Undead:"), TERM_YELLOW);
        }
        if (have_flag(flgs, TR_KILL_DEMON))
        {       
-               mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 5, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("悪魔:", "Demons:") , TERM_YELLOW);
        }
        else if (have_flag(flgs, TR_SLAY_DEMON))
        {       
-               mindam = calc_expect_dice(mindice, 3, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("悪魔:", "Demons:") , TERM_YELLOW);
        }
        if (have_flag(flgs, TR_KILL_ORC))
        {
-               mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 5, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("オーク:", "Orcs:"), TERM_YELLOW);
        }
        else if (have_flag(flgs, TR_SLAY_ORC))
        {
-               mindam = calc_expect_dice(mindice, 3, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("オーク:", "Orcs:"), TERM_YELLOW);
        }
        if (have_flag(flgs, TR_KILL_TROLL))
        {
-               mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 5, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("トロル:", "Trolls:") , TERM_YELLOW);
        }
        else if (have_flag(flgs, TR_SLAY_TROLL))
        {
-               mindam = calc_expect_dice(mindice, 3, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,   _("トロル:", "Trolls:") , TERM_YELLOW);
        }
        if (have_flag(flgs, TR_KILL_GIANT))
        {
-               mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 5, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("巨人:", "Giants:"), TERM_YELLOW);
        }
        else if (have_flag(flgs, TR_SLAY_GIANT))
        {
-               mindam = calc_expect_dice(mindice, 3, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("巨人:", "Giants:"), TERM_YELLOW);
        }
        if (have_flag(flgs, TR_KILL_DRAGON))
        {
-               mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 5, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 5, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("竜:", "Dragons:"), TERM_YELLOW);
        }
        else if (have_flag(flgs, TR_SLAY_DRAGON))
        {               
-               mindam = calc_expect_dice(mindice, 3, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 3, 1, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,   _("竜:", "Dragons:"), TERM_YELLOW);
        }
        if (have_flag(flgs, TR_BRAND_ACID))
        {
-               mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("酸属性:", "Acid:"), TERM_RED);
        }
        if (have_flag(flgs, TR_BRAND_ELEC))
        {
-               mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("電属性:", "Elec:"), TERM_RED);
        }
        if (have_flag(flgs, TR_BRAND_FIRE))
        {
-               mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("炎属性:", "Fire:"), TERM_RED);
        }
        if (have_flag(flgs, TR_BRAND_COLD))
        {
-               mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus,  _("冷属性:", "Cold:"), TERM_RED);
        }
        if (have_flag(flgs, TR_BRAND_POIS))
        {
-               mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
-               maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, p_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               mindam = calc_expect_dice(mindice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
+               maxdam = calc_expect_dice(maxdice, 5, 2, force, o_ptr->weight, o_ptr->to_h, owner_ptr->to_h[0], dokubari, vorpal_mult, vorpal_div);
                show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("毒属性:", "Poison:"), TERM_RED);
        }
 }
@@ -2633,7 +2619,7 @@ static void list_weapon(object_type *o_ptr, TERM_LEN row, TERM_LEN col)
  * @param bcost 基本鑑定費用
  * @return 最終的にかかった費用
  */
-static PRICE compare_weapons(PRICE bcost)
+static PRICE compare_weapons(player_type *customer_ptr, PRICE bcost)
 {
        int i, n;
        OBJECT_IDX item, item2;
@@ -2652,7 +2638,7 @@ static PRICE compare_weapons(PRICE bcost)
        clear_bldg(0, 22);
 
        /* Store copy of original wielded weapon */
-       i_ptr = &p_ptr->inventory_list[INVEN_RARM];
+       i_ptr = &customer_ptr->inventory_list[INVEN_RARM];
        object_copy(&orig_weapon, i_ptr);
 
        item_tester_hook = item_tester_hook_orthodox_melee_weapons;
@@ -2661,7 +2647,7 @@ static PRICE compare_weapons(PRICE bcost)
        q = _("第一の武器は?", "What is your first weapon? ");
        s = _("比べるものがありません。", "You have nothing to compare.");
 
-       o_ptr[0] = choose_object(&item, q, s, (USE_EQUIP | USE_INVEN | IGNORE_BOTHHAND_SLOT), 0);
+       o_ptr[0] = choose_object(customer_ptr, &item, q, s, (USE_EQUIP | USE_INVEN | IGNORE_BOTHHAND_SLOT), 0);
        if (!o_ptr[0])
        {
                screen_load();
@@ -2689,19 +2675,19 @@ static PRICE compare_weapons(PRICE bcost)
                        /* Copy i-th weapon into the weapon slot (if it's not already there) */
                        if (o_ptr[i] != i_ptr) object_copy(i_ptr, o_ptr[i]);
 
-                       p_ptr->update |= PU_BONUS;
+                       customer_ptr->update |= PU_BONUS;
                        handle_stuff();
 
                        /* List the new values */
                        list_weapon(o_ptr[i], row, col);
-                       compare_weapon_aux(o_ptr[i], col, row + 8);
+                       compare_weapon_aux(customer_ptr, o_ptr[i], col, row + 8);
 
                        /* Copy back the original weapon into the weapon slot */
                        object_copy(i_ptr, &orig_weapon);
                }
 
                /* Reset the values for the old weapon */
-               p_ptr->update |= PU_BONUS;
+               customer_ptr->update |= PU_BONUS;
                handle_stuff();
 
                current_world_ptr->character_xtra = old_character_xtra;
@@ -2721,7 +2707,7 @@ static PRICE compare_weapons(PRICE bcost)
 
                if (ch == 's')
                {
-                       if (total + cost > p_ptr->au)
+                       if (total + cost > customer_ptr->au)
                        {
                                msg_print(_("お金が足りません!", "You don't have enough money!"));
                                msg_print(NULL);
@@ -2732,7 +2718,7 @@ static PRICE compare_weapons(PRICE bcost)
                        s = _("比べるものがありません。", "You have nothing to compare.");
 
                        /* Get the second weapon */
-                       o_ptr[1] = choose_object(&item2, q, s, (USE_EQUIP | USE_INVEN | IGNORE_BOTHHAND_SLOT), 0);
+                       o_ptr[1] = choose_object(customer_ptr, &item2, q, s, (USE_EQUIP | USE_INVEN | IGNORE_BOTHHAND_SLOT), 0);
                        if (!o_ptr[1]) continue;
 
                        total += cost;
@@ -2922,7 +2908,7 @@ static PRICE repair_broken_weapon_aux(PRICE bcost)
        /* Only forge broken weapons */
        item_tester_hook = item_tester_hook_broken_weapon;
 
-       o_ptr = choose_object(&item, q, s, (USE_INVEN | USE_EQUIP), 0);
+       o_ptr = choose_object(p_ptr, &item, q, s, (USE_INVEN | USE_EQUIP), 0);
        if (!o_ptr) return (0);
 
        /* It is worthless */
@@ -2949,7 +2935,7 @@ static PRICE repair_broken_weapon_aux(PRICE bcost)
        /* Only forge broken weapons */
        item_tester_hook = item_tester_hook_orthodox_melee_weapons;
 
-       mo_ptr = choose_object(&mater, q, s, (USE_INVEN | USE_EQUIP), 0);
+       mo_ptr = choose_object(p_ptr, &mater, q, s, (USE_INVEN | USE_EQUIP), 0);
        if (!mo_ptr) return (0);
        if (mater == item)
        {
@@ -3131,7 +3117,7 @@ static PRICE repair_broken_weapon_aux(PRICE bcost)
        o_ptr->discount = 99;
 
        p_ptr->total_weight += o_ptr->weight;
-       calc_android_exp();
+       calc_android_exp(p_ptr);
 
        /* Decrease material object */
        inven_item_increase(mater, -1);
@@ -3162,20 +3148,21 @@ static int repair_broken_weapon(PRICE bcost)
 
 /*!
  * @brief アイテムの強化を行う。 / Enchant item
- * @param cost 1回毎の費用
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param cost 1回毎の費用
  * @param to_hit 命中をアップさせる量
  * @param to_dam ダメージをアップさせる量
  * @param to_ac ACをアップさせる量
  * @return 実際に行ったらTRUE
  */
-static bool enchant_item(PRICE cost, HIT_PROB to_hit, HIT_POINT to_dam, ARMOUR_CLASS to_ac)
+static bool enchant_item(player_type *player_ptr, PRICE cost, HIT_PROB to_hit, HIT_POINT to_dam, ARMOUR_CLASS to_ac)
 {
        int i;
        OBJECT_IDX item;
        bool okay = FALSE;
        object_type *o_ptr;
        concptr q, s;
-       int maxenchant = (p_ptr->lev / 5);
+       int maxenchant = (player_ptr->lev / 5);
        char tmp_str[MAX_NLEN];
 
        clear_bldg(4, 18);
@@ -3185,11 +3172,11 @@ static bool enchant_item(PRICE cost, HIT_PROB to_hit, HIT_POINT to_dam, ARMOUR_C
        q = _("どのアイテムを改良しますか?", "Improve which item? ");
        s = _("改良できるものがありません。", "You have nothing to improve.");
 
-       o_ptr = choose_object(&item, q, s, (USE_INVEN | USE_EQUIP | IGNORE_BOTHHAND_SLOT), item_tester_tval);
+       o_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_EQUIP | IGNORE_BOTHHAND_SLOT), item_tester_tval);
        if (!o_ptr) return (FALSE);
 
        /* Check if the player has enough money */
-       if (p_ptr->au < (cost * o_ptr->number))
+       if (player_ptr->au < (cost * o_ptr->number))
        {
                object_desc(tmp_str, o_ptr, OD_NAME_ONLY);
                msg_format(_("%sを改良するだけのゴールドがありません!", "You do not have the gold to improve %s!"), tmp_str);
@@ -3201,7 +3188,7 @@ static bool enchant_item(PRICE cost, HIT_PROB to_hit, HIT_POINT to_dam, ARMOUR_C
        {
                if (o_ptr->to_h < maxenchant)
                {
-                       if (enchant(o_ptr, 1, (ENCH_TOHIT | ENCH_FORCE)))
+                       if (enchant(player_ptr, o_ptr, 1, (ENCH_TOHIT | ENCH_FORCE)))
                        {
                                okay = TRUE;
                                break;
@@ -3214,7 +3201,7 @@ static bool enchant_item(PRICE cost, HIT_PROB to_hit, HIT_POINT to_dam, ARMOUR_C
        {
                if (o_ptr->to_d < maxenchant)
                {
-                       if (enchant(o_ptr, 1, (ENCH_TODAM | ENCH_FORCE)))
+                       if (enchant(player_ptr, o_ptr, 1, (ENCH_TODAM | ENCH_FORCE)))
                        {
                                okay = TRUE;
                                break;
@@ -3227,7 +3214,7 @@ static bool enchant_item(PRICE cost, HIT_PROB to_hit, HIT_POINT to_dam, ARMOUR_C
        {
                if (o_ptr->to_a < maxenchant)
                {
-                       if (enchant(o_ptr, 1, (ENCH_TOAC | ENCH_FORCE)))
+                       if (enchant(player_ptr, o_ptr, 1, (ENCH_TOAC | ENCH_FORCE)))
                        {
                                okay = TRUE;
                                break;
@@ -3252,9 +3239,9 @@ static bool enchant_item(PRICE cost, HIT_PROB to_hit, HIT_POINT to_dam, ARMOUR_C
 #endif
 
                /* Charge the money */
-               p_ptr->au -= (cost * o_ptr->number);
+               player_ptr->au -= (cost * o_ptr->number);
 
-               if (item >= INVEN_RARM) calc_android_exp();
+               if (item >= INVEN_RARM) calc_android_exp(player_ptr);
 
                /* Something happened */
                return (TRUE);
@@ -3298,7 +3285,7 @@ static void building_recharge(void)
        q = _("どのアイテムに魔力を充填しますか? ", "Recharge which item? ");
        s = _("魔力を充填すべきアイテムがない。", "You have nothing to recharge.");
 
-       o_ptr = choose_object(&item, q, s, (USE_INVEN | USE_FLOOR), 0);
+       o_ptr = choose_object(p_ptr, &item, q, s, (USE_INVEN | USE_FLOOR), 0);
        if (!o_ptr) return;
 
        k_ptr = &k_info[o_ptr->k_idx];
@@ -3318,7 +3305,7 @@ static void building_recharge(void)
 
                {
                        p_ptr->au -= 50;
-                       identify_item(o_ptr);
+                       identify_item(p_ptr, o_ptr);
                        object_desc(tmp_str, o_ptr, 0);
                        msg_format(_("%s です。", "You have: %s."), tmp_str);
 
@@ -3572,7 +3559,7 @@ static void building_recharge_all(void)
 
                if (!object_is_known(o_ptr))
                {
-                       identify_item(o_ptr);
+                       identify_item(p_ptr, o_ptr);
 
                        /* Auto-inscription */
                        autopick_alter_item(i, FALSE);
@@ -3818,7 +3805,6 @@ static bool research_mon(void)
                        /* Normal commands */
                        if (query != 'r') break;
 
-                       /* Toggle recall */
                        recall = !recall;
                }
 
@@ -3860,11 +3846,12 @@ static bool research_mon(void)
 
 /*!
  * @brief 施設の処理実行メインルーチン / Execute a building command
+ * @param player_ptr プレーヤーへの参照ポインタ
  * @param bldg 施設構造体の参照ポインタ
  * @param i 実行したい施設のサービステーブルの添字
  * @return なし
  */
-static void bldg_process_command(building_type *bldg, int i)
+static void bldg_process_command(player_type *player_ptr, building_type *bldg, int i)
 {
        BACT_IDX bact = bldg->actions[i];
        PRICE bcost;
@@ -3888,8 +3875,8 @@ static void bldg_process_command(building_type *bldg, int i)
 
        /* check gold (HACK - Recharge uses variable costs) */
        if ((bact != BACT_RECHARGE) &&
-           (((bldg->member_costs[i] > p_ptr->au) && is_owner(bldg)) ||
-            ((bldg->other_costs[i] > p_ptr->au) && !is_owner(bldg))))
+           (((bldg->member_costs[i] > player_ptr->au) && is_owner(bldg)) ||
+            ((bldg->other_costs[i] > player_ptr->au) && !is_owner(bldg))))
        {
                msg_print(_("お金が足りません!", "You do not have the gold!"));
                return;
@@ -3907,7 +3894,7 @@ static void bldg_process_command(building_type *bldg, int i)
                town_history();
                break;
        case BACT_RACE_LEGENDS:
-               race_legends();
+               race_legends(p_ptr);
                break;
        case BACT_QUEST:
                castle_quest();
@@ -3915,7 +3902,7 @@ static void bldg_process_command(building_type *bldg, int i)
        case BACT_KING_LEGENDS:
        case BACT_ARENA_LEGENDS:
        case BACT_LEGENDS:
-               show_highclass();
+               show_highclass(player_ptr);
                break;
        case BACT_POSTER:
        case BACT_ARENA_RULES:
@@ -3933,22 +3920,22 @@ static void bldg_process_command(building_type *bldg, int i)
        case BACT_REST:
        case BACT_RUMORS:
        case BACT_FOOD:
-               paid = inn_comm(bact);
+               paid = inn_comm(player_ptr, bact);
                break;
        case BACT_RESEARCH_MONSTER:
                paid = research_mon();
                break;
        case BACT_COMPARE_WEAPONS:
                paid = TRUE;
-               bcost = compare_weapons(bcost);
+               bcost = compare_weapons(player_ptr, bcost);
                break;
        case BACT_ENCHANT_WEAPON:
                item_tester_hook = object_allow_enchant_melee_weapon;
-               enchant_item(bcost, 1, 1, 0);
+               enchant_item(player_ptr, bcost, 1, 1, 0);
                break;
        case BACT_ENCHANT_ARMOR:
                item_tester_hook = object_is_armour;
-               enchant_item(bcost, 0, 0, 1);
+               enchant_item(player_ptr, bcost, 0, 0, 1);
                break;
        case BACT_RECHARGE:
                building_recharge();
@@ -3958,45 +3945,45 @@ static void bldg_process_command(building_type *bldg, int i)
                break;
        case BACT_IDENTS: /* needs work */
                if (!get_check(_("持ち物を全て鑑定してよろしいですか?", "Do you pay for identify all your possession? "))) break;
-               identify_pack();
+               identify_pack(player_ptr);
                msg_print(_(" 持ち物全てが鑑定されました。", "Your possessions have been identified."));
                paid = TRUE;
                break;
        case BACT_IDENT_ONE: /* needs work */
-               paid = ident_spell(FALSE);
+               paid = ident_spell(player_ptr, FALSE);
                break;
        case BACT_LEARN:
-               do_cmd_study();
+               do_cmd_study(player_ptr);
                break;
        case BACT_HEALING: /* needs work */
-               paid = cure_critical_wounds(200);
+               paid = cure_critical_wounds(player_ptr, 200);
                break;
        case BACT_RESTORE: /* needs work */
-               paid = restore_all_status();
+               paid = restore_all_status(player_ptr);
                break;
        case BACT_ENCHANT_ARROWS:
                item_tester_hook = item_tester_hook_ammo;
-               enchant_item(bcost, 1, 1, 0);
+               enchant_item(player_ptr, bcost, 1, 1, 0);
                break;
        case BACT_ENCHANT_BOW:
                item_tester_tval = TV_BOW;
-               enchant_item(bcost, 1, 1, 0);
+               enchant_item(player_ptr, bcost, 1, 1, 0);
                break;
 
        case BACT_RECALL:
-               if (recall_player(p_ptr, 1)) paid = TRUE;
+               if (recall_player(player_ptr, 1)) paid = TRUE;
                break;
 
        case BACT_TELEPORT_LEVEL:
                clear_bldg(4, 20);
-               paid = free_level_recall(p_ptr);
+               paid = free_level_recall(player_ptr);
                break;
 
        case BACT_LOSE_MUTATION:
-               if (p_ptr->muta1 || p_ptr->muta2 || (p_ptr->muta3 & ~MUT3_GOOD_LUCK) ||
-                       (p_ptr->pseikaku != SEIKAKU_LUCKY && (p_ptr->muta3 & MUT3_GOOD_LUCK)))
+               if (player_ptr->muta1 || player_ptr->muta2 || (player_ptr->muta3 & ~MUT3_GOOD_LUCK) ||
+                       (player_ptr->pseikaku != SEIKAKU_LUCKY && (player_ptr->muta3 & MUT3_GOOD_LUCK)))
                {
-                       while(!lose_mutation(0));
+                       while(!lose_mutation(player_ptr, 0));
                        paid = TRUE;
                }
                else
@@ -4014,8 +4001,8 @@ static void bldg_process_command(building_type *bldg, int i)
                tsuchinoko();
                break;
 
-       case BACT_KUBI:
-               shoukinkubi();
+       case BACT_BOUNTY:
+               show_bounty();
                break;
 
        case BACT_TARGET:
@@ -4028,34 +4015,34 @@ static void bldg_process_command(building_type *bldg, int i)
 
        case BACT_HEIKOUKA:
                msg_print(_("平衡化の儀式を行なった。", "You received an equalization ritual."));
-               set_virtue(V_COMPASSION, 0);
-               set_virtue(V_HONOUR, 0);
-               set_virtue(V_JUSTICE, 0);
-               set_virtue(V_SACRIFICE, 0);
-               set_virtue(V_KNOWLEDGE, 0);
-               set_virtue(V_FAITH, 0);
-               set_virtue(V_ENLIGHTEN, 0);
-               set_virtue(V_ENCHANT, 0);
-               set_virtue(V_CHANCE, 0);
-               set_virtue(V_NATURE, 0);
-               set_virtue(V_HARMONY, 0);
-               set_virtue(V_VITALITY, 0);
-               set_virtue(V_UNLIFE, 0);
-               set_virtue(V_PATIENCE, 0);
-               set_virtue(V_TEMPERANCE, 0);
-               set_virtue(V_DILIGENCE, 0);
-               set_virtue(V_VALOUR, 0);
-               set_virtue(V_INDIVIDUALISM, 0);
-               get_virtues();
+               set_virtue(player_ptr, V_COMPASSION, 0);
+               set_virtue(player_ptr, V_HONOUR, 0);
+               set_virtue(player_ptr, V_JUSTICE, 0);
+               set_virtue(player_ptr, V_SACRIFICE, 0);
+               set_virtue(player_ptr, V_KNOWLEDGE, 0);
+               set_virtue(player_ptr, V_FAITH, 0);
+               set_virtue(player_ptr, V_ENLIGHTEN, 0);
+               set_virtue(player_ptr, V_ENCHANT, 0);
+               set_virtue(player_ptr, V_CHANCE, 0);
+               set_virtue(player_ptr, V_NATURE, 0);
+               set_virtue(player_ptr, V_HARMONY, 0);
+               set_virtue(player_ptr, V_VITALITY, 0);
+               set_virtue(player_ptr, V_UNLIFE, 0);
+               set_virtue(player_ptr, V_PATIENCE, 0);
+               set_virtue(player_ptr, V_TEMPERANCE, 0);
+               set_virtue(player_ptr, V_DILIGENCE, 0);
+               set_virtue(player_ptr, V_VALOUR, 0);
+               set_virtue(player_ptr, V_INDIVIDUALISM, 0);
+               get_virtues(player_ptr);
                paid = TRUE;
                break;
 
        case BACT_TELE_TOWN:
-               paid = tele_town();
+               paid = tele_town(player_ptr);
                break;
 
        case BACT_EVAL_AC:
-               paid = eval_ac(p_ptr->dis_ac + p_ptr->dis_to_a);
+               paid = eval_ac(player_ptr->dis_ac + player_ptr->dis_to_a);
                break;
 
        case BACT_BROKEN_WEAPON:
@@ -4064,48 +4051,46 @@ static void bldg_process_command(building_type *bldg, int i)
                break;
        }
 
-       if (paid)
-       {
-               p_ptr->au -= bcost;
-       }
+       if (paid) player_ptr->au -= bcost;
 }
 
 /*!
  * @brief 施設入り口にプレイヤーが乗った際の処理 / Do building commands
+ * @param プレーヤーへの参照ポインタ
  * @return なし
  */
-void do_cmd_bldg(void)
+void do_cmd_bldg(player_type *player_ptr)
 {
        int             i, which;
        char            command;
        bool            validcmd;
        building_type   *bldg;
 
-       if(p_ptr->wild_mode) return;
+       if(player_ptr->wild_mode) return;
 
-       take_turn(p_ptr, 100);
+       take_turn(player_ptr, 100);
 
-       if (!cave_have_flag_bold(p_ptr->y, p_ptr->x, FF_BLDG))
+       if (!cave_have_flag_bold(player_ptr->current_floor_ptr, player_ptr->y, player_ptr->x, FF_BLDG))
        {
                msg_print(_("ここには建物はない。", "You see no building here."));
                return;
        }
 
-       which = f_info[current_floor_ptr->grid_array[p_ptr->y][p_ptr->x].feat].subtype;
+       which = f_info[player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x].feat].subtype;
 
        bldg = &building[which];
 
        /* Don't re-init the wilderness */
        reinit_wilderness = FALSE;
 
-       if ((which == 2) && (p_ptr->arena_number < 0))
+       if ((which == 2) && (player_ptr->arena_number < 0))
        {
                msg_print(_("「敗者に用はない。」", "'There's no place here for a LOSER like you!'"));
                return;
        }
-       else if ((which == 2) && p_ptr->inside_arena)
+       else if ((which == 2) && player_ptr->current_floor_ptr->inside_arena)
        {
-               if (!p_ptr->exit_bldg && current_floor_ptr->m_cnt > 0)
+               if (!player_ptr->exit_bldg && player_ptr->current_floor_ptr->m_cnt > 0)
                {
                        prt(_("ゲートは閉まっている。モンスターがあなたを待っている!", "The gates are closed.  The monster awaits!"), 0, 0);
                }
@@ -4114,42 +4099,42 @@ void do_cmd_bldg(void)
                        /* Don't save the arena as saved floor */
                        prepare_change_floor_mode(CFM_SAVE_FLOORS | CFM_NO_RETURN);
 
-                       p_ptr->inside_arena = FALSE;
-                       p_ptr->leaving = TRUE;
+                       player_ptr->current_floor_ptr->inside_arena = FALSE;
+                       player_ptr->leaving = TRUE;
 
                        /* Re-enter the arena */
                        command_new = SPECIAL_KEY_BUILDING;
 
                        /* No energy needed to re-enter the arena */
-                       free_turn(p_ptr);
+                       free_turn(player_ptr);
                }
 
                return;
        }
-       else if (p_ptr->phase_out)
+       else if (player_ptr->phase_out)
        {
                /* Don't save the arena as saved floor */
                prepare_change_floor_mode(CFM_SAVE_FLOORS | CFM_NO_RETURN);
 
-               p_ptr->leaving = TRUE;
-               p_ptr->phase_out = FALSE;
+               player_ptr->leaving = TRUE;
+               player_ptr->phase_out = FALSE;
 
                /* Re-enter the monster arena */
                command_new = SPECIAL_KEY_BUILDING;
 
                /* No energy needed to re-enter the arena */
-               free_turn(p_ptr);
+               free_turn(player_ptr);
 
                return;
        }
        else
        {
-               p_ptr->oldpy = p_ptr->y;
-               p_ptr->oldpx = p_ptr->x;
+               player_ptr->oldpy = player_ptr->y;
+               player_ptr->oldpx = player_ptr->x;
        }
 
-       forget_lite();
-       forget_view();
+       forget_lite(player_ptr->current_floor_ptr);
+       forget_view(player_ptr->current_floor_ptr);
 
        /* Hack -- Increase "icky" depth */
        current_world_ptr->character_icky++;
@@ -4159,11 +4144,11 @@ void do_cmd_bldg(void)
        command_new = 0;
 
        show_building(bldg);
-       p_ptr->leave_bldg = FALSE;
+       player_ptr->leave_bldg = FALSE;
 
        play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_BUILD);
 
-       while (!p_ptr->leave_bldg)
+       while (!player_ptr->leave_bldg)
        {
                validcmd = FALSE;
                prt("", 1, 0);
@@ -4174,9 +4159,9 @@ void do_cmd_bldg(void)
 
                if (command == ESCAPE)
                {
-                       p_ptr->leave_bldg = TRUE;
-                       p_ptr->inside_arena = FALSE;
-                       p_ptr->phase_out = FALSE;
+                       player_ptr->leave_bldg = TRUE;
+                       player_ptr->current_floor_ptr->inside_arena = FALSE;
+                       player_ptr->phase_out = FALSE;
                        break;
                }
 
@@ -4192,30 +4177,27 @@ void do_cmd_bldg(void)
                        }
                }
 
-               if(validcmd) bldg_process_command(bldg, i);
+               if(validcmd) bldg_process_command(player_ptr, bldg, i);
 
                handle_stuff();
        }
 
-       select_floor_music();
+       select_floor_music(player_ptr);
 
        msg_flag = FALSE;
        msg_erase();
 
        /* Reinit wilderness to activate quests ... */
-       if (reinit_wilderness)
-       {
-               p_ptr->leaving = TRUE;
-       }
+       if (reinit_wilderness) player_ptr->leaving = TRUE;
 
        /* Hack -- Decrease "icky" depth */
        current_world_ptr->character_icky--;
 
        Term_clear();
 
-       p_ptr->update |= (PU_VIEW | PU_MONSTERS | PU_BONUS | PU_LITE | PU_MON_LITE);
-       p_ptr->redraw |= (PR_BASIC | PR_EXTRA | PR_EQUIPPY | PR_MAP);
-       p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
+       player_ptr->update |= (PU_VIEW | PU_MONSTERS | PU_BONUS | PU_LITE | PU_MON_LITE);
+       player_ptr->redraw |= (PR_BASIC | PR_EXTRA | PR_EQUIPPY | PR_MAP);
+       player_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
 }
 
 
@@ -4232,7 +4214,7 @@ void determine_today_mon(bool conv_old)
 
        if (!conv_old)
        {
-               for (i = 0; i < max_d_idx; i++)
+               for (i = 0; i < current_world_ptr->max_d_idx; i++)
                {
                        if (max_dlv[i] < d_info[i].mindepth) continue;
                        if (max_dl < max_dlv[i]) max_dl = max_dlv[i];
@@ -4274,7 +4256,7 @@ void determine_bounty_uniques(void)
        monster_race *r_ptr;
 
        get_mon_num_prep(NULL, NULL);
-       for (i = 0; i < MAX_KUBI; i++)
+       for (i = 0; i < MAX_BOUNTY; i++)
        {
                while (1)
                {
@@ -4297,9 +4279,9 @@ void determine_bounty_uniques(void)
        }
 
        /* Sort them */
-       for (i = 0; i < MAX_KUBI - 1; i++)
+       for (i = 0; i < MAX_BOUNTY - 1; i++)
        {
-               for (j = i; j < MAX_KUBI; j++)
+               for (j = i; j < MAX_BOUNTY; j++)
                {
                        if (r_info[current_world_ptr->bounty_r_idx[i]].level > r_info[current_world_ptr->bounty_r_idx[j]].level)
                        {