OSDN Git Service

[Refactor] #38997 object_aware()、object_mention()、apply_magic_weapon() にplayer_type...
authorHourier <hourier@users.sourceforge.jp>
Fri, 10 Jan 2020 13:38:57 +0000 (22:38 +0900)
committerHourier <hourier@users.sourceforge.jp>
Fri, 10 Jan 2020 13:38:57 +0000 (22:38 +0900)
21 files changed:
src/artifact.c
src/artifact.h
src/birth.c
src/bldg.c
src/cmd/cmd-eat.c
src/cmd/cmd-quaff.c
src/cmd/cmd-read.c
src/cmd/cmd-smith.c
src/cmd/cmd-usestaff.c
src/cmd/cmd-zaprod.c
src/cmd/cmd-zapwand.c
src/dungeon-file.c
src/files.c
src/monster1.c
src/object-boost.h
src/object.h
src/object2.c
src/spells-object.c
src/spells3.c
src/store.c
src/wizard2.c

index 6d69e6b..f5cc077 100644 (file)
@@ -1545,11 +1545,12 @@ static void get_random_name(object_type *o_ptr, char *return_name, bool armour,
 /*!
  * @brief ランダムアーティファクト生成のメインルーチン
  * @details 既に生成が済んでいるオブジェクトの構造体を、アーティファクトとして強化する。
+ * @param player_ptr プレーヤーへの参照ポインタ
  * @param o_ptr 対象のオブジェクト構造体ポインタ
  * @param a_scroll アーティファクト生成の巻物上の処理。呪いのアーティファクトが生成対象外となる。
  * @return 常にTRUE(1)を返す
  */
-bool become_random_artifact(object_type *o_ptr, bool a_scroll)
+bool become_random_artifact(player_type *player_ptr, object_type *o_ptr, bool a_scroll)
 {
        GAME_TEXT new_name[1024];
        PARAMETER_VALUE has_pval = 0;
@@ -1576,7 +1577,7 @@ bool become_random_artifact(object_type *o_ptr, bool a_scroll)
 
        if (a_scroll && one_in_(4))
        {
-               switch (p_ptr->pclass)
+               switch (player_ptr->pclass)
                {
                        case CLASS_WARRIOR:
                        case CLASS_BERSERKER:
@@ -1826,7 +1827,7 @@ bool become_random_artifact(object_type *o_ptr, bool a_scroll)
                GAME_TEXT dummy_name[MAX_NLEN] = "";
                concptr ask_msg = _("このアーティファクトを何と名付けますか?", "What do you want to call the artifact? ");
 
-               object_aware(o_ptr);
+               object_aware(player_ptr, o_ptr);
                object_known(o_ptr);
 
                /* Mark the item as fully known */
@@ -1851,8 +1852,8 @@ bool become_random_artifact(object_type *o_ptr, bool a_scroll)
                        }
                }
                sprintf(new_name, _("《%s》", "'%s'"), dummy_name);
-               chg_virtue(p_ptr, V_INDIVIDUALISM, 2);
-               chg_virtue(p_ptr, V_ENCHANT, 5);
+               chg_virtue(player_ptr, V_INDIVIDUALISM, 2);
+               chg_virtue(player_ptr, V_ENCHANT, 5);
        }
        else
        {
@@ -1865,7 +1866,7 @@ bool become_random_artifact(object_type *o_ptr, bool a_scroll)
        msg_format_wizard(CHEAT_OBJECT, _("パワー %d で 価値%ld のランダムアーティファクト生成 バイアスは「%s」",
                "Random artifact generated - Power:%d Value:%d Bias:%s."), max_powers, total_flags, artifact_bias_name[o_ptr->artifact_bias]);
 
-       p_ptr->window |= (PW_INVEN | PW_EQUIP);
+       player_ptr->window |= (PW_INVEN | PW_EQUIP);
 
        return TRUE;
 }
index 6114b7f..c9d4ccc 100644 (file)
@@ -74,7 +74,7 @@ extern char *a_text;
 extern ARTIFACT_IDX max_a_idx;
 
 /* artifact.c */
-extern bool become_random_artifact(object_type *o_ptr, bool a_scroll);
+extern bool become_random_artifact(player_type *player_ptr, object_type *o_ptr, bool a_scroll);
 extern int activation_index(object_type *o_ptr);
 extern const activation_type* find_activation_info(object_type *o_ptr);
 extern void random_artifact_resistance(object_type * o_ptr, artifact_type *a_ptr);
index 98ed0a7..4b54a04 100644 (file)
@@ -2220,7 +2220,7 @@ static void add_outfit(player_type *creature_ptr, object_type *o_ptr)
 {
        s16b slot;
 
-       object_aware(o_ptr);
+       object_aware(creature_ptr, o_ptr);
        object_known(o_ptr);
        slot = inven_carry(creature_ptr, o_ptr);
 
@@ -2296,7 +2296,7 @@ void player_outfit(player_type *creature_ptr)
                object_prep(q_ptr, lookup_kind(TV_FLASK, SV_ANY));
 
                /* Fuel with oil (move pval to xtra4) */
-               apply_magic(q_ptr, 1, AM_NO_FIXED_ART);
+               apply_magic(creature_ptr, q_ptr, 1, AM_NO_FIXED_ART);
 
                q_ptr->number = (ITEM_NUMBER)rand_range(7, 12);
                add_outfit(creature_ptr, q_ptr);
index 74c67c9..7d51042 100644 (file)
@@ -1756,7 +1756,6 @@ static void show_bounty(void)
 }
 
 
-
 /*!
  * 賞金首の報酬テーブル / List of prize object
  */
@@ -1790,11 +1789,12 @@ static struct {
        {TV_SCROLL, SV_SCROLL_ARTIFACT},
 };
 
+
 /*!
  * @brief 賞金首の引き換え処理 / Get prize
  * @return 各種賞金首のいずれかでも換金が行われたか否か。
  */
-static bool kankin(void)
+static bool kankin(player_type *player_ptr)
 {
        INVENTORY_IDX i;
        int j;
@@ -1805,7 +1805,7 @@ static bool kankin(void)
        /* Loop for inventory and right/left arm */
        for (i = 0; i <= INVEN_LARM; i++)
        {
-               o_ptr = &p_ptr->inventory_list[i];
+               o_ptr = &player_ptr->inventory_list[i];
 
                /* Living Tsuchinoko worthes $1000000 */
                if ((o_ptr->tval == TV_CAPTURE) && (o_ptr->pval == MON_TSUCHINOKO))
@@ -1816,8 +1816,8 @@ static bool kankin(void)
                        if (get_check(buf))
                        {
                                msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)(1000000L * o_ptr->number));
-                               p_ptr->au += 1000000L * o_ptr->number;
-                               p_ptr->redraw |= (PR_GOLD);
+                               player_ptr->au += 1000000L * o_ptr->number;
+                               player_ptr->redraw |= (PR_GOLD);
                                vary_item(i, -o_ptr->number);
                        }
                        change = TRUE;
@@ -1826,7 +1826,7 @@ static bool kankin(void)
 
        for (i = 0; i < INVEN_PACK; i++)
        {
-               o_ptr = &p_ptr->inventory_list[i];
+               o_ptr = &player_ptr->inventory_list[i];
 
                /* Corpse of Tsuchinoko worthes $200000 */
                if ((o_ptr->tval == TV_CORPSE) && (o_ptr->sval == SV_CORPSE) && (o_ptr->pval == MON_TSUCHINOKO))
@@ -1837,8 +1837,8 @@ static bool kankin(void)
                        if (get_check(buf))
                        {
                                msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)(200000L * o_ptr->number));
-                               p_ptr->au += 200000L * o_ptr->number;
-                               p_ptr->redraw |= (PR_GOLD);
+                               player_ptr->au += 200000L * o_ptr->number;
+                               player_ptr->redraw |= (PR_GOLD);
                                vary_item(i, -o_ptr->number);
                        }
                        change = TRUE;
