OSDN Git Service

[Refactor] #38997 inven_item_increase()、inven_takeoff() にplayer_type *引数を追加&少し整形...
authorHourier <hourier@users.sourceforge.jp>
Fri, 10 Jan 2020 14:42:11 +0000 (23:42 +0900)
committerHourier <hourier@users.sourceforge.jp>
Fri, 10 Jan 2020 14:42:23 +0000 (23:42 +0900)
14 files changed:
src/autopick.c
src/autopick.h
src/birth.c
src/bldg.c
src/cmd/cmd-basic.c
src/cmd/cmd-item.c
src/combat/melee1.c
src/object.h
src/object2.c
src/player-damage.c
src/player-status.c
src/spells-status.c
src/spells3.c
src/store.c

index f31aa92..e9c2d13 100644 (file)
@@ -1628,49 +1628,45 @@ static void auto_destroy_item(object_type *o_ptr, int autopick_idx)
        /* Destroy Later */
        o_ptr->marked |= OM_AUTODESTROY;
        p_ptr->update |= PU_AUTODESTROY;
-
-       return;
 }
 
 
 /*
  *  Auto-destroy marked item
  */
-static void autopick_delayed_alter_aux(floor_type *floor_ptr, INVENTORY_IDX item)
+static void autopick_delayed_alter_aux(player_type *player_ptr, INVENTORY_IDX item)
 {
        object_type *o_ptr;
-
        o_ptr = REF_ITEM(p_ptr, p_ptr->current_floor_ptr, item);
 
-       if (o_ptr->k_idx && (o_ptr->marked & OM_AUTODESTROY))
-       {
-               GAME_TEXT o_name[MAX_NLEN];
+       if (o_ptr->k_idx == 0 || !(o_ptr->marked & OM_AUTODESTROY)) return;
 
-               /* Describe the object (with {terrible/special}) */
-               object_desc(o_name, o_ptr, 0);
+       GAME_TEXT o_name[MAX_NLEN];
 
-               /* Eliminate the item (from the pack) */
-               if (item >= 0)
-               {
-                       inven_item_increase(item, -(o_ptr->number));
-                       inven_item_optimize(item);
-               }
+       /* Describe the object (with {terrible/special}) */
+       object_desc(o_name, o_ptr, 0);
 
-               /* Eliminate the item (from the floor) */
-               else
-               {
-                       delete_object_idx(floor_ptr, 0 - item);
-               }
+       /* Eliminate the item (from the pack) */
+       if (item >= 0)
+       {
+               inven_item_increase(player_ptr, item, -(o_ptr->number));
+               inven_item_optimize(item);
+       }
 
-               msg_format(_("%sを自動破壊します。", "Auto-destroying %s."), o_name);
+       /* Eliminate the item (from the floor) */
+       else
+       {
+               delete_object_idx(player_ptr->current_floor_ptr, 0 - item);
        }
+
+       msg_format(_("%sを自動破壊します。", "Auto-destroying %s."), o_name);
 }
 
 
 /*
  *  Auto-destroy marked items in inventry and on floor
  */
-void autopick_delayed_alter(floor_type *floor_ptr)
+void autopick_delayed_alter(player_type *owner_ptr)
 {
        INVENTORY_IDX item;
 
@@ -1679,14 +1675,14 @@ void autopick_delayed_alter(floor_type *floor_ptr)
         * skipping after inven_item_optimize()
         */
        for (item = INVEN_TOTAL - 1; item >= 0 ; item--)
-               autopick_delayed_alter_aux(floor_ptr, item);
+               autopick_delayed_alter_aux(owner_ptr, item);
 
        /* Scan the pile of objects */
        item = p_ptr->current_floor_ptr->grid_array[p_ptr->y][p_ptr->x].o_idx;
        while (item)
        {
                OBJECT_IDX next = p_ptr->current_floor_ptr->o_list[item].next_o_idx;
-               autopick_delayed_alter_aux(floor_ptr, -item);
+               autopick_delayed_alter_aux(owner_ptr, -item);
                item = next;
        }
 }
index 0bab06d..6afcf84 100644 (file)
@@ -33,7 +33,7 @@ extern errr process_autopick_file_command(char *buf);
 extern concptr autopick_line_from_entry(autopick_type *entry);
 extern int is_autopick(object_type *o_ptr);
 extern void autopick_alter_item(INVENTORY_IDX item, bool destroy);
-extern void autopick_delayed_alter(floor_type *floor_ptr);
+extern void autopick_delayed_alter(player_type *player_ptr);
 extern void autopick_pickup_items(grid_type *g_ptr);
 extern bool autopick_autoregister(object_type *o_ptr);
 extern void do_cmd_edit_autopick(player_type *player_ptr);
index 4b54a04..d2dd46b 100644 (file)
@@ -1986,7 +1986,7 @@ static void wield_all(player_type *creature_ptr)
                /* Decrease the item (from the pack) */ 
                if (item >= 0) 
                { 
-                       inven_item_increase(item, -1); 
+                       inven_item_increase(creature_ptr, item, -1); 
                        inven_item_optimize(item); 
                } 
  
index 7f81b33..c246d7f 100644 (file)
@@ -2873,26 +2873,23 @@ static void give_one_ability_of_object(object_type *to_ptr, object_type *from_pt
                }
        }
 
