OSDN Git Service

[Refactor] #38997 enchant() と enchant_spell() にplayer_type * を追加 / Added player_type...
authorHourier <hourier@users.sourceforge.jp>
Sat, 4 Jan 2020 15:45:36 +0000 (00:45 +0900)
committerHourier <hourier@users.sourceforge.jp>
Sat, 4 Jan 2020 15:45:36 +0000 (00:45 +0900)
src/bldg.c
src/bldg.h
src/cmd/cmd-activate.c
src/cmd/cmd-read.c
src/core.c
src/realm-craft.c
src/spells-object.c
src/spells-object.h

index e303b4f..d5522c0 100644 (file)
@@ -3148,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);
@@ -3171,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(p_ptr, &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);
@@ -3187,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;
@@ -3200,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;
@@ -3213,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;
@@ -3238,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(p_ptr);
+               if (item >= INVEN_RARM) calc_android_exp(player_ptr);
 
                /* Something happened */
                return (TRUE);
@@ -3845,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;
@@ -3873,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;
@@ -3900,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(p_ptr);
+               show_highclass(player_ptr);
                break;
        case BACT_POSTER:
        case BACT_ARENA_RULES:
@@ -3929,11 +3931,11 @@ static void bldg_process_command(building_type *bldg, int i)
                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();
@@ -3943,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(p_ptr);
+               identify_pack(player_ptr);
                msg_print(_(" 持ち物全てが鑑定されました。", "Your possessions have been identified."));
                paid = TRUE;
                break;
        case BACT_IDENT_ONE: /* needs work */
-               paid = ident_spell(p_ptr, FALSE);
+               paid = ident_spell(player_ptr, FALSE);
                break;
        case BACT_LEARN:
-               do_cmd_study(p_ptr);
+               do_cmd_study(player_ptr);
                break;
        case BACT_HEALING: /* needs work */
-               paid = cure_critical_wounds(p_ptr, 200);
+               paid = cure_critical_wounds(player_ptr, 200);
                break;
        case BACT_RESTORE: /* needs work */
-               paid = restore_all_status(p_ptr);
+               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(p_ptr, 0));
+                       while(!lose_mutation(player_ptr, 0));
                        paid = TRUE;
                }
                else
@@ -4013,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(p_ptr, V_COMPASSION, 0);
-               set_virtue(p_ptr, V_HONOUR, 0);
-               set_virtue(p_ptr, V_JUSTICE, 0);
-               set_virtue(p_ptr, V_SACRIFICE, 0);
-               set_virtue(p_ptr, V_KNOWLEDGE, 0);
-               set_virtue(p_ptr, V_FAITH, 0);
-               set_virtue(p_ptr, V_ENLIGHTEN, 0);
-               set_virtue(p_ptr, V_ENCHANT, 0);
-               set_virtue(p_ptr, V_CHANCE, 0);
-               set_virtue(p_ptr, V_NATURE, 0);
-               set_virtue(p_ptr, V_HARMONY, 0);
-               set_virtue(p_ptr, V_VITALITY, 0);
-               set_virtue(p_ptr, V_UNLIFE, 0);
-               set_virtue(p_ptr, V_PATIENCE, 0);
-               set_virtue(p_ptr, V_TEMPERANCE, 0);
-               set_virtue(p_ptr, V_DILIGENCE, 0);
-               set_virtue(p_ptr, V_VALOUR, 0);
-               set_virtue(p_ptr, V_INDIVIDUALISM, 0);
-               get_virtues(p_ptr);
+               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(p_ptr);
+               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:
@@ -4049,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->current_floor_ptr, 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[p_ptr->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->current_floor_ptr->inside_arena)
+       else if ((which == 2) && player_ptr->current_floor_ptr->inside_arena)
        {
-               if (!p_ptr->exit_bldg && p_ptr->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);
                }
@@ -4099,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->current_floor_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(p_ptr->current_floor_ptr);
-       forget_view(p_ptr->current_floor_ptr);
+       forget_lite(player_ptr->current_floor_ptr);
+       forget_view(player_ptr->current_floor_ptr);
 
        /* Hack -- Increase "icky" depth */
        current_world_ptr->character_icky++;
@@ -4144,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);
@@ -4159,9 +4159,9 @@ void do_cmd_bldg(void)
 
                if (command == ESCAPE)
                {
-                       p_ptr->leave_bldg = TRUE;
-                       p_ptr->current_floor_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;
                }
 
@@ -4177,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(p_ptr);
+       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);
 }
 
 
index e5c3933..d1aa679 100644 (file)
@@ -118,7 +118,7 @@ extern int sel_monster;
 
 extern const arena_type arena_info[MAX_ARENA_MONS + 2];
 extern void update_gambling_monsters(void);
-extern void do_cmd_bldg(void);
+extern void do_cmd_bldg(player_type *player_ptr);
 
 extern void clear_bldg(int min_row, int max_row);
 extern void determine_today_mon(bool conv_old);
