OSDN Git Service

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