-       if (n > 0)
-       {
-               int bmax;
-               int tr_idx = cand[randint0(n)];
-               add_flag(to_ptr->art_flags, tr_idx);
-               if (is_pval_flag(tr_idx)) to_ptr->pval = MAX(to_ptr->pval, 1);
-               bmax = MIN(3, MAX(1, 40 / (to_ptr->dd * to_ptr->ds)));
-               if (tr_idx == TR_BLOWS) to_ptr->pval = MIN(to_ptr->pval, bmax);
-               if (tr_idx == TR_SPEED) to_ptr->pval = MIN(to_ptr->pval, 4);
-       }
-
-       return;
+       if (n <= 0) return;
+
+       int tr_idx = cand[randint0(n)];
+       add_flag(to_ptr->art_flags, tr_idx);
+       if (is_pval_flag(tr_idx)) to_ptr->pval = MAX(to_ptr->pval, 1);
+       int bmax = MIN(3, MAX(1, 40 / (to_ptr->dd * to_ptr->ds)));
+       if (tr_idx == TR_BLOWS) to_ptr->pval = MIN(to_ptr->pval, bmax);
+       if (tr_idx == TR_SPEED) to_ptr->pval = MIN(to_ptr->pval, 4);
 }
 
 /*!
  * @brief アイテム修復処理のメインルーチン / Repair broken weapon
+ * @param player_ptr プレーヤーへの参照ポインタ
  * @param bcost 基本修復費用
  * @return 実際にかかった費用
  */
-static PRICE repair_broken_weapon_aux(PRICE bcost)
+static PRICE repair_broken_weapon_aux(player_type *player_ptr, PRICE bcost)
 {
        PRICE cost;
        OBJECT_IDX item, mater;
@@ -3126,7 +3123,7 @@ static PRICE repair_broken_weapon_aux(PRICE bcost)
        calc_android_exp(p_ptr);
 
        /* Decrease material object */
-       inven_item_increase(mater, -1);
+       inven_item_increase(player_ptr, mater, -1);
        inven_item_optimize(mater);
 
        /* Copyback */
@@ -3139,14 +3136,15 @@ static PRICE repair_broken_weapon_aux(PRICE bcost)
 
 /*!
  * @brief アイテム修復処理の過渡ルーチン / Repair broken weapon
+ * @param player_ptr プレーヤーへの参照ポインタ
  * @param bcost 基本鑑定費用
  * @return 実際にかかった費用
  */
-static int repair_broken_weapon(PRICE bcost)
+static int repair_broken_weapon(player_type *player_ptr, PRICE bcost)
 {
        PRICE cost;
        screen_save();
-       cost = repair_broken_weapon_aux(bcost);
+       cost = repair_broken_weapon_aux(player_ptr, bcost);
        screen_load();
        return cost;
 }
@@ -4053,13 +4051,14 @@ static void bldg_process_command(player_type *player_ptr, building_type *bldg, i
 
        case BACT_BROKEN_WEAPON:
                paid = TRUE;
-               bcost = repair_broken_weapon(bcost);
+               bcost = repair_broken_weapon(player_ptr, bcost);
                break;
        }
 
        if (paid) player_ptr->au -= bcost;
 }
 
