OSDN Git Service

[Refactor] #2649 Renamed struct monster_type to MonsterEntity
authorHourier <66951241+Hourier@users.noreply.github.com>
Tue, 15 Nov 2022 12:32:46 +0000 (21:32 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Tue, 15 Nov 2022 12:36:37 +0000 (21:36 +0900)
122 files changed:
src/action/movement-execution.cpp
src/action/mutation-execution.cpp
src/avatar/avatar-changer.cpp
src/avatar/avatar-changer.h
src/blue-magic/blue-magic-caster.cpp
src/cmd-action/cmd-mane.cpp
src/cmd-action/cmd-pet.cpp
src/combat/shoot.cpp
src/combat/shoot.h
src/combat/slaying.cpp
src/combat/slaying.h
src/core/object-compressor.cpp
src/core/player-processor.cpp
src/dungeon/quest-completion-checker.cpp
src/dungeon/quest-completion-checker.h
src/effect/effect-monster-charm.cpp
src/effect/effect-monster-util.h
src/effect/effect-player.h
src/floor/floor-changer.cpp
src/floor/floor-generator.cpp
src/floor/floor-leaver.cpp
src/floor/floor-save-util.cpp
src/floor/floor-save-util.h
src/floor/floor-save.cpp
src/floor/geometry.cpp
src/floor/geometry.h
src/grid/trap.cpp
src/knowledge/knowledge-monsters.cpp
src/load/dummy-loader.cpp
src/load/monster/monster-loader-base.h
src/load/monster/monster-loader-factory.h
src/load/old/load-v1-5-0.cpp
src/load/old/load-v1-5-0.h
src/load/old/monster-loader-savefile50.cpp
src/load/old/monster-loader-savefile50.h
src/main/scene-table-monster.cpp
src/melee/melee-postprocess.cpp
src/melee/melee-spell-util.h
src/melee/melee-util.h
src/mind/mind-cavalry.cpp
src/mind/mind-ninja.cpp
src/mind/mind-samurai.cpp
src/mind/mind-samurai.h
src/mind/mind-sniper.cpp
src/mind/mind-sniper.h
src/monster-attack/monster-attack-player.h
src/monster-attack/monster-attack-processor.cpp
src/monster-floor/monster-death-util.h
src/monster-floor/monster-direction.cpp
src/monster-floor/monster-lite-util.cpp
src/monster-floor/monster-lite-util.h
src/monster-floor/monster-lite.cpp
src/monster-floor/monster-move.cpp
src/monster-floor/monster-move.h
src/monster-floor/monster-object.cpp
src/monster-floor/monster-object.h
src/monster-floor/monster-remover.cpp
src/monster-floor/monster-runaway.cpp
src/monster-floor/monster-safety-hiding.cpp
src/monster-floor/one-monster-placer.cpp
src/monster/monster-compaction.cpp
src/monster/monster-damage.cpp
src/monster/monster-damage.h
src/monster/monster-describer.cpp
src/monster/monster-describer.h
src/monster/monster-info.cpp
src/monster/monster-info.h
src/monster/monster-list.cpp
src/monster/monster-processor-util.h
src/monster/monster-processor.cpp
src/monster/monster-status-setter.cpp
src/monster/monster-status-setter.h
src/monster/monster-status.cpp
src/monster/monster-status.h
src/monster/monster-update.cpp
src/monster/monster-update.h
src/mspell/mspell-attack-util.h
src/mspell/mspell-checker.cpp
src/mspell/mspell-checker.h
src/mspell/mspell-floor.cpp
src/mspell/mspell-judgement.cpp
src/mspell/mspell-judgement.h
src/mspell/mspell-lite.cpp
src/mspell/mspell-lite.h
src/mspell/mspell-special.cpp
src/mspell/mspell-status.cpp
src/mspell/mspell-util.cpp
src/object-activation/activation-others.cpp
src/object-use/throw-execution.h
src/object/warning.cpp
src/player-attack/player-attack-util.h
src/player-attack/player-attack.cpp
src/player/eldritch-horror.cpp
src/player/eldritch-horror.h
src/player/player-damage.cpp
src/player/player-damage.h
src/player/player-move.cpp
src/player/player-status-flags.cpp
src/realm/realm-hissatsu.cpp
src/room/rooms-pit-nest.cpp
src/save/monster-writer.cpp
src/save/monster-writer.h
src/spell-kind/spells-fetcher.cpp
src/spell-kind/spells-polymorph.cpp
src/spell-kind/spells-sight.cpp
src/spell-kind/spells-sight.h
src/spell-kind/spells-teleport.cpp
src/spell-kind/spells-world.cpp
src/spell/spells-diceroll.cpp
src/spell/spells-diceroll.h
src/spell/spells-status.cpp
src/spell/spells-status.h
src/spell/spells-summon.cpp
src/system/floor-type-definition.h
src/system/monster-type-definition.cpp
src/system/monster-type-definition.h
src/target/target-describer.cpp
src/util/sort.cpp
src/view/display-monster-status.cpp
src/view/display-monster-status.h
src/window/display-sub-windows.cpp
src/window/main-window-left-frame.cpp

index 4c0be31..b63f999 100644 (file)
@@ -206,7 +206,7 @@ void exe_movement(PlayerType *player_ptr, DIRECTION dir, bool do_pickup, bool br
         }
     }
 
-    monster_type *riding_m_ptr = &floor_ptr->m_list[player_ptr->riding];
+    MonsterEntity *riding_m_ptr = &floor_ptr->m_list[player_ptr->riding];
     PlayerEnergy energy(player_ptr);
     if (can_move && player_ptr->riding) {
         const auto *riding_r_ptr = &monraces_info[riding_m_ptr->r_idx];
index 36a2259..42822db 100644 (file)
@@ -254,7 +254,7 @@ bool exe_mutation_power(PlayerType *player_ptr, PlayerMutationType power)
             return true;
         }
 
-        monster_type *m_ptr;
+        MonsterEntity *m_ptr;
         m_ptr = &player_ptr->current_floor_ptr->m_list[g_ptr->m_idx];
         monster_race *r_ptr;
         r_ptr = &monraces_info[m_ptr->r_idx];
index ca8607f..f113e4c 100644 (file)
@@ -24,7 +24,7 @@
 /*!
  * @brief AvaterChangerコンストラクタ
  */