@@ -1847,7 +1847,7 @@ static bool kankin(void)
 
        for (i = 0; i < INVEN_PACK; i++)
        {
-               o_ptr = &p_ptr->inventory_list[i];
+               o_ptr = &player_ptr->inventory_list[i];
 
                /* Bones of Tsuchinoko worthes $100000 */
                if ((o_ptr->tval == TV_CORPSE) && (o_ptr->sval == SV_SKELETON) && (o_ptr->pval == MON_TSUCHINOKO))
@@ -1858,8 +1858,8 @@ static bool kankin(void)
                        if (get_check(buf))
                        {
                                msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)(100000L * o_ptr->number));
-                               p_ptr->au += 100000L * o_ptr->number;
-                               p_ptr->redraw |= (PR_GOLD);
+                               player_ptr->au += 100000L * o_ptr->number;
+                               player_ptr->redraw |= (PR_GOLD);
                                vary_item(i, -o_ptr->number);
                        }
                        change = TRUE;
@@ -1868,7 +1868,7 @@ static bool kankin(void)
 
        for (i = 0; i < INVEN_PACK; i++)
        {
-               o_ptr = &p_ptr->inventory_list[i];
+               o_ptr = &player_ptr->inventory_list[i];
                if ((o_ptr->tval == TV_CORPSE) && (o_ptr->sval == SV_CORPSE) && (streq(r_name + r_info[o_ptr->pval].name, r_name + r_info[today_mon].name)))
                {
                        char buf[MAX_NLEN+20];
@@ -1877,8 +1877,8 @@ static bool kankin(void)
                        if (get_check(buf))
                        {
                                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);
+                               player_ptr->au += (r_info[today_mon].level * 50 + 100) * o_ptr->number;
+                               player_ptr->redraw |= (PR_GOLD);
                                vary_item(i, -o_ptr->number);
                        }
                        change = TRUE;
@@ -1887,7 +1887,7 @@ static bool kankin(void)
 
        for (i = 0; i < INVEN_PACK; i++)
        {
-               o_ptr = &p_ptr->inventory_list[i];
+               o_ptr = &player_ptr->inventory_list[i];
 
                if ((o_ptr->tval == TV_CORPSE) && (o_ptr->sval == SV_SKELETON) && (streq(r_name + r_info[o_ptr->pval].name, r_name + r_info[today_mon].name)))
                {
@@ -1897,8 +1897,8 @@ static bool kankin(void)
                        if (get_check(buf))
                        {
                                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);
+                               player_ptr->au += (r_info[today_mon].level * 30 + 60) * o_ptr->number;
+                               player_ptr->redraw |= (PR_GOLD);
                                vary_item(i, -o_ptr->number);
                        }
                        change = TRUE;
@@ -1910,7 +1910,7 @@ static bool kankin(void)
                /* Need reverse order --- Positions will be changed in the loop */
                for (i = INVEN_PACK-1; i >= 0; i--)
                {
-                       o_ptr = &p_ptr->inventory_list[i];
+                       o_ptr = &player_ptr->inventory_list[i];
                        if ((o_ptr->tval == TV_CORPSE) && (o_ptr->pval == current_world_ptr->bounty_r_idx[j]))
                        {
                                char buf[MAX_NLEN+20];
@@ -1924,10 +1924,10 @@ static bool kankin(void)
 
 #if 0 /* Obsoleted */
                                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);
+                               player_ptr->au += (r_info[current_world_ptr->bounty_r_idx[j]].level+1) * 300 * o_ptr->number;
+                               player_ptr->redraw |= (PR_GOLD);
                                vary_item(i, -o_ptr->number);
-                               chg_virtue(p_ptr, V_JUSTICE, 5);
+                               chg_virtue(player_ptr, V_JUSTICE, 5);
                                current_world_ptr->bounty_r_idx[j] += 10000;
 
                                change = TRUE;
@@ -1936,7 +1936,7 @@ static bool kankin(void)
                                /* Hand it first */
                                vary_item(i, -o_ptr->number);
 
-                               chg_virtue(p_ptr, V_JUSTICE, 5);
+                               chg_virtue(player_ptr, V_JUSTICE, 5);
                                current_world_ptr->bounty_r_idx[j] += 10000;
 
                                /* Count number of unique corpses already handed */
@@ -1948,9 +1948,9 @@ 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, p_ptr->current_floor_ptr->object_level, AM_NO_FIXED_ART);
+                               apply_magic(player_ptr, &forge, player_ptr->current_floor_ptr->object_level, AM_NO_FIXED_ART);
 
-                               object_aware(&forge);
+                               object_aware(player_ptr, &forge);
                                object_known(&forge);
 
                                /*
@@ -1958,7 +1958,7 @@ static bool kankin(void)
                                 * Since a corpse is handed at first,
                                 * there is at least one empty slot.
                                 */
-                               item_new = inven_carry(p_ptr, &forge);
+                               item_new = inven_carry(player_ptr, &forge);
 
                                object_desc(o_name, &forge, 0);
                                msg_format(_("%s(%c)を貰った。", "You get %s (%c). "), o_name, index_to_label(item_new));
@@ -1978,6 +1978,7 @@ static bool kankin(void)
                msg_print(NULL);
                return FALSE;
        }
+
        return TRUE;
 }
 
@@ -4014,7 +4015,7 @@ static void bldg_process_command(player_type *player_ptr, building_type *bldg, i
                break;
 
        case BACT_KANKIN:
-               kankin();
+               kankin(player_ptr);
                break;
 
        case BACT_HEIKOUKA:
index 7287e26..89f455d 100644 (file)
@@ -307,7 +307,7 @@ void exe_eat_food(player_type *creature_ptr, INVENTORY_IDX item)
        /* The player is now aware of the object */
        if (ident && !object_is_aware(o_ptr))
        {
-               object_aware(o_ptr);
+               object_aware(creature_ptr, o_ptr);
                gain_exp(creature_ptr, (lev + (creature_ptr->lev >> 1)) / creature_ptr->lev);
        }
 
index b73ce99..e6a40bd 100644 (file)
@@ -509,7 +509,7 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item)
        /* An identification was made */
        if (ident && !object_is_aware(q_ptr))
        {
-               object_aware(q_ptr);
+               object_aware(creature_ptr, q_ptr);
                gain_exp(creature_ptr, (lev + (creature_ptr->lev >> 1)) / creature_ptr->lev);
        }
 
index ee7ac5f..fadfbd3 100644 (file)
@@ -569,7 +569,7 @@ void exe_read(player_type *creature_ptr, INVENTORY_IDX item, bool known)
        /* An identification was made */
        if (ident && !object_is_aware(o_ptr))
        {
-               object_aware(o_ptr);
+               object_aware(creature_ptr, o_ptr);
                gain_exp(creature_ptr, (lev + (creature_ptr->lev >> 1)) / creature_ptr->lev);
        }
 
index 40b9001..6eb2c77 100644 (file)
@@ -608,7 +608,7 @@ static void drain_essence(player_type *creature_ptr)
        if (o_ptr->tval == TV_DRAG_ARMOR) o_ptr->timeout = old_timeout;
        if (item >= 0) creature_ptr->total_weight += (o_ptr->weight*o_ptr->number - weight * number);
        o_ptr->ident |= (IDENT_MENTAL);
-       object_aware(o_ptr);
+       object_aware(creature_ptr, o_ptr);
        object_known(o_ptr);
 
        object_flags(o_ptr, new_flgs);
index f1797ba..8cfd023 100644 (file)
@@ -360,7 +360,7 @@ void exe_use_staff(player_type *creature_ptr, INVENTORY_IDX item)
        /* An identification was made */
        if (ident && !object_is_aware(o_ptr))
        {
-               object_aware(o_ptr);
+               object_aware(creature_ptr, o_ptr);
                gain_exp(creature_ptr, (lev + (creature_ptr->lev >> 1)) / creature_ptr->lev);
        }
 
index 404548f..fe238b9 100644 (file)
@@ -380,7 +380,7 @@ void exe_zap_rod(player_type *creature_ptr, INVENTORY_IDX item)
        /* Successfully determined the object function */
        if (ident && !object_is_aware(o_ptr))
        {
-               object_aware(o_ptr);
+               object_aware(creature_ptr, o_ptr);
                gain_exp(creature_ptr, (lev + (creature_ptr->lev >> 1)) / creature_ptr->lev);
        }
 