+
 /*!
  * @brief 施設入り口にプレイヤーが乗った際の処理 / Do building commands
  * @param プレーヤーへの参照ポインタ
index 5b4e175..2d8b9b0 100644 (file)
@@ -2463,7 +2463,7 @@ bool do_cmd_throw(player_type *creature_ptr, int mult, bool boomerang, OBJECT_ID
 
        if (item >= 0)
        {
-               inven_item_increase(item, -1);
+               inven_item_increase(creature_ptr, item, -1);
                if (!return_when_thrown)
                        inven_item_describe(creature_ptr, item);
                inven_item_optimize(item);
index ecde44e..76b3033 100644 (file)
@@ -339,7 +339,7 @@ void do_cmd_wield(player_type *creature_ptr)
        /* Decrease the item (from the pack) */
        if (item >= 0)
        {
-               inven_item_increase(item, -1);
+               inven_item_increase(creature_ptr, item, -1);
                inven_item_optimize(item);
        }
        /* Decrease the item (from the floor) */
@@ -356,7 +356,7 @@ void do_cmd_wield(player_type *creature_ptr)
        if (o_ptr->k_idx)
        {
                /* Take off existing item */
-               (void)inven_takeoff(slot, 255);
+               (void)inven_takeoff(creature_ptr, slot, 255);
        }
 
        /* Wear the new stuff */
@@ -442,51 +442,51 @@ void verify_equip_slot(player_type *owner_ptr, INVENTORY_IDX item)
 
        if (item == INVEN_RARM)
        {
-               if (has_melee_weapon(owner_ptr, INVEN_LARM))
-               {
-                       o_ptr = &owner_ptr->inventory_list[INVEN_LARM];
-                       object_desc(o_name, o_ptr, 0);
+               if (!has_melee_weapon(owner_ptr, INVEN_LARM)) return;
 
-                       if (!object_is_cursed(o_ptr))
-                       {
-                               new_o_ptr = &owner_ptr->inventory_list[INVEN_RARM];
-                               object_copy(new_o_ptr, o_ptr);
-                               owner_ptr->total_weight += o_ptr->weight;
-                               inven_item_increase(INVEN_LARM, -((int)o_ptr->number));
-                               inven_item_optimize(INVEN_LARM);
-                               if (object_allow_two_hands_wielding(o_ptr) && CAN_TWO_HANDS_WIELDING())
-                                       msg_format(_("%sを両手で構えた。", "You are wielding %s with both hands."), o_name);
-                               else
-                                       msg_format(_("%sを%sで構えた。", "You are wielding %s in your %s hand."), o_name, 
-                                               (left_hander ? _("左手", "left") : _("右手", "right")));
-                       }
-                       else
-                       {
-                               if (object_allow_two_hands_wielding(o_ptr) && CAN_TWO_HANDS_WIELDING())
-                                       msg_format(_("%sを両手で構えた。", "You are wielding %s with both hands."), o_name);
-                       }
-               }
-       }
-       else if (item == INVEN_LARM)
-       {
-               o_ptr = &owner_ptr->inventory_list[INVEN_RARM];
-               if (o_ptr->k_idx) object_desc(o_name, o_ptr, 0);
+               o_ptr = &owner_ptr->inventory_list[INVEN_LARM];
+               object_desc(o_name, o_ptr, 0);
 
-               if (has_melee_weapon(owner_ptr, INVEN_RARM))
+               if (object_is_cursed(o_ptr))
                {
                        if (object_allow_two_hands_wielding(o_ptr) && CAN_TWO_HANDS_WIELDING())
                                msg_format(_("%sを両手で構えた。", "You are wielding %s with both hands."), o_name);
+                       return;
                }
-               else if (!(empty_hands(owner_ptr, FALSE) & EMPTY_HAND_RARM) && !object_is_cursed(o_ptr))
-               {
-                       new_o_ptr = &owner_ptr->inventory_list[INVEN_LARM];
-                       object_copy(new_o_ptr, o_ptr);
-                       owner_ptr->total_weight += o_ptr->weight;
-                       inven_item_increase(INVEN_RARM, -((int)o_ptr->number));
-                       inven_item_optimize(INVEN_RARM);
-                       msg_format(_("%sを持ち替えた。", "You switched hand of %s."), o_name);
-               }
+
+               new_o_ptr = &owner_ptr->inventory_list[INVEN_RARM];
+               object_copy(new_o_ptr, o_ptr);
+               owner_ptr->total_weight += o_ptr->weight;
+               inven_item_increase(owner_ptr, INVEN_LARM, -((int)o_ptr->number));
+               inven_item_optimize(INVEN_LARM);
+               if (object_allow_two_hands_wielding(o_ptr) && CAN_TWO_HANDS_WIELDING())
+                       msg_format(_("%sを両手で構えた。", "You are wielding %s with both hands."), o_name);
+               else
+                       msg_format(_("%sを%sで構えた。", "You are wielding %s in your %s hand."), o_name,
+                       (left_hander ? _("左手", "left") : _("右手", "right")));
+               return;
        }
