OSDN Git Service

[Refactor] #37353 モンスター条件処理を monster1.c と birth.c から monster-hook.c/h へ分離。
authorDeskull <deskull@users.sourceforge.jp>
Mon, 24 Sep 2018 00:41:41 +0000 (09:41 +0900)
committerDeskull <deskull@users.sourceforge.jp>
Mon, 24 Sep 2018 00:41:41 +0000 (09:41 +0900)
Separate monster hook functions from monster1.c and birth.c to monster-hook.c/h.

12 files changed:
Hengband_vcs2015/Hengband/Hengband.vcxproj
Hengband_vcs2015/Hengband/Hengband.vcxproj.filters
src/Makefile.am
src/birth.c
src/externs.h
src/monster-hook.c [new file with mode: 0644]
src/monster-hook.h [new file with mode: 0644]
src/monster1.c
src/monster2.c
src/rooms-pitnest.c
src/rooms-special.c
src/util.c

index 7c07de4..f878c89 100644 (file)
     <ClCompile Include="..\..\src\floor-generate.c" />\r
     <ClCompile Include="..\..\src\floor-save.c" />\r
     <ClCompile Include="..\..\src\history.c" />\r
+    <ClCompile Include="..\..\src\monster-hook.c" />\r
     <ClCompile Include="..\..\src\realm-craft.c" />\r
     <ClCompile Include="..\..\src\realm-crusade.c" />\r
     <ClCompile Include="..\..\src\realm-daemon.c" />\r
     <ClInclude Include="..\..\src\init.h" />\r
     <ClInclude Include="..\..\src\kajitips.h" />\r
     <ClInclude Include="..\..\src\mindtips.h" />\r
+    <ClInclude Include="..\..\src\monster-hook.h" />\r
     <ClInclude Include="..\..\src\readdib.h" />\r
     <ClInclude Include="..\..\src\realm-arcane.h" />\r
     <ClInclude Include="..\..\src\realm-chaos.h" />\r
index 19e15ca..3302885 100644 (file)
     <ClCompile Include="..\..\src\history.c">\r
       <Filter>Source</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="..\..\src\monster-hook.c">\r
+      <Filter>Source</Filter>\r
+    </ClCompile>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="..\..\src\angband.h">\r
     <ClInclude Include="..\..\src\history.h">\r
       <Filter>Header</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="..\..\src\monster-hook.h">\r
+      <Filter>Header</Filter>\r
+    </ClInclude>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ResourceCompile Include="..\..\src\angband.rc" />\r
index e547524..e634d78 100644 (file)
@@ -15,7 +15,8 @@ hengband_SOURCES = \
        generate.h grid.c grid.h h-basic.h h-config.h h-define.h hissatsu.c \
        history.h history.c \
        h-system.h h-type.h inet.c init1.c init2.c init.h japanese.c load.c \
-       main.c main-x11.c main-gcu.c mane.c melee1.c melee2.c mind.c monster1.c \
+       main.c main-x11.c main-gcu.c mane.c melee1.c melee2.c mind.c \
+       monster-hook.c monster-hook.h monster1.c \
        monster2.c mspells1.c mspells2.c mspells3.c mspells4.c mutation.c object1.c \
        object2.c obj_kind.c racial.c realm-arcane.c \
        realm-arcane.h realm-chaos.c realm-chaos.h realm-craft.c realm-craft.h \
index b993067..f8d8f07 100644 (file)
@@ -13,6 +13,7 @@
 
 #include "angband.h"
 #include "history.h"
+#include "monster-hook.h"
 
 /*!
  * オートローラーの内容を描画する間隔 / 
@@ -1634,12 +1635,7 @@ static void birth_put_stats(void)
                        /* Never happened */
                        else
                        {
-#ifdef JP
-                               c_put_str(TERM_RED, "(なし)", 3+i, col+13);
-#else
-                               c_put_str(TERM_RED, "(NONE)", 3+i, col+13);
-#endif
-
+                               c_put_str(TERM_RED, _("(なし)", "(NONE)"), 3+i, col+13);
                        }
                }
        }
