OSDN Git Service

[Fix] #39587 misc_english_usage_patch.txt に従い英文校正 / Proofreading English in complianc...
[hengband/hengband.git] / src / combat / melee1.c
index f5faccb..ed39c6a 100644 (file)
@@ -427,7 +427,7 @@ const byte adj_dex_blow[] =
  * @brief
  * 腕力、器用さに応じた攻撃回数テーブル /
  * This table is used to help calculate the number of blows the player can
- * make in a single round of attacks (one player current_world_ptr->game_turn) with a normal weapon.
+ * make in a single round of attacks (one player turn) with a normal weapon.
  * @details
  * <pre>
  * This number ranges from a single blow/round for weak players to up to six
@@ -911,15 +911,15 @@ HIT_POINT tot_dam_aux(player_type *attacker_ptr, object_type *o_ptr, HIT_POINT t
 * @param mode オプションフラグ
 * @return クリティカル修正が入ったダメージ値
 */
-HIT_POINT critical_norm(WEIGHT weight, int plus, HIT_POINT dam, s16b meichuu, BIT_FLAGS mode)
+HIT_POINT critical_norm(player_type *attacker_ptr, WEIGHT weight, int plus, HIT_POINT dam, s16b meichuu, BIT_FLAGS mode)
 {
        int i, k;
 
        /* Extract "blow" power */
-       i = (weight + (meichuu * 3 + plus * 5) + p_ptr->skill_thn);
+       i = (weight + (meichuu * 3 + plus * 5) + attacker_ptr->skill_thn);
 
        /* Chance */
-       if ((randint1((p_ptr->pclass == CLASS_NINJA) ? 4444 : 5000) <= i) || (mode == HISSATSU_MAJIN) || (mode == HISSATSU_3DAN))
+       if ((randint1((attacker_ptr->pclass == CLASS_NINJA) ? 4444 : 5000) <= i) || (mode == HISSATSU_MAJIN) || (mode == HISSATSU_3DAN))
        {
                k = weight + randint1(650);
                if ((mode == HISSATSU_MAJIN) || (mode == HISSATSU_3DAN)) k += randint1(650);
@@ -1005,7 +1005,7 @@ static int monster_critical(DICE_NUMBER dice, DICE_SID sides, HIT_POINT dam)
  * Always miss 5% of the time, Always hit 5% of the time.
  * Otherwise, match monster power against player armor.
  */
-static int check_hit(int power, DEPTH level, int stun)
+static int check_hit(player_type *target_ptr, int power, DEPTH level, int stun)
 {
        int i, k, ac;
 
@@ -1014,8 +1014,8 @@ static int check_hit(int power, DEPTH level, int stun)
        if (k < 10) return (k < 5);
        i = (power + (level * 3));
 
-       ac = p_ptr->ac + p_ptr->to_a;
-       if (p_ptr->special_attack & ATTACK_SUIKEN) ac += (p_ptr->lev * 2);
+       ac = target_ptr->ac + target_ptr->to_a;
+       if (target_ptr->special_attack & ATTACK_SUIKEN) ac += (target_ptr->lev * 2);
 
        if ((i > 0) && (randint1(i) > ((ac * 3) / 4))) return (TRUE);
        return (FALSE);
@@ -1099,41 +1099,41 @@ static concptr desc_moan[] =
 * @param message オーラダメージを受けた際のメッセージ
 * @return なし
 */
-static void touch_zap_player_aux(monster_type *m_ptr, bool immune, int flags_offset, int r_flags_offset, u32b aura_flag,
-       HIT_POINT(*dam_func)(HIT_POINT dam, concptr kb_str, int monspell, bool aura), concptr message)
+static void touch_zap_player_aux(monster_type *m_ptr, player_type *touched_ptr, bool immune, int flags_offset, int r_flags_offset, u32b aura_flag,
+       HIT_POINT(*dam_func)(player_type *creature_type, HIT_POINT dam, concptr kb_str, int monspell, bool aura), concptr message)
 {
        monster_race *r_ptr = &r_info[m_ptr->r_idx];
 
-       if ((atoffset(BIT_FLAGS, r_ptr, flags_offset) & aura_flag) && !immune)
-       {
-               GAME_TEXT mon_name[MAX_NLEN];
-               int aura_damage = damroll(1 + (r_ptr->level / 26), 1 + (r_ptr->level / 17));
+       if (!(atoffset(BIT_FLAGS, r_ptr, flags_offset) & aura_flag) || immune) return;
+       
+       GAME_TEXT mon_name[MAX_NLEN];
+       int aura_damage = damroll(1 + (r_ptr->level / 26), 1 + (r_ptr->level / 17));
 
-               monster_desc(mon_name, m_ptr, MD_WRONGDOER_NAME);
-               msg_print(message);
-               dam_func(aura_damage, mon_name, -1, TRUE);
+       monster_desc(mon_name, m_ptr, MD_WRONGDOER_NAME);
+       msg_print(message);
+       dam_func(touched_ptr, aura_damage, mon_name, -1, TRUE);
 
-               if (is_original_ap_and_seen(m_ptr))
-               {
-                       atoffset(BIT_FLAGS, r_ptr, r_flags_offset) |= aura_flag;
-               }
-
-               handle_stuff();
+       if (is_original_ap_and_seen(m_ptr))
+       {
+               atoffset(BIT_FLAGS, r_ptr, r_flags_offset) |= aura_flag;
        }
+
+       handle_stuff(touched_ptr);
 }
 
 /*!
 * @brief 敵オーラによるプレイヤーのダメージ処理(メイン)
 * @param m_ptr オーラを持つモンスターの構造体参照ポインタ
+* @param touched_ptr オーラを持つ相手に振れたクリーチャーの参照ポインタ
 * @return なし
 */
-static void touch_zap_player(monster_type *m_ptr)
+static void touch_zap_player(monster_type *m_ptr, player_type *touched_ptr)
 {
-       touch_zap_player_aux(m_ptr, p_ptr->immune_fire, offsetof(monster_race, flags2), offsetof(monster_race, r_flags2), RF2_AURA_FIRE,
+       touch_zap_player_aux(m_ptr, touched_ptr, touched_ptr->immune_fire, offsetof(monster_race, flags2), offsetof(monster_race, r_flags2), RF2_AURA_FIRE,
                fire_dam, _("突然とても熱くなった!", "You are suddenly very hot!"));
-       touch_zap_player_aux(m_ptr, p_ptr->immune_cold, offsetof(monster_race, flags3), offsetof(monster_race, r_flags3), RF3_AURA_COLD,
+       touch_zap_player_aux(m_ptr, touched_ptr, touched_ptr->immune_cold, offsetof(monster_race, flags3), offsetof(monster_race, r_flags3), RF3_AURA_COLD,
                cold_dam, _("突然とても寒くなった!", "You are suddenly very cold!"));
-       touch_zap_player_aux(m_ptr, p_ptr->immune_elec, offsetof(monster_race, flags2), offsetof(monster_race, r_flags2), RF2_AURA_ELEC,
+       touch_zap_player_aux(m_ptr, touched_ptr, touched_ptr->immune_elec, offsetof(monster_race, flags2), offsetof(monster_race, r_flags2), RF2_AURA_ELEC,
                elec_dam, _("電撃をくらった!", "You get zapped!"));
 }
 
@@ -1150,7 +1150,7 @@ static void natural_attack(MONSTER_IDX m_idx, int attack, bool *fear, bool *mdea
        HIT_POINT k;
        int bonus, chance;
        WEIGHT n_weight = 0;
-       monster_type *m_ptr = &current_floor_ptr->m_list[m_idx];
+       monster_type *m_ptr = &p_ptr->current_floor_ptr->m_list[m_idx];
        monster_race *r_ptr = &r_info[m_ptr->r_idx];
        GAME_TEXT m_name[MAX_NLEN];
 
@@ -1214,7 +1214,7 @@ static void natural_attack(MONSTER_IDX m_idx, int attack, bool *fear, bool *mdea
                msg_format(_("%sを%sで攻撃した。", "You hit %s with your %s."), m_name, atk_desc);
 
                k = damroll(dice_num, dice_side);
-               k = critical_norm(n_weight, bonus, k, (s16b)bonus, 0);
+               k = critical_norm(p_ptr, n_weight, bonus, k, (s16b)bonus, 0);
 
                /* Apply the player damage bonuses */
                k += p_ptr->to_d_m;
@@ -1237,7 +1237,7 @@ static void natural_attack(MONSTER_IDX m_idx, int attack, bool *fear, bool *mdea
                switch (attack)
                {
                case MUT2_SCOR_TAIL:
-                       project(0, 0, m_ptr->fy, m_ptr->fx, k, GF_POIS, PROJECT_KILL, -1);
+                       project(p_ptr, 0, 0, m_ptr->fy, m_ptr->fx, k, GF_POIS, PROJECT_KILL, -1);
                        *mdeath = (m_ptr->r_idx == 0);
                        break;
                case MUT2_HORNS:
@@ -1256,7 +1256,7 @@ static void natural_attack(MONSTER_IDX m_idx, int attack, bool *fear, bool *mdea
                        *mdeath = mon_take_hit(m_idx, k, fear, NULL);
                }
 
-               touch_zap_player(m_ptr);
+               touch_zap_player(m_ptr, p_ptr);
        }
        /* Player misses */
        else
@@ -1284,9 +1284,10 @@ static void py_attack_aux(player_type *attacker_ptr, POSITION y, POSITION x, boo
        int num = 0, bonus, chance, vir;
        HIT_POINT k;
 
-       grid_type       *g_ptr = &current_floor_ptr->grid_array[y][x];
+       floor_type *floor_ptr = attacker_ptr->current_floor_ptr;
+       grid_type       *g_ptr = &floor_ptr->grid_array[y][x];
 
-       monster_type    *m_ptr = &current_floor_ptr->m_list[g_ptr->m_idx];
+       monster_type    *m_ptr = &floor_ptr->m_list[g_ptr->m_idx];
        monster_race    *r_ptr = &r_info[m_ptr->r_idx];
 
        /* Access the weapon */
@@ -1598,7 +1599,7 @@ static void py_attack_aux(player_type *attacker_ptr, POSITION y, POSITION x, boo
                                        if (weight > 20) weight = 20;
                                }
 
-                               k = critical_norm(attacker_ptr->lev * weight, min_level, k, attacker_ptr->to_h[0], 0);
+                               k = critical_norm(attacker_ptr, attacker_ptr->lev * weight, min_level, k, attacker_ptr->to_h[0], 0);
 
                                if ((special_effect == MA_KNEE) && ((k + attacker_ptr->to_d[hand]) < m_ptr->hp))
                                {
@@ -1660,7 +1661,7 @@ static void py_attack_aux(player_type *attacker_ptr, POSITION y, POSITION x, boo
                                }
 
                                if ((!(o_ptr->tval == TV_SWORD) || !(o_ptr->sval == SV_DOKUBARI)) && !(mode == HISSATSU_KYUSHO))
-                                       k = critical_norm(o_ptr->weight, o_ptr->to_h, k, attacker_ptr->to_h[hand], mode);
+                                       k = critical_norm(attacker_ptr, o_ptr->weight, o_ptr->to_h, k, attacker_ptr->to_h[hand], mode);
 
                                drain_result = k;
 
@@ -1845,7 +1846,7 @@ static void py_attack_aux(player_type *attacker_ptr, POSITION y, POSITION x, boo
                        /* Anger the monster */
                        if (k > 0) anger_monster(m_ptr);
 
-                       touch_zap_player(m_ptr);
+                       touch_zap_player(m_ptr, attacker_ptr);
 
                        /* Are we draining it?  A little note: If the monster is
                        dead, the drain does not work... */
@@ -1975,7 +1976,7 @@ static void py_attack_aux(player_type *attacker_ptr, POSITION y, POSITION x, boo
                                if (!resists_tele)
                                {
                                        msg_format(_("%^sは消えた!", "%^s disappears!"), m_name);
-                                       teleport_away(g_ptr->m_idx, 50, TELEPORT_PASSIVE);
+                                       teleport_away(attacker_ptr, g_ptr->m_idx, 50, TELEPORT_PASSIVE);
                                        num = num_blow + 1; /* Can't hit it anymore! */
                                        *mdeath = TRUE;
                                }
@@ -1986,7 +1987,7 @@ static void py_attack_aux(player_type *attacker_ptr, POSITION y, POSITION x, boo
                                if (!(r_ptr->flags1 & (RF1_UNIQUE | RF1_QUESTOR)) &&
                                        !(r_ptr->flagsr & RFR_EFF_RES_CHAO_MASK))
                                {
-                                       if (polymorph_monster(y, x))
+                                       if (polymorph_monster(attacker_ptr, y, x))
                                        {
                                                msg_format(_("%^sは変化した!", "%^s changes!"), m_name);
                                                *fear = FALSE;
@@ -1998,7 +1999,7 @@ static void py_attack_aux(player_type *attacker_ptr, POSITION y, POSITION x, boo
                                        }
 
                                        /* Hack -- Get new monster */
-                                       m_ptr = &current_floor_ptr->m_list[g_ptr->m_idx];
+                                       m_ptr = &floor_ptr->m_list[g_ptr->m_idx];
 
                                        /* Oops, we need a different name... */
                                        monster_desc(m_name, m_ptr, 0);
@@ -2009,11 +2010,11 @@ static void py_attack_aux(player_type *attacker_ptr, POSITION y, POSITION x, boo
                        }
                        else if (o_ptr->name1 == ART_G_HAMMER)
                        {
-                               monster_type *target_ptr = &current_floor_ptr->m_list[g_ptr->m_idx];
+                               monster_type *target_ptr = &floor_ptr->m_list[g_ptr->m_idx];
 
                                if (target_ptr->hold_o_idx)
                                {
-                                       object_type *q_ptr = &current_floor_ptr->o_list[target_ptr->hold_o_idx];
+                                       object_type *q_ptr = &floor_ptr->o_list[target_ptr->hold_o_idx];
                                        GAME_TEXT o_name[MAX_NLEN];
 
                                        object_desc(o_name, q_ptr, OD_NAME_ONLY);
@@ -2022,7 +2023,7 @@ static void py_attack_aux(player_type *attacker_ptr, POSITION y, POSITION x, boo
                                        target_ptr->hold_o_idx = q_ptr->next_o_idx;
                                        q_ptr->next_o_idx = 0;
                                        msg_format(_("%sを奪った。", "You snatched %s."), o_name);
-                                       inven_carry(q_ptr);
+                                       inven_carry(attacker_ptr, q_ptr);
                                }
                        }
                }
@@ -2108,7 +2109,7 @@ static void py_attack_aux(player_type *attacker_ptr, POSITION y, POSITION x, boo
                                        k /= 10;
                                }
 
-                               k = critical_norm(o_ptr->weight, o_ptr->to_h, k, attacker_ptr->to_h[hand], mode);
+                               k = critical_norm(attacker_ptr, o_ptr->weight, o_ptr->to_h, k, attacker_ptr->to_h[hand], mode);
                                if (one_in_(6))
                                {
                                        int mult = 2;
@@ -2125,7 +2126,7 @@ static void py_attack_aux(player_type *attacker_ptr, POSITION y, POSITION x, boo
                                if (k < 0) k = 0;
 
                                take_hit(attacker_ptr, DAMAGE_FORCE, k, _("死の大鎌", "Death scythe"), -1);
-                               handle_stuff();
+                               handle_stuff(attacker_ptr);
                        }
                        else
                        {
@@ -2133,6 +2134,7 @@ static void py_attack_aux(player_type *attacker_ptr, POSITION y, POSITION x, boo
                                msg_format(_("ミス! %sにかわされた。", "You miss %s."), m_name);
                        }
                }
+
                backstab = FALSE;
                fuiuchi = FALSE;
        }
@@ -2152,8 +2154,8 @@ static void py_attack_aux(player_type *attacker_ptr, POSITION y, POSITION x, boo
        /* Mega-Hack -- apply earthquake brand */
        if (do_quake)
        {
-               earthquake(attacker_ptr->y, attacker_ptr->x, 10, 0);
-               if (!current_floor_ptr->grid_array[y][x].m_idx) *mdeath = TRUE;
+               earthquake(attacker_ptr, attacker_ptr->y, attacker_ptr->x, 10, 0);
+               if (!floor_ptr->grid_array[y][x].m_idx) *mdeath = TRUE;
        }
 }
 
@@ -2172,8 +2174,8 @@ bool py_attack(player_type *attacker_ptr, POSITION y, POSITION x, COMBAT_OPTION_
        bool            mdeath = FALSE;
        bool            stormbringer = FALSE;
 
-       grid_type       *g_ptr = &current_floor_ptr->grid_array[y][x];
-       monster_type    *m_ptr = &current_floor_ptr->m_list[g_ptr->m_idx];
+       grid_type       *g_ptr = &attacker_ptr->current_floor_ptr->grid_array[y][x];
+       monster_type    *m_ptr = &attacker_ptr->current_floor_ptr->m_list[g_ptr->m_idx];
        monster_race    *r_ptr = &r_info[m_ptr->r_idx];
        GAME_TEXT m_name[MAX_NLEN];
 
@@ -2292,7 +2294,7 @@ bool py_attack(player_type *attacker_ptr, POSITION y, POSITION x, COMBAT_OPTION_
 
                if (cur < max)
                {
-                       DEPTH ridinglevel = r_info[current_floor_ptr->m_list[attacker_ptr->riding].r_idx].level;
+                       DEPTH ridinglevel = r_info[attacker_ptr->current_floor_ptr->m_list[attacker_ptr->riding].r_idx].level;
                        DEPTH targetlevel = r_ptr->level;
                        int inc = 0;
 
@@ -2355,7 +2357,7 @@ bool py_attack(player_type *attacker_ptr, POSITION y, POSITION x, COMBAT_OPTION_
  */
 bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
 {
-       monster_type *m_ptr = &current_floor_ptr->m_list[m_idx];
+       monster_type *m_ptr = &p_ptr->current_floor_ptr->m_list[m_idx];
        monster_race *r_ptr = &r_info[m_ptr->r_idx];
 
        int ap_cnt;
@@ -2397,13 +2399,13 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
 
        if (target_ptr->special_defense & KATA_IAI)
        {
-               msg_format(_("相手が襲いかかる前に素早く武器を振るった。", "You took sen, draw and cut in one motion before %s move."), m_name);
+               msg_format(_("相手が襲いかかる前に素早く武器を振るった。", "You took sen, draw and cut in one motion before %s moved."), m_name);
                if (py_attack(target_ptr, m_ptr->fy, m_ptr->fx, HISSATSU_IAI)) return TRUE;
        }
 
        if ((target_ptr->special_defense & NINJA_KAWARIMI) && (randint0(55) < (target_ptr->lev*3/5+20)))
        {
-               if (kawarimi(TRUE)) return TRUE;
+               if (kawarimi(target_ptr, TRUE)) return TRUE;
        }
 
        /* Assume no blink */
@@ -2452,7 +2454,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                ac = target_ptr->ac + target_ptr->to_a;
 
                /* Monster hits player */
-               if (!effect || check_hit(power, rlev, MON_STUNNED(m_ptr)))
+               if (!effect || check_hit(target_ptr, power, rlev, MON_STUNNED(m_ptr)))
                {
                        /* Always disturbing */
                        disturb(target_ptr, TRUE, TRUE);
@@ -2838,7 +2840,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                        if (!target_ptr->resist_disen && !CHECK_MULTISHADOW(target_ptr))
                                        {
                                                /* Apply disenchantment */
-                                               if (apply_disenchant(0))
+                                               if (apply_disenchant(target_ptr, 0))
                                                {
                                                        /* Hack -- Update AC */
                                                        update_creature(target_ptr);
@@ -3012,13 +3014,13 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                msg_format("%sour %s (%c) was stolen!", ((o_ptr->number > 1) ? "One of y" : "Y"), o_name, index_to_label(i));
 #endif
                                                chg_virtue(target_ptr, V_SACRIFICE, 1);
-                                               o_idx = o_pop();
+                                               o_idx = o_pop(target_ptr->current_floor_ptr);
 
                                                /* Success */
                                                if (o_idx)
                                                {
                                                        object_type *j_ptr;
-                                                       j_ptr = &current_floor_ptr->o_list[o_idx];
+                                                       j_ptr = &p_ptr->current_floor_ptr->o_list[o_idx];
                                                        object_copy(j_ptr, o_ptr);
 
                                                        /* Modify number */
@@ -3048,8 +3050,8 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                }
 
                                                /* Steal the items */
-                                               inven_item_increase(i, -1);
-                                               inven_item_optimize(i);
+                                               inven_item_increase(target_ptr, i, -1);
+                                               inven_item_optimize(target_ptr, i);
 
                                                obvious = TRUE;
 
@@ -3089,8 +3091,8 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
 #endif
 
                                                /* Steal the items */
-                                               inven_item_increase(i, -1);
-                                               inven_item_optimize(i);
+                                               inven_item_increase(target_ptr, i, -1);
+                                               inven_item_optimize(target_ptr, i);
 
                                                obvious = TRUE;
 
@@ -3132,7 +3134,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                        if (explode) break;
                                        obvious = TRUE;
                                        msg_print(_("酸を浴びせられた!", "You are covered in acid!"));
-                                       get_damage += acid_dam(damage, ddesc, -1, FALSE);
+                                       get_damage += acid_dam(target_ptr, damage, ddesc, -1, FALSE);
                                        update_creature(target_ptr);
                                        update_smart_learn(m_idx, DRS_ACID);
                                        break;
@@ -3143,7 +3145,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                        if (explode) break;
                                        obvious = TRUE;
                                        msg_print(_("電撃を浴びせられた!", "You are struck by electricity!"));
-                                       get_damage += elec_dam(damage, ddesc, -1, FALSE);
+                                       get_damage += elec_dam(target_ptr, damage, ddesc, -1, FALSE);
                                        update_smart_learn(m_idx, DRS_ELEC);
                                        break;
                                }
@@ -3153,7 +3155,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                        if (explode) break;
                                        obvious = TRUE;
                                        msg_print(_("全身が炎に包まれた!", "You are enveloped in flames!"));
-                                       get_damage += fire_dam(damage, ddesc, -1, FALSE);
+                                       get_damage += fire_dam(target_ptr, damage, ddesc, -1, FALSE);
                                        update_smart_learn(m_idx, DRS_FIRE);
                                        break;
                                }
@@ -3163,7 +3165,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                        if (explode) break;
                                        obvious = TRUE;
                                        msg_print(_("全身が冷気で覆われた!", "You are covered with frost!"));
-                                       get_damage += cold_dam(damage, ddesc, -1, FALSE);
+                                       get_damage += cold_dam(target_ptr, damage, ddesc, -1, FALSE);
                                        update_smart_learn(m_idx, DRS_COLD);
                                        break;
                                }
@@ -3377,7 +3379,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                        /* Radius 8 earthquake centered at the monster */
                                        if (damage > 23 || explode)
                                        {
-                                               earthquake(m_ptr->fy, m_ptr->fx, 8, m_idx);
+                                               earthquake(target_ptr, m_ptr->fy, m_ptr->fx, 8, m_idx);
                                        }
 
                                        break;
@@ -3833,9 +3835,9 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                        r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_RES_SHAR_MASK);
                                        }
 
-                                       if (is_mirror_grid(&current_floor_ptr->grid_array[target_ptr->y][target_ptr->x]))
+                                       if (is_mirror_grid(&p_ptr->current_floor_ptr->grid_array[target_ptr->y][target_ptr->x]))
                                        {
-                                               teleport_player(10, 0L);
+                                               teleport_player(target_ptr, 10, 0L);
                                        }
                                }
 
@@ -3910,7 +3912,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                /* Modify the damage */
                                                dam = mon_damage_mod(m_ptr, dam, FALSE);
 
-                                               msg_format(_("影のオーラが%^sに反撃した!", "Enveloped shadows attack %^s."), m_name);
+                                               msg_format(_("影のオーラが%^sに反撃した!", "Enveloping shadows attack %^s."), m_name);
                                                if (mon_take_hit(m_idx, dam, &fear, _("は倒れた。", " is destroyed.")))
                                                {
                                                        blinked = FALSE;
@@ -3932,7 +3934,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                        {
                                                                o_armed_ptr = &target_ptr->inventory_list[typ[j][0]];
                                                                if ((o_armed_ptr->k_idx) && object_is_cursed(o_armed_ptr) && object_is_armour(o_armed_ptr))
-                                                                       project(0, 0, m_ptr->fy, m_ptr->fx, (target_ptr->lev * 2), typ[j][1], flg, -1);
+                                                                       project(target_ptr, 0, 0, m_ptr->fy, m_ptr->fx, (target_ptr->lev * 2), typ[j][1], flg, -1);
                                                        }
                                                }
                                        }
@@ -4013,7 +4015,6 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                        }
                }
 
-
                /* Analyze "visible" monsters only */
                if (is_original_ap_and_seen(m_ptr) && !do_silly_attack)
                {
@@ -4031,7 +4032,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                if (target_ptr->riding && damage)
                {
                        char m_steed_name[MAX_NLEN];
-                       monster_desc(m_steed_name, &current_floor_ptr->m_list[target_ptr->riding], 0);
+                       monster_desc(m_steed_name, &p_ptr->current_floor_ptr->m_list[target_ptr->riding], 0);
                        if (rakuba(target_ptr, (damage > 200) ? 200 : damage, FALSE))
                        {
                                msg_format(_("%^sから落ちてしまった!", "You have fallen from %s."), m_steed_name);
@@ -4040,12 +4041,12 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
 
                if (target_ptr->special_defense & NINJA_KAWARIMI)
                {
-                       if (kawarimi(FALSE)) return TRUE;
+                       if (kawarimi(target_ptr, FALSE)) return TRUE;
                }
        }
 
        /* Hex - revenge damage stored */
-       revenge_store(get_damage);
+       revenge_store(target_ptr, get_damage);
 
        if ((target_ptr->tim_eyeeye || hex_spelling(HEX_EYE_FOR_EYE))
                && get_damage > 0 && !target_ptr->is_dead)
@@ -4060,7 +4061,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
 
                msg_format("The attack of %s has wounded %s!", m_name, m_name_self);
 #endif
-               project(0, 0, m_ptr->fy, m_ptr->fx, get_damage, GF_MISSILE, PROJECT_KILL, -1);
+               project(target_ptr, 0, 0, m_ptr->fy, m_ptr->fx, get_damage, GF_MISSILE, PROJECT_KILL, -1);
                if (target_ptr->tim_eyeeye) set_tim_eyeeye(target_ptr, target_ptr->tim_eyeeye-5, TRUE);
        }
 
@@ -4070,7 +4071,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                monster_desc(m_target_name, m_ptr, 0);
 
                target_ptr->csp -= 7;
-               msg_format(_("%^sに反撃した!", "Your counterattack to %s!"), m_target_name);
+               msg_format(_("%^sに反撃した!", "Your counterattacked to %s!"), m_target_name);
                py_attack(target_ptr, m_ptr->fy, m_ptr->fx, HISSATSU_COUNTER);
                fear = FALSE;
                target_ptr->redraw |= (PR_MANA);
@@ -4079,20 +4080,20 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
        /* Blink away */
        if (blinked && alive && !target_ptr->is_dead)
        {
-               if (teleport_barrier(m_idx))
+               if (teleport_barrier(target_ptr, m_idx))
                {
                        msg_print(_("泥棒は笑って逃げ...ようとしたがバリアに防がれた。", "The thief flees laughing...? But magic barrier obstructs it."));
                }
                else
                {
                        msg_print(_("泥棒は笑って逃げた!", "The thief flees laughing!"));
-                       teleport_away(m_idx, MAX_SIGHT * 2 + 5, 0L);
+                       teleport_away(target_ptr, m_idx, MAX_SIGHT * 2 + 5, 0L);
                }
        }
 
 
        /* Always notice cause of death */
-       if (target_ptr->is_dead && (r_ptr->r_deaths < MAX_SHORT) && !target_ptr->inside_arena)
+       if (target_ptr->is_dead && (r_ptr->r_deaths < MAX_SHORT) && !target_ptr->current_floor_ptr->inside_arena)
        {
                r_ptr->r_deaths++;
        }
@@ -4124,10 +4125,10 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
  * @param t_idx 目標側モンスターの参照ID
  * @return 実際に打撃処理が行われた場合TRUEを返す
  */
-bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
+bool monst_attack_monst(player_type *subject_ptr, MONSTER_IDX m_idx, MONSTER_IDX t_idx)
 {
-       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
-       monster_type    *t_ptr = &current_floor_ptr->m_list[t_idx];
+       monster_type    *m_ptr = &subject_ptr->current_floor_ptr->m_list[m_idx];
+       monster_type    *t_ptr = &subject_ptr->current_floor_ptr->m_list[t_idx];
 
        monster_race    *r_ptr = &r_info[m_ptr->r_idx];
        monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
@@ -4150,7 +4151,7 @@ bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
 
        /* Can the player be aware of this attack? */
        bool known = (m_ptr->cdis <= MAX_SIGHT) || (t_ptr->cdis <= MAX_SIGHT);
-       bool do_silly_attack = (one_in_(2) && p_ptr->image);
+       bool do_silly_attack = (one_in_(2) && subject_ptr->image);
 
        /* Cannot attack self */
        if (m_idx == t_idx) return FALSE;
@@ -4158,7 +4159,7 @@ bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
        /* Not allowed to attack */
        if (r_ptr->flags1 & RF1_NEVER_BLOW) return FALSE;
 
-       if (d_info[p_ptr->dungeon_idx].flags1 & DF1_NO_MELEE) return (FALSE);
+       if (d_info[subject_ptr->dungeon_idx].flags1 & DF1_NO_MELEE) return (FALSE);
 
        /* Total armor */
        ac = tr_ptr->ac;
@@ -4174,10 +4175,10 @@ bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
 
        if (!see_either && known)
        {
-               current_floor_ptr->monster_noise = TRUE;
+               subject_ptr->current_floor_ptr->monster_noise = TRUE;
        }
 
-       if (p_ptr->riding && (m_idx == p_ptr->riding)) disturb(p_ptr, TRUE, TRUE);
+       if (subject_ptr->riding && (m_idx == subject_ptr->riding)) disturb(subject_ptr, TRUE, TRUE);
 
        /* Scan through all four blows */
        for (ap_cnt = 0; ap_cnt < 4; ap_cnt++)
@@ -4217,8 +4218,8 @@ bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
                        if (t_ptr->ml)
                        {
                                /* Redraw the health bar */
-                               if (p_ptr->health_who == t_idx) p_ptr->redraw |= (PR_HEALTH);
-                               if (p_ptr->riding == t_idx) p_ptr->redraw |= (PR_UHEALTH);
+                               if (subject_ptr->health_who == t_idx) subject_ptr->redraw |= (PR_HEALTH);
+                               if (subject_ptr->riding == t_idx) subject_ptr->redraw |= (PR_UHEALTH);
                        }
 
                        /* Describe the attack method */
@@ -4330,7 +4331,7 @@ bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
 
                        case RBM_EXPLODE:
                        {
-                               if (see_either) disturb(p_ptr, TRUE, TRUE);
+                               if (see_either) disturb(subject_ptr, TRUE, TRUE);
                                act = _("爆発した。", "explodes.");
                                explode = TRUE;
                                touched = FALSE;
@@ -4456,7 +4457,7 @@ bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
 
                        case RBE_EAT_ITEM:
                        case RBE_EAT_GOLD:
-                               if ((p_ptr->riding != m_idx) && one_in_(2)) blinked = TRUE;
+                               if ((subject_ptr->riding != m_idx) && one_in_(2)) blinked = TRUE;
                                break;
 
                        case RBE_EAT_FOOD:
@@ -4501,7 +4502,7 @@ bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
 
                        case RBE_SHATTER:
                                damage -= (damage * ((ac < 150) ? ac : 150) / 250);
-                               if (damage > 23) earthquake(m_ptr->fy, m_ptr->fx, 8, m_idx);
+                               if (damage > 23) earthquake(subject_ptr, m_ptr->fy, m_ptr->fx, 8, m_idx);
                                break;
 
                        case RBE_EXP_10:
@@ -4538,19 +4539,19 @@ bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
                                /* Do damage if not exploding */
                                if (!explode)
                                {
-                                       project(m_idx, 0, t_ptr->fy, t_ptr->fx,
+                                       project(subject_ptr, m_idx, 0, t_ptr->fy, t_ptr->fx,
                                                damage, pt, PROJECT_KILL | PROJECT_STOP | PROJECT_AIMED, -1);
                                }
 
                                switch (effect_type)
                                {
                                case BLOW_EFFECT_TYPE_FEAR:
-                                       project(m_idx, 0, t_ptr->fy, t_ptr->fx,
+                                       project(subject_ptr, m_idx, 0, t_ptr->fy, t_ptr->fx,
                                                damage, GF_TURN_ALL, PROJECT_KILL | PROJECT_STOP | PROJECT_AIMED, -1);
                                        break;
 
                                case BLOW_EFFECT_TYPE_SLEEP:
-                                       project(m_idx, 0, t_ptr->fy, t_ptr->fx,
+                                       project(subject_ptr, m_idx, 0, t_ptr->fy, t_ptr->fx,
                                                r_ptr->level, GF_OLD_SLEEP, PROJECT_KILL | PROJECT_STOP | PROJECT_AIMED, -1);
                                        break;
 
@@ -4566,8 +4567,8 @@ bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
                                                if (m_ptr->hp > m_ptr->maxhp) m_ptr->hp = m_ptr->maxhp;
 
                                                /* 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 (subject_ptr->health_who == m_idx) subject_ptr->redraw |= (PR_HEALTH);
+                                               if (subject_ptr->riding == m_idx) subject_ptr->redraw |= (PR_UHEALTH);
 
                                                /* Special message */
                                                if (see_m && did_heal)
@@ -4590,7 +4591,7 @@ bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
                                                                msg_format(_("%^sは突然熱くなった!", "%^s is suddenly very hot!"), m_name);
                                                        }
                                                        if (m_ptr->ml && is_original_ap_and_seen(t_ptr)) tr_ptr->r_flags2 |= RF2_AURA_FIRE;
-                                                       project(t_idx, 0, m_ptr->fy, m_ptr->fx,
+                                                       project(subject_ptr, t_idx, 0, m_ptr->fy, m_ptr->fx,
                                                                damroll(1 + ((tr_ptr->level) / 26),
                                                                        1 + ((tr_ptr->level) / 17)),
                                                                GF_FIRE, PROJECT_KILL | PROJECT_STOP | PROJECT_AIMED, -1);
@@ -4611,7 +4612,7 @@ bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
                                                                msg_format(_("%^sは突然寒くなった!", "%^s is suddenly very cold!"), m_name);
                                                        }
                                                        if (m_ptr->ml && is_original_ap_and_seen(t_ptr)) tr_ptr->r_flags3 |= RF3_AURA_COLD;
-                                                       project(t_idx, 0, m_ptr->fy, m_ptr->fx,
+                                                       project(subject_ptr, t_idx, 0, m_ptr->fy, m_ptr->fx,
                                                                damroll(1 + ((tr_ptr->level) / 26),
                                                                        1 + ((tr_ptr->level) / 17)),
                                                                GF_COLD, PROJECT_KILL | PROJECT_STOP | PROJECT_AIMED, -1);
@@ -4632,7 +4633,7 @@ bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
                                                                msg_format(_("%^sは電撃を食らった!", "%^s gets zapped!"), m_name);
                                                        }
                                                        if (m_ptr->ml && is_original_ap_and_seen(t_ptr)) tr_ptr->r_flags2 |= RF2_AURA_ELEC;
-                                                       project(t_idx, 0, m_ptr->fy, m_ptr->fx,
+                                                       project(subject_ptr, t_idx, 0, m_ptr->fy, m_ptr->fx,
                                                                damroll(1 + ((tr_ptr->level) / 26),
                                                                        1 + ((tr_ptr->level) / 17)),
                                                                GF_ELEC, PROJECT_KILL | PROJECT_STOP | PROJECT_AIMED, -1);
@@ -4711,7 +4712,7 @@ bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
        /* Blink away */
        if (blinked && m_ptr->r_idx)
        {
-               if (teleport_barrier(m_idx))
+               if (teleport_barrier(subject_ptr, m_idx))
                {
                        if (see_m)
                        {
@@ -4719,7 +4720,7 @@ bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
                        }
                        else if (known)
                        {
-                               current_floor_ptr->monster_noise = TRUE;
+                               subject_ptr->current_floor_ptr->monster_noise = TRUE;
                        }
                }
                else
@@ -4730,10 +4731,10 @@ bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
                        }
                        else if (known)
                        {
-                               current_floor_ptr->monster_noise = TRUE;
+                               subject_ptr->current_floor_ptr->monster_noise = TRUE;
                        }
 
-                       teleport_away(m_idx, MAX_SIGHT * 2 + 5, 0L);
+                       teleport_away(subject_ptr, m_idx, MAX_SIGHT * 2 + 5, 0L);
                }
        }
 
@@ -4755,7 +4756,7 @@ bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
  */
 void mon_take_hit_mon(MONSTER_IDX m_idx, HIT_POINT dam, bool *dead, bool *fear, concptr note, MONSTER_IDX who)
 {
-       monster_type *m_ptr = &current_floor_ptr->m_list[m_idx];
+       monster_type *m_ptr = &p_ptr->current_floor_ptr->m_list[m_idx];
        monster_race *r_ptr = &r_info[m_ptr->r_idx];
        GAME_TEXT m_name[160];
        bool seen = is_seen(m_ptr);
@@ -4834,7 +4835,7 @@ void mon_take_hit_mon(MONSTER_IDX m_idx, HIT_POINT dam, bool *dead, bool *fear,
                                /* Unseen death by normal attack */
                                if (!seen)
                                {
-                                       current_floor_ptr->monster_noise = TRUE;
+                                       p_ptr->current_floor_ptr->monster_noise = TRUE;
                                }
                                /* Death by special attack */
                                else if (note)
@@ -4907,9 +4908,9 @@ void mon_take_hit_mon(MONSTER_IDX m_idx, HIT_POINT dam, bool *dead, bool *fear,
 
        if ((dam > 0) && !is_pet(m_ptr) && !is_friendly(m_ptr) && (who != m_idx))
        {
-               if (is_pet(&current_floor_ptr->m_list[who]) && !player_bold(m_ptr->target_y, m_ptr->target_x))
+               if (is_pet(&p_ptr->current_floor_ptr->m_list[who]) && !player_bold(p_ptr, m_ptr->target_y, m_ptr->target_x))
                {
-                       set_target(m_ptr, current_floor_ptr->m_list[who].fy, current_floor_ptr->m_list[who].fx);
+                       set_target(m_ptr, p_ptr->current_floor_ptr->m_list[who].fy, p_ptr->current_floor_ptr->m_list[who].fx);
                }
        }
 
@@ -4920,7 +4921,7 @@ void mon_take_hit_mon(MONSTER_IDX m_idx, HIT_POINT dam, bool *dead, bool *fear,
                if (m_ptr->hp > m_ptr->maxhp / 3) dam = (dam + 1) / 2;
                if (rakuba(p_ptr, (dam > 200) ? 200 : dam, FALSE))
                {
-                       msg_format(_("%^sに振り落とされた!", "You have thrown off from %s!"), m_name);
+                       msg_format(_("%^sに振り落とされた!", "You have been thrown off from %s!"), m_name);
                }
        }