OSDN Git Service

[Refactor] #38997 monster_race_track() と object_kind_track() にplayer_type * 引数を追加...
authorHourier <hourier@users.sourceforge.jp>
Sun, 12 Jan 2020 14:54:06 +0000 (23:54 +0900)
committerHourier <hourier@users.sourceforge.jp>
Sun, 12 Jan 2020 16:10:43 +0000 (01:10 +0900)
15 files changed:
src/bldg.c
src/cmd/cmd-basic.c
src/cmd/cmd-dump.c
src/cmd/cmd-item.c
src/cmd/cmd-spell.c
src/combat/melee1.c
src/combat/shoot.c
src/mind.c
src/monster-status.c
src/monster-status.h
src/player-move.c
src/spells1.c
src/targeting.c
src/view-mainwindow.c
src/view-mainwindow.h

index c36f16b..ae0730f 100644 (file)
@@ -3824,7 +3824,7 @@ static bool research_mon(player_type *player_ptr)
                                lore_do_probe(r_idx);
 
                                /* Save this monster ID */
-                               monster_race_track(r_idx);
+                               monster_race_track(player_ptr, r_idx);
                                handle_stuff(player_ptr);
 
                                /* know every thing mode */
index 8c86c22..080b0d5 100644 (file)
@@ -2588,7 +2588,7 @@ bool do_cmd_throw(player_type *creature_ptr, int mult, bool boomerang, OBJECT_ID
 
                                        if (m_ptr->ml)
                                        {
-                                               if (!creature_ptr->image) monster_race_track(m_ptr->ap_r_idx);
+                                               if (!creature_ptr->image) monster_race_track(creature_ptr, m_ptr->ap_r_idx);
                                                health_track(creature_ptr, g_ptr->m_idx);
                                        }
                                }
@@ -2635,7 +2635,7 @@ bool do_cmd_throw(player_type *creature_ptr, int mult, bool boomerang, OBJECT_ID
                                        tdam, m_ptr->hp - tdam, m_ptr->maxhp, m_ptr->max_maxhp);
 
                                /* Hit the monster, check for death */
-                               if (mon_take_hit(g_ptr->m_idx, tdam, &fear, extract_note_dies(real_r_idx(m_ptr))))
+                               if (mon_take_hit(creature_ptr, g_ptr->m_idx, tdam, &fear, extract_note_dies(real_r_idx(m_ptr))))
                                {
                                        /* Dead monster */
                                }