@@ -1875,31 +1871,6 @@ static void player_wipe_without_name(void)
 
 
 /*!
- * @brief モンスターがクエストの討伐対象に成り得るかを返す / Hook function for quest monsters
- * @param r_idx モンスターID
- * @return 討伐対象にできるならTRUEを返す。
- */
-static bool mon_hook_quest(MONRACE_IDX r_idx)
-{
-       monster_race *r_ptr = &r_info[r_idx];
-
-       /* Random quests are in the dungeon */
-       if (r_ptr->flags8 & RF8_WILD_ONLY) return FALSE;
-
-       /* No random quests for aquatic monsters */
-       if (r_ptr->flags7 & RF7_AQUATIC) return FALSE;
-
-       /* No random quests for multiplying monsters */
-       if (r_ptr->flags2 & RF2_MULTIPLY) return FALSE;
-
-       /* No quests to kill friendly monsters */
-       if (r_ptr->flags7 & RF7_FRIENDLY) return FALSE;
-
-       return TRUE;
-}
-
-
-/*!
  * @brief ランダムクエストの討伐ユニークを決める / Determine the random quest uniques
  * @param q_ptr クエスト構造体の参照ポインタ
  * @return なし
index e9f2669..88305fb 100644 (file)
@@ -905,7 +905,6 @@ extern void screen_roff(MONRACE_IDX r_idx, BIT_FLAGS mode);
 extern void display_roff(MONRACE_IDX r_idx);
 extern void output_monster_spoiler(MONRACE_IDX r_idx, void (*roff_func)(byte attr, cptr str));
 extern void create_name(int type, char *name);
-extern bool mon_hook_dungeon(MONRACE_IDX r_idx);
 
 extern monster_hook_type get_monster_hook(void);
 extern monster_hook_type get_monster_hook2(int y, int x);
diff --git a/src/monster-hook.c b/src/monster-hook.c
new file mode 100644 (file)
index 0000000..dec42d0
--- /dev/null
@@ -0,0 +1,247 @@
+#include "angband.h"\r
+#include "monster-hook.h"\r
+\r
+\r
+/*!\r
+* @brief \83\82\83\93\83X\83^\81[\82ª\83N\83G\83X\83g\82Ì\93¢\94°\91Î\8fÛ\82É\90¬\82è\93¾\82é\82©\82ð\95Ô\82· / Hook function for quest monsters\r
+* @param r_idx \83\82\83\93\83X\83^\81[\82h\82c\r
+* @return \93¢\94°\91Î\8fÛ\82É\82Å\82«\82é\82È\82çTRUE\82ð\95Ô\82·\81B\r
+*/\r
+bool mon_hook_quest(MONRACE_IDX r_idx)\r
+{\r
+       monster_race *r_ptr = &r_info[r_idx];\r
+\r
+       /* Random quests are in the dungeon */\r
+       if (r_ptr->flags8 & RF8_WILD_ONLY) return FALSE;\r
+\r
+       /* No random quests for aquatic monsters */\r
+       if (r_ptr->flags7 & RF7_AQUATIC) return FALSE;\r
+\r
+       /* No random quests for multiplying monsters */\r
+       if (r_ptr->flags2 & RF2_MULTIPLY) return FALSE;\r
+\r
+       /* No quests to kill friendly monsters */\r
+       if (r_ptr->flags7 & RF7_FRIENDLY) return FALSE;\r
+\r
+       return TRUE;\r
+}\r
+\r
+\r
+/*!\r
+* @brief \83\82\83\93\83X\83^\81[\82ª\83_\83\93\83W\83\87\83\93\82É\8fo\8c»\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82·\r
+* @param r_idx \94»\92è\82·\82é\83\82\83\93\83X\83^\81[\82Ì\8eí\91°ID\r
+* @return \83_\83\93\83W\83\87\83\93\82É\8fo\8c»\82·\82é\82È\82ç\82ÎTRUE\82ð\95Ô\82·\r
+*/\r
+bool mon_hook_dungeon(MONRACE_IDX r_idx)\r
+{\r
+       monster_race *r_ptr = &r_info[r_idx];\r
+\r
+       if (!(r_ptr->flags8 & RF8_WILD_ONLY))\r
+               return TRUE;\r
+       else\r
+       {\r
+               dungeon_info_type *d_ptr = &d_info[dungeon_type];\r
+               if ((d_ptr->mflags8 & RF8_WILD_MOUNTAIN) &&\r
+                       (r_ptr->flags8 & RF8_WILD_MOUNTAIN)) return TRUE;\r
+               return FALSE;\r
+       }\r
+}\r
+\r
+\r
+/*!\r
+* @brief \83\82\83\93\83X\83^\81[\82ª\8aC\97m\82É\8fo\8c»\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82·\r
+* @param r_idx \94»\92è\82·\82é\83\82\83\93\83X\83^\81[\82Ì\8eí\91°ID\r
+* @return \8aC\97m\82É\8fo\8c»\82·\82é\82È\82ç\82ÎTRUE\82ð\95Ô\82·\r
+*/\r
+bool mon_hook_ocean(MONRACE_IDX r_idx)\r
+{\r
+       monster_race *r_ptr = &r_info[r_idx];\r
+\r
+       if (r_ptr->flags8 & RF8_WILD_OCEAN)\r
+               return TRUE;\r
+       else\r
+               return FALSE;\r
+}\r
+\r
+\r
+/*!\r
+* @brief \83\82\83\93\83X\83^\81[\82ª\8aC\8aÝ\82É\8fo\8c»\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82·\r
+* @param r_idx \94»\92è\82·\82é\83\82\83\93\83X\83^\81[\82Ì\8eí\91°ID\r
+* @return \8aC\8aÝ\82É\8fo\8c»\82·\82é\82È\82ç\82ÎTRUE\82ð\95Ô\82·\r
+*/\r
+bool mon_hook_shore(MONRACE_IDX r_idx)\r
+{\r
+       monster_race *r_ptr = &r_info[r_idx];\r
+\r
+       if (r_ptr->flags8 & RF8_WILD_SHORE)\r
+               return TRUE;\r
+       else\r
+               return FALSE;\r
+}\r
+\r
+\r
+/*!\r
+* @brief \83\82\83\93\83X\83^\81[\82ª\8dr\92n\82É\8fo\8c»\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82·\r
+* @param r_idx \94»\92è\82·\82é\83\82\83\93\83X\83^\81[\82Ì\8eí\91°ID\r
+* @return \8dr\92n\82É\8fo\8c»\82·\82é\82È\82ç\82ÎTRUE\82ð\95Ô\82·\r
+*/\r
+bool mon_hook_waste(MONRACE_IDX r_idx)\r
+{\r
+       monster_race *r_ptr = &r_info[r_idx];\r
+\r
+       if (r_ptr->flags8 & (RF8_WILD_WASTE | RF8_WILD_ALL))\r
+               return TRUE;\r
+       else\r
+               return FALSE;\r
+}\r
+\r
+\r
+/*!\r
+* @brief \83\82\83\93\83X\83^\81[\82ª\92¬\82É\8fo\8c»\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82·\r
+* @param r_idx \94»\92è\82·\82é\83\82\83\93\83X\83^\81[\82Ì\8eí\91°ID\r
+* @return \8dr\92n\82É\8fo\8c»\82·\82é\82È\82ç\82ÎTRUE\82ð\95Ô\82·\r
+*/\r
+bool mon_hook_town(MONRACE_IDX r_idx)\r
+{\r
+       monster_race *r_ptr = &r_info[r_idx];\r
+\r
+       if (r_ptr->flags8 & (RF8_WILD_TOWN | RF8_WILD_ALL))\r
+               return TRUE;\r
+       else\r
+               return FALSE;\r
+}\r
+\r
+\r
+/*!\r
+* @brief \83\82\83\93\83X\83^\81[\82ª\90X\97Ñ\82É\8fo\8c»\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82·\r
+* @param r_idx \94»\92è\82·\82é\83\82\83\93\83X\83^\81[\82Ì\8eí\91°ID\r
+* @return \90X\97Ñ\82É\8fo\8c»\82·\82é\82È\82ç\82ÎTRUE\82ð\95Ô\82·\r
+*/\r
+bool mon_hook_wood(MONRACE_IDX r_idx)\r
+{\r
+       monster_race *r_ptr = &r_info[r_idx];\r
+\r
+       if (r_ptr->flags8 & (RF8_WILD_WOOD | RF8_WILD_ALL))\r
+               return TRUE;\r
+       else\r
+               return FALSE;\r
+}\r
+\r
+\r
+/*!\r
+* @brief \83\82\83\93\83X\83^\81[\82ª\89Î\8eR\82É\8fo\8c»\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82·\r
+* @param r_idx \94»\92è\82·\82é\83\82\83\93\83X\83^\81[\82Ì\8eí\91°ID\r
+* @return \89Î\8eR\82É\8fo\8c»\82·\82é\82È\82ç\82ÎTRUE\82ð\95Ô\82·\r
+*/\r
+bool mon_hook_volcano(MONRACE_IDX r_idx)\r
+{\r
+       monster_race *r_ptr = &r_info[r_idx];\r
+\r
+       if (r_ptr->flags8 & RF8_WILD_VOLCANO)\r
+               return TRUE;\r
+       else\r
+               return FALSE;\r
+}\r
+\r
+/*!\r
+* @brief \83\82\83\93\83X\83^\81[\82ª\8eR\92n\82É\8fo\8c»\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82·\r
+* @param r_idx \94»\92è\82·\82é\83\82\83\93\83X\83^\81[\82Ì\8eí\91°ID\r
+* @return \8eR\92n\82É\8fo\8c»\82·\82é\82È\82ç\82ÎTRUE\82ð\95Ô\82·\r
+*/\r
+bool mon_hook_mountain(MONRACE_IDX r_idx)\r
+{\r
+       monster_race *r_ptr = &r_info[r_idx];\r
+\r
+       if (r_ptr->flags8 & RF8_WILD_MOUNTAIN)\r
+               return TRUE;\r
+       else\r
+               return FALSE;\r
+}\r
+\r
+\r
+/*!\r
+* @brief \83\82\83\93\83X\83^\81[\82ª\91\90\8c´\82É\8fo\8c»\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82·\r
+* @param r_idx \94»\92è\82·\82é\83\82\83\93\83X\83^\81[\82Ì\8eí\91°ID\r
+* @return \90X\97Ñ\82É\8fo\8c»\82·\82é\82È\82ç\82ÎTRUE\82ð\95Ô\82·\r
+*/\r
+bool mon_hook_grass(MONRACE_IDX r_idx)\r
+{\r
+       monster_race *r_ptr = &r_info[r_idx];\r
+\r
+       if (r_ptr->flags8 & (RF8_WILD_GRASS | RF8_WILD_ALL))\r
+               return TRUE;\r
+       else\r
+               return FALSE;\r
+}\r
+\r
+/*!\r
+* @brief \83\82\83\93\83X\83^\81[\82ª\90[\82¢\90\85\92n\8c`\82É\8fo\8c»\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82·\r
+* @param r_idx \94»\92è\82·\82é\83\82\83\93\83X\83^\81[\82Ì\8eí\91°ID\r
+* @return \90[\82¢\90\85\92n\8c`\82É\8fo\8c»\82·\82é\82È\82ç\82ÎTRUE\82ð\95Ô\82·\r
+*/\r
+bool mon_hook_deep_water(MONRACE_IDX r_idx)\r
+{\r
+       monster_race *r_ptr = &r_info[r_idx];\r
+\r
+       if (!mon_hook_dungeon(r_idx)) return FALSE;\r
+\r
+       if (r_ptr->flags7 & RF7_AQUATIC)\r
+               return TRUE;\r
+       else\r
+               return FALSE;\r
+}\r
+\r
+\r
+/*!\r
+* @brief \83\82\83\93\83X\83^\81[\82ª\90ó\82¢\90\85\92n\8c`\82É\8fo\8c»\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82·\r
+* @param r_idx \94»\92è\82·\82é\83\82\83\93\83X\83^\81[\82Ì\8eí\91°ID\r
+* @return \90ó\82¢\90\85\92n\8c`\82É\8fo\8c»\82·\82é\82È\82ç\82ÎTRUE\82ð\95Ô\82·\r
+*/\r
+bool mon_hook_shallow_water(MONRACE_IDX r_idx)\r
+{\r
+       monster_race *r_ptr = &r_info[r_idx];\r
+\r
+       if (!mon_hook_dungeon(r_idx)) return FALSE;\r
+\r
+       if (r_ptr->flags2 & RF2_AURA_FIRE)\r
+               return FALSE;\r
+       else\r
+               return TRUE;\r
+}\r
+\r
+\r
+/*!\r
+* @brief \83\82\83\93\83X\83^\81[\82ª\97n\8aâ\92n\8c`\82É\8fo\8c»\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82·\r
+* @param r_idx \94»\92è\82·\82é\83\82\83\93\83X\83^\81[\82Ì\8eí\91°ID\r
+* @return \97n\8aâ\92n\8c`\82É\8fo\8c»\82·\82é\82È\82ç\82ÎTRUE\82ð\95Ô\82·\r
+*/\r
+bool mon_hook_lava(MONRACE_IDX r_idx)\r
+{\r
+       monster_race *r_ptr = &r_info[r_idx];\r
+\r
+       if (!mon_hook_dungeon(r_idx)) return FALSE;\r
+\r
+       if (((r_ptr->flagsr & RFR_EFF_IM_FIRE_MASK) ||\r
+               (r_ptr->flags7 & RF7_CAN_FLY)) &&\r
+               !(r_ptr->flags3 & RF3_AURA_COLD))\r
+               return TRUE;\r
+       else\r
+               return FALSE;\r
+}\r
+\r
+\r
+/*!\r
+* @brief \83\82\83\93\83X\83^\81[\82ª\92Ê\8fí\82Ì\8f°\92n\8c`\82É\8fo\8c»\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82·\r
+* @param r_idx \94»\92è\82·\82é\83\82\83\93\83X\83^\81[\82Ì\8eí\91°ID\r
+* @return \92Ê\8fí\82Ì\8f°\92n\8c`\82É\8fo\8c»\82·\82é\82È\82ç\82ÎTRUE\82ð\95Ô\82·\r
+*/\r
+bool mon_hook_floor(MONRACE_IDX r_idx)\r
+{\r
+       monster_race *r_ptr = &r_info[r_idx];\r
+\r
+       if (!(r_ptr->flags7 & RF7_AQUATIC) ||\r
+               (r_ptr->flags7 & RF7_CAN_FLY))\r
+               return TRUE;\r
+       else\r
+               return FALSE;\r
+}\r
diff --git a/src/monster-hook.h b/src/monster-hook.h
new file mode 100644 (file)
index 0000000..d352ee1
--- /dev/null
@@ -0,0 +1,19 @@
+\r
+extern bool mon_hook_quest(MONRACE_IDX r_idx);\r
+extern bool mon_hook_dungeon(MONRACE_IDX r_idx);\r
+extern bool mon_hook_ocean(MONRACE_IDX r_idx);\r
+extern bool mon_hook_shore(MONRACE_IDX r_idx);\r
+extern bool mon_hook_waste(MONRACE_IDX r_idx);\r
+extern bool mon_hook_town(MONRACE_IDX r_idx);\r
+extern bool mon_hook_wood(MONRACE_IDX r_idx);\r
+extern bool mon_hook_volcano(MONRACE_IDX r_idx);\r
+extern bool mon_hook_wood(MONRACE_IDX r_idx);\r
+extern bool mon_hook_volcano(MONRACE_IDX r_idx);\r
+extern bool mon_hook_mountain(MONRACE_IDX r_idx);\r
+extern bool mon_hook_grass(MONRACE_IDX r_idx);\r
+extern bool mon_hook_deep_water(MONRACE_IDX r_idx);\r
+extern bool mon_hook_shallow_water(MONRACE_IDX r_idx);\r
+extern bool mon_hook_lava(MONRACE_IDX r_idx);\r
+extern bool mon_hook_floor(MONRACE_IDX r_idx);\r
+\r
+\r
index 449d082..eb8fcfa 100644 (file)
@@ -12,6 +12,7 @@
 
 #include "angband.h"
 #include "cmd-pet.h"
