OSDN Git Service

c7beefb2dafbeb1d7946062089662c748a02578a
[hengbandforosx/hengbandosx.git] / src / mspells4.c
1 #include "angband.h"
2
3 /*!
4 * @brief ¥â¥ó¥¹¥¿¡¼¤Î¼öʸ¤ÎÄ̤·ÈÖ¹æ¤ò¼èÆÀ¤¹¤ë /
5 * @param SPELL_NUM_BASE RF4¤Ê¤éRF4_SPELL_START¤Î¤è¤¦¤Ë32¶èÀÚ¤ê¤Î¥Ù¡¼¥¹¤È¤Ê¤ë¿ôÃÍ
6 * @param SPELL_FLAG RF4_SHRIEK¤Ê¤É¤Î¥¹¥Ú¥ë¥Õ¥é¥°
7 * @return ¼öʸ¤ÎÄ̤·Èֹ档
8 */
9 int monspell_num(int SPELL_NUM_BASE, u32b SPELL_FLAG)
10 {
11     int k;
12     for (k = 0; k < 32; k++)
13     {
14         if (SPELL_FLAG & (1L << k)) return k + SPELL_NUM_BASE;
15     }
16     return 0;
17 }
18
19
20 /*!
21 * @brief ¥â¥ó¥¹¥¿¡¼ID¤ò¼è¤ê¡¢¥â¥ó¥¹¥¿¡¼Ì¾¤òm_name¤ËÂåÆþ¤¹¤ë /
22 * @param m_idx ¥â¥ó¥¹¥¿¡¼ID
23 * @param m_name ¥â¥ó¥¹¥¿¡¼Ì¾¤òÆþÎϤ¹¤ëÇÛÎó
24 */
25 void monster_name(int m_idx, char* m_name)
26 {
27     monster_type    *m_ptr = &m_list[m_idx];
28     monster_desc(m_name, m_ptr, 0x00);
29 }
30
31 /*!
32 * @brief ¥â¥ó¥¹¥¿¡¼2ÂΤ¬¥×¥ì¥¤¥ä¡¼¤Î¶á¤¯¤Ëµï¤ë¤«¤ÎȽÄê /
33 * @param m_idx ¥â¥ó¥¹¥¿¡¼ID°ìÂÎÌÜ
34 * @param t_idx ¥â¥ó¥¹¥¿¡¼IDÆóÂÎÌÜ
35 * @return ¥â¥ó¥¹¥¿¡¼2ÂΤΤɤÁ¤é¤«¤¬¥×¥ì¥¤¥ä¡¼¤Î¶á¤¯¤Ëµï¤ì¤ÐTRUE¡¢¤É¤Á¤é¤â±ó¤±¤ì¤ÐFALSE¤òÊÖ¤¹¡£
36 */
37 bool monster_near_player(int m_idx, int t_idx)
38 {
39     monster_type    *m_ptr = &m_list[m_idx];
40     monster_type    *t_ptr = &m_list[t_idx];
41     return (m_ptr->cdis <= MAX_SIGHT) || (t_ptr->cdis <= MAX_SIGHT);
42 }
43
44 /*!
45 * @brief ¥×¥ì¥¤¥ä¡¼¤¬¥â¥ó¥¹¥¿¡¼¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤ë¤«¤ÎȽÄê /
46 * @param m_idx ¥â¥ó¥¹¥¿¡¼ID
47 * @return ¥×¥ì¥¤¥ä¡¼¤¬¥â¥ó¥¹¥¿¡¼¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤ë¤Ê¤éTRUE¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤ÐFALSE¤òÊÖ¤¹¡£
48 */
49 bool see_monster(int m_idx)
50 {
51     monster_type    *m_ptr = &m_list[m_idx];
52     return is_seen(m_ptr);
53 }
54
55 /*!
56 * @brief ¥â¥ó¥¹¥¿¡¼¤Î¾§¤¨¤¿¼öʸ¤òÀÄËâË¡¤Ç³Ø½¬¤Ç¤­¤ë¤«È½Äꤹ¤ë /
57 * @param m_idx ¥â¥ó¥¹¥¿¡¼ID
58 * @return ¥×¥ì¥¤¥ä¡¼¤¬ÀÄËâË¡¤Ç³Ø½¬¤Ç¤­¤ë¤Ê¤éTRUE¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤ÐFALSE¤òÊÖ¤¹¡£
59 */
60 bool spell_learnable(int m_idx)
61 {
62     monster_type    *m_ptr = &m_list[m_idx];
63     /* Extract the "see-able-ness" */
64     bool seen = (!p_ptr->blind && m_ptr->ml);
65
66     bool maneable = player_has_los_bold(m_ptr->fy, m_ptr->fx);
67     return (seen && maneable && !world_monster);
68 }
69
70 /*!
71 * @brief ¥â¥ó¥¹¥¿¡¼ID¤«¤é¥â¥ó¥¹¥¿¡¼¤Î¥ì¥Ù¥ë¤ò¼èÆÀ¤¹¤ë /
72 * @param m_idx ¥â¥ó¥¹¥¿¡¼ID
73 * @return ¥â¥ó¥¹¥¿¡¼¤Î¥ì¥Ù¥ë
74 */
75 int monster_level_idx(int m_idx)
76 {
77     monster_type    *m_ptr = &m_list[m_idx];
78     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
79     int rlev = ((r_ptr->level >= 1) ? r_ptr->level : 1);
80     return rlev;
81 }
82
83 /*!
84 * @brief ¥â¥ó¥¹¥¿¡¼ID¤«¤éPOWERFUL¥Õ¥é¥°¤Î̵ͭ¤ò¼èÆÀ¤¹¤ë /
85 * @param m_idx ¥â¥ó¥¹¥¿¡¼ID
86 * @return POWERFUL¥Õ¥é¥°¤¬¤¢¤ì¤ÐTRUE¡¢¤Ê¤±¤ì¤ÐFALSE¤òÊÖ¤¹¡£
87 */
88 bool monster_is_powerful(int m_idx)
89 {
90     monster_type    *m_ptr = &m_list[m_idx];
91     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
92     return (r_ptr->flags2 & RF2_POWERFUL);
93 }
94
95 /*!
96 * @brief ¥â¥ó¥¹¥¿¡¼¤¬¥æ¥Ë¡¼¥¯¾¤´­²Äǽ¤Ç¤¢¤ë¤«¤òȽÄꤹ¤ë /
97 * @param m_idx ¥â¥ó¥¹¥¿¡¼ID
98 * @return ¾¤´­²Äǽ¤Ç¤¢¤ì¤ÐPM_ALLOW_UNIQUE¤òÊÖ¤¹¡£
99 */
100 u32b monster_u_mode(int m_idx)
101 {
102         u32b u_mode = 0L;
103     monster_type    *m_ptr = &m_list[m_idx];
104         bool pet = is_pet(m_ptr);
105         if (!pet) u_mode |= PM_ALLOW_UNIQUE;
106         return u_mode;
107 }
108
109 /*!
110 * @brief ¥â¥ó¥¹¥¿¡¼¤òµ¯¤³¤¹ /
111 * @param m_idx ¥â¥ó¥¹¥¿¡¼ID
112 */
113 void monster_wakeup(int t_idx)
114 {
115     (void)set_monster_csleep(t_idx, 0);
116 }
117
118 /*!
119  * @brief ¥â¥ó¥¹¥¿¡¼¤¬¼öʸ¹Ô»È¤¹¤ëºÝ¤Î¥á¥Ã¥»¡¼¥¸¤ò½èÍý¤¹¤ëÈÆÍÑ´Ø¿ô /
120  * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
121  * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
122  * @param msg1 msg_flag¤¬TRUE¤Ç¡¢¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹ç¤Î¥á¥Ã¥»¡¼¥¸
123  * @param msg2 msg_flag¤¬TRUE¤Ç¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹ç¤Î¥á¥Ã¥»¡¼¥¸
124  * @param msg3 msg_flag¤¬FALSE¤Ç¡¢¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹ç¤Î¥á¥Ã¥»¡¼¥¸
125  * @param msg4 msg_flag¤¬FALSE¤Ç¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹ç¤Î¥á¥Ã¥»¡¼¥¸
126  * @param msg_flag ¥á¥Ã¥»¡¼¥¸¤òʬ´ô¤¹¤ë¤¿¤á¤Î¥Õ¥é¥°
127  * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
128  */
129 void monspell_message_base(int m_idx, int t_idx, cptr msg1, cptr msg2, cptr msg3, cptr msg4, bool msg_flag, int TARGET_TYPE)
130 {
131     bool known = monster_near_player(m_idx, t_idx);
132     bool see_either = see_monster(m_idx) || see_monster(t_idx);
133     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
134     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
135         char m_name[80], t_name[80];
136     monster_name(m_idx, m_name);
137         monster_name(t_idx, t_name);
138
139     if (mon_to_player || (mon_to_mon && known && see_either))
140         disturb(1, 1);
141
142     if (msg_flag)
143     {
144         if (mon_to_player)
145             msg_format(msg1, m_name);
146         else if (mon_to_mon && known && see_either)
147             msg_format(msg2, m_name);
148     }
149     else
150     {
151         if (mon_to_player)
152         {
153             msg_format(msg3, m_name);
154         }
155         else if (mon_to_mon && known && see_either)
156         {
157             msg_format(msg4, m_name, t_name);
158         }
159     }
160
161     if (mon_to_mon && known && !see_either)
162         mon_fight = TRUE;
163 }
164
165 /*!
166 * @brief ¥â¥ó¥¹¥¿¡¼¤¬¼öʸ¹Ô»È¤¹¤ëºÝ¤Î¥á¥Ã¥»¡¼¥¸¤ò½èÍý¤¹¤ëÈÆÍÑ´Ø¿ô¡£ÌÕÌÜ»þ¤ÈÄ̾ï»þ¤Î¥á¥Ã¥»¡¼¥¸¤òÀÚ¤êÂؤ¨¤ë¡£ /
167 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
168 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
169 * @param msg1 ¥×¥ì¥¤¥ä¡¼¤¬ÌÕÌܾõÂ֤Υá¥Ã¥»¡¼¥¸
170 * @param msg2 ¥×¥ì¥¤¥ä¡¼¤¬ÌÕÌܤǤʤ¯¡¢¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹ç¤Î¥á¥Ã¥»¡¼¥¸
171 * @param msg3 ¥×¥ì¥¤¥ä¡¼¤¬ÌÕÌܤǤʤ¯¡¢¥â¥ó¥¹¥¿¡¼ÂоݤȤ¹¤ë¾ì¹ç¤Î¥á¥Ã¥»¡¼¥¸
172 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
173 */
174 void monspell_message(int m_idx, int t_idx, cptr msg1, cptr msg2, cptr msg3, int TARGET_TYPE)
175 {
176     monspell_message_base(m_idx, t_idx, msg1, msg1, msg2, msg3, p_ptr->blind, TARGET_TYPE);
177 }
178
179 /*!
180 * @brief ¥â¥ó¥¹¥¿¡¼¤¬¼öʸ¹Ô»È¤¹¤ëºÝ¤Î¥á¥Ã¥»¡¼¥¸¤ò½èÍý¤¹¤ëÈÆÍÑ´Ø¿ô¡£ÂÐ¥â¥ó¥¹¥¿¡¼¤ÈÂХץ쥤¥ä¡¼¤Î¥á¥Ã¥»¡¼¥¸¤òÀÚ¤êÂؤ¨¤ë¡£ /
181 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
182 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
183 * @param msg1 ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹ç¤Î¥á¥Ã¥»¡¼¥¸
184 * @param msg2 ¥â¥ó¥¹¥¿¡¼ÂоݤȤ¹¤ë¾ì¹ç¤Î¥á¥Ã¥»¡¼¥¸
185 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
186 */
187 void simple_monspell_message(int m_idx, int t_idx, cptr msg1, cptr msg2, int TARGET_TYPE)
188 {
189     monspell_message_base(m_idx, t_idx, msg1, msg2, msg1, msg2, p_ptr->blind, TARGET_TYPE);
190 }
191
192 /*!
193  * @brief RF4_SHRIEK¤Î½èÍý¡£¶«¤Ó¡£ /
194  * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
195  * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
196  * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
197  */
198 void spell_RF4_SHRIEK(int m_idx, int t_idx, int TARGET_TYPE)
199 {
200     simple_monspell_message(m_idx, t_idx,
201         _("%^s¤¬¤«¤ó¹â¤¤¶âÀÚ¤êÀ¼¤ò¤¢¤²¤¿¡£", "%^s makes a high pitched shriek."),
202         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¶«¤ó¤À¡£", "%^s shrieks at %s."),
203         TARGET_TYPE);
204
205     if (TARGET_TYPE == MONSTER_TO_PLAYER)
206     {
207         aggravate_monsters(m_idx);
208     }
209     else if (TARGET_TYPE == MONSTER_TO_MONSTER)
210     {
211         monster_wakeup(t_idx);
212     }
213 }
214
215 /*!
216 * @brief RF4_DISPEL¤Î½èÍý¡£ËâÎϾõ /
217 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
218 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
219 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
220 */
221 void spell_RF4_DISPEL(int m_idx, int t_idx, int TARGET_TYPE)
222 {
223     bool known = monster_near_player(m_idx, t_idx);
224     bool see_m = see_monster(m_idx);
225         char m_name[80], t_name[80];
226     monster_name(m_idx, m_name);
227         monster_name(t_idx, t_name);
228
229     monspell_message(m_idx, t_idx,
230         _("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."),
231         _("%^s¤¬ËâÎϾõî¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a dispel magic."),
232         _("%^s¤¬%s¤ËÂФ·¤ÆËâÎϾõî¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a dispel magic at %s."),
233         TARGET_TYPE);
234
235     if (TARGET_TYPE == MONSTER_TO_PLAYER)
236     {
237         dispel_player();
238         if (p_ptr->riding) dispel_monster_status(p_ptr->riding);
239
240         if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON))
241             msg_print(_("¤ä¤ê¤ä¤¬¤Ã¤¿¤Ê¡ª", ""));
242
243         learn_spell(MS_DISPEL);
244     }
245     else if (TARGET_TYPE == MONSTER_TO_MONSTER)
246     {
247         if (t_idx == p_ptr->riding) dispel_player();
248         dispel_monster_status(t_idx);
249     }
250 }
251
252 /*!
253 * @brief RF4_ROCKET¤Î½èÍý¡£¥í¥±¥Ã¥È¡£ /
254 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
255 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
256 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
257 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
258 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
259 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
260 */
261 int spell_RF4_ROCKET(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
262 {
263     int dam;
264
265     monspell_message(m_idx, t_idx,
266         _("%^s¤¬²¿¤«¤ò¼Í¤Ã¤¿¡£", "%^s shoots something."),
267         _("%^s¤¬¥í¥±¥Ã¥È¤òȯ¼Í¤·¤¿¡£", "%^s fires a rocket."),
268         _("%^s¤¬%s¤Ë¥í¥±¥Ã¥È¤òȯ¼Í¤·¤¿¡£", "%^s fires a rocket at %s."),
269         TARGET_TYPE);
270
271     dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_ROCKET), m_idx, DAM_ROLL);
272     breath(y, x, m_idx, GF_ROCKET, dam, 2, FALSE, MS_ROCKET, TARGET_TYPE);
273     if (TARGET_TYPE == MONSTER_TO_PLAYER)
274         update_smart_learn(m_idx, DRS_SHARD);
275     return dam;
276 }
277
278 /*!
279 * @brief RF4_SHOOT¤Î½èÍý¡£¼Í·â¡£ /
280 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
281 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
282 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
283 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
284 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
285 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
286 */
287 int spell_RF4_SHOOT(int y, int x, int m_idx, int t_idx,int TARGET_TYPE)
288 {
289     int dam;
290
291     monspell_message(m_idx, t_idx,
292         _("%^s¤¬´ñ̯¤Ê²»¤òȯ¤·¤¿¡£", "%^s makes a strange noise."),
293         _("%^s¤¬Ìð¤òÊü¤Ã¤¿¡£", "%^s fires an arrow."),
294         _("%^s¤¬%s¤ËÌð¤òÊü¤Ã¤¿¡£", "%^s fires an arrow at %s."),
295         TARGET_TYPE);
296
297     dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_SHOOT), m_idx, DAM_ROLL);
298     bolt(m_idx, y, x, GF_ARROW, dam, MS_SHOOT, TARGET_TYPE);
299     sound(SOUND_SHOOT);
300
301     return dam;
302 }
303
304 /*!
305 * @brief RF4_BR_*¤Î½èÍý¡£³Æ¼ï¥Ö¥ì¥¹¡£ /
306 * @param GF_TYPE ¥Ö¥ì¥¹¤Î°À­
307 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
308 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
309 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
310 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
311 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
312 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
313 */
314 int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
315 {
316     int dam, ms_type, drs_type;
317     cptr type_s;
318     bool smart_learn = TRUE;
319     monster_type    *m_ptr = &m_list[m_idx];
320     bool known = monster_near_player(m_idx, t_idx);
321     bool see_either = see_monster(m_idx) || see_monster(t_idx);
322     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
323     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
324         char m_name[80], t_name[80];
325     monster_name(m_idx, m_name);
326         monster_name(t_idx, t_name);
327
328     switch (GF_TYPE)
329     {
330     case GF_ACID:
331         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_ACID), m_idx, DAM_ROLL);
332         type_s = _("»À", "acid");
333         ms_type = MS_BR_ACID;
334         drs_type = DRS_ACID;
335         break;
336     case GF_ELEC:
337         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_ELEC), m_idx, DAM_ROLL);
338         type_s = _("°ðºÊ", "lightning");
339         ms_type = MS_BR_ELEC;
340         drs_type = DRS_ELEC;
341         break;
342     case GF_FIRE:
343         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_FIRE), m_idx, DAM_ROLL);
344         type_s = _("²Ð±ê", "fire");
345         ms_type = MS_BR_FIRE;
346         drs_type = DRS_FIRE;
347         break;
348     case GF_COLD:
349         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_COLD), m_idx, DAM_ROLL);
350         type_s = _("Î䵤", "frost");
351         ms_type = MS_BR_COLD;
352         drs_type = DRS_COLD;
353         break;
354     case GF_POIS:
355         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_POIS), m_idx, DAM_ROLL);
356         type_s = _("¥¬¥¹", "gas");
357         ms_type = MS_BR_POIS;
358         drs_type = DRS_POIS;
359         break;
360     case GF_NETHER:
361         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_NETH), m_idx, DAM_ROLL);
362         type_s = _("ÃϹö", "nether");
363         ms_type = MS_BR_NETHER;
364         drs_type = DRS_NETH;
365         break;
366     case GF_LITE:
367         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_LITE), m_idx, DAM_ROLL);
368         type_s = _("Á®¸÷", "light");
369         ms_type = MS_BR_LITE;
370         drs_type = DRS_LITE;
371         break;
372     case GF_DARK:
373         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_DARK), m_idx, DAM_ROLL);
374         type_s = _("°Å¹õ", "darkness");
375         ms_type = MS_BR_DARK;
376         drs_type = DRS_DARK;
377         break;
378     case GF_CONFUSION:
379         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_CONF), m_idx, DAM_ROLL);
380         type_s = _("º®Íð", "confusion");
381         ms_type = MS_BR_CONF;
382         drs_type = DRS_CONF;
383         break;
384     case GF_SOUND:
385         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_SOUN), m_idx, DAM_ROLL);
386         type_s = _("¹ì²»", "sound");
387         ms_type = MS_BR_SOUND;
388         drs_type = DRS_SOUND;
389         break;
390     case GF_CHAOS:
391         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_CHAO), m_idx, DAM_ROLL);
392         type_s = _("¥«¥ª¥¹", "chaos");
393         ms_type = MS_BR_CHAOS;
394         drs_type = DRS_CHAOS;
395         break;
396     case GF_DISENCHANT:
397         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_DISE), m_idx, DAM_ROLL);
398         type_s = _("Îô²½", "disenchantment");
399         ms_type = MS_BR_DISEN;
400         drs_type = DRS_DISEN;
401         break;
402     case GF_NEXUS:
403         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_NEXU), m_idx, DAM_ROLL);
404         type_s = _("°ø²Ìº®Íð", "nexus");
405         ms_type = MS_BR_NEXUS;
406         drs_type = DRS_NEXUS;
407         break;
408     case GF_TIME:
409         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_TIME), m_idx, DAM_ROLL);
410         type_s = _("»þ´ÖµÕž", "time");
411         ms_type = MS_BR_TIME;
412         smart_learn = FALSE;
413         break;
414     case GF_INERTIA:
415         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_INER), m_idx, DAM_ROLL);
416         type_s = _("ÃÙÆß", "inertia");
417         ms_type = MS_BR_INERTIA;
418         smart_learn = FALSE;
419         break;
420     case GF_GRAVITY:
421         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_GRAV), m_idx, DAM_ROLL);
422         type_s = _("½ÅÎÏ", "gravity");
423         ms_type = MS_BR_GRAVITY;
424         smart_learn = FALSE;
425         break;
426     case GF_SHARDS:
427         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_SHAR), m_idx, DAM_ROLL);
428         type_s = _("ÇËÊÒ", "shards");
429         ms_type = MS_BR_SHARDS;
430         drs_type = DRS_SHARD;
431         break;
432     case GF_PLASMA:
433         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_PLAS), m_idx, DAM_ROLL);
434         type_s = _("¥×¥é¥º¥Þ", "plasma");
435         ms_type = MS_BR_PLASMA;
436         smart_learn = FALSE;
437         break;
438     case GF_FORCE:
439         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_WALL), m_idx, DAM_ROLL);
440         type_s = _("¥Õ¥©¡¼¥¹", "force");
441         ms_type = MS_BR_FORCE;
442         smart_learn = FALSE;
443         break;
444     case GF_MANA:
445         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_MANA), m_idx, DAM_ROLL);
446         type_s = _("ËâÎÏ", "mana");
447         ms_type = MS_BR_MANA;
448         smart_learn = FALSE;
449         break;
450     case GF_NUKE:
451         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_NUKE), m_idx, DAM_ROLL);
452         type_s = _("Êü¼ÍÀ­ÇÑ´þʪ", "toxic waste");
453         ms_type = MS_BR_NUKE;
454         drs_type = DRS_POIS;
455         break;
456     case GF_DISINTEGRATE:
457         dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_DISI), m_idx, DAM_ROLL);
458         type_s = _("ʬ²ò", "disintegration");
459         ms_type = MS_BR_DISI;
460         smart_learn = FALSE;
461         break;
462     default:
463         break;
464     }
465
466     if (mon_to_player || (mon_to_mon && known && see_either))
467         disturb(1, 1);
468
469     if (m_ptr->r_idx == MON_JAIAN && GF_TYPE == GF_SOUND)
470     {
471         msg_format(_("¡Ö¥Ü¥©¥¨¡Á¡Á¡Á¡Á¡Á¡Á¡×", "'Booooeeeeee'"));
472     }
473     else if (m_ptr->r_idx == MON_BOTEI && GF_TYPE == GF_SHARDS)
474     {
475         msg_format(_("¡Ö¥ÜÄë¥Ó¥ë¥«¥Ã¥¿¡¼¡ª¡ª¡ª¡×", "'Boty-Build cutter!!!'"));
476     }
477     else if (p_ptr->blind)
478     {
479         if (mon_to_player || (mon_to_mon && known && see_either))
480             msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
481     }
482     else
483     {
484         if (mon_to_player)
485         {
486             msg_format(_("%^s¤¬%^s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes %^s."), m_name, type_s);
487         }
488         else if (mon_to_mon && known && see_either)
489         {
490             _(msg_format("%^s¤¬%^s¤Ë%^s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name, type_s),
491               msg_format("%^s breathes %^s at %^s.", m_name, type_s, t_name));
492         }
493     }
494
495     if (mon_to_mon && known && !see_either)
496         mon_fight = TRUE;
497
498     sound(SOUND_BREATH);
499     breath(y, x, m_idx, GF_TYPE, dam, 0, TRUE, ms_type, TARGET_TYPE);
500     if (smart_learn && mon_to_player)
501         update_smart_learn(m_idx, drs_type);
502
503     return dam;
504 }
505
506 /*!
507 * @brief RF4_BA_NUKE¤Î½èÍý¡£Êü¼Íǽµå¡£ /
508 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
509 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
510 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
511 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
512 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
513 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
514 */
515 int spell_RF4_BA_NUKE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
516 {
517     int dam;
518
519     monspell_message(m_idx, t_idx,
520         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
521         _("%^s¤¬Êü¼Íǽµå¤òÊü¤Ã¤¿¡£", "%^s casts a ball of radiation."),
522         _("%^s¤¬%s¤ËÊü¼Íǽµå¤òÊü¤Ã¤¿¡£", "%^s casts a ball of radiation at %s."),
523         TARGET_TYPE);
524
525     dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BA_NUKE), m_idx, DAM_ROLL);
526     breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, TARGET_TYPE);
527     if (TARGET_TYPE == MONSTER_TO_PLAYER)
528         update_smart_learn(m_idx, DRS_POIS);
529
530     return dam;
531 }
532
533 /*!
534 * @brief RF4_BA_CHAO¤Î½èÍý¡£½ã¥í¥°¥ë¥¹¡£ /
535 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
536 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
537 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
538 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
539 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
540 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
541 */
542 int spell_RF4_BA_CHAO(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
543 {
544     int dam;
545
546     monspell_message(m_idx, t_idx,
547         _("%^s¤¬¶²¤í¤·¤²¤Ë¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles frighteningly."),
548         _("%^s¤¬½ã¥í¥°¥ë¥¹¤òÊü¤Ã¤¿¡£", "%^s invokes a raw Logrus."),
549         _("%^s¤¬%s¤Ë½ã¥í¥°¥ë¥¹¤òÊü¤Ã¤¿¡£", "%^s invokes raw Logrus upon %s."),
550         TARGET_TYPE);
551
552     dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BA_CHAO), m_idx, DAM_ROLL);
553     breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, TARGET_TYPE);
554     if (TARGET_TYPE == MONSTER_TO_PLAYER)
555         update_smart_learn(m_idx, DRS_CHAOS);
556
557     return dam;
558 }
559
560 /*!
561 * @brief RF5_BA_ACID¤Î½èÍý¡£¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë¡£ /
562 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
563 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
564 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
565 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
566 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
567 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
568 */
569 int spell_RF5_BA_ACID(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
570 {
571     int dam, rad;
572
573     monspell_message(m_idx, t_idx,
574         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
575         _("%^s¤¬¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an acid ball."),
576         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£",
577           "%^s casts an acid ball at %s."),
578         TARGET_TYPE);
579
580     rad = monster_is_powerful(m_idx) ? 4 : 2;
581     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_ACID), m_idx, DAM_ROLL);
582     breath(y, x, m_idx, GF_ACID, dam, rad, FALSE, MS_BALL_ACID, TARGET_TYPE);
583     if (TARGET_TYPE == MONSTER_TO_PLAYER)
584         update_smart_learn(m_idx, DRS_ACID);
585
586     return dam;
587 }
588
589 /*!
590 * @brief RF5_BA_ELEC¤Î½èÍý¡£¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë¡£ /
591 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
592 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
593 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
594 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
595 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
596 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
597 */
598 int spell_RF5_BA_ELEC(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
599 {
600     int dam, rad;
601
602     monspell_message(m_idx, t_idx,
603         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
604         _("%^s¤¬¥µ¥ó¥À¡¼¡¦¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a lightning ball."),
605         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", 
606           "%^s casts a lightning ball at %s."),
607         TARGET_TYPE);
608
609     rad = monster_is_powerful(m_idx) ? 4 : 2;
610     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_ELEC), m_idx, DAM_ROLL);
611     breath(y, x, m_idx, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, TARGET_TYPE);
612     if (TARGET_TYPE == MONSTER_TO_PLAYER)
613         update_smart_learn(m_idx, DRS_ELEC);
614
615     return dam;
616 }
617
618 /*!
619 * @brief RF5_BA_FIRE¤Î½èÍý¡£¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë¡£ /
620 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
621 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
622 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
623 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
624 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
625 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
626 */
627 int spell_RF5_BA_FIRE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
628 {
629     int dam, rad;
630     monster_type    *m_ptr = &m_list[m_idx];
631
632     if (m_ptr->r_idx == MON_ROLENTO)
633     {
634         monspell_message(m_idx, t_idx,
635             _("%s¤¬²¿¤«¤òÅꤲ¤¿¡£", "%^s throws something."),
636             _("%s¤Ï¼êÜØÃƤòÅꤲ¤¿¡£", "%^s throws a hand grenade."),
637             _("%^s¤¬%^s¤Ë¸þ¤«¤Ã¤Æ¼êÜØÃƤòÅꤲ¤¿¡£", "%^s throws a hand grenade."),
638             TARGET_TYPE);
639     }
640     else
641     {
642         monspell_message(m_idx, t_idx,
643             _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
644             _("%^s¤¬¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a fire ball."),
645             _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£",
646             "%^s casts a fire ball at %s."),
647             TARGET_TYPE);
648     }
649     rad = monster_is_powerful(m_idx) ? 4 : 2;
650     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_FIRE), m_idx, DAM_ROLL);
651     breath(y, x, m_idx, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, TARGET_TYPE);
652     if (TARGET_TYPE == MONSTER_TO_PLAYER)
653         update_smart_learn(m_idx, DRS_FIRE);
654
655     return dam;
656 }
657
658 /*!
659 * @brief RF5_BA_COLD¤Î½èÍý¡£¥¢¥¤¥¹¡¦¥Ü¡¼¥ë¡£ /
660 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
661 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
662 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
663 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
664 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
665 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
666 */
667 int spell_RF5_BA_COLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
668 {
669     int dam, rad;
670
671     monspell_message(m_idx, t_idx,
672         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
673         _("%^s¤¬¥¢¥¤¥¹¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a frost ball."),
674         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥¤¥¹¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£",
675         "%^s casts a frost ball at %s."),
676         TARGET_TYPE);
677
678     rad = monster_is_powerful(m_idx) ? 4 : 2;
679     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_COLD), m_idx, DAM_ROLL);
680     breath(y, x, m_idx, GF_COLD, dam, rad, FALSE, MS_BALL_COLD, TARGET_TYPE);
681     if (TARGET_TYPE == MONSTER_TO_PLAYER)
682         update_smart_learn(m_idx, DRS_COLD);
683
684     return dam;
685 }
686
687 /*!
688 * @brief RF5_BA_POIS¤Î½èÍý¡£°­½­±À¡£ /
689 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
690 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
691 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
692 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
693 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
694 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
695 */
696 int spell_RF5_BA_POIS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
697 {
698     int dam;
699
700     monspell_message(m_idx, t_idx,
701         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
702         _("%^s¤¬°­½­±À¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a stinking cloud."),
703         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ°­½­±À¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a stinking cloud at %s."),
704         TARGET_TYPE);
705
706     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_POIS), m_idx, DAM_ROLL);
707     breath(y, x, m_idx, GF_POIS, dam, 2, FALSE, MS_BALL_POIS, TARGET_TYPE);
708     if (TARGET_TYPE == MONSTER_TO_PLAYER)
709         update_smart_learn(m_idx, DRS_POIS);
710
711     return dam;
712 }
713
714 /*!
715 * @brief RF5_BA_NETH¤Î½èÍý¡£ÃϹöµå¡£ /
716 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
717 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
718 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
719 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
720 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
721 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
722 */
723 int spell_RF5_BA_NETH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
724 {
725     int dam;
726
727     monspell_message(m_idx, t_idx,
728         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
729         _("%^s¤¬ÃϹöµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether ball."),
730         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤ÆÃϹöµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether ball at %s."),
731         TARGET_TYPE);
732
733     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_NETH), m_idx, DAM_ROLL);
734     breath(y, x, m_idx, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, TARGET_TYPE);
735     if (TARGET_TYPE == MONSTER_TO_PLAYER)
736         update_smart_learn(m_idx, DRS_NETH);
737
738     return dam;
739 }
740
741 /*!
742 * @brief RF5_BA_WATE¤Î½èÍý¡£¥¦¥©¡¼¥¿¡¼¡¦¥Ü¡¼¥ë¡£ /
743 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
744 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
745 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
746 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
747 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
748 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
749 */
750 int spell_RF5_BA_WATE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
751 {
752     int dam;
753     bool known = monster_near_player(m_idx, t_idx);
754     bool see_either = see_monster(m_idx) || see_monster(t_idx);
755     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
756     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
757         char t_name[80];
758     monster_name(t_idx, t_name);
759
760
761     monspell_message(m_idx, t_idx,
762         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
763         _("%^s¤¬Î®¤ì¤ë¤è¤¦¤Ê¿È¿¶¤ê¤ò¤·¤¿¡£", "%^s gestures fluidly."),
764         _("%^s¤¬%s¤ËÂФ·¤Æή¤ì¤ë¤è¤¦¤Ê¿È¿¶¤ê¤ò¤·¤¿¡£", "%^s gestures fluidly at %s."),
765         TARGET_TYPE);
766
767     if (mon_to_player)
768     {
769         msg_format(_("¤¢¤Ê¤¿¤Ï±²´¬¤­¤Ë°û¤ß¹þ¤Þ¤ì¤¿¡£", "You are engulfed in a whirlpool."));
770     }
771     else if (mon_to_mon && known && see_either && !p_ptr->blind)
772     {
773         msg_format(_("%^s¤Ï±²´¬¤Ë°û¤ß¹þ¤Þ¤ì¤¿¡£", "%^s is engulfed in a whirlpool."), t_name);
774     }
775
776     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_WATE), m_idx, DAM_ROLL);
777     breath(y, x, m_idx, GF_WATER, dam, 4, FALSE, MS_BALL_WATER, TARGET_TYPE);
778     return dam;
779 }
780
781 /*!
782 * @brief RF5_BA_MANA¤Î½èÍý¡£ËâÎϤÎÍò¡£ /
783 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
784 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
785 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
786 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
787 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
788 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
789 */
790 int spell_RF5_BA_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
791 {
792     int dam;
793
794     monspell_message(m_idx, t_idx,
795         _("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."),
796         _("%^s¤¬ËâÎϤÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a mana storm."),
797         _("%^s¤¬%s¤ËÂФ·¤ÆËâÎϤÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a mana storm upon %s."),
798         TARGET_TYPE);
799
800     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_MANA), m_idx, DAM_ROLL);
801     breath(y, x, m_idx, GF_MANA, dam, 4, FALSE, MS_BALL_MANA, TARGET_TYPE);
802     return dam;
803 }
804
805 /*!
806 * @brief RF5_BA_DARK¤Î½èÍý¡£°Å¹õ¤ÎÍò¡£ /
807 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
808 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
809 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
810 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
811 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
812 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
813 */
814 int spell_RF5_BA_DARK(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
815 {
816     int dam;
817
818     monspell_message(m_idx, t_idx,
819         _("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."),
820         _("%^s¤¬°Å¹õ¤ÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a darkness storm."),
821         _("%^s¤¬%s¤ËÂФ·¤Æ°Å¹õ¤ÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a darkness storm upon %s."),
822         TARGET_TYPE);
823
824     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_DARK), m_idx, DAM_ROLL);
825     breath(y, x, m_idx, GF_DARK, dam, 4, FALSE, MS_BALL_DARK, TARGET_TYPE);
826     if (TARGET_TYPE == MONSTER_TO_PLAYER)
827         update_smart_learn(m_idx, DRS_DARK);
828
829     return dam;
830 }
831
832 /*!
833 * @brief RF5_DRAIN_MANA¤Î½èÍý¡£ËâÎϵۼý¡£ /
834 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
835 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
836 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
837 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
838 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
839 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
840 */
841 int spell_RF5_DRAIN_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
842 {
843     int dam;
844         char m_name[80], t_name[80];
845     monster_name(m_idx, m_name);
846         monster_name(t_idx, t_name);
847
848
849     if (TARGET_TYPE == MONSTER_TO_PLAYER)
850     {
851         disturb(1, 1);
852     }
853     else if (TARGET_TYPE == MONSTER_TO_MONSTER && see_monster(m_idx))
854     { 
855         /* Basic message */
856         msg_format(_("%^s¤ÏÀº¿À¥¨¥Í¥ë¥®¡¼¤ò%s¤«¤éµÛ¤¤¤È¤Ã¤¿¡£", "%^s draws psychic energy from %s."), m_name, t_name);
857     }
858
859     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_DRAIN_MANA), m_idx, DAM_ROLL);
860     breath(y, x, m_idx, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, TARGET_TYPE);
861     if (TARGET_TYPE == MONSTER_TO_PLAYER)
862         update_smart_learn(m_idx, DRS_MANA);
863     
864     return dam;
865 }
866
867 /*!
868 * @brief RF5_MIND_BLAST¤Î½èÍý¡£Àº¿À¹¶·â¡£ /
869 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
870 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
871 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
872 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
873 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
874 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
875 */
876 int spell_RF5_MIND_BLAST(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
877 {
878     monster_type    *m_ptr = &m_list[m_idx];
879     bool seen = (!p_ptr->blind && m_ptr->ml);
880     int dam;
881         char m_name[80], t_name[80];
882     monster_name(m_idx, m_name);
883         monster_name(t_idx, t_name);
884
885
886     if (TARGET_TYPE == MONSTER_TO_PLAYER)
887     {
888         disturb(1, 1);
889         if (!seen)
890             msg_print(_("²¿¤«¤¬¤¢¤Ê¤¿¤ÎÀº¿À¤ËÇ°¤òÊü¤Ã¤Æ¤¤¤ë¤è¤¦¤À¡£", "You feel something focusing on your mind."));
891         else
892             msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¤Ë¤é¤ó¤Ç¤¤¤ë¡£", "%^s gazes deep into your eyes."), m_name);
893     }
894     else if (TARGET_TYPE == MONSTER_TO_MONSTER && see_monster(m_idx))
895     {
896         msg_format(_("%^s¤Ï%s¤ò¤¸¤Ã¤Èâˤó¤À¡£", "%^s gazes intently at %s."), m_name, t_name);
897     }
898
899     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_MIND_BLAST), m_idx, DAM_ROLL);
900     breath(y, x, m_idx, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, TARGET_TYPE);
901     return dam;
902 }
903
904 /*!
905 * @brief RF5_BRAIN_SMASH¤Î½èÍý¡£Ç¾¹¶·â¡£ /
906 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
907 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
908 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
909 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
910 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
911 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
912 */
913 int spell_RF5_BRAIN_SMASH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
914 {
915     monster_type    *m_ptr = &m_list[m_idx];
916     bool seen = (!p_ptr->blind && m_ptr->ml);
917     int dam;
918         char m_name[80], t_name[80];
919     monster_name(m_idx, m_name);
920         monster_name(t_idx, t_name);
921
922
923     if (TARGET_TYPE == MONSTER_TO_PLAYER)
924     {
925         disturb(1, 1);
926         if (!seen)
927             msg_print(_("²¿¤«¤¬¤¢¤Ê¤¿¤ÎÀº¿À¤ËÇ°¤òÊü¤Ã¤Æ¤¤¤ë¤è¤¦¤À¡£", "You feel something focusing on your mind."));
928         else
929             msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¤Ë¤é¤ó¤Ç¤¤¤ë¡£", "%^s gazes deep into your eyes."), m_name);
930     }
931     else if (TARGET_TYPE == MONSTER_TO_MONSTER && see_monster(m_idx))
932     {
933         msg_format(_("%^s¤Ï%s¤ò¤¸¤Ã¤Èâˤó¤À¡£", "%^s gazes intently at %s."), m_name, t_name);
934     }
935
936     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BRAIN_SMASH), m_idx, DAM_ROLL);
937     breath(y, x, m_idx, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, TARGET_TYPE);
938     return dam;
939 }
940
941 /*!
942 * @brief RF5_CAUSE_*¤Î¥á¥Ã¥»¡¼¥¸½èÍý´Ø¿ô /
943 * @param GF_TYPE ¹¶·â¤Ë»ÈÍѤ¹¤ë°À­
944 * @param dam ¹¶·â¤Ë»ÈÍѤ¹¤ë¥À¥á¡¼¥¸ÎÌ
945 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
946 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
947 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
948 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
949 * @param msg1 ÂХץ쥤¥ä¡¼¡¢ÌÕÌÜ»þ¥á¥Ã¥»¡¼¥¸
950 * @param msg2 ÂХץ쥤¥ä¡¼¡¢ÈóÌÕÌÜ»þ¥á¥Ã¥»¡¼¥¸
951 * @param msg3 ÂÐ¥â¥ó¥¹¥¿¡¼¤Î¥á¥Ã¥»¡¼¥¸
952 * @param MS_TYPE ¼öʸ¤ÎÈÖ¹æ
953 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
954 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
955 */
956 void spell_RF5_CAUSE(int GF_TYPE, int dam, int y, int x, int m_idx, int t_idx, cptr msg1, cptr msg2, cptr msg3, int MS_TYPE, int TARGET_TYPE)
957 {
958         char m_name[80], t_name[80];
959     monster_name(m_idx, m_name);
960         monster_name(t_idx, t_name);
961
962     if (TARGET_TYPE == MONSTER_TO_PLAYER)
963     {
964         disturb(1, 1);
965         if (p_ptr->blind)
966             msg_format(msg1, m_name);
967         else
968             msg_format(msg2, m_name);
969     }
970     else if (TARGET_TYPE == MONSTER_TO_MONSTER)
971     {
972         if (see_monster(m_idx))
973         {
974             msg_format(msg3, m_name, t_name);
975         }
976         else
977         {
978             mon_fight = TRUE;
979         }
980     }
981     breath(y, x, m_idx, GF_TYPE, dam, 0, FALSE, MS_TYPE, TARGET_TYPE);
982 }
983
984 /*!
985 * @brief RF5_CAUSE_1¤Î½èÍý¡£·Ú½ý¤Î¼ö¤¤¡£ /
986 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
987 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
988 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
989 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
990 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
991 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
992 */
993 int spell_RF5_CAUSE_1(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
994 {
995     cptr msg1, msg2, msg3;
996     int dam;
997     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_CAUSE_1), m_idx, DAM_ROLL);
998
999     msg1 = _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles.");
1000     msg2 = _("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¼ö¤Ã¤¿¡£", "%^s points at you and curses.");
1001     msg3 = _("%^s¤Ï%s¤ò»Ø¤µ¤·¤Æ¼ö¤¤¤ò¤«¤±¤¿¡£", "%^s points at %s and curses.");
1002     
1003     spell_RF5_CAUSE(GF_CAUSE_1, dam, y, x, m_idx, t_idx, msg1, msg2, msg3, MS_CAUSE_1, TARGET_TYPE);
1004     return dam;
1005 }
1006
1007 /*!
1008 * @brief RF5_CAUSE_2¤Î½èÍý¡£½Å½ý¤Î¼ö¤¤¡£ /
1009 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1010 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1011 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1012 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1013 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1014 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
1015 */
1016 int spell_RF5_CAUSE_2(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1017 {
1018     cptr msg1, msg2, msg3;
1019     int dam;
1020     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_CAUSE_2), m_idx, DAM_ROLL);
1021
1022     msg1 = _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles.");
1023     msg2 = _("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼ö¤Ã¤¿¡£", "%^s points at you and curses horribly.");
1024     msg3 = _("%^s¤Ï%s¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼ö¤¤¤ò¤«¤±¤¿¡£", "%^s points at %s and curses horribly.");
1025
1026     spell_RF5_CAUSE(GF_CAUSE_2, dam, y, x, m_idx, t_idx, msg1, msg2, msg3, MS_CAUSE_2, TARGET_TYPE);
1027     return dam;
1028 }
1029
1030 /*!
1031 * @brief RF5_CAUSE_3¤Î½èÍý¡£Ã×Ì¿½ý¤Î¼ö¤¤¡£ /
1032 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1033 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1034 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1035 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1036 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1037 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
1038 */
1039 int spell_RF5_CAUSE_3(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1040 {
1041     cptr msg1, msg2, msg3;
1042     int dam;
1043     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_CAUSE_3), m_idx, DAM_ROLL);
1044
1045     msg1 = _("%^s¤¬²¿¤«¤òÂçÀ¼¤Ç¶«¤ó¤À¡£", "%^s mumbles loudly.");
1046     msg2 = _("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼öʸ¤ò¾§¤¨¤¿¡ª", "%^s points at you, incanting terribly!");
1047     msg3 = _("%^s¤Ï%s¤ò»Ø¤µ¤·¡¢¶²¤í¤·¤²¤Ë¼öʸ¤ò¾§¤¨¤¿¡ª", "%^s points at %s, incanting terribly!");
1048
1049     spell_RF5_CAUSE(GF_CAUSE_3, dam, y, x, m_idx, t_idx, msg1, msg2, msg3, MS_CAUSE_3, TARGET_TYPE);
1050     return dam;
1051 }
1052
1053 /*!
1054 * @brief RF5_CAUSE_4¤Î½èÍý¡£È빦¤òÆͤ¯¡£ /
1055 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1056 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1057 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1058 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1059 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1060 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
1061 */
1062 int spell_RF5_CAUSE_4(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1063 {
1064     cptr msg1, msg2, msg3;
1065     int dam;
1066     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_CAUSE_4), m_idx, DAM_ROLL);
1067
1068     msg1 = _("%^s¤¬¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£", "%^s screams the word 'DIE!'");
1069     msg2 = _("%^s¤¬¤¢¤Ê¤¿¤ÎÈ빦¤òÆͤ¤¤Æ¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£", "%^s points at you, screaming the word DIE!");
1070     msg3 = _("%^s¤¬%s¤ÎÈ빦¤òÆͤ¤¤Æ¡¢¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£", "%^s points at %s, screaming the word, 'DIE!'");
1071
1072     spell_RF5_CAUSE(GF_CAUSE_4, dam, y, x, m_idx, t_idx, msg1, msg2, msg3, MS_CAUSE_4, TARGET_TYPE);
1073     return dam;
1074 }
1075
1076 /*!
1077 * @brief RF5_BO_ACID¤Î½èÍý¡£¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¡£ /
1078 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1079 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1080 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1081 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1082 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1083 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
1084 */
1085 int spell_RF5_BO_ACID(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1086 {
1087     int dam;
1088
1089     monspell_message(m_idx, t_idx,
1090         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
1091         _("%^s¤¬¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a acid bolt."),
1092         _("%s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an acid bolt at %s."),
1093         TARGET_TYPE);
1094
1095     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_ACID), m_idx, DAM_ROLL);
1096     bolt(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, TARGET_TYPE);
1097     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1098     {
1099         update_smart_learn(m_idx, DRS_ACID);
1100         update_smart_learn(m_idx, DRS_REFLECT);
1101     }
1102     return dam;
1103 }
1104
1105 /*!
1106 * @brief RF5_BO_ELEC¤Î½èÍý¡£¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¡£ /
1107 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1108 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1109 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1110 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1111 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1112 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
1113 */
1114 int spell_RF5_BO_ELEC(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1115 {
1116     int dam;
1117
1118     monspell_message(m_idx, t_idx,
1119         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
1120         _("%^s¤¬¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a lightning bolt."),
1121         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a lightning bolt at %s."),
1122         TARGET_TYPE);
1123
1124     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_ELEC), m_idx, DAM_ROLL);
1125     bolt(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, TARGET_TYPE);
1126     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1127     {
1128         update_smart_learn(m_idx, DRS_ELEC);
1129         update_smart_learn(m_idx, DRS_REFLECT);
1130     }
1131     return dam;
1132 }
1133
1134 /*!
1135 * @brief RF5_BO_FIRE¤Î½èÍý¡£¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¡£ /
1136 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1137 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1138 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1139 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1140 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1141 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
1142 */
1143 int spell_RF5_BO_FIRE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1144 {
1145     int dam;
1146
1147     monspell_message(m_idx, t_idx,
1148         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
1149         _("%^s¤¬¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a fire bolt."),
1150         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a fire bolt at %s."),
1151         TARGET_TYPE);
1152
1153     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_FIRE), m_idx, DAM_ROLL);
1154     bolt(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, TARGET_TYPE);
1155     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1156     {
1157         update_smart_learn(m_idx, DRS_FIRE);
1158         update_smart_learn(m_idx, DRS_REFLECT);
1159     }
1160     return dam;
1161 }
1162
1163 /*!
1164 * @brief RF5_BO_COLD¤Î½èÍý¡£¥¢¥¤¥¹¡¦¥Ü¥ë¥È¡£ /
1165 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1166 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1167 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1168 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1169 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1170 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
1171 */
1172 int spell_RF5_BO_COLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1173 {
1174     int dam;
1175
1176     monspell_message(m_idx, t_idx,
1177         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
1178         _("%^s¤¬¥¢¥¤¥¹¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a frost bolt."),
1179         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥¤¥¹¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a frost bolt at %s."),
1180         TARGET_TYPE);
1181
1182     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_COLD), m_idx, DAM_ROLL);
1183     bolt(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, TARGET_TYPE);
1184     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1185     {
1186         update_smart_learn(m_idx, DRS_COLD);
1187         update_smart_learn(m_idx, DRS_REFLECT);
1188     }
1189     return dam;
1190 }
1191
1192 /*!
1193 * @brief RF5_BA_LITE¤Î½èÍý¡£¥¹¥¿¡¼¥Ð¡¼¥¹¥È¡£ /
1194 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1195 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1196 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1197 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1198 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1199 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
1200 */
1201 int spell_RF5_BA_LITE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1202 {
1203     int dam;
1204
1205     monspell_message(m_idx, t_idx,
1206         _("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."),
1207         _("%^s¤¬¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a starburst."),
1208         _("%^s¤¬%s¤ËÂФ·¤Æ¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a starburst upon %s."),
1209         TARGET_TYPE);
1210
1211     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_LITE), m_idx, DAM_ROLL);
1212     breath(y, x, m_idx, GF_LITE, dam, 4, FALSE, MS_STARBURST, TARGET_TYPE);
1213     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1214         update_smart_learn(m_idx, DRS_LITE);
1215
1216     return dam;
1217 }
1218
1219 /*!
1220 * @brief RF5_BO_NETH¤Î½èÍý¡£ÃϹö¤ÎÌð¡£ /
1221 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1222 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1223 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1224 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1225 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1226 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
1227 */
1228 int spell_RF5_BO_NETH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1229 {
1230     int dam;
1231
1232     monspell_message(m_idx, t_idx,
1233         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
1234         _("%^s¤¬ÃϹö¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether bolt."),
1235         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤ÆÃϹö¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether bolt at %s."),
1236         TARGET_TYPE);
1237
1238     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_NETH), m_idx, DAM_ROLL);
1239     bolt(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, TARGET_TYPE);
1240     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1241     {
1242         update_smart_learn(m_idx, DRS_NETH);
1243         update_smart_learn(m_idx, DRS_REFLECT);
1244     }
1245     return dam;
1246 }
1247
1248 /*!
1249 * @brief RF5_BO_WATE¤Î½èÍý¡£¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¡£ /
1250 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1251 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1252 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1253 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1254 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1255 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
1256 */
1257 int spell_RF5_BO_WATE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1258 {
1259     int dam;
1260     int rlev = monster_level_idx(m_idx);
1261
1262     monspell_message(m_idx, t_idx,
1263         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
1264         _("%^s¤¬¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a water bolt."),
1265         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a water bolt at %s."),
1266         TARGET_TYPE);
1267
1268     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_WATE), m_idx, DAM_ROLL);
1269     bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, TARGET_TYPE);
1270     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1271     {
1272         update_smart_learn(m_idx, DRS_REFLECT);
1273     }
1274     return dam;
1275 }
1276
1277 /*!
1278 * @brief RF5_BO_MANA¤Î½èÍý¡£ËâÎϤÎÌð¡£ /
1279 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1280 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1281 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1282 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1283 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1284 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
1285 */
1286 int spell_RF5_BO_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1287 {
1288     int dam;
1289     int rlev = monster_level_idx(m_idx);
1290
1291     monspell_message(m_idx, t_idx,
1292         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
1293         _("%^s¤¬ËâÎϤÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a mana bolt."),
1294         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤ÆËâÎϤÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a mana bolt at %s."),
1295         TARGET_TYPE);
1296
1297     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_MANA), m_idx, DAM_ROLL);
1298     bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, TARGET_TYPE);
1299     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1300     {
1301         update_smart_learn(m_idx, DRS_REFLECT);
1302     }
1303     return dam;
1304 }
1305
1306 /*!
1307 * @brief RF5_BO_PLAS¤Î½èÍý¡£¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È¡£ /
1308 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1309 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1310 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1311 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1312 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1313 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
1314 */
1315 int spell_RF5_BO_PLAS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1316 {
1317     int dam;
1318     int rlev = monster_level_idx(m_idx);
1319
1320     monspell_message(m_idx, t_idx,
1321         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
1322         _("%^s¤¬¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a plasma bolt."),
1323         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a plasma bolt at %s."),
1324         TARGET_TYPE);
1325
1326     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_PLAS), m_idx, DAM_ROLL);
1327     bolt(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, TARGET_TYPE);
1328     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1329     {
1330         update_smart_learn(m_idx, DRS_REFLECT);
1331     }
1332     return dam;
1333 }
1334
1335 /*!
1336 * @brief RF5_BO_ICEE¤Î½èÍý¡£¶Ë´¨¤ÎÌð¡£ /
1337 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1338 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1339 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1340 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1341 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1342 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
1343 */
1344 int spell_RF5_BO_ICEE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1345 {
1346     int dam;
1347     int rlev = monster_level_idx(m_idx);
1348
1349     monspell_message(m_idx, t_idx,
1350         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
1351         _("%^s¤¬¶Ë´¨¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an ice bolt."),
1352         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¶Ë´¨¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an ice bolt at %s."),
1353         TARGET_TYPE);
1354
1355     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_ICEE), m_idx, DAM_ROLL);
1356     bolt(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, TARGET_TYPE);
1357     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1358     {
1359         update_smart_learn(m_idx, DRS_COLD);
1360         update_smart_learn(m_idx, DRS_REFLECT);
1361     }
1362     return dam;
1363 }
1364
1365 /*!
1366 * @brief RF5_MISSILE¤Î½èÍý¡£¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë¡£ /
1367 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1368 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1369 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1370 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1371 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1372 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
1373 */
1374 int spell_RF5_MISSILE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1375 {
1376     int dam;
1377     int rlev = monster_level_idx(m_idx);
1378
1379     monspell_message(m_idx, t_idx,
1380         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
1381         _("%^s¤¬¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a magic missile."),
1382         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a magic missile at %s."),
1383         TARGET_TYPE);
1384
1385     dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_MISSILE), m_idx, DAM_ROLL);
1386     bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, TARGET_TYPE);
1387     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1388     {
1389         update_smart_learn(m_idx, DRS_REFLECT);
1390     }
1391     return dam;
1392 }
1393
1394 /*!
1395 * @brief ¾õÂÖ°Û¾ï¼öʸ¤Î¥á¥Ã¥»¡¼¥¸½èÍý´Ø¿ô¡£ /
1396 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1397 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1398 * @param msg1 ÂХץ쥤¥ä¡¼¤Ê¤éÌÕÌÜ»þ¥á¥Ã¥»¡¼¥¸¡£ÂÐ¥â¥ó¥¹¥¿¡¼¤Ê¤éÄ̾ï»þ¥á¥Ã¥»¡¼¥¸¡£
1399 * @param msg2 ÂХץ쥤¥ä¡¼¤Ê¤éÈóÌÕÌÜ»þ¥á¥Ã¥»¡¼¥¸¡£ÂÐ¥â¥ó¥¹¥¿¡¼¤Ê¤éÂÑÀ­Í­¥á¥Ã¥»¡¼¥¸¡£
1400 * @param msg3 ÂХץ쥤¥ä¡¼¤Ê¤éÂÑÀ­Í­¥á¥Ã¥»¡¼¥¸¡£ÂÐ¥â¥ó¥¹¥¿¡¼¤Ê¤éÄñ¹³»þ¥á¥Ã¥»¡¼¥¸¡£
1401 * @param msg4 ÂХץ쥤¥ä¡¼¤Ê¤éÄñ¹³»þ¥á¥Ã¥»¡¼¥¸¡£ÂÐ¥â¥ó¥¹¥¿¡¼¤Ê¤éÀ®¸ù»þ¥á¥Ã¥»¡¼¥¸¡£
1402 * @param resist ÂÑÀ­¤Î̵ͭ¤òȽÊ̤¹¤ë¥Õ¥é¥°
1403 * @param saving_throw Äñ¹³¤ËÀ®¸ù¤·¤¿¤«È½Ê̤¹¤ë¥Õ¥é¥°
1404 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1405 */
1406 void spell_badstatus_message(int m_idx, int t_idx, cptr msg1, cptr msg2, cptr msg3, cptr msg4, bool resist, bool saving_throw, int TARGET_TYPE)
1407 {
1408     bool see_either = see_monster(m_idx) || see_monster(t_idx);
1409     bool see_t = see_monster(t_idx);
1410     bool known = monster_near_player(m_idx, t_idx);
1411     char m_name[80], t_name[80];
1412     monster_name(m_idx, m_name);
1413     monster_name(t_idx, t_name);
1414
1415     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1416     {
1417         disturb(1, 1);
1418         if (p_ptr->blind)
1419             msg_format(msg1, m_name);
1420         else
1421             msg_format(msg2, m_name);
1422
1423         if (resist)
1424         {
1425             msg_print(msg3);
1426         }
1427         else if (saving_throw)
1428         {
1429             msg_print(msg4);
1430         }
1431     }
1432     else if (TARGET_TYPE == MONSTER_TO_MONSTER)
1433     {
1434         if (known)
1435         {
1436             if (see_either)
1437             {
1438                 msg_format(msg1, m_name, t_name);
1439             }
1440             else
1441             {
1442                 mon_fight = TRUE;
1443             }
1444         }
1445
1446         if (resist)
1447         {
1448             if (see_t) msg_format(msg2, t_name);
1449         }
1450         else if (saving_throw)
1451         {
1452             if (see_t) msg_format(msg3, t_name);
1453         }
1454         else
1455         {
1456             if (see_t) msg_format(msg4, t_name);
1457         }
1458         monster_wakeup(t_idx);
1459     }
1460 }
1461
1462 /*!
1463 * @brief RF5_SCARE¤Î½èÍý¡£¶²ÉÝ¡£ /
1464 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1465 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1466 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1467 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1468 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1469 */
1470 void spell_RF5_SCARE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1471 {
1472     monster_type    *t_ptr = &m_list[t_idx];
1473     monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
1474     int rlev = monster_level_idx(m_idx);
1475     bool resist, saving_throw;
1476
1477     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1478     {
1479         resist = p_ptr->resist_fear;
1480         saving_throw = (randint0(100 + rlev / 2) < p_ptr->skill_sav);
1481         spell_badstatus_message(m_idx, t_idx,
1482             _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¯¤È¡¢¶²¤í¤·¤²¤Ê²»¤¬Ê¹¤³¤¨¤¿¡£", "%^s mumbles, and you hear scary noises."),
1483             _("%^s¤¬¶²¤í¤·¤²¤Ê¸¸³Ð¤òºî¤ê½Ð¤·¤¿¡£", "%^s casts a fearful illusion."),
1484             _("¤·¤«¤·¶²Éݤ˿¯¤µ¤ì¤Ê¤«¤Ã¤¿¡£", "You refuse to be frightened."),
1485             _("¤·¤«¤·¶²Éݤ˿¯¤µ¤ì¤Ê¤«¤Ã¤¿¡£", "You refuse to be frightened."),
1486             resist, saving_throw, TARGET_TYPE);
1487
1488         if (!resist && !saving_throw)
1489         {
1490             (void)set_afraid(p_ptr->afraid + randint0(4) + 4);
1491         }
1492         learn_spell(MS_SCARE);
1493         update_smart_learn(m_idx, DRS_FEAR);
1494     }
1495     else if (TARGET_TYPE == MONSTER_TO_MONSTER)
1496     {
1497         resist = tr_ptr->flags3 & RF3_NO_FEAR;
1498         saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
1499
1500         spell_badstatus_message(m_idx, t_idx, 
1501             _("%^s¤¬¶²¤í¤·¤²¤Ê¸¸³Ð¤òºî¤ê½Ð¤·¤¿¡£", "%^s casts a fearful illusion in front of %s."),
1502             _("%^s¤Ï¶²Éݤò´¶¤¸¤Ê¤¤¡£", "%^s refuses to be frightened."),
1503             _("%^s¤Ï¶²Éݤò´¶¤¸¤Ê¤¤¡£", "%^s refuses to be frightened."),
1504             _("%^s¤Ï¶²Éݤ·¤Æƨ¤²½Ð¤·¤¿¡ª", "%^s flees in terror!"),
1505             resist, saving_throw, TARGET_TYPE);
1506
1507         if (!resist && !saving_throw)
1508         {
1509             set_monster_monfear(t_idx, MON_MONFEAR(t_ptr) + randint0(4) + 4);
1510         }
1511     }
1512 }
1513
1514 /*!
1515 * @brief RF5_BLIND¤Î½èÍý¡£ÌÕÌÜ¡£ /
1516 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1517 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1518 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1519 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1520 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1521 */
1522 void spell_RF5_BLIND(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1523 {
1524     monster_type    *t_ptr = &m_list[t_idx];
1525     monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
1526     int rlev = monster_level_idx(m_idx);
1527     bool resist, saving_throw;
1528
1529     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1530     {
1531         resist = p_ptr->resist_blind;
1532         saving_throw = (randint0(100 + rlev / 2) < p_ptr->skill_sav);
1533         spell_badstatus_message(m_idx, t_idx,
1534             _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
1535             _("%^s¤¬¼öʸ¤ò¾§¤¨¤Æ¤¢¤Ê¤¿¤ÎÌܤò¤¯¤é¤Þ¤·¤¿¡ª", "%^s casts a spell, burning your eyes!"),
1536             _("¤·¤«¤·¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", "You are unaffected!"),
1537             _("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", "You resist the effects!"),
1538             resist, saving_throw, TARGET_TYPE);
1539
1540         if (!resist && !saving_throw)
1541         {
1542             (void)set_blind(12 + randint0(4));
1543         }
1544         learn_spell(MS_BLIND);
1545         update_smart_learn(m_idx, DRS_BLIND);
1546     }
1547     else if (TARGET_TYPE == MONSTER_TO_MONSTER)
1548     {
1549         cptr msg1;
1550         char t_name[80];
1551         monster_name(t_idx, t_name);
1552         
1553         if (streq(t_name, "it"))
1554         {
1555             msg1 = _("%s¤Ï¼öʸ¤ò¾§¤¨¤Æ%s¤ÎÌܤò¾Æ¤­ÉÕ¤«¤»¤¿¡£", "%^s casts a spell, burning %ss eyes.");
1556         }
1557         else
1558         {
1559             msg1 = _("%s¤Ï¼öʸ¤ò¾§¤¨¤Æ%s¤ÎÌܤò¾Æ¤­ÉÕ¤«¤»¤¿¡£", "%^s casts a spell, burning %s's eyes.");
1560         }
1561
1562         resist = tr_ptr->flags3 & RF3_NO_CONF;
1563         saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
1564
1565         spell_badstatus_message(m_idx, t_idx,
1566             msg1,
1567             _("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected."),
1568             _("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected."),
1569             _("%^s¤ÏÌܤ¬¸«¤¨¤Ê¤¯¤Ê¤Ã¤¿¡ª ", "%^s is blinded!"),
1570             resist, saving_throw, TARGET_TYPE);
1571
1572         if (!resist && !saving_throw)
1573         {
1574             (void)set_monster_confused(t_idx, MON_CONFUSED(t_ptr) + 12 + randint0(4));
1575         }
1576     }
1577 }
1578
1579 /*!
1580 * @brief RF5_CONF¤Î½èÍý¡£º®Íð¡£ /
1581 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1582 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1583 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1584 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1585 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1586 */
1587 void spell_RF5_CONF(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1588 {
1589     monster_type    *t_ptr = &m_list[t_idx];
1590     monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
1591     int rlev = monster_level_idx(m_idx);
1592     bool resist, saving_throw;
1593
1594     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1595     {
1596         resist = p_ptr->resist_conf;
1597         saving_throw = (randint0(100 + rlev / 2) < p_ptr->skill_sav);
1598         spell_badstatus_message(m_idx, t_idx,
1599             _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¯¤È¡¢Æ¬¤òǺ¤Þ¤¹²»¤¬¤·¤¿¡£", "%^s mumbles, and you hear puzzling noises."),
1600             _("%^s¤¬Í¶ÏÇŪ¤Ê¸¸³Ð¤òºî¤ê½Ð¤·¤¿¡£", "%^s creates a mesmerising illusion."),
1601             _("¤·¤«¤·¸¸³Ð¤Ë¤Ï¤À¤Þ¤µ¤ì¤Ê¤«¤Ã¤¿¡£", "You disbelieve the feeble spell."),
1602             _("¤·¤«¤·¸¸³Ð¤Ë¤Ï¤À¤Þ¤µ¤ì¤Ê¤«¤Ã¤¿¡£", "You disbelieve the feeble spell."),
1603             resist, saving_throw, TARGET_TYPE);
1604
1605         if (!resist && !saving_throw)
1606         {
1607             (void)set_confused(p_ptr->confused + randint0(4) + 4);
1608         }
1609         learn_spell(MS_CONF);
1610         update_smart_learn(m_idx, DRS_CONF);
1611     }
1612     else if (TARGET_TYPE == MONSTER_TO_MONSTER)
1613     {
1614         resist = tr_ptr->flags3 & RF3_NO_CONF;
1615         saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
1616
1617         spell_badstatus_message(m_idx, t_idx,
1618             _("%^s¤¬%s¤ÎÁ°¤Ë¸¸ÏÇŪ¤Ê¸¸¤ò¤Ä¤¯¤ê½Ð¤·¤¿¡£", "%^s casts a mesmerizing illusion in front of %s."),
1619             _("%^s¤ÏÏǤ蘆¤ì¤Ê¤«¤Ã¤¿¡£", "%^s disbelieves the feeble spell."),
1620             _("%^s¤ÏÏǤ蘆¤ì¤Ê¤«¤Ã¤¿¡£", "%^s disbelieves the feeble spell."),
1621             _("%^s¤Ïº®Í𤷤¿¤è¤¦¤À¡£", "%^s seems confused."),
1622             resist, saving_throw, TARGET_TYPE);
1623
1624         if (!resist && !saving_throw)
1625         {
1626             (void)set_monster_confused(t_idx, MON_CONFUSED(t_ptr) + 12 + randint0(4));
1627         }
1628     }
1629 }
1630
1631 /*!
1632 * @brief RF5_SLOW¤Î½èÍý¡£¸ºÂ®¡£ /
1633 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1634 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1635 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1636 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1637 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1638 */
1639 void spell_RF5_SLOW(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1640 {
1641     monster_type    *t_ptr = &m_list[t_idx];
1642     monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
1643     int rlev = monster_level_idx(m_idx);
1644     bool resist, saving_throw;
1645
1646     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1647     {
1648         resist = p_ptr->resist_conf;
1649         saving_throw = (randint0(100 + rlev / 2) < p_ptr->skill_sav);
1650         spell_badstatus_message(m_idx, t_idx,
1651             _("%^s¤¬¤¢¤Ê¤¿¤Î¶ÚÎϤòµÛ¤¤¼è¤í¤¦¤È¤·¤¿¡ª", "%^s drains power from your muscles!"),
1652             _("%^s¤¬¤¢¤Ê¤¿¤Î¶ÚÎϤòµÛ¤¤¼è¤í¤¦¤È¤·¤¿¡ª", "%^s drains power from your muscles!"),
1653             _("¤·¤«¤·¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", "You are unaffected!"),
1654             _("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", "You resist the effects!"),
1655             resist, saving_throw, TARGET_TYPE);
1656
1657         if (!resist && !saving_throw)
1658         {
1659             (void)set_slow(p_ptr->slow + randint0(4) + 4, FALSE);
1660         }
1661         learn_spell(MS_SLOW);
1662         update_smart_learn(m_idx, DRS_FREE);
1663     }
1664     else if (TARGET_TYPE == MONSTER_TO_MONSTER)
1665     {
1666         cptr msg1;
1667         char t_name[80];
1668         monster_name(t_idx, t_name);
1669
1670         if (streq(t_name, "it"))
1671         {
1672             msg1 = _("%s¤¬%s¤Î¶ÚÆù¤«¤éÎϤòµÛ¤¤¤È¤Ã¤¿¡£", "%^s drains power from %ss muscles.");
1673         }
1674         else
1675         {
1676             msg1 = _("%s¤¬%s¤Î¶ÚÆù¤«¤éÎϤòµÛ¤¤¤È¤Ã¤¿¡£", "%^s drains power from %s's muscles.");
1677         }
1678
1679         resist = tr_ptr->flags1 & RF1_UNIQUE;
1680         saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
1681
1682         spell_badstatus_message(m_idx, t_idx,
1683             msg1,
1684             _("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected."),
1685             _("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected."),
1686             _("%s¤ÎÆ°¤­¤¬ÃÙ¤¯¤Ê¤Ã¤¿¡£", "%^s starts moving slower."),
1687             resist, saving_throw, TARGET_TYPE);
1688
1689         if (!resist && !saving_throw)
1690         {
1691             set_monster_slow(t_idx, MON_SLOW(t_ptr) + 50);
1692         }
1693     }
1694 }
1695
1696 /*!
1697 * @brief RF5_HOLD¤Î½èÍý¡£Ëãáã¡£ /
1698 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1699 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1700 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1701 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1702 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1703 */
1704 void spell_RF5_HOLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1705 {
1706     monster_type    *t_ptr = &m_list[t_idx];
1707     monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
1708     int rlev = monster_level_idx(m_idx);
1709     bool resist, saving_throw;
1710
1711     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1712     {
1713         resist = p_ptr->free_act;
1714         saving_throw = (randint0(100 + rlev / 2) < p_ptr->skill_sav);
1715         spell_badstatus_message(m_idx, t_idx,
1716             _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
1717             _("%^s¤¬¤¢¤Ê¤¿¤ÎÌܤò¤¸¤Ã¤È¸«¤Ä¤á¤¿¡ª", "%^s stares deep into your eyes!"),
1718             _("¤·¤«¤·¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", "You are unaffected!"),
1719             _("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", "You resist the effects!"),
1720             resist, saving_throw, TARGET_TYPE);
1721
1722         if (!resist && !saving_throw)
1723         {
1724             (void)set_paralyzed(p_ptr->paralyzed + randint0(4) + 4);
1725         }
1726         learn_spell(MS_SLEEP);
1727         update_smart_learn(m_idx, DRS_FREE);
1728     }
1729     else if (TARGET_TYPE == MONSTER_TO_MONSTER)
1730     {
1731         resist = (tr_ptr->flags1 & RF1_UNIQUE) || (tr_ptr->flags3 & RF3_NO_STUN);
1732         saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
1733
1734         spell_badstatus_message(m_idx, t_idx,
1735             _("%^s¤Ï%s¤ò¤¸¤Ã¤È¸«¤Ä¤á¤¿¡£", "%^s stares intently at %s."),
1736             _("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected."),
1737             _("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected."), 
1738             _("%^s¤ÏËãá㤷¤¿¡ª", "%^s is paralyzed!"),
1739             resist, saving_throw, TARGET_TYPE);
1740
1741         if (!resist && !saving_throw)
1742         {
1743             (void)set_monster_stunned(t_idx, MON_STUNNED(t_ptr) + randint1(4) + 4);
1744         }
1745     }
1746 }
1747
1748 /*!
1749 * @brief RF6_HASTE¤Î½èÍý¡£²Ã®¡£ /
1750 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1751 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1752 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1753 */
1754 void spell_RF6_HASTE(int m_idx, int t_idx, int TARGET_TYPE)
1755 {
1756     bool see_m = see_monster(m_idx);
1757     monster_type    *m_ptr = &m_list[m_idx];
1758         char m_name[80];
1759     monster_name(m_idx, m_name);
1760
1761     monspell_message_base(m_idx, t_idx,
1762         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
1763         _("%^s¤¬¼«Ê¬¤ÎÂΤËÇ°¤òÁ÷¤Ã¤¿¡£", "%^s concentrates on %s body."),
1764         _("%^s¤¬¼«Ê¬¤ÎÂΤËÇ°¤òÁ÷¤Ã¤¿¡£", "%^s concentrates on %s body."),
1765         _("%^s¤¬¼«Ê¬¤ÎÂΤËÇ°¤òÁ÷¤Ã¤¿¡£", "%^s concentrates on %s body."),
1766         p_ptr->blind, TARGET_TYPE);
1767
1768     /* Allow quick speed increases to base+10 */
1769     if (set_monster_fast(m_idx, MON_FAST(m_ptr) + 100))
1770     {
1771         if (TARGET_TYPE == MONSTER_TO_PLAYER ||
1772             (TARGET_TYPE == MONSTER_TO_MONSTER && see_m))
1773             msg_format(_("%^s¤ÎÆ°¤­¤¬Â®¤¯¤Ê¤Ã¤¿¡£", "%^s starts moving faster."), m_name);
1774     }
1775 }
1776
1777 /*!
1778 * @brief RF6_HAND_DOOM¤Î½èÍý¡£ÇËÌǤμꡣ /
1779 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
1780 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
1781 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1782 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1783 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1784 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
1785 */
1786 int spell_RF6_HAND_DOOM(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1787 {
1788     int dam;
1789
1790     simple_monspell_message(m_idx, t_idx,
1791         _("%^s¤¬<ÇËÌǤμê>¤òÊü¤Ã¤¿¡ª", "%^s invokes the Hand of Doom!"),
1792         _("%^s¤¬%s¤Ë<ÇËÌǤμê>¤òÊü¤Ã¤¿¡ª", "%^s invokes the Hand of Doom upon %s!"),
1793         TARGET_TYPE);
1794
1795     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1796     {
1797         dam = monspell_damage(monspell_num(RF6_SPELL_START, RF6_HAND_DOOM), m_idx, DAM_ROLL);
1798         breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, MONSTER_TO_PLAYER);
1799     }
1800     else if (TARGET_TYPE == MONSTER_TO_MONSTER)
1801     {
1802         dam = 20; /* Dummy power */
1803         breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, MONSTER_TO_MONSTER);
1804     }
1805     return dam;
1806 }
1807
1808 /*!
1809 * @brief RF6_HEAL¤Î½èÍý¡£¼£Ìþ¡£ /
1810 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1811 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1812 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1813 */
1814 void spell_RF6_HEAL(int m_idx, int t_idx, int TARGET_TYPE)
1815 {
1816     monster_type    *m_ptr = &m_list[m_idx];
1817     int rlev = monster_level_idx(m_idx);
1818     bool seen = (!p_ptr->blind && m_ptr->ml);
1819         char m_name[80];
1820     monster_name(m_idx, m_name);
1821
1822     disturb(1, 1);
1823
1824     /* Message */
1825     monspell_message_base(m_idx, t_idx,
1826         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
1827         _("%^s¤Ï¼«Ê¬¤Î½ý¤ËÇ°¤ò½¸Ã椷¤¿¡£", "%^s concentrates on %s wounds."),
1828         _("%^s¤¬¼«Ê¬¤Î½ý¤Ë½¸Ã椷¤¿¡£", "%^s concentrates on %s wounds."),
1829         _("%^s¤Ï¼«Ê¬¤Î½ý¤ËÇ°¤ò½¸Ã椷¤¿¡£", "%^s concentrates on %s wounds."),
1830         p_ptr->blind, TARGET_TYPE);
1831
1832     /* Heal some */
1833     m_ptr->hp += (rlev * 6);
1834
1835     /* Fully healed */
1836     if (m_ptr->hp >= m_ptr->maxhp)
1837     {
1838         /* Fully healed */
1839         m_ptr->hp = m_ptr->maxhp;
1840
1841         /* Message */
1842         monspell_message_base(m_idx, t_idx,
1843             _("%^s¤Ï´°Á´¤Ë¼£¤Ã¤¿¤è¤¦¤À¡ª", "%^s sounds completely healed!"),
1844             _("%^s¤Ï´°Á´¤Ë¼£¤Ã¤¿¤è¤¦¤À¡ª", "%^s sounds completely healed!"),
1845             _("%^s¤Ï´°Á´¤Ë¼£¤Ã¤¿¡ª", "%^s looks completely healed!"),
1846             _("%^s¤Ï´°Á´¤Ë¼£¤Ã¤¿¡ª", "%^s looks completely healed!"),
1847             !seen, TARGET_TYPE);
1848     }
1849
1850     /* Partially healed */
1851     else
1852     {
1853         /* Message */
1854         monspell_message_base(m_idx, t_idx,
1855             _("%^s¤ÏÂÎÎϤò²óÉü¤·¤¿¤è¤¦¤À¡£", "%^s sounds healthier."),
1856             _("%^s¤ÏÂÎÎϤò²óÉü¤·¤¿¤è¤¦¤À¡£", "%^s sounds healthier."),
1857             _("%^s¤ÏÂÎÎϤò²óÉü¤·¤¿¤è¤¦¤À¡£", "%^s looks healthier."),
1858             _("%^s¤ÏÂÎÎϤò²óÉü¤·¤¿¤è¤¦¤À¡£", "%^s looks healthier."),
1859             !seen, TARGET_TYPE);
1860     }
1861
1862     /* Redraw (later) if needed */
1863     if (p_ptr->health_who == m_idx) p_ptr->redraw |= (PR_HEALTH);
1864     if (p_ptr->riding == m_idx) p_ptr->redraw |= (PR_UHEALTH);
1865
1866     /* Cancel fear */
1867     if (MON_MONFEAR(m_ptr))
1868     {
1869         /* Cancel fear */
1870         (void)set_monster_monfear(m_idx, 0);
1871
1872         /* Message */
1873         if (see_monster(m_idx))
1874             msg_format(_("%^s¤Ïͦµ¤¤ò¼è¤êÌᤷ¤¿¡£", "%^s recovers %s courage."), m_name);
1875     }
1876 }
1877
1878 /*!
1879 * @brief RF6_INVULNER¤Î½èÍý¡£ÌµÅ¨¡£ /
1880 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1881 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
1882 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1883 */
1884 void spell_RF6_INVULNER(int m_idx, int t_idx, int TARGET_TYPE)
1885 {
1886     monster_type    *m_ptr = &m_list[m_idx];
1887     bool seen = (!p_ptr->blind && m_ptr->ml);
1888
1889     /* Message */
1890         monspell_message_base(m_idx, t_idx,
1891             _("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."),
1892             _("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."),
1893             _("%s¤Ï̵½ý¤Îµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a Globe of Invulnerability."),
1894             _("%s¤Ï̵½ý¤Îµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a Globe of Invulnerability."),
1895             !seen, TARGET_TYPE);
1896
1897     if (!MON_INVULNER(m_ptr)) (void)set_monster_invulner(m_idx, randint1(4) + 4, FALSE);
1898 }
1899
1900 /*!
1901 * @brief RF6_BLINK¤Î½èÍý¡£¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È¡£ /
1902 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1903 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1904 */
1905 void spell_RF6_BLINK(int m_idx, int TARGET_TYPE)
1906 {
1907         char m_name[80];
1908     monster_name(m_idx, m_name);
1909         
1910         if (TARGET_TYPE==MONSTER_TO_PLAYER)
1911                 disturb(1, 1);
1912
1913     if (teleport_barrier(m_idx))
1914     {
1915                 if(see_monster(m_idx))
1916                 msg_format(_("ËâË¡¤Î¥Ð¥ê¥¢¤¬%^s¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¼ÙË⤷¤¿¡£",
1917                                                  "Magic barrier obstructs teleporting of %^s."), m_name);
1918     }
1919     else
1920     {
1921                 if(see_monster(m_idx))
1922                 msg_format(_("%^s¤¬½Ö»þ¤Ë¾Ã¤¨¤¿¡£", "%^s blinks away."), m_name);
1923
1924         teleport_away(m_idx, 10, 0L);
1925
1926                 if (TARGET_TYPE==MONSTER_TO_PLAYER)
1927                 p_ptr->update |= (PU_MONSTERS);
1928     }
1929 }
1930
1931 /*!
1932 * @brief RF6_TPORT¤Î½èÍý¡£¥Æ¥ì¥Ý¡¼¥È¡£ /
1933 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1934 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
1935 */
1936 void spell_RF6_TPORT(int m_idx, int TARGET_TYPE)
1937 {       
1938         char m_name[80];
1939     monster_name(m_idx, m_name);
1940         
1941         if (TARGET_TYPE==MONSTER_TO_PLAYER)
1942                 disturb(1, 1);
1943     if (teleport_barrier(m_idx))
1944     {
1945                 if(see_monster(m_idx))
1946                         msg_format(_("ËâË¡¤Î¥Ð¥ê¥¢¤¬%^s¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¼ÙË⤷¤¿¡£",
1947                                                  "Magic barrier obstructs teleporting of %^s."), m_name);
1948     }
1949     else
1950     {
1951                 if(see_monster(m_idx))
1952                         msg_format(_("%^s¤¬¥Æ¥ì¥Ý¡¼¥È¤·¤¿¡£", "%^s teleports away."), m_name);
1953
1954         teleport_away_followable(m_idx);
1955     }
1956 }
1957
1958 /*!
1959 * @brief RF6_WORLD¤Î½èÍý¡£»þ¤ò»ß¤á¤ë¡£ /
1960 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1961 */
1962 int spell_RF6_WORLD(int m_idx)
1963 {
1964     monster_type    *m_ptr = &m_list[m_idx];
1965     int who = 0;
1966         char m_name[80];
1967     monster_name(m_idx, m_name);
1968
1969     disturb(1, 1);
1970     if (m_ptr->r_idx == MON_DIO) who = 1;
1971     else if (m_ptr->r_idx == MON_WONG) who = 3;
1972     if (!process_the_world(randint1(2) + 2, who, TRUE)) return (FALSE);
1973     return who;
1974 }
1975
1976 /*!
1977 * @brief ¥Ð¡¼¥Î¡¼¥ë¡¦¥ë¥Ñ¡¼¥È¤ÎRF6_SPECIAL¤Î½èÍý¡£Ê¬Îö¡¦¹çÂΡ£ /
1978 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
1979 */
1980 int spell_RF6_SPECIAL_BANORLUPART(int m_idx)
1981 {
1982     monster_type    *m_ptr = &m_list[m_idx];
1983         int dummy_hp, dummy_maxhp, k;
1984         int dummy_y = m_ptr->fy;
1985     int dummy_x = m_ptr->fx;
1986     u32b mode = 0L;
1987
1988         switch(m_ptr->r_idx)
1989         {
1990                 case MON_BANORLUPART:
1991                         dummy_hp = (m_ptr->hp + 1) / 2;
1992                         dummy_maxhp = m_ptr->maxhp / 2;
1993                         
1994                         if (p_ptr->inside_arena || p_ptr->inside_battle || !summon_possible(m_ptr->fy, m_ptr->fx)) 
1995                                 return -1;
1996
1997                         delete_monster_idx(cave[m_ptr->fy][m_ptr->fx].m_idx);
1998                         summon_named_creature(0, dummy_y, dummy_x, MON_BANOR, mode);
1999                         m_list[hack_m_idx_ii].hp = dummy_hp;
2000                         m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
2001                         summon_named_creature(0, dummy_y, dummy_x, MON_LUPART, mode);
2002                         m_list[hack_m_idx_ii].hp = dummy_hp;
2003                         m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
2004
2005                         msg_print(_("¡Ø¥Ð¡¼¥Î¡¼¥ë¡¦¥ë¥Ñ¡¼¥È¡Ù¤¬Ê¬Îö¤·¤¿¡ª","Banor=Rupart splits in two person!"));
2006                         break;
2007                 
2008         case MON_BANOR:
2009         case MON_LUPART:
2010             dummy_hp = 0;
2011             dummy_maxhp = 0;
2012
2013             if (!r_info[MON_BANOR].cur_num || !r_info[MON_LUPART].cur_num) 
2014                                 return -1;
2015
2016             for (k = 1; k < m_max; k++)
2017             {
2018                 if (m_list[k].r_idx == MON_BANOR || m_list[k].r_idx == MON_LUPART)
2019                 {
2020                     dummy_hp += m_list[k].hp;
2021                     dummy_maxhp += m_list[k].maxhp;
2022                     if (m_list[k].r_idx != m_ptr->r_idx)
2023                     {
2024                         dummy_y = m_list[k].fy;
2025                         dummy_x = m_list[k].fx;
2026                     }
2027                     delete_monster_idx(k);
2028                 }
2029             }
2030             summon_named_creature(0, dummy_y, dummy_x, MON_BANORLUPART, mode);
2031             m_list[hack_m_idx_ii].hp = dummy_hp;
2032             m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
2033
2034             msg_print(_("¡Ø¥Ð¡¼¥Î¡¼¥ë¡Ù¤È¡Ø¥ë¥Ñ¡¼¥È¡Ù¤¬¹çÂΤ·¤¿¡ª", "Banor and Rupart combine into one!"));
2035             break;
2036         }
2037         return 0;
2038 }
2039
2040 /*!
2041 * @brief ¥í¥ì¥ó¥È¤ÎRF6_SPECIAL¤Î½èÍý¡£¼êÜØÃƤξ¤´­¡£ /
2042 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2043 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2044 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2045 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
2046 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
2047 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
2048 */
2049 int spell_RF6_SPECIAL_ROLENTO(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
2050 {
2051         int count = 0, k;
2052     int num = 1 + randint1(3);
2053     u32b mode = 0L;
2054         
2055         monspell_message(m_idx, t_idx,
2056                 _("%^s¤¬²¿¤«ÂçÎ̤ËÅꤲ¤¿¡£", "%^s spreads something."),
2057                 _("%^s¤Ï¼êÜØÃƤò¤Ð¤é¤Þ¤¤¤¿¡£", "%^s throws some hand grenades."),
2058         _("%^s¤Ï¼êÜØÃƤò¤Ð¤é¤Þ¤¤¤¿¡£", "%^s throws some hand grenades."),
2059         TARGET_TYPE);
2060
2061         for (k = 0; k < num; k++)
2062         {
2063                 count += summon_named_creature(m_idx, y, x, MON_SHURYUUDAN, mode);
2064         }
2065         
2066         if (p_ptr->blind && count)
2067                 msg_print(_("¿¤¯¤Î¤â¤Î¤¬´Ö¶á¤Ë¤Ð¤é¤Þ¤«¤ì¤ë²»¤¬¤¹¤ë¡£", "You hear many things are scattered nearby."));
2068         
2069         return 0;
2070 }
2071
2072 /*!
2073 * @brief B¥·¥ó¥Ü¥ë¤ÎRF6_SPECIAL¤Î½èÍý¡£ÅꤲÍî¤È¤¹¹¶·â¡£ /
2074 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2075 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2076 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2077 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
2078 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
2079 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
2080 */
2081 int spell_RF6_SPECIAL_B(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
2082 {
2083         int dam;
2084     monster_type    *m_ptr = &m_list[m_idx];
2085     monster_type    *t_ptr = &m_list[t_idx];
2086     monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
2087         bool monster_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
2088         bool monster_to_monster = (TARGET_TYPE == MONSTER_TO_MONSTER);
2089     bool direct = player_bold(y, x);
2090         char m_name[80];
2091     monster_name(m_idx, m_name);
2092
2093         disturb(1, 1);
2094         if (one_in_(3) || !direct)
2095         {               
2096                 simple_monspell_message(m_idx, t_idx,
2097                         _("%^s¤ÏÆÍÁ³»ë³¦¤«¤é¾Ã¤¨¤¿!", "%^s suddenly go out of your sight!"),
2098                         _("%^s¤ÏÆÍÁ³µÞ¾å¾º¤·¤Æ»ë³¦¤«¤é¾Ã¤¨¤¿!", "%^s suddenly go out of your sight!"),
2099                         TARGET_TYPE);
2100                                 
2101                 teleport_away(m_idx, 10, TELEPORT_NONMAGICAL);
2102                 p_ptr->update |= (PU_MONSTERS);
2103         }
2104         else
2105         {
2106                 int get_damage = 0;
2107                 bool fear; /* dummy */
2108         
2109                 simple_monspell_message(m_idx, t_idx,
2110                         _("%^s¤¬¤¢¤Ê¤¿¤òÄϤó¤Ç¶õÃ椫¤éÅꤲÍî¤È¤·¤¿¡£", "%^s holds you, and drops from the sky."),
2111                         _("%^s¤¬%s¤òÄϤó¤Ç¶õÃ椫¤éÅꤲÍî¤È¤·¤¿¡£", "%^s holds %s, and drops from the sky."),
2112                         TARGET_TYPE);
2113
2114                 dam = damroll(4, 8);
2115
2116                 if (monster_to_player || t_idx == p_ptr->riding)
2117                         teleport_player_to(m_ptr->fy, m_ptr->fx, TELEPORT_NONMAGICAL | TELEPORT_PASSIVE);
2118                 else 
2119                         teleport_monster_to(t_idx, m_ptr->fy, m_ptr->fx, 100, TELEPORT_NONMAGICAL | TELEPORT_PASSIVE);
2120
2121                 sound(SOUND_FALL);
2122
2123                 if ((monster_to_player && p_ptr->levitation) ||
2124                         (monster_to_monster && (tr_ptr->flags7 & RF7_CAN_FLY)))
2125                 {
2126                         simple_monspell_message(m_idx, t_idx,
2127                                 _("¤¢¤Ê¤¿¤ÏÀŤ«¤ËÃåÃϤ·¤¿¡£", "You float gently down to the ground."),
2128                                 _("%^s¤ÏÀŤ«¤ËÃåÃϤ·¤¿¡£", "%^s floats gently down to the ground."),
2129                                 TARGET_TYPE);
2130                 }
2131                 else
2132                 {
2133                         simple_monspell_message(m_idx, t_idx,
2134                                 _("¤¢¤Ê¤¿¤ÏÃÏÌ̤Ë᤭¤Ä¤±¤é¤ì¤¿¡£", "You crashed into the ground."),
2135                                 _("%^s¤ÏÃÏÌ̤Ë᤭¤Ä¤±¤é¤ì¤¿¡£", "%^s crashed into the ground."),
2136                                 TARGET_TYPE);
2137                         dam += damroll(6, 8);
2138                 }
2139
2140                 if(monster_to_player ||
2141                    (monster_to_monster && p_ptr->riding == t_idx))
2142                 {
2143                         /* Mega hack -- this special action deals damage to the player. Therefore the code of "eyeeye" is necessary.
2144                         -- henkma
2145                         */
2146                         get_damage = take_hit(DAMAGE_NOESCAPE, dam, m_name, -1);
2147                         if (p_ptr->tim_eyeeye && get_damage > 0 && !p_ptr->is_dead)
2148                         {
2149                                 char m_name_self[80];
2150                                 /* hisself */
2151                                 monster_desc(m_name_self, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE | MD_OBJECTIVE);
2152
2153                                 msg_format(_("¹¶·â¤¬%s¼«¿È¤ò½ý¤Ä¤±¤¿¡ª", "The attack of %s has wounded %s!"), m_name, m_name_self);
2154
2155                                 project(0, 0, m_ptr->fy, m_ptr->fx, get_damage, GF_MISSILE, PROJECT_KILL, -1);
2156                                 set_tim_eyeeye(p_ptr->tim_eyeeye - 5, TRUE);
2157                         }
2158                 }
2159
2160                 if(monster_to_player && p_ptr->riding)
2161                         mon_take_hit_mon(p_ptr->riding, dam, &fear, extract_note_dies(real_r_ptr(&m_list[p_ptr->riding])), m_idx);
2162
2163                 if(monster_to_monster)
2164                         mon_take_hit_mon(t_idx, dam, &fear, extract_note_dies(real_r_ptr(t_ptr)), m_idx);
2165         }
2166         return dam;
2167 }
2168
2169 /*!
2170 * @brief RF6_SPECIAL¤Î½èÍý¡£¥â¥ó¥¹¥¿¡¼¤Î¼ïÎà¤Ë¤è¤Ã¤Æ¼Â½èÍý¤Ë¿¶¤êʬ¤±¤ë¡£ /
2171 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2172 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2173 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2174 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
2175 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
2176 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
2177 */
2178 int spell_RF6_SPECIAL(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
2179 {
2180     monster_type    *m_ptr = &m_list[m_idx];
2181     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
2182     u32b mode = 0L;
2183     int count=0;
2184
2185     disturb(1, 1);
2186     switch (m_ptr->r_idx)
2187     {
2188         case MON_OHMU:
2189             /* Moved to process_monster(), like multiplication */
2190             return -1;
2191
2192         case MON_BANORLUPART:
2193         case MON_BANOR:
2194         case MON_LUPART:
2195                         return spell_RF6_SPECIAL_BANORLUPART(m_idx);
2196
2197         case MON_ROLENTO:
2198                         return spell_RF6_SPECIAL_ROLENTO(y, x, m_idx, t_idx, TARGET_TYPE);
2199             break;
2200
2201         default:
2202         if (r_ptr->d_char == 'B')
2203         {
2204             return spell_RF6_SPECIAL_B(y, x, m_idx, t_idx, TARGET_TYPE);
2205             break;
2206         }
2207
2208         /* Something is wrong */
2209         else return -1;
2210     }
2211 }
2212
2213 /*!
2214 * @brief RF6_TELE_TO¤Î½èÍý¡£¥Æ¥ì¥Ý¡¼¥È¡¦¥Ð¥Ã¥¯¡£ /
2215 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2216 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
2217 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
2218 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
2219 */
2220 void spell_RF6_TELE_TO(int m_idx, int t_idx, int TARGET_TYPE)
2221 {
2222     monster_type    *m_ptr = &m_list[m_idx];
2223     monster_type    *t_ptr = &m_list[t_idx];
2224     monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
2225
2226         simple_monspell_message(m_idx, t_idx,
2227                 _("%^s¤¬¤¢¤Ê¤¿¤ò°ú¤­Ìᤷ¤¿¡£", "%^s commands you to return."),
2228                 _("%^s¤¬%s¤ò°ú¤­Ìᤷ¤¿¡£", "%^s commands %s to return."),
2229                 TARGET_TYPE);
2230         
2231         if (TARGET_TYPE == MONSTER_TO_PLAYER)
2232         {
2233                 teleport_player_to(m_ptr->fy, m_ptr->fx, TELEPORT_PASSIVE);
2234                 learn_spell(MS_TELE_TO);
2235         }
2236         else if (TARGET_TYPE == MONSTER_TO_MONSTER)
2237         {
2238                 bool resists_tele = FALSE;
2239                 char t_name[80];
2240                 monster_name(t_idx, t_name);
2241
2242                 if (tr_ptr->flagsr & RFR_RES_TELE)
2243                 {
2244                         if ((tr_ptr->flags1 & RF1_UNIQUE) || (tr_ptr->flagsr & RFR_RES_ALL))
2245                         {
2246                                 if (is_original_ap_and_seen(t_ptr)) tr_ptr->r_flagsr |= RFR_RES_TELE;
2247                                 if (see_monster(t_idx))
2248                                 {
2249                                         msg_format(_("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected!"), t_name);
2250                                 }
2251                                 resists_tele = TRUE;
2252                         }
2253                         else if (tr_ptr->level > randint1(100))
2254                         {
2255                                 if (is_original_ap_and_seen(t_ptr)) tr_ptr->r_flagsr |= RFR_RES_TELE;
2256                                 if (see_monster(t_idx))
2257                                 {
2258                                         msg_format(_("%^s¤ÏÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡ª", "%^s resists!"), t_name);
2259                                 }
2260                                 resists_tele = TRUE;
2261                         }
2262                 }
2263
2264                 if (!resists_tele)
2265                 {
2266                         if (t_idx == p_ptr->riding) 
2267                                 teleport_player_to(m_ptr->fy, m_ptr->fx, TELEPORT_PASSIVE);
2268                         else 
2269                                 teleport_monster_to(t_idx, m_ptr->fy, m_ptr->fx, 100, TELEPORT_PASSIVE);
2270                 }
2271         monster_wakeup(t_idx);
2272         }
2273 }
2274
2275 /*!
2276 * @brief RF6_TELE_AWAY¤Î½èÍý¡£¥Æ¥ì¥Ý¡¼¥È¡¦¥¢¥¦¥§¥¤¡£ /
2277 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2278 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
2279 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
2280 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
2281 */
2282 void spell_RF6_TELE_AWAY(int m_idx, int t_idx, int TARGET_TYPE)
2283 {
2284     monster_type    *m_ptr = &m_list[m_idx];
2285     monster_type    *t_ptr = &m_list[t_idx];
2286     monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
2287
2288         simple_monspell_message(m_idx, t_idx,
2289                 _("%^s¤Ë¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤é¤ì¤¿¡£", "%^s teleports you away."),
2290                 _("%^s¤Ï%s¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤¿¡£", "%^s teleports %s away."),
2291                 TARGET_TYPE);
2292         
2293         if (TARGET_TYPE == MONSTER_TO_PLAYER)
2294         {
2295                 if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON))
2296                         msg_print(_("¤¯¤Ã¤½¡Á", ""));
2297                 
2298                 learn_spell(MS_TELE_AWAY);
2299                 teleport_player_away(m_idx, 100);
2300         }
2301         else if (TARGET_TYPE == MONSTER_TO_MONSTER)
2302         {
2303                 bool resists_tele = FALSE;
2304                 char t_name[80];
2305                 monster_name(t_idx, t_name);
2306
2307                 if (tr_ptr->flagsr & RFR_RES_TELE)
2308                 {
2309                         if ((tr_ptr->flags1 & RF1_UNIQUE) || (tr_ptr->flagsr & RFR_RES_ALL))
2310                         {
2311                                 if (is_original_ap_and_seen(t_ptr)) tr_ptr->r_flagsr |= RFR_RES_TELE;
2312                                 if (see_monster(t_idx))
2313                                 {
2314                                         msg_format(_("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected!"), t_name);
2315                                 }
2316                                 resists_tele = TRUE;
2317                         }
2318                         else if (tr_ptr->level > randint1(100))
2319                         {
2320                                 if (is_original_ap_and_seen(t_ptr)) tr_ptr->r_flagsr |= RFR_RES_TELE;
2321                                 if (see_monster(t_idx))
2322                                 {
2323                                         msg_format(_("%^s¤ÏÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡ª", "%^s resists!"), t_name);
2324                                 }
2325                                 resists_tele = TRUE;
2326                         }
2327                 }
2328
2329                 if (!resists_tele)
2330                 {
2331                         if (t_idx == p_ptr->riding) 
2332                                 teleport_player_away(m_idx, MAX_SIGHT * 2 + 5);
2333                         else 
2334                                 teleport_away(t_idx, MAX_SIGHT * 2 + 5, TELEPORT_PASSIVE);
2335                 }
2336         monster_wakeup(t_idx);
2337         }
2338 }
2339
2340 /*!
2341 * @brief RF6_TELE_LEVEL¤Î½èÍý¡£¥Æ¥ì¥Ý¡¼¥È¡¦¥ì¥Ù¥ë¡£ /
2342 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2343 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
2344 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
2345 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
2346 */
2347 void spell_RF6_TELE_LEVEL(int m_idx, int t_idx, int TARGET_TYPE)
2348 {
2349     monster_type    *t_ptr = &m_list[t_idx];
2350     monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
2351     int rlev = monster_level_idx(m_idx);
2352     bool resist, saving_throw;
2353
2354     if (TARGET_TYPE == MONSTER_TO_PLAYER)
2355     {
2356         resist = p_ptr->resist_nexus;
2357         saving_throw = (randint0(100 + rlev / 2) < p_ptr->skill_sav);
2358         spell_badstatus_message(m_idx, t_idx,
2359             _("%^s¤¬²¿¤«´ñ̯¤Ê¸ÀÍÕ¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles strangely."),
2360             _("%^s¤¬¤¢¤Ê¤¿¤Î­¤ò»Ø¤µ¤·¤¿¡£", "%^s gestures at your feet."),
2361             _("¤·¤«¤·¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", "You are unaffected!"),
2362             _("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", "You resist the effects!"),
2363             resist, saving_throw, TARGET_TYPE);
2364
2365         if (!resist && !saving_throw)
2366         {
2367                         teleport_level(0);
2368         }
2369                 learn_spell(MS_TELE_LEVEL);
2370                 update_smart_learn(m_idx, DRS_NEXUS);
2371     }
2372     else if (TARGET_TYPE == MONSTER_TO_MONSTER)
2373     {
2374         resist = tr_ptr->flagsr & (RFR_EFF_RES_NEXU_MASK | RFR_RES_TELE);
2375         saving_throw = (tr_ptr->flags1 & RF1_QUESTOR) ||
2376                                    (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
2377
2378         spell_badstatus_message(m_idx, t_idx, 
2379             _("%^s¤¬%s¤Î­¤ò»Ø¤µ¤·¤¿¡£", "%^s gestures at %s's feet."),
2380             _("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected!"),
2381             _("%^s¤Ï¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", "%^s resist the effects!"),
2382             "",
2383             resist, saving_throw, TARGET_TYPE);
2384
2385         if (!resist && !saving_throw)
2386         {
2387                         teleport_level((t_idx == p_ptr->riding) ? 0 : t_idx);
2388         }
2389     }
2390 }
2391
2392 /*!
2393 * @brief RF6_PSY_SPEAR¤Î½èÍý¡£¸÷¤Î·õ¡£ /
2394 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2395 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2396 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2397 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
2398 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
2399 * @return ¥À¥á¡¼¥¸Î̤òÊÖ¤¹¡£
2400 */
2401 int spell_RF6_PSY_SPEAR(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
2402 {
2403     int dam;
2404     int rlev = monster_level_idx(m_idx);
2405
2406     monspell_message(m_idx, t_idx,
2407         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
2408         _("%^s¤¬¸÷¤Î·õ¤òÊü¤Ã¤¿¡£", "%^s throw a Psycho-Spear."),
2409         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¸÷¤Î·õ¤òÊü¤Ã¤¿¡£", "%^s throw a Psycho-spear at %s."),
2410         TARGET_TYPE);
2411
2412     dam = monspell_damage(monspell_num(RF6_SPELL_START, RF6_PSY_SPEAR), m_idx, DAM_ROLL);
2413     beam(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, MONSTER_TO_PLAYER);
2414     return dam;
2415 }
2416
2417 /*!
2418 * @brief RF6_DARKNESS¤Î½èÍý¡£°Å°ÇorÁ®¸÷¡£ /
2419 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2420 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2421 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2422 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
2423 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
2424 */
2425 void spell_RF6_DARKNESS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
2426 {
2427     monster_type    *m_ptr = &m_list[m_idx];
2428     monster_type    *t_ptr = &m_list[t_idx];
2429     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
2430     bool can_use_lite_area = FALSE;
2431         bool monster_to_monster = TARGET_TYPE == MONSTER_TO_MONSTER;
2432         bool monster_to_player = TARGET_TYPE == MONSTER_TO_PLAYER;
2433         char t_name[80];
2434         monster_name(t_idx, t_name);
2435
2436     if ((p_ptr->pclass == CLASS_NINJA) &&
2437         !(r_ptr->flags3 & (RF3_UNDEAD | RF3_HURT_LITE)) &&
2438         !(r_ptr->flags7 & RF7_DARK_MASK))
2439         can_use_lite_area = TRUE;
2440
2441         if(monster_to_monster && !is_hostile(t_ptr))
2442         can_use_lite_area = FALSE;
2443
2444         
2445         if (can_use_lite_area)
2446         {
2447                 monspell_message(m_idx, t_idx,
2448                         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
2449                         _("%^s¤¬ÊÕ¤ê¤òÌÀ¤ë¤¯¾È¤é¤·¤¿¡£", "%^s cast a spell to light up."),
2450                         _("%^s¤¬ÊÕ¤ê¤òÌÀ¤ë¤¯¾È¤é¤·¤¿¡£", "%^s cast a spell to light up."),
2451                         TARGET_TYPE);
2452
2453                 if (see_monster(t_idx) && monster_to_monster)
2454                 {
2455                         msg_format(_("%^s¤ÏÇò¤¤¸÷¤ËÊñ¤Þ¤ì¤¿¡£", "%^s is surrounded by a white light."), t_name);
2456                 }
2457         }
2458         else
2459         {
2460                 monspell_message(m_idx, t_idx,
2461                         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
2462                         _("%^s¤¬°Å°Ç¤ÎÃæ¤Ç¼ê¤ò¿¶¤Ã¤¿¡£", "%^s gestures in shadow."),
2463                         _("%^s¤¬°Å°Ç¤ÎÃæ¤Ç¼ê¤ò¿¶¤Ã¤¿¡£", "%^s gestures in shadow."),
2464                         TARGET_TYPE);
2465
2466                 if (see_monster(t_idx) && monster_to_monster)
2467                 {
2468                         msg_format(_("%^s¤Ï°Å°Ç¤ËÊñ¤Þ¤ì¤¿¡£", "%^s is surrounded by darkness."), t_name);
2469                 }
2470         }
2471
2472         if(monster_to_player)
2473         {
2474                 if (can_use_lite_area)
2475                 {
2476                         (void)lite_area(0, 3);
2477                 }
2478                 else
2479                 {
2480                         learn_spell(MS_DARKNESS);
2481                         (void)unlite_area(0, 3);
2482                 }
2483         }
2484         else if(monster_to_monster)
2485         {
2486                 if (can_use_lite_area)
2487                 {
2488                         (void)project(m_idx, 3, y, x, 0, GF_LITE_WEAK, PROJECT_GRID | PROJECT_KILL, -1);
2489                         lite_room(y, x);
2490                 }
2491                 else
2492                 {
2493                         (void)project(m_idx, 3, y, x, 0, GF_DARK_WEAK, PROJECT_GRID | PROJECT_KILL, MS_DARKNESS);
2494                         unlite_room(y, x);
2495                 }
2496         }
2497 }
2498
2499 /*!
2500 * @brief RF6_TRAPS¤Î½èÍý¡£¥È¥é¥Ã¥×¡£ /
2501 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2502 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2503 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2504 */
2505 void spell_RF6_TRAPS(int y, int x, int m_idx)
2506 {
2507         char m_name[80];
2508     monster_name(m_idx, m_name);
2509     disturb(1, 1);
2510
2511     if (p_ptr->blind)
2512         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤Æ¼Ù°­¤ËÈù¾Ð¤ó¤À¡£",
2513         "%^s mumbles, and then cackles evilly."), m_name);
2514     else
2515         msg_format(_("%^s¤¬¼öʸ¤ò¾§¤¨¤Æ¼Ù°­¤ËÈù¾Ð¤ó¤À¡£",
2516         "%^s casts a spell and cackles evilly."), m_name);
2517
2518     learn_spell(MS_MAKE_TRAP);
2519     (void)trap_creation(y, x);
2520 }
2521
2522 /*!
2523 * @brief RF6_FORGET¤Î½èÍý¡£µ­²±¾Ãµî¡£ /
2524 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2525 */
2526 void spell_RF6_FORGET(int m_idx)
2527 {
2528     int rlev = monster_level_idx(m_idx);
2529         char m_name[80];
2530     monster_name(m_idx, m_name);
2531
2532     disturb(1, 1);
2533
2534     msg_format(_("%^s¤¬¤¢¤Ê¤¿¤Îµ­²±¤ò¾Ãµî¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¡£",
2535         "%^s tries to blank your mind."), m_name);
2536
2537     if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
2538     {
2539         msg_print(_("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", "You resist the effects!"));
2540     }
2541     else if (lose_all_info())
2542     {
2543         msg_print(_("µ­²±¤¬Çö¤ì¤Æ¤·¤Þ¤Ã¤¿¡£", "Your memories fade away."));
2544     }
2545     learn_spell(MS_FORGET);
2546 }
2547
2548
2549 /*!
2550 * @brief RF6_RAISE_DEAD¤Î½èÍý¡£»à¼ÔÉü³è¡£ /
2551 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2552 * @param t_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID¡£¥×¥ì¥¤¥ä¡¼¤Î¾ì¹ç¤Ïdummy¤Ç0¤È¤¹¤ë¡£
2553 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
2554 */
2555 void spell_RF6_RAISE_DEAD(int m_idx, int t_idx, int TARGET_TYPE)
2556 {
2557     monster_type    *m_ptr = &m_list[m_idx];
2558
2559     monspell_message(m_idx, t_idx,
2560         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
2561         _("%^s¤¬»à¼ÔÉü³è¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a spell to revive corpses."),
2562         _("%^s¤¬»à¼ÔÉü³è¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a spell to revive corpses."),
2563         TARGET_TYPE);
2564
2565     animate_dead(m_idx, m_ptr->fy, m_ptr->fx);
2566 }
2567
2568
2569 /*!
2570 * @brief Â뾤´­¤Î½èÍý¡£ /
2571 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2572 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2573 * @param rlev ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼¤Î¥ì¥Ù¥ë
2574 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2575 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
2576 */
2577 int summon_EAGLE(int y, int x, int rlev, int m_idx)
2578 {
2579         int k, count = 0;       
2580         int num = 4 + randint1(3);
2581         for (k = 0; k < num; k++)
2582         {
2583                 count += summon_specific(m_idx, y, x, rlev, SUMMON_EAGLES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2584         }
2585         return count;
2586 }
2587
2588 /*!
2589 * @brief ¥¤¥ó¥¿¡¼¥Í¥Ã¥È¡¦¥¨¥¯¥¹¥×¥í¡¼¥À¡¼¾¤´­¤Î½èÍý¡£ /
2590 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2591 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2592 * @param rlev ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼¤Î¥ì¥Ù¥ë
2593 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2594 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
2595 */
2596 int summon_IE(int y, int x, int rlev, int m_idx)
2597 {
2598     u32b mode = 0L;
2599         int k, count = 0;       
2600         int num = 2 + randint1(3);
2601     for (k = 0; k < num; k++)
2602     {
2603         count += summon_named_creature(m_idx, y, x, MON_IE, mode);
2604     }
2605         return count;
2606 }
2607
2608 /*!
2609 * @brief ¥À¥ó¥¸¥ç¥ó¡¦¥¬¡¼¥Ç¥£¥¢¥ó¾¤´­¤Î½èÍý¡£ /
2610 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2611 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2612 * @param rlev ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼¤Î¥ì¥Ù¥ë
2613 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2614 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
2615 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
2616 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
2617 */
2618 int summon_Guardian(int y, int x, int rlev, int m_idx, int t_idx, int TARGET_TYPE)
2619 {
2620         int k, count = 0;       
2621         int num = 2 + randint1(3);
2622     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
2623     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
2624
2625     if (r_info[MON_JORMUNGAND].cur_num < r_info[MON_JORMUNGAND].max_num && one_in_(6))
2626     {
2627                 simple_monspell_message(m_idx, t_idx,
2628                         _("ÃÏÌ̤«¤é¿å¤¬¿á¤­½Ð¤·¤¿¡ª", "Water blew off from the ground!"),
2629                         _("ÃÏÌ̤«¤é¿å¤¬¿á¤­½Ð¤·¤¿¡ª", "Water blew off from the ground!"),
2630                         TARGET_TYPE);
2631
2632                 if(mon_to_player)
2633                 fire_ball_hide(GF_WATER_FLOW, 0, 3, 8);
2634                 else if(mon_to_mon)
2635                         project(t_idx, 8, y, x, 3, GF_WATER_FLOW, PROJECT_GRID | PROJECT_HIDE, -1);
2636     }
2637
2638     for (k = 0; k < num; k++)
2639     {
2640         count += summon_specific(m_idx, y, x, rlev, SUMMON_GUARDIANS, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2641     }
2642         return count;
2643 }
2644
2645 /*!
2646 * @brief ¥í¥Ã¥¯¤Î¥¯¥í¡¼¥ó¾¤´­¤Î½èÍý¡£ /
2647 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2648 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2649 * @param rlev ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼¤Î¥ì¥Ù¥ë
2650 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2651 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
2652 */
2653 int summon_LOCK_CLONE(int y, int x, int rlev, int m_idx)
2654 {
2655     u32b mode = 0L;
2656         int k, count = 0;
2657         int num = randint1(3);
2658     for (k = 0; k < num; k++)
2659     {
2660         count += summon_named_creature(m_idx, y, x, MON_LOCKE_CLONE, mode);
2661     }
2662         return count;
2663 }
2664
2665 /*!
2666 * @brief ¥·¥é¥ß¾¤´­¤Î½èÍý¡£ /
2667 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2668 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2669 * @param rlev ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼¤Î¥ì¥Ù¥ë
2670 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2671 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
2672 */
2673 int summon_LOUSE(int y, int x, int rlev, int m_idx)
2674 {
2675         int k, count = 0;       
2676         int num = 2 + randint1(3);
2677     for (k = 0; k < num; k++)
2678     {
2679         count += summon_specific(m_idx, y, x, rlev, SUMMON_LOUSE, PM_ALLOW_GROUP);
2680     }
2681         return count;
2682 }
2683
2684 /*!
2685 * @brief µß±ç¾¤´­¤ÎÄ̾ï½èÍý¡£Æ±¥·¥ó¥Ü¥ë¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¤´­¤¹¤ë¡£ /
2686 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2687 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2688 * @param rlev ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼¤Î¥ì¥Ù¥ë
2689 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2690 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
2691 */
2692 int summon_Kin(int y, int x, int rlev, int m_idx)
2693 {
2694         int k, count = 0;
2695     monster_type    *m_ptr = &m_list[m_idx];
2696     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
2697         summon_kin_type = r_ptr->d_char; /* Big hack */
2698
2699         for (k = 0; k < 4; k++)
2700         {
2701                 count += summon_specific(m_idx, y, x, rlev, SUMMON_KIN, PM_ALLOW_GROUP);
2702         }
2703         return count;
2704 }
2705
2706 /*!
2707 * @brief RF6_S_KIN¤Î½èÍý¡£µß±ç¾¤´­¡£»ÈÍѤ¹¤ë¥â¥ó¥¹¥¿¡¼¤Î¼ïÎà¤Ë¤è¤ê¡¢¼Â½èÍý¤Ëʬ´ô¤µ¤»¤ë¡£ /
2708 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2709 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2710 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2711 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
2712 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
2713 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
2714 */
2715 void spell_RF6_S_KIN(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
2716 {
2717         bool known = monster_near_player(m_idx, t_idx);
2718     bool see_either = see_monster(m_idx) || see_monster(t_idx);
2719     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
2720     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
2721     monster_type    *m_ptr = &m_list[m_idx];
2722     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
2723     int rlev = monster_level_idx(m_idx);
2724     int count = 0;
2725     u32b mode = 0L;
2726         char m_name[80], t_name[80], m_poss[80];
2727     monster_name(m_idx, m_name);
2728         monster_name(t_idx, t_name);
2729         monster_desc(m_poss, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE);
2730
2731     disturb(1, 1);
2732     if (m_ptr->r_idx == MON_SERPENT || m_ptr->r_idx == MON_ZOMBI_SERPENT)
2733     {
2734                 monspell_message(m_idx, t_idx,
2735                         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
2736                         _("%^s¤¬¥À¥ó¥¸¥ç¥ó¤Î¼ç¤ò¾¤´­¤·¤¿¡£", "%^s magically summons guardians of dungeons."),
2737                         _("%^s¤¬¥À¥ó¥¸¥ç¥ó¤Î¼ç¤ò¾¤´­¤·¤¿¡£", "%^s magically summons guardians of dungeons."),
2738                         TARGET_TYPE);
2739     }
2740     else
2741     {
2742                 if (mon_to_player || (mon_to_mon && known && see_either))
2743                         disturb(1, 1);
2744
2745                 if (p_ptr->blind)
2746                 {
2747                         if (mon_to_player)
2748                                 msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
2749                 }
2750                 else
2751                 {
2752                         if (mon_to_player || (mon_to_mon && known && see_either))
2753                         {
2754                                 _(msg_format("%s¤¬ËâË¡¤Ç%s¤ò¾¤´­¤·¤¿¡£", m_name, ((r_ptr->flags1 & RF1_UNIQUE) ? "¼ê²¼" : "Ãç´Ö")),
2755                                   msg_format("%^s magically summons %s %s.", m_name, m_poss, ((r_ptr->flags1 & RF1_UNIQUE) ? "minions" : "kin")));
2756                         }
2757                 }
2758
2759                 if (mon_to_mon && known && !see_either)
2760                         mon_fight = TRUE;
2761     }
2762
2763     switch (m_ptr->r_idx)
2764     {
2765         case MON_MENELDOR:
2766         case MON_GWAIHIR:
2767         case MON_THORONDOR:
2768                         count += summon_EAGLE(y, x, rlev, m_idx);
2769                         break;
2770
2771         case MON_BULLGATES:
2772                         count += summon_IE(y, x, rlev, m_idx);
2773                 break;
2774
2775         case MON_SERPENT:
2776         case MON_ZOMBI_SERPENT:
2777                         count += summon_Guardian(y, x, rlev, m_idx, t_idx, TARGET_TYPE);
2778                 break;
2779                         
2780         case MON_CALDARM:
2781                         count += summon_LOCK_CLONE(y, x, rlev, m_idx);
2782                         break;
2783
2784         case MON_LOUSY:
2785                         count += summon_LOUSE(y, x, rlev, m_idx);
2786                 break;
2787
2788         default:
2789                         count += summon_Kin(y, x, rlev, m_idx);
2790                         break;
2791     }
2792     
2793     if (p_ptr->blind && count && mon_to_player)
2794         msg_print(_("¿¤¯¤Î¤â¤Î¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear many things appear nearby."));
2795
2796         if (known && !see_monster(t_idx) && count && mon_to_mon)
2797                 mon_fight = TRUE;
2798 }
2799
2800 /*!
2801 * @brief RF6_S_CYBER¤Î½èÍý¡£¥µ¥¤¥Ð¡¼¡¦¥Ç¡¼¥â¥ó¾¤´­¡£ /
2802 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2803 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2804 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2805 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
2806 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
2807 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
2808 */
2809 void spell_RF6_S_CYBER(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
2810 {
2811     int count = 0;
2812     monster_type    *m_ptr = &m_list[m_idx];
2813     int rlev = monster_level_idx(m_idx);
2814     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
2815     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
2816         
2817         monspell_message(m_idx, t_idx,
2818                 _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
2819                 _("%^s¤¬¥µ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons Cyberdemons!"),
2820                 _("%^s¤¬¥µ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons Cyberdemons!"),
2821                 TARGET_TYPE);
2822
2823         if (is_friendly(m_ptr) && mon_to_mon)
2824         {
2825                 count += summon_specific(m_idx, y, x, rlev, SUMMON_CYBER, (PM_ALLOW_GROUP));
2826         }
2827         else
2828         {
2829                 count += summon_cyber(m_idx, y, x);
2830         }
2831
2832     if (p_ptr->blind && count && mon_to_player)
2833         msg_print(_("½Å¸ü¤Ê­²»¤¬¶á¤¯¤Çʹ¤³¤¨¤ë¡£", "You hear heavy steps nearby."));
2834         
2835         if (monster_near_player(m_idx, t_idx) && !see_monster(t_idx) && count && mon_to_mon)
2836                 mon_fight = TRUE;
2837 }
2838
2839 /*!
2840 * @brief RF6_S_MONSTER¤Î½èÍý¡£¥â¥ó¥¹¥¿¡¼°ìÂξ¤´­¡£ /
2841 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2842 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2843 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2844 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
2845 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
2846 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
2847 */
2848 void spell_RF6_S_MONSTER(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
2849 {
2850     int count = 0, k;
2851     monster_type    *m_ptr = &m_list[m_idx];
2852     int rlev = monster_level_idx(m_idx);
2853     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
2854     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
2855         
2856         monspell_message(m_idx, t_idx,
2857                 _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
2858                 _("%^s¤¬ËâË¡¤ÇÃç´Ö¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons help!"),
2859                 _("%^s¤¬ËâË¡¤ÇÃç´Ö¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons help!"),
2860                 TARGET_TYPE);
2861
2862     for (k = 0; k < 1; k++)
2863     {
2864                 if(mon_to_player)
2865                 count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2866
2867                 if(mon_to_mon)
2868                         count += summon_specific(m_idx, y, x, rlev, 0, (monster_u_mode(m_idx)));
2869     }
2870
2871     if (p_ptr->blind && count && mon_to_player)
2872         msg_print(_("²¿¤«¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear something appear nearby."));
2873         
2874         if (monster_near_player(m_idx, t_idx) && !see_monster(t_idx) && count && mon_to_mon)
2875                 mon_fight = TRUE;
2876 }
2877
2878 /*!
2879 * @brief RF6_S_MONSTERS¤Î½èÍý¡£¥â¥ó¥¹¥¿¡¼Ê£¿ô¾¤´­¡£ /
2880 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2881 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2882 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2883 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
2884 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
2885 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
2886 */
2887 void spell_RF6_S_MONSTERS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
2888 {
2889     int count = 0, k;
2890     monster_type    *m_ptr = &m_list[m_idx];
2891     int rlev = monster_level_idx(m_idx);
2892     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
2893     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
2894         
2895         monspell_message(m_idx, t_idx,
2896                 _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
2897                 _("%^s¤¬ËâË¡¤Ç¥â¥ó¥¹¥¿¡¼¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons monsters!"),
2898                 _("%^s¤¬ËâË¡¤Ç¥â¥ó¥¹¥¿¡¼¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons monsters!"),
2899                 TARGET_TYPE);
2900         
2901     for (k = 0; k < S_NUM_6; k++)
2902     {
2903                 if(mon_to_player)
2904                         count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2905
2906                 if(mon_to_mon)
2907                         count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | monster_u_mode(m_idx)));
2908     }
2909
2910     if (p_ptr->blind && count && mon_to_player)
2911         msg_print(_("¿¤¯¤Î¤â¤Î¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear many things appear nearby."));
2912         
2913         if (monster_near_player(m_idx, t_idx) && !see_monster(t_idx) && count && mon_to_mon)
2914                 mon_fight = TRUE;
2915 }
2916
2917 /*!
2918 * @brief RF6_S_ANT¤Î½èÍý¡£¥¢¥ê¾¤´­¡£ /
2919 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2920 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2921 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2922 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
2923 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
2924 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
2925 */
2926 void spell_RF6_S_ANT(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
2927 {
2928     int count = 0, k;
2929     monster_type    *m_ptr = &m_list[m_idx];
2930     int rlev = monster_level_idx(m_idx);
2931     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
2932     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
2933         
2934         monspell_message(m_idx, t_idx,
2935                 _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
2936                 _("%^s¤¬ËâË¡¤Ç¥¢¥ê¤ò¾¤´­¤·¤¿¡£", "%^s magically summons ants."),
2937                 _("%^s¤¬ËâË¡¤Ç¥¢¥ê¤ò¾¤´­¤·¤¿¡£", "%^s magically summons ants."),
2938                 TARGET_TYPE);
2939         
2940     for (k = 0; k < S_NUM_6; k++)
2941     {
2942         count += summon_specific(m_idx, y, x, rlev, SUMMON_ANT, PM_ALLOW_GROUP);
2943     }
2944
2945     if (p_ptr->blind && count && mon_to_player)
2946         msg_print(_("¿¤¯¤Î¤â¤Î¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear many things appear nearby."));
2947         
2948         if (monster_near_player(m_idx, t_idx) && !see_monster(t_idx) && count && mon_to_mon)
2949                 mon_fight = TRUE;
2950 }
2951
2952 /*!
2953 * @brief RF6_S_SPIDER¤Î½èÍý¡£¥¯¥â¾¤´­¡£ /
2954 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2955 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2956 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2957 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
2958 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
2959 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
2960 */
2961 void spell_RF6_S_SPIDER(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
2962 {
2963     int count = 0, k;
2964     monster_type    *m_ptr = &m_list[m_idx];
2965     int rlev = monster_level_idx(m_idx);
2966     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
2967     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
2968         
2969         monspell_message(m_idx, t_idx,
2970                 _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
2971                 _("%^s¤¬ËâË¡¤Ç¥¯¥â¤ò¾¤´­¤·¤¿¡£", "%^s magically summons spiders."),
2972                 _("%^s¤¬ËâË¡¤Ç¥¯¥â¤ò¾¤´­¤·¤¿¡£", "%^s magically summons spiders."),
2973                 TARGET_TYPE);
2974         
2975     for (k = 0; k < S_NUM_6; k++)
2976     {
2977         count += summon_specific(m_idx, y, x, rlev, SUMMON_SPIDER, PM_ALLOW_GROUP);
2978     }
2979
2980     if (p_ptr->blind && count && mon_to_player)
2981         msg_print(_("¿¤¯¤Î¤â¤Î¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear many things appear nearby."));
2982         
2983         if (monster_near_player(m_idx, t_idx) && !see_monster(t_idx) && count && mon_to_mon)
2984                 mon_fight = TRUE;
2985 }
2986
2987 /*!
2988 * @brief RF6_S_HOUND¤Î½èÍý¡£¥Ï¥¦¥ó¥É¾¤´­¡£ /
2989 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
2990 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
2991 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
2992 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
2993 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
2994 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
2995 */
2996 void spell_RF6_S_HOUND(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
2997 {
2998     int count = 0, k;
2999     monster_type    *m_ptr = &m_list[m_idx];
3000     int rlev = monster_level_idx(m_idx);
3001     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
3002     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
3003         
3004         monspell_message(m_idx, t_idx,
3005                 _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
3006                 _("%^s¤¬ËâË¡¤Ç¥Ï¥¦¥ó¥É¤ò¾¤´­¤·¤¿¡£", "%^s magically summons hounds."),
3007                 _("%^s¤¬ËâË¡¤Ç¥Ï¥¦¥ó¥É¤ò¾¤´­¤·¤¿¡£", "%^s magically summons hounds."),
3008                 TARGET_TYPE);
3009         
3010         for (k = 0; k < S_NUM_4; k++)
3011     {
3012         count += summon_specific(m_idx, y, x, rlev, SUMMON_HOUND, PM_ALLOW_GROUP);
3013     }
3014
3015     if (p_ptr->blind && count && mon_to_player)
3016         msg_print(_("¿¤¯¤Î¤â¤Î¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear many things appear nearby."));
3017         
3018         if (monster_near_player(m_idx, t_idx) && !see_monster(t_idx) && count && mon_to_mon)
3019                 mon_fight = TRUE;
3020 }
3021
3022 /*!
3023 * @brief RF6_S_HYDRA¤Î½èÍý¡£¥Ò¥É¥é¾¤´­¡£ /
3024 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
3025 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
3026 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
3027 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
3028 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
3029 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
3030 */
3031 void spell_RF6_S_HYDRA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
3032 {
3033     int count = 0, k;
3034     monster_type    *m_ptr = &m_list[m_idx];
3035     int rlev = monster_level_idx(m_idx);
3036     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
3037     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
3038         
3039         monspell_message(m_idx, t_idx,
3040                 _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
3041                 _("%^s¤¬ËâË¡¤Ç¥Ò¥É¥é¤ò¾¤´­¤·¤¿¡£", "%^s magically summons hydras."),
3042                 _("%^s¤¬ËâË¡¤Ç¥Ò¥É¥é¤ò¾¤´­¤·¤¿¡£", "%^s magically summons hydras."),
3043                 TARGET_TYPE);
3044         
3045         for (k = 0; k < S_NUM_4; k++)
3046     {
3047         count += summon_specific(m_idx, y, x, rlev, SUMMON_HYDRA, PM_ALLOW_GROUP);
3048     }
3049
3050     if (p_ptr->blind && count && mon_to_player)
3051         msg_print(_("¿¤¯¤Î¤â¤Î¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear many things appear nearby."));
3052         
3053         if (monster_near_player(m_idx, t_idx) && !see_monster(t_idx) && count && mon_to_mon)
3054                 mon_fight = TRUE;
3055 }
3056
3057 /*!
3058 * @brief RF6_S_ANGEL¤Î½èÍý¡£Å·»È°ìÂξ¤´­¡£ /
3059 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
3060 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
3061 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
3062 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
3063 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
3064 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
3065 */
3066 void spell_RF6_S_ANGEL(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
3067 {
3068     int count = 0, k;
3069     int num = 1;
3070     monster_type    *m_ptr = &m_list[m_idx];
3071     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
3072     int rlev = monster_level_idx(m_idx);
3073     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
3074     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
3075         
3076         monspell_message(m_idx, t_idx,
3077                 _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
3078                 _("%^s¤¬ËâË¡¤ÇÅ·»È¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons an angel!"),
3079                 _("%^s¤¬ËâË¡¤ÇÅ·»È¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons an angel!"),
3080                 TARGET_TYPE);
3081         
3082     if ((r_ptr->flags1 & RF1_UNIQUE) && !easy_band)
3083     {
3084         num += r_ptr->level / 40;
3085     }
3086         
3087         for (k = 0; k < num; k++)
3088         {
3089         count += summon_specific(m_idx, y, x, rlev, SUMMON_ANGEL, PM_ALLOW_GROUP);
3090         }
3091         
3092     if (count < 2)
3093     {
3094         if (p_ptr->blind && count)
3095             msg_print(_("²¿¤«¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear something appear nearby."));
3096     }
3097     else
3098     {
3099         if (p_ptr->blind)
3100             msg_print(_("¿¤¯¤Î¤â¤Î¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear many things appear nearby."));
3101     }
3102         
3103         if (monster_near_player(m_idx, t_idx) && !see_monster(t_idx) && count && mon_to_mon)
3104                 mon_fight = TRUE;
3105 }
3106
3107 /*!
3108 * @brief RF6_S_DEMON¤Î½èÍý¡£¥Ç¡¼¥â¥ó°ìÂξ¤´­¡£ /
3109 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
3110 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
3111 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
3112 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
3113 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
3114 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
3115 */
3116 void spell_RF6_S_DEMON(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
3117 {
3118     int count = 0, k;
3119     monster_type    *m_ptr = &m_list[m_idx];
3120     int rlev = monster_level_idx(m_idx);
3121     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
3122     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
3123         
3124         monspell_message(m_idx, t_idx,
3125                 _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
3126                 _("%^s¤ÏËâË¡¤Çº®Æ٤εÜÄ¤é°­Ëâ¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons a demon from the Courts of Chaos!"),
3127                 _("%^s¤ÏËâË¡¤Çº®Æ٤εÜÄ¤é°­Ëâ¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons a demon from the Courts of Chaos!"),
3128                 TARGET_TYPE);
3129         
3130         for (k = 0; k < 1; k++)
3131         {
3132         count += summon_specific(m_idx, y, x, rlev, SUMMON_DEMON, PM_ALLOW_GROUP);
3133         }
3134         
3135     if (p_ptr->blind && count)
3136         msg_print(_("²¿¤«¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear something appear nearby."));
3137         
3138         if (monster_near_player(m_idx, t_idx) && !see_monster(t_idx) && count && mon_to_mon)
3139                 mon_fight = TRUE;
3140 }
3141
3142 /*!
3143 * @brief RF6_S_UNDEAD¤Î½èÍý¡£¥¢¥ó¥Ç¥Ã¥É°ìÂξ¤´­¡£ /
3144 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
3145 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
3146 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
3147 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
3148 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
3149 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
3150 */
3151 void spell_RF6_S_UNDEAD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
3152 {
3153     int count = 0, k;
3154     monster_type    *m_ptr = &m_list[m_idx];
3155     int rlev = monster_level_idx(m_idx);
3156     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
3157     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
3158         
3159         monspell_message(m_idx, t_idx,
3160                 _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
3161                 _("%^s¤¬ËâË¡¤Ç¥¢¥ó¥Ç¥Ã¥É¤Î¶¯Å¨¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons an undead adversary!"),
3162                 _("%s¤¬ËâË¡¤Ç¥¢¥ó¥Ç¥Ã¥É¤ò¾¤´­¤·¤¿¡£", "%^s magically summons undead."),
3163                 TARGET_TYPE);
3164         
3165         for (k = 0; k < 1; k++)
3166         {
3167         count += summon_specific(m_idx, y, x, rlev, SUMMON_UNDEAD, PM_ALLOW_GROUP);
3168         }
3169         
3170     if (p_ptr->blind && count)
3171         msg_print(_("²¿¤«¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear something appear nearby."));
3172         
3173         if (monster_near_player(m_idx, t_idx) && !see_monster(t_idx) && count && mon_to_mon)
3174                 mon_fight = TRUE;
3175 }
3176
3177 /*!
3178 * @brief RF6_S_DRAGON¤Î½èÍý¡£¥É¥é¥´¥ó°ìÂξ¤´­¡£ /
3179 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
3180 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
3181 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
3182 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
3183 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
3184 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
3185 */
3186 void spell_RF6_S_DRAGON(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
3187 {
3188     int count = 0, k;
3189     monster_type    *m_ptr = &m_list[m_idx];
3190     int rlev = monster_level_idx(m_idx);
3191     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
3192     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
3193         
3194         monspell_message(m_idx, t_idx,
3195                 _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
3196                 _("%^s¤¬ËâË¡¤Ç¥É¥é¥´¥ó¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons a dragon!"),
3197                 _("%^s¤¬ËâË¡¤Ç¥É¥é¥´¥ó¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons a dragon!"),
3198                 TARGET_TYPE);
3199         
3200         for (k = 0; k < 1; k++)
3201         {
3202         count += summon_specific(m_idx, y, x, rlev, SUMMON_DRAGON, PM_ALLOW_GROUP);
3203         }
3204         
3205     if (p_ptr->blind && count)
3206         msg_print(_("²¿¤«¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear something appear nearby."));
3207         
3208         if (monster_near_player(m_idx, t_idx) && !see_monster(t_idx) && count && mon_to_mon)
3209                 mon_fight = TRUE;
3210 }
3211
3212 /*!
3213 * @brief ¥Ê¥º¥°¥ëÀïÂ⾤´­¤Î½èÍý¡£ /
3214 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
3215 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
3216 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
3217 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
3218 */
3219 int summon_NAZGUL(int y, int x, int m_idx)
3220 {
3221     u32b mode = 0L;
3222         int count = 0, k;
3223         int cy = y;
3224     int cx = x;
3225         char m_name[80];
3226     monster_name(m_idx, m_name);
3227
3228     if (p_ptr->blind)
3229         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
3230     else
3231         msg_format(_("%^s¤¬ËâË¡¤ÇÍ©µ´ÀïÂâ¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons rangers of Nazgul!"), m_name);
3232
3233     msg_print(NULL);
3234
3235     for (k = 0; k < 30; k++)
3236     {
3237         if (!summon_possible(cy, cx) || !cave_empty_bold(cy, cx))
3238         {
3239             int j;
3240             for (j = 100; j > 0; j--)
3241             {
3242                 scatter(&cy, &cx, y, x, 2, 0);
3243                 if (cave_empty_bold(cy, cx)) break;
3244             }
3245             if (!j) break;
3246         }
3247         if (!cave_empty_bold(cy, cx)) continue;
3248
3249         if (summon_named_creature(m_idx, cy, cx, MON_NAZGUL, mode))
3250         {
3251             y = cy;
3252             x = cx;
3253             count++;
3254             if (count == 1)
3255                 msg_format(_("¡ÖÍ©µ´ÀïÂâ%d¹æ¡¢¥Ê¥º¥°¥ë¡¦¥Ö¥é¥Ã¥¯¡ª¡×",
3256                 "A Nazgul says 'Nazgul-Rangers Number %d, Nazgul-Black!'"), count);
3257             else
3258                 msg_format(_("¡ÖƱ¤¸¤¯%d¹æ¡¢¥Ê¥º¥°¥ë¡¦¥Ö¥é¥Ã¥¯¡ª¡×",
3259                 "Another one says 'Number %d, Nazgul-Black!'"), count);
3260
3261             msg_print(NULL);
3262         }
3263     }
3264     msg_format(_("¡Ö%d¿Í¤½¤í¤Ã¤Æ¡¢¥ê¥ó¥°¥ì¥ó¥¸¥ã¡¼¡ª¡×",
3265         "They say 'The %d meets! We are the Ring-Ranger!'."), count);
3266     msg_print(NULL);
3267         return count;
3268 }
3269
3270 /*!
3271 * @brief RF6_S_HI_UNDEAD¤Î½èÍý¡£¶¯ÎϤʥ¢¥ó¥Ç¥Ã¥É¾¤´­¡£ /
3272 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
3273 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
3274 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
3275 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
3276 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
3277 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
3278 */
3279 void spell_RF6_S_HI_UNDEAD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
3280 {
3281     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
3282     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
3283     monster_type    *m_ptr = &m_list[m_idx];
3284     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
3285     int rlev = monster_level_idx(m_idx);
3286     int k, count = 0;
3287         char m_name[80];
3288     monster_name(m_idx, m_name);
3289
3290     disturb(1, 1);
3291
3292     if (((m_ptr->r_idx == MON_MORGOTH) || (m_ptr->r_idx == MON_SAURON) || (m_ptr->r_idx == MON_ANGMAR)) &&
3293                 ((r_info[MON_NAZGUL].cur_num + 2) < r_info[MON_NAZGUL].max_num) &&
3294                 mon_to_player)
3295     {
3296         count +=  summon_NAZGUL(y, x, m_idx);
3297     }
3298     else
3299     {   
3300                 monspell_message(m_idx, t_idx,
3301                         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
3302                         _("%^s¤¬ËâË¡¤Ç¶¯ÎϤʥ¢¥ó¥Ç¥Ã¥É¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons greater undead!"),
3303                         _("%s¤¬ËâË¡¤Ç¥¢¥ó¥Ç¥Ã¥É¤ò¾¤´­¤·¤¿¡£", "%^s magically summons undead."),
3304                         TARGET_TYPE);
3305
3306         for (k = 0; k < S_NUM_6; k++)
3307         {
3308                         if(mon_to_player)
3309                     count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
3310
3311                         if(mon_to_mon)
3312                                 count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | monster_u_mode(m_idx)));
3313         }
3314     }
3315     if (p_ptr->blind && count && mon_to_player)
3316     {
3317         msg_print(_("´Ö¶á¤Ç²¿¤«Â¿¤¯¤Î¤â¤Î¤¬Ç礤²ó¤ë²»¤¬Ê¹¤³¤¨¤ë¡£", "You hear many creepy things appear nearby."));
3318     }
3319         
3320         if (monster_near_player(m_idx, t_idx) && !see_monster(t_idx) && count && mon_to_mon)
3321                 mon_fight = TRUE;
3322 }
3323
3324 /*!
3325 * @brief RF6_S_HI_DRAGON¤Î½èÍý¡£¸ÅÂå¥É¥é¥´¥ó¾¤´­¡£ /
3326 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
3327 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
3328 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
3329 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
3330 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
3331 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
3332 */
3333 void spell_RF6_S_HI_DRAGON(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
3334 {
3335     int count = 0, k;
3336     monster_type    *m_ptr = &m_list[m_idx];
3337     int rlev = monster_level_idx(m_idx);
3338     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
3339     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
3340         
3341         monspell_message(m_idx, t_idx,
3342                 _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
3343                 _("%^s¤¬ËâË¡¤Ç¸ÅÂå¥É¥é¥´¥ó¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons ancient dragons!"),
3344                 _("%^s¤¬ËâË¡¤Ç¸ÅÂå¥É¥é¥´¥ó¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons ancient dragons!"),
3345                 TARGET_TYPE);
3346         
3347     for (k = 0; k < S_NUM_4; k++)
3348     {   
3349                 if(mon_to_player)
3350                         count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_DRAGON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
3351
3352                 if(mon_to_mon)
3353                         count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_DRAGON, (PM_ALLOW_GROUP | monster_u_mode(m_idx)));
3354     }
3355         
3356     if (p_ptr->blind && count && mon_to_player)
3357     {
3358         msg_print(_("¿¤¯¤ÎÎ϶¯¤¤¤â¤Î¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬Ê¹¤³¤¨¤ë¡£", "You hear many powerful things appear nearby."));
3359     }
3360         
3361         if (monster_near_player(m_idx, t_idx) && !see_monster(t_idx) && count && mon_to_mon)
3362                 mon_fight = TRUE;
3363 }
3364
3365 /*!
3366 * @brief RF6_S_AMBERITES¤Î½èÍý¡£¥¢¥ó¥Ð¡¼¤Î²¦Â²¾¤´­¡£ /
3367 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
3368 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
3369 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
3370 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
3371 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
3372 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
3373 */
3374 void spell_RF6_S_AMBERITES(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
3375 {
3376     int count = 0, k;
3377     monster_type    *m_ptr = &m_list[m_idx];
3378     int rlev = monster_level_idx(m_idx);
3379     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
3380     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
3381         
3382         monspell_message(m_idx, t_idx,
3383                 _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
3384                 _("%^s¤¬¥¢¥ó¥Ð¡¼¤Î²¦Â²¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons Lords of Amber!"),
3385                 _("%^s¤¬¥¢¥ó¥Ð¡¼¤Î²¦Â²¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons Lords of Amber!"),
3386                 TARGET_TYPE);
3387         
3388     for (k = 0; k < S_NUM_4; k++)
3389     {   
3390                 count += summon_specific(m_idx, y, x, rlev, SUMMON_AMBERITES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
3391     }
3392         
3393     if (p_ptr->blind && count && mon_to_player)
3394     {
3395         msg_print(_("ÉÔ»à¤Î¼Ô¤¬¶á¤¯¤Ë¸½¤ì¤ë¤Î¤¬Ê¹¤³¤¨¤¿¡£", "You hear immortal beings appear nearby."));
3396     }
3397         
3398         if (monster_near_player(m_idx, t_idx) && !see_monster(t_idx) && count && mon_to_mon)
3399                 mon_fight = TRUE;
3400 }
3401
3402 /*!
3403 * @brief RF6_S_UNIQUE¤Î½èÍý¡£¥æ¥Ë¡¼¥¯¡¦¥â¥ó¥¹¥¿¡¼¾¤´­¡£ /
3404 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
3405 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
3406 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
3407 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
3408 * @param TARGET_TYPE ¥×¥ì¥¤¥ä¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_PLAYER¡¢¥â¥ó¥¹¥¿¡¼¤òÂоݤȤ¹¤ë¾ì¹çMONSTER_TO_MONSTER
3409 * @return ¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£
3410 */
3411 void spell_RF6_S_UNIQUE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
3412 {
3413     int count = 0, k;
3414     monster_type    *m_ptr = &m_list[m_idx];
3415     int rlev = monster_level_idx(m_idx);
3416     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
3417     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
3418     bool uniques_are_summoned = FALSE;
3419     int non_unique_type = SUMMON_HI_UNDEAD;
3420         
3421         monspell_message(m_idx, t_idx,
3422                 _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
3423                 _("%^s¤¬ËâË¡¤ÇÆÃÊ̤ʶ¯Å¨¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons special opponents!"),
3424                 _("%^s¤¬ËâË¡¤ÇÆÃÊ̤ʶ¯Å¨¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons special opponents!"),
3425                 TARGET_TYPE);
3426         
3427     for (k = 0; k < S_NUM_4; k++)
3428     {   
3429         count += summon_specific(m_idx, y, x, rlev, SUMMON_UNIQUE, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
3430     }
3431         
3432     if (count) uniques_are_summoned = TRUE;
3433
3434     if ((m_ptr->sub_align & (SUB_ALIGN_GOOD | SUB_ALIGN_EVIL)) == (SUB_ALIGN_GOOD | SUB_ALIGN_EVIL))
3435         non_unique_type = 0;
3436     else if (m_ptr->sub_align & SUB_ALIGN_GOOD)
3437         non_unique_type = SUMMON_ANGEL;
3438
3439     for (k = count; k < S_NUM_4; k++)
3440     {
3441         count += summon_specific(m_idx, y, x, rlev, non_unique_type, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
3442     }
3443
3444     if (p_ptr->blind && count && mon_to_player)
3445     {
3446         msg_format(_("¿¤¯¤Î%s¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬Ê¹¤³¤¨¤ë¡£", "You hear many %s appear nearby."),
3447             uniques_are_summoned ? _("Î϶¯¤¤¤â¤Î", "powerful things") : _("¤â¤Î", "things"));
3448     }
3449         
3450         if (monster_near_player(m_idx, t_idx) && !see_monster(t_idx) && count && mon_to_mon)
3451                 mon_fight = TRUE;
3452 }
3453
3454
3455
3456 /*!
3457 * @brief ¥â¥ó¥¹¥¿¡¼¤«¤é¥×¥ì¥¤¥ä¡¼¤Ø¤Î¼öʸ¤Î¿¶¤êʬ¤±´Ø¿ô¡£ /
3458 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
3459 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
3460 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
3461 * @return ¹¶·â¼öʸ¤Î¥À¥á¡¼¥¸¡¢¤Þ¤¿¤Ï¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£¤½¤Î¾¤Î¾ì¹ç0¡£°Ê¹ß¤Î½èÍý¤òÃæÃǤ¹¤ë¤Ê¤é-1¤òÊÖ¤¹¡£
3462 */
3463 int monspell_to_player(int SPELL_NUM, int y, int x, int m_idx)
3464 {
3465     switch (SPELL_NUM)
3466     {
3467     case RF4_SPELL_START + 0:   spell_RF4_SHRIEK(m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_SHRIEK */
3468     case RF4_SPELL_START + 1:   break;   /* RF4_XXX1 */
3469     case RF4_SPELL_START + 2:   spell_RF4_DISPEL(m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_DISPEL */
3470     case RF4_SPELL_START + 3:   return spell_RF4_ROCKET(y, x, m_idx, 0, MONSTER_TO_PLAYER);  /* RF4_ROCKET */
3471     case RF4_SPELL_START + 4:   return spell_RF4_SHOOT(y, x, m_idx, 0, MONSTER_TO_PLAYER);   /* RF4_SHOOT */
3472     case RF4_SPELL_START + 5:   break;   /* RF4_XXX2 */
3473     case RF4_SPELL_START + 6:   break;   /* RF4_XXX3 */
3474     case RF4_SPELL_START + 7:   break;   /* RF4_XXX4 */
3475     case RF4_SPELL_START + 8:   return spell_RF4_BREATH(GF_ACID, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_ACID */
3476     case RF4_SPELL_START + 9:   return spell_RF4_BREATH(GF_ELEC, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_ELEC */
3477     case RF4_SPELL_START + 10:  return spell_RF4_BREATH(GF_FIRE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_FIRE */
3478     case RF4_SPELL_START + 11:  return spell_RF4_BREATH(GF_COLD, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_COLD */
3479     case RF4_SPELL_START + 12:  return spell_RF4_BREATH(GF_POIS, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_POIS */
3480     case RF4_SPELL_START + 13:  return spell_RF4_BREATH(GF_NETHER, y, x, m_idx, 0, MONSTER_TO_PLAYER);   /* RF4_BR_NETH */
3481     case RF4_SPELL_START + 14:  return spell_RF4_BREATH(GF_LITE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_LITE */
3482     case RF4_SPELL_START + 15:  return spell_RF4_BREATH(GF_DARK, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_DARK */
3483     case RF4_SPELL_START + 16:  return spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx, 0, MONSTER_TO_PLAYER);    /* RF4_BR_CONF */
3484     case RF4_SPELL_START + 17:  return spell_RF4_BREATH(GF_SOUND, y, x, m_idx, 0, MONSTER_TO_PLAYER);    /* RF4_BR_SOUN */
3485     case RF4_SPELL_START + 18:  return spell_RF4_BREATH(GF_CHAOS, y, x, m_idx, 0, MONSTER_TO_PLAYER);    /* RF4_BR_CHAO */
3486     case RF4_SPELL_START + 19:  return spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx, 0, MONSTER_TO_PLAYER);   /* RF4_BR_DISE */
3487     case RF4_SPELL_START + 20:  return spell_RF4_BREATH(GF_NEXUS, y, x, m_idx, 0, MONSTER_TO_PLAYER);    /* RF4_BR_NEXU */
3488     case RF4_SPELL_START + 21:  return spell_RF4_BREATH(GF_TIME, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_TIME */
3489     case RF4_SPELL_START + 22:  return spell_RF4_BREATH(GF_INERTIA, y, x, m_idx, 0, MONSTER_TO_PLAYER);  /* RF4_BR_INER */
3490     case RF4_SPELL_START + 23:  return spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx, 0, MONSTER_TO_PLAYER);  /* RF4_BR_GRAV */
3491     case RF4_SPELL_START + 24:  return spell_RF4_BREATH(GF_SHARDS, y, x, m_idx, 0, MONSTER_TO_PLAYER);   /* RF4_BR_SHAR */
3492     case RF4_SPELL_START + 25:  return spell_RF4_BREATH(GF_PLASMA, y, x, m_idx, 0, MONSTER_TO_PLAYER);   /* RF4_BR_PLAS */
3493     case RF4_SPELL_START + 26:  return spell_RF4_BREATH(GF_FORCE, y, x, m_idx, 0, MONSTER_TO_PLAYER);    /* RF4_BR_WALL */
3494     case RF4_SPELL_START + 27:  return spell_RF4_BREATH(GF_MANA, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_MANA */
3495     case RF4_SPELL_START + 28:  return spell_RF4_BA_NUKE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BA_NUKE */
3496     case RF4_SPELL_START + 29:  return spell_RF4_BREATH(GF_NUKE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_NUKE */
3497     case RF4_SPELL_START + 30:  return spell_RF4_BA_CHAO(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BA_CHAO */
3498     case RF4_SPELL_START + 31:  return spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_DISI */
3499     case RF5_SPELL_START + 0:  return spell_RF5_BA_ACID(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_ACID */
3500     case RF5_SPELL_START + 1:  return spell_RF5_BA_ELEC(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_ELEC */
3501     case RF5_SPELL_START + 2:  return spell_RF5_BA_FIRE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_FIRE */
3502     case RF5_SPELL_START + 3:  return spell_RF5_BA_COLD(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_COLD */
3503     case RF5_SPELL_START + 4:  return spell_RF5_BA_POIS(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_POIS */
3504     case RF5_SPELL_START + 5:  return spell_RF5_BA_NETH(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_NETH */
3505     case RF5_SPELL_START + 6:  return spell_RF5_BA_WATE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_WATE */
3506     case RF5_SPELL_START + 7:  return spell_RF5_BA_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_MANA */
3507     case RF5_SPELL_START + 8:  return spell_RF5_BA_DARK(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_DARK */
3508     case RF5_SPELL_START + 9:  return spell_RF5_DRAIN_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER);  /* RF5_DRAIN_MANA */
3509     case RF5_SPELL_START + 10: return spell_RF5_MIND_BLAST(y, x, m_idx, 0, MONSTER_TO_PLAYER);  /* RF5_MIND_BLAST */
3510     case RF5_SPELL_START + 11: return spell_RF5_BRAIN_SMASH(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_MIND_BLAST */
3511     case RF5_SPELL_START + 12: return spell_RF5_CAUSE_1(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_CAUSE_1 */
3512     case RF5_SPELL_START + 13: return spell_RF5_CAUSE_2(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_CAUSE_2 */
3513     case RF5_SPELL_START + 14: return spell_RF5_CAUSE_3(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_CAUSE_3 */
3514     case RF5_SPELL_START + 15: return spell_RF5_CAUSE_4(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_CAUSE_4 */
3515     case RF5_SPELL_START + 16: return spell_RF5_BO_ACID(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_ACID */
3516     case RF5_SPELL_START + 17: return spell_RF5_BO_ELEC(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_ELEC */
3517     case RF5_SPELL_START + 18: return spell_RF5_BO_FIRE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_FIRE */
3518     case RF5_SPELL_START + 19: return spell_RF5_BO_COLD(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_COLD */
3519     case RF5_SPELL_START + 20: return spell_RF5_BA_LITE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_LITE */
3520     case RF5_SPELL_START + 21: return spell_RF5_BO_NETH(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_NETH */
3521     case RF5_SPELL_START + 22: return spell_RF5_BO_WATE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_WATE */
3522     case RF5_SPELL_START + 23: return spell_RF5_BO_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_MANA */
3523     case RF5_SPELL_START + 24: return spell_RF5_BO_PLAS(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_PLAS */
3524     case RF5_SPELL_START + 25: return spell_RF5_BO_ICEE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_ICEE */
3525     case RF5_SPELL_START + 26: return spell_RF5_MISSILE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_MISSILE */
3526     case RF5_SPELL_START + 27: spell_RF5_SCARE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF5_SCARE */
3527     case RF5_SPELL_START + 28: spell_RF5_BLIND(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF5_BLIND */
3528     case RF5_SPELL_START + 29: spell_RF5_CONF(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;  /* RF5_CONF */
3529     case RF5_SPELL_START + 30: spell_RF5_SLOW(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;  /* RF5_SLOW */
3530     case RF5_SPELL_START + 31: spell_RF5_HOLD(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;  /* RF5_HOLD */
3531     case RF6_SPELL_START + 0:  spell_RF6_HASTE(m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF6_HASTE */
3532     case RF6_SPELL_START + 1:  return spell_RF6_HAND_DOOM(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF6_HAND_DOOM */
3533     case RF6_SPELL_START + 2:  spell_RF6_HEAL(m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF6_HEAL */
3534     case RF6_SPELL_START + 3:  spell_RF6_INVULNER(m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF6_INVULNER */
3535     case RF6_SPELL_START + 4:  spell_RF6_BLINK(m_idx, MONSTER_TO_PLAYER); break;   /* RF6_BLINK */
3536     case RF6_SPELL_START + 5:  spell_RF6_TPORT(m_idx, MONSTER_TO_PLAYER); break;   /* RF6_TPORT */
3537     case RF6_SPELL_START + 6:  return spell_RF6_WORLD(m_idx); break;    /* RF6_WORLD */
3538     case RF6_SPELL_START + 7:  return spell_RF6_SPECIAL(y, x, m_idx, 0, MONSTER_TO_PLAYER);   /* RF6_SPECIAL */
3539     case RF6_SPELL_START + 8:  spell_RF6_TELE_TO(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_TELE_TO */
3540     case RF6_SPELL_START + 9:  spell_RF6_TELE_AWAY(m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF6_TELE_AWAY */
3541     case RF6_SPELL_START + 10: spell_RF6_TELE_LEVEL(m_idx, 0, MONSTER_TO_PLAYER); break;  /* RF6_TELE_LEVEL */
3542     case RF6_SPELL_START + 11: spell_RF6_PSY_SPEAR(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_PSY_SPEAR */
3543     case RF6_SPELL_START + 12: spell_RF6_DARKNESS(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF6_DARKNESS */
3544     case RF6_SPELL_START + 13: spell_RF6_TRAPS(y, x, m_idx); break; /* RF6_TRAPS */
3545     case RF6_SPELL_START + 14: spell_RF6_FORGET(m_idx); break;  /* RF6_FORGET */
3546     case RF6_SPELL_START + 15: spell_RF6_RAISE_DEAD(m_idx, 0, MONSTER_TO_PLAYER); break;  /* RF6_RAISE_DEAD */
3547     case RF6_SPELL_START + 16: spell_RF6_S_KIN(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_KIN */
3548     case RF6_SPELL_START + 17: spell_RF6_S_CYBER(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF6_S_CYBER */
3549     case RF6_SPELL_START + 18: spell_RF6_S_MONSTER(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_MONSTER */
3550     case RF6_SPELL_START + 19: spell_RF6_S_MONSTERS(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF6_S_MONSTER */
3551     case RF6_SPELL_START + 20: spell_RF6_S_ANT(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_ANT */
3552     case RF6_SPELL_START + 21: spell_RF6_S_SPIDER(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;  /* RF6_S_SPIDER */
3553     case RF6_SPELL_START + 22: spell_RF6_S_HOUND(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF6_S_HOUND */
3554     case RF6_SPELL_START + 23: spell_RF6_S_HYDRA(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF6_S_HYDRA */
3555     case RF6_SPELL_START + 24: spell_RF6_S_ANGEL(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF6_S_ANGEL */
3556     case RF6_SPELL_START + 25: spell_RF6_S_DEMON(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF6_S_DEMON */
3557     case RF6_SPELL_START + 26: spell_RF6_S_UNDEAD(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;  /* RF6_S_UNDEAD */
3558     case RF6_SPELL_START + 27: spell_RF6_S_DRAGON(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;  /* RF6_S_DRAGON */
3559     case RF6_SPELL_START + 28: spell_RF6_S_HI_UNDEAD(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF6_S_HI_UNDEAD */
3560     case RF6_SPELL_START + 29: spell_RF6_S_HI_DRAGON(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF6_S_HI_DRAGON */
3561     case RF6_SPELL_START + 30: spell_RF6_S_AMBERITES(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF6_S_AMBERITES */
3562     case RF6_SPELL_START + 31: spell_RF6_S_UNIQUE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;  /* RF6_S_UNIQUE */
3563     }
3564     return 0;
3565 }
3566
3567 /*!
3568 * @brief ¥â¥ó¥¹¥¿¡¼¤«¤é¥â¥ó¥¹¥¿¡¼¤Ø¤Î¼öʸ¤Î¿¶¤êʬ¤±´Ø¿ô¡£ /
3569 * @param y ÂоݤÎÃÏÅÀ¤ÎyºÂɸ
3570 * @param x ÂоݤÎÃÏÅÀ¤ÎxºÂɸ
3571 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
3572 * @param m_idx ¼öʸ¤ò¼õ¤±¤ë¥â¥ó¥¹¥¿¡¼ID
3573 * @return ¹¶·â¼öʸ¤Î¥À¥á¡¼¥¸¡¢¤Þ¤¿¤Ï¾¤´­¤·¤¿¥â¥ó¥¹¥¿¡¼¤Î¿ô¤òÊÖ¤¹¡£¤½¤Î¾¤Î¾ì¹ç0¡£°Ê¹ß¤Î½èÍý¤òÃæÃǤ¹¤ë¤Ê¤é-1¤òÊÖ¤¹¡£
3574 */
3575 int monspell_to_monster(int SPELL_NUM, int y, int x, int m_idx, int t_idx)
3576 {
3577     switch (SPELL_NUM)
3578     {
3579     case RF4_SPELL_START + 0:   spell_RF4_SHRIEK(m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF4_SHRIEK */
3580     case RF4_SPELL_START + 1:   return -1;   /* RF4_XXX1 */
3581     case RF4_SPELL_START + 2:   spell_RF4_DISPEL(m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF4_DISPEL */
3582     case RF4_SPELL_START + 3:   return spell_RF4_ROCKET(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_ROCKET */
3583     case RF4_SPELL_START + 4:   return spell_RF4_SHOOT(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);  /* RF4_SHOOT */
3584     case RF4_SPELL_START + 5:   return -1;   /* RF4_XXX2 */
3585     case RF4_SPELL_START + 6:   return -1;   /* RF4_XXX3 */
3586     case RF4_SPELL_START + 7:   return -1;   /* RF4_XXX4 */
3587     case RF4_SPELL_START + 8:   return spell_RF4_BREATH(GF_ACID, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF4_BR_ACID */
3588     case RF4_SPELL_START + 9:   return spell_RF4_BREATH(GF_ELEC, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF4_BR_ELEC */
3589     case RF4_SPELL_START + 10:  return spell_RF4_BREATH(GF_FIRE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF4_BR_FIRE */
3590     case RF4_SPELL_START + 11:  return spell_RF4_BREATH(GF_COLD, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF4_BR_COLD */
3591     case RF4_SPELL_START + 12:  return spell_RF4_BREATH(GF_POIS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF4_BR_POIS */
3592     case RF4_SPELL_START + 13:  return spell_RF4_BREATH(GF_NETHER, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);  /* RF4_BR_NETH */
3593     case RF4_SPELL_START + 14:  return spell_RF4_BREATH(GF_LITE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF4_BR_LITE */
3594     case RF4_SPELL_START + 15:  return spell_RF4_BREATH(GF_DARK, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF4_BR_DARK */
3595     case RF4_SPELL_START + 16:  return spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);   /* RF4_BR_CONF */
3596     case RF4_SPELL_START + 17:  return spell_RF4_BREATH(GF_SOUND, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);   /* RF4_BR_SOUN */
3597     case RF4_SPELL_START + 18:  return spell_RF4_BREATH(GF_CHAOS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);   /* RF4_BR_CHAO */
3598     case RF4_SPELL_START + 19:  return spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);  /* RF4_BR_DISE */
3599     case RF4_SPELL_START + 20:  return spell_RF4_BREATH(GF_NEXUS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);   /* RF4_BR_NEXU */
3600     case RF4_SPELL_START + 21:  return spell_RF4_BREATH(GF_TIME, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF4_BR_TIME */
3601     case RF4_SPELL_START + 22:  return spell_RF4_BREATH(GF_INERTIA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_INER */
3602     case RF4_SPELL_START + 23:  return spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_GRAV */
3603     case RF4_SPELL_START + 24:  return spell_RF4_BREATH(GF_SHARDS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);  /* RF4_BR_SHAR */
3604     case RF4_SPELL_START + 25:  return spell_RF4_BREATH(GF_PLASMA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);  /* RF4_BR_PLAS */
3605     case RF4_SPELL_START + 26:  return spell_RF4_BREATH(GF_FORCE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);   /* RF4_BR_WALL */
3606     case RF4_SPELL_START + 27:  return spell_RF4_BREATH(GF_MANA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF4_BR_MANA */
3607     case RF4_SPELL_START + 28:  return spell_RF4_BA_NUKE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF4_BA_NUKE */
3608     case RF4_SPELL_START + 29:  return spell_RF4_BREATH(GF_NUKE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF4_BR_NUKE */
3609     case RF4_SPELL_START + 30:  return spell_RF4_BA_CHAO(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF4_BA_CHAO */
3610     case RF4_SPELL_START + 31:  return spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF4_BR_DISI */
3611     case RF5_SPELL_START + 0:  return spell_RF5_BA_ACID(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BA_ACID */
3612     case RF5_SPELL_START + 1:  return spell_RF5_BA_ELEC(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BA_ELEC */
3613     case RF5_SPELL_START + 2:  return spell_RF5_BA_FIRE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BA_FIRE */
3614     case RF5_SPELL_START + 3:  return spell_RF5_BA_COLD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BA_COLD */
3615     case RF5_SPELL_START + 4:  return spell_RF5_BA_POIS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BA_POIS */
3616     case RF5_SPELL_START + 5:  return spell_RF5_BA_NETH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BA_NETH */
3617     case RF5_SPELL_START + 6:  return spell_RF5_BA_WATE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BA_WATE */
3618     case RF5_SPELL_START + 7:  return spell_RF5_BA_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BA_MANA */
3619     case RF5_SPELL_START + 8:  return spell_RF5_BA_DARK(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BA_DARK */
3620     case RF5_SPELL_START + 9:  return spell_RF5_DRAIN_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_DRAIN_MANA */
3621     case RF5_SPELL_START + 10: return spell_RF5_MIND_BLAST(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_MIND_BLAST */
3622     case RF5_SPELL_START + 11: return spell_RF5_BRAIN_SMASH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BRAIN_SMASH */
3623     case RF5_SPELL_START + 12: return spell_RF5_CAUSE_1(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_CAUSE_1 */
3624     case RF5_SPELL_START + 13: return spell_RF5_CAUSE_2(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_CAUSE_2 */
3625     case RF5_SPELL_START + 14: return spell_RF5_CAUSE_3(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_CAUSE_3 */
3626     case RF5_SPELL_START + 15: return spell_RF5_CAUSE_4(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_CAUSE_4 */
3627     case RF5_SPELL_START + 16: return spell_RF5_BO_ACID(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BO_ACID */
3628     case RF5_SPELL_START + 17: return spell_RF5_BO_ELEC(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BO_ELEC */
3629     case RF5_SPELL_START + 18: return spell_RF5_BO_FIRE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BO_FIRE */
3630     case RF5_SPELL_START + 19: return spell_RF5_BO_COLD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BO_COLD */
3631     case RF5_SPELL_START + 20: return spell_RF5_BA_LITE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BA_LITE */
3632     case RF5_SPELL_START + 21: return spell_RF5_BO_NETH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BO_NETH */
3633     case RF5_SPELL_START + 22: return spell_RF5_BO_WATE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BO_WATE */
3634     case RF5_SPELL_START + 23: return spell_RF5_BO_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BO_MANA */
3635     case RF5_SPELL_START + 24: return spell_RF5_BO_PLAS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BO_PLAS */
3636     case RF5_SPELL_START + 25: return spell_RF5_BO_ICEE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_BO_ICEE */
3637     case RF5_SPELL_START + 26: return spell_RF5_MISSILE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);    /* RF5_MISSILE */
3638     case RF5_SPELL_START + 27: spell_RF5_SCARE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;  /* RF5_SCARE */
3639     case RF5_SPELL_START + 28: spell_RF5_BLIND(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;  /* RF5_BLIND */
3640     case RF5_SPELL_START + 29: spell_RF5_CONF(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF5_CONF */
3641     case RF5_SPELL_START + 30: spell_RF5_SLOW(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF5_SLOW */
3642     case RF5_SPELL_START + 31: spell_RF5_HOLD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;  /* RF5_HOLD */
3643     case RF6_SPELL_START + 0:  spell_RF6_HASTE(m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF6_HASTE */
3644     case RF6_SPELL_START + 1:  return spell_RF6_HAND_DOOM(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF6_HAND_DOOM */
3645     case RF6_SPELL_START + 2:  spell_RF6_HEAL(m_idx, t_idx, MONSTER_TO_MONSTER); break;    /* RF6_HEAL */
3646     case RF6_SPELL_START + 3:  spell_RF6_INVULNER(m_idx, t_idx, MONSTER_TO_MONSTER); break;    /* RF6_INVULNER */
3647     case RF6_SPELL_START + 4:  spell_RF6_BLINK(m_idx, MONSTER_TO_MONSTER); break;   /* RF6_BLINK */
3648     case RF6_SPELL_START + 5:  spell_RF6_TPORT(m_idx, MONSTER_TO_MONSTER); break;   /* RF6_TPORT */
3649     case RF6_SPELL_START + 6:  return -1; break;    /* RF6_WORLD */
3650     case RF6_SPELL_START + 7:  return spell_RF6_SPECIAL(y, x, m_idx, t_idx, MONSTER_TO_MONSTER);   /* RF6_SPECIAL */
3651     case RF6_SPELL_START + 8:  spell_RF6_TELE_TO(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_TELE_TO */
3652     case RF6_SPELL_START + 9:  spell_RF6_TELE_AWAY(m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF6_TELE_AWAY */
3653     case RF6_SPELL_START + 10: spell_RF6_TELE_LEVEL(m_idx, t_idx, MONSTER_TO_MONSTER); break;  /* RF6_TELE_LEVEL */
3654     case RF6_SPELL_START + 11: spell_RF6_PSY_SPEAR(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_PSY_SPEAR */
3655     case RF6_SPELL_START + 12: spell_RF6_DARKNESS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;    /* RF6_DARKNESS */
3656     case RF6_SPELL_START + 13: return -1; /* RF6_TRAPS */
3657     case RF6_SPELL_START + 14: return -1;  /* RF6_FORGET */
3658     case RF6_SPELL_START + 15: spell_RF6_RAISE_DEAD(m_idx, t_idx, MONSTER_TO_MONSTER); break;  /* RF6_RAISE_DEAD */
3659     case RF6_SPELL_START + 16: spell_RF6_S_KIN(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_KIN */
3660     case RF6_SPELL_START + 17: spell_RF6_S_CYBER(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF6_S_CYBER */
3661     case RF6_SPELL_START + 18: spell_RF6_S_MONSTER(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_MONSTER */
3662     case RF6_SPELL_START + 19: spell_RF6_S_MONSTERS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;    /* RF6_S_MONSTER */
3663     case RF6_SPELL_START + 20: spell_RF6_S_ANT(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_ANT */
3664     case RF6_SPELL_START + 21: spell_RF6_S_SPIDER(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;  /* RF6_S_SPIDER */
3665     case RF6_SPELL_START + 22: spell_RF6_S_HOUND(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF6_S_HOUND */
3666     case RF6_SPELL_START + 23: spell_RF6_S_HYDRA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF6_S_HYDRA */
3667     case RF6_SPELL_START + 24: spell_RF6_S_ANGEL(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF6_S_ANGEL */
3668     case RF6_SPELL_START + 25: spell_RF6_S_DEMON(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF6_S_DEMON */
3669     case RF6_SPELL_START + 26: spell_RF6_S_UNDEAD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;  /* RF6_S_UNDEAD */
3670     case RF6_SPELL_START + 27: spell_RF6_S_DRAGON(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;  /* RF6_S_DRAGON */
3671     case RF6_SPELL_START + 28: spell_RF6_S_HI_UNDEAD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF6_S_HI_UNDEAD */
3672     case RF6_SPELL_START + 29: spell_RF6_S_HI_DRAGON(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF6_S_HI_DRAGON */
3673     case RF6_SPELL_START + 30: spell_RF6_S_AMBERITES(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF6_S_AMBERITES */
3674     case RF6_SPELL_START + 31: spell_RF6_S_UNIQUE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;  /* RF6_S_UNIQUE */
3675     }
3676     return 0;
3677 }
3678
3679 /*!
3680 * @brief ¥â¥ó¥¹¥¿¡¼¤Î»È¤¦¼öʸ¤Î°ÒÎϤòÊÖ¤¹ /
3681 * @param SPELL_NUM ¼öʸÈÖ¹æ
3682 * @param hp ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼¤ÎÂÎÎÏ
3683 * @param rlev ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼¤Î¥ì¥Ù¥ë
3684 * @param powerful ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼¤Îpowerful¥Õ¥é¥°
3685 * @param r_ptr ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼¤Î¼ï²¥Ý¥¤¥ó¥¿
3686 * @param TYPE  DAM_MAX¤ÇºÇÂçÃͤòÊÖ¤·¡¢DAM_MIN¤ÇºÇ¾®ÃͤòÊÖ¤¹¡£DAM_ROLL¤Ï¥À¥¤¥¹¤ò¿¶¤Ã¤ÆÃͤò·èÄꤹ¤ë¡£
3687 * @return ¹¶·â¼öʸ¤Î¥À¥á¡¼¥¸¤òÊÖ¤¹¡£¹¶·â¼öʸ°Ê³°¤Ï-1¤òÊÖ¤¹¡£
3688 */
3689 int monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, monster_race* r_ptr, int TYPE)
3690 {
3691     int dam = 0, dice_num = 0, dice_side = 0, mult = 1, div = 1;
3692
3693     switch (SPELL_NUM)
3694     {
3695     case RF4_SPELL_START + 0:   return -1;   /* RF4_SHRIEK */
3696     case RF4_SPELL_START + 1:   return -1;   /* RF4_XXX1 */
3697     case RF4_SPELL_START + 2:   return -1;   /* RF4_DISPEL */
3698
3699         /* RF4_ROCKET */
3700     case RF4_SPELL_START + 3:
3701         dam = (hp / 4) > 800 ? 800 : (hp / 4);
3702         break;
3703
3704         /* RF4_SHOOT */
3705     case RF4_SPELL_START + 4:
3706         dice_num = r_ptr->blow[0].d_dice;
3707         dice_side = r_ptr->blow[0].d_side;
3708         break;
3709     case RF4_SPELL_START + 5:   return -1;   /* RF4_XXX2 */
3710     case RF4_SPELL_START + 6:   return -1;   /* RF4_XXX3 */
3711     case RF4_SPELL_START + 7:   return -1;   /* RF4_XXX4 */
3712
3713         /* RF4_BR_ACID */
3714         /* RF4_BR_ELEC */
3715         /* RF4_BR_FIRE */
3716         /* RF4_BR_COLD */
3717     case RF4_SPELL_START + 8:
3718     case RF4_SPELL_START + 9:
3719     case RF4_SPELL_START + 10:
3720     case RF4_SPELL_START + 11:
3721         dam = ((hp / 3) > 1600 ? 1600 : (hp / 3));
3722         break;
3723
3724         /* RF4_BR_POIS */
3725     case RF4_SPELL_START + 12:
3726         dam = ((hp / 3) > 800 ? 800 : (hp / 3));
3727         break;
3728
3729         /* RF4_BR_NETH */
3730     case RF4_SPELL_START + 13:
3731         dam = ((hp / 6) > 550 ? 550 : (hp / 6));
3732         break;
3733
3734         /* RF4_BR_LITE */
3735         /* RF4_BR_DARK */
3736     case RF4_SPELL_START + 14:
3737     case RF4_SPELL_START + 15:
3738         dam = ((hp / 6) > 400 ? 400 : (hp / 6));
3739         break;
3740
3741         /* RF4_BR_CONF */
3742         /* RF4_BR_SOUN */
3743     case RF4_SPELL_START + 16:
3744     case RF4_SPELL_START + 17:
3745         dam = ((hp / 6) > 450 ? 450 : (hp / 6));
3746         break;
3747
3748         /* RF4_BR_CHAO */
3749     case RF4_SPELL_START + 18:
3750         dam = ((hp / 6) > 600 ? 600 : (hp / 6));
3751         break;
3752
3753         /* RF4_BR_DISE */
3754     case RF4_SPELL_START + 19:
3755         dam = ((hp / 6) > 500 ? 500 : (hp / 6));
3756         break;
3757
3758         /* RF4_BR_NEXU */
3759     case RF4_SPELL_START + 20:
3760         dam = ((hp / 3) > 250 ? 250 : (hp / 3));
3761         break;
3762
3763         /* RF4_BR_TIME */
3764     case RF4_SPELL_START + 21:
3765         dam = ((hp / 3) > 150 ? 150 : (hp / 3));
3766         break;
3767
3768         /* RF4_BR_INER */
3769         /* RF4_BR_GRAV */
3770     case RF4_SPELL_START + 22:
3771     case RF4_SPELL_START + 23:
3772         dam = ((hp / 6) > 200 ? 200 : (hp / 6));
3773         break;
3774
3775         /* RF4_BR_SHAR */
3776     case RF4_SPELL_START + 24:
3777         dam = ((hp / 6) > 500 ? 500 : (hp / 6));
3778         break;
3779
3780         /* RF4_BR_PLAS */
3781     case RF4_SPELL_START + 25:
3782         dam = ((hp / 6) > 150 ? 150 : (hp / 6));
3783         break;
3784
3785         /* RF4_BR_WALL */
3786     case RF4_SPELL_START + 26:
3787         dam = ((hp / 6) > 200 ? 200 : (hp / 6));
3788         break;
3789
3790         /* RF4_BR_MANA */
3791     case RF4_SPELL_START + 27:
3792         dam = ((hp / 3) > 250 ? 250 : (hp / 3));
3793         break;
3794
3795         /* RF4_BA_NUKE */
3796     case RF4_SPELL_START + 28:
3797         mult = powerful ? 2 : 1;
3798         dam = rlev * (mult / div);
3799         dice_num = 10;
3800         dice_side = 6;
3801         break;
3802
3803         /* RF4_BR_NUKE */
3804     case RF4_SPELL_START + 29:
3805         dam = ((hp / 3) > 800 ? 800 : (hp / 3));
3806         break;
3807
3808         /* RF4_BA_CHAO */
3809     case RF4_SPELL_START + 30:
3810         dam = (powerful ? (rlev * 3) : (rlev * 2));
3811         dice_num = 10;
3812         dice_side = 10;
3813         break;
3814
3815         /* RF4_BR_DISI */
3816     case RF4_SPELL_START + 31:
3817         dam = ((hp / 6) > 150 ? 150 : (hp / 6));
3818         break;
3819
3820         /* RF5_BA_ACID */
3821     case RF5_SPELL_START + 0:
3822         if (powerful)
3823         {
3824             dam = (rlev * 4) + 50;
3825             dice_num = 10;
3826             dice_side = 10;
3827         }
3828         else
3829         {
3830             dam = 15;
3831             dice_num = 1;
3832             dice_side = rlev * 3;
3833         }
3834         break;
3835
3836         /* RF5_BA_ELEC */
3837     case RF5_SPELL_START + 1:
3838         if (powerful)
3839         {
3840             dam = (rlev * 4) + 50;
3841             dice_num = 10;
3842             dice_side = 10;
3843         }
3844         else
3845         {
3846             dam = 8;
3847             dice_num = 1;
3848             dice_side = rlev * 3 / 2;
3849         }
3850         break;
3851
3852         /* RF5_BA_FIRE */
3853     case RF5_SPELL_START + 2:
3854         if (powerful)
3855         {
3856             dam = (rlev * 4) + 50;
3857             dice_num = 10;
3858             dice_side = 10;
3859         }
3860         else
3861         {
3862             dam = 10;
3863             dice_num = 1;
3864             dice_side = rlev * 7 / 2;
3865         }
3866         break;
3867
3868         /* RF5_BA_COLD */
3869     case RF5_SPELL_START + 3:
3870         if (powerful)
3871         {
3872             dam = (rlev * 4) + 50;
3873             dice_num = 10;
3874             dice_side = 10;
3875         }
3876         else
3877         {
3878             dam = 10;
3879             dice_num = 1;
3880             dice_side = rlev * 3 / 2;
3881         }
3882         break;
3883
3884         /* RF5_BA_POIS */
3885     case RF5_SPELL_START + 4:
3886         mult = powerful ? 2 : 1;
3887         dice_num = 12;
3888         dice_side = 2;
3889         break;
3890
3891         /* RF5_BA_NETH */
3892     case RF5_SPELL_START + 5:
3893         dam = 50 + (rlev * powerful ? 2 : 1);
3894         dice_num = 10;
3895         dice_side = 10;
3896         break;
3897
3898         /* RF5_BA_WATE */
3899     case RF5_SPELL_START + 6:
3900         dam = 50;
3901         dice_num = 1;
3902         dice_side = powerful ? (rlev * 3) : (rlev * 2);
3903         break;
3904
3905         /* RF5_BA_MANA */
3906         /* RF5_BA_DARK */
3907     case RF5_SPELL_START + 7:
3908     case RF5_SPELL_START + 8:
3909         dam = (rlev * 4) + 50;
3910         dice_num = 10;
3911         dice_side = 10;
3912         break;
3913
3914         /* RF5_DRAIN_MANA */
3915     case RF5_SPELL_START + 9:
3916         dam = 1;
3917         div = 2;
3918         dice_num = 1;
3919         dice_side = rlev;
3920         break;
3921
3922         /* RF5_MIND_BLAST */
3923     case RF5_SPELL_START + 10:
3924         dice_num = 7;
3925         dice_side = 7;
3926         break;
3927
3928         /* RF5_BRAIN_SMASH */
3929     case RF5_SPELL_START + 11:
3930         dice_num = 12;
3931         dice_side = 12;
3932         break;
3933
3934         /* RF5_CAUSE_1 */
3935     case RF5_SPELL_START + 12:
3936         dice_num = 3;
3937         dice_side = 8;
3938         break;
3939
3940         /* RF5_CAUSE_2 */
3941     case RF5_SPELL_START + 13:
3942         dice_num = 8;
3943         dice_side = 8;
3944         break;
3945
3946         /* RF5_CAUSE_3 */
3947     case RF5_SPELL_START + 14:
3948         dice_num = 10;
3949         dice_side = 15;
3950         break;
3951
3952         /* RF5_CAUSE_4 */
3953     case RF5_SPELL_START + 15:
3954         dice_num = 15;
3955         dice_side = 15;
3956         break;
3957
3958         /* RF5_BO_ACID */
3959     case RF5_SPELL_START + 16:
3960         mult = powerful ? 2 : 1;
3961         dam = rlev / 3 * (mult / div);
3962         dice_num = 7;
3963         dice_side = 8;
3964         break;
3965
3966         /* RF5_BO_ELEC */
3967     case RF5_SPELL_START + 17:
3968         mult = powerful ? 2 : 1;
3969         dam = rlev / 3 * (mult / div);
3970         dice_num = 4;
3971         dice_side = 8;
3972         break;
3973
3974         /* RF5_BO_FIRE */
3975     case RF5_SPELL_START + 18:
3976         mult = powerful ? 2 : 1;
3977         dam = rlev / 3 * (mult / div);
3978         dice_num = 9;
3979         dice_side = 8;
3980         break;
3981
3982         /* RF5_BO_COLD */
3983     case RF5_SPELL_START + 19:
3984         mult = powerful ? 2 : 1;
3985         dam = rlev / 3 * (mult / div);
3986         dice_num = 6;
3987         dice_side = 8;
3988         break;
3989
3990         /* RF5_BA_LITE */
3991     case RF5_SPELL_START + 20:
3992         dam = (rlev * 4) + 50;
3993         dice_num = 10;
3994         dice_side = 10;
3995         break;
3996
3997         /* RF5_BO_NETH */
3998     case RF5_SPELL_START + 21:
3999         dam = 30 + (rlev * 4) / (powerful ? 2 : 3);
4000         dice_num = 5;
4001         dice_side = 5;
4002         break;
4003
4004         /* RF5_BO_WATE */
4005     case RF5_SPELL_START + 22:
4006         dam = (rlev * 3 / (powerful ? 2 : 3));
4007         dice_num = 10;
4008         dice_side = 10;
4009         break;
4010
4011         /* RF5_BO_MANA */
4012     case RF5_SPELL_START + 23:
4013         dam = 50;
4014         dice_num = 1;
4015         dice_side = rlev * 7 / 2;
4016         break;
4017
4018         /* RF5_BO_PLAS */
4019     case RF5_SPELL_START + 24:
4020         dam = 10 + (rlev * 3 / (powerful ? 2 : 3));
4021         dice_num = 8;
4022         dice_side = 7;
4023         break;
4024
4025         /* RF5_BO_ICEE */
4026     case RF5_SPELL_START + 25:
4027         dam = (rlev * 3 / (powerful ? 2 : 3));
4028         dice_num = 6;
4029         dice_side = 6;
4030         break;
4031
4032         /* RF5_MISSILE */
4033     case RF5_SPELL_START + 26:
4034         dam = (rlev / 3);
4035         dice_num = 2;
4036         dice_side = 6;
4037         break;
4038
4039     case RF5_SPELL_START + 27: return -1;   /* RF5_SCARE */
4040     case RF5_SPELL_START + 28: return -1;   /* RF5_BLIND */
4041     case RF5_SPELL_START + 29: return -1;   /* RF5_CONF */
4042     case RF5_SPELL_START + 30: return -1;   /* RF5_SLOW */
4043     case RF5_SPELL_START + 31: return -1;   /* RF5_HOLD */
4044     case RF6_SPELL_START + 0:  return -1;   /* RF6_HASTE */
4045
4046         /* RF6_HAND_DOOM */
4047     case RF6_SPELL_START + 1:
4048         mult = p_ptr->chp;
4049         div = 100;
4050         dam = 40 * (mult / div);
4051         dice_num = 1;
4052         dice_side = 20;
4053         break;
4054
4055     case RF6_SPELL_START + 2:  return -1;   /* RF6_HEAL */
4056     case RF6_SPELL_START + 3:  return -1;   /* RF6_INVULNER */
4057     case RF6_SPELL_START + 4:  return -1;   /* RF6_BLINK */
4058     case RF6_SPELL_START + 5:  return -1;   /* RF6_TPORT */
4059     case RF6_SPELL_START + 6:  return -1;   /* RF6_WORLD */
4060     case RF6_SPELL_START + 7:  return -1;   /* RF6_SPECIAL */
4061     case RF6_SPELL_START + 8:  return -1;   /* RF6_TELE_TO */
4062     case RF6_SPELL_START + 9:  return -1;   /* RF6_TELE_AWAY */
4063     case RF6_SPELL_START + 10: return -1;   /* RF6_TELE_LEVEL */
4064
4065         /* RF6_PSY_SPEAR */
4066     case RF6_SPELL_START + 11:
4067         dam = powerful ? 150 : 100;
4068         dice_num = 1;
4069         dice_side = powerful ? (rlev * 2) : (rlev * 3 / 2);
4070         break;
4071
4072     case RF6_SPELL_START + 12: return -1;   /* RF6_DARKNESS */
4073     case RF6_SPELL_START + 13: return -1;   /* RF6_TRAPS */
4074     case RF6_SPELL_START + 14: return -1;   /* RF6_FORGET */
4075     case RF6_SPELL_START + 15: return -1;   /* RF6_RAISE_DEAD */
4076     case RF6_SPELL_START + 16: return -1;   /* RF6_S_KIN */
4077     case RF6_SPELL_START + 17: return -1;   /* RF6_S_CYBER */
4078     case RF6_SPELL_START + 18: return -1;   /* RF6_S_MONSTER */
4079     case RF6_SPELL_START + 19: return -1;   /* RF6_S_MONSTER */
4080     case RF6_SPELL_START + 20: return -1;   /* RF6_S_ANT */
4081     case RF6_SPELL_START + 21: return -1;   /* RF6_S_SPIDER */
4082     case RF6_SPELL_START + 22: return -1;   /* RF6_S_HOUND */
4083     case RF6_SPELL_START + 23: return -1;   /* RF6_S_HYDRA */
4084     case RF6_SPELL_START + 24: return -1;   /* RF6_S_ANGEL */
4085     case RF6_SPELL_START + 25: return -1;   /* RF6_S_DEMON */
4086     case RF6_SPELL_START + 26: return -1;   /* RF6_S_UNDEAD */
4087     case RF6_SPELL_START + 27: return -1;   /* RF6_S_DRAGON */
4088     case RF6_SPELL_START + 28: return -1;   /* RF6_S_HI_UNDEAD */
4089     case RF6_SPELL_START + 29: return -1;   /* RF6_S_HI_DRAGON */
4090     case RF6_SPELL_START + 30: return -1;   /* RF6_S_AMBERITES */
4091     case RF6_SPELL_START + 31: return -1;   /* RF6_S_UNIQUE */
4092     }
4093
4094     switch (TYPE)
4095     {
4096     case DAM_MAX: dam += maxroll(dice_num, dice_side) * mult / div ; break;
4097     case DAM_MIN: dam += dice_num * 1 * mult / div; break;
4098     case DAM_ROLL: dam += damroll(dice_num, dice_side) * mult / div; break;
4099     }
4100
4101     return dam;
4102 }
4103
4104
4105 /*!
4106 * @brief ¥â¥ó¥¹¥¿¡¼¤Î»È¤¦¼öʸ¤Î°ÒÎϤòÊÖ¤¹ /
4107 * @param SPELL_NUM ¼öʸÈÖ¹æ
4108 * @param m_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼ID
4109 * @param TYPE  DAM_MAX¤ÇºÇÂçÃͤòÊÖ¤·¡¢DAM_MIN¤ÇºÇ¾®ÃͤòÊÖ¤¹¡£DAM_ROLL¤Ï¥À¥¤¥¹¤ò¿¶¤Ã¤ÆÃͤò·èÄꤹ¤ë¡£
4110 * @return ¹¶·â¼öʸ¤Î¥À¥á¡¼¥¸¤òÊÖ¤¹¡£¹¶·â¼öʸ°Ê³°¤Ï-1¤òÊÖ¤¹¡£
4111 */
4112 int monspell_damage(int SPELL_NUM, int m_idx, int TYPE)
4113 {
4114     monster_type    *m_ptr = &m_list[m_idx];
4115     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
4116     int hp;
4117     int rlev = monster_level_idx(m_idx);
4118
4119     if (TYPE == DAM_MAX)
4120     {
4121         hp = m_ptr->max_maxhp;
4122     }
4123     else if (TYPE == DAM_ROLL)
4124     {
4125         hp = m_ptr->hp;
4126     }
4127     return monspell_damage_base(SPELL_NUM, hp, rlev, monster_is_powerful(m_idx), r_ptr, TYPE);
4128 }
4129
4130 /*!
4131 * @brief ¥â¥ó¥¹¥¿¡¼¤Î»È¤¦¼öʸ¤Î°ÒÎϤòÊÖ¤¹ /
4132 * @param SPELL_NUM ¼öʸÈÖ¹æ
4133 * @param r_idx ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼¤Î¼ï²ID
4134 * @param TYPE  DAM_MAX¤ÇºÇÂçÃͤòÊÖ¤·¡¢DAM_MIN¤ÇºÇ¾®ÃͤòÊÖ¤¹¡£DAM_ROLL¤Ï¥À¥¤¥¹¤ò¿¶¤Ã¤ÆÃͤò·èÄꤹ¤ë¡£
4135 * @return ¹¶·â¼öʸ¤Î¥À¥á¡¼¥¸¤òÊÖ¤¹¡£¹¶·â¼öʸ°Ê³°¤Ï-1¤òÊÖ¤¹¡£
4136 */
4137 int monspell_race_damage(int SPELL_NUM, int r_idx, int TYPE)
4138 {
4139     monster_race    *r_ptr = &r_info[r_idx];
4140     int rlev = ((r_ptr->level >= 1) ? r_ptr->level : 1);
4141     bool powerful = r_ptr->flags2 & RF2_POWERFUL;
4142     u32b hp = r_ptr->hdice * (ironman_nightmare ? 2 : 1) * r_ptr->hside;
4143
4144     return monspell_damage_base(SPELL_NUM, MIN(30000, hp), rlev, powerful, r_ptr, TYPE);
4145 }