index a577a21..908fdea 100644 (file)
@@ -619,6 +619,7 @@ void exe_activate(player_type *user_ptr, INVENTORY_IDX item)
 
 /*!
  * @brief 装備を発動するコマンドのメインルーチン /
+ * @param user_ptr プレーヤーへの参照ポインタ
  * @return なし
  */
 void do_cmd_activate(player_type *user_ptr)
@@ -648,6 +649,7 @@ void do_cmd_activate(player_type *user_ptr)
 /*!
 * @brief 発動によるブレスの属性をアイテムの耐性から選択し、実行を処理する。/ Dragon breath activation
 * @details 対象となる耐性は dragonbreath_info テーブルを参照のこと。
+* @param user_ptr プレーヤーへの参照ポインタ
 * @param o_ptr 対象のオブジェクト構造体ポインタ
 * @return 発動実行の是非を返す。
 */
index f3f60b5..c4517f4 100644 (file)
@@ -228,34 +228,34 @@ void exe_read(player_type *creature_ptr, INVENTORY_IDX item, bool known)
                case SV_SCROLL_ENCHANT_ARMOR:
                {
                        ident = TRUE;
-                       if (!enchant_spell(0, 0, 1)) used_up = FALSE;
+                       if (!enchant_spell(creature_ptr, 0, 0, 1)) used_up = FALSE;
                        break;
                }
 
                case SV_SCROLL_ENCHANT_WEAPON_TO_HIT:
                {
-                       if (!enchant_spell(1, 0, 0)) used_up = FALSE;
+                       if (!enchant_spell(creature_ptr, 1, 0, 0)) used_up = FALSE;
                        ident = TRUE;
                        break;
                }
 
                case SV_SCROLL_ENCHANT_WEAPON_TO_DAM:
                {
-                       if (!enchant_spell(0, 1, 0)) used_up = FALSE;
+                       if (!enchant_spell(creature_ptr, 0, 1, 0)) used_up = FALSE;
                        ident = TRUE;
                        break;
                }
 
                case SV_SCROLL_STAR_ENCHANT_ARMOR:
                {
-                       if (!enchant_spell(0, 0, randint1(3) + 2)) used_up = FALSE;
+                       if (!enchant_spell(creature_ptr, 0, 0, randint1(3) + 2)) used_up = FALSE;
                        ident = TRUE;
                        break;
                }
 
                case SV_SCROLL_STAR_ENCHANT_WEAPON:
                {
-                       if (!enchant_spell(randint1(3), randint1(3), 0)) used_up = FALSE;
+                       if (!enchant_spell(creature_ptr, randint1(3), randint1(3), 0)) used_up = FALSE;
                        ident = TRUE;
                        break;
                }
index a1b8666..32891db 100644 (file)
@@ -3728,7 +3728,7 @@ static void process_command(player_type *creature_ptr)
                /* Enter building -KMW- */
                case SPECIAL_KEY_BUILDING:
                {
-                       do_cmd_bldg();
+                       do_cmd_bldg(creature_ptr);
                        break;
                }
 
index 4d7c009..7bc94d5 100644 (file)
@@ -451,7 +451,7 @@ concptr do_craft_spell(player_type *caster_ptr, SPELL_IDX spell, BIT_FLAGS mode)
                {
                        if (cast)
                        {
-                               if (!enchant_spell(randint0(4) + 1, randint0(4) + 1, 0)) return NULL;
+                               if (!enchant_spell(caster_ptr, randint0(4) + 1, randint0(4) + 1, 0)) return NULL;
                        }
                }
                break;
@@ -463,7 +463,7 @@ concptr do_craft_spell(player_type *caster_ptr, SPELL_IDX spell, BIT_FLAGS mode)
                {
                        if (cast)
                        {
-                               if (!enchant_spell(0, 0, randint0(3) + 2)) return NULL;
+                               if (!enchant_spell(caster_ptr, 0, 0, randint0(3) + 2)) return NULL;
                        }
                }
                break;
index 4eaac6b..2e1a056 100644 (file)
@@ -777,7 +777,7 @@ void brand_bolts(player_type *caster_ptr)
 
                /* Ego-item */
                o_ptr->name2 = EGO_FLAME;
-               enchant(o_ptr, randint0(3) + 4, ENCH_TOHIT | ENCH_TODAM);
+               enchant(caster_ptr, o_ptr, randint0(3) + 4, ENCH_TOHIT | ENCH_TODAM);
                return;
        }
 
@@ -1092,7 +1092,7 @@ bool pulish_shield(player_type *caster_ptr)
                msg_format("%s %s shine%s!", ((item >= 0) ? "Your" : "The"), o_name, ((o_ptr->number > 1) ? "" : "s"));
 #endif
                o_ptr->name2 = EGO_REFLECTION;
-               enchant(o_ptr, randint0(3) + 4, ENCH_TOAC);
+               enchant(caster_ptr, o_ptr, randint0(3) + 4, ENCH_TOAC);
 
                o_ptr->discount = 99;
                chg_virtue(caster_ptr, V_ENCHANT, 2);
