From 259e1cae9c16107cadf235245c172d50812d3819 Mon Sep 17 00:00:00 2001 From: Hourier Date: Mon, 13 Jan 2020 16:07:28 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#38997=20mon=5Fdamage=5Fmod()=20?= =?utf8?q?=E3=81=ABplayer=5Ftype=20*=20=E5=BC=95=E6=95=B0=E3=82=92?= =?utf8?q?=E8=BF=BD=E5=8A=A0=20/=20Added=20player=5Ftype=20*=20argument=20?= =?utf8?q?to=20mon=5Fdamage=5Fmod()?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/cmd/cmd-basic.c | 2 +- src/combat/melee1.c | 18 +++++++++--------- src/combat/shoot.c | 2 +- src/monster-status.c | 5 +++-- src/monster-status.h | 2 +- src/spells1.c | 2 +- 6 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/cmd/cmd-basic.c b/src/cmd/cmd-basic.c index 884be8932..2bd1d1597 100644 --- a/src/cmd/cmd-basic.c +++ b/src/cmd/cmd-basic.c @@ -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); diff --git a/src/combat/melee1.c b/src/combat/melee1.c index ca8bf2bf3..79457205c 100644 --- a/src/combat/melee1.c +++ b/src/combat/melee1.c @@ -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."))) diff --git a/src/combat/shoot.c b/src/combat/shoot.c index eff819c10..a11cf3f68 100644 --- a/src/combat/shoot.c +++ b/src/combat/shoot.c @@ -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, diff --git a/src/monster-status.c b/src/monster-status.c index 35a9934a3..813b5b826 100644 --- a/src/monster-status.c +++ b/src/monster-status.c @@ -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. * */ -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!")); } diff --git a/src/monster-status.h b/src/monster-status.h index 91c748158..5e729be8b 100644 --- a/src/monster-status.h +++ b/src/monster-status.h @@ -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); diff --git a/src/spells1.c b/src/spells1.c index 8b620f4a2..cdb6c0519 100644 --- a/src/spells1.c +++ b/src/spells1.c @@ -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 */ -- 2.11.0