OSDN Git Service

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