From 1e4a799fb3e05547a5c0e1930dd6cb62c1de5e9b Mon Sep 17 00:00:00 2001 From: Hourier Date: Fri, 10 Jan 2020 22:38:57 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#38997=20object=5Faware()=E3=80=81o?= =?utf8?q?bject=5Fmention()=E3=80=81apply=5Fmagic=5Fweapon()=20=E3=81=ABpl?= =?utf8?q?ayer=5Ftype=20*=E5=BC=95=E6=95=B0=E3=82=92=E8=BF=BD=E5=8A=A0=20/?= =?utf8?q?=20Added=20player=5Ftype=20*argument=20to=20object=5Faware(),=20?= =?utf8?q?object=5Fmention()=20and=20apply=5Fmagic=5Fweapon()?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/artifact.c | 13 +++--- src/artifact.h | 2 +- src/birth.c | 4 +- src/bldg.c | 53 +++++++++++------------ src/cmd/cmd-eat.c | 2 +- src/cmd/cmd-quaff.c | 2 +- src/cmd/cmd-read.c | 2 +- src/cmd/cmd-smith.c | 2 +- src/cmd/cmd-usestaff.c | 2 +- src/cmd/cmd-zaprod.c | 2 +- src/cmd/cmd-zapwand.c | 2 +- src/dungeon-file.c | 2 +- src/files.c | 4 +- src/monster1.c | 50 +++++++++++----------- src/object-boost.h | 5 +-- src/object.h | 4 +- src/object2.c | 112 +++++++++++++++++++++++++------------------------ src/spells-object.c | 19 +++++---- src/spells3.c | 5 ++- src/store.c | 4 +- src/wizard2.c | 24 ++++++----- 21 files changed, 161 insertions(+), 154 deletions(-) diff --git a/src/artifact.c b/src/artifact.c index 6d69e6be9..f5cc077db 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -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; } diff --git a/src/artifact.h b/src/artifact.h index 6114b7f0a..c9d4cccbd 100644 --- a/src/artifact.h +++ b/src/artifact.h @@ -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); diff --git a/src/birth.c b/src/birth.c index 98ed0a7de..4b54a0471 100644 --- a/src/birth.c +++ b/src/birth.c @@ -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); diff --git a/src/bldg.c b/src/bldg.c index 74c67c9a9..7d5104225 100644 --- a/src/bldg.c +++ b/src/bldg.c @@ -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: diff --git a/src/cmd/cmd-eat.c b/src/cmd/cmd-eat.c index 7287e265b..89f455db1 100644 --- a/src/cmd/cmd-eat.c +++ b/src/cmd/cmd-eat.c @@ -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); } diff --git a/src/cmd/cmd-quaff.c b/src/cmd/cmd-quaff.c index b73ce99eb..e6a40bd29 100644 --- a/src/cmd/cmd-quaff.c +++ b/src/cmd/cmd-quaff.c @@ -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); } diff --git a/src/cmd/cmd-read.c b/src/cmd/cmd-read.c index ee7ac5f72..fadfbd345 100644 --- a/src/cmd/cmd-read.c +++ b/src/cmd/cmd-read.c @@ -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); } diff --git a/src/cmd/cmd-smith.c b/src/cmd/cmd-smith.c index 40b900121..6eb2c7709 100644 --- a/src/cmd/cmd-smith.c +++ b/src/cmd/cmd-smith.c @@ -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); diff --git a/src/cmd/cmd-usestaff.c b/src/cmd/cmd-usestaff.c index f1797ba63..8cfd02324 100644 --- a/src/cmd/cmd-usestaff.c +++ b/src/cmd/cmd-usestaff.c @@ -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); } diff --git a/src/cmd/cmd-zaprod.c b/src/cmd/cmd-zaprod.c index 404548f37..fe238b91a 100644 --- a/src/cmd/cmd-zaprod.c +++ b/src/cmd/cmd-zaprod.c @@ -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); } diff --git a/src/cmd/cmd-zapwand.c b/src/cmd/cmd-zapwand.c index d4caf7ca2..4d8946bdf 100644 --- a/src/cmd/cmd-zapwand.c +++ b/src/cmd/cmd-zapwand.c @@ -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); } diff --git a/src/dungeon-file.c b/src/dungeon-file.c index f27f575a7..3557a2c27 100644 --- a/src/dungeon-file.c +++ b/src/dungeon-file.c @@ -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); } diff --git a/src/files.c b/src/files.c index f0ddc98c9..475a703b0 100644 --- a/src/files.c +++ b/src/files.c @@ -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); } } diff --git a/src/monster1.c b/src/monster1.c index ba6b0f64f..30cb4b6f7 100644 --- a/src/monster1.c +++ b/src/monster1.c @@ -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; diff --git a/src/object-boost.h b/src/object-boost.h index 60507fc8b..9c35de96a 100644 --- a/src/object-boost.h +++ b/src/object-boost.h @@ -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); diff --git a/src/object.h b/src/object.h index 70dd2957a..bf83e7e4e 100644 --- a/src/object.h +++ b/src/object.h @@ -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; diff --git a/src/object2.c b/src/object2.c index 3001ca572..63047ce30 100644 --- a/src/object2.c +++ b/src/object2.c @@ -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; } diff --git a/src/spells-object.c b/src/spells-object.c index 57b386807..f4897b1ec 100644 --- a/src/spells-object.c +++ b/src/spells-object.c @@ -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); } diff --git a/src/spells3.c b/src/spells3.c index 3f2076773..88ee57e88 100644 --- a/src/spells3.c +++ b/src/spells3.c @@ -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; diff --git a/src/store.c b/src/store.c index 6294140a0..14a2fa8e5 100644 --- a/src/store.c +++ b/src/store.c @@ -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); diff --git a/src/wizard2.c b/src/wizard2.c index b90519972..e62fccd2a 100644 --- a/src/wizard2.c +++ b/src/wizard2.c @@ -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 */ -- 2.11.0