OSDN Git Service

[Refactor] #2647 real_r_idx() をオブジェクトメソッド「monster_type::get_real_r_idx()」にした
authorHourier <66951241+Hourier@users.noreply.github.com>
Sat, 17 Sep 2022 04:03:48 +0000 (13:03 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sun, 18 Sep 2022 11:06:53 +0000 (20:06 +0900)
src/combat/shoot.cpp
src/effect/effect-monster-util.cpp
src/monster/monster-damage.cpp
src/monster/monster-info.cpp
src/monster/monster-info.h
src/mspell/mspell-special.cpp
src/object-use/throw-execution.cpp
src/system/monster-type-definition.cpp
src/system/monster-type-definition.h

index 2298bdf..eb19a60 100644 (file)
@@ -846,7 +846,7 @@ void exe_fire(PlayerType *player_ptr, INVENTORY_IDX item, ObjectType *j_ptr, SPE
 
                     /* Hit the monster, check for death */
                     MonsterDamageProcessor mdp(player_ptr, c_mon_ptr->m_idx, tdam, &fear, attribute_flags);
-                    if (mdp.mon_take_hit(extract_note_dies(real_r_idx(m_ptr)))) {
+                    if (mdp.mon_take_hit(extract_note_dies(m_ptr->get_real_r_idx()))) {
                         /* Dead monster */
                     }
 
index 093dc81..8bea714 100644 (file)
@@ -79,7 +79,7 @@ effect_monster_type *initialize_effect_monster(PlayerType *player_ptr, effect_mo
     em_ptr->heal_leper = false;
     em_ptr->photo = 0;
     em_ptr->note = nullptr;
-    em_ptr->note_dies = extract_note_dies(real_r_idx(em_ptr->m_ptr));
+    em_ptr->note_dies = extract_note_dies(em_ptr->m_ptr->get_real_r_idx());
     em_ptr->caster_lev = (em_ptr->who > 0) ? r_info[em_ptr->m_caster_ptr->r_idx].level : (player_ptr->lev * 2);
     return em_ptr;
 }
index db1413b..41cc784 100644 (file)
@@ -190,7 +190,7 @@ void MonsterDamageProcessor::death_special_flag_monster()
 
     if (m_ptr->mflag2.has(MonsterConstantFlagType::CHAMELEON)) {
         r_ptr = real_r_ptr(m_ptr);
-        r_idx = real_r_idx(m_ptr);
+        r_idx = m_ptr->get_real_r_idx();
         if (r_ptr->r_sights < MAX_SHORT) {
             r_ptr->r_sights++;
         }
index e5eaf5b..a7d2a9e 100644 (file)
@@ -273,21 +273,7 @@ bool is_original_ap_and_seen(PlayerType *player_ptr, const monster_type *m_ptr)
  */
 monster_race *real_r_ptr(monster_type *m_ptr)
 {
-    return &r_info[real_r_idx(m_ptr)];
-}
-
-MonsterRaceId real_r_idx(monster_type *m_ptr)
-{
-    auto *r_ptr = &r_info[m_ptr->r_idx];
-    if (m_ptr->mflag2.has(MonsterConstantFlagType::CHAMELEON)) {
-        if (r_ptr->kind_flags.has(MonsterKindType::UNIQUE)) {
-            return MonsterRaceId::CHAMELEON_K;
-        } else {
-            return MonsterRaceId::CHAMELEON;
-        }
-    }
-
-    return m_ptr->r_idx;
+    return &r_info[m_ptr->get_real_r_idx()];
 }
 
 /*!
index 7ac04d6..c7dc00f 100644 (file)
@@ -18,5 +18,4 @@ bool monster_has_hostile_align(PlayerType *player_ptr, monster_type *m_ptr, int
 bool is_original_ap_and_seen(PlayerType *player_ptr, const monster_type *m_ptr);
 
 monster_race *real_r_ptr(monster_type *m_ptr);
-MonsterRaceId real_r_idx(monster_type *m_ptr);
 void monster_name(PlayerType *player_ptr, MONSTER_IDX m_idx, char *m_name);
index 6c0005d..3fdcd18 100644 (file)
@@ -224,11 +224,12 @@ static MonsterSpellResult spell_RF6_SPECIAL_B(PlayerType *player_ptr, POSITION y
     }
 
     if (monster_to_player && player_ptr->riding) {
-        mon_take_hit_mon(player_ptr, player_ptr->riding, dam, &dead, &fear, extract_note_dies(real_r_idx(&floor_ptr->m_list[player_ptr->riding])), m_idx);
+        const auto &m_ref = floor_ptr->m_list[player_ptr->riding];
+        mon_take_hit_mon(player_ptr, player_ptr->riding, dam, &dead, &fear, extract_note_dies(m_ref.get_real_r_idx()), m_idx);
     }
 
     if (monster_to_monster) {
-        mon_take_hit_mon(player_ptr, t_idx, dam, &dead, &fear, extract_note_dies(real_r_idx(t_ptr)), m_idx);
+        mon_take_hit_mon(player_ptr, t_idx, dam, &dead, &fear, extract_note_dies(t_ptr->get_real_r_idx()), m_idx);
     }
 
     return MonsterSpellResult::make_valid();
index 2aaa640..d9de18b 100644 (file)
@@ -441,7 +441,7 @@ void ObjectThrowEntity::attack_racial_power()
     }
 
     MonsterDamageProcessor mdp(this->player_ptr, this->g_ptr->m_idx, this->tdam, &fear, attribute_flags);
-    if (mdp.mon_take_hit(extract_note_dies(real_r_idx(this->m_ptr)))) {
+    if (mdp.mon_take_hit(extract_note_dies(this->m_ptr->get_real_r_idx()))) {
         return;
     }
 
index c9c5cfb..e9b73a5 100644 (file)
@@ -60,3 +60,17 @@ bool monster_type::is_valid() const
 {
     return MonsterRace(this->r_idx).is_valid();
 }
+
+MonsterRaceId monster_type::get_real_r_idx() const
+{
+    auto *r_ptr = &r_info[this->r_idx];
+    if (this->mflag2.has(MonsterConstantFlagType::CHAMELEON)) {
+        if (r_ptr->kind_flags.has(MonsterKindType::UNIQUE)) {
+            return MonsterRaceId::CHAMELEON_K;
+        } else {
+            return MonsterRaceId::CHAMELEON;
+        }
+    }
+
+    return this->r_idx;
+}
index 77fc8a4..c747bac 100644 (file)
@@ -58,4 +58,5 @@ struct monster_type {
     bool is_original_ap() const;
     bool is_mimicry() const;
     bool is_valid() const;
+    MonsterRaceId get_real_r_idx() const;
 };