-AvatarChanger::AvatarChanger(PlayerType *player_ptr, monster_type *m_ptr)
+AvatarChanger::AvatarChanger(PlayerType *player_ptr, MonsterEntity *m_ptr)
     : player_ptr(player_ptr)
     , m_ptr(m_ptr)
 {
index e9337df..e7a0cfe 100644 (file)
@@ -2,17 +2,17 @@
 
 #include "system/angband.h"
 
-struct monster_type;
+class MonsterEntity;
 class PlayerType;
 class AvatarChanger {
 public:
-    AvatarChanger(PlayerType *player_ptr, monster_type *m_ptr);
+    AvatarChanger(PlayerType *player_ptr, MonsterEntity *m_ptr);
     virtual ~AvatarChanger() = default;
     void change_virtue();
 
 private:
     PlayerType *player_ptr;
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     void change_virtue_non_beginner();
     void change_virtue_unique();
     void change_virtue_good_evil();
index 28ff0ef..fa80720 100644 (file)
@@ -95,7 +95,7 @@ static bool cast_blue_hand_doom(PlayerType *player_ptr, bmc_type *bmc_ptr)
 
 static bool exe_blue_teleport_back(PlayerType *player_ptr, GAME_TEXT *m_name)
 {
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     monster_race *r_ptr;
     auto *floor_ptr = player_ptr->current_floor_ptr;
     if ((floor_ptr->grid_array[target_row][target_col].m_idx == 0) || !player_has_los_bold(player_ptr, target_row, target_col) || !projectable(player_ptr, player_ptr->y, player_ptr->x, target_row, target_col)) {
index cddccf9..843d85f 100644 (file)
@@ -931,7 +931,7 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
     case MonsterAbilityType::SPECIAL:
         break;
     case MonsterAbilityType::TELE_TO: {
-        monster_type *m_ptr;
+        MonsterEntity *m_ptr;
         monster_race *r_ptr;
         GAME_TEXT m_name[MAX_NLEN];
 
index 83cc0f8..9cdbc67 100644 (file)
@@ -75,7 +75,7 @@
  */
 void do_cmd_pet_dismiss(PlayerType *player_ptr)
 {
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     bool all_pets = false;
     int Dismissed = 0;
 
@@ -206,7 +206,7 @@ bool do_cmd_riding(PlayerType *player_ptr, bool force)
     POSITION x, y;
     DIRECTION dir = 0;
     grid_type *g_ptr;
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
 
     if (!get_direction(player_ptr, &dir, false, false)) {
         return false;
@@ -320,7 +320,7 @@ bool do_cmd_riding(PlayerType *player_ptr, bool force)
  */
 static void do_name_pet(PlayerType *player_ptr)
 {
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     char out_val[20];
     GAME_TEXT m_name[MAX_NLEN];
     bool old_name = false;
@@ -392,7 +392,7 @@ void do_cmd_pet(PlayerType *player_ptr)
     bool flag, redraw;
     char choice;
     int pet_ctr;
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     auto command_idx = 0;
     int menu_line = use_menu ? 1 : 0;
     auto num = 0;
index ef6e231..96f46b7 100644 (file)
@@ -151,7 +151,7 @@ AttributeFlags shot_attribute(PlayerType *player_ptr, ItemEntity *bow_ptr, ItemE
  * @return スレイ倍率をかけたダメージ量
  */
 static MULTIPLY calc_shot_damage_with_slay(
-    PlayerType *player_ptr, ItemEntity *bow_ptr, ItemEntity *arrow_ptr, int tdam, monster_type *monster_ptr, SPELL_IDX snipe_type)
+    PlayerType *player_ptr, ItemEntity *bow_ptr, ItemEntity *arrow_ptr, int tdam, MonsterEntity *monster_ptr, SPELL_IDX snipe_type)
 {
     MULTIPLY mult = 10;
 
@@ -999,7 +999,7 @@ void exe_fire(PlayerType *player_ptr, INVENTORY_IDX item, ItemEntity *j_ptr, SPE
  * @return 命中と判定された場合TRUEを返す
  * @note Always miss 5%, always hit 5%, otherwise random.
  */
-bool test_hit_fire(PlayerType *player_ptr, int chance, monster_type *m_ptr, int vis, char *o_name)
+bool test_hit_fire(PlayerType *player_ptr, int chance, MonsterEntity *m_ptr, int vis, char *o_name)
 {
     int k;
     ARMOUR_CLASS ac;
index df230f9..253fc95 100644 (file)
@@ -2,10 +2,10 @@
 
 #include "system/angband.h"
 
-struct monster_type;
+class MonsterEntity;
 class ItemEntity;
 class PlayerType;
-bool test_hit_fire(PlayerType *player_ptr, int chance, monster_type *m_ptr, int vis, char *o_name);
+bool test_hit_fire(PlayerType *player_ptr, int chance, MonsterEntity *m_ptr, int vis, char *o_name);
 int critical_shot(PlayerType *player_ptr, WEIGHT weight, int plus_ammo, int plus_bow, int dam);
 ENERGY bow_energy(OBJECT_SUBTYPE_VALUE sval);
 int bow_tmul(OBJECT_SUBTYPE_VALUE sval);
index 7ce3b2d..21e9829 100644 (file)
@@ -32,7 +32,7 @@
  * @param m_ptr 目標モンスターの構造体参照ポインタ
  * @return スレイング加味後の倍率(/10倍)
  */
-MULTIPLY mult_slaying(PlayerType *player_ptr, MULTIPLY mult, const TrFlags &flgs, monster_type *m_ptr)
+MULTIPLY mult_slaying(PlayerType *player_ptr, MULTIPLY mult, const TrFlags &flgs, MonsterEntity *m_ptr)
 {
     static const struct slay_table_t {
         tr_type slay_flag;
@@ -87,7 +87,7 @@ MULTIPLY mult_slaying(PlayerType *player_ptr, MULTIPLY mult, const TrFlags &flgs
  * @param m_ptr 目標モンスターの構造体参照ポインタ
  * @return スレイング加味後の倍率(/10倍)
  */
-MULTIPLY mult_brand(PlayerType *player_ptr, MULTIPLY mult, const TrFlags &flgs, monster_type *m_ptr)
+MULTIPLY mult_brand(PlayerType *player_ptr, MULTIPLY mult, const TrFlags &flgs, MonsterEntity *m_ptr)
 {
     static const struct brand_table_t {
         tr_type brand_flag;
@@ -150,7 +150,7 @@ MULTIPLY mult_brand(PlayerType *player_ptr, MULTIPLY mult, const TrFlags &flgs,
  * Note that most brands and slays are x3, except Slay Animal (x2),\n
  * Slay Evil (x2), and Kill dragon (x5).\n
  */
-int calc_attack_damage_with_slay(PlayerType *player_ptr, ItemEntity *o_ptr, int tdam, monster_type *m_ptr, combat_options mode, bool thrown)
+int calc_attack_damage_with_slay(PlayerType *player_ptr, ItemEntity *o_ptr, int tdam, MonsterEntity *m_ptr, combat_options mode, bool thrown)
 {
     auto flgs = object_flags(o_ptr);
     torch_flags(o_ptr, flgs); /* torches has secret flags */
index 9ca9546..35e4a74 100644 (file)
@@ -6,10 +6,10 @@
 #include "effect/attribute-types.h"
 #include "object-enchant/tr-flags.h"
 
-struct monster_type;
+class MonsterEntity;
 class ItemEntity;
 class PlayerType;
-MULTIPLY mult_slaying(PlayerType *player_ptr, MULTIPLY mult, const TrFlags &flgs, monster_type *m_ptr);
-MULTIPLY mult_brand(PlayerType *player_ptr, MULTIPLY mult, const TrFlags &flgs, monster_type *m_ptr);
-int calc_attack_damage_with_slay(PlayerType *player_ptr, ItemEntity *o_ptr, int tdam, monster_type *m_ptr, combat_options mode, bool thrown);
+MULTIPLY mult_slaying(PlayerType *player_ptr, MULTIPLY mult, const TrFlags &flgs, MonsterEntity *m_ptr);
+MULTIPLY mult_brand(PlayerType *player_ptr, MULTIPLY mult, const TrFlags &flgs, MonsterEntity *m_ptr);
+int calc_attack_damage_with_slay(PlayerType *player_ptr, ItemEntity *o_ptr, int tdam, MonsterEntity *m_ptr, combat_options mode, bool thrown);
 AttributeFlags melee_attribute(PlayerType *player_ptr, ItemEntity *o_ptr, combat_options mode);
index 9a4b3b8..2506f58 100644 (file)
@@ -74,7 +74,7 @@ void compact_objects(PlayerType *player_ptr, int size)
 
             POSITION y, x;
             if (o_ptr->is_held_by_monster()) {
-                monster_type *m_ptr;
+                MonsterEntity *m_ptr;
                 m_ptr = &floor_ptr->m_list[o_ptr->held_m_idx];
                 y = m_ptr->fy;
                 x = m_ptr->fx;
index 933ed1e..7be21f5 100644 (file)
@@ -338,7 +338,7 @@ void process_player(PlayerType *player_ptr)
             }
 
             for (MONSTER_IDX m_idx = 1; m_idx < player_ptr->current_floor_ptr->m_max; m_idx++) {
-                monster_type *m_ptr;
+                MonsterEntity *m_ptr;
                 monster_race *r_ptr;
                 m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
                 if (!m_ptr->is_valid()) {
index 7de7377..7ae6e6b 100644 (file)
@@ -22,7 +22,7 @@
 #include "view/display-messages.h"
 #include <algorithm>
 
-QuestCompletionChecker::QuestCompletionChecker(PlayerType *player_ptr, monster_type *m_ptr)
+QuestCompletionChecker::QuestCompletionChecker(PlayerType *player_ptr, MonsterEntity *m_ptr)
     : player_ptr(player_ptr)
     , m_ptr(m_ptr)
 {
@@ -55,7 +55,7 @@ void QuestCompletionChecker::complete()
     this->make_reward(pos);
 }
 
-static bool check_quest_completion(PlayerType *player_ptr, const quest_type &q_ref, monster_type *m_ptr)
+static bool check_quest_completion(PlayerType *player_ptr, const quest_type &q_ref, MonsterEntity *m_ptr)
 {
     auto *floor_ptr = player_ptr->current_floor_ptr;
     if (q_ref.status != QuestStatusType::TAKEN) {
index 8e37971..0f24bfd 100644 (file)
@@ -5,20 +5,20 @@
 #include "util/point-2d.h"
 #include <tuple>
 
-struct monster_type;
+class MonsterEntity;
 class ItemEntity;
 class PlayerType;
 struct quest_type;
 class QuestCompletionChecker {
 public:
-    QuestCompletionChecker(PlayerType *player_ptr, monster_type *m_ptr);
+    QuestCompletionChecker(PlayerType *player_ptr, MonsterEntity *m_ptr);
     virtual ~QuestCompletionChecker() = default;
 
     void complete();
 
 private:
     PlayerType *player_ptr;
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     QuestId quest_idx;
     quest_type *q_ptr = nullptr;
 
index c35aabf..d80a33f 100644 (file)
@@ -394,7 +394,7 @@ ProcessResult effect_monster_crusade(PlayerType *player_ptr, effect_monster_type
  * @param hp 計算対象のHP
  * @return 捕まえられる最大HP
  */
-static int calcutate_capturable_hp(PlayerType *player_ptr, monster_type *m_ptr, int hp)
+static int calcutate_capturable_hp(PlayerType *player_ptr, MonsterEntity *m_ptr, int hp)
 {
     if (m_ptr->is_pet()) {
         return hp * 4L;
index 6c6cf29..4b55276 100644 (file)
@@ -5,12 +5,12 @@
 
 struct grid_type;
 ;
-struct monster_type;
+class MonsterEntity;
 struct monster_race;
 struct effect_monster_type {
     grid_type *g_ptr;
-    monster_type *m_ptr;
-    monster_type *m_caster_ptr;
+    MonsterEntity *m_ptr;
+    MonsterEntity *m_caster_ptr;
     monster_race *r_ptr;
     char killer[MAX_MONSTER_NAME];
     bool seen;
index 96298fe..a28b6c1 100644 (file)
@@ -4,11 +4,11 @@
 #include "system/angband.h"
 #include <optional>
 
-struct monster_type;
+class MonsterEntity;
 class EffectPlayerType {
 public:
     DEPTH rlev; // モンスターのレベル (但し0のモンスターは1になる).
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     char killer[MAX_MONSTER_NAME];
     GAME_TEXT m_name[MAX_NLEN];
     int get_damage;
index dab9d97..6c76376 100644 (file)
@@ -165,7 +165,7 @@ static void place_pet(PlayerType *player_ptr)
         }
     }
 
-    std::fill(std::begin(party_mon), std::end(party_mon), monster_type{});
+    std::fill(std::begin(party_mon), std::end(party_mon), MonsterEntity{});
 }
 
 /*!
index 5ba4992..a9732b9 100644 (file)
@@ -369,7 +369,7 @@ void clear_cave(PlayerType *player_ptr)
         r_ref.cur_num = 0;
     }
 
-    std::fill_n(floor_ptr->m_list.begin(), floor_ptr->m_max, monster_type{});
+    std::fill_n(floor_ptr->m_list.begin(), floor_ptr->m_max, MonsterEntity{});
     floor_ptr->m_max = 1;
     floor_ptr->m_cnt = 0;
     for (int i = 0; i < MAX_MTIMED; i++) {
index 62af6a9..7697b6f 100644 (file)
@@ -50,7 +50,7 @@ static void check_riding_preservation(PlayerType *player_ptr)
     }
 }
 
-static bool check_pet_preservation_conditions(PlayerType *player_ptr, monster_type *m_ptr)
+static bool check_pet_preservation_conditions(PlayerType *player_ptr, MonsterEntity *m_ptr)
 {
     if (reinit_wilderness) {
         return false;
@@ -220,7 +220,7 @@ static void get_out_monster(PlayerType *player_ptr)
     }
 
     while (true) {
-        monster_type *m_ptr;
+        MonsterEntity *m_ptr;
         POSITION ny = rand_spread(oy, dis);
         POSITION nx = rand_spread(ox, dis);
         tries++;
index f5c6ee6..09996ab 100644 (file)
@@ -9,4 +9,4 @@ saved_floor_type saved_floors[MAX_SAVED_FLOORS];
 FLOOR_IDX max_floor_id; /*!< Number of floor_id used from birth */
 FLOOR_IDX new_floor_id; /*!<次のフロアのID / floor_id of the destination */
 uint32_t latest_visit_mark; /*!<フロアを渡った回数?(確認中) / Max number of visit_mark */
-monster_type party_mon[MAX_PARTY_MON]; /*!< フロア移動に保存するペットモンスターの配列 */
+MonsterEntity party_mon[MAX_PARTY_MON]; /*!< フロア移動に保存するペットモンスターの配列 */
index ac26597..b0b3b60 100644 (file)
@@ -22,4 +22,4 @@ extern FLOOR_IDX max_floor_id;
 
 extern FLOOR_IDX new_floor_id;
 extern uint32_t latest_visit_mark;
-extern monster_type party_mon[MAX_PARTY_MON];
+extern MonsterEntity party_mon[MAX_PARTY_MON];
index ca64294..1f55d95 100644 (file)
@@ -210,7 +210,7 @@ FLOOR_IDX get_new_floor_id(PlayerType *player_ptr)
  */
 void precalc_cur_num_of_pet(PlayerType *player_ptr)
 {
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     int max_num = player_ptr->wild_mode ? 1 : MAX_PARTY_MON;
     for (int i = 0; i < max_num; i++) {
         m_ptr = &party_mon[i];
index c460b90..8fec347 100644 (file)
@@ -250,7 +250,7 @@ void mmove2(POSITION *y, POSITION *x, POSITION y1, POSITION x1, POSITION y2, POS
  * @return 個々のモンスターがプレイヤーが見えたらTRUE
  * @todo is_seen() の関数マクロをバラそうとしたがインクルード関係のコンパイルエラーで失敗
  */
-bool is_seen(PlayerType *player_ptr, monster_type *m_ptr)
+bool is_seen(PlayerType *player_ptr, MonsterEntity *m_ptr)
 {
     bool is_inside_view = !ignore_unview;
     is_inside_view |= player_ptr->phase_out;
index 7b0622d..c4cc8ae 100644 (file)
@@ -34,5 +34,5 @@ POSITION distance(POSITION y1, POSITION x1, POSITION y2, POSITION x2);
 void mmove2(POSITION *y, POSITION *x, POSITION y1, POSITION x1, POSITION y2, POSITION x2);
 bool player_can_see_bold(PlayerType *player_ptr, POSITION y, POSITION x);
 
-struct monster_type;
-bool is_seen(PlayerType *player_ptr, monster_type *m_ptr);
+class MonsterEntity;
+bool is_seen(PlayerType *player_ptr, MonsterEntity *m_ptr);
index 66f1232..2abe2c7 100644 (file)
@@ -606,8 +606,8 @@ void hit_trap(PlayerType *player_ptr, bool break_trap)
 
                 /* Let them fight each other */
                 if (evil_idx && good_idx) {
-                    monster_type *evil_ptr = &player_ptr->current_floor_ptr->m_list[evil_idx];
-                    monster_type *good_ptr = &player_ptr->current_floor_ptr->m_list[good_idx];
+                    MonsterEntity *evil_ptr = &player_ptr->current_floor_ptr->m_list[evil_idx];
+                    MonsterEntity *good_ptr = &player_ptr->current_floor_ptr->m_list[good_idx];
                     evil_ptr->target_y = good_ptr->fy;
                     evil_ptr->target_x = good_ptr->fx;
                     good_ptr->target_y = evil_ptr->fy;
index faff6eb..1c342e9 100644 (file)
@@ -117,7 +117,7 @@ void do_cmd_knowledge_pets(PlayerType *player_ptr)
         return;
     }
 
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     GAME_TEXT pet_name[MAX_NLEN];
     int t_friends = 0;
     for (int i = player_ptr->current_floor_ptr->m_max - 1; i >= 1; i--) {
index 57d5406..ec3d22d 100644 (file)
@@ -41,7 +41,7 @@ void rd_dummy_monsters(PlayerType *player_ptr)
     }
 
     auto tmp16s = rd_s16b();
-    monster_type dummy_mon;
+    MonsterEntity dummy_mon;
     auto monster_loader = MonsterLoaderFactory::create_loader(player_ptr);
     for (int i = 0; i < tmp16s; i++) {
         monster_loader->rd_monster(&dummy_mon);
index 5e21330..c67a650 100644 (file)
@@ -1,11 +1,11 @@
 #pragma once
 
-struct monster_type;
+class MonsterEntity;
 class PlayerType;
 class MonsterLoaderBase {
 public:
     virtual ~MonsterLoaderBase() = default;
-    virtual void rd_monster(monster_type *m_ptr) = 0;
+    virtual void rd_monster(MonsterEntity *m_ptr) = 0;
 
 protected:
     MonsterLoaderBase() = default;
index 6aed27c..8a5589b 100644 (file)
@@ -4,7 +4,7 @@
 
 enum class MonsterLoaderVersionType;
 class PlayerType;
-struct monster_type;
+class MonsterEntity;
 class MonsterLoaderBase;
 class MonsterLoaderFactory {
 public:
index 3e4d2ff..465b60f 100644 (file)
@@ -359,7 +359,7 @@ void rd_item_old(ItemEntity *o_ptr)
  * @param player_ptr プレイヤーへの参照ポインタ
  * @param m_ptr モンスター保存先ポインタ
  */
-void rd_monster_old(PlayerType *player_ptr, monster_type *m_ptr)
+void rd_monster_old(PlayerType *player_ptr, MonsterEntity *m_ptr)
 {
     m_ptr->r_idx = i2enum<MonsterRaceId>(rd_s16b());
 
index 03025fc..f205d64 100644 (file)
@@ -39,6 +39,6 @@ extern const int QUEST_ROYAL_CRYPT;
 class ItemEntity;
 class PlayerType;
 void rd_item_old(ItemEntity *o_ptr);
-void rd_monster_old(PlayerType *player_ptr, monster_type *m_ptr);
+void rd_monster_old(PlayerType *player_ptr, MonsterEntity *m_ptr);
 void set_old_lore(monster_race *r_ptr, BIT_FLAGS f4, const MonsterRaceId r_idx);
 errr rd_dungeon_old(PlayerType *player_ptr);
index ac50c8b..6f0a740 100644 (file)
@@ -17,7 +17,7 @@ MonsterLoader50::MonsterLoader50(PlayerType *player_ptr)
 /*!
  * @brief モンスターを読み込む(v3.0.0 Savefile ver50まで)
  */
-void MonsterLoader50::rd_monster(monster_type *m_ptr_)
+void MonsterLoader50::rd_monster(MonsterEntity *m_ptr_)
 {
     this->m_ptr = m_ptr_;
     if (h_older_than(1, 5, 0, 0)) {
index 8de6199..1ec4532 100644 (file)
@@ -2,14 +2,14 @@
 
 #include "load/monster/monster-loader-base.h"
 
-struct monster_type;
+class MonsterEntity;
 class PlayerType;
 class MonsterLoader50 : public MonsterLoaderBase {
 public:
     MonsterLoader50(PlayerType *player_ptr);
-    void rd_monster(monster_type *m_ptr) override;
+    void rd_monster(MonsterEntity *m_ptr) override;
 
 private:
     PlayerType *player_ptr;
-    monster_type *m_ptr = nullptr;
+    MonsterEntity *m_ptr = nullptr;
 };
index 9f04541..886f777 100644 (file)
@@ -24,7 +24,7 @@ struct scene_monster_info {
 
 scene_monster_info scene_target_monster;
 
-inline static bool has_shadower_flag(monster_type *m_ptr)
+inline static bool has_shadower_flag(MonsterEntity *m_ptr)
 {
     return m_ptr->mflag2.has(MonsterConstantFlagType::KAGE);
 }
index ec19298..a6a4d20 100644 (file)
@@ -48,7 +48,7 @@
 // Melee-post-process-type
 struct mam_pp_type {
     MONSTER_IDX m_idx;
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     bool seen;
     GAME_TEXT m_name[160];
     int dam;
index b747e2b..ae2c304 100644 (file)
@@ -7,7 +7,7 @@
 #include "util/flag-group.h"
 
 struct monster_race;
-struct monster_type;
+class MonsterEntity;
 struct melee_spell_type {
     MONSTER_IDX m_idx;
     POSITION y;
@@ -22,8 +22,8 @@ struct melee_spell_type {
     char m_poss[160];
 #endif
 
-    monster_type *m_ptr;
-    monster_type *t_ptr;
+    MonsterEntity *m_ptr;
+    MonsterEntity *t_ptr;
     monster_race *r_ptr;
     bool see_m;
     bool maneable;
index 9f77cb4..10aa63f 100644 (file)
@@ -8,13 +8,13 @@
 enum class BlowEffectType;
 
 /* monster-attack-monster type*/
-struct monster_type;
+class MonsterEntity;
 struct mam_type {
     BlowEffectType attribute;
     MONSTER_IDX m_idx;
     MONSTER_IDX t_idx;
-    monster_type *m_ptr;
-    monster_type *t_ptr;
+    MonsterEntity *m_ptr;
+    MonsterEntity *t_ptr;
     GAME_TEXT m_name[MAX_NLEN];
     GAME_TEXT t_name[MAX_NLEN];
     int damage;
index 656ced9..53663b5 100644 (file)
@@ -29,7 +29,7 @@
 bool rodeo(PlayerType *player_ptr)
 {
     GAME_TEXT m_name[MAX_NLEN];
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     monster_race *r_ptr;
     int rlev;
 
index 0be185b..572a303 100644 (file)
@@ -171,7 +171,7 @@ bool rush_attack(PlayerType *player_ptr, bool *mdeath)
     bool tmp_mdeath = false;
     bool moved = false;
     for (const auto &[ny, nx] : path_g) {
-        monster_type *m_ptr;
+        MonsterEntity *m_ptr;
 
         if (is_cave_empty_bold(player_ptr, ny, nx) && player_can_enter(player_ptr, floor_ptr->grid_array[ny][nx].feat, 0)) {
             ty = ny;
index 5e2f9cb..9ee541f 100644 (file)
 struct samurai_slaying_type {
     MULTIPLY mult;
     TrFlags flags;
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     combat_options mode;
     monster_race *r_ptr;
 };
 
 static samurai_slaying_type *initialize_samurai_slaying_type(
-    samurai_slaying_type *samurai_slaying_ptr, MULTIPLY mult, const TrFlags &flags, monster_type *m_ptr, combat_options mode, monster_race *r_ptr)
+    samurai_slaying_type *samurai_slaying_ptr, MULTIPLY mult, const TrFlags &flags, MonsterEntity *m_ptr, combat_options mode, monster_race *r_ptr)
 {
     samurai_slaying_ptr->mult = mult;
     samurai_slaying_ptr->flags = flags;
@@ -322,7 +322,7 @@ static void hissatsu_keiun_kininken(PlayerType *player_ptr, samurai_slaying_type
  * @param mode 剣術のスレイ型ID
  * @return スレイの倍率(/10倍)
  */
-MULTIPLY mult_hissatsu(PlayerType *player_ptr, MULTIPLY mult, const TrFlags &flags, monster_type *m_ptr, combat_options mode)
+MULTIPLY mult_hissatsu(PlayerType *player_ptr, MULTIPLY mult, const TrFlags &flags, MonsterEntity *m_ptr, combat_options mode)
 {
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
     samurai_slaying_type tmp_slaying;
index 7478452..bdd5436 100644 (file)
@@ -6,10 +6,10 @@
 #include "object-enchant/tr-flags.h"
 
 class MonsterAttackPlayer;
-struct monster_type;
+class MonsterEntity;
 struct player_attack_type;
 class PlayerType;
-MULTIPLY mult_hissatsu(PlayerType *player_ptr, MULTIPLY mult, const TrFlags &flgs, monster_type *m_ptr, combat_options mode);
+MULTIPLY mult_hissatsu(PlayerType *player_ptr, MULTIPLY mult, const TrFlags &flgs, MonsterEntity *m_ptr, combat_options mode);
 void concentration(PlayerType *player_ptr);
 bool choose_samurai_stance(PlayerType *player_ptr);
 int calc_attack_quality(PlayerType *player_ptr, player_attack_type *pa_ptr);
index 87ee240..3798383 100644 (file)
@@ -400,7 +400,7 @@ static int get_snipe_power(PlayerType *player_ptr, COMMAND_CODE *sn, bool only_b
  * @param m_ptr 目標となるモンスターの構造体参照ポインタ
  * @return スレイの倍率(/10倍)
  */
-MULTIPLY calc_snipe_damage_with_slay(PlayerType *player_ptr, MULTIPLY mult, monster_type *m_ptr, SPELL_IDX snipe_type)
+MULTIPLY calc_snipe_damage_with_slay(PlayerType *player_ptr, MULTIPLY mult, MonsterEntity *m_ptr, SPELL_IDX snipe_type)
 {
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
     bool seen = is_seen(player_ptr, m_ptr);
index 7ecdb60..d56ba7c 100644 (file)
@@ -2,11 +2,11 @@
 
 #include "system/angband.h"
 
-struct monster_type;
+class MonsterEntity;
 class PlayerType;
 void reset_concentration(PlayerType *player_ptr, bool msg);
 void display_snipe_list(PlayerType *player_ptr);
-MULTIPLY calc_snipe_damage_with_slay(PlayerType *player_ptr, MULTIPLY mult, monster_type *m_ptr, SPELL_IDX snipe_type);
+MULTIPLY calc_snipe_damage_with_slay(PlayerType *player_ptr, MULTIPLY mult, MonsterEntity *m_ptr, SPELL_IDX snipe_type);
 void do_cmd_snipe(PlayerType *player_ptr);
 void do_cmd_snipe_browse(PlayerType *player_ptr);
 int boost_concentration_damage(PlayerType *player_ptr, int tdam);
index 2d38077..1eb7285 100644 (file)
@@ -5,7 +5,7 @@
 enum class RaceBlowEffectType;
 enum class RaceBlowMethodType;
 class PlayerType;
-struct monster_type;
+class MonsterEntity;
 class ItemEntity;
 class MonsterAttackPlayer {
 public:
@@ -14,7 +14,7 @@ public:
     int abbreviate = 0; // 2回目以降の省略表現フラグ.
 #endif
     short m_idx;
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     RaceBlowMethodType method;
     RaceBlowEffectType effect;
     bool do_silly_attack;
index 82d45e3..0e6abbe 100644 (file)
@@ -79,7 +79,7 @@ static bool exe_monster_attack_to_monster(PlayerType *player_ptr, MONSTER_IDX m_
 {
     auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
-    monster_type *y_ptr;
+    MonsterEntity *y_ptr;
     y_ptr = &player_ptr->current_floor_ptr->m_list[g_ptr->m_idx];
     if (r_ptr->behavior_flags.has(MonsterBehaviorType::NEVER_BLOW)) {
         return false;
@@ -125,7 +125,7 @@ bool process_monster_attack_to_monster(PlayerType *player_ptr, turn_flags *turn_
 {
     auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
-    monster_type *y_ptr;
+    MonsterEntity *y_ptr;
     y_ptr = &player_ptr->current_floor_ptr->m_list[g_ptr->m_idx];
     if (!turn_flags_ptr->do_move || (g_ptr->m_idx == 0)) {
         return false;
index 45662c2..6d1af0b 100644 (file)
@@ -2,11 +2,11 @@
 
 #include "system/angband.h"
 
-struct monster_type;
+class MonsterEntity;
 struct monster_race;
 struct monster_death_type {
     MONSTER_IDX m_idx;
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     monster_race *r_ptr;
     bool do_gold;
     bool do_item;
index 939ca63..93addc5 100644 (file)
@@ -30,7 +30,7 @@
  * @param plus モンスターIDの増減 (1/2 の確率で+1、1/2の確率で-1)
  * @return ペットがモンスターに近づくならばTRUE
  */
-static bool decide_pet_approch_direction(PlayerType *player_ptr, monster_type *m_ptr, monster_type *t_ptr)
+static bool decide_pet_approch_direction(PlayerType *player_ptr, MonsterEntity *m_ptr, MonsterEntity *t_ptr)
 {
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
     if (!m_ptr->is_pet()) {
@@ -69,7 +69,7 @@ static void decide_enemy_approch_direction(PlayerType *player_ptr, MONSTER_IDX m
         }
 
         MONSTER_IDX t_idx = dummy;
-        monster_type *t_ptr;
+        MonsterEntity *t_ptr;
         t_ptr = &floor_ptr->m_list[t_idx];
         if (t_ptr == m_ptr) {
             continue;
@@ -156,7 +156,7 @@ bool get_enemy_dir(PlayerType *player_ptr, MONSTER_IDX m_idx, int *mm)
  * @return 不規則な方向へ歩くことになったらTRUE
  * @todo "5"とはもしかして「その場に留まる」という意味か?
  */
-static bool random_walk(PlayerType *player_ptr, DIRECTION *mm, monster_type *m_ptr)
+static bool random_walk(PlayerType *player_ptr, DIRECTION *mm, MonsterEntity *m_ptr)
 {
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
     if (r_ptr->behavior_flags.has_all_of({ MonsterBehaviorType::RAND_MOVE_50, MonsterBehaviorType::RAND_MOVE_25 }) && (randint0(100) < 75)) {
index 175c25f..3cfeb7f 100644 (file)
@@ -3,7 +3,7 @@
 #include "system/monster-type-definition.h"
 #include "util/bit-flags-calculator.h"
 
-monster_lite_type *initialize_monster_lite_type(BIT_FLAGS grid_info, monster_lite_type *ml_ptr, monster_type *m_ptr)
+monster_lite_type *initialize_monster_lite_type(BIT_FLAGS grid_info, monster_lite_type *ml_ptr, MonsterEntity *m_ptr)
 {
     ml_ptr->mon_fx = m_ptr->fx;
     ml_ptr->mon_fy = m_ptr->fy;
index 6915d0a..f52a21c 100644 (file)
@@ -8,5 +8,5 @@ struct monster_lite_type {
     POSITION mon_fx;
 };
 
-struct monster_type;
-monster_lite_type *initialize_monster_lite_type(BIT_FLAGS grid_info, monster_lite_type *ml_ptr, monster_type *m_ptr);
+class MonsterEntity;
+monster_lite_type *initialize_monster_lite_type(BIT_FLAGS grid_info, monster_lite_type *ml_ptr, MonsterEntity *m_ptr);
index 3334552..a63fbe3 100644 (file)
@@ -161,7 +161,7 @@ void update_mon_lite(PlayerType *player_ptr)
     }
 
     if (!w_ptr->timewalk_m_idx) {
-        monster_type *m_ptr;
+        MonsterEntity *m_ptr;
         monster_race *r_ptr;
         for (int i = 1; i < floor_ptr->m_max; i++) {
             m_ptr = &floor_ptr->m_list[i];
index e43a30c..792c395 100644 (file)
@@ -44,7 +44,7 @@
 #include "util/bit-flags-calculator.h"
 #include "view/display-messages.h"
 
-static bool check_hp_for_feat_destruction(TerrainType *f_ptr, monster_type *m_ptr)
+static bool check_hp_for_feat_destruction(TerrainType *f_ptr, MonsterEntity *m_ptr)
 {
     return f_ptr->flags.has_not(TerrainCharacteristics::GLASS) || monraces_info[m_ptr->r_idx].behavior_flags.has(MonsterBehaviorType::STUPID) || (m_ptr->hp >= std::max(m_ptr->maxhp / 3, 200));
 }
@@ -58,7 +58,7 @@ static bool check_hp_for_feat_destruction(TerrainType *f_ptr, monster_type *m_pt
  * @param can_cross モンスターが地形を踏破できるならばTRUE
  * @return 透過も破壊もしなかった場合はFALSE、それ以外はTRUE
  */
-static bool process_wall(PlayerType *player_ptr, turn_flags *turn_flags_ptr, monster_type *m_ptr, POSITION ny, POSITION nx, bool can_cross)
+static bool process_wall(PlayerType *player_ptr, turn_flags *turn_flags_ptr, MonsterEntity *m_ptr, POSITION ny, POSITION nx, bool can_cross)
 {
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
     grid_type *g_ptr;
@@ -106,7 +106,7 @@ static bool process_wall(PlayerType *player_ptr, turn_flags *turn_flags_ptr, mon
  * @param nx モンスターのX座標
  * @return ここではドアを開けず、ガラスのドアを開ける可能性があるならTRUE
  */
-static bool bash_normal_door(PlayerType *player_ptr, turn_flags *turn_flags_ptr, monster_type *m_ptr, POSITION ny, POSITION nx)
+static bool bash_normal_door(PlayerType *player_ptr, turn_flags *turn_flags_ptr, MonsterEntity *m_ptr, POSITION ny, POSITION nx)
 {
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
     grid_type *g_ptr;
@@ -141,7 +141,7 @@ static bool bash_normal_door(PlayerType *player_ptr, turn_flags *turn_flags_ptr,
  * @param g_ptr グリッドへの参照ポインタ
  * @param f_ptr 地形への参照ポインタ
  */
-static void bash_glass_door(PlayerType *player_ptr, turn_flags *turn_flags_ptr, monster_type *m_ptr, TerrainType *f_ptr, bool may_bash)
+static void bash_glass_door(PlayerType *player_ptr, turn_flags *turn_flags_ptr, MonsterEntity *m_ptr, TerrainType *f_ptr, bool may_bash)
 {
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
     if (!may_bash || (r_ptr->behavior_flags.has_not(MonsterBehaviorType::BASH_DOOR)) || f_ptr->flags.has_not(TerrainCharacteristics::BASH) || (m_ptr->is_pet() && ((player_ptr->pet_extra_flags & PF_OPEN_DOORS) == 0))) {
@@ -176,7 +176,7 @@ static void bash_glass_door(PlayerType *player_ptr, turn_flags *turn_flags_ptr,
  * @param nx モンスターのX座標
  * @return モンスターが死亡した場合のみFALSE
  */
-static bool process_door(PlayerType *player_ptr, turn_flags *turn_flags_ptr, monster_type *m_ptr, POSITION ny, POSITION nx)
+static bool process_door(PlayerType *player_ptr, turn_flags *turn_flags_ptr, MonsterEntity *m_ptr, POSITION ny, POSITION nx)
 {
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
     const auto &g_ref = player_ptr->current_floor_ptr->grid_array[ny][nx];
@@ -220,7 +220,7 @@ static bool process_door(PlayerType *player_ptr, turn_flags *turn_flags_ptr, mon
  * @param nx モンスターのX座標
  * @return ルーンのある/なし
  */
-static bool process_protection_rune(PlayerType *player_ptr, turn_flags *turn_flags_ptr, monster_type *m_ptr, POSITION ny, POSITION nx)
+static bool process_protection_rune(PlayerType *player_ptr, turn_flags *turn_flags_ptr, MonsterEntity *m_ptr, POSITION ny, POSITION nx)
 {
     grid_type *g_ptr;
     g_ptr = &player_ptr->current_floor_ptr->grid_array[ny][nx];
@@ -255,7 +255,7 @@ static bool process_protection_rune(PlayerType *player_ptr, turn_flags *turn_fla
  * @param nx モンスターのX座標
  * @return モンスターが死亡した場合のみFALSE
  */
-static bool process_explosive_rune(PlayerType *player_ptr, turn_flags *turn_flags_ptr, monster_type *m_ptr, POSITION ny, POSITION nx)
+static bool process_explosive_rune(PlayerType *player_ptr, turn_flags *turn_flags_ptr, MonsterEntity *m_ptr, POSITION ny, POSITION nx)
 {
     grid_type *g_ptr;
     g_ptr = &player_ptr->current_floor_ptr->grid_array[ny][nx];
@@ -303,7 +303,7 @@ static bool process_explosive_rune(PlayerType *player_ptr, turn_flags *turn_flag
  * @param nx モンスターのX座標
  * @return モンスターが死亡した場合のみFALSE
  */
-static bool process_post_dig_wall(PlayerType *player_ptr, turn_flags *turn_flags_ptr, monster_type *m_ptr, POSITION ny, POSITION nx)
+static bool process_post_dig_wall(PlayerType *player_ptr, turn_flags *turn_flags_ptr, MonsterEntity *m_ptr, POSITION ny, POSITION nx)
 {
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
     grid_type *g_ptr;
@@ -483,7 +483,7 @@ static bool can_speak(const monster_race &ap_r_ref, MonsterSpeakType mon_speak_t
     return can_speak_all || can_speak_specific;
 }
 
-static std::string_view get_speak_filename(monster_type *m_ptr)
+static std::string_view get_speak_filename(MonsterEntity *m_ptr)
 {
     const auto &ap_r_ref = monraces_info[m_ptr->ap_r_idx];
     if (m_ptr->is_fearful() && can_speak(ap_r_ref, MonsterSpeakType::SPEAK_FEAR)) {
@@ -559,7 +559,7 @@ void process_speak_sound(PlayerType *player_ptr, MONSTER_IDX m_idx, POSITION oy,
  * @param y 目標y座標
  * @param x 目標x座標
  */
-void set_target(monster_type *m_ptr, POSITION y, POSITION x)
+void set_target(MonsterEntity *m_ptr, POSITION y, POSITION x)
 {
     m_ptr->target_y = y;
     m_ptr->target_x = x;
@@ -569,7 +569,7 @@ void set_target(monster_type *m_ptr, POSITION y, POSITION x)
  * @brief モンスターの目標地点をリセットする / Reset the target of counter attack
  * @param m_ptr モンスターの参照ポインタ
  */
-void reset_target(monster_type *m_ptr)
+void reset_target(MonsterEntity *m_ptr)
 {
     set_target(m_ptr, 0, 0);
 }
index 1b7a3d9..a990b57 100644 (file)
@@ -5,10 +5,10 @@
 constexpr auto BREAK_RUNE_PROTECTION = 550; /*!< 守りのルーンの強靭度 / Rune of protection resistance */
 constexpr auto BREAK_RUNE_EXPLOSION = 299; /*!< 爆発のルーンの発動しやすさ / For explosive runes */
 
-struct monster_type;
+class MonsterEntity;
 class PlayerType;
 struct turn_flags;
 bool process_monster_movement(PlayerType *player_ptr, turn_flags *turn_flags_ptr, MONSTER_IDX m_idx, DIRECTION *mm, POSITION oy, POSITION ox, int *count);
 void process_speak_sound(PlayerType *player_ptr, MONSTER_IDX m_idx, POSITION oy, POSITION ox, bool aware);
-void set_target(monster_type *m_ptr, POSITION y, POSITION x);
-void reset_target(monster_type *m_ptr);
+void set_target(MonsterEntity *m_ptr, POSITION y, POSITION x);
+void reset_target(MonsterEntity *m_ptr);
index e787b90..cd6acf2 100644 (file)
@@ -215,7 +215,7 @@ void update_object_by_monster_movement(PlayerType *player_ptr, turn_flags *turn_
  * @param player_ptr プレイヤーへの参照ポインタ
  * @param m_ptr モンスター参照ポインタ
  */
-void monster_drop_carried_objects(PlayerType *player_ptr, monster_type *m_ptr)
+void monster_drop_carried_objects(PlayerType *player_ptr, MonsterEntity *m_ptr)
 {
     for (auto it = m_ptr->hold_o_idx_list.begin(); it != m_ptr->hold_o_idx_list.end();) {
         ItemEntity forge;
index 0e18489..a7b2e35 100644 (file)
@@ -2,8 +2,8 @@
 
 #include "system/angband.h"
 
-struct monster_type;
+class MonsterEntity;
 class PlayerType;
 struct turn_flags;
 void update_object_by_monster_movement(PlayerType *player_ptr, turn_flags *turn_flags_ptr, MONSTER_IDX m_idx, POSITION ny, POSITION nx);
-void monster_drop_carried_objects(PlayerType *player_ptr, monster_type *m_ptr);
+void monster_drop_carried_objects(PlayerType *player_ptr, MonsterEntity *m_ptr);
index 83c7b28..903866d 100644 (file)
@@ -89,7 +89,7 @@ void delete_monster_idx(PlayerType *player_ptr, MONSTER_IDX i)
     // 召喚元のモンスターが消滅した時は、召喚されたモンスターのparent_m_idxが
     // 召喚されたモンスター自身のm_idxを指すようにする
     for (MONSTER_IDX child_m_idx = 1; child_m_idx < floor_ptr->m_max; child_m_idx++) {
-        monster_type *child_m_ptr = &floor_ptr->m_list[child_m_idx];
+        MonsterEntity *child_m_ptr = &floor_ptr->m_list[child_m_idx];
         if (MonsterRace(child_m_ptr->r_idx).is_valid() && child_m_ptr->parent_m_idx == i) {
             child_m_ptr->parent_m_idx = child_m_idx;
         }
index e473ef4..e6f5094 100644 (file)
@@ -46,7 +46,7 @@ static bool is_acting_monster(const MonsterRaceId r_idx)
  * @param m_ptr モンスターへの参照ポインタ
  * @param m_name モンスター名称
  */
-static void escape_monster(PlayerType *player_ptr, turn_flags *turn_flags_ptr, monster_type *m_ptr, GAME_TEXT *m_name)
+static void escape_monster(PlayerType *player_ptr, turn_flags *turn_flags_ptr, MonsterEntity *m_ptr, GAME_TEXT *m_name)
 {
     if (turn_flags_ptr->is_riding_mon) {
         msg_format(_("%sはあなたの束縛から脱出した。", "%^s succeeded to escape from your restriction!"), m_name);
index af62d91..ae0e185 100644 (file)
@@ -131,7 +131,7 @@ bool find_safety(PlayerType *player_ptr, MONSTER_IDX m_idx, POSITION *yp, POSITI
  * @param candidate 隠れられる地点の候補地
  */
 static void sweep_hiding_candidate(
-    PlayerType *player_ptr, monster_type *m_ptr, const POSITION *y_offsets, const POSITION *x_offsets, coordinate_candidate *candidate)
+    PlayerType *player_ptr, MonsterEntity *m_ptr, const POSITION *y_offsets, const POSITION *x_offsets, coordinate_candidate *candidate)
 {
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
     for (POSITION i = 0, dx = x_offsets[0], dy = y_offsets[0]; dx != 0 || dy != 0; i++, dx = x_offsets[i], dy = y_offsets[i]) {
index d07f780..89037b0 100644 (file)
@@ -299,7 +299,7 @@ bool place_monster_one(PlayerType *player_ptr, MONSTER_IDX who, POSITION y, POSI
         return false;
     }
 
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     m_ptr = &floor_ptr->m_list[g_ptr->m_idx];
     m_ptr->r_idx = r_idx;
     m_ptr->ap_r_idx = initial_r_appearance(player_ptr, r_idx, mode);
index ae4295c..8b76056 100644 (file)
@@ -31,7 +31,7 @@ static void compact_monsters_aux(PlayerType *player_ptr, MONSTER_IDX i1, MONSTER
     }
 
     auto *floor_ptr = player_ptr->current_floor_ptr;
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     m_ptr = &floor_ptr->m_list[i1];
 
     POSITION y = m_ptr->fy;
@@ -67,7 +67,7 @@ static void compact_monsters_aux(PlayerType *player_ptr, MONSTER_IDX i1, MONSTER
 
     if (m_ptr->is_pet()) {
         for (int i = 1; i < floor_ptr->m_max; i++) {
-            monster_type *m2_ptr = &floor_ptr->m_list[i];
+            MonsterEntity *m2_ptr = &floor_ptr->m_list[i];
 
             if (m2_ptr->parent_m_idx == i1) {
                 m2_ptr->parent_m_idx = i2;
index 45e0abf..18f5edd 100644 (file)
@@ -135,7 +135,7 @@ bool MonsterDamageProcessor::genocide_chaos_patron()
     return this->m_idx == 0;
 }
 
-bool MonsterDamageProcessor::process_dead_exp_virtue(concptr note, monster_type *exp_mon)
+bool MonsterDamageProcessor::process_dead_exp_virtue(concptr note, MonsterEntity *exp_mon)
 {
     auto *m_ptr = &this->player_ptr->current_floor_ptr->m_list[this->m_idx];
     auto &r_ref = m_ptr->get_real_r_ref();
@@ -422,7 +422,7 @@ void MonsterDamageProcessor::show_bounty_message(GAME_TEXT *m_name)
  * experience point of a monster later.
  * </pre>
  */
-void MonsterDamageProcessor::get_exp_from_mon(monster_type *m_ptr, int exp_dam)
+void MonsterDamageProcessor::get_exp_from_mon(MonsterEntity *m_ptr, int exp_dam)
 {
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
     if (!m_ptr->is_valid() || m_ptr->is_pet() || this->player_ptr->phase_out) {
index 70ed013..98cfa14 100644 (file)
@@ -9,7 +9,7 @@
 
 enum class MonsterRaceId : int16_t;
 struct monster_race;
-struct monster_type;
+class MonsterEntity;
 class PlayerType;
 typedef std::vector<std::tuple<MonsterRaceId, MonsterRaceId, MonsterRaceId>> combined_uniques;
 class MonsterDamageProcessor {
@@ -25,9 +25,9 @@ private:
     int dam;
     bool *fear;
     AttributeFlags attribute_flags{};
-    void get_exp_from_mon(monster_type *m_ptr, int exp_dam);
+    void get_exp_from_mon(MonsterEntity *m_ptr, int exp_dam);
     bool genocide_chaos_patron();
-    bool process_dead_exp_virtue(concptr note, monster_type *exp_mon);
+    bool process_dead_exp_virtue(concptr note, MonsterEntity *exp_mon);
     void death_special_flag_monster();
     void death_unique_monster(MonsterRaceId r_idx);
     bool check_combined_unique(const MonsterRaceId r_idx, std::vector<MonsterRaceId> *combined_uniques);
index 6a87ed3..39775f4 100644 (file)
@@ -22,7 +22,7 @@
  * @param m_ptr モンスターの参照ポインタ
  * @param mode 呼称オプション
  */
-void monster_desc(PlayerType *player_ptr, char *desc, monster_type *m_ptr, BIT_FLAGS mode)
+void monster_desc(PlayerType *player_ptr, char *desc, MonsterEntity *m_ptr, BIT_FLAGS mode)
 {
     monster_race *r_ptr;
     r_ptr = &monraces_info[m_ptr->ap_r_idx];
index 729223f..6e62805 100644 (file)
@@ -2,7 +2,7 @@
 
 #include "system/angband.h"
 
-struct monster_type;
+class MonsterEntity;
 class PlayerType;
-void monster_desc(PlayerType *player_ptr, char *desc, monster_type *m_ptr, BIT_FLAGS mode);
+void monster_desc(PlayerType *player_ptr, char *desc, MonsterEntity *m_ptr, BIT_FLAGS mode);
 void message_pain(PlayerType *player_ptr, MONSTER_IDX m_idx, int dam);
index 5bdba72..251359c 100644 (file)
@@ -41,7 +41,7 @@
  * @brief モンスターを友好的にする
  * @param m_ptr モンスター情報構造体の参照ポインタ
  */
-void set_friendly(monster_type *m_ptr)
+void set_friendly(MonsterEntity *m_ptr)
 {
     m_ptr->mflag2.set(MonsterConstantFlagType::FRIENDLY);
 }
@@ -184,7 +184,7 @@ static bool check_hostile_align(byte sub_align1, byte sub_align2)
  * @param n_ptr モンスター2の構造体参照ポインタ
  * @return 敵対関係にあるならばTRUEを返す
  */
-bool are_enemies(PlayerType *player_ptr, const monster_type &m1_ref, const monster_type &m2_ref)
+bool are_enemies(PlayerType *player_ptr, const MonsterEntity &m1_ref, const MonsterEntity &m2_ref)
 {
     if (player_ptr->phase_out) {
         if (m1_ref.is_pet() || m2_ref.is_pet()) {
@@ -228,7 +228,7 @@ bool are_enemies(PlayerType *player_ptr, const monster_type &m1_ref, const monst
  * @details
  * If user is player, m_ptr == nullptr.
  */
-bool monster_has_hostile_align(PlayerType *player_ptr, monster_type *m_ptr, int pa_good, int pa_evil, monster_race *r_ptr)
+bool monster_has_hostile_align(PlayerType *player_ptr, MonsterEntity *m_ptr, int pa_good, int pa_evil, monster_race *r_ptr)
 {
     byte sub_align1 = SUB_ALIGN_NEUTRAL;
     byte sub_align2 = SUB_ALIGN_NEUTRAL;
@@ -261,7 +261,7 @@ bool monster_has_hostile_align(PlayerType *player_ptr, monster_type *m_ptr, int
     return false;
 }
 
-bool is_original_ap_and_seen(PlayerType *player_ptr, const monster_type *m_ptr)
+bool is_original_ap_and_seen(PlayerType *player_ptr, const MonsterEntity *m_ptr)
 {
     return m_ptr->ml && !player_ptr->effects()->hallucination()->is_hallucinated() && m_ptr->is_original_ap();
 }
index f796b36..f9572eb 100644 (file)
@@ -9,11 +9,11 @@
 #define CEM_P_CAN_ENTER_PATTERN 0x0002
 enum class MonsterRaceId : int16_t;
 struct monster_race;
-struct monster_type;
+class MonsterEntity;
 class PlayerType;
 bool monster_can_cross_terrain(PlayerType *player_ptr, FEAT_IDX feat, monster_race *r_ptr, BIT_FLAGS16 mode);
 bool monster_can_enter(PlayerType *player_ptr, POSITION y, POSITION x, monster_race *r_ptr, BIT_FLAGS16 mode);
-bool are_enemies(PlayerType *player_ptr, const monster_type &m1_ref, const monster_type &m2_ref);
-bool monster_has_hostile_align(PlayerType *player_ptr, monster_type *m_ptr, int pa_good, int pa_evil, monster_race *r_ptr);
-bool is_original_ap_and_seen(PlayerType *player_ptr, const monster_type *m_ptr);
+bool are_enemies(PlayerType *player_ptr, const MonsterEntity &m1_ref, const MonsterEntity &m2_ref);
+bool monster_has_hostile_align(PlayerType *player_ptr, MonsterEntity *m_ptr, int pa_good, int pa_evil, monster_race *r_ptr);
+bool is_original_ap_and_seen(PlayerType *player_ptr, const MonsterEntity *m_ptr);
 void monster_name(PlayerType *player_ptr, MONSTER_IDX m_idx, char *m_name);
index 680b3df..459d561 100644 (file)
@@ -67,7 +67,7 @@ MONSTER_IDX m_pop(FloorType *floor_ptr)
 
     /* Recycle dead monsters */
     for (MONSTER_IDX i = 1; i < floor_ptr->m_max; i++) {
-        monster_type *m_ptr;
+        MonsterEntity *m_ptr;
         m_ptr = &floor_ptr->m_list[i];
         if (MonsterRace(m_ptr->r_idx).is_valid()) {
             continue;
index 7b6e7fa..3df776d 100644 (file)
@@ -62,7 +62,7 @@ struct coordinate_candidate {
     POSITION gdis;
 };
 
-struct monster_type;
+class MonsterEntity;
 turn_flags *init_turn_flags(MONSTER_IDX riding_idx, MONSTER_IDX m_idx, turn_flags *turn_flags_ptr);
 old_race_flags *init_old_race_flags(old_race_flags *old_race_flags_ptr);
 coordinate_candidate init_coordinate_candidate(void);
index 1c8af92..c425069 100644 (file)
@@ -81,7 +81,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);
 
 void sweep_monster_process(PlayerType *player_ptr);
-bool decide_process_continue(PlayerType *player_ptr, monster_type *m_ptr);
+bool decide_process_continue(PlayerType *player_ptr, MonsterEntity *m_ptr);
 
 /*!
  * @brief モンスター単体の1ターン行動処理メインルーチン /
@@ -582,7 +582,7 @@ void sweep_monster_process(PlayerType *player_ptr)
 {
     auto *floor_ptr = player_ptr->current_floor_ptr;
     for (MONSTER_IDX i = floor_ptr->m_max - 1; i >= 1; i--) {
-        monster_type *m_ptr;
+        MonsterEntity *m_ptr;
         m_ptr = &floor_ptr->m_list[i];
 
         if (player_ptr->leaving) {
@@ -628,7 +628,7 @@ void sweep_monster_process(PlayerType *player_ptr)
  * @param m_ptr モンスターへの参照ポインタ
  * @return 後続処理が必要ならTRUE
  */
-bool decide_process_continue(PlayerType *player_ptr, monster_type *m_ptr)
+bool decide_process_continue(PlayerType *player_ptr, MonsterEntity *m_ptr)
 {
     monster_race *r_ptr;
     r_ptr = &monraces_info[m_ptr->r_idx];
index 05527cd..a785d76 100644 (file)
@@ -33,7 +33,7 @@
  * @param PlayerType プレイヤーへの参照ポインタ
  * @param m_ptr モンスター情報構造体の参照ポインタ
  */
-void set_pet(PlayerType *player_ptr, monster_type *m_ptr)
+void set_pet(PlayerType *player_ptr, MonsterEntity *m_ptr)
 {
     QuestCompletionChecker(player_ptr, m_ptr).complete();
     m_ptr->mflag2.set(MonsterConstantFlagType::PET);
@@ -47,7 +47,7 @@ void set_pet(PlayerType *player_ptr, monster_type *m_ptr)
  * Makes the monster hostile towards the player
  * @param m_ptr モンスター情報構造体の参照ポインタ
  */
-void set_hostile(PlayerType *player_ptr, monster_type *m_ptr)
+void set_hostile(PlayerType *player_ptr, MonsterEntity *m_ptr)
 {
     if (player_ptr->phase_out) {
         return;
@@ -61,7 +61,7 @@ void set_hostile(PlayerType *player_ptr, monster_type *m_ptr)
  * Anger the monster
  * @param m_ptr モンスター情報構造体の参照ポインタ
  */
-void anger_monster(PlayerType *player_ptr, monster_type *m_ptr)
+void anger_monster(PlayerType *player_ptr, MonsterEntity *m_ptr)
 {
     if (player_ptr->phase_out || !m_ptr->is_friendly()) {
         return;
index d575223..6090b5d 100644 (file)
@@ -3,12 +3,12 @@
 #include "system/angband.h"
 
 enum class MonsterRaceId : int16_t;
-struct monster_type;
+class MonsterEntity;
 class PlayerType;
-void set_friendly(monster_type *m_ptr);
-void set_pet(PlayerType *player_ptr, monster_type *m_ptr);
-void set_hostile(PlayerType *player_ptr, monster_type *m_ptr);
-void anger_monster(PlayerType *player_ptr, monster_type *m_ptr);
+void set_friendly(MonsterEntity *m_ptr);
+void set_pet(PlayerType *player_ptr, MonsterEntity *m_ptr);
+void set_hostile(PlayerType *player_ptr, MonsterEntity *m_ptr);
+void anger_monster(PlayerType *player_ptr, MonsterEntity *m_ptr);
 bool set_monster_csleep(PlayerType *player_ptr, MONSTER_IDX m_idx, int v);
 bool set_monster_fast(PlayerType *player_ptr, MONSTER_IDX m_idx, int v);
 bool set_monster_slow(PlayerType *player_ptr, MONSTER_IDX m_idx, int v);
index 4411a97..76f601d 100644 (file)
@@ -71,7 +71,7 @@ DEPTH monster_level_idx(FloorType *floor_ptr, MONSTER_IDX m_idx)
  * @return 修正を行った結果のダメージ量
  * @details RES_ALL持ちはAC軽減後のダメージを1/100に補正する. 光の剣は無敵を無効化する. 一定確率で無敵は貫通できる.
  */
-int mon_damage_mod(PlayerType *player_ptr, monster_type *m_ptr, int dam, bool is_psy_spear)
+int mon_damage_mod(PlayerType *player_ptr, MonsterEntity *m_ptr, int dam, bool is_psy_spear)
 {
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
     if (r_ptr->resistance_flags.has(MonsterResistanceType::RESIST_ALL) && dam > 0) {
index d9fb6ee..bc38adf 100644 (file)
@@ -5,11 +5,11 @@
 enum class MonsterRaceId : int16_t;
 class FloorType;
 class PlayerType;
-struct monster_type;
+class MonsterEntity;
 bool monster_is_powerful(FloorType *floor_ptr, MONSTER_IDX m_idx);
 DEPTH monster_level_idx(FloorType *floor_ptr, MONSTER_IDX m_idx);
 
-int mon_damage_mod(PlayerType *player_ptr, monster_type *m_ptr, int dam, bool is_psy_spear);
+int mon_damage_mod(PlayerType *player_ptr, MonsterEntity *m_ptr, int dam, bool is_psy_spear);
 
 void dispel_monster_status(PlayerType *player_ptr, MONSTER_IDX m_idx);
 void monster_gain_exp(PlayerType *player_ptr, MONSTER_IDX m_idx, MonsterRaceId s_idx);
index 06ae626..fd500e4 100644 (file)
@@ -49,7 +49,7 @@
 
 // Update Monster.
 struct um_type {
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     bool do_disturb;
     POSITION fy;
     POSITION fx;
@@ -74,7 +74,7 @@ bool update_riding_monster(PlayerType *player_ptr, turn_flags *turn_flags_ptr, M
 {
     auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
     auto *g_ptr = &player_ptr->current_floor_ptr->grid_array[ny][nx];
-    monster_type *y_ptr = &player_ptr->current_floor_ptr->m_list[g_ptr->m_idx];
+    MonsterEntity *y_ptr = &player_ptr->current_floor_ptr->m_list[g_ptr->m_idx];
     if (turn_flags_ptr->is_riding_mon) {
         return move_player_effect(player_ptr, ny, nx, MPE_DONT_PICKUP);
     }
@@ -119,7 +119,7 @@ void update_player_type(PlayerType *player_ptr, turn_flags *turn_flags_ptr, mons
  * @param turn_flags_ptr ターン経過処理フラグへの参照ポインタ
  * @param m_ptr モンスターへの参照ポインタ
  */
-void update_monster_race_flags(PlayerType *player_ptr, turn_flags *turn_flags_ptr, monster_type *m_ptr)
+void update_monster_race_flags(PlayerType *player_ptr, turn_flags *turn_flags_ptr, MonsterEntity *m_ptr)
 {
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
     if (!is_original_ap_and_seen(player_ptr, m_ptr)) {
index eaa2ad1..ad3781e 100644 (file)
@@ -3,14 +3,14 @@
 #include "system/angband.h"
 
 struct monster_race;
-struct monster_type;
+class MonsterEntity;
 struct old_race_flags;
 ;
 class PlayerType;
 struct turn_flags;
 bool update_riding_monster(PlayerType *player_ptr, turn_flags *turn_flags_ptr, MONSTER_IDX m_idx, POSITION oy, POSITION ox, POSITION ny, POSITION nx);
 void update_player_type(PlayerType *player_ptr, turn_flags *turn_flags_ptr, monster_race *r_ptr);
-void update_monster_race_flags(PlayerType *player_ptr, turn_flags *turn_flags_ptr, monster_type *m_ptr);
+void update_monster_race_flags(PlayerType *player_ptr, turn_flags *turn_flags_ptr, MonsterEntity *m_ptr);
 void update_player_window(PlayerType *player_ptr, old_race_flags *old_race_flags_ptr);
 void update_monster(PlayerType *player_ptr, MONSTER_IDX m_idx, bool full);
 void update_monsters(PlayerType *player_ptr, bool full);
index ff28885..8bb16e4 100644 (file)
@@ -15,11 +15,11 @@ enum mspell_lite_type {
 };
 
 // Monster Spell Attack.
-struct monster_type;
+class MonsterEntity;
 struct monster_race;
 struct msa_type {
     MONSTER_IDX m_idx;
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     monster_race *r_ptr;
     bool no_inate;
     EnumClassFlagGroup<MonsterAbilityType> ability_flags;
index 8df8ead..38008a4 100644 (file)
@@ -99,7 +99,7 @@ bool summon_possible(PlayerType *player_ptr, POSITION y1, POSITION x1)
  * @param m_ptr 判定を行いたいモンスターの構造体参照ポインタ
  * @return 死者復活が有効な状態ならばTRUEを返す。
  */
-bool raise_possible(PlayerType *player_ptr, monster_type *m_ptr)
+bool raise_possible(PlayerType *player_ptr, MonsterEntity *m_ptr)
 {
     POSITION y = m_ptr->fy;
     POSITION x = m_ptr->fx;
index 39d604d..c46b081 100644 (file)
@@ -6,11 +6,11 @@ struct ProjectResult;
 enum class MonsterAbilityType;
 enum class AttributeType;
 
-struct monster_type;
+class MonsterEntity;
 class PlayerType;
 bool clean_shot(PlayerType *player_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2, bool is_friend);
 bool summon_possible(PlayerType *player_ptr, POSITION y1, POSITION x1);
-bool raise_possible(PlayerType *player_ptr, monster_type *m_ptr);
+bool raise_possible(PlayerType *player_ptr, MonsterEntity *m_ptr);
 bool spell_is_inate(MonsterAbilityType spell);
 ProjectResult beam(PlayerType *player_ptr, MONSTER_IDX m_idx, POSITION y, POSITION x, AttributeType typ, int dam_hp, int target_type);
 ProjectResult bolt(PlayerType *player_ptr, MONSTER_IDX m_idx, POSITION y, POSITION x, AttributeType typ, int dam_hp, int target_type);
index 02ba0d8..7535c5e 100644 (file)
@@ -186,7 +186,7 @@ MonsterSpellResult spell_RF6_TELE_TO(PlayerType *player_ptr, MONSTER_IDX m_idx,
 
     auto *floor_ptr = player_ptr->current_floor_ptr;
     auto *m_ptr = &floor_ptr->m_list[m_idx];
-    monster_type *t_ptr = &floor_ptr->m_list[t_idx];
+    MonsterEntity *t_ptr = &floor_ptr->m_list[t_idx];
     monster_race *tr_ptr = &monraces_info[t_ptr->r_idx];
 
     mspell_cast_msg_simple msg(_("%^sがあなたを引き戻した。", "%^s commands you to return."),
@@ -257,7 +257,7 @@ MonsterSpellResult spell_RF6_TELE_AWAY(PlayerType *player_ptr, MONSTER_IDX m_idx
     res.learnable = target_type == MONSTER_TO_PLAYER;
 
     auto *floor_ptr = player_ptr->current_floor_ptr;
-    monster_type *t_ptr = &floor_ptr->m_list[t_idx];
+    MonsterEntity *t_ptr = &floor_ptr->m_list[t_idx];
     monster_race *tr_ptr = &monraces_info[t_ptr->r_idx];
 
     mspell_cast_msg_simple msg(_("%^sにテレポートさせられた。", "%^s teleports you away."),
@@ -337,7 +337,7 @@ MonsterSpellResult spell_RF6_TELE_LEVEL(PlayerType *player_ptr, MONSTER_IDX m_id
     const auto res = MonsterSpellResult::make_valid();
 
     auto *floor_ptr = player_ptr->current_floor_ptr;
-    monster_type *t_ptr = &floor_ptr->m_list[t_idx];
+    MonsterEntity *t_ptr = &floor_ptr->m_list[t_idx];
     monster_race *tr_ptr = &monraces_info[t_ptr->r_idx];
     DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
     bool resist, saving_throw;
index a48641a..b318e5f 100644 (file)
@@ -50,7 +50,7 @@
  * @param m_ptr 使用するモンスターの構造体参照ポインタ
  * @return ビームが到達可能ならばTRUEを返す
  */
-bool direct_beam(PlayerType *player_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2, monster_type *m_ptr)
+bool direct_beam(PlayerType *player_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2, MonsterEntity *m_ptr)
 {
     auto *floor_ptr = player_ptr->current_floor_ptr;
     projection_path grid_g(player_ptr, get_max_range(player_ptr), y1, x1, y2, x2, PROJECT_THRU);
index 967d412..269c7e4 100644 (file)
@@ -3,9 +3,9 @@
 #include "effect/attribute-types.h"
 #include "system/angband.h"
 
-struct monster_type;
+class MonsterEntity;
 class PlayerType;
-bool direct_beam(PlayerType *player_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2, monster_type *m_ptr);
+bool direct_beam(PlayerType *player_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2, MonsterEntity *m_ptr);
 bool breath_direct(PlayerType *player_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2, POSITION rad, AttributeType typ, bool is_friend);
 void get_project_point(PlayerType *player_ptr, POSITION sy, POSITION sx, POSITION *ty, POSITION *tx, BIT_FLAGS flg);
 bool dispel_check_monster(PlayerType *player_ptr, MONSTER_IDX m_idx, MONSTER_IDX t_idx);
index 4fe5470..b329503 100644 (file)
@@ -38,7 +38,7 @@
  * @param path_check 射線を判定するための関数ポインタ
  * @return 有効な座標があった場合TRUEを返す
  */
-bool adjacent_grid_check(PlayerType *player_ptr, monster_type *m_ptr, POSITION *yp, POSITION *xp, TerrainCharacteristics f_flag, path_check_pf path_check)
+bool adjacent_grid_check(PlayerType *player_ptr, MonsterEntity *m_ptr, POSITION *yp, POSITION *xp, TerrainCharacteristics f_flag, path_check_pf path_check)
 {
     static int tonari_y[4][8] = { { -1, -1, -1, 0, 0, 1, 1, 1 }, { -1, -1, -1, 0, 0, 1, 1, 1 }, { 1, 1, 1, 0, 0, -1, -1, -1 }, { 1, 1, 1, 0, 0, -1, -1, -1 } };
     static int tonari_x[4][8] = { { -1, 0, 1, -1, 1, -1, 0, 1 }, { 1, 0, -1, 1, -1, 1, 0, -1 }, { -1, 0, 1, -1, 1, -1, 0, 1 }, { 1, 0, -1, 1, -1, 1, 0, -1 } };
index 528fd64..6de1a5a 100644 (file)
@@ -2,12 +2,12 @@
 
 #include "system/angband.h"
 
-struct monster_type;
+class MonsterEntity;
 struct msa_type;
 class PlayerType;
 typedef bool (*path_check_pf)(PlayerType *, POSITION, POSITION, POSITION, POSITION);
 enum class TerrainCharacteristics;
-bool adjacent_grid_check(PlayerType *player_ptr, monster_type *m_ptr, POSITION *yp, POSITION *xp, TerrainCharacteristics f_flag, path_check_pf path_check);
+bool adjacent_grid_check(PlayerType *player_ptr, MonsterEntity *m_ptr, POSITION *yp, POSITION *xp, TerrainCharacteristics f_flag, path_check_pf path_check);
 void decide_lite_range(PlayerType *player_ptr, msa_type *msa_ptr);
 bool decide_lite_projection(PlayerType *player_ptr, msa_type *msa_ptr);
 void decide_lite_area(PlayerType *player_ptr, msa_type *msa_ptr);
index 75068cf..39d32fa 100644 (file)
@@ -163,7 +163,7 @@ static MonsterSpellResult spell_RF6_SPECIAL_B(PlayerType *player_ptr, POSITION y
     mspell_cast_msg_simple msg;
     auto *floor_ptr = player_ptr->current_floor_ptr;
     auto *m_ptr = &floor_ptr->m_list[m_idx];
-    monster_type *t_ptr = &floor_ptr->m_list[t_idx];
+    MonsterEntity *t_ptr = &floor_ptr->m_list[t_idx];
     monster_race *tr_ptr = &monraces_info[t_ptr->r_idx];
     bool monster_to_player = (target_type == MONSTER_TO_PLAYER);
     bool monster_to_monster = (target_type == MONSTER_TO_MONSTER);
index f0f25dc..823435c 100644 (file)
@@ -258,7 +258,7 @@ MonsterSpellResult spell_RF5_SCARE(MONSTER_IDX m_idx, PlayerType *player_ptr, MO
     res.learnable = target_type == MONSTER_TO_PLAYER;
 
     auto *floor_ptr = player_ptr->current_floor_ptr;
-    monster_type *t_ptr = &floor_ptr->m_list[t_idx];
+    MonsterEntity *t_ptr = &floor_ptr->m_list[t_idx];
     monster_race *tr_ptr = &monraces_info[t_ptr->r_idx];
     DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
     bool resist, saving_throw;
@@ -315,7 +315,7 @@ MonsterSpellResult spell_RF5_BLIND(MONSTER_IDX m_idx, PlayerType *player_ptr, MO
     res.learnable = target_type == MONSTER_TO_PLAYER;
 
     auto *floor_ptr = player_ptr->current_floor_ptr;
-    monster_type *t_ptr = &floor_ptr->m_list[t_idx];
+    MonsterEntity *t_ptr = &floor_ptr->m_list[t_idx];
     monster_race *tr_ptr = &monraces_info[t_ptr->r_idx];
     DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
     bool resist, saving_throw;
@@ -381,7 +381,7 @@ MonsterSpellResult spell_RF5_CONF(MONSTER_IDX m_idx, PlayerType *player_ptr, MON
     res.learnable = target_type == MONSTER_TO_PLAYER;
 
     auto *floor_ptr = player_ptr->current_floor_ptr;
-    monster_type *t_ptr = &floor_ptr->m_list[t_idx];
+    MonsterEntity *t_ptr = &floor_ptr->m_list[t_idx];
     monster_race *tr_ptr = &monraces_info[t_ptr->r_idx];
     DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
     bool resist, saving_throw;
@@ -439,7 +439,7 @@ MonsterSpellResult spell_RF5_HOLD(MONSTER_IDX m_idx, PlayerType *player_ptr, MON
     res.learnable = target_type == MONSTER_TO_PLAYER;
 
     auto *floor_ptr = player_ptr->current_floor_ptr;
-    monster_type *t_ptr = &floor_ptr->m_list[t_idx];
+    MonsterEntity *t_ptr = &floor_ptr->m_list[t_idx];
     monster_race *tr_ptr = &monraces_info[t_ptr->r_idx];
     DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
     bool resist, saving_throw;
@@ -529,7 +529,7 @@ MonsterSpellResult spell_RF5_SLOW(MONSTER_IDX m_idx, PlayerType *player_ptr, MON
     res.learnable = target_type == MONSTER_TO_PLAYER;
 
     auto *floor_ptr = player_ptr->current_floor_ptr;
-    monster_type *t_ptr = &floor_ptr->m_list[t_idx];
+    MonsterEntity *t_ptr = &floor_ptr->m_list[t_idx];
     monster_race *tr_ptr = &monraces_info[t_ptr->r_idx];
     DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
     bool resist, saving_throw;
index 7eecf54..2abfec4 100644 (file)
@@ -39,7 +39,7 @@ mspell_cast_msg_simple::mspell_cast_msg_simple(concptr to_player, concptr to_mon
  */
 bool see_monster(PlayerType *player_ptr, MONSTER_IDX m_idx)
 {
-    monster_type *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
+    MonsterEntity *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
     return is_seen(player_ptr, m_ptr);
 }
 
@@ -52,8 +52,8 @@ bool see_monster(PlayerType *player_ptr, MONSTER_IDX m_idx)
  */
 bool monster_near_player(FloorType *floor_ptr, MONSTER_IDX m_idx, MONSTER_IDX t_idx)
 {
-    monster_type *m_ptr = &floor_ptr->m_list[m_idx];
-    monster_type *t_ptr = &floor_ptr->m_list[t_idx];
+    MonsterEntity *m_ptr = &floor_ptr->m_list[m_idx];
+    MonsterEntity *t_ptr = &floor_ptr->m_list[t_idx];
     return (m_ptr->cdis <= MAX_PLAYER_SIGHT) || (t_ptr->cdis <= MAX_PLAYER_SIGHT);
 }
 
index 99b6e32..7e32598 100644 (file)
@@ -168,7 +168,7 @@ bool activate_telekinesis(PlayerType *player_ptr, concptr name)
 
 bool activate_unique_detection(PlayerType *player_ptr)
 {
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     monster_race *r_ptr;
     msg_print(_("奇妙な場所が頭の中に浮かんだ...", "Some strange places show up in your mind. And you see ..."));
     for (int i = player_ptr->current_floor_ptr->m_max - 1; i >= 1; i--) {
index 27b6211..88dacf7 100644 (file)
@@ -11,7 +11,7 @@
 #include "util/flag-group.h"
 
 struct grid_type;
-struct monster_type;
+class MonsterEntity;
 class ItemEntity;
 class PlayerType;
 class ObjectThrowEntity {
@@ -67,7 +67,7 @@ private:
     bool come_back = false;
     bool do_drop = true;
     grid_type *g_ptr{};
-    monster_type *m_ptr{};
+    MonsterEntity *m_ptr{};
     GAME_TEXT m_name[MAX_NLEN]{};
     int back_chance{};
     char o2_name[MAX_NLEN]{};
index 2ed1514..86b157d 100644 (file)
@@ -79,7 +79,7 @@ ItemEntity *choose_warning_item(PlayerType *player_ptr)
  * @param dam 基本ダメージ
  * @param max 算出した最大ダメージを返すポインタ
  */
-static void spell_damcalc(PlayerType *player_ptr, monster_type *m_ptr, AttributeType typ, int dam, int *max)
+static void spell_damcalc(PlayerType *player_ptr, MonsterEntity *m_ptr, AttributeType typ, int dam, int *max)
 {
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
     int rlev = r_ptr->level;
@@ -278,7 +278,7 @@ static void spell_damcalc_by_spellnum(PlayerType *player_ptr, MonsterAbilityType
  * @param blow_ptr モンスターの打撃能力の構造体参照ポインタ
  * @return 算出された最大ダメージを返す。
  */
-static int blow_damcalc(monster_type *m_ptr, PlayerType *player_ptr, MonsterBlow *blow_ptr)
+static int blow_damcalc(MonsterEntity *m_ptr, PlayerType *player_ptr, MonsterBlow *blow_ptr)
 {
     int dam = blow_ptr->d_dice * blow_ptr->d_side;
     int dummy_max = 0;
@@ -367,7 +367,7 @@ bool process_warning(PlayerType *player_ptr, POSITION xx, POSITION yy)
     for (mx = xx - WARNING_AWARE_RANGE; mx < xx + WARNING_AWARE_RANGE + 1; mx++) {
         for (my = yy - WARNING_AWARE_RANGE; my < yy + WARNING_AWARE_RANGE + 1; my++) {
             int dam_max0 = 0;
-            monster_type *m_ptr;
+            MonsterEntity *m_ptr;
             monster_race *r_ptr;
 
             if (!in_bounds(player_ptr->current_floor_ptr, my, mx) || (distance(my, mx, yy, xx) > WARNING_AWARE_RANGE)) {
index 1150ab6..ac260a3 100644 (file)
@@ -36,12 +36,12 @@ enum class MagicalBrandEffectType { NONE = 0,
 struct grid_type;
 ;
 struct monster_race;
-struct monster_type;
+class MonsterEntity;
 struct player_attack_type {
     int16_t hand{}; //!< 武器の持ち手
     grid_type *g_ptr; //!< ターゲットのいる地形情報
     MONSTER_IDX m_idx{}; //!< モンスターID
-    monster_type *m_ptr{}; //!< モンスター情報(参照ポインタ)
+    MonsterEntity *m_ptr{}; //!< モンスター情報(参照ポインタ)
     GAME_TEXT m_name[MAX_NLEN]{}; //!< モンスター名
     MonsterRaceId r_idx{}; //!< モンスター種族ID
     monster_race *r_ptr{}; //!< モンスター種族情報(参照ポインタ)
index ccf081d..98cc7ba 100644 (file)
@@ -612,7 +612,7 @@ void exe_player_attack_to_monster(PlayerType *player_ptr, POSITION y, POSITION x
 void massacre(PlayerType *player_ptr)
 {
     grid_type *g_ptr;
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     for (DIRECTION dir = 0; dir < 8; dir++) {
         POSITION y = player_ptr->y + ddy_ddd[dir];
         POSITION x = player_ptr->x + ddx_ddd[dir];
index 5182522..8628979 100644 (file)
@@ -84,7 +84,7 @@ static void feel_eldritch_horror(concptr desc, monster_race *r_ptr)
  * @param m_ptr ELDRITCH_HORRORを引き起こしたモンスターの参照ポインタ。薬・罠・魔法の影響ならnullptr
  * @param necro 暗黒領域魔法の詠唱失敗によるものならばTRUEを返す
  */
-void sanity_blast(PlayerType *player_ptr, monster_type *m_ptr, bool necro)
+void sanity_blast(PlayerType *player_ptr, MonsterEntity *m_ptr, bool necro)
 {
     if (player_ptr->phase_out || !w_ptr->character_dungeon) {
         return;
index a4d9cb8..fd49350 100644 (file)
@@ -1,5 +1,5 @@
 #pragma once
 
-struct monster_type;
+class MonsterEntity;
 class PlayerType;
-void sanity_blast(PlayerType *player_ptr, monster_type *m_ptr, bool necro);
+void sanity_blast(PlayerType *player_ptr, MonsterEntity *m_ptr, bool necro);
index 2c3d2ac..f4727db 100644 (file)
@@ -610,7 +610,7 @@ int take_hit(PlayerType *player_ptr, int damage_type, int damage, concptr hit_fr
  * @param dam_func ダメージ処理を行う関数の参照ポインタ
  * @param message オーラダメージを受けた際のメッセージ
  */
-static void process_aura_damage(monster_type *m_ptr, PlayerType *player_ptr, bool immune, MonsterAuraType aura_flag, dam_func dam_func, concptr message)
+static void process_aura_damage(MonsterEntity *m_ptr, PlayerType *player_ptr, bool immune, MonsterAuraType aura_flag, dam_func dam_func, concptr message)
 {
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
     if (r_ptr->aura_flags.has_not(aura_flag) || immune) {
@@ -634,7 +634,7 @@ static void process_aura_damage(monster_type *m_ptr, PlayerType *player_ptr, boo
  * @param m_ptr オーラを持つモンスターの構造体参照ポインタ
  * @param player_ptr プレイヤーへの参照ポインタ
  */
-void touch_zap_player(monster_type *m_ptr, PlayerType *player_ptr)
+void touch_zap_player(MonsterEntity *m_ptr, PlayerType *player_ptr)
 {
     process_aura_damage(m_ptr, player_ptr, has_immune_fire(player_ptr) != 0, MonsterAuraType::FIRE, fire_dam, _("突然とても熱くなった!", "You are suddenly very hot!"));
     process_aura_damage(m_ptr, player_ptr, has_immune_cold(player_ptr) != 0, MonsterAuraType::COLD, cold_dam, _("突然とても寒くなった!", "You are suddenly very cold!"));
index 601de2a..03afec3 100644 (file)
@@ -9,11 +9,11 @@
 #define DAMAGE_NOESCAPE 5
 #define DAMAGE_USELIFE 6
 
-struct monster_type;
+class MonsterEntity;
 class PlayerType;
 int take_hit(PlayerType *player_ptr, int damage_type, int damage, concptr kb_str);
 int acid_dam(PlayerType *player_ptr, int dam, concptr kb_str, bool aura);
 int elec_dam(PlayerType *player_ptr, int dam, concptr kb_str, bool aura);
 int fire_dam(PlayerType *player_ptr, int dam, concptr kb_str, bool aura);
 int cold_dam(PlayerType *player_ptr, int dam, concptr kb_str, bool aura);
-void touch_zap_player(monster_type *m_ptr, PlayerType *player_ptr);
+void touch_zap_player(MonsterEntity *m_ptr, PlayerType *player_ptr);
index 30cafd4..bedd5f4 100644 (file)
@@ -153,14 +153,14 @@ bool move_player_effect(PlayerType *player_ptr, POSITION ny, POSITION nx, BIT_FL
             g_ptr->m_idx = om_idx;
             oc_ptr->m_idx = nm_idx;
             if (om_idx > 0) {
-                monster_type *om_ptr = &floor_ptr->m_list[om_idx];
+                MonsterEntity *om_ptr = &floor_ptr->m_list[om_idx];
                 om_ptr->fy = ny;
                 om_ptr->fx = nx;
                 update_monster(player_ptr, om_idx, true);
             }
 
             if (nm_idx > 0) {
-                monster_type *nm_ptr = &floor_ptr->m_list[nm_idx];
+                MonsterEntity *nm_ptr = &floor_ptr->m_list[nm_idx];
                 nm_ptr->fy = oy;
                 nm_ptr->fx = ox;
                 update_monster(player_ptr, nm_idx, true);
index a137c54..e908cd6 100644 (file)
@@ -489,7 +489,7 @@ bool has_kill_wall(PlayerType *player_ptr)
     }
 
     if (player_ptr->riding) {
-        monster_type *riding_m_ptr = &player_ptr->current_floor_ptr->m_list[player_ptr->riding];
+        MonsterEntity *riding_m_ptr = &player_ptr->current_floor_ptr->m_list[player_ptr->riding];
         monster_race *riding_r_ptr = &monraces_info[riding_m_ptr->r_idx];
         if (riding_r_ptr->feature_flags.has(MonsterFeatureType::KILL_WALL)) {
             return true;
@@ -516,7 +516,7 @@ bool has_pass_wall(PlayerType *player_ptr)
     }
 
     if (player_ptr->riding) {
-        monster_type *riding_m_ptr = &player_ptr->current_floor_ptr->m_list[player_ptr->riding];
+        MonsterEntity *riding_m_ptr = &player_ptr->current_floor_ptr->m_list[player_ptr->riding];
         monster_race *riding_r_ptr = &monraces_info[riding_m_ptr->r_idx];
         if (riding_r_ptr->feature_flags.has_not(MonsterFeatureType::PASS_WALL)) {
             pow = false;
@@ -1003,7 +1003,7 @@ BIT_FLAGS has_levitation(PlayerType *player_ptr)
 
     // 乗馬中は実際に浮遊するかどうかは乗馬中のモンスターに依存する
     if (player_ptr->riding) {
-        monster_type *riding_m_ptr = &player_ptr->current_floor_ptr->m_list[player_ptr->riding];
+        MonsterEntity *riding_m_ptr = &player_ptr->current_floor_ptr->m_list[player_ptr->riding];
         monster_race *riding_r_ptr = &monraces_info[riding_m_ptr->r_idx];
         result = riding_r_ptr->feature_flags.has(MonsterFeatureType::CAN_FLY) ? FLAG_CAUSE_RIDING : FLAG_CAUSE_NONE;
     }
@@ -1015,7 +1015,7 @@ bool has_can_swim(PlayerType *player_ptr)
 {
     bool can_swim = false;
     if (player_ptr->riding) {
-        monster_type *riding_m_ptr = &player_ptr->current_floor_ptr->m_list[player_ptr->riding];
+        MonsterEntity *riding_m_ptr = &player_ptr->current_floor_ptr->m_list[player_ptr->riding];
         monster_race *riding_r_ptr = &monraces_info[riding_m_ptr->r_idx];
         if (riding_r_ptr->feature_flags.has_any_of({ MonsterFeatureType::CAN_SWIM, MonsterFeatureType::AQUATIC })) {
             can_swim = true;
index 11bbcb0..1739a37 100644 (file)
@@ -811,7 +811,7 @@ concptr do_hissatsu_spell(PlayerType *player_ptr, SPELL_IDX spell, SpellProcessT
                 POSITION ny, nx;
                 MONSTER_IDX m_idx;
                 grid_type *g_ptr;
-                monster_type *m_ptr;
+                MonsterEntity *m_ptr;
 
                 y = player_ptr->y + ddy[dir];
                 x = player_ptr->x + ddx[dir];
index 24ebf53..396e543 100644 (file)
@@ -231,7 +231,7 @@ bool build_type5(PlayerType *player_ptr, dun_data_type *dd_ptr)
     int i;
     nest_mon_info_type nest_mon_info[NUM_NEST_MON_TYPE];
 
-    monster_type align;
+    MonsterEntity align;
 
     grid_type *g_ptr;
 
@@ -474,7 +474,7 @@ bool build_type6(PlayerType *player_ptr, dun_data_type *dd_ptr)
 
     MonsterRaceId what[16];
 
-    monster_type align;
+    MonsterEntity align;
 
     grid_type *g_ptr;
 
@@ -784,7 +784,7 @@ bool build_type13(PlayerType *player_ptr, dun_data_type *dd_ptr)
 
     MonsterRaceId what[16];
 
-    monster_type align;
+    MonsterEntity align;
 
     grid_type *g_ptr;
 
index a85a22d..bc7e4d6 100644 (file)
@@ -10,7 +10,7 @@
 #include "util/enum-converter.h"
 #include "util/quarks.h"
 
-static void write_monster_flags(monster_type *m_ptr, BIT_FLAGS *flags)
+static void write_monster_flags(MonsterEntity *m_ptr, BIT_FLAGS *flags)
 {
     if (!m_ptr->is_original_ap()) {
         set_bits(*flags, SaveDataMonsterFlagType::AP_R_IDX);
@@ -79,7 +79,7 @@ static void write_monster_flags(monster_type *m_ptr, BIT_FLAGS *flags)
     wr_u32b(*flags);
 }
 
-static void write_monster_info(monster_type *m_ptr, const BIT_FLAGS flags)
+static void write_monster_info(MonsterEntity *m_ptr, const BIT_FLAGS flags)
 {
     byte tmp8u;
     if (any_bits(flags, SaveDataMonsterFlagType::FAST)) {
@@ -145,7 +145,7 @@ static void write_monster_info(monster_type *m_ptr, const BIT_FLAGS flags)
  * @brief モンスター情報を書き込む / Write a "monster" record
  * @param m_ptr モンスター情報保存元ポインタ
  */
-void wr_monster(monster_type *m_ptr)
+void wr_monster(MonsterEntity *m_ptr)
 {
     BIT_FLAGS flags = 0x00000000;
     write_monster_flags(m_ptr, &flags);
index 9f6dc6a..a4b5e5a 100644 (file)
@@ -3,6 +3,6 @@
 #include "system/angband.h"
 
 enum class MonsterRaceId : int16_t;
-struct monster_type;
-void wr_monster(monster_type *m_ptr);
+class MonsterEntity;
+void wr_monster(MonsterEntity *m_ptr);
 void wr_lore(MonsterRaceId r_idx);
index ec4ff20..34ce13e 100644 (file)
@@ -116,7 +116,7 @@ void fetch_item(PlayerType *player_ptr, DIRECTION dir, WEIGHT wgt, bool require_
 
 bool fetch_monster(PlayerType *player_ptr)
 {
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     MONSTER_IDX m_idx;
     GAME_TEXT m_name[MAX_NLEN];
     POSITION ty, tx;
index 97a91f7..0db43ba 100644 (file)
@@ -85,7 +85,7 @@ bool polymorph_monster(PlayerType *player_ptr, POSITION y, POSITION x)
         return false;
     }
 
-    monster_type back_m = *m_ptr;
+    MonsterEntity back_m = *m_ptr;
     new_r_idx = poly_r_idx(player_ptr, old_r_idx);
     if (new_r_idx == old_r_idx) {
         return false;
index 06b7167..116ee10 100644 (file)
@@ -371,7 +371,7 @@ bool deathray_monsters(PlayerType *player_ptr)
  * @param m_ptr モンスター情報への参照ポインタ
  * @param r_ptr モンスター種族への参照ポインタ
  */
-void probed_monster_info(char *buf, PlayerType *player_ptr, monster_type *m_ptr, monster_race *r_ptr)
+void probed_monster_info(char *buf, PlayerType *player_ptr, MonsterEntity *m_ptr, monster_race *r_ptr)
 {
     if (!m_ptr->is_original_ap()) {
         if (m_ptr->mflag2.has(MonsterConstantFlagType::KAGE)) {
index d24e941..ab878e4 100644 (file)
@@ -4,7 +4,7 @@
 #include "system/angband.h"
 
 struct monster_race;
-struct monster_type;
+class MonsterEntity;
 class PlayerType;
 bool project_all_los(PlayerType *player_ptr, AttributeType typ, int dam);
 bool speed_monsters(PlayerType *player_ptr);
@@ -30,5 +30,5 @@ bool banish_monsters(PlayerType *player_ptr, int dist);
 bool turn_evil(PlayerType *player_ptr, int dam);
 bool turn_monsters(PlayerType *player_ptr, int dam);
 bool deathray_monsters(PlayerType *player_ptr);
-void probed_monster_info(char *buf, PlayerType *player_ptr, monster_type *m_ptr, monster_race *r_ptr);
+void probed_monster_info(char *buf, PlayerType *player_ptr, MonsterEntity *m_ptr, monster_race *r_ptr);
 bool probing(PlayerType *player_ptr);
index 98b1081..3d4278e 100644 (file)
@@ -80,7 +80,7 @@ bool teleport_swap(PlayerType *player_ptr, DIRECTION dir)
         return false;
     }
 
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     monster_race *r_ptr;
     m_ptr = &player_ptr->current_floor_ptr->m_list[g_ptr->m_idx];
     r_ptr = &monraces_info[m_ptr->r_idx];
index 11c5692..3792662 100644 (file)
@@ -249,7 +249,7 @@ bool teleport_level_other(PlayerType *player_ptr)
         return true;
     }
 
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     monster_race *r_ptr;
     m_ptr = &player_ptr->current_floor_ptr->m_list[target_m_idx];
     r_ptr = &monraces_info[m_ptr->r_idx];
index b74b913..8f41ac0 100644 (file)
@@ -22,7 +22,7 @@
  * @param m_ptr 対象モンスター
  * @return 魅了に抵抗したらTRUE
  */
-bool common_saving_throw_charm(PlayerType *player_ptr, int pow, monster_type *m_ptr)
+bool common_saving_throw_charm(PlayerType *player_ptr, int pow, MonsterEntity *m_ptr)
 {
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
 
@@ -62,7 +62,7 @@ bool common_saving_throw_charm(PlayerType *player_ptr, int pow, monster_type *m_
  * @param m_ptr 対象モンスター
  * @return 服従に抵抗したらTRUE
  */
-bool common_saving_throw_control(PlayerType *player_ptr, int pow, monster_type *m_ptr)
+bool common_saving_throw_control(PlayerType *player_ptr, int pow, MonsterEntity *m_ptr)
 {
     auto *r_ptr = &monraces_info[m_ptr->r_idx];
 
index 1e2b6f2..9b3e32e 100644 (file)
@@ -2,8 +2,8 @@
 
 #include "system/angband.h"
 
-struct monster_type;
+class MonsterEntity;
 class PlayerType;
-bool common_saving_throw_control(PlayerType *player_ptr, int pow, monster_type *m_ptr);
-bool common_saving_throw_charm(PlayerType *player_ptr, int pow, monster_type *m_ptr);
+bool common_saving_throw_control(PlayerType *player_ptr, int pow, MonsterEntity *m_ptr);
+bool common_saving_throw_charm(PlayerType *player_ptr, int pow, MonsterEntity *m_ptr);
 PERCENTAGE beam_chance(PlayerType *player_ptr);
index bb93472..1fbd82f 100644 (file)
@@ -613,7 +613,7 @@ bool cosmic_cast_off(PlayerType *player_ptr, ItemEntity **o_ptr_ptr)
  * @brief プレイヤーの因果混乱処理 / Apply Nexus
  * @param m_ptr 因果混乱をプレイヤーに与えたモンスターの情報参照ポインタ
  */
-void apply_nexus(monster_type *m_ptr, PlayerType *player_ptr)
+void apply_nexus(MonsterEntity *m_ptr, PlayerType *player_ptr)
 {
     switch (randint1(7)) {
     case 1:
index 98631d1..7af40eb 100644 (file)
@@ -5,7 +5,7 @@
 
 class ItemEntity;
 class PlayerType;
-struct monster_type;
+class MonsterEntity;
 bool heal_monster(PlayerType *player_ptr, DIRECTION dir, int dam);
 bool speed_monster(PlayerType *player_ptr, DIRECTION dir, int power);
 bool slow_monster(PlayerType *player_ptr, DIRECTION dir, int power);
@@ -31,5 +31,5 @@ bool restore_all_status(PlayerType *player_ptr);
 
 bool fishing(PlayerType *player_ptr);
 bool cosmic_cast_off(PlayerType *player_ptr, ItemEntity **o_ptr_ptr);
-void apply_nexus(monster_type *m_ptr, PlayerType *player_ptr);
+void apply_nexus(MonsterEntity *m_ptr, PlayerType *player_ptr);
 void status_shuffle(PlayerType *player_ptr);
index 68e79fa..b0dc60e 100644 (file)
@@ -309,7 +309,7 @@ void mitokohmon(PlayerType *player_ptr)
 
     if (!count) {
         for (int i = player_ptr->current_floor_ptr->m_max - 1; i > 0; i--) {
-            monster_type *m_ptr;
+            MonsterEntity *m_ptr;
             m_ptr = &player_ptr->current_floor_ptr->m_list[i];
             if (!m_ptr->is_valid()) {
                 continue;
index 903e389..4cadfe9 100644 (file)
@@ -34,7 +34,7 @@ constexpr auto VIEW_MAX = 1536;
 constexpr auto REDRAW_MAX = 2298;
 
 struct grid_type;
-struct monster_type;
+class MonsterEntity;
 class ItemEntity;
 class FloorType {
 public:
@@ -55,7 +55,7 @@ public:
     OBJECT_IDX o_max = 0; /* Number of allocated objects */
     OBJECT_IDX o_cnt = 0; /* Number of live objects */
 
-    std::vector<monster_type> m_list; /*!< The array of dungeon monsters [max_m_idx] */
+    std::vector<MonsterEntity> m_list; /*!< The array of dungeon monsters [max_m_idx] */
     MONSTER_IDX m_max = 0; /* Number of allocated monsters */
     MONSTER_IDX m_cnt = 0; /* Number of live monsters */
 
index cff330f..8f29d45 100644 (file)
@@ -7,22 +7,22 @@
 #include "system/monster-race-definition.h"
 #include "util/string-processor.h"
 
-bool monster_type::is_friendly() const
+bool MonsterEntity::is_friendly() const
 {
     return this->mflag2.has(MonsterConstantFlagType::FRIENDLY);
 }
 
-bool monster_type::is_pet() const
+bool MonsterEntity::is_pet() const
 {
     return this->mflag2.has(MonsterConstantFlagType::PET);
 }
 
-bool monster_type::is_hostile() const
+bool MonsterEntity::is_hostile() const
 {
     return !this->is_friendly() && !this->is_pet();
 }
 
-bool monster_type::is_original_ap() const
+bool MonsterEntity::is_original_ap() const
 {
     return this->ap_r_idx == this->r_idx;
 }
@@ -37,7 +37,7 @@ bool monster_type::is_original_ap() const
  * その他増やしたい時はis_special_mimic に「|=」で追加すること
  *
  */
-bool monster_type::is_mimicry() const
+bool MonsterEntity::is_mimicry() const
 {
     auto is_special_mimic = this->ap_r_idx == MonsterRaceId::BEHINDER;
     if (is_special_mimic) {
@@ -57,12 +57,12 @@ bool monster_type::is_mimicry() const
     return r_ref.behavior_flags.has(MonsterBehaviorType::NEVER_MOVE) || this->is_asleep();
 }
 
-bool monster_type::is_valid() const
+bool MonsterEntity::is_valid() const
 {
     return MonsterRace(this->r_idx).is_valid();
 }
 
-MonsterRaceId monster_type::get_real_r_idx() const
+MonsterRaceId MonsterEntity::get_real_r_idx() const
 {
     const auto &r_ref = monraces_info[this->r_idx];
     if (this->mflag2.has_not(MonsterConstantFlagType::CHAMELEON)) {
@@ -76,77 +76,77 @@ MonsterRaceId monster_type::get_real_r_idx() const
  * @brief モンスターの真の種族を返す / Extract monster race pointer of a monster's true form
  * @return 本当のモンスター種族参照ポインタ
  */
-monster_race &monster_type::get_real_r_ref() const
+monster_race &MonsterEntity::get_real_r_ref() const
 {
     return monraces_info[this->get_real_r_idx()];
 }
 
-short monster_type::get_remaining_sleep() const
+short MonsterEntity::get_remaining_sleep() const
 {
     return this->mtimed[MTIMED_CSLEEP];
 }
 
-bool monster_type::is_asleep() const
+bool MonsterEntity::is_asleep() const
 {
     return this->get_remaining_sleep() > 0;
 }
 
-short monster_type::get_remaining_acceleration() const
+short MonsterEntity::get_remaining_acceleration() const
 {
     return this->mtimed[MTIMED_FAST];
 }
 
-bool monster_type::is_accelerated() const
+bool MonsterEntity::is_accelerated() const
 {
     return this->get_remaining_acceleration() > 0;
 }
 
-short monster_type::get_remaining_deceleration() const
+short MonsterEntity::get_remaining_deceleration() const
 {
     return this->mtimed[MTIMED_SLOW];
 }
 
-bool monster_type::is_decelerated() const
+bool MonsterEntity::is_decelerated() const
 {
     return this->get_remaining_deceleration() > 0;
 }
 
-short monster_type::get_remaining_stun() const
+short MonsterEntity::get_remaining_stun() const
 {
     return this->mtimed[MTIMED_STUNNED];
 }
 
-bool monster_type::is_stunned() const
+bool MonsterEntity::is_stunned() const
 {
     return this->get_remaining_stun() > 0;
 }
 
-short monster_type::get_remaining_confusion() const
+short MonsterEntity::get_remaining_confusion() const
 {
     return this->mtimed[MTIMED_CONFUSED];
 }
 
-bool monster_type::is_confused() const
+bool MonsterEntity::is_confused() const
 {
     return this->get_remaining_confusion() > 0;
 }
 
-short monster_type::get_remaining_fear() const
+short MonsterEntity::get_remaining_fear() const
 {
     return this->mtimed[MTIMED_MONFEAR];
 }
 
-bool monster_type::is_fearful() const
+bool MonsterEntity::is_fearful() const
 {
     return this->get_remaining_fear() > 0;
 }
 
-short monster_type::get_remaining_invulnerability() const
+short MonsterEntity::get_remaining_invulnerability() const
 {
     return this->mtimed[MTIMED_INVULNER];
 }
 
-bool monster_type::is_invulnerable() const
+bool MonsterEntity::is_invulnerable() const
 {
     return this->get_remaining_invulnerability() > 0;
 }
@@ -154,7 +154,7 @@ bool monster_type::is_invulnerable() const
 /*
  * @brief 悪夢モード、一時加速、一時減速に基づくモンスターの現在速度を返す
  */
-byte monster_type::get_temporary_speed() const
+byte MonsterEntity::get_temporary_speed() const
 {
     auto speed = this->mspeed;
     if (ironman_nightmare) {
index 71934d4..3f25979 100644 (file)
@@ -18,7 +18,9 @@ constexpr int MONSTER_MAXHP = 30000; //!< モンスターの最大HP
 enum class MonsterRaceId : int16_t;
 class FloorType;
 struct monster_race;
-struct monster_type {
+class MonsterEntity {
+public:
+    MonsterEntity() = default;
     MonsterRaceId r_idx{}; /*!< モンスターの実種族ID (これが0の時は死亡扱いになる) / Monster race index 0 = dead. */
     MonsterRaceId ap_r_idx{}; /*!< モンスターの外見種族ID(あやしい影、たぬき、ジュラル星人誤認などにより変化する)Monster race appearance index */
     FloorType *current_floor_ptr{}; /*!< 所在フロアID(現状はFloorType構造体によるオブジェクトは1つしかないためソースコード設計上の意義以外はない)*/
index 954b9f1..a22eb28 100644 (file)
@@ -67,7 +67,7 @@ struct eg_type {
     OBJECT_IDX floor_list[23];
     ITEM_NUMBER floor_num;
     grid_type *g_ptr;
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     OBJECT_IDX next_o_idx;
     FEAT_IDX feat;
     TerrainType *f_ptr;
@@ -98,7 +98,7 @@ static eg_type *initialize_eg_type(PlayerType *player_ptr, eg_type *eg_ptr, POSI
 /*
  * Evaluate number of kill needed to gain level
  */
-static void evaluate_monster_exp(PlayerType *player_ptr, char *buf, monster_type *m_ptr)
+static void evaluate_monster_exp(PlayerType *player_ptr, char *buf, MonsterEntity *m_ptr)
 {
     monster_race *ap_r_ptr = &monraces_info[m_ptr->ap_r_idx];
     if ((player_ptr->lev >= PY_MAX_LEVEL) || PlayerRace(player_ptr).equals(PlayerRaceType::ANDROID)) {
index 63fe369..248d0a9 100644 (file)
@@ -123,8 +123,8 @@ bool ang_sort_comp_importance(PlayerType *player_ptr, vptr u, vptr v, int a, int
     POSITION *y = (POSITION *)(v);
     grid_type *ca_ptr = &player_ptr->current_floor_ptr->grid_array[y[a]][x[a]];
     grid_type *cb_ptr = &player_ptr->current_floor_ptr->grid_array[y[b]][x[b]];
-    monster_type *ma_ptr = &player_ptr->current_floor_ptr->m_list[ca_ptr->m_idx];
-    monster_type *mb_ptr = &player_ptr->current_floor_ptr->m_list[cb_ptr->m_idx];
+    MonsterEntity *ma_ptr = &player_ptr->current_floor_ptr->m_list[ca_ptr->m_idx];
+    MonsterEntity *mb_ptr = &player_ptr->current_floor_ptr->m_list[cb_ptr->m_idx];
     monster_race *ap_ra_ptr, *ap_rb_ptr;
 
     /* The player grid */
@@ -380,8 +380,8 @@ bool ang_sort_comp_pet(PlayerType *player_ptr, vptr u, vptr v, int a, int b)
     int w1 = who[a];
     int w2 = who[b];
 
-    monster_type *m_ptr1 = &player_ptr->current_floor_ptr->m_list[w1];
-    monster_type *m_ptr2 = &player_ptr->current_floor_ptr->m_list[w2];
+    MonsterEntity *m_ptr1 = &player_ptr->current_floor_ptr->m_list[w1];
+    MonsterEntity *m_ptr2 = &player_ptr->current_floor_ptr->m_list[w2];
     monster_race *r_ptr1 = &monraces_info[m_ptr1->r_idx];
     monster_race *r_ptr2 = &monraces_info[m_ptr2->r_idx];
 
@@ -587,8 +587,8 @@ bool ang_sort_comp_pet_dismiss(PlayerType *player_ptr, vptr u, vptr v, int a, in
     int w1 = who[a];
     int w2 = who[b];
 
-    monster_type *m_ptr1 = &player_ptr->current_floor_ptr->m_list[w1];
-    monster_type *m_ptr2 = &player_ptr->current_floor_ptr->m_list[w2];
+    MonsterEntity *m_ptr1 = &player_ptr->current_floor_ptr->m_list[w1];
+    MonsterEntity *m_ptr2 = &player_ptr->current_floor_ptr->m_list[w2];
     monster_race *r_ptr1 = &monraces_info[m_ptr1->r_idx];
     monster_race *r_ptr2 = &monraces_info[m_ptr2->r_idx];
 
index 7bc0c90..8e79924 100644 (file)
@@ -10,7 +10,7 @@
 /*
  * Monster health description
  */
-concptr look_mon_desc(monster_type *m_ptr, BIT_FLAGS mode)
+concptr look_mon_desc(MonsterEntity *m_ptr, BIT_FLAGS mode)
 {
     bool living = monster_living(m_ptr->ap_r_idx);
     int perc = m_ptr->maxhp > 0 ? 100L * m_ptr->hp / m_ptr->maxhp : 0;
index b4edb04..c87707b 100644 (file)
@@ -2,5 +2,5 @@
 
 #include "system/angband.h"
 
-struct monster_type;
-concptr look_mon_desc(monster_type *m_ptr, BIT_FLAGS mode);
+class MonsterEntity;
+concptr look_mon_desc(MonsterEntity *m_ptr, BIT_FLAGS mode);
index 6c32453..fd306f6 100644 (file)
@@ -103,7 +103,7 @@ void fix_inventory(PlayerType *player_ptr)
  *  name: name of monster
  * </pre>
  */
-static void print_monster_line(TERM_LEN x, TERM_LEN y, monster_type *m_ptr, int n_same)
+static void print_monster_line(TERM_LEN x, TERM_LEN y, MonsterEntity *m_ptr, int n_same)
 {
     char buf[256];
     MonsterRaceId r_idx = m_ptr->ap_r_idx;
@@ -145,7 +145,7 @@ static void print_monster_line(TERM_LEN x, TERM_LEN y, monster_type *m_ptr, int
 void print_monster_list(FloorType *floor_ptr, const std::vector<MONSTER_IDX> &monster_list, TERM_LEN x, TERM_LEN y, TERM_LEN max_lines)
 {
     TERM_LEN line = y;
-    monster_type *last_mons = nullptr;
+    MonsterEntity *last_mons = nullptr;
     int n_same = 0;
     size_t i;
     for (i = 0; i < monster_list.size(); i++) {
@@ -546,7 +546,7 @@ void fix_object(PlayerType *player_ptr)
  * @details
  * Lookコマンドでカーソルを合わせた場合に合わせてミミックは考慮しない。
  */
-static const monster_type *monster_on_floor_items(FloorType *floor_ptr, const grid_type *g_ptr)
+static const MonsterEntity *monster_on_floor_items(FloorType *floor_ptr, const grid_type *g_ptr)
 {
     if (g_ptr->m_idx == 0) {
         return nullptr;
index fa3e5ea..909a5b3 100644 (file)
@@ -311,7 +311,7 @@ void health_redraw(PlayerType *player_ptr, bool riding)
         col = COL_INFO;
     }
 
-    monster_type *m_ptr;
+    MonsterEntity *m_ptr;
     m_ptr = &player_ptr->current_floor_ptr->m_list[health_who];
 
     if (w_ptr->wizard && player_ptr->phase_out) {