index d4caf7c..4d8946b 100644 (file)
@@ -419,7 +419,7 @@ void exe_aim_wand(player_type *creature_ptr, INVENTORY_IDX item)
        /* Apply identification */
        if (ident && !object_is_aware(o_ptr))
        {
-               object_aware(o_ptr);
+               object_aware(creature_ptr, o_ptr);
                gain_exp(creature_ptr, (lev + (creature_ptr->lev >> 1)) / creature_ptr->lev);
        }
 
index f27f575..3557a2c 100644 (file)
@@ -4071,7 +4071,7 @@ static errr process_dungeon_file_aux(player_type *player_ptr, char *buf, int ymi
                                }
 
                                /* Apply magic (no messages, no artifacts) */
-                               apply_magic(o_ptr, floor_ptr->base_level, AM_NO_FIXED_ART | AM_GOOD);
+                               apply_magic(player_ptr, o_ptr, floor_ptr->base_level, AM_NO_FIXED_ART | AM_GOOD);
 
                                drop_here(floor_ptr, o_ptr, *y, *x);
                        }
index f0ddc98..475a703 100644 (file)
@@ -6366,7 +6366,7 @@ void show_info(player_type *creature_ptr)
                if (!o_ptr->k_idx) continue;
 
                /* Aware and Known */
-               object_aware(o_ptr);
+               object_aware(creature_ptr, o_ptr);
                object_known(o_ptr);
        }
 
@@ -6381,7 +6381,7 @@ void show_info(player_type *creature_ptr)
                        if (!o_ptr->k_idx) continue;
 
                        /* Aware and Known */
-                       object_aware(o_ptr);
+                       object_aware(creature_ptr, o_ptr);
                        object_known(o_ptr);
                }
        }
index ba6b0f6..30cb4b6 100644 (file)
@@ -2524,7 +2524,9 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
        int dump_gold = 0;
        int number = 0;
 
-       monster_type *m_ptr = &p_ptr->current_floor_ptr->m_list[m_idx];
+       // todo ここをplayer_type に差し替えれば少しは楽ができる
+       floor_type *floor_ptr = p_ptr->current_floor_ptr;
+       monster_type *m_ptr = &floor_ptr->m_list[m_idx];
        monster_race *r_ptr = &r_info[m_ptr->r_idx];
 
        bool visible = ((m_ptr->ml && !p_ptr->image) || (r_ptr->flags1 & RF1_UNIQUE));
@@ -2539,7 +2541,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
        object_type forge;
        object_type *q_ptr;
 
-       bool drop_chosen_item = drop_item && !cloned && !p_ptr->current_floor_ptr->inside_arena
+       bool drop_chosen_item = drop_item && !cloned && !floor_ptr->inside_arena
                && !p_ptr->phase_out && !is_pet(m_ptr);
 
        /* The caster is dead? */
@@ -2587,7 +2589,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
        check_quest_completion(p_ptr, m_ptr);
 
        /* Handle the possibility of player vanquishing arena combatant -KMW- */
-       if (p_ptr->current_floor_ptr->inside_arena && !is_pet(m_ptr))
+       if (floor_ptr->inside_arena && !is_pet(m_ptr))
        {
                p_ptr->exit_bldg = TRUE;
 
@@ -2606,7 +2608,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
 
                        /* Prepare to make a prize */
                        object_prep(q_ptr, lookup_kind(arena_info[p_ptr->arena_number].tval, arena_info[p_ptr->arena_number].sval));
-                       apply_magic(q_ptr, p_ptr->current_floor_ptr->object_level, AM_NO_FIXED_ART);
+                       apply_magic(p_ptr, q_ptr, floor_ptr->object_level, AM_NO_FIXED_ART);
                        (void)drop_near(p_ptr, q_ptr, -1, y, x);
                }
 