+#include "monster-hook.h"
 
 
 /*
@@ -2129,225 +2130,6 @@ void output_monster_spoiler(MONRACE_IDX r_idx, void (*roff_func)(byte attr, cptr
 }
 
 
-/*!
- * @brief モンスターがダンジョンに出現するかどうかを返す
- * @param r_idx 判定するモンスターの種族ID
- * @return ダンジョンに出現するならばTRUEを返す
- */
-bool mon_hook_dungeon(MONRACE_IDX r_idx)
-{
-       monster_race *r_ptr = &r_info[r_idx];
-
-       if (!(r_ptr->flags8 & RF8_WILD_ONLY))
-               return TRUE;
-       else
-       {
-               dungeon_info_type *d_ptr = &d_info[dungeon_type];
-               if ((d_ptr->mflags8 & RF8_WILD_MOUNTAIN) &&
-                   (r_ptr->flags8 & RF8_WILD_MOUNTAIN)) return TRUE;
-               return FALSE;
-       }
-}
-
-
-/*!
- * @brief モンスターが海洋に出現するかどうかを返す
- * @param r_idx 判定するモンスターの種族ID
- * @return 海洋に出現するならばTRUEを返す
- */
-static bool mon_hook_ocean(MONRACE_IDX r_idx)
-{
-       monster_race *r_ptr = &r_info[r_idx];
-
-       if (r_ptr->flags8 & RF8_WILD_OCEAN)
-               return TRUE;
-       else
-               return FALSE;
-}
-
-
-/*!
- * @brief モンスターが海岸に出現するかどうかを返す
- * @param r_idx 判定するモンスターの種族ID
- * @return 海岸に出現するならばTRUEを返す
- */
-static bool mon_hook_shore(MONRACE_IDX r_idx)
-{
-       monster_race *r_ptr = &r_info[r_idx];
-
-       if (r_ptr->flags8 & RF8_WILD_SHORE)
-               return TRUE;
-       else
-               return FALSE;
-}
-
-
-/*!
- * @brief モンスターが荒地に出現するかどうかを返す
- * @param r_idx 判定するモンスターの種族ID
- * @return 荒地に出現するならばTRUEを返す
- */
-static bool mon_hook_waste(MONRACE_IDX r_idx)
-{
-       monster_race *r_ptr = &r_info[r_idx];
-
-       if (r_ptr->flags8 & (RF8_WILD_WASTE | RF8_WILD_ALL))
-               return TRUE;
-       else
-               return FALSE;
-}
-
-
-/*!
- * @brief モンスターが町に出現するかどうかを返す
- * @param r_idx 判定するモンスターの種族ID
- * @return 荒地に出現するならばTRUEを返す
- */
-static bool mon_hook_town(MONRACE_IDX r_idx)
-{
-       monster_race *r_ptr = &r_info[r_idx];
-
-       if (r_ptr->flags8 & (RF8_WILD_TOWN | RF8_WILD_ALL))
-               return TRUE;
-       else
-               return FALSE;
-}
-
-
-/*!
- * @brief モンスターが森林に出現するかどうかを返す
- * @param r_idx 判定するモンスターの種族ID
- * @return 森林に出現するならばTRUEを返す
- */
-static bool mon_hook_wood(MONRACE_IDX r_idx)
-{
-       monster_race *r_ptr = &r_info[r_idx];
-
-       if (r_ptr->flags8 & (RF8_WILD_WOOD | RF8_WILD_ALL))
-               return TRUE;
-       else
-               return FALSE;
-}
-
-
-/*!
- * @brief モンスターが火山に出現するかどうかを返す
- * @param r_idx 判定するモンスターの種族ID
- * @return 火山に出現するならばTRUEを返す
- */
-static bool mon_hook_volcano(MONRACE_IDX r_idx)
-{
-       monster_race *r_ptr = &r_info[r_idx];
-
-       if (r_ptr->flags8 & RF8_WILD_VOLCANO)
-               return TRUE;
-       else
-               return FALSE;
-}
-
-/*!
- * @brief モンスターが山地に出現するかどうかを返す
- * @param r_idx 判定するモンスターの種族ID
- * @return 山地に出現するならばTRUEを返す
- */
-static bool mon_hook_mountain(MONRACE_IDX r_idx)
-{
-       monster_race *r_ptr = &r_info[r_idx];
-
-       if (r_ptr->flags8 & RF8_WILD_MOUNTAIN)
-               return TRUE;
-       else
-               return FALSE;
-}
-
-
-/*!
- * @brief モンスターが草原に出現するかどうかを返す
- * @param r_idx 判定するモンスターの種族ID
- * @return 森林に出現するならばTRUEを返す
- */
-static bool mon_hook_grass(MONRACE_IDX r_idx)
-{
-       monster_race *r_ptr = &r_info[r_idx];
-
-       if (r_ptr->flags8 & (RF8_WILD_GRASS | RF8_WILD_ALL))
-               return TRUE;
-       else
-               return FALSE;
-}
-
-/*!
- * @brief モンスターが深い水地形に出現するかどうかを返す
- * @param r_idx 判定するモンスターの種族ID
- * @return 深い水地形に出現するならばTRUEを返す
- */
-static bool mon_hook_deep_water(MONRACE_IDX r_idx)
-{
-       monster_race *r_ptr = &r_info[r_idx];
-
-       if (!mon_hook_dungeon(r_idx)) return FALSE;
-
-       if (r_ptr->flags7 & RF7_AQUATIC)
-               return TRUE;
-       else
-               return FALSE;
-}
-
-
-/*!
- * @brief モンスターが浅い水地形に出現するかどうかを返す
- * @param r_idx 判定するモンスターの種族ID
- * @return 浅い水地形に出現するならばTRUEを返す
- */
-static bool mon_hook_shallow_water(MONRACE_IDX r_idx)
-{
-       monster_race *r_ptr = &r_info[r_idx];
-
-       if (!mon_hook_dungeon(r_idx)) return FALSE;
-
-       if (r_ptr->flags2 & RF2_AURA_FIRE)
-               return FALSE;
-       else
-               return TRUE;
-}
-
-
-/*!
- * @brief モンスターが溶岩地形に出現するかどうかを返す
- * @param r_idx 判定するモンスターの種族ID
- * @return 溶岩地形に出現するならばTRUEを返す
- */
-static bool mon_hook_lava(MONRACE_IDX r_idx)
-{
-       monster_race *r_ptr = &r_info[r_idx];
-
-       if (!mon_hook_dungeon(r_idx)) return FALSE;
-
-       if (((r_ptr->flagsr & RFR_EFF_IM_FIRE_MASK) ||
-            (r_ptr->flags7 & RF7_CAN_FLY)) &&
-           !(r_ptr->flags3 & RF3_AURA_COLD))
-               return TRUE;
-       else
-               return FALSE;
-}
-
-
-/*!
- * @brief モンスターが通常の床地形に出現するかどうかを返す
- * @param r_idx 判定するモンスターの種族ID
- * @return 通常の床地形に出現するならばTRUEを返す
- */
-static bool mon_hook_floor(MONRACE_IDX r_idx)
-{
-       monster_race *r_ptr = &r_info[r_idx];
-
-       if (!(r_ptr->flags7 & RF7_AQUATIC) ||
-           (r_ptr->flags7 & RF7_CAN_FLY))
-               return TRUE;
-       else
-               return FALSE;
-}
-
 
 /*!
  * @brief プレイヤーの現在の広域マップ座標から得た地勢を元にモンスターの生成条件関数を返す
index 813b656..3ee224a 100644 (file)
@@ -12,6 +12,7 @@
 
 #include "angband.h"
 #include "cmd-pet.h"
+#include "monster-hook.h"
 
 #define HORDE_NOGOOD 0x01 /*!< (未実装フラグ)HORDE生成でGOODなモンスターの生成を禁止する? */
 #define HORDE_NOEVIL 0x02 /*!< (未実装フラグ)HORDE生成でEVILなモンスターの生成を禁止する? */
index 179cc71..8290444 100644 (file)
@@ -3,6 +3,7 @@
 #include "generate.h"\r
 #include "rooms.h"\r
 #include "rooms-pitnest.h"\r
+#include "monster-hook.h"\r
 \r
 \r
 \r
index f0650bf..ec038e0 100644 (file)
@@ -2,6 +2,7 @@
 #include "grid.h"\r
 #include "generate.h"\r
 #include "rooms.h"\r
+#include "monster-hook.h"\r
 \r
 /*\r
 * Helper function for "glass room"\r
index 4651323..22ae7df 100644 (file)
@@ -11,6 +11,7 @@
 /* Purpose: Angband utilities -BEN- */
 
 #include "angband.h"
+#include "monster-hook.h"
 
 
 static int num_more = 0;