OSDN Git Service

[Refactor] #2647 monster_fear_remaining() を monster_type::is_fearful() とmonster_type...
authorHourier <66951241+Hourier@users.noreply.github.com>
Sat, 17 Sep 2022 08:24:43 +0000 (17:24 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sun, 18 Sep 2022 11:06:53 +0000 (20:06 +0900)
22 files changed:
src/action/movement-execution.cpp
src/core/player-processor.cpp
src/effect/effect-monster-oldies.cpp
src/effect/effect-monster.cpp
src/melee/melee-postprocess.cpp
src/mind/mind-ninja.cpp
src/monster-floor/monster-move.cpp
src/monster-floor/monster-remover.cpp
src/monster-floor/monster-sweep-grid.cpp
src/monster/monster-damage.cpp
src/monster/monster-processor.cpp
src/monster/monster-status-setter.cpp
src/monster/monster-status.cpp
src/monster/monster-status.h
src/mspell/mspell-selector.cpp
src/mspell/mspell-status.cpp
src/player-attack/attack-chaos-effect.cpp
src/save/monster-writer.cpp
src/spell-kind/spells-sight.cpp
src/system/monster-type-definition.cpp
src/system/monster-type-definition.h
src/window/main-window-left-frame.cpp

index 0be28b0..aea3550 100644 (file)
@@ -211,7 +211,7 @@ void exe_movement(PlayerType *player_ptr, DIRECTION dir, bool do_pickup, bool br
             energy.reset_player_turn();
             can_move = false;
             disturb(player_ptr, false, true);
-        } else if (monster_fear_remaining(riding_m_ptr)) {
+        } else if (riding_m_ptr->is_fearful()) {
             GAME_TEXT steed_name[MAX_NLEN];
             monster_desc(player_ptr, steed_name, riding_m_ptr, 0);
             msg_format(_("%sが恐怖していて制御できない。", "%^s is too scared to control."), steed_name);
index 294632d..df5633f 100644 (file)
@@ -212,9 +212,9 @@ void process_player(PlayerType *player_ptr)
             }
         }
 
