OSDN Git Service

[Refactor] #38997 mon_damage_mod() にplayer_type * 引数を追加 / Added player_type * argumen...
authorHourier <hourier@users.sourceforge.jp>
Mon, 13 Jan 2020 07:07:28 +0000 (16:07 +0900)
committerHourier <hourier@users.sourceforge.jp>
Mon, 13 Jan 2020 07:07:28 +0000 (16:07 +0900)
src/cmd/cmd-basic.c
src/combat/melee1.c
src/combat/shoot.c
src/monster-status.c
src/monster-status.h
src/spells1.c

index 884be89..2bd1d15 100644 (file)
@@ -2629,7 +2629,7 @@ bool do_cmd_throw(player_type *creature_ptr, int mult, bool boomerang, OBJECT_ID
                                if (tdam < 0) tdam = 0;
 
                                /* Modify the damage */
-                               tdam = mon_damage_mod(m_ptr, tdam, FALSE);
+                               tdam = mon_damage_mod(creature_ptr, m_ptr, tdam, FALSE);
 
                                msg_format_wizard(CHEAT_MONSTER, _("%dのダメージを与えた。(残りHP %d/%d(%d))", "You do %d damage. (left HP %d/%d(%d))"),
                                        tdam, m_ptr->hp - tdam, m_ptr->maxhp, m_ptr->max_maxhp);
index ca8bf2b..7945720 100644 (file)
@@ -1232,7 +1232,7 @@ static void natural_attack(player_type *attacker_ptr, MONSTER_IDX m_idx, int att
        if (k < 0) k = 0;
 
        /* Modify the damage */
-       k = mon_damage_mod(m_ptr, k, FALSE);
+       k = mon_damage_mod(attacker_ptr, m_ptr, k, FALSE);
 
        /* Complex message */
        msg_format_wizard(CHEAT_MONSTER,
@@ -1886,7 +1886,7 @@ static void py_attack_aux(player_type *attacker_ptr, POSITION y, POSITION x, boo
                }
 
                /* Modify the damage */
-               k = mon_damage_mod(m_ptr, k, (bool)(((o_ptr->tval == TV_POLEARM) && (o_ptr->sval == SV_DEATH_SCYTHE)) || ((attacker_ptr->pclass == CLASS_BERSERKER) && one_in_(2))));
+               k = mon_damage_mod(attacker_ptr, m_ptr, k, (bool)(((o_ptr->tval == TV_POLEARM) && (o_ptr->sval == SV_DEATH_SCYTHE)) || ((attacker_ptr->pclass == CLASS_BERSERKER) && one_in_(2))));
                if (((o_ptr->tval == TV_SWORD) && (o_ptr->sval == SV_POISON_NEEDLE)) || (mode == HISSATSU_KYUSHO))
                {
                        if ((randint1(randint1(r_ptr->level / 7) + 5) == 1) && !(r_ptr->flags1 & RF1_UNIQUE) && !(r_ptr->flags7 & RF7_UNIQUE2))
@@ -3745,7 +3745,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                HIT_POINT dam = damroll(2, 6);
 
                                                /* Modify the damage */
-                                               dam = mon_damage_mod(m_ptr, dam, FALSE);
+                                               dam = mon_damage_mod(target_ptr, m_ptr, dam, FALSE);
 
                                                msg_format(_("%^sは突然熱くなった!", "%^s is suddenly very hot!"), m_name);
 
@@ -3769,7 +3769,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                HIT_POINT dam = damroll(2, 6);
 
                                                /* Modify the damage */
-                                               dam = mon_damage_mod(m_ptr, dam, FALSE);
+                                               dam = mon_damage_mod(target_ptr, m_ptr, dam, FALSE);
 
                                                msg_format(_("%^sは電撃をくらった!", "%^s gets zapped!"), m_name);
                                                if (mon_take_hit(target_ptr, m_idx, dam, &fear, _("は燃え殻の山になった。", " turns into a pile of cinder.")))
@@ -3792,7 +3792,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                HIT_POINT dam = damroll(2, 6);
 
                                                /* Modify the damage */
-                                               dam = mon_damage_mod(m_ptr, dam, FALSE);
+                                               dam = mon_damage_mod(target_ptr, m_ptr, dam, FALSE);
 
                                                msg_format(_("%^sは冷気をくらった!", "%^s is very cold!"), m_name);
                                                if (mon_take_hit(target_ptr, m_idx, dam, &fear, _("は凍りついた。", " was frozen.")))
@@ -3816,7 +3816,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                HIT_POINT dam = damroll(2, 6);
 
                                                /* Modify the damage */
-                                               dam = mon_damage_mod(m_ptr, dam, FALSE);
+                                               dam = mon_damage_mod(target_ptr, m_ptr, dam, FALSE);
 
                                                msg_format(_("%^sは鏡の破片をくらった!", "%^s gets zapped!"), m_name);
                                                if (mon_take_hit(target_ptr, m_idx, dam, &fear, _("はズタズタになった。", " had torn to pieces.")))
@@ -3846,7 +3846,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                        HIT_POINT dam = damroll(2, 6);
 
                                                        /* Modify the damage */
-                                                       dam = mon_damage_mod(m_ptr, dam, FALSE);
+                                                       dam = mon_damage_mod(target_ptr, m_ptr, dam, FALSE);
 
                                                        msg_format(_("%^sは聖なるオーラで傷ついた!", "%^s is injured by holy power!"), m_name);
                                                        if (mon_take_hit(target_ptr, m_idx, dam, &fear, _("は倒れた。", " is destroyed.")))
@@ -3872,7 +3872,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                HIT_POINT dam = damroll(2, 6);
 
                                                /* Modify the damage */
-                                               dam = mon_damage_mod(m_ptr, dam, FALSE);
+                                               dam = mon_damage_mod(target_ptr, m_ptr, dam, FALSE);
 
                                                msg_format(_("%^sが鋭い闘気のオーラで傷ついた!", "%^s is injured by the Force"), m_name);
                                                if (mon_take_hit(target_ptr, m_idx, dam, &fear, _("は倒れた。", " is destroyed.")))
@@ -3906,7 +3906,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
                                                if ((o_armed_ptr->k_idx) && object_is_cursed(o_armed_ptr)) dam *= 2;
 
                                                /* Modify the damage */
-                                               dam = mon_damage_mod(m_ptr, dam, FALSE);
+                                               dam = mon_damage_mod(target_ptr, m_ptr, dam, FALSE);
 
                                                msg_format(_("影のオーラが%^sに反撃した!", "Enveloping shadows attack %^s."), m_name);
                                                if (mon_take_hit(target_ptr, m_idx, dam, &fear, _("は倒れた。", " is destroyed.")))
index eff819c..a11cf3f 100644 (file)
@@ -702,7 +702,7 @@ void exe_fire(player_type *shooter_ptr, INVENTORY_IDX item, object_type *j_ptr,
                                                if (tdam < 0) tdam = 0;
 
                                                /* Modify the damage */
-                                               tdam = mon_damage_mod(m_ptr, tdam, FALSE);
+                                               tdam = mon_damage_mod(shooter_ptr, m_ptr, tdam, FALSE);
                                        }
 
                                        msg_format_wizard(CHEAT_MONSTER,
index 35a9934..813b5b8 100644 (file)
@@ -56,6 +56,7 @@ DEPTH monster_level_idx(floor_type *floor_ptr, MONSTER_IDX m_idx)
 /*!
  * @brief モンスターに与えたダメージの修正処理 /
  * Modify the physical damage done to the monster.
+ * @param target_ptr プレーヤーへの参照ポインタ
  * @param m_ptr ダメージを受けるモンスターの構造体参照ポインタ
  * @param dam ダメージ基本値
  * @param is_psy_spear 攻撃手段が光の剣ならばTRUE
@@ -68,7 +69,7 @@ DEPTH monster_level_idx(floor_type *floor_ptr, MONSTER_IDX m_idx)
  * "type" is not yet used and should be 0.
  * </pre>
  */
-HIT_POINT mon_damage_mod(monster_type *m_ptr, HIT_POINT dam, bool is_psy_spear)
+HIT_POINT mon_damage_mod(player_type *target_ptr, monster_type *m_ptr, HIT_POINT dam, bool is_psy_spear)
 {
        monster_race *r_ptr = &r_info[m_ptr->r_idx];
 
@@ -82,7 +83,7 @@ HIT_POINT mon_damage_mod(monster_type *m_ptr, HIT_POINT dam, bool is_psy_spear)
        {
                if (is_psy_spear)
                {
-                       if (!p_ptr->blind && is_seen(m_ptr))
+                       if (!target_ptr->blind && is_seen(m_ptr))
                        {
                                msg_print(_("バリアを切り裂いた!", "The barrier is penetrated!"));
                        }
index 91c7481..5e729be 100644 (file)
@@ -3,7 +3,7 @@
 extern bool monster_is_powerful(floor_type *floor_ptr, MONSTER_IDX m_idx);
 extern DEPTH monster_level_idx(floor_type *floor_ptr, MONSTER_IDX m_idx);
 
-extern HIT_POINT mon_damage_mod(monster_type *m_ptr, HIT_POINT dam, bool is_psy_spear);
+extern HIT_POINT mon_damage_mod(player_type *target_ptr, monster_type *m_ptr, HIT_POINT dam, bool is_psy_spear);
 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 8b620f4..cdb6c05 100644 (file)
@@ -3635,7 +3635,7 @@ static bool project_m(player_type *caster_ptr, MONSTER_IDX who, POSITION r, POSI
 
        /* Modify the damage */
        tmp = dam;
-       dam = mon_damage_mod(m_ptr, dam, (bool)(typ == GF_PSY_SPEAR));
+       dam = mon_damage_mod(caster_ptr, m_ptr, dam, (bool)(typ == GF_PSY_SPEAR));
        if ((tmp > 0) && (dam == 0)) note = _("はダメージを受けていない。", " is unharmed.");
 
        /* Check for death */