From 00a4bb0701ebcd5b82ee54b9afe162d470e03db3 Mon Sep 17 00:00:00 2001 From: Hourier Date: Wed, 29 Apr 2020 20:06:47 +0900 Subject: [PATCH] [Refactor] #39963 Separated pile_monster_conf() from affect_monster() --- src/effect/effect-monster.c | 56 +++++++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/src/effect/effect-monster.c b/src/effect/effect-monster.c index bd3b6b334..40a27a741 100644 --- a/src/effect/effect-monster.c +++ b/src/effect/effect-monster.c @@ -2263,7 +2263,7 @@ static void process_monster_last_moment(player_type *caster_ptr, effect_monster_ /*! - * @brief 朦朧値を蓄積させる + * @brief モンスターの朦朧値を蓄積させる * @param caster_ptr プレーヤーへの参照ポインタ * @param em_ptr モンスター効果構造体への参照ポインタ * @param stun_damage 朦朧値 @@ -2295,6 +2295,38 @@ static void pile_monster_stun(player_type *caster_ptr, effect_monster_type *em_p /*! + * @brief モンスターの混乱値を蓄積させる + * @param caster_ptr プレーヤーへの参照ポインタ + * @param em_ptr モンスター効果構造体への参照ポインタ + * @param stun_damage 混乱値 + * @return なし + */ +static void pile_monster_conf(player_type *caster_ptr, effect_monster_type *em_ptr, int *conf_damage) +{ + if ((em_ptr->do_conf == 0) || + (em_ptr->r_ptr->flags3 & RF3_NO_CONF) || + (em_ptr->r_ptr->flagsr & RFR_EFF_RES_CHAO_MASK)) + return; + + if (em_ptr->seen) em_ptr->obvious = TRUE; + + if (MON_CONFUSED(em_ptr->m_ptr)) + { + em_ptr->note = _("はさらに混乱したようだ。", " looks more confused."); + *conf_damage = MON_CONFUSED(em_ptr->m_ptr) + (em_ptr->do_conf / 2); + } + else + { + em_ptr->note = _("は混乱したようだ。", " looks confused."); + *conf_damage = em_ptr->do_conf; + } + + (void)set_monster_confused(caster_ptr, em_ptr->g_ptr->m_idx, *conf_damage); + em_ptr->get_angry = TRUE; +} + + +/*! * @brief 汎用的なビーム/ボルト/ボール系によるモンスターへの効果処理 / Handle a beam/bolt/ball causing damage to a monster. * @param caster_ptr プレーヤーへの参照ポインタ * @param who 魔法を発動したモンスター(0ならばプレイヤー) / Index of "source" monster (zero for "player") @@ -2354,27 +2386,7 @@ bool affect_monster(player_type *caster_ptr, MONSTER_IDX who, POSITION r, POSITI else { pile_monster_stun(caster_ptr, em_ptr, &tmp_damage); - if (em_ptr->do_conf && - !(em_ptr->r_ptr->flags3 & RF3_NO_CONF) && - !(em_ptr->r_ptr->flagsr & RFR_EFF_RES_CHAO_MASK)) - { - if (em_ptr->seen) em_ptr->obvious = TRUE; - - if (MON_CONFUSED(em_ptr->m_ptr)) - { - em_ptr->note = _("はさらに混乱したようだ。", " looks more confused."); - tmp_damage = MON_CONFUSED(em_ptr->m_ptr) + (em_ptr->do_conf / 2); - } - else - { - em_ptr->note = _("は混乱したようだ。", " looks confused."); - tmp_damage = em_ptr->do_conf; - } - - (void)set_monster_confused(caster_ptr, em_ptr->g_ptr->m_idx, tmp_damage); - em_ptr->get_angry = TRUE; - } - + pile_monster_conf(caster_ptr, em_ptr, &tmp_damage); if (em_ptr->do_time) { if (em_ptr->seen) em_ptr->obvious = TRUE; -- 2.11.0