-        if (monster_fear_remaining(m_ptr)) {
+        if (m_ptr->is_fearful()) {
             if (set_monster_monfear(player_ptr, player_ptr->riding,
-                    (randint0(r_ptr->level) < player_ptr->skill_exp[PlayerSkillKindType::RIDING]) ? 0 : (monster_fear_remaining(m_ptr) - 1))) {
+                    (randint0(r_ptr->level) < player_ptr->skill_exp[PlayerSkillKindType::RIDING]) ? 0 : (m_ptr->get_remaining_fear() - 1))) {
                 GAME_TEXT m_name[MAX_NLEN];
                 monster_desc(player_ptr, m_name, m_ptr, 0);
                 msg_format(_("%^sを恐怖から立ち直らせた。", "%^s is no longer fearful."), m_name);
index 34e152c..3b1e6a3 100644 (file)
@@ -144,7 +144,7 @@ static void effect_monster_old_heal_recovery(PlayerType *player_ptr, effect_mons
         (void)set_monster_confused(player_ptr, em_ptr->g_ptr->m_idx, 0);
     }
 
-    if (monster_fear_remaining(em_ptr->m_ptr)) {
+    if (em_ptr->m_ptr->is_fearful()) {
         if (em_ptr->seen_msg) {
             msg_format(_("%^sは勇気を取り戻した。", "%^s recovers %s courage."), em_ptr->m_name, em_ptr->m_poss);
         }
index bab449d..49b239f 100644 (file)
@@ -457,7 +457,7 @@ static void effect_damage_piles_fear(PlayerType *player_ptr, effect_monster_type
         return;
     }
 
-    (void)set_monster_monfear(player_ptr, em_ptr->g_ptr->m_idx, monster_fear_remaining(em_ptr->m_ptr) + em_ptr->do_fear);
+    (void)set_monster_monfear(player_ptr, em_ptr->g_ptr->m_idx, em_ptr->m_ptr->get_remaining_fear() + em_ptr->do_fear);
     em_ptr->get_angry = true;
 }
 
index 5eacf6a..c50acc0 100644 (file)
@@ -208,7 +208,9 @@ static bool check_monster_hp(PlayerType *player_ptr, mam_pp_type *mam_pp_ptr)
  */
 static void cancel_fear_by_pain(PlayerType *player_ptr, mam_pp_type *mam_pp_ptr)
 {
-    if (!monster_fear_remaining(mam_pp_ptr->m_ptr) || (mam_pp_ptr->dam <= 0) || !set_monster_monfear(player_ptr, mam_pp_ptr->m_idx, monster_fear_remaining(mam_pp_ptr->m_ptr) - randint1(mam_pp_ptr->dam / 4))) {
+    const auto &m_ref = *mam_pp_ptr->m_ptr;
+    const auto dam = mam_pp_ptr->dam;
+    if (!m_ref.is_fearful() || (dam <= 0) || !set_monster_monfear(player_ptr, mam_pp_ptr->m_idx, m_ref.get_remaining_fear() - randint1(dam / 4))) {
         return;
     }
 
@@ -223,7 +225,7 @@ static void cancel_fear_by_pain(PlayerType *player_ptr, mam_pp_type *mam_pp_ptr)
 static void make_monster_fear(PlayerType *player_ptr, mam_pp_type *mam_pp_ptr)
 {
     auto *r_ptr = &r_info[mam_pp_ptr->m_ptr->r_idx];
-    if (monster_fear_remaining(mam_pp_ptr->m_ptr) || ((r_ptr->flags3 & RF3_NO_FEAR) == 0)) {
+    if (mam_pp_ptr->m_ptr->is_fearful() || ((r_ptr->flags3 & RF3_NO_FEAR) == 0)) {
         return;
     }
 
index 2c637c3..04acc09 100644 (file)
@@ -255,7 +255,7 @@ void process_surprise_attack(PlayerType *player_ptr, player_attack_type *pa_ptr)
     } else if ((ninja_data && ninja_data->s_stealth) && (randint0(tmp) > (r_ptr->level + 20)) &&
                pa_ptr->m_ptr->ml && !r_ptr->resistance_flags.has(MonsterResistanceType::RESIST_ALL)) {
         pa_ptr->surprise_attack = true;
-    } else if (monster_fear_remaining(pa_ptr->m_ptr) && pa_ptr->m_ptr->ml) {
+    } else if (pa_ptr->m_ptr->is_fearful() && pa_ptr->m_ptr->ml) {
         pa_ptr->stab_fleeing = true;
     }
 }
index db8d16a..4a27eee 100644 (file)
@@ -392,7 +392,8 @@ bool process_monster_movement(PlayerType *player_ptr, turn_flags *turn_flags_ptr
         }
 
         if (turn_flags_ptr->is_riding_mon) {
-            if (!player_ptr->riding_ryoute && !monster_fear_remaining(&player_ptr->current_floor_ptr->m_list[player_ptr->riding])) {
+            const auto &m_ref = player_ptr->current_floor_ptr->m_list[player_ptr->riding];
+            if (!player_ptr->riding_ryoute && !m_ref.is_fearful()) {
                 turn_flags_ptr->do_move = false;
             }
         }
@@ -481,7 +482,7 @@ static bool can_speak(const monster_race &ap_r_ref, MonsterSpeakType mon_speak_t
 static std::string_view get_speak_filename(monster_type *m_ptr)
 {
     const auto &ap_r_ref = r_info[m_ptr->ap_r_idx];
-    if (monster_fear_remaining(m_ptr) && can_speak(ap_r_ref, MonsterSpeakType::SPEAK_FEAR)) {
+    if (m_ptr->is_fearful() && can_speak(ap_r_ref, MonsterSpeakType::SPEAK_FEAR)) {
         return _("monfear_j.txt", "monfear.txt");
     }
 
index 608bdc8..319af76 100644 (file)
@@ -55,7 +55,7 @@ void delete_monster_idx(PlayerType *player_ptr, MONSTER_IDX i)
     if (m_ptr->is_confused()) {
         (void)set_monster_confused(player_ptr, i, 0);
     }
-    if (monster_fear_remaining(m_ptr)) {
+    if (m_ptr->is_fearful()) {
         (void)set_monster_monfear(player_ptr, i, 0);
     }
     if (monster_invulner_remaining(m_ptr)) {
index dea46e4..b327b06 100644 (file)
@@ -107,7 +107,7 @@ bool MonsterSweepGrid::mon_will_run()
         return false;
     }
 
-    if (monster_fear_remaining(m_ptr)) {
+    if (m_ptr->is_fearful()) {
         return true;
     }
 
index e2d11ff..1835e2d 100644 (file)
@@ -540,15 +540,15 @@ void MonsterDamageProcessor::summon_special_unique()
 void MonsterDamageProcessor::add_monster_fear()
 {
     auto *m_ptr = &this->player_ptr->current_floor_ptr->m_list[this->m_idx];
-    if (monster_fear_remaining(m_ptr) && (this->dam > 0)) {
-        auto fear_remining = monster_fear_remaining(m_ptr) - randint1(this->dam);
+    if (m_ptr->is_fearful() && (this->dam > 0)) {
+        auto fear_remining = m_ptr->get_remaining_fear() - randint1(this->dam);
         if (set_monster_monfear(this->player_ptr, this->m_idx, fear_remining)) {
             *this->fear = false;
         }
     }
 
     auto *r_ptr = &r_info[m_ptr->r_idx];
-    if (monster_fear_remaining(m_ptr) || any_bits(r_ptr->flags3, RF3_NO_FEAR)) {
+    if (m_ptr->is_fearful() || any_bits(r_ptr->flags3, RF3_NO_FEAR)) {
         return;
     }
 
index 18cd9e9..707cda4 100644 (file)
@@ -174,7 +174,7 @@ void process_monster(PlayerType *player_ptr, MONSTER_IDX m_idx)
         m_ptr->mflag2.reset(MonsterConstantFlagType::NOFLOW);
     }
 
-    if (!turn_flags_ptr->do_turn && !turn_flags_ptr->do_move && !monster_fear_remaining(m_ptr) && !turn_flags_ptr->is_riding_mon && turn_flags_ptr->aware) {
+    if (!turn_flags_ptr->do_turn && !turn_flags_ptr->do_move && !m_ptr->is_fearful() && !turn_flags_ptr->is_riding_mon && turn_flags_ptr->aware) {
         if (r_ptr->freq_spell && randint1(100) <= r_ptr->freq_spell) {
             if (make_attack_spell(player_ptr, m_idx)) {
                 return;
@@ -508,7 +508,7 @@ bool cast_spell(PlayerType *player_ptr, MONSTER_IDX m_idx, bool aware)
 bool process_monster_fear(PlayerType *player_ptr, turn_flags *turn_flags_ptr, MONSTER_IDX m_idx)
 {
     auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
-    bool is_battle_determined = !turn_flags_ptr->do_turn && !turn_flags_ptr->do_move && monster_fear_remaining(m_ptr) && turn_flags_ptr->aware;
+    bool is_battle_determined = !turn_flags_ptr->do_turn && !turn_flags_ptr->do_move && m_ptr->is_fearful() && turn_flags_ptr->aware;
     if (!is_battle_determined) {
         return false;
     }
index 0eceb9c..eb40c08 100644 (file)
@@ -291,12 +291,12 @@ bool set_monster_monfear(PlayerType *player_ptr, MONSTER_IDX m_idx, int v)
     v = (v > 200) ? 200 : (v < 0) ? 0
                                   : v;
     if (v) {
-        if (!monster_fear_remaining(m_ptr)) {
+        if (!m_ptr->is_fearful()) {
             mproc_add(floor_ptr, m_idx, MTIMED_MONFEAR);
             notice = true;
         }
     } else {
-        if (monster_fear_remaining(m_ptr)) {
+        if (m_ptr->is_fearful()) {
             mproc_remove(floor_ptr, m_idx, MTIMED_MONFEAR);
             notice = true;
         }
index 94c55df..fc64b93 100644 (file)
@@ -297,7 +297,7 @@ static void process_monsters_mtimed_aux(PlayerType *player_ptr, MONSTER_IDX m_id
 
     case MTIMED_MONFEAR: {
         /* Reduce the fear */
-        if (!set_monster_monfear(player_ptr, m_idx, monster_fear_remaining(m_ptr) - randint1(r_info[m_ptr->r_idx].level / 20 + 1))) {
+        if (!set_monster_monfear(player_ptr, m_idx, m_ptr->get_remaining_fear() - randint1(r_info[m_ptr->r_idx].level / 20 + 1))) {
             break;
         }
 
@@ -523,11 +523,6 @@ void monster_gain_exp(PlayerType *player_ptr, MONSTER_IDX m_idx, MonsterRaceId s
     }
 }
 
-TIME_EFFECT monster_fear_remaining(monster_type *m_ptr)
-{
-    return m_ptr->mtimed[MTIMED_MONFEAR];
-}
-
 TIME_EFFECT monster_invulner_remaining(monster_type *m_ptr)
 {
     return m_ptr->mtimed[MTIMED_INVULNER];
index 2f5da60..0d8b02d 100644 (file)
@@ -16,7 +16,6 @@ void monster_gain_exp(PlayerType *player_ptr, MONSTER_IDX m_idx, MonsterRaceId s
 
 void process_monsters_mtimed(PlayerType *player_ptr, int mtimed_idx);
 
-TIME_EFFECT monster_fear_remaining(monster_type *m_ptr);
 TIME_EFFECT monster_invulner_remaining(monster_type *m_ptr);
 
 int get_mproc_idx(floor_type *floor_ptr, MONSTER_IDX m_idx, int mproc_type);
index 7c124eb..e91debc 100644 (file)
@@ -387,7 +387,7 @@ MonsterAbilityType choose_attack_spell(PlayerType *player_ptr, msa_type *msa_ptr
         }
     }
 
-    if (((m_ptr->hp < m_ptr->maxhp / 3) || monster_fear_remaining(m_ptr)) && one_in_(2)) {
+    if (((m_ptr->hp < m_ptr->maxhp / 3) || m_ptr->is_fearful()) && one_in_(2)) {
         if (!escape.empty()) {
             return escape[randint0(escape.size())];
         }
index ecf93d9..616b0af 100644 (file)
@@ -295,7 +295,7 @@ MonsterSpellResult spell_RF5_SCARE(MONSTER_IDX m_idx, PlayerType *player_ptr, MO
     spell_badstatus_message_to_mons(player_ptr, m_idx, t_idx, msg, resist, saving_throw);
 
     if (!resist && !saving_throw) {
-        set_monster_monfear(player_ptr, t_idx, monster_fear_remaining(t_ptr) + randint0(4) + 4);
+        set_monster_monfear(player_ptr, t_idx, t_ptr->get_remaining_fear() + randint0(4) + 4);
     }
 
     return res;
@@ -637,7 +637,7 @@ MonsterSpellResult spell_RF6_HEAL(PlayerType *player_ptr, MONSTER_IDX m_idx, MON
         player_ptr->redraw |= (PR_UHEALTH);
     }
 
-    if (!monster_fear_remaining(m_ptr)) {
+    if (!m_ptr->is_fearful()) {
         return res;
     }
 
index 48fd742..ddfbd17 100644 (file)
@@ -115,7 +115,7 @@ static void attack_scare(PlayerType *player_ptr, player_attack_type *pa_ptr, boo
         msg_format(_("%^sには効果がなかった。", "%^s is unaffected."), pa_ptr->m_name);
     } else {
         msg_format(_("%^sは恐怖して逃げ出した!", "%^s flees in terror!"), pa_ptr->m_name);
-        (void)set_monster_monfear(player_ptr, pa_ptr->m_idx, monster_fear_remaining(pa_ptr->m_ptr) + 10 + randint0(player_ptr->lev) / 5);
+        (void)set_monster_monfear(player_ptr, pa_ptr->m_idx, pa_ptr->m_ptr->get_remaining_fear() + 10 + randint0(player_ptr->lev) / 5);
     }
 }
 
index 156ec0a..172eeee 100644 (file)
@@ -40,7 +40,7 @@ static void write_monster_flags(monster_type *m_ptr, BIT_FLAGS *flags)
         set_bits(*flags, SaveDataMonsterFlagType::CONFUSED);
     }
 
-    if (monster_fear_remaining(m_ptr)) {
+    if (m_ptr->is_fearful()) {
         set_bits(*flags, SaveDataMonsterFlagType::MONFEAR);
     }
 
index 90d3390..38699ef 100644 (file)
@@ -428,7 +428,7 @@ void probed_monster_info(char *buf, PlayerType *player_ptr, monster_type *m_ptr,
     if (m_ptr->is_stunned()) {
         strcat(buf, _("朦朧 ", "stunned "));
     }
-    if (monster_fear_remaining(m_ptr)) {
+    if (m_ptr->is_fearful()) {
         strcat(buf, _("恐怖 ", "scared "));
     }
     if (m_ptr->is_confused()) {
index 3afcff1..eada4e3 100644 (file)
@@ -129,3 +129,13 @@ bool monster_type::is_confused() const
 {
     return this->get_remaining_confusion() > 0;
 }
+
+short monster_type::get_remaining_fear() const
+{
+    return this->mtimed[MTIMED_MONFEAR];
+}
+
+bool monster_type::is_fearful() const
+{
+    return this->get_remaining_fear() > 0;
+}
index 6bf2358..8abdb7d 100644 (file)
@@ -65,9 +65,11 @@ struct monster_type {
     short get_remaining_deceleration() const;
     short get_remaining_stun() const;
     short get_remaining_confusion() const;
+    short get_remaining_fear() const;
     bool is_asleep() const;
     bool is_accelerated() const;
     bool is_decelerated() const;
     bool is_stunned() const;
     bool is_confused() const;
+    bool is_fearful() const;
 };
index 0bab1a7..84ec6c3 100644 (file)
@@ -383,7 +383,7 @@ void health_redraw(PlayerType *player_ptr, bool riding)
         attr = TERM_WHITE;
     } else if (m_ptr->is_asleep()) {
         attr = TERM_BLUE;
-    } else if (monster_fear_remaining(m_ptr)) {
+    } else if (m_ptr->is_fearful()) {
         attr = TERM_VIOLET;
     } else if (pct >= 100) {
         attr = TERM_L_GREEN;