@@ -1134,6 +1134,7 @@ static void break_curse(object_type *o_ptr)
 /*!
  * @brief 装備修正強化処理 /
  * Enchants a plus onto an item. -RAK-
+ * @param caster_ptr プレーヤーへの参照ポインタ
  * @param o_ptr 強化するアイテムの参照ポインタ
  * @param n 強化基本量
  * @param eflag 強化オプション(命中/ダメージ/AC)
@@ -1153,7 +1154,7 @@ static void break_curse(object_type *o_ptr)
  * the larger the pile, the lower the chance of success.
  * </pre>
  */
-bool enchant(object_type *o_ptr, int n, int eflag)
+bool enchant(player_type *caster_ptr, object_type *o_ptr, int n, int eflag)
 {
        int     i, chance, prob;
        bool    res = FALSE;
@@ -1234,8 +1235,8 @@ bool enchant(object_type *o_ptr, int n, int eflag)
 
        /* Failure */
        if (!res) return (FALSE);
-       p_ptr->update |= (PU_BONUS | PU_COMBINE | PU_REORDER);
-       p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER);
+       caster_ptr->update |= (PU_BONUS | PU_COMBINE | PU_REORDER);
+       caster_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER);
 
        calc_android_exp(p_ptr);
 
@@ -1247,6 +1248,7 @@ bool enchant(object_type *o_ptr, int n, int eflag)
 /*!
  * @brief 装備修正強化処理のメインルーチン /
  * Enchant an item (in the inventory or on the floor)
+ * @param caster_ptr プレーヤーへの参照ポインタ
  * @param num_hit 命中修正量
  * @param num_dam ダメージ修正量
  * @param num_ac AC修正量
@@ -1255,7 +1257,7 @@ bool enchant(object_type *o_ptr, int n, int eflag)
  * Note that "num_ac" requires armour, else weapon
  * Returns TRUE if attempted, FALSE if cancelled
  */
-bool enchant_spell(HIT_PROB num_hit, HIT_POINT num_dam, ARMOUR_CLASS num_ac)
+bool enchant_spell(player_type *caster_ptr, HIT_PROB num_hit, HIT_POINT num_dam, ARMOUR_CLASS num_ac)
 {
        OBJECT_IDX item;
        bool        okay = FALSE;
@@ -1283,9 +1285,9 @@ bool enchant_spell(HIT_PROB num_hit, HIT_POINT num_dam, ARMOUR_CLASS num_ac)
 #endif
 
        /* Enchant */
-       if (enchant(o_ptr, num_hit, ENCH_TOHIT)) okay = TRUE;
-       if (enchant(o_ptr, num_dam, ENCH_TODAM)) okay = TRUE;
-       if (enchant(o_ptr, num_ac, ENCH_TOAC)) okay = TRUE;
+       if (enchant(caster_ptr, o_ptr, num_hit, ENCH_TOHIT)) okay = TRUE;
+       if (enchant(caster_ptr, o_ptr, num_dam, ENCH_TODAM)) okay = TRUE;
+       if (enchant(caster_ptr, o_ptr, num_ac, ENCH_TOAC)) okay = TRUE;
 
        /* Failure */
        if (!okay)
@@ -1307,6 +1309,7 @@ bool enchant_spell(HIT_PROB num_hit, HIT_POINT num_dam, ARMOUR_CLASS num_ac)
 /*!
  * @brief 武器へのエゴ付加処理 /
  * Brand the current weapon
+ * @param caster_ptr プレーヤーへの参照ポインタ
  * @param brand_type エゴ化ID(e_info.txtとは連動していない)
  * @return なし
  */
@@ -1432,7 +1435,7 @@ void brand_weapon(player_type *caster_ptr, int brand_type)
                }
 
                msg_format(_("あなたの%s%s", "Your %s %s"), o_name, act);
-               enchant(o_ptr, randint0(3) + 4, ENCH_TOHIT | ENCH_TODAM);
+               enchant(caster_ptr, o_ptr, randint0(3) + 4, ENCH_TOHIT | ENCH_TODAM);
 
                o_ptr->discount = 99;
                chg_virtue(caster_ptr, V_ENCHANT, 2);
index 1e7e22b..aca79a9 100644 (file)
@@ -23,6 +23,6 @@ extern bool pulish_shield(player_type *caster_ptr);
 #define ENCH_TODAM      0x02 /*!< 装備強化処理: ダメージ強化 / Enchant to damage */
 #define ENCH_TOAC       0x04 /*!< 装備強化処理: AC強化 / Enchant to AC */
 #define ENCH_FORCE      0x08 /*!< 装備強化処理: 無条件に成功させる / Force enchantment */
-extern bool enchant(object_type *o_ptr, int n, int eflag);
-extern bool enchant_spell(HIT_PROB num_hit, HIT_POINT num_dam, ARMOUR_CLASS num_ac);
+extern bool enchant(player_type *caster_ptr, object_type *o_ptr, int n, int eflag);
+extern bool enchant_spell(player_type *caster_ptr, HIT_PROB num_hit, HIT_POINT num_dam, ARMOUR_CLASS num_ac);
 extern void brand_weapon(player_type *caster_ptr, int brand_type);