OSDN Git Service

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