OSDN Git Service

[Refactor] MonsterOtherType関連のフラグトークン定義を作成
authorSlimebreath6078 <slimebreath6078@yahoo.co.jp>
Sun, 28 Jan 2024 09:25:45 +0000 (18:25 +0900)
committerSlimebreath6078 <slimebreath6078@yahoo.co.jp>
Wed, 31 Jan 2024 11:34:39 +0000 (20:34 +0900)
src/info-reader/dungeon-reader.cpp
src/info-reader/race-info-tokens-table.cpp
src/info-reader/race-info-tokens-table.h
src/info-reader/race-reader.cpp

index 899b2e1..887929c 100644 (file)
@@ -96,6 +96,9 @@ static bool grab_one_basic_monster_flag(dungeon_type *d_ptr, std::string_view wh
     if (EnumClassFlagGroup<MonsterSpecialType>::grab_one_flag(d_ptr->mon_special_flags, r_info_special_flags, what)) {
         return true;
     }
+    if (EnumClassFlagGroup<MonsterMiscType>::grab_one_flag(d_ptr->mon_misc_flags, r_info_misc_flags, what)) {
+        return true;
+    }
 
     msg_format(_("未知のモンスター・フラグ '%s'。", "Unknown monster flag '%s'."), what.data());
     return false;
index 3d5c83a..b142500 100644 (file)
@@ -6,6 +6,7 @@
 #include "monster-race/race-drop-flags.h"
 #include "monster-race/race-feature-flags.h"
 #include "monster-race/race-kind-flags.h"
+#include "monster-race/race-misc-flags.h"
 #include "monster-race/race-population-flags.h"
 #include "monster-race/race-sex-const.h"
 #include "monster-race/race-speak-flags.h"
@@ -95,13 +96,7 @@ const std::unordered_map<std::string_view, RaceBlowEffectType> r_info_blow_effec
  * Monster race flags
  */
 const std::unordered_map<std::string_view, race_flags1> r_info_flags1 = {
-    { "QUESTOR", RF1_QUESTOR },
-    { "FORCE_DEPTH", RF1_FORCE_DEPTH },
-    { "FORCE_MAXHP", RF1_FORCE_MAXHP },
     { "FORCE_EXTRA", RF1_FORCE_EXTRA },
-    { "FRIENDS", RF1_FRIENDS },
-    { "ESCORT", RF1_ESCORT },
-    { "ESCORTS", RF1_ESCORTS },
 };
 
 /*!
@@ -109,16 +104,7 @@ const std::unordered_map<std::string_view, race_flags1> r_info_flags1 = {
  * Monster race flags
  */
 const std::unordered_map<std::string_view, race_flags2> r_info_flags2 = {
-    { "REFLECTING", RF2_REFLECTING },
-    { "INVISIBLE", RF2_INVISIBLE },
-    { "COLD_BLOOD", RF2_COLD_BLOOD },
-    { "EMPTY_MIND", RF2_EMPTY_MIND },
-    { "WEIRD_MIND", RF2_WEIRD_MIND },
-    { "MULTIPLY", RF2_MULTIPLY },
-    { "REGENERATE", RF2_REGENERATE },
     { "CHAR_MULTI", RF2_CHAR_MULTI },
-    { "POWERFUL", RF2_POWERFUL },
-    { "ELDRITCH_HORROR", RF2_ELDRITCH_HORROR },
     { "FLAGS2_XX14", RF2_XX14 },
     { "FLAGS2_XX15", RF2_XX15 },
 };
@@ -245,20 +231,13 @@ const std::unordered_map<std::string_view, MonsterAbilityType> r_info_ability_fl
  * @details ダンジョンの主は、DungeonDefinitions の FINAL_GUARDIAN_HOGE にて自動指定
  * HOGE は、MonsterRaceDefinitions で定義したモンスター種族ID
  */
-const std::unordered_map<std::string_view, race_flags7> r_info_flags7 = {
-    { "RIDING", RF7_RIDING },
-    { "KAGE", RF7_KAGE },
-    { "CHAMELEON", RF7_CHAMELEON },
-    { "TANUKI", RF7_TANUKI },
-};
+const std::unordered_map<std::string_view, race_flags7> r_info_flags7 = {};
 
 /*!
  * モンスター特性トークンの定義8 /
  * Monster race flags
  */
-const std::unordered_map<std::string_view, race_flags8> r_info_flags8 = {
-    { "NO_QUEST", RF8_NO_QUEST },
-};
+const std::unordered_map<std::string_view, race_flags8> r_info_flags8 = {};
 
 /*!
  * モンスター特性トークンの定義R(耐性) /
@@ -458,6 +437,29 @@ const std::unordered_map<std::string_view, MonsterBrightnessType> r_info_brightn
     { "SELF_DARK_2", MonsterBrightnessType::SELF_DARK_2 },
 };
 
+const std::unordered_map<std::string_view, MonsterMiscType> r_info_misc_flags = {
+    { "FORCE_DEPTH", MonsterMiscType::FORCE_DEPTH },
+    { "FORCE_MAXHP", MonsterMiscType::FORCE_MAXHP },
+    { "FRIENDS", MonsterMiscType::HAS_FRIENDS },
+    { "ESCORT", MonsterMiscType::ESCORT },
+    { "ESCORTS", MonsterMiscType::MORE_ESCORT },
+    { "RIDING", MonsterMiscType::RIDING },
+    { "INVISIBLE", MonsterMiscType::INVISIBLE },
+    { "COLD_BLOOD", MonsterMiscType::COLD_BLOOD },
+    { "KAGE", MonsterMiscType::KAGE },
+    { "CHAMELEON", MonsterMiscType::CHAMELEON },
+    { "TANUKI", MonsterMiscType::TANUKI },
+    { "NO_QUEST", MonsterMiscType::NO_QUEST },
+    { "ELDRITCH_HORROR", MonsterMiscType::ELDRITCH_HORROR },
+    { "MULTIPLY", MonsterMiscType::MULTIPLY },
+    { "REGENERATE", MonsterMiscType::REGENERATE },
+    { "POWERFUL", MonsterMiscType::POWERFUL },
+    { "REFLECTING", MonsterMiscType::REFLECTING },
+    { "QUESTOR", MonsterMiscType::QUESTOR },
+    { "EMPTY_MIND", MonsterMiscType::EMPTY_MIND },
+    { "WEIRD_MIND", MonsterMiscType::WEIRD_MIND },
+};
+
 const std::unordered_map<std::string_view, MonsterSex> r_info_sex = {
     { "NONE", MonsterSex::NONE },
     { "MALE", MonsterSex::MALE },
index b72af67..cd3f043 100644 (file)
@@ -15,6 +15,7 @@
 #include "monster-race/race-flags7.h"
 #include "monster-race/race-flags8.h"
 #include "monster-race/race-kind-flags.h"
+#include "monster-race/race-misc-flags.h"
 #include "monster-race/race-population-flags.h"
 #include "monster-race/race-sex-const.h"
 #include "monster-race/race-speak-flags.h"
@@ -48,3 +49,4 @@ extern const std::unordered_map<std::string_view, MonsterSpeakType> r_info_speak
 extern const std::unordered_map<std::string_view, MonsterBrightnessType> r_info_brightness_flags;
 extern const std::unordered_map<std::string_view, MonsterSex> r_info_sex;
 extern const std::unordered_map<std::string_view, MonsterSpecialType> r_info_special_flags;
+extern const std::unordered_map<std::string_view, MonsterMiscType> r_info_misc_flags;
index 64a9ce2..af8712b 100644 (file)
@@ -83,6 +83,9 @@ static bool grab_one_basic_flag(MonsterRaceInfo *r_ptr, std::string_view what)
     if (EnumClassFlagGroup<MonsterSpecialType>::grab_one_flag(r_ptr->special_flags, r_info_special_flags, what)) {
         return true;
     }
+    if (EnumClassFlagGroup<MonsterMiscType>::grab_one_flag(r_ptr->misc_flags, r_info_misc_flags, what)) {
+        return true;
+    }
 
     msg_format(_("未知のモンスター・フラグ '%s'。", "Unknown monster flag '%s'."), what.data());
     return false;