@@ -2633,7 +2635,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
        /* Drop a dead corpse? */
        if (one_in_(r_ptr->flags1 & RF1_UNIQUE ? 1 : 4) &&
                (r_ptr->flags9 & (RF9_DROP_CORPSE | RF9_DROP_SKELETON)) &&
-               !(p_ptr->current_floor_ptr->inside_arena || p_ptr->phase_out || cloned || ((m_ptr->r_idx == today_mon) && is_pet(m_ptr))))
+               !(floor_ptr->inside_arena || p_ptr->phase_out || cloned || ((m_ptr->r_idx == today_mon) && is_pet(m_ptr))))
        {
                /* Assume skeleton */
                bool corpse = FALSE;
@@ -2665,7 +2667,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
                /* Prepare to make an object */
                object_prep(q_ptr, lookup_kind(TV_CORPSE, (corpse ? SV_CORPSE : SV_SKELETON)));
 
-               apply_magic(q_ptr, p_ptr->current_floor_ptr->object_level, AM_NO_FIXED_ART);
+               apply_magic(p_ptr, q_ptr, floor_ptr->object_level, AM_NO_FIXED_ART);
 
                q_ptr->pval = m_ptr->r_idx;
                (void)drop_near(p_ptr, q_ptr, -1, y, x);
@@ -2681,7 +2683,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
        {
        case MON_PINK_HORROR:
                /* Pink horrors are replaced with 2 Blue horrors */
-               if (!(p_ptr->current_floor_ptr->inside_arena || p_ptr->phase_out))
+               if (!(floor_ptr->inside_arena || p_ptr->phase_out))
                {
                        bool notice = FALSE;
 
@@ -2712,19 +2714,19 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
                        /* Prepare to make a Blade of Chaos */
                        object_prep(q_ptr, lookup_kind(TV_SWORD, SV_BLADE_OF_CHAOS));
 
-                       apply_magic(q_ptr, p_ptr->current_floor_ptr->object_level, AM_NO_FIXED_ART | mo_mode);
+                       apply_magic(p_ptr, q_ptr, floor_ptr->object_level, AM_NO_FIXED_ART | mo_mode);
                        (void)drop_near(p_ptr, q_ptr, -1, y, x);
                }
                break;
 
        case MON_RAAL:
-               if (drop_chosen_item && (p_ptr->current_floor_ptr->dun_level > 9))
+               if (drop_chosen_item && (floor_ptr->dun_level > 9))
                {
                        q_ptr = &forge;
                        object_wipe(q_ptr);
 
                        /* Activate restriction */
-                       if ((p_ptr->current_floor_ptr->dun_level > 49) && one_in_(5))
+                       if ((floor_ptr->dun_level > 49) && one_in_(5))
                                get_obj_num_hook = kind_is_good_book;
                        else
                                get_obj_num_hook = kind_is_book;
@@ -2740,7 +2742,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
                 * Mega^3-hack: killing a 'Warrior of the Dawn' is likely to
                 * spawn another in the fallen one's place!
                 */
-               if (!p_ptr->current_floor_ptr->inside_arena && !p_ptr->phase_out)
+               if (!floor_ptr->inside_arena && !p_ptr->phase_out)
                {
                        if (!one_in_(7))
                        {
@@ -2750,8 +2752,8 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
 
                                do
                                {
-                                       scatter(p_ptr->current_floor_ptr, &wy, &wx, y, x, 20, 0);
-                               } while (!(in_bounds(p_ptr->current_floor_ptr, wy, wx) && cave_empty_bold2(p_ptr->current_floor_ptr, wy, wx)) && --attempts);
+                                       scatter(floor_ptr, &wy, &wx, y, x, 20, 0);
+                               } while (!(in_bounds(floor_ptr, wy, wx) && cave_empty_bold2(floor_ptr, wy, wx)) && --attempts);
 
                                if (attempts > 0)
                                {
@@ -2827,7 +2829,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
                q_ptr->name1 = ART_GROND;
 
                /* Mega-Hack -- Actually create "Grond" */
-               apply_magic(q_ptr, -1, AM_GOOD | AM_GREAT);
+               apply_magic(p_ptr, q_ptr, -1, AM_GOOD | AM_GREAT);
                (void)drop_near(p_ptr, q_ptr, -1, y, x);
                q_ptr = &forge;
 
@@ -2838,7 +2840,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
                q_ptr->name1 = ART_CHAOS;
 
                /* Mega-Hack -- Actually create "Chaos" */
-               apply_magic(q_ptr, -1, AM_GOOD | AM_GREAT);
+               apply_magic(p_ptr, q_ptr, -1, AM_GOOD | AM_GREAT);
                (void)drop_near(p_ptr, q_ptr, -1, y, x);
                break;
 
@@ -2863,7 +2865,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
                        /* Prepare to make a Can of Toys */
                        object_prep(q_ptr, lookup_kind(TV_CHEST, SV_CHEST_KANDUME));
 
-                       apply_magic(q_ptr, p_ptr->current_floor_ptr->object_level, AM_NO_FIXED_ART);
+                       apply_magic(p_ptr, q_ptr, floor_ptr->object_level, AM_NO_FIXED_ART);
                        (void)drop_near(p_ptr, q_ptr, -1, y, x);
                }
                break;
@@ -2881,7 +2883,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
                switch (r_ptr->d_char)
                {
                case '(':
-                       if (p_ptr->current_floor_ptr->dun_level > 0)
+                       if (floor_ptr->dun_level > 0)
                        {
                                q_ptr = &forge;
                                object_wipe(q_ptr);
@@ -2896,7 +2898,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
                        break;
 
                case '/':
-                       if (p_ptr->current_floor_ptr->dun_level > 4)
+                       if (floor_ptr->dun_level > 4)
                        {
                                q_ptr = &forge;
                                object_wipe(q_ptr);
@@ -2911,7 +2913,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
                        break;
 
                case '[':
-                       if (p_ptr->current_floor_ptr->dun_level > 19)
+                       if (floor_ptr->dun_level > 19)
                        {
                                q_ptr = &forge;
                                object_wipe(q_ptr);
@@ -2926,7 +2928,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
                        break;
 
                case '\\':
-                       if (p_ptr->current_floor_ptr->dun_level > 4)
+                       if (floor_ptr->dun_level > 4)
                        {
                                q_ptr = &forge;
                                object_wipe(q_ptr);
@@ -3021,7 +3023,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
                                /* Prepare to make a reward */
                                object_prep(q_ptr, k_idx);
 
-                               apply_magic(q_ptr, p_ptr->current_floor_ptr->object_level, AM_NO_FIXED_ART | AM_GOOD);
+                               apply_magic(p_ptr, q_ptr, floor_ptr->object_level, AM_NO_FIXED_ART | AM_GOOD);
                                (void)drop_near(p_ptr, q_ptr, -1, y, x);
                        }
                        msg_format(_("あなたは%sを制覇した!", "You have conquered %s!"), d_name + d_info[p_ptr->dungeon_idx].name);
@@ -3039,7 +3041,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
        if (cloned && !(r_ptr->flags1 & RF1_UNIQUE))
                number = 0; /* Clones drop no stuff unless Cloning Pits */
 
-       if (is_pet(m_ptr) || p_ptr->phase_out || p_ptr->current_floor_ptr->inside_arena)
+       if (is_pet(m_ptr) || p_ptr->phase_out || floor_ptr->inside_arena)
                number = 0; /* Pets drop no stuff */
        if (!drop_item && (r_ptr->d_char != '$')) number = 0;
 
@@ -3050,7 +3052,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
        coin_type = force_coin;
 
        /* Average dungeon and monster levels */
-       p_ptr->current_floor_ptr->object_level = (p_ptr->current_floor_ptr->dun_level + r_ptr->level) / 2;
+       floor_ptr->object_level = (floor_ptr->dun_level + r_ptr->level) / 2;
 
        /* Drop some objects */
        for (j = 0; j < number; j++)
@@ -3073,7 +3075,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
        }
 
        /* Reset the object level */
-       p_ptr->current_floor_ptr->object_level = p_ptr->current_floor_ptr->base_level;
+       floor_ptr->object_level = floor_ptr->base_level;
 
        /* Reset "coin" type */
        coin_type = 0;
index 60507fc..9c35de9 100644 (file)
@@ -12,7 +12,4 @@ extern void one_low_esp(object_type *o_ptr);
 extern void one_ability(object_type *o_ptr);
 extern void one_activation(object_type *o_ptr);
 extern void one_lordly_high_resistance(object_type *o_ptr);
-
-
-extern void apply_magic_weapon(object_type *o_ptr, DEPTH level, int power);
-
+extern void apply_magic_weapon(player_type *owner_ptr, object_type *o_ptr, DEPTH level, int power);
index 70dd295..bf83e7e 100644 (file)
@@ -440,7 +440,7 @@ extern void delete_object(floor_type *floor_ptr, POSITION y, POSITION x);
 extern OBJECT_IDX o_pop(floor_type *floor_ptr);
 extern OBJECT_IDX get_obj_num(player_type *o_ptr, DEPTH level, BIT_FLAGS mode);
 extern void object_known(object_type *o_ptr);
-extern void object_aware(object_type *o_ptr);
+extern void object_aware(player_type *owner_ptr, object_type *o_ptr);
 extern void object_tried(object_type *o_ptr);
 
 /*
@@ -482,7 +482,7 @@ extern void object_copy(object_type *o_ptr, object_type *j_ptr);
 #define AM_SPECIAL      0x00000008 /*!< Generate artifacts (for debug mode only) */
 #define AM_CURSED       0x00000010 /*!< Generate cursed/worthless items */
 #define AM_FORBID_CHEST 0x00000020 /*!< 箱からさらに箱が出現することを抑止する */
-extern void apply_magic(object_type *o_ptr, DEPTH lev, BIT_FLAGS mode);
+extern void apply_magic(player_type *owner_type, object_type *o_ptr, DEPTH lev, BIT_FLAGS mode);
 
 extern OBJECT_SUBTYPE_VALUE coin_type;
 
index 3001ca5..63047ce 100644 (file)
@@ -426,7 +426,6 @@ OBJECT_IDX get_obj_num(player_type *owner_ptr, DEPTH level, BIT_FLAGS mode)
                value = value - table[i].prob3;
        }
 
-
        /* Power boost */
        p = randint0(100);
 
@@ -521,7 +520,7 @@ void object_known(object_type *o_ptr)
  * @param o_ptr *鑑定*済にするオブジェクトの構造体参照ポインタ
  * @return なし
  */
-void object_aware(object_type *o_ptr)
+void object_aware(player_type *owner_ptr, object_type *o_ptr)
 {
        bool mihanmei = !object_is_aware(o_ptr);
 
@@ -529,7 +528,7 @@ void object_aware(object_type *o_ptr)
        k_info[o_ptr->k_idx].aware = TRUE;
 
        if (mihanmei && !(k_info[o_ptr->k_idx].gen_flags & TRG_INSTA_ART) && record_ident &&
-               !p_ptr->is_dead && ((o_ptr->tval >= TV_AMULET && o_ptr->tval <= TV_POTION) || (o_ptr->tval == TV_FOOD)))
+               !owner_ptr->is_dead && ((o_ptr->tval >= TV_AMULET && o_ptr->tval <= TV_POTION) || (o_ptr->tval == TV_FOOD)))
        {
                object_type forge;
                object_type *q_ptr;
@@ -541,7 +540,7 @@ void object_aware(object_type *o_ptr)
                q_ptr->number = 1;
                object_desc(o_name, q_ptr, OD_NAME_ONLY);
 
-               exe_write_diary(p_ptr, NIKKI_HANMEI, 0, o_name);
+               exe_write_diary(owner_ptr, NIKKI_HANMEI, 0, o_name);
        }
 }
 
@@ -1708,14 +1707,15 @@ void object_prep(object_type *o_ptr, KIND_OBJECT_IDX k_idx)
 
 /*!
  * @brief デバッグ時にアイテム生成情報をメッセージに出力する / Cheat -- describe a created object for the user
+ * @param owner_ptr プレーヤーへの参照ポインタ
  * @param o_ptr デバッグ出力するオブジェクトの構造体参照ポインタ
  * @return なし
  */
-static void object_mention(object_type *o_ptr)
+static void object_mention(player_type *owner_ptr, object_type *o_ptr)
 {
        GAME_TEXT o_name[MAX_NLEN];
 
-       object_aware(o_ptr);
+       object_aware(owner_ptr, o_ptr);
        object_known(o_ptr);
 
        /* Mark the item as fully known */
@@ -1772,6 +1772,7 @@ static byte get_random_ego(byte slot, bool good)
 /*!
  * @brief 武器系オブジェクトに生成ランクごとの強化を与えるサブルーチン
  * Apply magic to an item known to be a "weapon"
+ * @param owner_ptr プレーヤーへの参照ポインタ
  * @param o_ptr 強化を与えたいオブジェクトの構造体参照ポインタ
  * @param level 生成基準階
  * @param power 生成ランク
@@ -1780,7 +1781,7 @@ static byte get_random_ego(byte slot, bool good)
  * Hack -- note special base damage dice boosting\n
  * Hack -- note special processing for weapon/digger\n
  */
-void apply_magic_weapon(object_type *o_ptr, DEPTH level, int power)
+void apply_magic_weapon(player_type *owner_ptr, object_type *o_ptr, DEPTH level, int power)
 {
        HIT_PROB tohit1 = randint1(5) + (HIT_PROB)m_bonus(5, level);
        HIT_POINT todam1 = randint1(5) + (HIT_POINT)m_bonus(5, level);
@@ -1839,7 +1840,7 @@ void apply_magic_weapon(object_type *o_ptr, DEPTH level, int power)
                if (power > 1)
                {
                        if (one_in_(30) || (power > 2)) /* power > 2 is debug only */
-                               become_random_artifact(o_ptr, FALSE);
+                               become_random_artifact(owner_ptr, o_ptr, FALSE);
                        else
                                /* Special Ego-item */
                                o_ptr->name2 = EGO_DIGGING;
@@ -1871,7 +1872,7 @@ void apply_magic_weapon(object_type *o_ptr, DEPTH level, int power)
                {
                        if (one_in_(40) || (power > 2)) /* power > 2 is debug only */
                        {
-                               become_random_artifact(o_ptr, FALSE);
+                               become_random_artifact(owner_ptr, o_ptr, FALSE);
                                break;
                        }
                        while (1)
@@ -2030,7 +2031,7 @@ void apply_magic_weapon(object_type *o_ptr, DEPTH level, int power)
                {
                        if (one_in_(20) || (power > 2)) /* power > 2 is debug only */
                        {
-                               become_random_artifact(o_ptr, FALSE);
+                               become_random_artifact(owner_ptr, o_ptr, FALSE);
                                break;
                        }
                        o_ptr->name2 = get_random_ego(INVEN_BOW, TRUE);
@@ -2049,7 +2050,7 @@ void apply_magic_weapon(object_type *o_ptr, DEPTH level, int power)
                {
                        if (power > 2) /* power > 2 is debug only */
                        {
-                               become_random_artifact(o_ptr, FALSE);
+                               become_random_artifact(owner_ptr, o_ptr, FALSE);
                                break;
                        }
 
@@ -2088,6 +2089,7 @@ void apply_magic_weapon(object_type *o_ptr, DEPTH level, int power)
 /*!
  * @brief 防具系オブジェクトに生成ランクごとの強化を与えるサブルーチン
  * Apply magic to an item known to be "armor"
+ * @param owner_ptr プレーヤーへの参照ポインタ
  * @param o_ptr 強化を与えたいオブジェクトの構造体参照ポインタ
  * @param level 生成基準階
  * @param power 生成ランク
@@ -2096,7 +2098,7 @@ void apply_magic_weapon(object_type *o_ptr, DEPTH level, int power)
  * Hack -- note special processing for crown/helm\n
  * Hack -- note special processing for robe of permanence\n
  */
-static void a_m_aux_2(object_type *o_ptr, DEPTH level, int power)
+static void a_m_aux_2(player_type *owner_ptr, object_type *o_ptr, DEPTH level, int power)
 {
        ARMOUR_CLASS toac1 = (ARMOUR_CLASS)randint1(5) + m_bonus(5, level);
        ARMOUR_CLASS toac2 = (ARMOUR_CLASS)m_bonus(10, level);
@@ -2137,7 +2139,7 @@ static void a_m_aux_2(object_type *o_ptr, DEPTH level, int power)
        case TV_DRAG_ARMOR:
        {
                if (one_in_(50) || (power > 2)) /* power > 2 is debug only */
-                       become_random_artifact(o_ptr, FALSE);
+                       become_random_artifact(owner_ptr, o_ptr, FALSE);
                break;
        }
 
@@ -2169,7 +2171,7 @@ static void a_m_aux_2(object_type *o_ptr, DEPTH level, int power)
 
                        if (one_in_(20) || (power > 2)) /* power > 2 is debug only */
                        {
-                               become_random_artifact(o_ptr, FALSE);
+                               become_random_artifact(owner_ptr, o_ptr, FALSE);
                                break;
                        }
 
@@ -2257,7 +2259,7 @@ static void a_m_aux_2(object_type *o_ptr, DEPTH level, int power)
                {
                        if (one_in_(20) || (power > 2)) /* power > 2 is debug only */
                        {
-                               become_random_artifact(o_ptr, FALSE);
+                               become_random_artifact(owner_ptr, o_ptr, FALSE);
                                break;
                        }
 
@@ -2303,7 +2305,7 @@ static void a_m_aux_2(object_type *o_ptr, DEPTH level, int power)
                {
                        if (one_in_(20) || (power > 2)) /* power > 2 is debug only */
                        {
-                               become_random_artifact(o_ptr, FALSE);
+                               become_random_artifact(owner_ptr, o_ptr, FALSE);
                                break;
                        }
                        o_ptr->name2 = get_random_ego(INVEN_HANDS, TRUE);
@@ -2330,7 +2332,7 @@ static void a_m_aux_2(object_type *o_ptr, DEPTH level, int power)
                {
                        if (one_in_(20) || (power > 2)) /* power > 2 is debug only */
                        {
-                               become_random_artifact(o_ptr, FALSE);
+                               become_random_artifact(owner_ptr, o_ptr, FALSE);
                                break;
                        }
                        o_ptr->name2 = get_random_ego(INVEN_FEET, TRUE);
@@ -2361,7 +2363,7 @@ static void a_m_aux_2(object_type *o_ptr, DEPTH level, int power)
                {
                        if (one_in_(20) || (power > 2)) /* power > 2 is debug only */
                        {
-                               become_random_artifact(o_ptr, FALSE);
+                               become_random_artifact(owner_ptr, o_ptr, FALSE);
                                break;
                        }
                        while (1)
@@ -2437,7 +2439,7 @@ static void a_m_aux_2(object_type *o_ptr, DEPTH level, int power)
                {
                        if (one_in_(20) || (power > 2)) /* power > 2 is debug only */
                        {
-                               become_random_artifact(o_ptr, FALSE);
+                               become_random_artifact(owner_ptr, o_ptr, FALSE);
                                break;
                        }
                        while (1)
@@ -2515,7 +2517,7 @@ static void a_m_aux_2(object_type *o_ptr, DEPTH level, int power)
                {
                        if (one_in_(20) || (power > 2)) /* power > 2 is debug only */
                        {
-                               become_random_artifact(o_ptr, FALSE);
+                               become_random_artifact(owner_ptr, o_ptr, FALSE);
                                break;
                        }
                        o_ptr->name2 = get_random_ego(INVEN_OUTER, TRUE);
@@ -2547,13 +2549,13 @@ static void a_m_aux_2(object_type *o_ptr, DEPTH level, int power)
                break;
        }
        }
-
 }
 
 
 /*!
  * @brief 装飾品系オブジェクトに生成ランクごとの強化を与えるサブルーチン
  * Apply magic to an item known to be a "ring" or "amulet"
+ * @param owner_ptr プレーヤーへの参照ポインタ
  * @param o_ptr 強化を与えたいオブジェクトの構造体参照ポインタ
  * @param level 生成基準階
  * @param power 生成ランク
@@ -2562,7 +2564,7 @@ static void a_m_aux_2(object_type *o_ptr, DEPTH level, int power)
  * Hack -- note special "pval boost" code for ring of speed\n
  * Hack -- note that some items must be cursed (or blessed)\n
  */
-static void a_m_aux_3(object_type *o_ptr, DEPTH level, int power)
+static void a_m_aux_3(player_type *owner_ptr, object_type *o_ptr, DEPTH level, int power)
 {
        /* Apply magic (good or bad) according to type */
        switch (o_ptr->tval)
@@ -2863,7 +2865,7 @@ static void a_m_aux_3(object_type *o_ptr, DEPTH level, int power)
                {
                        o_ptr->pval = MIN(o_ptr->pval, 4);
                        /* Randart amulet */
-                       become_random_artifact(o_ptr, FALSE);
+                       become_random_artifact(owner_ptr, o_ptr, FALSE);
                }
                else if ((power == 2) && one_in_(2))
                {
@@ -3196,7 +3198,7 @@ static void a_m_aux_3(object_type *o_ptr, DEPTH level, int power)
                {
                        o_ptr->pval = MIN(o_ptr->pval, 4);
                        /* Randart amulet */
-                       become_random_artifact(o_ptr, FALSE);
+                       become_random_artifact(owner_ptr, o_ptr, FALSE);
                }
                else if ((power == 2) && one_in_(2))
                {
@@ -3343,7 +3345,7 @@ static void a_m_aux_3(object_type *o_ptr, DEPTH level, int power)
 /*!
  * @brief その他雑多のオブジェクトに生成ランクごとの強化を与えるサブルーチン
  * Apply magic to an item known to be "boring"
- * @param floo_ptr 現在フロアへの参照ポインタ
+ * @param owner_ptr プレーヤーへの参照ポインタ
  * @param o_ptr 強化を与えたいオブジェクトの構造体参照ポインタ
  * @param level 生成基準階
  * @param power 生成ランク
@@ -3351,7 +3353,7 @@ static void a_m_aux_3(object_type *o_ptr, DEPTH level, int power)
  * @details
  * Hack -- note the special code for various items
  */
-static void a_m_aux_4(object_type *o_ptr, DEPTH level, int power)
+static void a_m_aux_4(player_type *owner_ptr, object_type *o_ptr, DEPTH level, int power)
 {
        object_kind *k_ptr = &k_info[o_ptr->k_idx];
 
@@ -3359,6 +3361,7 @@ static void a_m_aux_4(object_type *o_ptr, DEPTH level, int power)
        (void)level;
 
        /* Apply magic (good or bad) according to type */
+       floor_type *floor_ptr = owner_ptr->current_floor_ptr;
        switch (o_ptr->tval)
        {
        case TV_WHISTLE:
@@ -3400,7 +3403,7 @@ static void a_m_aux_4(object_type *o_ptr, DEPTH level, int power)
 
                if (power > 2) /* power > 2 is debug only */
                {
-                       become_random_artifact(o_ptr, FALSE);
+                       become_random_artifact(owner_ptr, o_ptr, FALSE);
                }
                else if ((power == 2) || ((power == 1) && one_in_(3)))
                {
@@ -3471,7 +3474,7 @@ static void a_m_aux_4(object_type *o_ptr, DEPTH level, int power)
        case TV_CAPTURE:
        {
                o_ptr->pval = 0;
-               object_aware(o_ptr);
+               object_aware(owner_ptr, o_ptr);
                object_known(o_ptr);
                break;
        }
@@ -3493,7 +3496,7 @@ static void a_m_aux_4(object_type *o_ptr, DEPTH level, int power)
 
                        r_ptr = &r_info[i];
 
-                       check = (p_ptr->current_floor_ptr->dun_level < r_ptr->level) ? (r_ptr->level - p_ptr->current_floor_ptr->dun_level) : 0;
+                       check = (floor_ptr->dun_level < r_ptr->level) ? (r_ptr->level - floor_ptr->dun_level) : 0;
 
                        /* Ignore dead monsters */
                        if (!r_ptr->rarity) continue;
@@ -3539,11 +3542,11 @@ static void a_m_aux_4(object_type *o_ptr, DEPTH level, int power)
                /* Pick a random non-unique monster race */
                while (1)
                {
-                       i = get_mon_num(p_ptr->current_floor_ptr->dun_level);
+                       i = get_mon_num(floor_ptr->dun_level);
 
                        r_ptr = &r_info[i];
 
-                       check = (p_ptr->current_floor_ptr->dun_level < r_ptr->level) ? (r_ptr->level - p_ptr->current_floor_ptr->dun_level) : 0;
+                       check = (floor_ptr->dun_level < r_ptr->level) ? (r_ptr->level - floor_ptr->dun_level) : 0;
 
                        /* Ignore dead monsters */
                        if (!r_ptr->rarity) continue;
@@ -3559,8 +3562,7 @@ static void a_m_aux_4(object_type *o_ptr, DEPTH level, int power)
 
                o_ptr->pval = i;
 
-
-               object_aware(o_ptr);
+               object_aware(owner_ptr, o_ptr);
                object_known(o_ptr);
                break;
        }
@@ -3590,7 +3592,8 @@ static void a_m_aux_4(object_type *o_ptr, DEPTH level, int power)
                {
                        msg_format(_("%sの像", "Statue of %s"), r_name + r_ptr->name);
                }
-               object_aware(o_ptr);
+
+               object_aware(owner_ptr, o_ptr);
                object_known(o_ptr);
 
                break;
@@ -3607,7 +3610,7 @@ static void a_m_aux_4(object_type *o_ptr, DEPTH level, int power)
                o_ptr->pval = randint1(obj_level);
                if (o_ptr->sval == SV_CHEST_KANDUME) o_ptr->pval = 6;
 
-               o_ptr->xtra3 = p_ptr->current_floor_ptr->dun_level + 5;
+               o_ptr->xtra3 = floor_ptr->dun_level + 5;
 
                /* Never exceed "difficulty" of 55 to 59 */
                if (o_ptr->pval > 55) o_ptr->pval = 55 + (byte)randint0(5);
@@ -3655,11 +3658,11 @@ static void a_m_aux_4(object_type *o_ptr, DEPTH level, int power)
  * "good" and "great" arguments are false.  As a total hack, if "great" is\n
  * true, then the item gets 3 extra "attempts" to become an artifact.\n
  */
-void apply_magic(object_type *o_ptr, DEPTH lev, BIT_FLAGS mode)
+void apply_magic(player_type *owner_ptr, object_type *o_ptr, DEPTH lev, BIT_FLAGS mode)
 {
        int i, rolls, f1, f2, power;
 
-       if (p_ptr->pseikaku == SEIKAKU_MUNCHKIN) lev += randint0(p_ptr->lev / 2 + 10);
+       if (owner_ptr->pseikaku == SEIKAKU_MUNCHKIN) lev += randint0(owner_ptr->lev / 2 + 10);
 
        /* Maximum "level" for various things */
        if (lev > MAX_DEPTH - 1) lev = MAX_DEPTH - 1;
@@ -3668,21 +3671,21 @@ void apply_magic(object_type *o_ptr, DEPTH lev, BIT_FLAGS mode)
        f1 = lev + 10;
 
        /* Maximal chance of being "good" */
-       if (f1 > d_info[p_ptr->dungeon_idx].obj_good) f1 = d_info[p_ptr->dungeon_idx].obj_good;
+       if (f1 > d_info[owner_ptr->dungeon_idx].obj_good) f1 = d_info[owner_ptr->dungeon_idx].obj_good;
 
        /* Base chance of being "great" */
        f2 = f1 * 2 / 3;
 
        /* Maximal chance of being "great" */
-       if ((p_ptr->pseikaku != SEIKAKU_MUNCHKIN) && (f2 > d_info[p_ptr->dungeon_idx].obj_great))
-               f2 = d_info[p_ptr->dungeon_idx].obj_great;
+       if ((owner_ptr->pseikaku != SEIKAKU_MUNCHKIN) && (f2 > d_info[owner_ptr->dungeon_idx].obj_great))
+               f2 = d_info[owner_ptr->dungeon_idx].obj_great;
 
-       if (p_ptr->muta3 & MUT3_GOOD_LUCK)
+       if (owner_ptr->muta3 & MUT3_GOOD_LUCK)
        {
                f1 += 5;
                f2 += 2;
        }
-       else if (p_ptr->muta3 & MUT3_BAD_LUCK)
+       else if (owner_ptr->muta3 & MUT3_BAD_LUCK)
        {
                f1 -= 5;
                f2 -= 2;
@@ -3749,13 +3752,12 @@ void apply_magic(object_type *o_ptr, DEPTH lev, BIT_FLAGS mode)
        {
                /* Roll for an artifact */
                if (make_artifact(o_ptr)) break;
-               if ((p_ptr->muta3 & MUT3_GOOD_LUCK) && one_in_(77))
+               if ((owner_ptr->muta3 & MUT3_GOOD_LUCK) && one_in_(77))
                {
                        if (make_artifact(o_ptr)) break;
                }
        }
 
-
        /* Hack -- analyze artifacts */
        if (object_is_fixed_artifact(o_ptr))
        {
@@ -3766,7 +3768,7 @@ void apply_magic(object_type *o_ptr, DEPTH lev, BIT_FLAGS mode)
 
                /* Hack -- Memorize location of artifact in saved floors */
                if (current_world_ptr->character_dungeon)
-                       a_ptr->floor_id = p_ptr->floor_id;
+                       a_ptr->floor_id = owner_ptr->floor_id;
 
                /* Extract the other fields */
                o_ptr->pval = a_ptr->pval;
@@ -3781,7 +3783,7 @@ void apply_magic(object_type *o_ptr, DEPTH lev, BIT_FLAGS mode)
 
                if (o_ptr->name1 == ART_MILIM)
                {
-                       if (p_ptr->pseikaku == SEIKAKU_SEXY)
+                       if (owner_ptr->pseikaku == SEIKAKU_SEXY)
                        {
                                o_ptr->pval = 3;
                        }
@@ -3810,19 +3812,19 @@ void apply_magic(object_type *o_ptr, DEPTH lev, BIT_FLAGS mode)
        case TV_ARROW:
        case TV_BOLT:
        {
-               if (power) apply_magic_weapon(o_ptr, lev, power);
+               if (power) apply_magic_weapon(owner_ptr, o_ptr, lev, power);
                break;
        }
 
        case TV_POLEARM:
        {
-               if (power && !(o_ptr->sval == SV_DEATH_SCYTHE)) apply_magic_weapon(o_ptr, lev, power);
+               if (power && !(o_ptr->sval == SV_DEATH_SCYTHE)) apply_magic_weapon(owner_ptr, o_ptr, lev, power);
                break;
        }
 
        case TV_SWORD:
        {
-               if (power && !(o_ptr->sval == SV_DOKUBARI)) apply_magic_weapon(o_ptr, lev, power);
+               if (power && !(o_ptr->sval == SV_DOKUBARI)) apply_magic_weapon(owner_ptr, o_ptr, lev, power);
                break;
        }
 
@@ -3847,7 +3849,7 @@ void apply_magic(object_type *o_ptr, DEPTH lev, BIT_FLAGS mode)
                        ((o_ptr->tval == TV_SHIELD) && (o_ptr->sval == SV_DRAGON_SHIELD)) ||
                        ((o_ptr->tval == TV_GLOVES) && (o_ptr->sval == SV_SET_OF_DRAGON_GLOVES)) ||
                        ((o_ptr->tval == TV_BOOTS) && (o_ptr->sval == SV_PAIR_OF_DRAGON_GREAVE)))
-                       a_m_aux_2(o_ptr, lev, power);
+                       a_m_aux_2(owner_ptr, o_ptr, lev, power);
 #else
                if (power) a_m_aux_2(o_ptr, lev, power);
 #endif
@@ -3858,20 +3860,20 @@ void apply_magic(object_type *o_ptr, DEPTH lev, BIT_FLAGS mode)
        case TV_AMULET:
        {
                if (!power && (randint0(100) < 50)) power = -1;
-               a_m_aux_3(o_ptr, lev, power);
+               a_m_aux_3(owner_ptr, o_ptr, lev, power);
                break;
        }
 
        default:
        {
-               a_m_aux_4(o_ptr, lev, power);
+               a_m_aux_4(owner_ptr, o_ptr, lev, power);
                break;
        }
        }
 
        if ((o_ptr->tval == TV_SOFT_ARMOR) &&
                (o_ptr->sval == SV_ABUNAI_MIZUGI) &&
-               (p_ptr->pseikaku == SEIKAKU_SEXY))
+               (owner_ptr->pseikaku == SEIKAKU_SEXY))
        {
                o_ptr->pval = 3;
                add_flag(o_ptr->art_flags, TR_STR);
@@ -4112,7 +4114,7 @@ bool make_object(player_type *owner_ptr, object_type *j_ptr, BIT_FLAGS mode)
        }
 
        /* Apply magic (allow artifacts) */
-       apply_magic(j_ptr, floor_ptr->object_level, mode);
+       apply_magic(owner_ptr, j_ptr, floor_ptr->object_level, mode);
 
        /* Hack -- generate multiple spikes/missiles */
        switch (j_ptr->tval)
@@ -4127,7 +4129,7 @@ bool make_object(player_type *owner_ptr, object_type *j_ptr, BIT_FLAGS mode)
        }
        }
 
-       if (cheat_peek) object_mention(j_ptr);
+       if (cheat_peek) object_mention(owner_ptr, j_ptr);
 
        return TRUE;
 }
index 57b3868..f4897b1 100644 (file)
@@ -156,9 +156,9 @@ bool create_ammo(player_type *creature_ptr)
                        /* Hack -- Give the player some small firestones */
                        object_prep(q_ptr, lookup_kind(TV_SHOT, (OBJECT_SUBTYPE_VALUE)m_bonus(1, creature_ptr->lev) + 1));
                        q_ptr->number = (byte)rand_range(15, 30);
-                       object_aware(q_ptr);
+                       object_aware(creature_ptr, q_ptr);
                        object_known(q_ptr);
-                       apply_magic(q_ptr, creature_ptr->lev, AM_NO_FIXED_ART);
+                       apply_magic(creature_ptr, q_ptr, creature_ptr->lev, AM_NO_FIXED_ART);
                        q_ptr->discount = 99;
 
                        slot = inven_carry(creature_ptr, q_ptr);
@@ -194,9 +194,9 @@ bool create_ammo(player_type *creature_ptr)
                /* Hack -- Give the player some small firestones */
                object_prep(q_ptr, lookup_kind(TV_ARROW, (OBJECT_SUBTYPE_VALUE)m_bonus(1, creature_ptr->lev) + 1));
                q_ptr->number = (byte)rand_range(5, 10);
-               object_aware(q_ptr);
+               object_aware(creature_ptr, q_ptr);
                object_known(q_ptr);
-               apply_magic(q_ptr, creature_ptr->lev, AM_NO_FIXED_ART);
+               apply_magic(creature_ptr, q_ptr, creature_ptr->lev, AM_NO_FIXED_ART);
 
                q_ptr->discount = 99;
 
@@ -229,9 +229,9 @@ bool create_ammo(player_type *creature_ptr)
                /* Hack -- Give the player some small firestones */
                object_prep(q_ptr, lookup_kind(TV_BOLT, (OBJECT_SUBTYPE_VALUE)m_bonus(1, creature_ptr->lev) + 1));
                q_ptr->number = (byte)rand_range(4, 8);
-               object_aware(q_ptr);
+               object_aware(creature_ptr, q_ptr);
                object_known(q_ptr);
-               apply_magic(q_ptr, creature_ptr->lev, AM_NO_FIXED_ART);
+               apply_magic(creature_ptr, q_ptr, creature_ptr->lev, AM_NO_FIXED_ART);
 
                q_ptr->discount = 99;
 
@@ -245,6 +245,7 @@ bool create_ammo(player_type *creature_ptr)
                /* Auto-inscription */
                if (slot >= 0) autopick_alter_item(slot, FALSE);
        }
+
        return TRUE;
 }
 
@@ -390,7 +391,7 @@ void amusement(player_type *creature_ptr, POSITION y1, POSITION x1, int num, boo
                /* Make an object (if possible) */
                object_prep(i_ptr, k_idx);
                if (a_idx) i_ptr->name1 = a_idx;
-               apply_magic(i_ptr, 1, AM_NO_FIXED_ART);
+               apply_magic(creature_ptr, i_ptr, 1, AM_NO_FIXED_ART);
 
                if (amuse_info[i].flag & AMS_NO_UNIQUE)
                {
@@ -402,7 +403,7 @@ void amusement(player_type *creature_ptr, POSITION y1, POSITION x1, int num, boo
 
                if (known)
                {
-                       object_aware(i_ptr);
+                       object_aware(creature_ptr, i_ptr);
                        object_known(i_ptr);
                }
 
@@ -445,7 +446,7 @@ void acquirement(player_type *caster_ptr, POSITION y1, POSITION x1, int num, boo
 
                if (known)
                {
-                       object_aware(i_ptr);
+                       object_aware(caster_ptr, i_ptr);
                        object_known(i_ptr);
                }
 
index 3f20767..88ee57e 100644 (file)
@@ -1608,7 +1608,8 @@ bool artifact_scroll(player_type *caster_ptr)
                                floor_item_increase(0 - item, 1 - (o_ptr->number));
                        }
                }
-               okay = become_random_artifact(o_ptr, TRUE);
+               
+               okay = become_random_artifact(caster_ptr, o_ptr, TRUE);
        }
 
        if (!okay)
@@ -1654,7 +1655,7 @@ bool identify_item(player_type *owner_ptr, object_type *o_ptr)
                        chg_virtue(owner_ptr, V_KNOWLEDGE, 1);
        }
 
-       object_aware(o_ptr);
+       object_aware(owner_ptr, o_ptr);
        object_known(o_ptr);
        o_ptr->marked |= OM_TOUCHED;
 
index 6294140..14a2fa8 100644 (file)
@@ -3428,7 +3428,7 @@ static void store_create(player_type *player_ptr)
                object_prep(q_ptr, i);
 
                /* Apply some "low-level" magic (no artifacts) */
-               apply_magic(q_ptr, level, AM_NO_FIXED_ART);
+               apply_magic(player_ptr, q_ptr, level, AM_NO_FIXED_ART);
 
                /* Require valid object */
                if (!store_will_buy(q_ptr)) continue;
@@ -4726,7 +4726,7 @@ static void store_purchase(player_type *player_ptr)
                                store_prt_gold();
 
                                /* Hack -- buying an item makes you aware of it */
-                               object_aware(j_ptr);
+                               object_aware(player_ptr, j_ptr);
 
                                /* Hack -- clear the "fixed" flag from the item */
                                j_ptr->ident &= ~(IDENT_FIXED);
index b905199..e62fccd 100644 (file)
@@ -903,45 +903,45 @@ static void wiz_reroll_item(player_type *owner_ptr, object_type *o_ptr)
                case 'w': case 'W':
                {
                        object_prep(q_ptr, o_ptr->k_idx);
-                       apply_magic(q_ptr, owner_ptr->current_floor_ptr->dun_level, AM_NO_FIXED_ART | AM_GOOD | AM_GREAT | AM_CURSED);
+                       apply_magic(owner_ptr, q_ptr, owner_ptr->current_floor_ptr->dun_level, AM_NO_FIXED_ART | AM_GOOD | AM_GREAT | AM_CURSED);
                        break;
                }
                /* Apply bad magic, but first clear object */
                case 'c': case 'C':
                {
                        object_prep(q_ptr, o_ptr->k_idx);
-                       apply_magic(q_ptr, owner_ptr->current_floor_ptr->dun_level, AM_NO_FIXED_ART | AM_GOOD | AM_CURSED);
+                       apply_magic(owner_ptr, q_ptr, owner_ptr->current_floor_ptr->dun_level, AM_NO_FIXED_ART | AM_GOOD | AM_CURSED);
                        break;
                }
                /* Apply normal magic, but first clear object */
                case 'n': case 'N':
                {
                        object_prep(q_ptr, o_ptr->k_idx);
-                       apply_magic(q_ptr, owner_ptr->current_floor_ptr->dun_level, AM_NO_FIXED_ART);
+                       apply_magic(owner_ptr, q_ptr, owner_ptr->current_floor_ptr->dun_level, AM_NO_FIXED_ART);
                        break;
                }
                /* Apply good magic, but first clear object */
                case 'g': case 'G':
                {
                        object_prep(q_ptr, o_ptr->k_idx);
-                       apply_magic(q_ptr, owner_ptr->current_floor_ptr->dun_level, AM_NO_FIXED_ART | AM_GOOD);
+                       apply_magic(owner_ptr, q_ptr, owner_ptr->current_floor_ptr->dun_level, AM_NO_FIXED_ART | AM_GOOD);
                        break;
                }
                /* Apply great magic, but first clear object */
                case 'e': case 'E':
                {
                        object_prep(q_ptr, o_ptr->k_idx);
-                       apply_magic(q_ptr, owner_ptr->current_floor_ptr->dun_level, AM_NO_FIXED_ART | AM_GOOD | AM_GREAT);
+                       apply_magic(owner_ptr, q_ptr, owner_ptr->current_floor_ptr->dun_level, AM_NO_FIXED_ART | AM_GOOD | AM_GREAT);
                        break;
                }
                /* Apply special magic, but first clear object */
                case 's': case 'S':
                {
                        object_prep(q_ptr, o_ptr->k_idx);
-                       apply_magic(q_ptr, owner_ptr->current_floor_ptr->dun_level, AM_GOOD | AM_GREAT | AM_SPECIAL);
+                       apply_magic(owner_ptr, q_ptr, owner_ptr->current_floor_ptr->dun_level, AM_GOOD | AM_GREAT | AM_SPECIAL);
 
                        /* Failed to create artifact; make a random one */
-                       if (!object_is_artifact(q_ptr)) become_random_artifact(q_ptr, FALSE);
+                       if (!object_is_artifact(q_ptr)) become_random_artifact(owner_ptr, q_ptr, FALSE);
                        break;
                }
                }
@@ -1340,7 +1340,7 @@ static void wiz_create_item(player_type *caster_ptr)
        q_ptr = &forge;
        object_prep(q_ptr, k_idx);
 
-       apply_magic(q_ptr, caster_ptr->current_floor_ptr->dun_level, AM_NO_FIXED_ART);
+       apply_magic(caster_ptr, q_ptr, caster_ptr->current_floor_ptr->dun_level, AM_NO_FIXED_ART);
 
        /* Drop the object from heaven */
        (void)drop_near(caster_ptr, q_ptr, -1, caster_ptr->y, caster_ptr->x);
@@ -1444,9 +1444,10 @@ static void do_cmd_wiz_jump(player_type *creature_ptr)
 /*!
  * @brief 全ベースアイテムを鑑定済みにする /
  * Become aware of a lot of objects
+ * @param caster_ptr プレーヤーへの参照ポインタ
  * @return なし
  */
-static void do_cmd_wiz_learn(void)
+static void do_cmd_wiz_learn(player_type *caster_ptr)
 {
        /* Scan every object */
        object_type forge;
@@ -1460,7 +1461,7 @@ static void do_cmd_wiz_learn(void)
                {
                        q_ptr = &forge;
                        object_prep(q_ptr, i);
-                       object_aware(q_ptr);
+                       object_aware(caster_ptr, q_ptr);
                }
        }
 }
@@ -1469,6 +1470,7 @@ static void do_cmd_wiz_learn(void)
 /*!
  * @brief 現在のフロアに合ったモンスターをランダムに召喚する /
  * Summon some creatures
+ * @param caster_ptr プレーヤーへの参照ポインタ
  * @param num 生成処理回数
  * @return なし
  */
@@ -1828,7 +1830,7 @@ void do_cmd_debug(player_type *creature_ptr)
 
                /* Learn about objects */
        case 'l':
-               do_cmd_wiz_learn();
+               do_cmd_wiz_learn(creature_ptr);
                break;
 
                /* Magic Mapping */