From: Hourier Date: Sun, 31 May 2020 06:00:14 +0000 (+0900) Subject: [Refactor] #40416 Separated process_drain_mana() and process_stun_attack() from make_... X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=765e602f6e04bdec34184d14df2164530b725906;p=hengband%2Fhengband.git [Refactor] #40416 Separated process_drain_mana() and process_stun_attack() from make_attack_normal() --- diff --git a/src/combat/monster-attack-player.c b/src/combat/monster-attack-player.c index 02dfab51c..10f5765ce 100644 --- a/src/combat/monster-attack-player.c +++ b/src/combat/monster-attack-player.c @@ -284,6 +284,16 @@ static void process_lose_all_attack(player_type *target_ptr, monap_type *monap_p monap_ptr->obvious = TRUE; } +static void process_stun_attack(player_type *target_ptr, monap_type *monap_ptr) +{ + if (target_ptr->resist_sound || check_multishadow(target_ptr)) + return; + + monster_race *r_ptr = &r_info[monap_ptr->m_ptr->r_idx]; + if (set_stun(target_ptr, target_ptr->stun + 10 + randint1(r_ptr->level / 4))) + monap_ptr->obvious = TRUE; +} + /*! * @brief モンスターからプレイヤーへの打撃処理 / Attack the player via physical attacks. * @param m_idx 打撃を行うモンスターのID @@ -695,19 +705,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx) } case RBE_DR_MANA: { monap_ptr->obvious = TRUE; - if (check_multishadow(target_ptr)) { - msg_print(_("攻撃は幻影に命中し、あなたには届かなかった。", "The attack hits Shadow, but you are unharmed!")); - } else { - monap_ptr->do_cut = 0; - target_ptr->csp -= monap_ptr->damage; - if (target_ptr->csp < 0) { - target_ptr->csp = 0; - target_ptr->csp_frac = 0; - } - - target_ptr->redraw |= (PR_MANA); - } - + process_drain_mana(target_ptr, monap_ptr); update_smart_learn(target_ptr, m_idx, DRS_MANA); break; } @@ -731,14 +729,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx) if (target_ptr->is_dead) break; - if (target_ptr->resist_sound || check_multishadow(target_ptr)) { - /* Do nothing */ - } else { - if (set_stun(target_ptr, target_ptr->stun + 10 + randint1(r_ptr->level / 4))) { - monap_ptr->obvious = TRUE; - } - } - + process_stun_attack(target_ptr, monap_ptr); break; } } diff --git a/src/combat/monster-eating.c b/src/combat/monster-eating.c index b4fd87d4a..e5f161aa8 100644 --- a/src/combat/monster-eating.c +++ b/src/combat/monster-eating.c @@ -1,5 +1,5 @@ /*! - * @brief プレーヤーのHP、アイテム、お金・明かりの残りターン、充填魔力を盗んだり減少させたりする処理 + * @brief プレーヤーのHP/MP、アイテム、お金・明かりの残りターン、充填魔力を盗んだり減少させたりする処理 * @date 2020/05/31 * @author Hourier */ @@ -250,3 +250,20 @@ void process_drain_life(player_type *target_ptr, monap_type *monap_ptr, const bo if (monap_ptr->m_ptr->ml && did_heal) msg_format(_("%sは体力を回復したようだ。", "%^s appears healthier."), monap_ptr->m_name); } + +void process_drain_mana(player_type *target_ptr, monap_type *monap_ptr) +{ + if (check_multishadow(target_ptr)) { + msg_print(_("攻撃は幻影に命中し、あなたには届かなかった。", "The attack hits Shadow, but you are unharmed!")); + return; + } + + monap_ptr->do_cut = 0; + target_ptr->csp -= monap_ptr->damage; + if (target_ptr->csp < 0) { + target_ptr->csp = 0; + target_ptr->csp_frac = 0; + } + + target_ptr->redraw |= (PR_MANA); +} diff --git a/src/combat/monster-eating.h b/src/combat/monster-eating.h index 0c0ae34f8..e949bde06 100644 --- a/src/combat/monster-eating.h +++ b/src/combat/monster-eating.h @@ -12,3 +12,4 @@ void process_eat_lite(player_type *target_ptr, monap_type *monap_ptr); bool process_un_power(player_type *target_ptr, monap_type *monap_ptr); bool check_drain_hp(player_type *target_ptr, const s32b d); void process_drain_life(player_type *target_ptr, monap_type *monap_ptr, const bool resist_drain); +void process_drain_mana(player_type *target_ptr, monap_type *monap_ptr);