2 #include "monster-hook.h"
\r
6 * @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
7 * @param r_idx
\83\82\83\93\83X
\83^
\81[
\82h
\82c
\r
8 * @return
\93¢
\94°
\91Î
\8fÛ
\82É
\82Å
\82«
\82é
\82È
\82çTRUE
\82ð
\95Ô
\82·
\81B
\r
10 bool mon_hook_quest(MONRACE_IDX r_idx)
\r
12 monster_race *r_ptr = &r_info[r_idx];
\r
14 /* Random quests are in the dungeon */
\r
15 if (r_ptr->flags8 & RF8_WILD_ONLY) return FALSE;
\r
17 /* No random quests for aquatic monsters */
\r
18 if (r_ptr->flags7 & RF7_AQUATIC) return FALSE;
\r
20 /* No random quests for multiplying monsters */
\r
21 if (r_ptr->flags2 & RF2_MULTIPLY) return FALSE;
\r
23 /* No quests to kill friendly monsters */
\r
24 if (r_ptr->flags7 & RF7_FRIENDLY) return FALSE;
\r
31 * @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
32 * @param r_idx
\94»
\92è
\82·
\82é
\83\82\83\93\83X
\83^
\81[
\82Ì
\8eí
\91°ID
\r
33 * @return
\83_
\83\93\83W
\83\87\83\93\82É
\8fo
\8c»
\82·
\82é
\82È
\82ç
\82ÎTRUE
\82ð
\95Ô
\82·
\r
35 bool mon_hook_dungeon(MONRACE_IDX r_idx)
\r
37 monster_race *r_ptr = &r_info[r_idx];
\r
39 if (!(r_ptr->flags8 & RF8_WILD_ONLY))
\r
43 dungeon_info_type *d_ptr = &d_info[dungeon_type];
\r
44 if ((d_ptr->mflags8 & RF8_WILD_MOUNTAIN) &&
\r
45 (r_ptr->flags8 & RF8_WILD_MOUNTAIN)) return TRUE;
\r
52 * @brief
\83\82\83\93\83X
\83^
\81[
\82ª
\8aC
\97m
\82É
\8fo
\8c»
\82·
\82é
\82©
\82Ç
\82¤
\82©
\82ð
\95Ô
\82·
\r
53 * @param r_idx
\94»
\92è
\82·
\82é
\83\82\83\93\83X
\83^
\81[
\82Ì
\8eí
\91°ID
\r
54 * @return
\8aC
\97m
\82É
\8fo
\8c»
\82·
\82é
\82È
\82ç
\82ÎTRUE
\82ð
\95Ô
\82·
\r
56 bool mon_hook_ocean(MONRACE_IDX r_idx)
\r
58 monster_race *r_ptr = &r_info[r_idx];
\r
60 if (r_ptr->flags8 & RF8_WILD_OCEAN)
\r
68 * @brief
\83\82\83\93\83X
\83^
\81[
\82ª
\8aC
\8aÝ
\82É
\8fo
\8c»
\82·
\82é
\82©
\82Ç
\82¤
\82©
\82ð
\95Ô
\82·
\r
69 * @param r_idx
\94»
\92è
\82·
\82é
\83\82\83\93\83X
\83^
\81[
\82Ì
\8eí
\91°ID
\r
70 * @return
\8aC
\8aÝ
\82É
\8fo
\8c»
\82·
\82é
\82È
\82ç
\82ÎTRUE
\82ð
\95Ô
\82·
\r
72 bool mon_hook_shore(MONRACE_IDX r_idx)
\r
74 monster_race *r_ptr = &r_info[r_idx];
\r
76 if (r_ptr->flags8 & RF8_WILD_SHORE)
\r
84 * @brief
\83\82\83\93\83X
\83^
\81[
\82ª
\8dr
\92n
\82É
\8fo
\8c»
\82·
\82é
\82©
\82Ç
\82¤
\82©
\82ð
\95Ô
\82·
\r
85 * @param r_idx
\94»
\92è
\82·
\82é
\83\82\83\93\83X
\83^
\81[
\82Ì
\8eí
\91°ID
\r
86 * @return
\8dr
\92n
\82É
\8fo
\8c»
\82·
\82é
\82È
\82ç
\82ÎTRUE
\82ð
\95Ô
\82·
\r
88 bool mon_hook_waste(MONRACE_IDX r_idx)
\r
90 monster_race *r_ptr = &r_info[r_idx];
\r
92 if (r_ptr->flags8 & (RF8_WILD_WASTE | RF8_WILD_ALL))
\r
100 * @brief
\83\82\83\93\83X
\83^
\81[
\82ª
\92¬
\82É
\8fo
\8c»
\82·
\82é
\82©
\82Ç
\82¤
\82©
\82ð
\95Ô
\82·
\r
101 * @param r_idx
\94»
\92è
\82·
\82é
\83\82\83\93\83X
\83^
\81[
\82Ì
\8eí
\91°ID
\r
102 * @return
\8dr
\92n
\82É
\8fo
\8c»
\82·
\82é
\82È
\82ç
\82ÎTRUE
\82ð
\95Ô
\82·
\r
104 bool mon_hook_town(MONRACE_IDX r_idx)
\r
106 monster_race *r_ptr = &r_info[r_idx];
\r
108 if (r_ptr->flags8 & (RF8_WILD_TOWN | RF8_WILD_ALL))
\r
116 * @brief
\83\82\83\93\83X
\83^
\81[
\82ª
\90X
\97Ñ
\82É
\8fo
\8c»
\82·
\82é
\82©
\82Ç
\82¤
\82©
\82ð
\95Ô
\82·
\r
117 * @param r_idx
\94»
\92è
\82·
\82é
\83\82\83\93\83X
\83^
\81[
\82Ì
\8eí
\91°ID
\r
118 * @return
\90X
\97Ñ
\82É
\8fo
\8c»
\82·
\82é
\82È
\82ç
\82ÎTRUE
\82ð
\95Ô
\82·
\r
120 bool mon_hook_wood(MONRACE_IDX r_idx)
\r
122 monster_race *r_ptr = &r_info[r_idx];
\r
124 if (r_ptr->flags8 & (RF8_WILD_WOOD | RF8_WILD_ALL))
\r
132 * @brief
\83\82\83\93\83X
\83^
\81[
\82ª
\89Î
\8eR
\82É
\8fo
\8c»
\82·
\82é
\82©
\82Ç
\82¤
\82©
\82ð
\95Ô
\82·
\r
133 * @param r_idx
\94»
\92è
\82·
\82é
\83\82\83\93\83X
\83^
\81[
\82Ì
\8eí
\91°ID
\r
134 * @return
\89Î
\8eR
\82É
\8fo
\8c»
\82·
\82é
\82È
\82ç
\82ÎTRUE
\82ð
\95Ô
\82·
\r
136 bool mon_hook_volcano(MONRACE_IDX r_idx)
\r
138 monster_race *r_ptr = &r_info[r_idx];
\r
140 if (r_ptr->flags8 & RF8_WILD_VOLCANO)
\r
147 * @brief
\83\82\83\93\83X
\83^
\81[
\82ª
\8eR
\92n
\82É
\8fo
\8c»
\82·
\82é
\82©
\82Ç
\82¤
\82©
\82ð
\95Ô
\82·
\r
148 * @param r_idx
\94»
\92è
\82·
\82é
\83\82\83\93\83X
\83^
\81[
\82Ì
\8eí
\91°ID
\r
149 * @return
\8eR
\92n
\82É
\8fo
\8c»
\82·
\82é
\82È
\82ç
\82ÎTRUE
\82ð
\95Ô
\82·
\r
151 bool mon_hook_mountain(MONRACE_IDX r_idx)
\r
153 monster_race *r_ptr = &r_info[r_idx];
\r
155 if (r_ptr->flags8 & RF8_WILD_MOUNTAIN)
\r
163 * @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
164 * @param r_idx
\94»
\92è
\82·
\82é
\83\82\83\93\83X
\83^
\81[
\82Ì
\8eí
\91°ID
\r
165 * @return
\90X
\97Ñ
\82É
\8fo
\8c»
\82·
\82é
\82È
\82ç
\82ÎTRUE
\82ð
\95Ô
\82·
\r
167 bool mon_hook_grass(MONRACE_IDX r_idx)
\r
169 monster_race *r_ptr = &r_info[r_idx];
\r
171 if (r_ptr->flags8 & (RF8_WILD_GRASS | RF8_WILD_ALL))
\r
178 * @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
179 * @param r_idx
\94»
\92è
\82·
\82é
\83\82\83\93\83X
\83^
\81[
\82Ì
\8eí
\91°ID
\r
180 * @return
\90[
\82¢
\90\85\92n
\8c`
\82É
\8fo
\8c»
\82·
\82é
\82È
\82ç
\82ÎTRUE
\82ð
\95Ô
\82·
\r
182 bool mon_hook_deep_water(MONRACE_IDX r_idx)
\r
184 monster_race *r_ptr = &r_info[r_idx];
\r
186 if (!mon_hook_dungeon(r_idx)) return FALSE;
\r
188 if (r_ptr->flags7 & RF7_AQUATIC)
\r
196 * @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
197 * @param r_idx
\94»
\92è
\82·
\82é
\83\82\83\93\83X
\83^
\81[
\82Ì
\8eí
\91°ID
\r
198 * @return
\90ó
\82¢
\90\85\92n
\8c`
\82É
\8fo
\8c»
\82·
\82é
\82È
\82ç
\82ÎTRUE
\82ð
\95Ô
\82·
\r
200 bool mon_hook_shallow_water(MONRACE_IDX r_idx)
\r
202 monster_race *r_ptr = &r_info[r_idx];
\r
204 if (!mon_hook_dungeon(r_idx)) return FALSE;
\r
206 if (r_ptr->flags2 & RF2_AURA_FIRE)
\r
214 * @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
215 * @param r_idx
\94»
\92è
\82·
\82é
\83\82\83\93\83X
\83^
\81[
\82Ì
\8eí
\91°ID
\r
216 * @return
\97n
\8aâ
\92n
\8c`
\82É
\8fo
\8c»
\82·
\82é
\82È
\82ç
\82ÎTRUE
\82ð
\95Ô
\82·
\r
218 bool mon_hook_lava(MONRACE_IDX r_idx)
\r
220 monster_race *r_ptr = &r_info[r_idx];
\r
222 if (!mon_hook_dungeon(r_idx)) return FALSE;
\r
224 if (((r_ptr->flagsr & RFR_EFF_IM_FIRE_MASK) ||
\r
225 (r_ptr->flags7 & RF7_CAN_FLY)) &&
\r
226 !(r_ptr->flags3 & RF3_AURA_COLD))
\r
234 * @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
235 * @param r_idx
\94»
\92è
\82·
\82é
\83\82\83\93\83X
\83^
\81[
\82Ì
\8eí
\91°ID
\r
236 * @return
\92Ê
\8fí
\82Ì
\8f°
\92n
\8c`
\82É
\8fo
\8c»
\82·
\82é
\82È
\82ç
\82ÎTRUE
\82ð
\95Ô
\82·
\r
238 bool mon_hook_floor(MONRACE_IDX r_idx)
\r
240 monster_race *r_ptr = &r_info[r_idx];
\r
242 if (!(r_ptr->flags7 & RF7_AQUATIC) ||
\r
243 (r_ptr->flags7 & RF7_CAN_FLY))
\r