index 45126cb..578db2c 100644 (file)
@@ -5334,7 +5334,7 @@ static void do_cmd_knowledge_monsters(player_type *creature_ptr, bool *need_redr
                if (!visual_only)
                {
                        /* Mega Hack -- track this monster race */
-                       if (mon_cnt) monster_race_track(mon_idx[mon_cur]);
+                       if (mon_cnt) monster_race_track(creature_ptr, mon_idx[mon_cur]);
                        handle_stuff(creature_ptr);
                }
 
@@ -5708,7 +5708,7 @@ static void do_cmd_knowledge_objects(player_type *creature_ptr, bool *need_redra
                if (!visual_only)
                {
                        /* Mega Hack -- track this object */
-                       if (object_cnt) object_kind_track(object_idx[object_cur]);
+                       if (object_cnt) object_kind_track(creature_ptr, object_idx[object_cur]);
 
                        /* The "current" object changed */
                        if (object_old != object_idx[object_cur])
index 00870b9..39da131 100644 (file)
@@ -1373,7 +1373,7 @@ void do_cmd_query_symbol(player_type *creature_ptr)
                r_idx = who[i];
 
                /* Hack -- Auto-recall */
-               monster_race_track(r_idx);
+               monster_race_track(creature_ptr, r_idx);
                handle_stuff(creature_ptr);
 
                /* Interact */
index aafa5ae..2759fbb 100644 (file)
@@ -685,7 +685,7 @@ void do_cmd_browse(player_type *caster_ptr)
        use_realm = tval2realm(o_ptr->tval);
 
        /* Track the object kind */
-       object_kind_track(o_ptr->k_idx);
+       object_kind_track(caster_ptr, o_ptr->k_idx);
        handle_stuff(caster_ptr);
 
        /* Extract spells */
@@ -860,7 +860,7 @@ void do_cmd_study(player_type *caster_ptr)
        }
 
        /* Track the object kind */
-       object_kind_track(o_ptr->k_idx);
+       object_kind_track(caster_ptr, o_ptr->k_idx);
        handle_stuff(caster_ptr);
 
        /* Mage -- Learn a selected spell */
@@ -1113,7 +1113,7 @@ void do_cmd_cast(player_type *caster_ptr)
        if ((caster_ptr->pclass != CLASS_SORCERER) && (caster_ptr->pclass != CLASS_RED_MAGE) && (o_ptr->tval == REALM2_BOOK)) increment = 32;
 
        /* Track the object kind */
-       object_kind_track(o_ptr->k_idx);
+       object_kind_track(caster_ptr, o_ptr->k_idx);
        handle_stuff(caster_ptr);
 
        if ((caster_ptr->pclass == CLASS_SORCERER) || (caster_ptr->pclass == CLASS_RED_MAGE))
index 7741146..7657512 100644 (file)
@@ -1139,13 +1139,14 @@ static void touch_zap_player(monster_type *m_ptr, player_type *touched_ptr)
 
 /*!
 * @brief プレイヤーの変異要素による打撃処理
+* @param attacker_ptr プレーヤーへの参照ポインタ
 * @param m_idx 攻撃目標となったモンスターの参照ID
 * @param attack 変異要素による攻撃要素の種類
 * @param fear 攻撃を受けたモンスターが恐慌状態に陥ったかを返す参照ポインタ
 * @param mdeath 攻撃を受けたモンスターが死亡したかを返す参照ポインタ
 * @return なし
 */
-static void natural_attack(MONSTER_IDX m_idx, int attack, bool *fear, bool *mdeath)
+static void natural_attack(player_type *attacker_ptr, MONSTER_IDX m_idx, int attack, bool *fear, bool *mdeath)
 {
        HIT_POINT k;
        int bonus, chance;
@@ -1241,19 +1242,19 @@ static void natural_attack(MONSTER_IDX m_idx, int attack, bool *fear, bool *mdea
                        *mdeath = (m_ptr->r_idx == 0);
                        break;
                case MUT2_HORNS:
-                       *mdeath = mon_take_hit(m_idx, k, fear, NULL);
+                       *mdeath = mon_take_hit(attacker_ptr, m_idx, k, fear, NULL);
                        break;
                case MUT2_BEAK:
-                       *mdeath = mon_take_hit(m_idx, k, fear, NULL);
+                       *mdeath = mon_take_hit(attacker_ptr, m_idx, k, fear, NULL);
                        break;
                case MUT2_TRUNK:
-                       *mdeath = mon_take_hit(m_idx, k, fear, NULL);
+                       *mdeath = mon_take_hit(attacker_ptr, m_idx, k, fear, NULL);
                        break;
                case MUT2_TENTACLES:
-                       *mdeath = mon_take_hit(m_idx, k, fear, NULL);
+                       *mdeath = mon_take_hit(attacker_ptr, m_idx, k, fear, NULL);
                        break;
                default:
-                       *mdeath = mon_take_hit(m_idx, k, fear, NULL);
+                       *mdeath = mon_take_hit(attacker_ptr, m_idx, k, fear, NULL);
                }
 
                touch_zap_player(m_ptr, p_ptr);
@@ -1823,7 +1824,7 @@ static void py_attack_aux(player_type *attacker_ptr, POSITION y, POSITION x, boo
                                drain_result = m_ptr->hp;
 
                        /* Damage, check for fear and death */
-                       if (mon_take_hit(g_ptr->m_idx, k, fear, NULL))
+                       if (mon_take_hit(attacker_ptr, g_ptr->m_idx, k, fear, NULL))
                        {
                                *mdeath = TRUE;
                                if ((attacker_ptr->pclass == CLASS_BERSERKER) && attacker_ptr->energy_use)
@@ -2196,7 +2197,7 @@ bool py_attack(player_type *attacker_ptr, POSITION y, POSITION x, COMBAT_OPTION_
        if (m_ptr->ml)
        {
                /* Auto-Recall if possible and visible */
-               if (!attacker_ptr->image) monster_race_track(m_ptr->ap_r_idx);
+               if (!attacker_ptr->image) monster_race_track(attacker_ptr, m_ptr->ap_r_idx);
 
                health_track(attacker_ptr, g_ptr->m_idx);
        }
@@ -2323,15 +2324,15 @@ bool py_attack(player_type *attacker_ptr, POSITION y, POSITION x, COMBAT_OPTION_
        if (!mdeath)
        {
                if ((attacker_ptr->muta2 & MUT2_HORNS) && !mdeath)
-                       natural_attack(g_ptr->m_idx, MUT2_HORNS, &fear, &mdeath);
+                       natural_attack(attacker_ptr, g_ptr->m_idx, MUT2_HORNS, &fear, &mdeath);
                if ((attacker_ptr->muta2 & MUT2_BEAK) && !mdeath)
-                       natural_attack(g_ptr->m_idx, MUT2_BEAK, &fear, &mdeath);
+                       natural_attack(attacker_ptr, g_ptr->m_idx, MUT2_BEAK, &fear, &mdeath);
                if ((attacker_ptr->muta2 & MUT2_SCOR_TAIL) && !mdeath)
-                       natural_attack(g_ptr->m_idx, MUT2_SCOR_TAIL, &fear, &mdeath);
+                       natural_attack(attacker_ptr, g_ptr->m_idx, MUT2_SCOR_TAIL, &fear, &mdeath);
                if ((attacker_ptr->muta2 & MUT2_TRUNK) && !mdeath)
-                       natural_attack(g_ptr->m_idx, MUT2_TRUNK, &fear, &mdeath);
+                       natural_attack(attacker_ptr, g_ptr->m_idx, MUT2_TRUNK, &fear, &mdeath);
                if ((attacker_ptr->muta2 & MUT2_TENTACLES) && !mdeath)
-                       natural_attack(g_ptr->m_idx, MUT2_TENTACLES, &fear, &mdeath);
+                       natural_attack(attacker_ptr, g_ptr->m_idx, MUT2_TENTACLES, &fear, &mdeath);
        }
 
        /* Hack -- delay fear messages */
@@ -3733,7 +3734,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                        {
                                sound(SOUND_EXPLODE);
 
-                               if (mon_take_hit(m_idx, m_ptr->hp + 1, &fear, NULL))
+                               if (mon_take_hit(target_ptr, m_idx, m_ptr->hp + 1, &fear, NULL))
                                {
                                        blinked = FALSE;
                                        alive = FALSE;
@@ -3753,7 +3754,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
 
                                                msg_format(_("%^sは突然熱くなった!", "%^s is suddenly very hot!"), m_name);
 
-                                               if (mon_take_hit(m_idx, dam, &fear, _("は灰の山になった。", " turns into a pile of ash.")))
+                                               if (mon_take_hit(target_ptr, m_idx, dam, &fear, _("は灰の山になった。", " turns into a pile of ash.")))
                                                {
                                                        blinked = FALSE;
                                                        alive = FALSE;
@@ -3776,7 +3777,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                dam = mon_damage_mod(m_ptr, dam, FALSE);
 
                                                msg_format(_("%^sは電撃をくらった!", "%^s gets zapped!"), m_name);
-                                               if (mon_take_hit(m_idx, dam, &fear, _("は燃え殻の山になった。", " turns into a pile of cinder.")))
+                                               if (mon_take_hit(target_ptr, m_idx, dam, &fear, _("は燃え殻の山になった。", " turns into a pile of cinder.")))
                                                {
                                                        blinked = FALSE;
                                                        alive = FALSE;
@@ -3799,7 +3800,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                dam = mon_damage_mod(m_ptr, dam, FALSE);
 
                                                msg_format(_("%^sは冷気をくらった!", "%^s is very cold!"), m_name);
-                                               if (mon_take_hit(m_idx, dam, &fear, _("は凍りついた。", " was frozen.")))
+                                               if (mon_take_hit(target_ptr, m_idx, dam, &fear, _("は凍りついた。", " was frozen.")))
                                                {
                                                        blinked = FALSE;
                                                        alive = FALSE;
@@ -3823,7 +3824,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                dam = mon_damage_mod(m_ptr, dam, FALSE);
 
                                                msg_format(_("%^sは鏡の破片をくらった!", "%^s gets zapped!"), m_name);
-                                               if (mon_take_hit(m_idx, dam, &fear, _("はズタズタになった。", " had torn to pieces.")))
+                                               if (mon_take_hit(target_ptr, m_idx, dam, &fear, _("はズタズタになった。", " had torn to pieces.")))
                                                {
                                                        blinked = FALSE;
                                                        alive = FALSE;
@@ -3853,7 +3854,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                        dam = mon_damage_mod(m_ptr, dam, FALSE);
 
                                                        msg_format(_("%^sは聖なるオーラで傷ついた!", "%^s is injured by holy power!"), m_name);
-                                                       if (mon_take_hit(m_idx, dam, &fear, _("は倒れた。", " is destroyed.")))
+                                                       if (mon_take_hit(target_ptr, m_idx, dam, &fear, _("は倒れた。", " is destroyed.")))
                                                        {
                                                                blinked = FALSE;
                                                                alive = FALSE;
@@ -3879,7 +3880,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                dam = mon_damage_mod(m_ptr, dam, FALSE);
 
                                                msg_format(_("%^sが鋭い闘気のオーラで傷ついた!", "%^s is injured by the Force"), m_name);
-                                               if (mon_take_hit(m_idx, dam, &fear, _("は倒れた。", " is destroyed.")))
+                                               if (mon_take_hit(target_ptr, m_idx, dam, &fear, _("は倒れた。", " is destroyed.")))
                                                {
                                                        blinked = FALSE;
                                                        alive = FALSE;
@@ -3913,7 +3914,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                dam = mon_damage_mod(m_ptr, dam, FALSE);
 
                                                msg_format(_("影のオーラが%^sに反撃した!", "Enveloping shadows attack %^s."), m_name);
-                                               if (mon_take_hit(m_idx, dam, &fear, _("は倒れた。", " is destroyed.")))
+                                               if (mon_take_hit(target_ptr, m_idx, dam, &fear, _("は倒れた。", " is destroyed.")))
                                                {
                                                        blinked = FALSE;
                                                        alive = FALSE;
index 08eb16c..254af44 100644 (file)
@@ -672,7 +672,7 @@ void exe_fire(player_type *shooter_ptr, INVENTORY_IDX item, object_type *j_ptr,
 
                                                if (m_ptr->ml)
                                                {
-                                                       if (!shooter_ptr->image) monster_race_track(m_ptr->ap_r_idx);
+                                                       if (!shooter_ptr->image) monster_race_track(shooter_ptr, m_ptr->ap_r_idx);
                                                        health_track(shooter_ptr, c_mon_ptr->m_idx);
                                                }
                                        }
@@ -728,7 +728,7 @@ void exe_fire(player_type *shooter_ptr, INVENTORY_IDX item, object_type *j_ptr,
                                        }
 
                                        /* Hit the monster, check for death */
-                                       if (mon_take_hit(c_mon_ptr->m_idx, tdam, &fear, extract_note_dies(real_r_idx(m_ptr))))
+                                       if (mon_take_hit(shooter_ptr, c_mon_ptr->m_idx, tdam, &fear, extract_note_dies(real_r_idx(m_ptr))))
                                        {
                                                /* Dead monster */
                                        }
index 3fd5d29..2feec38 100644 (file)
@@ -1693,7 +1693,7 @@ static bool cast_ninja_spell(player_type *caster_ptr, int spell)
                if (m_ptr->ml)
                {
                        /* Auto-Recall if possible and visible */
-                       if (!caster_ptr->image) monster_race_track(m_ptr->ap_r_idx);
+                       if (!caster_ptr->image) monster_race_track(caster_ptr, m_ptr->ap_r_idx);
                        health_track(caster_ptr, m_idx);
                }
 
index c34c7e9..79269a1 100644 (file)
@@ -995,9 +995,9 @@ void monster_gain_exp(MONSTER_IDX m_idx, MONRACE_IDX s_idx)
  * to induce changes in the monster recall code.
  * </pre>
  */
-bool mon_take_hit(MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, concptr note)
+bool mon_take_hit(player_type *target_ptr, MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, concptr note)
 {
-       monster_type *m_ptr = &p_ptr->current_floor_ptr->m_list[m_idx];
+       monster_type *m_ptr = &target_ptr->current_floor_ptr->m_list[m_idx];
        monster_race *r_ptr = &r_info[m_ptr->r_idx];
        monster_type exp_mon;
 
@@ -1016,15 +1016,15 @@ bool mon_take_hit(MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, concptr note)
        if (!monster_is_valid(m_ptr)) m_idx = 0;
 
        /* Redraw (later) if needed */
-       if (p_ptr->health_who == m_idx) p_ptr->redraw |= (PR_HEALTH);
-       if (p_ptr->riding == m_idx) p_ptr->redraw |= (PR_UHEALTH);
+       if (target_ptr->health_who == m_idx) target_ptr->redraw |= (PR_HEALTH);
+       if (target_ptr->riding == m_idx) target_ptr->redraw |= (PR_UHEALTH);
 
        (void)set_monster_csleep(m_idx, 0);
 
        /* Hack - Cancel any special player stealth magics. -LM- */
-       if (p_ptr->special_defense & NINJA_S_STEALTH)
+       if (target_ptr->special_defense & NINJA_S_STEALTH)
        {
-               set_superstealth(p_ptr, FALSE);
+               set_superstealth(target_ptr, FALSE);
        }
 
        /* Genocided by chaos patron */
@@ -1096,7 +1096,7 @@ bool mon_take_hit(MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, concptr note)
                if (r_ptr->r_akills < MAX_SHORT) r_ptr->r_akills++;
 
                /* Recall even invisible uniques or winners */
-               if ((m_ptr->ml && !p_ptr->image) || (r_ptr->flags1 & RF1_UNIQUE))
+               if ((m_ptr->ml && !target_ptr->image) || (r_ptr->flags1 & RF1_UNIQUE))
                {
                        /* Count kills this life */
                        if ((m_ptr->mflag2 & MFLAG2_KAGE) && (r_info[MON_KAGE].r_pkills < MAX_SHORT)) r_info[MON_KAGE].r_pkills++;
@@ -1107,7 +1107,7 @@ bool mon_take_hit(MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, concptr note)
                        else if (r_ptr->r_tkills < MAX_SHORT) r_ptr->r_tkills++;
 
                        /* Hack -- Auto-recall */
-                       monster_race_track(m_ptr->ap_r_idx);
+                       monster_race_track(target_ptr, m_ptr->ap_r_idx);
                }
 
                monster_desc(m_name, m_ptr, MD_TRUE_NAME);
@@ -1124,7 +1124,7 @@ bool mon_take_hit(MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, concptr note)
 
                        do
                        {
-                               stop_ty = activate_ty_curse(p_ptr, stop_ty, &count);
+                               stop_ty = activate_ty_curse(target_ptr, stop_ty, &count);
                        } while (--curses);
                }
 
@@ -1139,86 +1139,86 @@ bool mon_take_hit(MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, concptr note)
 #ifdef WORLD_SCORE
                        if (m_ptr->r_idx == MON_SERPENT)
                        {
-                               screen_dump = make_screen_dump(p_ptr);
+                               screen_dump = make_screen_dump(target_ptr);
                        }
 #endif
                }
 
-               if (!(d_info[p_ptr->dungeon_idx].flags1 & DF1_BEGINNER))
+               if (!(d_info[target_ptr->dungeon_idx].flags1 & DF1_BEGINNER))
                {
-                       if (!p_ptr->current_floor_ptr->dun_level && !p_ptr->ambush_flag && !p_ptr->current_floor_ptr->inside_arena)
+                       if (!target_ptr->current_floor_ptr->dun_level && !target_ptr->ambush_flag && !target_ptr->current_floor_ptr->inside_arena)
                        {
-                               chg_virtue(p_ptr, V_VALOUR, -1);
+                               chg_virtue(target_ptr, V_VALOUR, -1);
                        }
-                       else if (r_ptr->level > p_ptr->current_floor_ptr->dun_level)
+                       else if (r_ptr->level > target_ptr->current_floor_ptr->dun_level)
                        {
-                               if (randint1(10) <= (r_ptr->level - p_ptr->current_floor_ptr->dun_level))
-                                       chg_virtue(p_ptr, V_VALOUR, 1);
+                               if (randint1(10) <= (r_ptr->level - target_ptr->current_floor_ptr->dun_level))
+                                       chg_virtue(target_ptr, V_VALOUR, 1);
                        }
                        if (r_ptr->level > 60)
                        {
-                               chg_virtue(p_ptr, V_VALOUR, 1);
+                               chg_virtue(target_ptr, V_VALOUR, 1);
                        }
-                       if (r_ptr->level >= 2 * (p_ptr->lev + 1))
-                               chg_virtue(p_ptr, V_VALOUR, 2);
+                       if (r_ptr->level >= 2 * (target_ptr->lev + 1))
+                               chg_virtue(target_ptr, V_VALOUR, 2);
                }
 
                if (r_ptr->flags1 & RF1_UNIQUE)
                {
-                       if (r_ptr->flags3 & (RF3_EVIL | RF3_GOOD)) chg_virtue(p_ptr, V_HARMONY, 2);
+                       if (r_ptr->flags3 & (RF3_EVIL | RF3_GOOD)) chg_virtue(target_ptr, V_HARMONY, 2);
 
                        if (r_ptr->flags3 & RF3_GOOD)
                        {
-                               chg_virtue(p_ptr, V_UNLIFE, 2);
-                               chg_virtue(p_ptr, V_VITALITY, -2);
+                               chg_virtue(target_ptr, V_UNLIFE, 2);
+                               chg_virtue(target_ptr, V_VITALITY, -2);
                        }
 
-                       if (one_in_(3)) chg_virtue(p_ptr, V_INDIVIDUALISM, -1);
+                       if (one_in_(3)) chg_virtue(target_ptr, V_INDIVIDUALISM, -1);
                }
 
                if (m_ptr->r_idx == MON_BEGGAR || m_ptr->r_idx == MON_LEPER)
                {
-                       chg_virtue(p_ptr, V_COMPASSION, -1);
+                       chg_virtue(target_ptr, V_COMPASSION, -1);
                }
 
-               if ((r_ptr->flags3 & RF3_GOOD) && ((r_ptr->level) / 10 + (3 * p_ptr->current_floor_ptr->dun_level) >= randint1(100)))
-                       chg_virtue(p_ptr, V_UNLIFE, 1);
+               if ((r_ptr->flags3 & RF3_GOOD) && ((r_ptr->level) / 10 + (3 * target_ptr->current_floor_ptr->dun_level) >= randint1(100)))
+                       chg_virtue(target_ptr, V_UNLIFE, 1);
 
                if (r_ptr->d_char == 'A')
                {
                        if (r_ptr->flags1 & RF1_UNIQUE)
-                               chg_virtue(p_ptr, V_FAITH, -2);
-                       else if ((r_ptr->level) / 10 + (3 * p_ptr->current_floor_ptr->dun_level) >= randint1(100))
+                               chg_virtue(target_ptr, V_FAITH, -2);
+                       else if ((r_ptr->level) / 10 + (3 * target_ptr->current_floor_ptr->dun_level) >= randint1(100))
                        {
-                               if (r_ptr->flags3 & RF3_GOOD) chg_virtue(p_ptr, V_FAITH, -1);
-                               else chg_virtue(p_ptr, V_FAITH, 1);
+                               if (r_ptr->flags3 & RF3_GOOD) chg_virtue(target_ptr, V_FAITH, -1);
+                               else chg_virtue(target_ptr, V_FAITH, 1);
                        }
                }
                else if (r_ptr->flags3 & RF3_DEMON)
                {
                        if (r_ptr->flags1 & RF1_UNIQUE)
-                               chg_virtue(p_ptr, V_FAITH, 2);
-                       else if ((r_ptr->level) / 10 + (3 * p_ptr->current_floor_ptr->dun_level) >= randint1(100))
-                               chg_virtue(p_ptr, V_FAITH, 1);
+                               chg_virtue(target_ptr, V_FAITH, 2);
+                       else if ((r_ptr->level) / 10 + (3 * target_ptr->current_floor_ptr->dun_level) >= randint1(100))
+                               chg_virtue(target_ptr, V_FAITH, 1);
                }
 
                if ((r_ptr->flags3 & RF3_UNDEAD) && (r_ptr->flags1 & RF1_UNIQUE))
-                       chg_virtue(p_ptr, V_VITALITY, 2);
+                       chg_virtue(target_ptr, V_VITALITY, 2);
 
                if (r_ptr->r_deaths)
                {
                        if (r_ptr->flags1 & RF1_UNIQUE)
                        {
-                               chg_virtue(p_ptr, V_HONOUR, 10);
+                               chg_virtue(target_ptr, V_HONOUR, 10);
                        }
-                       else if ((r_ptr->level) / 10 + (2 * p_ptr->current_floor_ptr->dun_level) >= randint1(100))
+                       else if ((r_ptr->level) / 10 + (2 * target_ptr->current_floor_ptr->dun_level) >= randint1(100))
                        {
-                               chg_virtue(p_ptr, V_HONOUR, 1);
+                               chg_virtue(target_ptr, V_HONOUR, 1);
                        }
                }
                if ((r_ptr->flags2 & RF2_MULTIPLY) && (r_ptr->r_akills > 1000) && one_in_(10))
                {
-                       chg_virtue(p_ptr, V_VALOUR, -1);
+                       chg_virtue(target_ptr, V_VALOUR, -1);
                }
 
                for (i = 0; i < 4; i++)
@@ -1237,25 +1237,25 @@ bool mon_take_hit(MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, concptr note)
                if (thief)
                {
                        if (r_ptr->flags1 & RF1_UNIQUE)
-                               chg_virtue(p_ptr, V_JUSTICE, 3);
-                       else if (1 + ((r_ptr->level) / 10 + (2 * p_ptr->current_floor_ptr->dun_level)) >= randint1(100))
-                               chg_virtue(p_ptr, V_JUSTICE, 1);
+                               chg_virtue(target_ptr, V_JUSTICE, 3);
+                       else if (1 + ((r_ptr->level) / 10 + (2 * target_ptr->current_floor_ptr->dun_level)) >= randint1(100))
+                               chg_virtue(target_ptr, V_JUSTICE, 1);
                }
                else if (innocent)
                {
-                       chg_virtue(p_ptr, V_JUSTICE, -1);
+                       chg_virtue(target_ptr, V_JUSTICE, -1);
                }
 
                if ((r_ptr->flags3 & RF3_ANIMAL) && !(r_ptr->flags3 & RF3_EVIL) && !(r_ptr->flags4 & ~(RF4_NOMAGIC_MASK)) && !(r_ptr->a_ability_flags1 & ~(RF5_NOMAGIC_MASK)) && !(r_ptr->a_ability_flags2 & ~(RF6_NOMAGIC_MASK)))
                {
-                       if (one_in_(4)) chg_virtue(p_ptr, V_NATURE, -1);
+                       if (one_in_(4)) chg_virtue(target_ptr, V_NATURE, -1);
                }
 
                if ((r_ptr->flags1 & RF1_UNIQUE) && record_destroy_uniq)
                {
                        char note_buf[160];
                        sprintf(note_buf, "%s%s", r_name + r_ptr->name, (m_ptr->smart & SM_CLONED) ? _("(クローン)", "(Clone)") : "");
-                       exe_write_diary(p_ptr, NIKKI_UNIQUE, 0, note_buf);
+                       exe_write_diary(target_ptr, NIKKI_UNIQUE, 0, note_buf);
                }
 
                /* Make a sound */
@@ -1271,7 +1271,7 @@ bool mon_take_hit(MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, concptr note)
                else if (!m_ptr->ml)
                {
 #ifdef JP
-                       if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (p_ptr->inventory_list[INVEN_BOW].name1 == ART_CRIMSON))
+                       if ((target_ptr->pseikaku == SEIKAKU_COMBAT) || (target_ptr->inventory_list[INVEN_BOW].name1 == ART_CRIMSON))
                                msg_format("せっかくだから%sを殺した。", m_name);
                        else
                                msg_format("%sを殺した。", m_name);
@@ -1297,7 +1297,7 @@ bool mon_take_hit(MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, concptr note)
                        else
                        {
 #ifdef JP
-                               if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (p_ptr->inventory_list[INVEN_BOW].name1 == ART_CRIMSON))
+                               if ((target_ptr->pseikaku == SEIKAKU_COMBAT) || (target_ptr->inventory_list[INVEN_BOW].name1 == ART_CRIMSON))
                                        msg_format("せっかくだから%sを倒した。", m_name);
                                else
                                        msg_format("%sを倒した。", m_name);
@@ -1311,7 +1311,7 @@ bool mon_take_hit(MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, concptr note)
                else
                {
 #ifdef JP
-                       if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (p_ptr->inventory_list[INVEN_BOW].name1 == ART_CRIMSON))
+                       if ((target_ptr->pseikaku == SEIKAKU_COMBAT) || (target_ptr->inventory_list[INVEN_BOW].name1 == ART_CRIMSON))
                                msg_format("せっかくだから%sを葬り去った。", m_name);
                        else
                                msg_format("%sを葬り去った。", m_name);
@@ -1336,7 +1336,7 @@ bool mon_take_hit(MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, concptr note)
                monster_death(m_idx, TRUE);
 
                /* Mega hack : replace IKETA to BIKETAL */
-               if ((m_ptr->r_idx == MON_IKETA) && !(p_ptr->current_floor_ptr->inside_arena || p_ptr->phase_out))
+               if ((m_ptr->r_idx == MON_IKETA) && !(target_ptr->current_floor_ptr->inside_arena || target_ptr->phase_out))
                {
                        POSITION dummy_y = m_ptr->fy;
                        POSITION dummy_x = m_ptr->fx;
index 7434b91..2c7a8f5 100644 (file)
@@ -4,7 +4,7 @@ extern bool monster_is_powerful(MONSTER_IDX m_idx);
 extern DEPTH monster_level_idx(MONSTER_IDX m_idx);
 
 extern HIT_POINT mon_damage_mod(monster_type *m_ptr, HIT_POINT dam, bool is_psy_spear);
-extern bool mon_take_hit(MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, concptr note);
+extern bool mon_take_hit(player_type *target_ptr, MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, concptr note);
 extern int get_mproc_idx(MONSTER_IDX m_idx, int mproc_type);
 extern bool monster_is_valid(monster_type *m_ptr);
 
index b1f9cb8..bf4a311 100644 (file)
@@ -999,7 +999,7 @@ void move_player(player_type *creature_ptr, DIRECTION dir, bool do_pickup, bool
                        if (m_ptr->ml)
                        {
                                /* Auto-Recall if possible and visible */
-                               if (!creature_ptr->image) monster_race_track(m_ptr->ap_r_idx);
+                               if (!creature_ptr->image) monster_race_track(creature_ptr, m_ptr->ap_r_idx);
                                health_track(creature_ptr, g_ptr->m_idx);
                        }
 
index 60b239e..cc0e1e6 100644 (file)
@@ -3864,7 +3864,7 @@ static bool project_m(player_type *caster_ptr, floor_type *floor_ptr, MONSTER_ID
                bool fear = FALSE;
 
                /* Hurt the monster, check for fear and death */
-               if (mon_take_hit(g_ptr->m_idx, dam, &fear, note_dies))
+               if (mon_take_hit(caster_ptr, g_ptr->m_idx, dam, &fear, note_dies))
                {
                        /* Dead monster */
                }
@@ -5812,7 +5812,7 @@ bool project(player_type *caster_ptr, MONSTER_IDX who, POSITION rad, POSITION y,
 
                                                        if (m_ptr->ml)
                                                        {
-                                                               if (!caster_ptr->image) monster_race_track(m_ptr->ap_r_idx);
+                                                               if (!caster_ptr->image) monster_race_track(caster_ptr, m_ptr->ap_r_idx);
                                                                health_track(caster_ptr, caster_ptr->current_floor_ptr->grid_array[project_m_y][project_m_x].m_idx);
                                                        }
                                                }
@@ -5839,7 +5839,7 @@ bool project(player_type *caster_ptr, MONSTER_IDX who, POSITION rad, POSITION y,
 
                                        if (m_ptr->ml)
                                        {
-                                               if (!caster_ptr->image) monster_race_track(m_ptr->ap_r_idx);
+                                               if (!caster_ptr->image) monster_race_track(caster_ptr, m_ptr->ap_r_idx);
                                                health_track(caster_ptr, caster_ptr->current_floor_ptr->grid_array[project_m_y][project_m_x].m_idx);
                                        }
                                }
@@ -5973,7 +5973,7 @@ bool project(player_type *caster_ptr, MONSTER_IDX who, POSITION rad, POSITION y,
 
                                        if (m_ptr->ml)
                                        {
-                                               if (!caster_ptr->image) monster_race_track(m_ptr->ap_r_idx);
+                                               if (!caster_ptr->image) monster_race_track(caster_ptr, m_ptr->ap_r_idx);
                                                health_track(caster_ptr, caster_ptr->current_floor_ptr->grid_array[project_m_y][project_m_x].m_idx);
                                        }
                                }
@@ -6493,7 +6493,7 @@ bool project(player_type *caster_ptr, MONSTER_IDX who, POSITION rad, POSITION y,
 
                                if (m_ptr->ml)
                                {
-                                       if (!caster_ptr->image) monster_race_track(m_ptr->ap_r_idx);
+                                       if (!caster_ptr->image) monster_race_track(caster_ptr, m_ptr->ap_r_idx);
                                        health_track(caster_ptr, caster_ptr->current_floor_ptr->grid_array[y][x].m_idx);
                                }
                        }
index eb1a5c3..b9a496f 100644 (file)
@@ -605,7 +605,7 @@ static char target_set_aux(player_type *subject_ptr, POSITION y, POSITION x, BIT
                boring = FALSE;
 
                monster_desc(m_name, m_ptr, MD_INDEF_VISIBLE);
-               monster_race_track(m_ptr->ap_r_idx);
+               monster_race_track(subject_ptr, m_ptr->ap_r_idx);
                health_track(subject_ptr, g_ptr->m_idx);
                handle_stuff(subject_ptr);
 
index d63ade5..547d3b1 100644 (file)
@@ -3887,22 +3887,19 @@ void print_path(player_type *player_ptr, POSITION y, POSITION x)
 /*
  * Hack -- track the given monster race
  */
-void monster_race_track(MONRACE_IDX r_idx)
+void monster_race_track(player_type *player_ptr, MONRACE_IDX r_idx)
 {
-       /* Save this monster ID */
        p_ptr->monster_race_idx = r_idx;
-
        p_ptr->window |= (PW_MONSTER);
 }
 
+
 /*
  * Hack -- track the given object kind
  */
-void object_kind_track(KIND_OBJECT_IDX k_idx)
+void object_kind_track(player_type *player_ptr, KIND_OBJECT_IDX k_idx)
 {
-       /* Save this monster ID */
        p_ptr->object_kind_idx = k_idx;
-
        p_ptr->window |= (PW_OBJECT);
 }
 
index 5622b1a..8bf80e4 100644 (file)
@@ -13,8 +13,8 @@ extern concptr map_name(player_type *creature_ptr);
 extern void print_monster_list(floor_type *floor_ptr, TERM_LEN x, TERM_LEN y, TERM_LEN max_lines);
 extern void move_cursor_relative(int row, int col);
 extern void print_path(player_type *player_ptr, POSITION y, POSITION x);
-extern void monster_race_track(MONRACE_IDX r_idx);
-extern void object_kind_track(KIND_OBJECT_IDX k_idx);
+extern void monster_race_track(player_type *player_ptr, MONRACE_IDX r_idx);
+extern void object_kind_track(player_type *player_ptr, KIND_OBJECT_IDX k_idx);
 extern void resize_map(void);
 extern void redraw_window(void);
 extern bool change_panel(player_type *player_ptr, POSITION dy, POSITION dx);