+       
+       if (item != INVEN_LARM) return;
+
+       o_ptr = &owner_ptr->inventory_list[INVEN_RARM];
+       if (o_ptr->k_idx) object_desc(o_name, o_ptr, 0);
+
+       if (has_melee_weapon(owner_ptr, INVEN_RARM))
+       {
+               if (object_allow_two_hands_wielding(o_ptr) && CAN_TWO_HANDS_WIELDING())
+                       msg_format(_("%sを両手で構えた。", "You are wielding %s with both hands."), o_name);
+               return;
+       }
+       
+       if ((empty_hands(owner_ptr, FALSE) & EMPTY_HAND_RARM) || object_is_cursed(o_ptr)) return;
+
+       new_o_ptr = &owner_ptr->inventory_list[INVEN_LARM];
+       object_copy(new_o_ptr, o_ptr);
+       owner_ptr->total_weight += o_ptr->weight;
+       inven_item_increase(owner_ptr, INVEN_RARM, -((int)o_ptr->number));
+       inven_item_optimize(INVEN_RARM);
+       msg_format(_("%sを持ち替えた。", "You switched hand of %s."), o_name);
 }
 
 
@@ -545,7 +545,7 @@ void do_cmd_takeoff(player_type *creature_ptr)
        take_turn(creature_ptr, 50);
 
        /* Take off the item */
-       (void)inven_takeoff(item, 255);
+       (void)inven_takeoff(creature_ptr, item, 255);
        verify_equip_slot(creature_ptr, item);
        calc_android_exp(creature_ptr);
        creature_ptr->redraw |= (PR_EQUIPPY);
index f0f0061..725af10 100644 (file)
@@ -3049,7 +3049,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                }
 
                                                /* Steal the items */
-                                               inven_item_increase(i, -1);
+                                               inven_item_increase(target_ptr, i, -1);
                                                inven_item_optimize(i);
 
                                                obvious = TRUE;
@@ -3090,7 +3090,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
 #endif
 
                                                /* Steal the items */
-                                               inven_item_increase(i, -1);
+                                               inven_item_increase(target_ptr, i, -1);
                                                inven_item_optimize(i);
 
                                                obvious = TRUE;
@@ -4014,7 +4014,6 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                        }
                }
 
