OSDN Git Service

91e64d6028ba06007f70bbef0c6920223d480529
[hengbandforosx/hengbandosx.git] / src / mspells4.c
1 #include "angband.h"
2
3 char* monster_name(int m_idx, char* m_name)
4 {
5     monster_type    *m_ptr = &m_list[m_idx];
6     monster_desc(m_name, m_ptr, 0x00);
7     return m_name;
8 }
9
10 /* 2 monster each is near by player, return true */
11 bool monster_near_player(int m_idx, int t_idx)
12 {
13     monster_type    *m_ptr = &m_list[m_idx];
14     monster_type    *t_ptr = &m_list[t_idx];
15     return (m_ptr->cdis <= MAX_SIGHT) || (t_ptr->cdis <= MAX_SIGHT);
16 }
17
18 /* player can see monster, return true */
19 bool see_monster(int m_idx)
20 {
21     monster_type    *m_ptr = &m_list[m_idx];
22     return is_seen(m_ptr);
23 }
24
25 bool spell_learnable(int m_idx)
26 {
27     monster_type    *m_ptr = &m_list[m_idx];
28     /* Extract the "see-able-ness" */
29     bool seen = (!p_ptr->blind && m_ptr->ml);
30
31     bool maneable = player_has_los_bold(m_ptr->fy, m_ptr->fx);
32     return (seen && maneable && !world_monster);
33 }
34
35 int monster_level_idx(int m_idx)
36 {
37     monster_type    *m_ptr = &m_list[m_idx];
38     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
39     int rlev = ((r_ptr->level >= 1) ? r_ptr->level : 1);
40     return rlev;
41 }
42
43 bool monster_is_powerful(int m_idx)
44 {
45     monster_type    *m_ptr = &m_list[m_idx];
46     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
47     return (r_ptr->flags2 & RF2_POWERFUL);
48 }
49
50 void monspell_message(int m_idx, int t_idx, cptr msg1, cptr msg2, cptr msg3, int TARGET_TYPE)
51 {
52     bool known = monster_near_player(m_idx, t_idx);
53     bool see_either = see_monster(m_idx) || see_monster(t_idx);
54     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
55     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
56         char m_name[80], t_name[80];
57     monster_name(m_idx, m_name);
58         monster_name(t_idx, t_name);
59
60
61     if (mon_to_player || (mon_to_mon && known && see_either))
62         disturb(1, 1);
63
64     if (p_ptr->blind)
65     {
66         if (mon_to_player || (mon_to_mon && known && see_either))
67             msg_format(msg1, m_name);
68     }
69     else
70     {
71         if (mon_to_player)
72         {
73             msg_format(msg2, m_name);
74         }
75         else if (mon_to_mon && known && see_either)
76         {
77             msg_format(msg3, m_name, t_name);
78         }
79     }
80
81     if (mon_to_mon && known && !see_either)
82         mon_fight = TRUE;
83 }
84
85 void spell_RF4_SHRIEK(int m_idx, int t_idx, int TARGET_TYPE)
86 {
87         bool known = monster_near_player(m_idx, t_idx);
88     bool see_m = see_monster(m_idx);
89         char m_name[80], t_name[80];
90     monster_name(m_idx, m_name);
91         monster_name(t_idx, t_name);
92
93     if (TARGET_TYPE == MONSTER_TO_MONSTER)
94     {
95         if (known)
96         {
97             if (see_m)
98             {
99                 msg_format(_("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¶«¤ó¤À¡£", "%^s shrieks at %s."), m_name, t_name);
100             }
101             else
102             {
103                 mon_fight = TRUE;
104             }
105         }
106         (void)set_monster_csleep(t_idx, 0);
107     }
108     else if (TARGET_TYPE == MONSTER_TO_PLAYER)
109     {
110         disturb(1, 1);
111         msg_format(_("%^s¤¬¤«¤ó¹â¤¤¶âÀÚ¤êÀ¼¤ò¤¢¤²¤¿¡£", "%^s makes a high pitched shriek."), m_name);
112         aggravate_monsters(m_idx);
113     }
114 }
115
116 void spell_RF4_DISPEL(int m_idx, int t_idx, int TARGET_TYPE)
117 {
118     bool known = monster_near_player(m_idx, t_idx);
119     bool see_m = see_monster(m_idx);
120         char m_name[80], t_name[80];
121     monster_name(m_idx, m_name);
122         monster_name(t_idx, t_name);
123
124
125     if (TARGET_TYPE == MONSTER_TO_MONSTER)
126     {
127         if (known)
128         {
129             if (see_m)
130             {
131                 msg_format(_("%^s¤¬%s¤ËÂФ·¤ÆËâÎϾõî¤Î¼öʸ¤òÇ°¤¸¤¿¡£",
132                     "%^s invokes a dispel magic at %s."), m_name, t_name);
133             }
134             else
135             {
136                 mon_fight = TRUE;
137             }
138         }
139
140         if (t_idx == p_ptr->riding) dispel_player();
141         dispel_monster_status(t_idx);
142     }
143     else if (TARGET_TYPE == MONSTER_TO_PLAYER)
144     {
145         disturb(1, 1);
146
147         if (p_ptr->blind)
148             msg_format(_("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."), m_name);
149         else
150             msg_format(_("%^s¤¬ËâÎϾõî¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a dispel magic."), m_name);
151
152         dispel_player();
153         if (p_ptr->riding) dispel_monster_status(p_ptr->riding);
154
155         if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON))
156             msg_print(_("¤ä¤ê¤ä¤¬¤Ã¤¿¤Ê¡ª", ""));
157
158         learn_spell(MS_DISPEL);
159     }
160 }
161
162 int spell_RF4_ROCKET(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
163 {
164     int dam;
165     monster_type    *m_ptr = &m_list[m_idx];
166
167     monspell_message(m_idx, t_idx,
168         _("%^s¤¬²¿¤«¤ò¼Í¤Ã¤¿¡£", "%^s shoots something."),
169         _("%^s¤¬¥í¥±¥Ã¥È¤òȯ¼Í¤·¤¿¡£", "%^s fires a rocket."),
170         _("%^s¤¬%s¤Ë¥í¥±¥Ã¥È¤òȯ¼Í¤·¤¿¡£", "%^s fires a rocket at %s."),
171         TARGET_TYPE);
172
173     dam = (m_ptr->hp / 4) > 800 ? 800 : (m_ptr->hp / 4);
174     breath(y, x, m_idx, GF_ROCKET, dam, 2, FALSE, MS_ROCKET, TARGET_TYPE);
175     if (TARGET_TYPE == MONSTER_TO_PLAYER)
176         update_smart_learn(m_idx, DRS_SHARD);
177     return dam;
178 }
179
180 int spell_RF4_SHOOT(int y, int x, int m_idx, int t_idx,int TARGET_TYPE)
181 {
182     int dam;
183     monster_type    *m_ptr = &m_list[m_idx];
184     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
185     
186     monspell_message(m_idx, t_idx,
187         _("%^s¤¬´ñ̯¤Ê²»¤òȯ¤·¤¿¡£", "%^s makes a strange noise."),
188         _("%^s¤¬Ìð¤òÊü¤Ã¤¿¡£", "%^s fires an arrow."),
189         _("%^s¤¬%s¤ËÌð¤òÊü¤Ã¤¿¡£", "%^s fires an arrow at %s."),
190         TARGET_TYPE);
191
192     dam = damroll(r_ptr->blow[0].d_dice, r_ptr->blow[0].d_side);
193     bolt(m_idx, y, x, GF_ARROW, dam, MS_SHOOT, TARGET_TYPE);
194     sound(SOUND_SHOOT);
195
196     return dam;
197 }
198
199 int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
200 {
201     int dam, ms_type, drs_type;
202     cptr type_s;
203     bool smart_learn = TRUE;
204     monster_type    *m_ptr = &m_list[m_idx];
205     bool known = monster_near_player(m_idx, t_idx);
206     bool see_either = see_monster(m_idx) || see_monster(t_idx);
207     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
208     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
209         char m_name[80], t_name[80];
210     monster_name(m_idx, m_name);
211         monster_name(t_idx, t_name);
212
213     switch (GF_TYPE)
214     {
215     case GF_ACID:
216         dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
217         type_s = _("»À", "acid");
218         ms_type = MS_BR_ACID;
219         drs_type = DRS_ACID;
220         break;
221     case GF_ELEC:
222         dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
223         type_s = _("°ðºÊ", "lightning");
224         ms_type = MS_BR_ELEC;
225         drs_type = DRS_ELEC;
226         break;
227     case GF_FIRE:
228         dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
229         type_s = _("²Ð±ê", "fire");
230         ms_type = MS_BR_FIRE;
231         drs_type = DRS_FIRE;
232         break;
233     case GF_COLD:
234         dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
235         type_s = _("Î䵤", "frost");
236         ms_type = MS_BR_COLD;
237         drs_type = DRS_COLD;
238         break;
239     case GF_POIS:
240         dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
241         type_s = _("¥¬¥¹", "gas");
242         ms_type = MS_BR_POIS;
243         drs_type = DRS_POIS;
244         break;
245     case GF_NETHER:
246         dam = ((m_ptr->hp / 6) > 550 ? 550 : (m_ptr->hp / 6));
247         type_s = _("ÃϹö", "nether");
248         ms_type = MS_BR_NETHER;
249         drs_type = DRS_NETH;
250         break;
251     case GF_LITE:
252         dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
253         type_s = _("Á®¸÷", "light");
254         ms_type = MS_BR_LITE;
255         drs_type = DRS_LITE;
256         break;
257     case GF_DARK:
258         dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
259         type_s = _("°Å¹õ", "darkness");
260         ms_type = MS_BR_DARK;
261         drs_type = DRS_DARK;
262         break;
263     case GF_CONFUSION:
264         dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
265         type_s = _("º®Íð", "confusion");
266         ms_type = MS_BR_CONF;
267         drs_type = DRS_CONF;
268         break;
269     case GF_SOUND:
270         dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
271         type_s = _("¹ì²»", "sound");
272         ms_type = MS_BR_SOUND;
273         drs_type = DRS_SOUND;
274         break;
275     case GF_CHAOS:
276         dam = ((m_ptr->hp / 6) > 600 ? 600 : (m_ptr->hp / 6));
277         type_s = _("¥«¥ª¥¹", "chaos");
278         ms_type = MS_BR_CHAOS;
279         drs_type = DRS_CHAOS;
280         break;
281     case GF_DISENCHANT:
282         dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
283         type_s = _("Îô²½", "disenchantment");
284         ms_type = MS_BR_DISEN;
285         drs_type = DRS_DISEN;
286         break;
287     case GF_NEXUS:
288         dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
289         type_s = _("°ø²Ìº®Íð", "nexus");
290         ms_type = MS_BR_NEXUS;
291         drs_type = DRS_NEXUS;
292         break;
293     case GF_TIME:
294         dam = ((m_ptr->hp / 3) > 150 ? 150 : (m_ptr->hp / 3));
295         type_s = _("»þ´ÖµÕž", "time");
296         ms_type = MS_BR_TIME;
297         smart_learn = FALSE;
298         break;
299     case GF_INERTIA:
300         dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
301         type_s = _("ÃÙÆß", "inertia");
302         ms_type = MS_BR_INERTIA;
303         smart_learn = FALSE;
304         break;
305     case GF_GRAVITY:
306         dam = ((m_ptr->hp / 3) > 200 ? 200 : (m_ptr->hp / 3));
307         type_s = _("½ÅÎÏ", "gravity");
308         ms_type = MS_BR_GRAVITY;
309         smart_learn = FALSE;
310         break;
311     case GF_SHARDS:
312         dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
313         type_s = _("ÇËÊÒ", "shards");
314         ms_type = MS_BR_SHARDS;
315         drs_type = DRS_SHARD;
316         break;
317     case GF_PLASMA:
318         dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
319         type_s = _("¥×¥é¥º¥Þ", "plasma");
320         ms_type = MS_BR_PLASMA;
321         smart_learn = FALSE;
322         break;
323     case GF_FORCE:
324         dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
325         type_s = _("¥Õ¥©¡¼¥¹", "force");
326         ms_type = MS_BR_FORCE;
327         smart_learn = FALSE;
328         break;
329     case GF_MANA:
330         dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
331         type_s = _("ËâÎÏ", "mana");
332         ms_type = MS_BR_MANA;
333         smart_learn = FALSE;
334         break;
335     case GF_NUKE:
336         dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
337         type_s = _("Êü¼ÍÀ­ÇÑ´þʪ", "toxic waste");
338         ms_type = MS_BR_NUKE;
339         drs_type = DRS_POIS;
340         break;
341     case GF_DISINTEGRATE:
342         dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
343         type_s = _("ʬ²ò", "disintegration");
344         ms_type = MS_BR_DISI;
345         smart_learn = FALSE;
346         break;
347     default:
348         break;
349     }
350
351     if (mon_to_player || (mon_to_mon && known && see_either))
352         disturb(1, 1);
353
354     if (m_ptr->r_idx == MON_JAIAN && GF_TYPE == GF_SOUND)
355     {
356         msg_format(_("¡Ö¥Ü¥©¥¨¡Á¡Á¡Á¡Á¡Á¡Á¡×", "'Booooeeeeee'"));
357     }
358     else if (m_ptr->r_idx == MON_BOTEI && GF_TYPE == GF_SHARDS)
359     {
360         msg_format(_("¡Ö¥ÜÄë¥Ó¥ë¥«¥Ã¥¿¡¼¡ª¡ª¡ª¡×", "'Boty-Build cutter!!!'"));
361     }
362     else if (p_ptr->blind)
363     {
364         if (mon_to_player || (mon_to_mon && known && see_either))
365             msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
366     }
367     else
368     {
369         if (mon_to_player)
370         {
371             msg_format(_("%^s¤¬%^s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes %^s."), m_name, type_s);
372         }
373         else if (mon_to_mon && known && see_either)
374         {
375             _(msg_format("%^s¤¬%^s¤Ë%^s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name, type_s),
376               msg_format("%^s breathes %^s at %^s.", m_name, type_s, t_name));
377         }
378     }
379
380     if (mon_to_mon && known && !see_either)
381         mon_fight = TRUE;
382
383     sound(SOUND_BREATH);
384     breath(y, x, m_idx, GF_TYPE, dam, 0, TRUE, ms_type, TARGET_TYPE);
385     if (smart_learn && mon_to_player)
386         update_smart_learn(m_idx, drs_type);
387
388     return dam;
389 }
390
391 int spell_RF4_BA_NUKE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
392 {
393     int dam;
394     int rlev = monster_level_idx(m_idx);
395
396     monspell_message(m_idx, t_idx,
397         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
398         _("%^s¤¬Êü¼Íǽµå¤òÊü¤Ã¤¿¡£", "%^s casts a ball of radiation."),
399         _("%^s¤¬%s¤ËÊü¼Íǽµå¤òÊü¤Ã¤¿¡£", "%^s casts a ball of radiation at %s."),
400         TARGET_TYPE);
401
402     dam = (rlev + damroll(10, 6)) * (monster_is_powerful(m_idx) ? 2 : 1);
403     breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, TARGET_TYPE);
404     if (TARGET_TYPE == MONSTER_TO_PLAYER)
405         update_smart_learn(m_idx, DRS_POIS);
406
407     return dam;
408 }
409
410 int spell_RF4_BA_CHAO(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
411 {
412     int dam;
413     int rlev = monster_level_idx(m_idx);
414
415     monspell_message(m_idx, t_idx,
416         _("%^s¤¬¶²¤í¤·¤²¤Ë¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles frighteningly."),
417         _("%^s¤¬½ã¥í¥°¥ë¥¹¤òÊü¤Ã¤¿¡£", "%^s invokes a raw Logrus."),
418         _("%^s¤¬%s¤Ë½ã¥í¥°¥ë¥¹¤òÊü¤Ã¤¿¡£", "%^s invokes raw Logrus upon %s."),
419         TARGET_TYPE);
420
421     dam = (monster_is_powerful(m_idx) ? (rlev * 3) : (rlev * 2)) + damroll(10, 10);
422
423     breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, TARGET_TYPE);
424     if (TARGET_TYPE == MONSTER_TO_PLAYER)
425         update_smart_learn(m_idx, DRS_CHAOS);
426
427     return dam;
428 }
429
430 int spell_RF5_BA_ACID(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
431 {
432     int dam, rad;
433     int rlev = monster_level_idx(m_idx);
434
435     monspell_message(m_idx, t_idx,
436         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
437         _("%^s¤¬¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an acid ball."),
438         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£",
439           "%^s casts an acid ball at %s."),
440         TARGET_TYPE);
441
442     if (monster_is_powerful(m_idx))
443     {
444         rad = 4;
445         dam = (rlev * 4) + 50 + damroll(10, 10);
446     }
447     else
448     {
449         rad = 2;
450         dam = (randint1(rlev * 3) + 15);
451     }
452
453     breath(y, x, m_idx, GF_ACID, dam, rad, FALSE, MS_BALL_ACID, TARGET_TYPE);
454     if (TARGET_TYPE == MONSTER_TO_PLAYER)
455         update_smart_learn(m_idx, DRS_ACID);
456
457     return dam;
458 }
459
460 int spell_RF5_BA_ELEC(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
461 {
462     int dam, rad;
463     int rlev = monster_level_idx(m_idx);
464
465     monspell_message(m_idx, t_idx,
466         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
467         _("%^s¤¬¥µ¥ó¥À¡¼¡¦¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a lightning ball."),
468         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", 
469           "%^s casts a lightning ball at %s."),
470         TARGET_TYPE);
471
472     if (monster_is_powerful(m_idx))
473     {
474         rad = 4;
475         dam = (rlev * 4) + 50 + damroll(10, 10);
476     }
477     else
478     {
479         rad = 2;
480         dam = (randint1(rlev * 3 / 2) + 8);
481     }
482     
483     breath(y, x, m_idx, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, TARGET_TYPE);
484     if (TARGET_TYPE == MONSTER_TO_PLAYER)
485         update_smart_learn(m_idx, DRS_ELEC);
486
487     return dam;
488 }
489
490 int spell_RF5_BA_FIRE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
491 {
492     int dam, rad;
493     monster_type    *m_ptr = &m_list[m_idx];
494     int rlev = monster_level_idx(m_idx);
495
496     if (m_ptr->r_idx == MON_ROLENTO)
497     {
498         monspell_message(m_idx, t_idx,
499             _("%s¤¬²¿¤«¤òÅꤲ¤¿¡£", "%^s throws something."),
500             _("%s¤Ï¼êÜØÃƤòÅꤲ¤¿¡£", "%^s throws a hand grenade."),
501             _("%^s¤¬%^s¤Ë¸þ¤«¤Ã¤Æ¼êÜØÃƤòÅꤲ¤¿¡£", "%^s throws a hand grenade."),
502             TARGET_TYPE);
503     }
504     else
505     {
506         monspell_message(m_idx, t_idx,
507             _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
508             _("%^s¤¬¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a fire ball."),
509             _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£",
510             "%^s casts a fire ball at %s."),
511             TARGET_TYPE);
512     }
513
514     if (monster_is_powerful(m_idx))
515     {
516         rad = 4;
517         dam = (rlev * 4) + 50 + damroll(10, 10);
518     }
519     else
520     {
521         rad = 2;
522         dam = (randint1(rlev * 7 / 2) + 10);
523     }
524
525     breath(y, x, m_idx, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, TARGET_TYPE);
526     if (TARGET_TYPE == MONSTER_TO_PLAYER)
527         update_smart_learn(m_idx, DRS_FIRE);
528
529     return dam;
530 }
531
532 int spell_RF5_BA_COLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
533 {
534     int dam, rad;
535     int rlev = monster_level_idx(m_idx);
536
537     monspell_message(m_idx, t_idx,
538         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
539         _("%^s¤¬¥¢¥¤¥¹¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a frost ball."),
540         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥¤¥¹¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£",
541         "%^s casts a frost ball at %s."),
542         TARGET_TYPE);
543
544     if (monster_is_powerful(m_idx))
545     {
546         rad = 4;
547         dam = (rlev * 4) + 50 + damroll(10, 10);
548     }
549     else
550     {
551         rad = 2;
552         dam = (randint1(rlev * 3 / 2) + 10);
553     }
554
555     breath(y, x, m_idx, GF_COLD, dam, rad, FALSE, MS_BALL_COLD, TARGET_TYPE);
556     if (TARGET_TYPE == MONSTER_TO_PLAYER)
557         update_smart_learn(m_idx, DRS_COLD);
558
559     return dam;
560 }
561
562
563 int spell_RF5_BA_POIS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
564 {
565     int dam;
566
567     monspell_message(m_idx, t_idx,
568         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
569         _("%^s¤¬°­½­±À¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a stinking cloud."),
570         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ°­½­±À¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a stinking cloud at %s."),
571         TARGET_TYPE);
572
573     dam = damroll(12, 2) * (monster_is_powerful(m_idx) ? 2 : 1);
574     breath(y, x, m_idx, GF_POIS, dam, 2, FALSE, MS_BALL_POIS, TARGET_TYPE);
575     if (TARGET_TYPE == MONSTER_TO_PLAYER)
576         update_smart_learn(m_idx, DRS_POIS);
577
578     return dam;
579 }
580
581 int spell_RF5_BA_NETH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
582 {
583     int dam;
584     int rlev = monster_level_idx(m_idx);
585
586     monspell_message(m_idx, t_idx,
587         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
588         _("%^s¤¬ÃϹöµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether ball."),
589         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤ÆÃϹöµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether ball at %s."),
590         TARGET_TYPE);
591
592     dam = 50 + damroll(10, 10) + (rlev * (monster_is_powerful(m_idx) ? 2 : 1));
593     breath(y, x, m_idx, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, TARGET_TYPE);
594     if (TARGET_TYPE == MONSTER_TO_PLAYER)
595         update_smart_learn(m_idx, DRS_NETH);
596
597     return dam;
598 }
599
600 int spell_RF5_BA_WATE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
601 {
602     int dam;
603     int rlev = monster_level_idx(m_idx);
604     bool known = monster_near_player(m_idx, t_idx);
605     bool see_either = see_monster(m_idx) || see_monster(t_idx);
606     bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
607     bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
608         char t_name[80];
609     monster_name(t_idx, t_name);
610
611
612     monspell_message(m_idx, t_idx,
613         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
614         _("%^s¤¬Î®¤ì¤ë¤è¤¦¤Ê¿È¿¶¤ê¤ò¤·¤¿¡£", "%^s gestures fluidly."),
615         _("%^s¤¬%s¤ËÂФ·¤Æή¤ì¤ë¤è¤¦¤Ê¿È¿¶¤ê¤ò¤·¤¿¡£", "%^s gestures fluidly at %s."),
616         TARGET_TYPE);
617
618     if (mon_to_player)
619     {
620         msg_format(_("¤¢¤Ê¤¿¤Ï±²´¬¤­¤Ë°û¤ß¹þ¤Þ¤ì¤¿¡£", "You are engulfed in a whirlpool."));
621     }
622     else if (mon_to_mon && known && see_either && !p_ptr->blind)
623     {
624         msg_format(_("%^s¤Ï±²´¬¤Ë°û¤ß¹þ¤Þ¤ì¤¿¡£", "%^s is engulfed in a whirlpool."), t_name);
625     }
626
627     dam = (monster_is_powerful(m_idx) ? randint1(rlev * 3) : randint1(rlev * 2)) + 50;
628     breath(y, x, m_idx, GF_WATER, dam, 4, FALSE, MS_BALL_WATER, TARGET_TYPE);
629     return dam;
630 }
631
632
633 int spell_RF5_BA_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
634 {
635     int dam;
636     int rlev = monster_level_idx(m_idx);
637
638     monspell_message(m_idx, t_idx,
639         _("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."),
640         _("%^s¤¬ËâÎϤÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a mana storm."),
641         _("%^s¤¬%s¤ËÂФ·¤ÆËâÎϤÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a mana storm upon %s."),
642         TARGET_TYPE);
643
644     dam = (rlev * 4) + 50 + damroll(10, 10);
645     breath(y, x, m_idx, GF_MANA, dam, 4, FALSE, MS_BALL_MANA, TARGET_TYPE);
646     return dam;
647 }
648
649 int spell_RF5_BA_DARK(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
650 {
651     int dam;
652     int rlev = monster_level_idx(m_idx);
653
654     monspell_message(m_idx, t_idx,
655         _("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."),
656         _("%^s¤¬°Å¹õ¤ÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a darkness storm."),
657         _("%^s¤¬%s¤ËÂФ·¤Æ°Å¹õ¤ÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a darkness storm upon %s."),
658         TARGET_TYPE);
659
660     dam = (rlev * 4) + 50 + damroll(10, 10);
661     breath(y, x, m_idx, GF_DARK, dam, 4, FALSE, MS_BALL_DARK, TARGET_TYPE);
662     if (TARGET_TYPE == MONSTER_TO_PLAYER)
663         update_smart_learn(m_idx, DRS_DARK);
664
665     return dam;
666 }
667
668 int spell_RF5_DRAIN_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
669 {
670     int rlev = monster_level_idx(m_idx);
671     int dam;
672         char m_name[80], t_name[80];
673     monster_name(m_idx, m_name);
674         monster_name(t_idx, t_name);
675
676
677     if (TARGET_TYPE == MONSTER_TO_PLAYER)
678     {
679         disturb(1, 1);
680     }
681     else if (TARGET_TYPE == MONSTER_TO_MONSTER && see_monster(m_idx))
682     { 
683         /* Basic message */
684         msg_format(_("%^s¤ÏÀº¿À¥¨¥Í¥ë¥®¡¼¤ò%s¤«¤éµÛ¤¤¤È¤Ã¤¿¡£", "%^s draws psychic energy from %s."), m_name, t_name);
685     }
686
687     dam = ((randint1(rlev) / 2) + 1);
688     breath(y, x, m_idx, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, TARGET_TYPE);
689     if (TARGET_TYPE == MONSTER_TO_PLAYER)
690         update_smart_learn(m_idx, DRS_MANA);
691     
692     return dam;
693 }
694
695 int spell_RF5_MIND_BLAST(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
696 {
697     monster_type    *m_ptr = &m_list[m_idx];
698     bool seen = (!p_ptr->blind && m_ptr->ml);
699     int rlev = monster_level_idx(m_idx);
700     int dam;
701         char m_name[80], t_name[80];
702     monster_name(m_idx, m_name);
703         monster_name(t_idx, t_name);
704
705
706     if (TARGET_TYPE == MONSTER_TO_PLAYER)
707     {
708         disturb(1, 1);
709         if (!seen)
710             msg_print(_("²¿¤«¤¬¤¢¤Ê¤¿¤ÎÀº¿À¤ËÇ°¤òÊü¤Ã¤Æ¤¤¤ë¤è¤¦¤À¡£", "You feel something focusing on your mind."));
711         else
712             msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¤Ë¤é¤ó¤Ç¤¤¤ë¡£", "%^s gazes deep into your eyes."), m_name);
713     }
714     else if (TARGET_TYPE == MONSTER_TO_MONSTER && see_monster(m_idx))
715     {
716         msg_format(_("%^s¤Ï%s¤ò¤¸¤Ã¤Èâˤó¤À¡£", "%^s gazes intently at %s."), m_name, t_name);
717     }
718
719     dam = damroll(7, 7);
720     breath(y, x, m_idx, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, TARGET_TYPE);
721     return dam;
722 }
723
724 int spell_RF5_BRAIN_SMASH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
725 {
726     monster_type    *m_ptr = &m_list[m_idx];
727     bool seen = (!p_ptr->blind && m_ptr->ml);
728     int rlev = monster_level_idx(m_idx);
729     int dam;
730         char m_name[80], t_name[80];
731     monster_name(m_idx, m_name);
732         monster_name(t_idx, t_name);
733
734
735     if (TARGET_TYPE == MONSTER_TO_PLAYER)
736     {
737         disturb(1, 1);
738         if (!seen)
739             msg_print(_("²¿¤«¤¬¤¢¤Ê¤¿¤ÎÀº¿À¤ËÇ°¤òÊü¤Ã¤Æ¤¤¤ë¤è¤¦¤À¡£", "You feel something focusing on your mind."));
740         else
741             msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¤Ë¤é¤ó¤Ç¤¤¤ë¡£", "%^s gazes deep into your eyes."), m_name);
742     }
743     else if (TARGET_TYPE == MONSTER_TO_MONSTER && see_monster(m_idx))
744     {
745         msg_format(_("%^s¤Ï%s¤ò¤¸¤Ã¤Èâˤó¤À¡£", "%^s gazes intently at %s."), m_name, t_name);
746     }
747
748     dam = damroll(12, 12);
749     breath(y, x, m_idx, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, TARGET_TYPE);
750     return dam;
751 }
752
753 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)
754 {
755     int rlev = monster_level_idx(m_idx);
756         char m_name[80], t_name[80];
757     monster_name(m_idx, m_name);
758         monster_name(t_idx, t_name);
759
760
761     if (TARGET_TYPE == MONSTER_TO_PLAYER)
762     {
763         disturb(1, 1);
764         if (p_ptr->blind)
765             msg_format(msg1, m_name);
766         else
767             msg_format(msg2, m_name);
768     }
769     else if (TARGET_TYPE == MONSTER_TO_MONSTER)
770     {
771         if (see_monster(m_idx))
772         {
773             msg_format(msg3, m_name, t_name);
774         }
775         else
776         {
777             mon_fight = TRUE;
778         }
779     }
780     breath(y, x, m_idx, GF_TYPE, dam, 0, FALSE, MS_TYPE, TARGET_TYPE);
781 }
782
783 int spell_RF5_CAUSE_1(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
784 {
785     cptr msg1, msg2, msg3;
786     int dam = damroll(3, 8);
787
788     msg1 = _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles.");
789     msg2 = _("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¼ö¤Ã¤¿¡£", "%^s points at you and curses.");
790     msg3 = _("%^s¤Ï%s¤ò»Ø¤µ¤·¤Æ¼ö¤¤¤ò¤«¤±¤¿¡£", "%^s points at %s and curses.");
791     
792     spell_RF5_CAUSE(GF_CAUSE_1, dam, y, x, m_idx, t_idx, msg1, msg2, msg3, MS_CAUSE_1, TARGET_TYPE);
793     return dam;
794 }
795
796 int spell_RF5_CAUSE_2(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
797 {
798     cptr msg1, msg2, msg3;
799     int dam = damroll(8, 8);
800
801     msg1 = _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles.");
802     msg2 = _("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼ö¤Ã¤¿¡£", "%^s points at you and curses horribly.");
803     msg3 = _("%^s¤Ï%s¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼ö¤¤¤ò¤«¤±¤¿¡£", "%^s points at %s and curses horribly.");
804
805     spell_RF5_CAUSE(GF_CAUSE_2, dam, y, x, m_idx, t_idx, msg1, msg2, msg3, MS_CAUSE_2, TARGET_TYPE);
806     return dam;
807 }
808
809 int spell_RF5_CAUSE_3(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
810 {
811     cptr msg1, msg2, msg3;
812     int dam = damroll(10, 15);
813
814     msg1 = _("%^s¤¬²¿¤«¤òÂçÀ¼¤Ç¶«¤ó¤À¡£", "%^s mumbles loudly.");
815     msg2 = _("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼öʸ¤ò¾§¤¨¤¿¡ª", "%^s points at you, incanting terribly!");
816     msg3 = _("%^s¤Ï%s¤ò»Ø¤µ¤·¡¢¶²¤í¤·¤²¤Ë¼öʸ¤ò¾§¤¨¤¿¡ª", "%^s points at %s, incanting terribly!");
817
818     spell_RF5_CAUSE(GF_CAUSE_3, dam, y, x, m_idx, t_idx, msg1, msg2, msg3, MS_CAUSE_3, TARGET_TYPE);
819     return dam;
820 }
821
822 int spell_RF5_CAUSE_4(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
823 {
824     cptr msg1, msg2, msg3;
825     int dam = damroll(15, 15);
826
827     msg1 = _("%^s¤¬¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£", "%^s screams the word 'DIE!'");
828     msg2 = _("%^s¤¬¤¢¤Ê¤¿¤ÎÈ빦¤òÆͤ¤¤Æ¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£", "%^s points at you, screaming the word DIE!");
829     msg3 = _("%^s¤¬%s¤ÎÈ빦¤òÆͤ¤¤Æ¡¢¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£", "%^s points at %s, screaming the word, 'DIE!'");
830
831     spell_RF5_CAUSE(GF_CAUSE_4, dam, y, x, m_idx, t_idx, msg1, msg2, msg3, MS_CAUSE_4, TARGET_TYPE);
832     return dam;
833 }
834
835 int spell_RF5_BO_ACID(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
836 {
837     int dam;
838     int rlev = monster_level_idx(m_idx);
839
840     monspell_message(m_idx, t_idx,
841         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
842         _("%^s¤¬¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a acid bolt."),
843         _("%s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an acid bolt at %s."),
844         TARGET_TYPE);
845
846     dam = (damroll(7, 8) + (rlev / 3)) * (monster_is_powerful(m_idx) ? 2 : 1);
847     bolt(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, TARGET_TYPE);
848     if (TARGET_TYPE == MONSTER_TO_PLAYER)
849     {
850         update_smart_learn(m_idx, DRS_ACID);
851         update_smart_learn(m_idx, DRS_REFLECT);
852     }
853     return dam;
854 }
855
856 int spell_RF5_BO_ELEC(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
857 {
858     int dam;
859     int rlev = monster_level_idx(m_idx);
860
861     monspell_message(m_idx, t_idx,
862         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
863         _("%^s¤¬¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a lightning bolt."),
864         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a lightning bolt at %s."),
865         TARGET_TYPE);
866
867     dam = (damroll(4, 8) + (rlev / 3)) * (monster_is_powerful(m_idx) ? 2 : 1);
868     bolt(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, TARGET_TYPE);
869     if (TARGET_TYPE == MONSTER_TO_PLAYER)
870     {
871         update_smart_learn(m_idx, DRS_ELEC);
872         update_smart_learn(m_idx, DRS_REFLECT);
873     }
874     return dam;
875 }
876
877 int spell_RF5_BO_FIRE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
878 {
879     int dam;
880     int rlev = monster_level_idx(m_idx);
881
882     monspell_message(m_idx, t_idx,
883         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
884         _("%^s¤¬¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a fire bolt."),
885         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a fire bolt at %s."),
886         TARGET_TYPE);
887
888     dam = (damroll(9, 8) + (rlev / 3)) * (monster_is_powerful(m_idx) ? 2 : 1);
889     bolt(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, TARGET_TYPE);
890     if (TARGET_TYPE == MONSTER_TO_PLAYER)
891     {
892         update_smart_learn(m_idx, DRS_FIRE);
893         update_smart_learn(m_idx, DRS_REFLECT);
894     }
895     return dam;
896 }
897
898 int spell_RF5_BO_COLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
899 {
900     int dam;
901     int rlev = monster_level_idx(m_idx);
902
903     monspell_message(m_idx, t_idx,
904         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
905         _("%^s¤¬¥¢¥¤¥¹¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a frost bolt."),
906         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥¤¥¹¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a frost bolt at %s."),
907         TARGET_TYPE);
908
909     dam = (damroll(6, 8) + (rlev / 3)) * (monster_is_powerful(m_idx) ? 2 : 1);
910     bolt(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, TARGET_TYPE);
911     if (TARGET_TYPE == MONSTER_TO_PLAYER)
912     {
913         update_smart_learn(m_idx, DRS_COLD);
914         update_smart_learn(m_idx, DRS_REFLECT);
915     }
916     return dam;
917 }
918
919 int spell_RF5_BA_LITE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
920 {
921     int dam;
922     int rlev = monster_level_idx(m_idx);
923
924     monspell_message(m_idx, t_idx,
925         _("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."),
926         _("%^s¤¬¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a starburst."),
927         _("%^s¤¬%s¤ËÂФ·¤Æ¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a starburst upon %s."),
928         TARGET_TYPE);
929
930     dam = (rlev * 4) + 50 + damroll(10, 10);
931     breath(y, x, m_idx, GF_LITE, dam, 4, FALSE, MS_STARBURST, TARGET_TYPE);
932     if (TARGET_TYPE == MONSTER_TO_PLAYER)
933         update_smart_learn(m_idx, DRS_LITE);
934
935     return dam;
936 }
937
938
939 int spell_RF5_BO_NETH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
940 {
941     int dam;
942     int rlev = monster_level_idx(m_idx);
943
944     monspell_message(m_idx, t_idx,
945         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
946         _("%^s¤¬ÃϹö¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether bolt."),
947         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤ÆÃϹö¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether bolt at %s."),
948         TARGET_TYPE);
949
950     dam = 30 + damroll(5, 5) + (rlev * 4) / (monster_is_powerful(m_idx) ? 2 : 3);
951     bolt(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, TARGET_TYPE);
952     if (TARGET_TYPE == MONSTER_TO_PLAYER)
953     {
954         update_smart_learn(m_idx, DRS_NETH);
955         update_smart_learn(m_idx, DRS_REFLECT);
956     }
957     return dam;
958 }
959
960 int spell_RF5_BO_WATE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
961 {
962     int dam;
963     int rlev = monster_level_idx(m_idx);
964
965     monspell_message(m_idx, t_idx,
966         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
967         _("%^s¤¬¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a water bolt."),
968         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a water bolt at %s."),
969         TARGET_TYPE);
970
971     dam = damroll(10, 10) + (rlev * 3 / (monster_is_powerful(m_idx) ? 2 : 3));
972     bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, TARGET_TYPE);
973     if (TARGET_TYPE == MONSTER_TO_PLAYER)
974     {
975         update_smart_learn(m_idx, DRS_REFLECT);
976     }
977     return dam;
978 }
979
980 int spell_RF5_BO_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
981 {
982     int dam;
983     int rlev = monster_level_idx(m_idx);
984
985     monspell_message(m_idx, t_idx,
986         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
987         _("%^s¤¬ËâÎϤÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a mana bolt."),
988         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤ÆËâÎϤÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a mana bolt at %s."),
989         TARGET_TYPE);
990
991     dam = randint1(rlev * 7 / 2) + 50;
992     bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, TARGET_TYPE);
993     if (TARGET_TYPE == MONSTER_TO_PLAYER)
994     {
995         update_smart_learn(m_idx, DRS_REFLECT);
996     }
997     return dam;
998 }
999
1000 int spell_RF5_BO_PLAS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1001 {
1002     int dam;
1003     int rlev = monster_level_idx(m_idx);
1004
1005     monspell_message(m_idx, t_idx,
1006         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
1007         _("%^s¤¬¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a plasma bolt."),
1008         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a plasma bolt at %s."),
1009         TARGET_TYPE);
1010
1011     dam = 10 + damroll(8, 7) + (rlev * 3 / (monster_is_powerful(m_idx) ? 2 : 3));
1012     bolt(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, TARGET_TYPE);
1013     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1014     {
1015         update_smart_learn(m_idx, DRS_REFLECT);
1016     }
1017     return dam;
1018 }
1019
1020 int spell_RF5_BO_ICEE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1021 {
1022     int dam;
1023     int rlev = monster_level_idx(m_idx);
1024
1025     monspell_message(m_idx, t_idx,
1026         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
1027         _("%^s¤¬¶Ë´¨¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an ice bolt."),
1028         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¶Ë´¨¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an ice bolt at %s."),
1029         TARGET_TYPE);
1030
1031     dam = damroll(6, 6) + (rlev * 3 / (monster_is_powerful(m_idx) ? 2 : 3));
1032     bolt(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, TARGET_TYPE);
1033     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1034     {
1035         update_smart_learn(m_idx, DRS_COLD);
1036         update_smart_learn(m_idx, DRS_REFLECT);
1037     }
1038     return dam;
1039 }
1040
1041 int spell_RF5_MISSILE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
1042 {
1043     int dam;
1044     int rlev = monster_level_idx(m_idx);
1045
1046     monspell_message(m_idx, t_idx,
1047         _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
1048         _("%^s¤¬¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a magic missile."),
1049         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a magic missile at %s."),
1050         TARGET_TYPE);
1051
1052     dam = damroll(2, 6) + (rlev / 3);
1053     bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, TARGET_TYPE);
1054     if (TARGET_TYPE == MONSTER_TO_PLAYER)
1055     {
1056         update_smart_learn(m_idx, DRS_REFLECT);
1057     }
1058     return dam;
1059 }
1060
1061 void spell_RF5_SCARE(int y, int x, int m_idx)
1062 {
1063     int rlev = monster_level_idx(m_idx);
1064         char m_name[80];
1065     monster_name(m_idx, m_name);
1066     disturb(1, 1);
1067
1068
1069     if (p_ptr->blind)
1070         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¯¤È¡¢¶²¤í¤·¤²¤Ê²»¤¬Ê¹¤³¤¨¤¿¡£", "%^s mumbles, and you hear scary noises."), m_name);
1071     else
1072         msg_format(_("%^s¤¬¶²¤í¤·¤²¤Ê¸¸³Ð¤òºî¤ê½Ð¤·¤¿¡£", "%^s casts a fearful illusion."), m_name);
1073
1074     if (p_ptr->resist_fear)
1075     {
1076         msg_print(_("¤·¤«¤·¶²Éݤ˿¯¤µ¤ì¤Ê¤«¤Ã¤¿¡£", "You refuse to be frightened."));
1077     }
1078     else if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
1079     {
1080         msg_print(_("¤·¤«¤·¶²Éݤ˿¯¤µ¤ì¤Ê¤«¤Ã¤¿¡£", "You refuse to be frightened."));
1081     }
1082     else
1083     {
1084         (void)set_afraid(p_ptr->afraid + randint0(4) + 4);
1085     }
1086     learn_spell(MS_SCARE);
1087     update_smart_learn(m_idx, DRS_FEAR);
1088 }
1089
1090 void spell_RF5_BLIND(int y, int x, int m_idx)
1091 {
1092     int rlev = monster_level_idx(m_idx);
1093         char m_name[80];
1094     monster_name(m_idx, m_name);
1095
1096     disturb(1, 1);
1097
1098     if (p_ptr->blind)
1099         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1100     else
1101         msg_format(_("%^s¤¬¼öʸ¤ò¾§¤¨¤Æ¤¢¤Ê¤¿¤ÎÌܤò¤¯¤é¤Þ¤·¤¿¡ª",
1102         "%^s casts a spell, burning your eyes!"), m_name);
1103
1104     if (p_ptr->resist_blind)
1105     {
1106         msg_print(_("¤·¤«¤·¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", "You are unaffected!"));
1107     }
1108     else if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
1109     {
1110         msg_print(_("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", "You resist the effects!"));
1111     }
1112     else
1113     {
1114         (void)set_blind(12 + randint0(4));
1115     }
1116     learn_spell(MS_BLIND);
1117     update_smart_learn(m_idx, DRS_BLIND);
1118 }
1119
1120 void spell_RF5_CONF(int y, int x, int m_idx)
1121 {
1122     int rlev = monster_level_idx(m_idx);
1123         char m_name[80];
1124     monster_name(m_idx, m_name);
1125
1126     disturb(1, 1);
1127
1128     if (p_ptr->blind)
1129         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¯¤È¡¢Æ¬¤òǺ¤Þ¤¹²»¤¬¤·¤¿¡£",
1130         "%^s mumbles, and you hear puzzling noises."), m_name);
1131     else
1132         msg_format(_("%^s¤¬Í¶ÏÇŪ¤Ê¸¸³Ð¤òºî¤ê½Ð¤·¤¿¡£",
1133         "%^s creates a mesmerising illusion."), m_name);
1134
1135     if (p_ptr->resist_conf)
1136     {
1137         msg_print(_("¤·¤«¤·¸¸³Ð¤Ë¤Ï¤À¤Þ¤µ¤ì¤Ê¤«¤Ã¤¿¡£", "You disbelieve the feeble spell."));
1138     }
1139     else if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
1140     {
1141         msg_print(_("¤·¤«¤·¸¸³Ð¤Ë¤Ï¤À¤Þ¤µ¤ì¤Ê¤«¤Ã¤¿¡£", "You disbelieve the feeble spell."));
1142     }
1143     else
1144     {
1145         (void)set_confused(p_ptr->confused + randint0(4) + 4);
1146     }
1147     learn_spell(MS_CONF);
1148     update_smart_learn(m_idx, DRS_CONF);
1149 }
1150
1151 void spell_RF5_SLOW(int y, int x, int m_idx)
1152 {
1153     int rlev = monster_level_idx(m_idx);
1154         char m_name[80];
1155     monster_name(m_idx, m_name);
1156
1157     disturb(1, 1);
1158
1159     msg_format(_("%^s¤¬¤¢¤Ê¤¿¤Î¶ÚÎϤòµÛ¤¤¼è¤í¤¦¤È¤·¤¿¡ª",
1160         "%^s drains power from your muscles!"), m_name);
1161
1162     if (p_ptr->free_act)
1163     {
1164         msg_print(_("¤·¤«¤·¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", "You are unaffected!"));
1165     }
1166     else if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
1167     {
1168         msg_print(_("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", "You resist the effects!"));
1169     }
1170     else
1171     {
1172         (void)set_slow(p_ptr->slow + randint0(4) + 4, FALSE);
1173     }
1174     learn_spell(MS_SLOW);
1175     update_smart_learn(m_idx, DRS_FREE);
1176 }
1177
1178 void spell_RF5_HOLD(int y, int x, int m_idx)
1179 {
1180     int rlev = monster_level_idx(m_idx);
1181         char m_name[80];
1182     monster_name(m_idx, m_name);
1183     disturb(1, 1);
1184
1185     if (p_ptr->blind)
1186         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1187     else
1188         msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÌܤò¤¸¤Ã¤È¸«¤Ä¤á¤¿¡ª", "%^s stares deep into your eyes!"), m_name);
1189
1190     if (p_ptr->free_act)
1191     {
1192         msg_print(_("¤·¤«¤·¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", "You are unaffected!"));
1193     }
1194     else if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
1195     {
1196         msg_format(_("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", "You resist the effects!"));
1197     }
1198     else
1199     {
1200         (void)set_paralyzed(p_ptr->paralyzed + randint0(4) + 4);
1201     }
1202     learn_spell(MS_SLEEP);
1203     update_smart_learn(m_idx, DRS_FREE);
1204 }
1205
1206 void spell_RF6_HASTE(int m_idx)
1207 {
1208     monster_type    *m_ptr = &m_list[m_idx];
1209         char m_name[80];
1210     monster_name(m_idx, m_name);
1211     disturb(1, 1);
1212     if (p_ptr->blind)
1213     {
1214         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1215     }
1216     else
1217     {
1218         msg_format(_("%^s¤¬¼«Ê¬¤ÎÂΤËÇ°¤òÁ÷¤Ã¤¿¡£", "%^s concentrates on %s body."), m_name);
1219     }
1220
1221     /* Allow quick speed increases to base+10 */
1222     if (set_monster_fast(m_idx, MON_FAST(m_ptr) + 100))
1223     {
1224         msg_format(_("%^s¤ÎÆ°¤­¤¬Â®¤¯¤Ê¤Ã¤¿¡£", "%^s starts moving faster."), m_name);
1225     }
1226 }
1227
1228 int spell_RF6_HAND_DOOM(int y, int x, int m_idx)
1229 {
1230     monster_type    *m_ptr = &m_list[m_idx];
1231     int dam;
1232         char m_name[80];
1233     monster_name(m_idx, m_name);
1234     disturb(1, 1);
1235     msg_format(_("%^s¤¬<ÇËÌǤμê>¤òÊü¤Ã¤¿¡ª", "%^s invokes the Hand of Doom!"), m_name);
1236     dam = (((s32b)((40 + randint1(20)) * (p_ptr->chp))) / 100);
1237     breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, MONSTER_TO_PLAYER);
1238     return dam;
1239 }
1240
1241 void spell_RF6_HEAL(int m_idx)
1242 {
1243     monster_type    *m_ptr = &m_list[m_idx];
1244     int rlev = monster_level_idx(m_idx);
1245     bool seen = (!p_ptr->blind && m_ptr->ml);
1246         char m_name[80];
1247     monster_name(m_idx, m_name);
1248
1249     disturb(1, 1);
1250
1251     /* Message */
1252     if (p_ptr->blind)
1253         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1254     else
1255         msg_format(_("%^s¤¬¼«Ê¬¤Î½ý¤Ë½¸Ã椷¤¿¡£", "%^s concentrates on %s wounds."), m_name);
1256
1257     /* Heal some */
1258     m_ptr->hp += (rlev * 6);
1259
1260     /* Fully healed */
1261     if (m_ptr->hp >= m_ptr->maxhp)
1262     {
1263         /* Fully healed */
1264         m_ptr->hp = m_ptr->maxhp;
1265
1266         /* Message */
1267         if (seen)
1268             msg_format(_("%^s¤Ï´°Á´¤Ë¼£¤Ã¤¿¡ª", "%^s looks completely healed!"), m_name);
1269         else
1270             msg_format(_("%^s¤Ï´°Á´¤Ë¼£¤Ã¤¿¤è¤¦¤À¡ª", "%^s sounds completely healed!"), m_name);
1271     }
1272
1273     /* Partially healed */
1274     else
1275     {
1276         /* Message */
1277         if (seen)
1278             msg_format(_("%^s¤ÏÂÎÎϤò²óÉü¤·¤¿¤è¤¦¤À¡£", "%^s looks healthier."), m_name);
1279         else
1280             msg_format(_("%^s¤ÏÂÎÎϤò²óÉü¤·¤¿¤è¤¦¤À¡£", "%^s sounds healthier."), m_name);
1281     }
1282
1283     /* Redraw (later) if needed */
1284     if (p_ptr->health_who == m_idx) p_ptr->redraw |= (PR_HEALTH);
1285     if (p_ptr->riding == m_idx) p_ptr->redraw |= (PR_UHEALTH);
1286
1287     /* Cancel fear */
1288     if (MON_MONFEAR(m_ptr))
1289     {
1290         /* Cancel fear */
1291         (void)set_monster_monfear(m_idx, 0);
1292
1293         /* Message */
1294         msg_format(_("%^s¤Ïͦµ¤¤ò¼è¤êÌᤷ¤¿¡£", "%^s recovers %s courage."), m_name);
1295     }
1296 }
1297 void spell_RF6_INVULNER(int m_idx)
1298 {
1299     monster_type    *m_ptr = &m_list[m_idx];
1300     bool seen = (!p_ptr->blind && m_ptr->ml);
1301         char m_name[80];
1302     monster_name(m_idx, m_name);
1303     disturb(1, 1);
1304
1305     /* Message */
1306     if (!seen)
1307         msg_format(_("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."), m_name);
1308     else
1309         msg_format(_("%s¤Ï̵½ý¤Îµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a Globe of Invulnerability."), m_name);
1310
1311     if (!MON_INVULNER(m_ptr)) (void)set_monster_invulner(m_idx, randint1(4) + 4, FALSE);
1312 }
1313
1314 void spell_RF6_BLINK(int m_idx)
1315 {
1316         char m_name[80];
1317     monster_name(m_idx, m_name);
1318
1319     disturb(1, 1);
1320     if (teleport_barrier(m_idx))
1321     {
1322         msg_format(_("ËâË¡¤Î¥Ð¥ê¥¢¤¬%^s¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¼ÙË⤷¤¿¡£",
1323             "Magic barrier obstructs teleporting of %^s."), m_name);
1324     }
1325     else
1326     {
1327         msg_format(_("%^s¤¬½Ö»þ¤Ë¾Ã¤¨¤¿¡£", "%^s blinks away."), m_name);
1328         teleport_away(m_idx, 10, 0L);
1329         p_ptr->update |= (PU_MONSTERS);
1330     }
1331 }
1332
1333 void spell_RF6_TPORT(int m_idx)
1334 {       
1335         char m_name[80];
1336     monster_name(m_idx, m_name);
1337
1338         disturb(1, 1);
1339     if (teleport_barrier(m_idx))
1340     {
1341         msg_format(_("ËâË¡¤Î¥Ð¥ê¥¢¤¬%^s¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¼ÙË⤷¤¿¡£",
1342             "Magic barrier obstructs teleporting of %^s."), m_name);
1343     }
1344     else
1345     {
1346         msg_format(_("%^s¤¬¥Æ¥ì¥Ý¡¼¥È¤·¤¿¡£", "%^s teleports away."), m_name);
1347         teleport_away_followable(m_idx);
1348     }
1349 }
1350
1351 int spell_RF6_WORLD(int m_idx)
1352 {
1353     monster_type    *m_ptr = &m_list[m_idx];
1354     int who = 0;
1355         char m_name[80];
1356     monster_name(m_idx, m_name);
1357
1358     disturb(1, 1);
1359     if (m_ptr->r_idx == MON_DIO) who = 1;
1360     else if (m_ptr->r_idx == MON_WONG) who = 3;
1361     if (!process_the_world(randint1(2) + 2, who, TRUE)) return (FALSE);
1362     return who;
1363 }
1364
1365 int spell_RF6_SPECIAL(int y, int x, int m_idx)
1366 {
1367     monster_type    *m_ptr = &m_list[m_idx];
1368     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
1369     u32b mode = 0L;
1370     bool direct = player_bold(y, x);
1371     int k, dam, count=0;
1372         char m_name[80];
1373     monster_name(m_idx, m_name);
1374
1375     disturb(1, 1);
1376     switch (m_ptr->r_idx)
1377     {
1378         case MON_OHMU:
1379             /* Moved to process_monster(), like multiplication */
1380             return -1;
1381         case MON_BANORLUPART:
1382         {
1383             int dummy_hp = (m_ptr->hp + 1) / 2;
1384             int dummy_maxhp = m_ptr->maxhp / 2;
1385             int dummy_y = m_ptr->fy;
1386             int dummy_x = m_ptr->fx;
1387
1388             if (p_ptr->inside_arena || p_ptr->inside_battle || !summon_possible(m_ptr->fy, m_ptr->fx)) return -1;
1389             delete_monster_idx(cave[m_ptr->fy][m_ptr->fx].m_idx);
1390             summon_named_creature(0, dummy_y, dummy_x, MON_BANOR, mode);
1391             m_list[hack_m_idx_ii].hp = dummy_hp;
1392             m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
1393             summon_named_creature(0, dummy_y, dummy_x, MON_LUPART, mode);
1394             m_list[hack_m_idx_ii].hp = dummy_hp;
1395             m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
1396
1397             msg_print(_("¡Ø¥Ð¡¼¥Î¡¼¥ë¡¦¥ë¥Ñ¡¼¥È¡Ù¤¬Ê¬Îö¤·¤¿¡ª","Banor=Rupart splits in two person!"));
1398             break;
1399         }
1400
1401         case MON_BANOR:
1402         case MON_LUPART:
1403         {
1404             int dummy_hp = 0;
1405             int dummy_maxhp = 0;
1406             int dummy_y = m_ptr->fy;
1407             int dummy_x = m_ptr->fx;
1408
1409             if (!r_info[MON_BANOR].cur_num || !r_info[MON_LUPART].cur_num) return (FALSE);
1410             for (k = 1; k < m_max; k++)
1411             {
1412                 if (m_list[k].r_idx == MON_BANOR || m_list[k].r_idx == MON_LUPART)
1413                 {
1414                     dummy_hp += m_list[k].hp;
1415                     dummy_maxhp += m_list[k].maxhp;
1416                     if (m_list[k].r_idx != m_ptr->r_idx)
1417                     {
1418                         dummy_y = m_list[k].fy;
1419                         dummy_x = m_list[k].fx;
1420                     }
1421                     delete_monster_idx(k);
1422                 }
1423             }
1424             summon_named_creature(0, dummy_y, dummy_x, MON_BANORLUPART, mode);
1425             m_list[hack_m_idx_ii].hp = dummy_hp;
1426             m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
1427
1428             msg_print(_("¡Ø¥Ð¡¼¥Î¡¼¥ë¡Ù¤È¡Ø¥ë¥Ñ¡¼¥È¡Ù¤¬¹çÂΤ·¤¿¡ª", "Banor and Rupart combine into one!"));
1429             break;
1430         }
1431
1432         case MON_ROLENTO:
1433             if (p_ptr->blind)
1434                 msg_format(_("%^s¤¬²¿¤«ÂçÎ̤ËÅꤲ¤¿¡£", "%^s spreads something."), m_name);
1435             else
1436                 msg_format(_("%^s¤Ï¼êÜØÃƤò¤Ð¤é¤Þ¤¤¤¿¡£", "%^s throws some hand grenades."), m_name);
1437
1438             {
1439                 int num = 1 + randint1(3);
1440
1441                 for (k = 0; k < num; k++)
1442                 {
1443                     count += summon_named_creature(m_idx, y, x, MON_SHURYUUDAN, mode);
1444                 }
1445             }
1446
1447             if (p_ptr->blind && count)
1448                 msg_print(_("¿¤¯¤Î¤â¤Î¤¬´Ö¶á¤Ë¤Ð¤é¤Þ¤«¤ì¤ë²»¤¬¤¹¤ë¡£", "You hear many things are scattered nearby."));
1449
1450             break;
1451
1452         default:
1453         if (r_ptr->d_char == 'B')
1454         {
1455             disturb(1, 1);
1456             if (one_in_(3) || !direct)
1457             {
1458                 msg_format(_("%^s¤ÏÆÍÁ³»ë³¦¤«¤é¾Ã¤¨¤¿!", "%^s suddenly go out of your sight!"), m_name);
1459                 teleport_away(m_idx, 10, TELEPORT_NONMAGICAL);
1460                 p_ptr->update |= (PU_MONSTERS);
1461             }
1462             else
1463             {
1464                 int get_damage = 0;
1465                 bool fear; /* dummy */
1466
1467                 msg_format(_("%^s¤¬¤¢¤Ê¤¿¤òÄϤó¤Ç¶õÃ椫¤éÅꤲÍî¤È¤·¤¿¡£",
1468                     "%^s holds you, and drops from the sky."), m_name);
1469                 dam = damroll(4, 8);
1470                 teleport_player_to(m_ptr->fy, m_ptr->fx, TELEPORT_NONMAGICAL | TELEPORT_PASSIVE);
1471
1472                 sound(SOUND_FALL);
1473
1474                 if (p_ptr->levitation)
1475                 {
1476                     msg_print(_("¤¢¤Ê¤¿¤ÏÀŤ«¤ËÃåÃϤ·¤¿¡£", "You float gently down to the ground."));
1477                 }
1478                 else
1479                 {
1480                     msg_print(_("¤¢¤Ê¤¿¤ÏÃÏÌ̤Ë᤭¤Ä¤±¤é¤ì¤¿¡£", "You crashed into the ground."));
1481                     dam += damroll(6, 8);
1482                 }
1483
1484                 /* Mega hack -- this special action deals damage to the player. Therefore the code of "eyeeye" is necessary.
1485                 -- henkma
1486                 */
1487                 get_damage = take_hit(DAMAGE_NOESCAPE, dam, m_name, -1);
1488                 if (p_ptr->tim_eyeeye && get_damage > 0 && !p_ptr->is_dead)
1489                 {
1490 #ifdef JP
1491                     msg_format("¹¶·â¤¬%s¼«¿È¤ò½ý¤Ä¤±¤¿¡ª", m_name);
1492 #else
1493                     char m_name_self[80];
1494
1495                     /* hisself */
1496                     monster_desc(m_name_self, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE | MD_OBJECTIVE);
1497
1498                     msg_format("The attack of %s has wounded %s!", m_name, m_name_self);
1499 #endif
1500                     project(0, 0, m_ptr->fy, m_ptr->fx, get_damage, GF_MISSILE, PROJECT_KILL, -1);
1501                     set_tim_eyeeye(p_ptr->tim_eyeeye - 5, TRUE);
1502                 }
1503
1504                 if (p_ptr->riding) mon_take_hit_mon(p_ptr->riding, dam, &fear, extract_note_dies(real_r_ptr(&m_list[p_ptr->riding])), m_idx);
1505             }
1506             break;
1507         }
1508
1509         /* Something is wrong */
1510         else return -1;
1511     }
1512     return dam;
1513 }
1514
1515
1516 void spell_RF6_TELE_TO(int m_idx)
1517 {
1518     monster_type    *m_ptr = &m_list[m_idx];
1519         char m_name[80];
1520     monster_name(m_idx, m_name);
1521
1522     disturb(1, 1);
1523     msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ò°ú¤­Ìᤷ¤¿¡£", "%^s commands you to return."), m_name);
1524
1525     teleport_player_to(m_ptr->fy, m_ptr->fx, TELEPORT_PASSIVE);
1526     learn_spell(MS_TELE_TO);
1527 }
1528
1529 void spell_RF6_TELE_AWAY(int m_idx)
1530 {
1531         char m_name[80];
1532     monster_name(m_idx, m_name);
1533     disturb(1, 1);
1534
1535     msg_format(_("%^s¤Ë¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤é¤ì¤¿¡£", "%^s teleports you away."), m_name);
1536     if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON))
1537         msg_print(_("¤¯¤Ã¤½¡Á", ""));
1538
1539     learn_spell(MS_TELE_AWAY);
1540     teleport_player_away(m_idx, 100);
1541 }
1542
1543 void spell_RF6_TELE_LEVEL(int m_idx)
1544 {
1545     int rlev = monster_level_idx(m_idx);
1546         char m_name[80];
1547     monster_name(m_idx, m_name);
1548
1549     disturb(1, 1);
1550
1551     if (p_ptr->blind)
1552         msg_format(_("%^s¤¬²¿¤«´ñ̯¤Ê¸ÀÍÕ¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles strangely."), m_name);
1553     else
1554         msg_format(_("%^s¤¬¤¢¤Ê¤¿¤Î­¤ò»Ø¤µ¤·¤¿¡£", "%^s gestures at your feet."), m_name);
1555
1556     if (p_ptr->resist_nexus)
1557     {
1558         msg_print(_("¤·¤«¤·¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", "You are unaffected!"));
1559     }
1560     else if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
1561     {
1562         msg_print(_("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", "You resist the effects!"));
1563     }
1564     else
1565     {
1566         teleport_level(0);
1567     }
1568     learn_spell(MS_TELE_LEVEL);
1569     update_smart_learn(m_idx, DRS_NEXUS);
1570 }
1571
1572 int spell_RF6_PSY_SPEAR(int y, int x, int m_idx)
1573 {
1574     monster_type    *m_ptr = &m_list[m_idx];
1575     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
1576         int rlev = monster_level_idx(m_idx);
1577     int dam;
1578         char m_name[80];
1579     monster_name(m_idx, m_name);
1580
1581     disturb(1, 1);
1582     if (p_ptr->blind)
1583         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1584     else
1585         msg_format(_("%^s¤¬¸÷¤Î·õ¤òÊü¤Ã¤¿¡£", "%^s throw a Psycho-Spear."), m_name);
1586
1587     dam = (r_ptr->flags2 & RF2_POWERFUL) ? (randint1(rlev * 2) + 150) : (randint1(rlev * 3 / 2) + 100);
1588     beam(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, MONSTER_TO_PLAYER);
1589     return dam;
1590 }
1591
1592 void spell_RF6_DARKNESS(int m_idx)
1593 {
1594     monster_type    *m_ptr = &m_list[m_idx];
1595     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
1596     bool can_use_lite_area = FALSE;
1597         char m_name[80];
1598     monster_name(m_idx, m_name);
1599
1600     if ((p_ptr->pclass == CLASS_NINJA) &&
1601         !(r_ptr->flags3 & (RF3_UNDEAD | RF3_HURT_LITE)) &&
1602         !(r_ptr->flags7 & RF7_DARK_MASK))
1603         can_use_lite_area = TRUE;
1604     disturb(1, 1);
1605
1606     if (p_ptr->blind)
1607         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1608     else if (can_use_lite_area)
1609         msg_format(_("%^s¤¬ÊÕ¤ê¤òÌÀ¤ë¤¯¾È¤é¤·¤¿¡£", "%^s cast a spell to light up."), m_name);
1610     else
1611         msg_format(_("%^s¤¬°Å°Ç¤ÎÃæ¤Ç¼ê¤ò¿¶¤Ã¤¿¡£", "%^s gestures in shadow."), m_name);
1612
1613     if (can_use_lite_area)
1614     {
1615         (void)lite_area(0, 3);
1616     }
1617     else
1618     {
1619         learn_spell(MS_DARKNESS);
1620         (void)unlite_area(0, 3);
1621     }
1622 }
1623
1624 void spell_RF6_TRAPS(int y, int x, int m_idx)
1625 {
1626         char m_name[80];
1627     monster_name(m_idx, m_name);
1628     disturb(1, 1);
1629
1630     if (p_ptr->blind)
1631         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤Æ¼Ù°­¤ËÈù¾Ð¤ó¤À¡£",
1632         "%^s mumbles, and then cackles evilly."), m_name);
1633     else
1634         msg_format(_("%^s¤¬¼öʸ¤ò¾§¤¨¤Æ¼Ù°­¤ËÈù¾Ð¤ó¤À¡£",
1635         "%^s casts a spell and cackles evilly."), m_name);
1636
1637     learn_spell(MS_MAKE_TRAP);
1638     (void)trap_creation(y, x);
1639 }
1640
1641 void spell_RF6_FORGET(int m_idx)
1642 {
1643     int rlev = monster_level_idx(m_idx);
1644         char m_name[80];
1645     monster_name(m_idx, m_name);
1646
1647     disturb(1, 1);
1648
1649     msg_format(_("%^s¤¬¤¢¤Ê¤¿¤Îµ­²±¤ò¾Ãµî¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¡£",
1650         "%^s tries to blank your mind."), m_name);
1651
1652     if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
1653     {
1654         msg_print(_("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", "You resist the effects!"));
1655     }
1656     else if (lose_all_info())
1657     {
1658         msg_print(_("µ­²±¤¬Çö¤ì¤Æ¤·¤Þ¤Ã¤¿¡£", "Your memories fade away."));
1659     }
1660     learn_spell(MS_FORGET);
1661 }
1662
1663 void spell_RF6_RAISE_DEAD(int m_idx)
1664 {
1665     monster_type    *m_ptr = &m_list[m_idx];
1666         char m_name[80];
1667     monster_name(m_idx, m_name);
1668
1669     disturb(1, 1);
1670
1671     if (p_ptr->blind)
1672         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1673     else
1674         msg_format(_("%^s¤¬»à¼ÔÉü³è¤Î¼öʸ¤ò¾§¤¨¤¿¡£",
1675         "%^s casts a spell to revive corpses."), m_name);
1676
1677     animate_dead(m_idx, m_ptr->fy, m_ptr->fx);
1678 }
1679
1680 void spell_RF6_S_KIN(int y, int x, int m_idx)
1681 {
1682     monster_type    *m_ptr = &m_list[m_idx];
1683     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
1684     int rlev = monster_level_idx(m_idx);
1685     int count = 0, k;
1686     u32b mode = 0L;
1687         char m_name[80];
1688     monster_name(m_idx, m_name);
1689
1690     disturb(1, 1);
1691     if (m_ptr->r_idx == MON_SERPENT || m_ptr->r_idx == MON_ZOMBI_SERPENT)
1692     {
1693         if (p_ptr->blind)
1694             msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1695         else
1696             msg_format(_("%^s¤¬¥À¥ó¥¸¥ç¥ó¤Î¼ç¤ò¾¤´­¤·¤¿¡£",
1697             "%^s magically summons guardians of dungeons."), m_name);
1698     }
1699     else
1700     {
1701         if (p_ptr->blind)
1702             msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1703         else
1704 #ifdef JP
1705             msg_format("%^s¤ÏËâË¡¤Ç%s¤ò¾¤´­¤·¤¿¡£",
1706             m_name,
1707             ((r_ptr->flags1) & RF1_UNIQUE ?
1708             "¼ê²¼" : "Ãç´Ö"));
1709 #else
1710             msg_format("%^s magically summons %s %s.",
1711             m_name, m_poss,
1712             ((r_ptr->flags1) & RF1_UNIQUE ?
1713             "minions" : "kin"));
1714 #endif
1715     }
1716
1717     switch (m_ptr->r_idx)
1718     {
1719         case MON_MENELDOR:
1720         case MON_GWAIHIR:
1721         case MON_THORONDOR:
1722         {
1723             int num = 4 + randint1(3);
1724             for (k = 0; k < num; k++)
1725             {
1726                 count += summon_specific(m_idx, y, x, rlev, SUMMON_EAGLES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
1727             }
1728         }
1729         break;
1730
1731         case MON_BULLGATES:
1732         {
1733             int num = 2 + randint1(3);
1734             for (k = 0; k < num; k++)
1735             {
1736                 count += summon_named_creature(m_idx, y, x, MON_IE, mode);
1737             }
1738         }
1739         break;
1740
1741         case MON_SERPENT:
1742         case MON_ZOMBI_SERPENT:
1743         {
1744             int num = 2 + randint1(3);
1745
1746             if (r_info[MON_JORMUNGAND].cur_num < r_info[MON_JORMUNGAND].max_num && one_in_(6))
1747             {
1748                 msg_print(_("ÃÏÌ̤«¤é¿å¤¬¿á¤­½Ð¤·¤¿¡ª", "Water blew off from the ground!"));
1749                 fire_ball_hide(GF_WATER_FLOW, 0, 3, 8);
1750             }
1751
1752             for (k = 0; k < num; k++)
1753             {
1754                 count += summon_specific(m_idx, y, x, rlev, SUMMON_GUARDIANS, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
1755             }
1756         }
1757         break;
1758
1759         case MON_CALDARM:
1760         {
1761             int num = randint1(3);
1762             for (k = 0; k < num; k++)
1763             {
1764                 count += summon_named_creature(m_idx, y, x, MON_LOCKE_CLONE, mode);
1765             }
1766         }
1767         break;
1768
1769         case MON_LOUSY:
1770         {
1771             int num = 2 + randint1(3);
1772             for (k = 0; k < num; k++)
1773             {
1774                 count += summon_specific(m_idx, y, x, rlev, SUMMON_LOUSE, PM_ALLOW_GROUP);
1775             }
1776         }
1777         break;
1778
1779         default:
1780         summon_kin_type = r_ptr->d_char; /* Big hack */
1781
1782         for (k = 0; k < 4; k++)
1783         {
1784             count += summon_specific(m_idx, y, x, rlev, SUMMON_KIN, PM_ALLOW_GROUP);
1785         }
1786         break;
1787     }
1788     
1789     if (p_ptr->blind && count)
1790         msg_print(_("¿¤¯¤Î¤â¤Î¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear many things appear nearby."));
1791 }
1792
1793 void spell_RF6_S_CYBER(int y, int x, int m_idx)
1794 {
1795     int count = 0;
1796         char m_name[80];
1797     monster_name(m_idx, m_name);
1798
1799     disturb(1, 1);
1800
1801     if (p_ptr->blind)
1802         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1803     else
1804         msg_format(_("%^s¤¬¥µ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤ò¾¤´­¤·¤¿¡ª",
1805         "%^s magically summons Cyberdemons!"), m_name);
1806
1807     count = summon_cyber(m_idx, y, x);
1808
1809     if (p_ptr->blind && count)
1810         msg_print(_("½Å¸ü¤Ê­²»¤¬¶á¤¯¤Çʹ¤³¤¨¤ë¡£", "You hear heavy steps nearby."));
1811 }
1812
1813 void spell_RF6_S_MONSTER(int y, int x, int m_idx)
1814 {
1815     int rlev = monster_level_idx(m_idx);
1816     int k, count = 0;
1817         char m_name[80];
1818     monster_name(m_idx, m_name);
1819
1820     disturb(1, 1);
1821
1822     if (p_ptr->blind)
1823         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1824     else
1825         msg_format(_("%^s¤¬ËâË¡¤ÇÃç´Ö¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons help!"), m_name);
1826
1827     for (k = 0; k < 1; k++)
1828     {
1829         count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
1830     }
1831     if (p_ptr->blind && count)
1832         msg_print(_("²¿¤«¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear something appear nearby."));
1833 }
1834
1835 void spell_RF6_S_MONSTERS(int y, int x, int m_idx)
1836 {
1837     int rlev = monster_level_idx(m_idx);
1838     int k, count = 0;
1839         char m_name[80];
1840     monster_name(m_idx, m_name);
1841
1842     disturb(1, 1);
1843
1844     if (p_ptr->blind)
1845         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1846     else
1847         msg_format(_("%^s¤¬ËâË¡¤Ç¥â¥ó¥¹¥¿¡¼¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons monsters!"), m_name);
1848
1849     for (k = 0; k < S_NUM_6; k++)
1850     {
1851         count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
1852     }
1853
1854     if (p_ptr->blind && count)
1855         msg_print(_("¿¤¯¤Î¤â¤Î¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear many things appear nearby."));
1856 }
1857
1858 void spell_RF6_S_ANT(int y, int x, int m_idx)
1859 {
1860     int rlev = monster_level_idx(m_idx);
1861     int k, count = 0;
1862         char m_name[80];
1863     monster_name(m_idx, m_name);
1864
1865     disturb(1, 1);
1866
1867     if (p_ptr->blind)
1868         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1869     else
1870         msg_format(_("%^s¤¬ËâË¡¤Ç¥¢¥ê¤ò¾¤´­¤·¤¿¡£", "%^s magically summons ants."), m_name);
1871
1872     for (k = 0; k < S_NUM_6; k++)
1873     {
1874         count += summon_specific(m_idx, y, x, rlev, SUMMON_ANT, PM_ALLOW_GROUP);
1875     }
1876
1877     if (p_ptr->blind && count)
1878         msg_print(_("¿¤¯¤Î¤â¤Î¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear many things appear nearby."));
1879 }
1880
1881 void spell_RF6_S_SPIDER(int y, int x, int m_idx)
1882 {
1883     int rlev = monster_level_idx(m_idx);
1884     int k, count = 0;
1885         char m_name[80];
1886     monster_name(m_idx, m_name);
1887
1888     disturb(1, 1);
1889
1890     if (p_ptr->blind)
1891         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1892     else
1893         msg_format(_("%^s¤¬ËâË¡¤Ç¥¯¥â¤ò¾¤´­¤·¤¿¡£", "%^s magically summons spiders."), m_name);
1894
1895     for (k = 0; k < S_NUM_6; k++)
1896     {
1897         count += summon_specific(m_idx, y, x, rlev, SUMMON_SPIDER, PM_ALLOW_GROUP);
1898     }
1899
1900     if (p_ptr->blind && count)
1901         msg_print(_("¿¤¯¤Î¤â¤Î¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear many things appear nearby."));
1902 }
1903
1904 void spell_RF6_S_HOUND(int y, int x, int m_idx)
1905 {
1906     int rlev = monster_level_idx(m_idx);
1907     int k, count = 0;
1908         char m_name[80];
1909     monster_name(m_idx, m_name);
1910
1911     disturb(1, 1);
1912
1913     if (p_ptr->blind)
1914         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1915     else
1916         msg_format(_("%^s¤¬ËâË¡¤Ç¥Ï¥¦¥ó¥É¤ò¾¤´­¤·¤¿¡£", "%^s magically summons hounds."), m_name);
1917
1918     for (k = 0; k < S_NUM_4; k++)
1919     {
1920         count += summon_specific(m_idx, y, x, rlev, SUMMON_HOUND, PM_ALLOW_GROUP);
1921     }
1922
1923     if (p_ptr->blind && count)
1924         msg_print(_("¿¤¯¤Î¤â¤Î¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear many things appear nearby."));
1925 }
1926
1927 void spell_RF6_S_HYDRA(int y, int x, int m_idx)
1928 {
1929     int rlev = monster_level_idx(m_idx);
1930     int k, count = 0;
1931         char m_name[80];
1932     monster_name(m_idx, m_name);
1933
1934     disturb(1, 1);
1935
1936     if (p_ptr->blind)
1937         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1938     else
1939         msg_format(_("%^s¤¬ËâË¡¤Ç¥Ò¥É¥é¤ò¾¤´­¤·¤¿¡£", "%^s magically summons hydras."), m_name);
1940
1941     for (k = 0; k < S_NUM_4; k++)
1942     {
1943         count += summon_specific(m_idx, y, x, rlev, SUMMON_HYDRA, PM_ALLOW_GROUP);
1944     }
1945     if (p_ptr->blind && count)
1946         msg_print(_("¿¤¯¤Î¤â¤Î¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear many things appear nearby."));
1947 }
1948
1949 void spell_RF6_S_ANGEL(int y, int x, int m_idx)
1950 {
1951     monster_type    *m_ptr = &m_list[m_idx];
1952     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
1953     int rlev = monster_level_idx(m_idx);
1954     int k, count = 0;
1955     int num = 1;
1956         char m_name[80];
1957     monster_name(m_idx, m_name);
1958
1959     disturb(1, 1);
1960
1961     if (p_ptr->blind)
1962         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1963     else
1964         msg_format(_("%^s¤¬ËâË¡¤ÇÅ·»È¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons an angel!"), m_name);
1965
1966     if ((r_ptr->flags1 & RF1_UNIQUE) && !easy_band)
1967     {
1968         num += r_ptr->level / 40;
1969     }
1970
1971     for (k = 0; k < num; k++)
1972     {
1973         count += summon_specific(m_idx, y, x, rlev, SUMMON_ANGEL, PM_ALLOW_GROUP);
1974     }
1975
1976     if (count < 2)
1977     {
1978         if (p_ptr->blind && count)
1979             msg_print(_("²¿¤«¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear something appear nearby."));
1980     }
1981     else
1982     {
1983         if (p_ptr->blind)
1984             msg_print(_("¿¤¯¤Î¤â¤Î¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear many things appear nearby."));
1985     }
1986 }
1987
1988 void spell_RF6_S_DEMON(int y, int x, int m_idx)
1989 {
1990     int rlev = monster_level_idx(m_idx);
1991     int k, count = 0;
1992         char m_name[80];
1993     monster_name(m_idx, m_name);
1994
1995     disturb(1, 1);
1996
1997     if (p_ptr->blind)
1998         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
1999     else
2000         msg_format(_("%^s¤ÏËâË¡¤Çº®Æ٤εÜÄ¤é°­Ëâ¤ò¾¤´­¤·¤¿¡ª",
2001         "%^s magically summons a demon from the Courts of Chaos!"), m_name);
2002
2003     for (k = 0; k < 1; k++)
2004     {
2005         count += summon_specific(m_idx, y, x, rlev, SUMMON_DEMON, PM_ALLOW_GROUP);
2006     }
2007
2008     if (p_ptr->blind && count)
2009         msg_print(_("²¿¤«¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear something appear nearby."));
2010 }
2011
2012 void spell_RF6_S_UNDEAD(int y, int x, int m_idx)
2013 {
2014     int rlev = monster_level_idx(m_idx);
2015     int k, count = 0;
2016         char m_name[80];
2017     monster_name(m_idx, m_name);
2018
2019     disturb(1, 1);
2020
2021     if (p_ptr->blind)
2022         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
2023     else
2024         msg_format(_("%^s¤¬ËâË¡¤Ç¥¢¥ó¥Ç¥Ã¥É¤Î¶¯Å¨¤ò¾¤´­¤·¤¿¡ª",
2025         "%^s magically summons an undead adversary!"), m_name);
2026
2027     for (k = 0; k < 1; k++)
2028     {
2029         count += summon_specific(m_idx, y, x, rlev, SUMMON_UNDEAD, PM_ALLOW_GROUP);
2030     }
2031
2032     if (p_ptr->blind && count)
2033         msg_print(_("²¿¤«¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear something appear nearby."));
2034 }
2035
2036 void spell_RF6_S_DRAGON(int y, int x, int m_idx)
2037 {
2038     int rlev = monster_level_idx(m_idx);
2039     int k, count = 0;
2040         char m_name[80];
2041     monster_name(m_idx, m_name);
2042
2043     disturb(1, 1);
2044
2045     if (p_ptr->blind)
2046         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
2047     else
2048         msg_format(_("%^s¤¬ËâË¡¤Ç¥É¥é¥´¥ó¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons a dragon!"), m_name);
2049
2050     for (k = 0; k < 1; k++)
2051     {
2052         count += summon_specific(m_idx, y, x, rlev, SUMMON_DRAGON, PM_ALLOW_GROUP);
2053     }
2054     if (p_ptr->blind && count)
2055         msg_print(_("²¿¤«¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬¤¹¤ë¡£", "You hear something appear nearby."));
2056 }
2057
2058 void spell_RF6_S_HI_UNDEAD(int y, int x, int m_idx)
2059 {
2060     char* m_name = monster_name(m_idx, "");
2061     monster_type    *m_ptr = &m_list[m_idx];
2062     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
2063     int rlev = monster_level_idx(m_idx);
2064     u32b mode = 0L;
2065     int k, count = 0;
2066     disturb(1, 1);
2067
2068     if (((m_ptr->r_idx == MON_MORGOTH) || (m_ptr->r_idx == MON_SAURON) || (m_ptr->r_idx == MON_ANGMAR)) && ((r_info[MON_NAZGUL].cur_num + 2) < r_info[MON_NAZGUL].max_num))
2069     {
2070         int cy = y;
2071         int cx = x;
2072
2073         if (p_ptr->blind)
2074             msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
2075         else
2076             msg_format(_("%^s¤¬ËâË¡¤ÇÍ©µ´ÀïÂâ¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons rangers of Nazgul!"), m_name);
2077
2078         msg_print(NULL);
2079
2080         for (k = 0; k < 30; k++)
2081         {
2082             if (!summon_possible(cy, cx) || !cave_empty_bold(cy, cx))
2083             {
2084                 int j;
2085                 for (j = 100; j > 0; j--)
2086                 {
2087                     scatter(&cy, &cx, y, x, 2, 0);
2088                     if (cave_empty_bold(cy, cx)) break;
2089                 }
2090                 if (!j) break;
2091             }
2092             if (!cave_empty_bold(cy, cx)) continue;
2093
2094             if (summon_named_creature(m_idx, cy, cx, MON_NAZGUL, mode))
2095             {
2096                 y = cy;
2097                 x = cx;
2098                 count++;
2099                 if (count == 1)
2100                     msg_format(_("¡ÖÍ©µ´ÀïÂâ%d¹æ¡¢¥Ê¥º¥°¥ë¡¦¥Ö¥é¥Ã¥¯¡ª¡×",
2101                     "A Nazgul says 'Nazgul-Rangers Number %d, Nazgul-Black!'"), count);
2102                 else
2103                     msg_format(_("¡ÖƱ¤¸¤¯%d¹æ¡¢¥Ê¥º¥°¥ë¡¦¥Ö¥é¥Ã¥¯¡ª¡×",
2104                     "Another one says 'Number %d, Nazgul-Black!'"), count);
2105
2106                 msg_print(NULL);
2107             }
2108         }
2109         msg_format(_("¡Ö%d¿Í¤½¤í¤Ã¤Æ¡¢¥ê¥ó¥°¥ì¥ó¥¸¥ã¡¼¡ª¡×",
2110             "They say 'The %d meets! We are the Ring-Ranger!'."), count);
2111         msg_print(NULL);
2112     }
2113     else
2114     {
2115         if (p_ptr->blind)
2116             msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
2117         else
2118             msg_format(_("%^s¤¬ËâË¡¤Ç¶¯ÎϤʥ¢¥ó¥Ç¥Ã¥É¤ò¾¤´­¤·¤¿¡ª",
2119             "%^s magically summons greater undead!"), m_name);
2120
2121         for (k = 0; k < S_NUM_6; k++)
2122         {
2123             count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2124         }
2125     }
2126     if (p_ptr->blind && count)
2127     {
2128         msg_print(_("´Ö¶á¤Ç²¿¤«Â¿¤¯¤Î¤â¤Î¤¬Ç礤²ó¤ë²»¤¬Ê¹¤³¤¨¤ë¡£",
2129             "You hear many creepy things appear nearby."));
2130     }
2131 }
2132
2133
2134 void spell_RF6_S_HI_DRAGON(int y, int x, int m_idx)
2135 {
2136     char* m_name = monster_name(m_idx, "");
2137     int rlev = monster_level_idx(m_idx);
2138     int k, count = 0;
2139     disturb(1, 1);
2140
2141     if (p_ptr->blind)
2142         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
2143     else
2144         msg_format(_("%^s¤¬ËâË¡¤Ç¸ÅÂå¥É¥é¥´¥ó¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons ancient dragons!"), m_name);
2145
2146     for (k = 0; k < S_NUM_4; k++)
2147     {
2148         count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_DRAGON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2149     }
2150     if (p_ptr->blind && count)
2151     {
2152         msg_print(_("¿¤¯¤ÎÎ϶¯¤¤¤â¤Î¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬Ê¹¤³¤¨¤ë¡£",
2153             "You hear many powerful things appear nearby."));
2154     }
2155 }
2156
2157 void spell_RF6_S_AMBERITES(int y, int x, int m_idx)
2158 {
2159     char* m_name = monster_name(m_idx, "");
2160     int rlev = monster_level_idx(m_idx);
2161     int k, count = 0;
2162     disturb(1, 1);
2163
2164     if (p_ptr->blind)
2165         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
2166     else
2167         msg_format(_("%^s¤¬¥¢¥ó¥Ð¡¼¤Î²¦Â²¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons Lords of Amber!"), m_name);
2168
2169     for (k = 0; k < S_NUM_4; k++)
2170     {
2171         count += summon_specific(m_idx, y, x, rlev, SUMMON_AMBERITES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2172     }
2173     if (p_ptr->blind && count)
2174     {
2175         msg_print(_("ÉÔ»à¤Î¼Ô¤¬¶á¤¯¤Ë¸½¤ì¤ë¤Î¤¬Ê¹¤³¤¨¤¿¡£", "You hear immortal beings appear nearby."));
2176     }
2177 }
2178
2179 void spell_RF6_S_UNIQUE(int y, int x, int m_idx)
2180 {
2181     char* m_name = monster_name(m_idx, "");
2182     monster_type    *m_ptr = &m_list[m_idx];
2183     int rlev = monster_level_idx(m_idx);
2184     int k, count = 0;
2185     bool uniques_are_summoned = FALSE;
2186     int non_unique_type = SUMMON_HI_UNDEAD;
2187
2188     disturb(1, 1);
2189
2190     if (p_ptr->blind)
2191         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
2192     else
2193         msg_format(_("%^s¤¬ËâË¡¤ÇÆÃÊ̤ʶ¯Å¨¤ò¾¤´­¤·¤¿¡ª", "%^s magically summons special opponents!"), m_name);
2194
2195     for (k = 0; k < S_NUM_4; k++)
2196     {
2197         count += summon_specific(m_idx, y, x, rlev, SUMMON_UNIQUE, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2198     }
2199
2200     if (count) uniques_are_summoned = TRUE;
2201
2202     if ((m_ptr->sub_align & (SUB_ALIGN_GOOD | SUB_ALIGN_EVIL)) == (SUB_ALIGN_GOOD | SUB_ALIGN_EVIL))
2203         non_unique_type = 0;
2204     else if (m_ptr->sub_align & SUB_ALIGN_GOOD)
2205         non_unique_type = SUMMON_ANGEL;
2206
2207     for (k = count; k < S_NUM_4; k++)
2208     {
2209         count += summon_specific(m_idx, y, x, rlev, non_unique_type, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2210     }
2211
2212     if (p_ptr->blind && count)
2213     {
2214         msg_format(_("¿¤¯¤Î%s¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬Ê¹¤³¤¨¤ë¡£", "You hear many %s appear nearby."),
2215             uniques_are_summoned ? _("Î϶¯¤¤¤â¤Î", "powerful things") : _("¤â¤Î", "things"));
2216     }
2217 }
2218