OSDN Git Service

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