-
                /* Analyze "visible" monsters only */
                if (is_original_ap_and_seen(m_ptr) && !do_silly_attack)
                {
index 56e724e..60072bf 100644 (file)
@@ -492,7 +492,7 @@ extern OBJECT_IDX drop_near(player_type *owner_type, object_type *o_ptr, PERCENT
 extern void vary_item(player_type *owner_ptr, INVENTORY_IDX item, ITEM_NUMBER num);
 extern void inven_item_charges(player_type *owner_ptr, INVENTORY_IDX item);
 extern void inven_item_describe(player_type *owner_ptr, INVENTORY_IDX item);
-extern void inven_item_increase(INVENTORY_IDX item, ITEM_NUMBER num);
+extern void inven_item_increase(player_type *owner_ptr, INVENTORY_IDX item, ITEM_NUMBER num);
 extern void inven_item_optimize(INVENTORY_IDX item);
 extern void floor_item_charges(INVENTORY_IDX item);
 extern void floor_item_describe(INVENTORY_IDX item);
@@ -501,7 +501,7 @@ extern void floor_item_optimize(INVENTORY_IDX item);
 extern bool inven_carry_okay(object_type *o_ptr);
 extern bool object_sort_comp(object_type *o_ptr, s32b o_value, object_type *j_ptr);
 extern s16b inven_carry(player_type *owner_ptr, object_type *o_ptr);
-extern INVENTORY_IDX inven_takeoff(INVENTORY_IDX item, ITEM_NUMBER amt);
+extern INVENTORY_IDX inven_takeoff(player_type *owner_ptr, INVENTORY_IDX item, ITEM_NUMBER amt);
 extern void drop_from_inventory(player_type *owner_type, INVENTORY_IDX item, ITEM_NUMBER amt);
 extern void combine_pack(player_type *owner_ptr);
 extern void reorder_pack(void);
index 68895de..105390a 100644 (file)
@@ -4585,7 +4585,7 @@ void vary_item(player_type *owner_ptr, INVENTORY_IDX item, ITEM_NUMBER num)
 {
        if (item >= 0)
        {
-               inven_item_increase(item, num);
+               inven_item_increase(owner_ptr, item, num);
                inven_item_describe(owner_ptr, item);
                inven_item_optimize(item);
        }
@@ -4606,9 +4606,9 @@ void vary_item(player_type *owner_ptr, INVENTORY_IDX item, ITEM_NUMBER num)
  * @param num 増やしたい量
  * @return なし
  */
-void inven_item_increase(INVENTORY_IDX item, ITEM_NUMBER num)
+void inven_item_increase(player_type *owner_ptr, INVENTORY_IDX item, ITEM_NUMBER num)
 {
-       object_type *o_ptr = &p_ptr->inventory_list[item];
+       object_type *o_ptr = &owner_ptr->inventory_list[item];
 
        /* Apply */
        num += o_ptr->number;
@@ -4621,31 +4621,25 @@ void inven_item_increase(INVENTORY_IDX item, ITEM_NUMBER num)
        num -= o_ptr->number;
 
        /* Change the number and weight */
-       if (num)
-       {
-               /* Add the number */
-               o_ptr->number += num;
+       if (num != 0) return;
 
-               /* Add the weight */
-               p_ptr->total_weight += (num * o_ptr->weight);
-               p_ptr->update |= (PU_BONUS);
-               p_ptr->update |= (PU_MANA);
-               p_ptr->update |= (PU_COMBINE);
-               p_ptr->window |= (PW_INVEN | PW_EQUIP);
+       /* Add the number */
+       o_ptr->number += num;
 
-               /* Hack -- Clear temporary elemental brands if player takes off weapons */
-               if (!o_ptr->number && p_ptr->ele_attack)
-               {
-                       if ((item == INVEN_RARM) || (item == INVEN_LARM))
-                       {
-                               if (!has_melee_weapon(p_ptr, INVEN_RARM + INVEN_LARM - item))
-                               {
-                                       /* Clear all temporary elemental brands */
-                                       set_ele_attack(p_ptr, 0, 0);
-                               }
-                       }
-               }
-       }
+       /* Add the weight */
+       owner_ptr->total_weight += (num * o_ptr->weight);
+       owner_ptr->update |= (PU_BONUS);
+       owner_ptr->update |= (PU_MANA);
+       owner_ptr->update |= (PU_COMBINE);
+       owner_ptr->window |= (PW_INVEN | PW_EQUIP);
+
+       /* Hack -- Clear temporary elemental brands if player takes off weapons */
+       if (o_ptr->number || !owner_ptr->ele_attack) return;
+       if (!(item == INVEN_RARM) && !(item == INVEN_LARM)) return;
+       if (has_melee_weapon(owner_ptr, INVEN_RARM + INVEN_LARM - item)) return;
+
+       /* Clear all temporary elemental brands */
+       set_ele_attack(owner_ptr, 0, 0);
 }
 
 
@@ -5080,7 +5074,7 @@ s16b inven_carry(player_type *owner_ptr, object_type *o_ptr)
  * to fall to the ground.\n
  * Return the inventory slot into which the item is placed.\n
  */
-INVENTORY_IDX inven_takeoff(INVENTORY_IDX item, ITEM_NUMBER amt)
+INVENTORY_IDX inven_takeoff(player_type *owner_ptr, INVENTORY_IDX item, ITEM_NUMBER amt)
 {
        INVENTORY_IDX slot;
 
@@ -5095,7 +5089,7 @@ INVENTORY_IDX inven_takeoff(INVENTORY_IDX item, ITEM_NUMBER amt)
 
 
        /* Get the item to take off */
-       o_ptr = &p_ptr->inventory_list[item];
+       o_ptr = &owner_ptr->inventory_list[item];
        if (amt <= 0) return (-1);
 
        /* Verify */
@@ -5134,11 +5128,11 @@ INVENTORY_IDX inven_takeoff(INVENTORY_IDX item, ITEM_NUMBER amt)
        }
 
        /* Modify, Optimize */
-       inven_item_increase(item, -amt);
+       inven_item_increase(owner_ptr, item, -amt);
        inven_item_optimize(item);
 
        /* Carry the object */
-       slot = inven_carry(p_ptr, q_ptr);
+       slot = inven_carry(owner_ptr, q_ptr);
 
 #ifdef JP
        msg_format("%s(%c)%s。", o_name, index_to_label(slot), act);
@@ -5183,7 +5177,7 @@ void drop_from_inventory(player_type *owner_ptr, INVENTORY_IDX item, ITEM_NUMBER
        if (item >= INVEN_RARM)
        {
                /* Take off first */
-               item = inven_takeoff(item, amt);
+               item = inven_takeoff(owner_ptr, item, amt);
 
                /* Access original object */
                o_ptr = &owner_ptr->inventory_list[item];
index 150bec5..37665cf 100644 (file)
@@ -108,7 +108,7 @@ void inventory_damage(player_type *player_ptr, inven_func typ, int perc)
                reduce_charges(o_ptr, amt);
 
                /* Destroy "amt" items */
-               inven_item_increase(i, -amt);
+               inven_item_increase(player_ptr, i, -amt);
                inven_item_optimize(i);
        }
 }
index 60dcf82..9ac94e5 100644 (file)
@@ -4990,8 +4990,9 @@ void update_creature(player_type *creature_ptr)
        if (creature_ptr->update & (PU_AUTODESTROY))
        {
                creature_ptr->update &= ~(PU_AUTODESTROY);
-               autopick_delayed_alter(floor_ptr);
+               autopick_delayed_alter(creature_ptr);
        }
+
        if (creature_ptr->update & (PU_COMBINE))
        {
                creature_ptr->update &= ~(PU_COMBINE);
index e1ab471..b0611a8 100644 (file)
@@ -472,7 +472,7 @@ bool cosmic_cast_off(player_type *creature_ptr, object_type *o_ptr)
 
        object_type forge;
        object_copy(&forge, o_ptr);
-       inven_item_increase(inv, (0 - o_ptr->number));
+       inven_item_increase(creature_ptr, inv, (0 - o_ptr->number));
        inven_item_optimize(inv);
        OBJECT_IDX o_idx = drop_near(creature_ptr, &forge, 0, creature_ptr->y, creature_ptr->x);
        o_ptr = &creature_ptr->current_floor_ptr->o_list[o_idx];
index b4ad329..61827e2 100644 (file)
@@ -1601,7 +1601,7 @@ bool artifact_scroll(player_type *caster_ptr)
 
                        if (item >= 0)
                        {
-                               inven_item_increase(item, 1 - (o_ptr->number));
+                               inven_item_increase(caster_ptr, item, 1 - (o_ptr->number));
                        }
                        else
                        {
index 9d124de..89bfc92 100644 (file)
@@ -5087,7 +5087,7 @@ static void store_sell(player_type *owner_ptr)
                        q_ptr->timeout = 0;
 
                        /* Take the item from the player, describe the result */
-                       inven_item_increase(item, -amt);
+                       inven_item_increase(owner_ptr, item, -amt);
                        inven_item_describe(owner_ptr, item);
 
                        /* If items remain, auto-inscribe before optimizing */