monap_ptr->obvious = TRUE;
}
+static void process_terrify_attack(player_type *target_ptr, monap_type *monap_ptr)
+{
+ if (check_multishadow(target_ptr))
+ return;
+
+ monster_race *r_ptr = &r_info[monap_ptr->m_ptr->r_idx];
+ if (target_ptr->resist_fear) {
+ msg_print(_("しかし恐怖に侵されなかった!", "You stand your ground!"));
+ monap_ptr->obvious = TRUE;
+ return;
+ }
+
+ if (randint0(100 + r_ptr->level / 2) < target_ptr->skill_sav) {
+ msg_print(_("しかし恐怖に侵されなかった!", "You stand your ground!"));
+ monap_ptr->obvious = TRUE;
+ return;
+ }
+
+ if (set_afraid(target_ptr, target_ptr->afraid + 3 + randint1(monap_ptr->rlev)))
+ monap_ptr->obvious = TRUE;
+}
+
/*!
* @brief モンスターからプレイヤーへの打撃処理 / Attack the player via physical attacks.
* @param m_idx 打撃を行うモンスターのID
if (target_ptr->is_dead)
break;
- if (check_multishadow(target_ptr)) {
- /* Do nothing */
- } else if (target_ptr->resist_fear) {
- msg_print(_("しかし恐怖に侵されなかった!", "You stand your ground!"));
- monap_ptr->obvious = TRUE;
- } else if (randint0(100 + r_ptr->level / 2) < target_ptr->skill_sav) {
- msg_print(_("しかし恐怖に侵されなかった!", "You stand your ground!"));
- monap_ptr->obvious = TRUE;
- } else {
- if (set_afraid(target_ptr, target_ptr->afraid + 3 + randint1(monap_ptr->rlev))) {
- monap_ptr->obvious = TRUE;
- }
- }
-
+ process_terrify_attack(target_ptr, monap_ptr);
update_smart_learn(target_ptr, m_idx, DRS_FEAR);
break;
}