OSDN Git Service

[Refactor] 状態異常無効化フラグを置き換えた
authorSlimebreath6078 <slimebreath6078@yahoo.co.jp>
Fri, 20 Oct 2023 23:38:35 +0000 (08:38 +0900)
committerSlimebreath6078 <slimebreath6078@yahoo.co.jp>
Sat, 21 Oct 2023 14:23:08 +0000 (23:23 +0900)
19 files changed:
src/effect/effect-monster-charm.cpp
src/effect/effect-monster-evil.cpp
src/effect/effect-monster-oldies.cpp
src/effect/effect-monster-psi.cpp
src/effect/effect-monster-resist-hurt.cpp
src/effect/effect-monster-spirit.cpp
src/effect/effect-monster-switcher.cpp
src/effect/effect-monster.cpp
src/load/old/load-v1-5-0.cpp
src/melee/melee-postprocess.cpp
src/mind/mind-elementalist.cpp
src/mind/mind-samurai.cpp
src/mind/monk-attack.cpp
src/monster-race/race-flags3.h
src/monster/monster-damage.cpp
src/mspell/mspell-status.cpp
src/player-attack/attack-chaos-effect.cpp
src/spell/spells-diceroll.cpp
src/view/display-lore-status.cpp

index 223030b..705d258 100644 (file)
@@ -241,7 +241,7 @@ static void effect_monster_domination_corrupted_addition(PlayerType *player_ptr,
         (void)bss.mod_confusion(em_ptr->dam / 2);
         return;
     default:
-        if (any_bits(em_ptr->r_ptr->flags3, RF3_NO_FEAR)) {
+        if (em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_FEAR)) {
             em_ptr->note = _("には効果がなかった。", " is unaffected.");
         } else {
             (void)bss.mod_fear(static_cast<TIME_EFFECT>(em_ptr->dam));
@@ -299,10 +299,10 @@ ProcessResult effect_monster_domination(PlayerType *player_ptr, EffectMonster *e
 
     const auto is_unique = em_ptr->r_ptr->kind_flags.has(MonsterKindType::UNIQUE);
     const auto is_questor = any_bits(em_ptr->r_ptr->flags1, RF1_QUESTOR);
-    const auto is_no_confusion = any_bits(em_ptr->r_ptr->flags3, RF3_NO_CONF);
+    const auto is_no_confusion = em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF);
     if (is_unique || is_questor || is_no_confusion || (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)) {
-        if (((em_ptr->r_ptr->flags3 & RF3_NO_CONF) != 0) && is_original_ap_and_seen(player_ptr, em_ptr->m_ptr)) {
-            em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
+        if ((em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF)) && is_original_ap_and_seen(player_ptr, em_ptr->m_ptr)) {
+            em_ptr->r_ptr->resistance_flags.set(MonsterResistanceType::NO_CONF);
         }
 
         em_ptr->do_conf = 0;
@@ -329,7 +329,7 @@ static bool effect_monster_crusade_domination(PlayerType *player_ptr, EffectMons
         return false;
     }
 
-    if (em_ptr->r_ptr->flags3 & RF3_NO_CONF) {
+    if (em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF)) {
         em_ptr->dam -= 50;
     }
     if (em_ptr->dam < 1) {
@@ -377,10 +377,10 @@ ProcessResult effect_monster_crusade(PlayerType *player_ptr, EffectMonster *em_p
         return ProcessResult::PROCESS_CONTINUE;
     }
 
-    if ((em_ptr->r_ptr->flags3 & RF3_NO_FEAR) == 0) {
+    if (em_ptr->r_ptr->resistance_flags.has_not(MonsterResistanceType::NO_FEAR)) {
         em_ptr->do_fear = randint1(90) + 10;
     } else if (is_original_ap_and_seen(player_ptr, em_ptr->m_ptr)) {
-        em_ptr->r_ptr->r_flags3 |= RF3_NO_FEAR;
+        em_ptr->r_ptr->r_resistance_flags.set(MonsterResistanceType::NO_FEAR);
     }
 
     em_ptr->dam = 0;
index cbd1515..f425478 100644 (file)
@@ -160,7 +160,7 @@ ProcessResult effect_monster_turn_all(EffectMonster *em_ptr)
 
     em_ptr->do_fear = damroll(3, (em_ptr->dam / 2)) + 1;
     if (em_ptr->r_ptr->kind_flags.has(MonsterKindType::UNIQUE) ||
-        (em_ptr->r_ptr->flags3 & (RF3_NO_FEAR)) ||
+        em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_FEAR) ||
         (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)) {
         em_ptr->note = _("には効果がなかった。", " is unaffected.");
         em_ptr->obvious = false;
index 3320bcf..2f84f86 100644 (file)
@@ -252,13 +252,13 @@ ProcessResult effect_monster_old_sleep(PlayerType *player_ptr, EffectMonster *em
     }
 
     bool has_resistance = em_ptr->r_ptr->kind_flags.has(MonsterKindType::UNIQUE);
-    has_resistance |= any_bits(em_ptr->r_ptr->flags3, RF3_NO_SLEEP);
+    has_resistance |= em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_SLEEP);
     has_resistance |= (em_ptr->r_ptr->level > randint1(std::max(1, em_ptr->dam - 10)) + 10);
 
     if (has_resistance) {
-        if (em_ptr->r_ptr->flags3 & RF3_NO_SLEEP) {
+        if (em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_SLEEP)) {
             if (is_original_ap_and_seen(player_ptr, em_ptr->m_ptr)) {
-                em_ptr->r_ptr->r_flags3 |= (RF3_NO_SLEEP);
+                em_ptr->r_ptr->resistance_flags.set(MonsterResistanceType::NO_SLEEP);
             }
         }
 
@@ -286,12 +286,12 @@ ProcessResult effect_monster_old_conf(PlayerType *player_ptr, EffectMonster *em_
     em_ptr->do_conf = damroll(3, (em_ptr->dam / 2)) + 1;
 
     bool has_resistance = em_ptr->r_ptr->kind_flags.has(MonsterKindType::UNIQUE);
-    has_resistance |= any_bits(em_ptr->r_ptr->flags3, RF3_NO_CONF);
+    has_resistance |= em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF);
     has_resistance |= (em_ptr->r_ptr->level > randint1(std::max(1, em_ptr->dam - 10)) + 10);
     if (has_resistance) {
-        if (em_ptr->r_ptr->flags3 & (RF3_NO_CONF)) {
+        if (em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF)) {
             if (is_original_ap_and_seen(player_ptr, em_ptr->m_ptr)) {
-                em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
+                em_ptr->r_ptr->resistance_flags.set(MonsterResistanceType::NO_CONF);
             }
         }
 
index a897a9d..f63130d 100644 (file)
@@ -119,7 +119,7 @@ static void effect_monster_psi_reflect_extra_effect(PlayerType *player_ptr, Effe
         (void)bss.mod_stun(randint1(em_ptr->dam));
         return;
     case 3:
-        if (any_bits(em_ptr->r_ptr->flags3, RF3_NO_FEAR)) {
+        if (em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_FEAR)) {
             em_ptr->note = _("には効果がなかった。", " is unaffected.");
         } else {
             (void)bss.mod_fear(3 + randint1(em_ptr->dam));
index 5259f43..057276e 100644 (file)
@@ -404,7 +404,7 @@ ProcessResult effect_monster_confusion(PlayerType *player_ptr, EffectMonster *em
         em_ptr->obvious = true;
     }
 
-    if ((em_ptr->r_ptr->flags3 & RF3_NO_CONF) == 0) {
+    if (em_ptr->r_ptr->resistance_flags.has_not(MonsterResistanceType::NO_CONF)) {
         em_ptr->do_conf = (10 + randint1(15) + em_ptr->r) / (em_ptr->r + 1);
         return ProcessResult::PROCESS_CONTINUE;
     }
@@ -413,7 +413,7 @@ ProcessResult effect_monster_confusion(PlayerType *player_ptr, EffectMonster *em
     em_ptr->dam *= 3;
     em_ptr->dam /= randint1(6) + 6;
     if (is_original_ap_and_seen(player_ptr, em_ptr->m_ptr)) {
-        em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
+        em_ptr->r_ptr->resistance_flags.set(MonsterResistanceType::NO_CONF);
     }
 
     return ProcessResult::PROCESS_CONTINUE;
index 79816bb..68292e9 100644 (file)
@@ -80,13 +80,13 @@ ProcessResult effect_monster_mind_blast(PlayerType *player_ptr, EffectMonster *e
     }
 
     bool has_immute = em_ptr->r_ptr->kind_flags.has(MonsterKindType::UNIQUE);
-    has_immute |= any_bits(em_ptr->r_ptr->flags3, RF3_NO_CONF);
+    has_immute |= em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF);
     has_immute |= (em_ptr->r_ptr->level > randint1(std::max(1, em_ptr->caster_lev - 10)) + 10);
 
     if (has_immute) {
-        if (em_ptr->r_ptr->flags3 & (RF3_NO_CONF)) {
+        if (em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF)) {
             if (is_original_ap_and_seen(player_ptr, em_ptr->m_ptr)) {
-                em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
+                em_ptr->r_ptr->resistance_flags.set(MonsterResistanceType::NO_CONF);
             }
         }
 
@@ -128,13 +128,13 @@ ProcessResult effect_monster_brain_smash(PlayerType *player_ptr, EffectMonster *
     }
 
     bool has_immute = em_ptr->r_ptr->kind_flags.has(MonsterKindType::UNIQUE);
-    has_immute |= any_bits(em_ptr->r_ptr->flags3, RF3_NO_CONF);
+    has_immute |= em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF);
     has_immute |= (em_ptr->r_ptr->level > randint1(std::max(1, em_ptr->caster_lev - 10)) + 10);
 
     if (has_immute) {
-        if (em_ptr->r_ptr->flags3 & (RF3_NO_CONF)) {
+        if (em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF)) {
             if (is_original_ap_and_seen(player_ptr, em_ptr->m_ptr)) {
-                em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
+                em_ptr->r_ptr->resistance_flags.set(MonsterResistanceType::NO_CONF);
             }
         }
 
index 60fefad..af5427d 100644 (file)
@@ -215,10 +215,10 @@ ProcessResult effect_monster_engetsu(PlayerType *player_ptr, EffectMonster *em_p
             }
             break;
         case 2:
-            if (em_ptr->r_ptr->kind_flags.has(MonsterKindType::UNIQUE) || any_bits(em_ptr->r_ptr->flags3, RF3_NO_CONF)) {
-                if (any_bits(em_ptr->r_ptr->flags3, RF3_NO_CONF)) {
+            if (em_ptr->r_ptr->kind_flags.has(MonsterKindType::UNIQUE) || em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF)) {
+                if (em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF)) {
                     if (is_original_ap_and_seen(player_ptr, em_ptr->m_ptr)) {
-                        set_bits(em_ptr->r_ptr->r_flags3, RF3_NO_CONF);
+                        em_ptr->r_ptr->r_resistance_flags.set(MonsterResistanceType::NO_CONF);
                     }
                 }
                 em_ptr->do_conf = 0;
@@ -230,10 +230,10 @@ ProcessResult effect_monster_engetsu(PlayerType *player_ptr, EffectMonster *em_p
             }
             break;
         default:
-            if (em_ptr->r_ptr->kind_flags.has(MonsterKindType::UNIQUE) || any_bits(em_ptr->r_ptr->flags3, RF3_NO_SLEEP)) {
-                if (any_bits(em_ptr->r_ptr->flags3, RF3_NO_SLEEP)) {
+            if (em_ptr->r_ptr->kind_flags.has(MonsterKindType::UNIQUE) || em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_SLEEP)) {
+                if (em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_SLEEP)) {
                     if (is_original_ap_and_seen(player_ptr, em_ptr->m_ptr)) {
-                        set_bits(em_ptr->r_ptr->r_flags3, RF3_NO_SLEEP);
+                        em_ptr->r_ptr->r_resistance_flags.set(MonsterResistanceType::NO_SLEEP);
                     }
                 }
                 em_ptr->do_sleep = 0;
index 5390327..b2bf823 100644 (file)
@@ -413,7 +413,7 @@ static void effect_damage_piles_stun(PlayerType *player_ptr, EffectMonster *em_p
     const auto *r_ptr = em_ptr->r_ptr;
     auto can_avoid_stun = em_ptr->do_stun == 0;
     can_avoid_stun |= r_ptr->resistance_flags.has_any_of({ MonsterResistanceType::RESIST_SOUND, MonsterResistanceType::RESIST_FORCE });
-    can_avoid_stun |= any_bits(r_ptr->flags3, RF3_NO_STUN);
+    can_avoid_stun |= r_ptr->resistance_flags.has(MonsterResistanceType::NO_STUN);
     if (can_avoid_stun) {
         return;
     }
@@ -443,7 +443,7 @@ static void effect_damage_piles_stun(PlayerType *player_ptr, EffectMonster *em_p
  */
 static void effect_damage_piles_confusion(PlayerType *player_ptr, EffectMonster *em_ptr)
 {
-    if ((em_ptr->do_conf == 0) || (em_ptr->r_ptr->flags3 & RF3_NO_CONF) || em_ptr->r_ptr->resistance_flags.has_any_of(RFR_EFF_RESIST_CHAOS_MASK)) {
+    if ((em_ptr->do_conf == 0) || (em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF)) || em_ptr->r_ptr->resistance_flags.has_any_of(RFR_EFF_RESIST_CHAOS_MASK)) {
         return;
     }
 
@@ -474,7 +474,7 @@ static void effect_damage_piles_confusion(PlayerType *player_ptr, EffectMonster
  */
 static void effect_damage_piles_fear(PlayerType *player_ptr, EffectMonster *em_ptr)
 {
-    if (em_ptr->do_fear == 0 || any_bits(em_ptr->r_ptr->flags3, RF3_NO_FEAR)) {
+    if (em_ptr->do_fear == 0 || em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::NO_FEAR)) {
         return;
     }
 
index d54f502..b7683d5 100644 (file)
@@ -532,7 +532,7 @@ void set_old_lore(MonsterRaceInfo *r_ptr, BIT_FLAGS f4, const MonsterRaceId r_id
     move_RF4_BR_to_RFR(r_ptr, f4, RF4_BR_WALL, MonsterResistanceType::RESIST_FORCE);
 
     if (f4 & RF4_BR_CONF) {
-        r_ptr->r_flags3 |= RF3_NO_CONF;
+        r_ptr->r_resistance_flags.set(MonsterResistanceType::NO_CONF);
     }
 
     if (r_idx == MonsterRaceId::STORMBRINGER) {
index d0ac367..ee22014 100644 (file)
@@ -231,7 +231,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 = &mam_pp_ptr->m_ptr->get_monrace();
-    if (mam_pp_ptr->m_ptr->is_fearful() || ((r_ptr->flags3 & RF3_NO_FEAR) == 0)) {
+    if (mam_pp_ptr->m_ptr->is_fearful() || (r_ptr->resistance_flags.has_not(MonsterResistanceType::NO_FEAR))) {
         return;
     }
 
index b071555..ebfa277 100644 (file)
@@ -1016,7 +1016,7 @@ bool is_elemental_genocide_effective(MonsterRaceInfo *r_ptr, AttributeType type)
         }
         break;
     case AttributeType::CONFUSION:
-        if (any_bits(r_ptr->flags3, RF3_NO_CONF)) {
+        if (r_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF)) {
             return false;
         }
         break;
index 9d8744b..4ecc04c 100644 (file)
@@ -502,7 +502,7 @@ void mineuchi(PlayerType *player_ptr, player_attack_type *pa_ptr)
     anger_monster(player_ptr, pa_ptr->m_ptr);
 
     auto *r_ptr = &pa_ptr->m_ptr->get_monrace();
-    if ((r_ptr->flags3 & (RF3_NO_STUN))) {
+    if (r_ptr->resistance_flags.has(MonsterResistanceType::NO_STUN)) {
         msg_format(_("%s には効果がなかった。", "%s is not effected."), pa_ptr->m_name);
         return;
     }
index bcf206f..cfa4692 100644 (file)
@@ -51,15 +51,15 @@ static int calc_stun_resistance(player_attack_type *pa_ptr)
         resist_stun += 88;
     }
 
-    if (r_ptr->flags3 & RF3_NO_STUN) {
+    if (r_ptr->resistance_flags.has(MonsterResistanceType::NO_STUN)) {
         resist_stun += 66;
     }
 
-    if (r_ptr->flags3 & RF3_NO_CONF) {
+    if (r_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF)) {
         resist_stun += 33;
     }
 
-    if (r_ptr->flags3 & RF3_NO_SLEEP) {
+    if (r_ptr->resistance_flags.has(MonsterResistanceType::NO_SLEEP)) {
         resist_stun += 33;
     }
 
index 443f6b7..bb46891 100644 (file)
@@ -29,8 +29,8 @@ enum race_flags3 {
     RF3_XXX25 = 0x02000000, /*!< モンスター特性: 未使用 / XXX */
     RF3_XXX26 = 0x04000000, /*!< モンスター特性: 未使用 / XXX */
     RF3_XXX27 = 0x08000000, /*!< モンスター特性: 未使用 / XXX */
-    RF3_NO_FEAR = 0x10000000, /*!< モンスター特性: 恐怖しない / Cannot be scared */
-    RF3_NO_STUN = 0x20000000, /*!< モンスター特性: 朦朧としない / Cannot be stunned */
-    RF3_NO_CONF = 0x40000000, /*!< モンスター特性: 混乱しない / Cannot be confused and resist confusion */
-    RF3_NO_SLEEP = 0x80000000, /*!< モンスター特性: 眠らない / Cannot be slept */
+    RF3_XXX28 = 0x10000000, /*!< モンスター特性: 未使用 / XXX */
+    RF3_XXX29 = 0x20000000, /*!< モンスター特性: 未使用 / XXX */
+    RF3_XXX30 = 0x40000000, /*!< モンスター特性: 未使用 / XXX */
+    RF3_XXX31 = 0x80000000, /*!< モンスター特性: 未使用 / XXX */
 };
index 0bebb20..89bb4d4 100644 (file)
@@ -497,7 +497,7 @@ void MonsterDamageProcessor::add_monster_fear()
     }
 
     auto *r_ptr = &m_ptr->get_monrace();
-    if (m_ptr->is_fearful() || any_bits(r_ptr->flags3, RF3_NO_FEAR)) {
+    if (m_ptr->is_fearful() || r_ptr->resistance_flags.has(MonsterResistanceType::NO_FEAR)) {
         return;
     }
 
index 3d52dfd..51da8c7 100644 (file)
@@ -280,7 +280,7 @@ MonsterSpellResult spell_RF5_SCARE(MONSTER_IDX m_idx, PlayerType *player_ptr, MO
         return res;
     }
 
-    resist = ((tr_ptr->flags3 & RF3_NO_FEAR) != 0);
+    resist = (tr_ptr->resistance_flags.has(MonsterResistanceType::NO_FEAR));
     saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
 
     mspell_cast_msg_bad_status_to_monster msg(_("%s^が恐ろしげな幻覚を作り出した。", "%s^ casts a fearful illusion in front of %s."),
@@ -346,7 +346,7 @@ MonsterSpellResult spell_RF5_BLIND(MONSTER_IDX m_idx, PlayerType *player_ptr, MO
         msg_default = _("%sは呪文を唱えて%sの目を焼き付かせた。", "%s^ casts a spell, burning %s's eyes.");
     }
 
-    resist = ((tr_ptr->flags3 & RF3_NO_CONF) != 0);
+    resist = (tr_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF));
     saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
 
     mspell_cast_msg_bad_status_to_monster msg(msg_default, _("%s^には効果がなかった。", "%s^ is unaffected."),
@@ -403,7 +403,7 @@ MonsterSpellResult spell_RF5_CONF(MONSTER_IDX m_idx, PlayerType *player_ptr, MON
         return res;
     }
 
-    resist = ((tr_ptr->flags3 & RF3_NO_CONF) != 0);
+    resist = (tr_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF));
     saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
 
     mspell_cast_msg_bad_status_to_monster msg(_("%s^が%sの前に幻惑的な幻をつくり出した。", "%s^ casts a mesmerizing illusion in front of %s."),
@@ -460,7 +460,7 @@ MonsterSpellResult spell_RF5_HOLD(MONSTER_IDX m_idx, PlayerType *player_ptr, MON
         return res;
     }
 
-    resist = (tr_ptr->kind_flags.has(MonsterKindType::UNIQUE) || (tr_ptr->flags3 & RF3_NO_STUN) != 0);
+    resist = (tr_ptr->kind_flags.has(MonsterKindType::UNIQUE) || tr_ptr->resistance_flags.has(MonsterResistanceType::NO_STUN));
     saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
 
     mspell_cast_msg_bad_status_to_monster msg(_("%s^は%sをじっと見つめた。", "%s^ stares intently at %s."),
index 9bcf38e..36154b2 100644 (file)
@@ -58,9 +58,9 @@ static void attack_confuse(PlayerType *player_ptr, player_attack_type *pa_ptr, b
     }
 
     auto *r_ptr = pa_ptr->r_ptr;
-    if (r_ptr->flags3 & RF3_NO_CONF) {
+    if (r_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF)) {
         if (is_original_ap_and_seen(player_ptr, pa_ptr->m_ptr)) {
-            r_ptr->r_flags3 |= RF3_NO_CONF;
+            r_ptr->r_resistance_flags.set(MonsterResistanceType::NO_CONF);
         }
         msg_format(_("%s^には効果がなかった。", "%s^ is unaffected."), pa_ptr->m_name);
 
@@ -83,9 +83,9 @@ static void attack_confuse(PlayerType *player_ptr, player_attack_type *pa_ptr, b
 static void attack_stun(PlayerType *player_ptr, player_attack_type *pa_ptr, bool can_resist = true)
 {
     auto *r_ptr = pa_ptr->r_ptr;
-    if (any_bits(r_ptr->flags3, RF3_NO_STUN)) {
+    if (r_ptr->resistance_flags.has(MonsterResistanceType::NO_STUN)) {
         if (is_original_ap_and_seen(player_ptr, pa_ptr->m_ptr)) {
-            set_bits(r_ptr->flags3, RF3_NO_STUN);
+            r_ptr->resistance_flags.set(MonsterResistanceType::NO_STUN);
         }
         msg_format(_("%s^には効果がなかった。", "%s^ is unaffected."), pa_ptr->m_name);
     } else if (can_resist && randint0(100) < r_ptr->level) {
@@ -107,9 +107,9 @@ static void attack_stun(PlayerType *player_ptr, player_attack_type *pa_ptr, bool
 static void attack_scare(PlayerType *player_ptr, player_attack_type *pa_ptr, bool can_resist = true)
 {
     auto *r_ptr = pa_ptr->r_ptr;
-    if (any_bits(r_ptr->flags3, RF3_NO_FEAR)) {
+    if (r_ptr->resistance_flags.has(MonsterResistanceType::NO_FEAR)) {
         if (is_original_ap_and_seen(player_ptr, pa_ptr->m_ptr)) {
-            set_bits(r_ptr->flags3, RF3_NO_FEAR);
+            r_ptr->resistance_flags.set(MonsterResistanceType::NO_FEAR);
         }
         msg_format(_("%s^には効果がなかった。", "%s^ is unaffected."), pa_ptr->m_name);
     } else if (can_resist && randint0(100) < r_ptr->level) {
index db2113c..7c4d1c7 100644 (file)
@@ -38,9 +38,9 @@ bool common_saving_throw_charm(PlayerType *player_ptr, int pow, MonsterEntity *m
         return true;
     }
 
-    if (r_ptr->flags3 & RF3_NO_CONF) {
+    if (r_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF)) {
         if (is_original_ap_and_seen(player_ptr, m_ptr)) {
-            r_ptr->r_flags3 |= (RF3_NO_CONF);
+            r_ptr->resistance_flags.set(MonsterResistanceType::NO_CONF);
         }
         return true;
     }
index 4bde36c..882464b 100644 (file)
@@ -373,22 +373,22 @@ void display_monster_evolution(lore_type *lore_ptr)
 
 void display_monster_concrete_immunities(lore_type *lore_ptr)
 {
-    if (lore_ptr->flags3 & RF3_NO_STUN) {
+    if (lore_ptr->resistance_flags.has(MonsterResistanceType::NO_STUN)) {
         lore_ptr->vp[lore_ptr->vn] = _("朦朧としない", "stunned");
         lore_ptr->color[lore_ptr->vn++] = TERM_ORANGE;
     }
 
-    if (lore_ptr->flags3 & RF3_NO_FEAR) {
+    if (lore_ptr->resistance_flags.has(MonsterResistanceType::NO_FEAR)) {
         lore_ptr->vp[lore_ptr->vn] = _("恐怖を感じない", "frightened");
         lore_ptr->color[lore_ptr->vn++] = TERM_SLATE;
     }
 
-    if (lore_ptr->flags3 & RF3_NO_CONF) {
+    if (lore_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF)) {
         lore_ptr->vp[lore_ptr->vn] = _("混乱しない", "confused");
         lore_ptr->color[lore_ptr->vn++] = TERM_L_UMBER;
     }
 
-    if (lore_ptr->flags3 & RF3_NO_SLEEP) {
+    if (lore_ptr->resistance_flags.has(MonsterResistanceType::NO_SLEEP)) {
         lore_ptr->vp[lore_ptr->vn] = _("眠らされない", "slept");
         lore_ptr->color[lore_ptr->vn++] = TERM_BLUE;
     }