OSDN Git Service

e640ce4e3d174c67ee57cf8e211d94160f7449c7
[hengband/hengband.git] / src / mspells2.c
1 /* File: mspells2.c */
2
3 /*
4  * Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke
5  *
6  * This software may be copied and distributed for educational, research,
7  * and not for profit purposes provided that this copyright and statement
8  * are included in all such copies.  Other copyrights may also apply.
9  */
10
11 /* Purpose: Monster spells (attack monster) */
12
13 #include "angband.h"
14
15
16 /*
17  * Monster casts a breath (or ball) attack at another monster.
18  * Pass over any monsters that may be in the way
19  * Affect grids, objects, monsters, and the player
20  */
21 static void monst_breath_monst(int m_idx, int y, int x, int typ, int dam_hp, int rad, bool breath, int monspell, bool learnable)
22 {
23         int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
24
25         monster_type *m_ptr = &m_list[m_idx];
26         monster_race *r_ptr = &r_info[m_ptr->r_idx];
27
28         /* Determine the radius of the blast */
29         if (rad < 1 && breath) rad = (r_ptr->flags2 & RF2_POWERFUL) ? 3 : 2;
30
31         /* Handle breath attacks */
32         if (breath) rad = 0 - rad;
33
34         switch (typ)
35         {
36         case GF_ROCKET:
37                 flg |= PROJECT_STOP;
38                 break;
39         case GF_DRAIN_MANA:
40         case GF_MIND_BLAST:
41         case GF_BRAIN_SMASH:
42         case GF_CAUSE_1:
43         case GF_CAUSE_2:
44         case GF_CAUSE_3:
45         case GF_CAUSE_4:
46         case GF_HAND_DOOM:
47                 flg |= (PROJECT_HIDE | PROJECT_AIMED);
48                 break;
49         }
50
51         (void)project(m_idx, rad, y, x, dam_hp, typ, flg, (learnable ? monspell : -1));
52 }
53
54
55 /*
56  * Monster casts a bolt at another monster
57  * Stop if we hit a monster
58  * Affect monsters and the player
59  */
60 static void monst_bolt_monst(int m_idx, int y, int x, int typ, int dam_hp, int monspell, bool learnable)
61 {
62         int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
63
64         (void)project(m_idx, 0, y, x, dam_hp, typ, flg, (learnable ? monspell : -1));
65 }
66
67 static void monst_beam_monst(int m_idx, int y, int x, int typ, int dam_hp, int monspell, bool learnable)
68 {
69         int flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU;
70
71         (void)project(m_idx, 0, y, x, dam_hp, typ, flg, (learnable ? monspell : -1));
72 }
73
74 /*
75  * Determine if a beam spell will hit the target.
76  */
77 static bool direct_beam(int y1, int x1, int y2, int x2, monster_type *m_ptr)
78 {
79         bool hit2 = FALSE;
80         int i, y, x;
81
82         int grid_n = 0;
83         u16b grid_g[512];
84
85         bool friend = is_pet(m_ptr);
86
87         /* Check the projection path */
88         grid_n = project_path(grid_g, MAX_RANGE, y1, x1, y2, x2, PROJECT_THRU);
89
90         /* No grid is ever projectable from itself */
91         if (!grid_n) return (FALSE);
92
93         for (i = 0; i < grid_n; i++)
94         {
95                 y = GRID_Y(grid_g[i]);
96                 x = GRID_X(grid_g[i]);
97
98                 if (y == y2 && x == x2)
99                         hit2 = TRUE;
100                 else if (friend && cave[y][x].m_idx > 0 &&
101                          !are_enemies(m_ptr, &m_list[cave[y][x].m_idx]))
102                 {
103                         /* Friends don't shoot friends */
104                         return FALSE;
105                 }
106
107                 if (friend && player_bold(y, x))
108                         return FALSE;
109         }
110         if (!hit2)
111                 return FALSE;
112         return TRUE;
113 }
114
115 static bool breath_direct(int y1, int x1, int y2, int x2, int rad, bool disint_ball, bool friend)
116 {
117         /* Must be the same as projectable() */
118
119         int i, y, x;
120
121         int grid_n = 0;
122         u16b grid_g[512];
123
124         int grids = 0;
125         byte gx[1024], gy[1024];
126         byte gm[32];
127         int gm_rad = rad;
128
129         bool hit2 = FALSE;
130         bool hityou = FALSE;
131
132         /* Check the projection path */
133         grid_n = project_path(grid_g, MAX_RANGE, y1, x1, y2, x2, disint_ball ? PROJECT_DISI : 0);
134         breath_shape(grid_g, grid_n, &grids, gx, gy, gm, &gm_rad, rad, y1, x1, y2, x2, disint_ball, FALSE);
135
136         for (i = 0; i < grids; i++)
137         {
138                 /* Extract the location */
139                 y = gy[i];
140                 x = gx[i];
141
142                 if (y == y2 && x == x2)
143                         hit2 = TRUE;
144                 if (player_bold(y, x))
145                         hityou = TRUE;
146         }
147         if (!hit2)
148                 return FALSE;
149         if (friend && hityou)
150                 return FALSE;
151         return TRUE;
152 }
153
154 /*
155  * Get the actual center point of ball spells (originally from TOband)
156  */
157 static void get_project_point(int sy, int sx, int *ty, int *tx, int flg)
158 {
159         u16b path_g[128];
160         int  path_n;
161
162         path_n = project_path(path_g, MAX_RANGE, sy, sx, *ty, *tx, flg);
163
164         if (path_n)
165         {
166                 /* Use final point of projection */
167                 *ty = GRID_Y(path_g[path_n - 1]);
168                 *tx = GRID_X(path_g[path_n - 1]);
169         }
170         else
171         {
172                 *ty = sy;
173                 *tx = sx;
174         }
175 }
176
177 /*
178  * Monster tries to 'cast a spell' (or breath, etc)
179  * at another monster.
180  *
181  * The player is only disturbed if able to be affected by the spell.
182  */
183 bool monst_spell_monst(int m_idx)
184 {
185         int y = 0, x = 0;
186         int i, k, t_idx = 0;
187         int thrown_spell, count = 0;
188         int rlev;
189         int dam = 0;
190         int start;
191         int plus = 1;
192         u32b u_mode = 0L;
193         int s_num_6 = (easy_band ? 2 : 6);
194         int s_num_4 = (easy_band ? 1 : 4);
195
196         byte spell[96], num = 0;
197
198         char m_name[160];
199         char t_name[160];
200
201 #ifndef JP
202         char m_poss[160];
203 #endif
204
205         monster_type *m_ptr = &m_list[m_idx];
206         monster_type *t_ptr = NULL;
207
208         monster_race *r_ptr = &r_info[m_ptr->r_idx];
209         monster_race *tr_ptr = NULL;
210
211         u32b f4, f5, f6;
212
213         bool wake_up = FALSE;
214         bool fear = FALSE;
215
216         bool blind = (p_ptr->blind ? TRUE : FALSE);
217
218         bool see_m = m_ptr->ml;
219         bool maneable = player_has_los_bold(m_ptr->fy, m_ptr->fx);
220         bool learnable = (see_m && maneable && !world_monster);
221         bool see_t;
222         bool see_either;
223         bool known;
224
225         bool pet = is_pet(m_ptr);
226
227         bool in_no_magic_dungeon = (d_info[dungeon_type].flags1 & DF1_NO_MAGIC) && dun_level
228                 && (!p_ptr->inside_quest || is_fixed_quest_idx(p_ptr->inside_quest));
229
230         bool resists_tele = FALSE;
231
232         /* Prepare flags for summoning */
233         if (!pet) u_mode |= PM_ALLOW_UNIQUE;
234
235         /* Cannot cast spells when confused */
236         if (m_ptr->confused) return (FALSE);
237
238         /* Extract the racial spell flags */
239         f4 = r_ptr->flags4;
240         f5 = r_ptr->flags5;
241         f6 = r_ptr->flags6;
242
243         /* Target is given for pet? */
244         if (pet_t_m_idx && pet)
245         {
246                 t_idx = pet_t_m_idx;
247                 t_ptr = &m_list[t_idx];
248
249                 /* Cancel if not projectable (for now) */
250                 if (!projectable(m_ptr->fy, m_ptr->fx, t_ptr->fy, t_ptr->fx))
251                 {
252                         t_idx = 0;
253                 }
254         }
255
256         /* Is there counter attack target? */
257         if (!t_idx && m_ptr->target_y)
258         {
259                 t_idx = cave[m_ptr->target_y][m_ptr->target_x].m_idx;
260
261                 if (t_idx)
262                 {
263                         t_ptr = &m_list[t_idx];
264
265                         /* Cancel if neither enemy nor a given target */
266                         if (t_idx != pet_t_m_idx &&
267                             !are_enemies(m_ptr, t_ptr))
268                         {
269                                 t_idx = 0;
270                         }
271
272                         /* Allow only summoning etc.. if not projectable */
273                         else if (!projectable(m_ptr->fy, m_ptr->fx, t_ptr->fy, t_ptr->fx))
274                         {
275                                 f4 &= (RF4_INDIRECT_MASK);
276                                 f5 &= (RF5_INDIRECT_MASK);
277                                 f6 &= (RF6_INDIRECT_MASK);
278                         }
279                 }
280         }
281
282         /* Look for enemies normally */
283         if (!t_idx)
284         {
285                 bool success = FALSE;
286
287                 if (p_ptr->inside_battle)
288                 {
289                         start = randint1(m_max-1) + m_max;
290                         if (randint0(2)) plus = -1;
291                 }
292                 else start = m_max + 1;
293
294                 /* Scan thru all monsters */
295                 for (i = start; ((i < start + m_max) && (i > start - m_max)); i += plus)
296                 {
297                         int dummy = (i % m_max);
298                         if (!dummy) continue;
299
300                         t_idx = dummy;
301                         t_ptr = &m_list[t_idx];
302
303                         /* Skip dead monsters */
304                         if (!t_ptr->r_idx) continue;
305
306                         /* Monster must be 'an enemy' */
307                         if (!are_enemies(m_ptr, t_ptr)) continue;
308
309                         /* Monster must be projectable */
310                         if (!projectable(m_ptr->fy, m_ptr->fx, t_ptr->fy, t_ptr->fx)) continue;
311
312                         /* Get it */
313                         success = TRUE;
314                         break;
315                 }
316
317                 /* No enemy found */
318                 if (!success) return FALSE;
319         }
320
321
322         /* OK -- we've got a target */
323         y = t_ptr->fy;
324         x = t_ptr->fx;
325         tr_ptr = &r_info[t_ptr->r_idx];
326
327         /* Forget old counter attack target */
328         reset_target(m_ptr);
329
330         /* Extract the monster level */
331         rlev = ((r_ptr->level >= 1) ? r_ptr->level : 1);
332
333         /* Remove unimplemented spells */
334         f4 &= ~(RF4_DISPEL);
335         f6 &= ~(RF6_WORLD | RF6_FORGET);
336
337         /* Remove unimplemented special moves */
338         if (f6 & RF6_SPECIAL)
339         {
340                 if ((m_ptr->r_idx != MON_ROLENTO) && (r_ptr->d_char != 'B'))
341                         f6 &= ~(RF6_SPECIAL);
342         }
343
344         if (in_no_magic_dungeon && !(r_ptr->flags2 & RF2_STUPID))
345         {
346                 f4 &= (RF4_NOMAGIC_MASK);
347                 f5 &= (RF5_NOMAGIC_MASK);
348                 f6 &= (RF6_NOMAGIC_MASK);
349         }
350
351         if (p_ptr->inside_arena || p_ptr->inside_battle)
352         {
353                 f4 &= ~(RF4_SUMMON_MASK);
354                 f5 &= ~(RF5_SUMMON_MASK);
355                 f6 &= ~(RF6_SUMMON_MASK | RF6_TELE_LEVEL);
356
357                 if (m_ptr->r_idx == MON_ROLENTO) f6 &= ~(RF6_SPECIAL);
358         }
359
360         if (p_ptr->inside_battle && !one_in_(3))
361         {
362                 f6 &= ~(RF6_HEAL);
363         }
364
365         if (m_idx == p_ptr->riding)
366         {
367                 f4 &= ~(RF4_RIDING_MASK);
368                 f5 &= ~(RF5_RIDING_MASK);
369                 f6 &= ~(RF6_RIDING_MASK);
370         }
371
372         if (pet)
373         {
374                 f4 &= ~(RF4_SHRIEK);
375                 f6 &= ~(RF6_DARKNESS | RF6_TRAPS);
376
377                 if (!(p_ptr->pet_extra_flags & PF_TELEPORT))
378                 {
379                         f6 &= ~(RF6_BLINK | RF6_TPORT | RF6_TELE_TO | RF6_TELE_AWAY | RF6_TELE_LEVEL);
380                 }
381
382                 if (!(p_ptr->pet_extra_flags & PF_ATTACK_SPELL))
383                 {
384                         f4 &= ~(RF4_ATTACK_MASK);
385                         f5 &= ~(RF5_ATTACK_MASK);
386                         f6 &= ~(RF6_ATTACK_MASK);
387                 }
388
389                 if (!(p_ptr->pet_extra_flags & PF_SUMMON_SPELL))
390                 {
391                         f4 &= ~(RF4_SUMMON_MASK);
392                         f5 &= ~(RF5_SUMMON_MASK);
393                         f6 &= ~(RF6_SUMMON_MASK);
394                 }
395
396                 /* Prevent collateral damage */
397                 if (!(p_ptr->pet_extra_flags & PF_BALL_SPELL) && (m_idx != p_ptr->riding))
398                 {
399                         if ((f4 & (RF4_BALL_MASK & ~(RF4_ROCKET))) ||
400                             (f5 & RF5_BALL_MASK) ||
401                             (f6 & RF6_BALL_MASK))
402                         {
403                                 int real_y = y;
404                                 int real_x = x;
405
406                                 get_project_point(m_ptr->fy, m_ptr->fx, &real_y, &real_x, 0L);
407
408                                 if (los(real_y, real_x, py, px))
409                                 {
410                                         int dist = distance(real_y, real_x, py, px);
411
412                                         if (dist <= 2)
413                                         {
414                                                 f4 &= ~(RF4_BALL_MASK & ~(RF4_ROCKET));
415                                                 f5 &= ~(RF5_BALL_MASK);
416                                                 f6 &= ~(RF6_BALL_MASK);
417                                         }
418                                         else if (dist <= 4)
419                                         {
420                                                 f4 &= ~(RF4_BIG_BALL_MASK);
421                                                 f5 &= ~(RF5_BIG_BALL_MASK);
422                                                 f6 &= ~(RF6_BIG_BALL_MASK);
423                                         }
424                                 }
425                         }
426
427                         if (f4 & RF4_ROCKET)
428                         {
429                                 int real_y = y;
430                                 int real_x = x;
431
432                                 get_project_point(m_ptr->fy, m_ptr->fx, &real_y, &real_x, PROJECT_STOP);
433                                 if (los(real_y, real_x, py, px) && (distance(real_y, real_x, py, px) <= 2))
434                                         f4 &= ~(RF4_ROCKET);
435                         }
436
437                         if (((f4 & RF4_BEAM_MASK) ||
438                              (f5 & RF5_BEAM_MASK) ||
439                              (f6 & RF6_BEAM_MASK)) &&
440                             !direct_beam(m_ptr->fy, m_ptr->fx, t_ptr->fy, t_ptr->fx, m_ptr))
441                         {
442                                 f4 &= ~(RF4_BEAM_MASK);
443                                 f5 &= ~(RF5_BEAM_MASK);
444                                 f6 &= ~(RF6_BEAM_MASK);
445                         }
446
447                         if ((f4 & RF4_BREATH_MASK) ||
448                             (f5 & RF5_BREATH_MASK) ||
449                             (f6 & RF6_BREATH_MASK))
450                         {
451                                 /* Expected breath radius */
452                                 int rad = (r_ptr->flags2 & RF2_POWERFUL) ? 3 : 2;
453
454                                 if (!breath_direct(m_ptr->fy, m_ptr->fx, t_ptr->fy, t_ptr->fx, rad, FALSE, TRUE))
455                                 {
456                                         f4 &= ~(RF4_BREATH_MASK);
457                                         f5 &= ~(RF5_BREATH_MASK);
458                                         f6 &= ~(RF6_BREATH_MASK);
459                                 }
460                                 else if ((f4 & RF4_BR_DISI) &&
461                                          !breath_direct(m_ptr->fy, m_ptr->fx, t_ptr->fy, t_ptr->fx, rad, TRUE, TRUE))
462                                 {
463                                         f4 &= ~(RF4_BR_DISI);
464                                 }
465                         }
466                 }
467
468                 /* Special moves restriction */
469                 if (f6 & RF6_SPECIAL)
470                 {
471                         if (m_ptr->r_idx == MON_ROLENTO)
472                         {
473                                 if ((p_ptr->pet_extra_flags & (PF_ATTACK_SPELL | PF_SUMMON_SPELL)) != (PF_ATTACK_SPELL | PF_SUMMON_SPELL))
474                                         f6 &= ~(RF6_SPECIAL);
475                         }
476                         else if (r_ptr->d_char == 'B')
477                         {
478                                 if ((p_ptr->pet_extra_flags & (PF_ATTACK_SPELL | PF_TELEPORT)) != (PF_ATTACK_SPELL | PF_TELEPORT))
479                                         f6 &= ~(RF6_SPECIAL);
480                         }
481                         else f6 &= ~(RF6_SPECIAL);
482                 }
483         }
484
485         /* Remove some spells if necessary */
486
487         if (!(r_ptr->flags2 & RF2_STUPID))
488         {
489                 /* Check for a clean bolt shot */
490                 if (((f4 & RF4_BOLT_MASK) ||
491                      (f5 & RF5_BOLT_MASK) ||
492                      (f6 & RF6_BOLT_MASK)) &&
493                     !clean_shot(m_ptr->fy, m_ptr->fx, t_ptr->fy, t_ptr->fx, pet))
494                 {
495                         f4 &= ~(RF4_BOLT_MASK);
496                         f5 &= ~(RF5_BOLT_MASK);
497                         f6 &= ~(RF6_BOLT_MASK);
498                 }
499
500                 /* Check for a possible summon */
501                 if (((f4 & RF4_SUMMON_MASK) ||
502                      (f5 & RF5_SUMMON_MASK) ||
503                      (f6 & RF6_SUMMON_MASK)) &&
504                     !(summon_possible(t_ptr->fy, t_ptr->fx)))
505                 {
506                         /* Remove summoning spells */
507                         f4 &= ~(RF4_SUMMON_MASK);
508                         f5 &= ~(RF5_SUMMON_MASK);
509                         f6 &= ~(RF6_SUMMON_MASK);
510                 }
511
512                 /* Check for a possible raise dead */
513                 if ((f6 & RF6_RAISE_DEAD) && !raise_possible(m_ptr))
514                 {
515                         /* Remove raise dead spell */
516                         f6 &= ~(RF6_RAISE_DEAD);
517                 }
518
519                 /* Special moves restriction */
520                 if (f6 & RF6_SPECIAL)
521                 {
522                         if ((m_ptr->r_idx == MON_ROLENTO) && !summon_possible(t_ptr->fy, t_ptr->fx))
523                         {
524                                 f6 &= ~(RF6_SPECIAL);
525                         }
526                 }
527         }
528
529         if (r_ptr->flags2 & RF2_SMART)
530         {
531                 /* Hack -- allow "desperate" spells */
532                 if ((m_ptr->hp < m_ptr->maxhp / 10) &&
533                     (randint0(100) < 50))
534                 {
535                         /* Require intelligent spells */
536                         f4 &= (RF4_INT_MASK);
537                         f5 &= (RF5_INT_MASK);
538                         f6 &= (RF6_INT_MASK);
539                 }
540
541                 /* Hack -- decline "teleport level" in some case */
542                 if ((f6 & RF6_TELE_LEVEL) && TELE_LEVEL_IS_INEFF((t_idx == p_ptr->riding) ? 0 : t_idx))
543                 {
544                         f6 &= ~(RF6_TELE_LEVEL);
545                 }
546         }
547
548         /* No spells left */
549         if (!f4 && !f5 && !f6) return FALSE;
550
551         /* Extract the "inate" spells */
552         for (k = 0; k < 32; k++)
553         {
554                 if (f4 & (1L << k)) spell[num++] = k + 32 * 3;
555         }
556
557         /* Extract the "normal" spells */
558         for (k = 0; k < 32; k++)
559         {
560                 if (f5 & (1L << k)) spell[num++] = k + 32 * 4;
561         }
562
563         /* Extract the "bizarre" spells */
564         for (k = 0; k < 32; k++)
565         {
566                 if (f6 & (1L << k)) spell[num++] = k + 32 * 5;
567         }
568
569         /* No spells left */
570         if (!num) return (FALSE);
571
572         /* Stop if player is dead or gone */
573         if (!p_ptr->playing || p_ptr->is_dead) return (FALSE);
574
575         /* Handle "leaving" */
576         if (p_ptr->leaving) return (FALSE);
577
578         /* Get the monster name (or "it") */
579         monster_desc(m_name, m_ptr, 0x00);
580
581 #ifndef JP
582         /* Get the monster possessive ("his"/"her"/"its") */
583         monster_desc(m_poss, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE);
584 #endif
585
586         /* Get the target's name (or "it") */
587         monster_desc(t_name, t_ptr, 0x00);
588
589         /* Choose a spell to cast */
590         thrown_spell = spell[randint0(num)];
591
592         see_t = t_ptr->ml;
593         see_either = (see_m || see_t);
594
595         /* Can the player be aware of this attack? */
596         known = (m_ptr->cdis <= MAX_SIGHT) || (t_ptr->cdis <= MAX_SIGHT);
597
598         if (p_ptr->riding && (m_idx == p_ptr->riding)) disturb(1, 0);
599
600         /* Check for spell failure (inate attacks never fail) */
601         if (!spell_is_inate(thrown_spell) && (in_no_magic_dungeon || (m_ptr->stunned && one_in_(2))))
602         {
603                 disturb(1, 0);
604                 /* Message */
605 #ifdef JP
606                 msg_format("%^s¤Ï¼öʸ¤ò¾§¤¨¤è¤¦¤È¤·¤¿¤¬¼ºÇÔ¤·¤¿¡£", m_name);
607 #else
608                 msg_format("%^s tries to cast a spell, but fails.", m_name);
609 #endif
610
611                 return (TRUE);
612         }
613
614         switch (thrown_spell)
615         {
616         /* RF4_SHRIEK */
617         case 96+0:
618                 if (known)
619                 {
620                         if (see_m)
621                         {
622 #ifdef JP
623                                 msg_format("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¶«¤ó¤À¡£", m_name, t_name);
624 #else
625                                 msg_format("%^s shrieks at %s.", m_name, t_name);
626 #endif
627
628                         }
629                         else
630                         {
631                                 mon_fight = TRUE;
632                         }
633                 }
634
635                 wake_up = TRUE;
636
637                 break;
638
639         /* RF4_XXX1 */
640         case 96+1:
641                 /* XXX XXX XXX */
642                 return FALSE;
643
644         /* RF4_DISPEL */
645         case 96+2:
646                 return FALSE;
647
648         /* RF4_ROCKET */
649         case 96+3:
650                 if (known)
651                 {
652                         if (see_either)
653                         {
654                                 disturb(1, 0);
655
656                                 if (blind)
657                                 {
658 #ifdef JP
659                                         msg_format("%^s¤¬²¿¤«¤ò¼Í¤Ã¤¿¡£", m_name);
660 #else
661                                         msg_format("%^s shoots something.", m_name);
662 #endif
663
664                                 }
665                                 else
666                                 {
667 #ifdef JP
668                                         msg_format("%^s¤¬%s¤Ë¥í¥±¥Ã¥È¤òȯ¼Í¤·¤¿¡£", m_name, t_name);
669 #else
670                                         msg_format("%^s fires a rocket at %s.", m_name, t_name);
671 #endif
672
673                                 }
674                         }
675                         else
676                         {
677                                 mon_fight = TRUE;
678                         }
679                 }
680
681                 dam = ((m_ptr->hp / 4) > 800 ? 800 : (m_ptr->hp / 4));
682                 monst_breath_monst(m_idx, y, x, GF_ROCKET,
683                                    dam, 2, FALSE, MS_ROCKET, learnable);
684
685                 break;
686
687         /* RF4_SHOOT */
688         case 96+4:
689                 if (known)
690                 {
691                         if (see_either)
692                         {
693                                 if (blind)
694                                 {
695 #ifdef JP
696                                         msg_format("%^s¤¬´ñ̯¤Ê²»¤òȯ¤·¤¿¡£", m_name);
697 #else
698                                         msg_format("%^s makes a strange noise.", m_name);
699 #endif
700
701                                 }
702                                 else
703                                 {
704 #ifdef JP
705                                         msg_format("%^s¤¬%s¤ËÌð¤òÊü¤Ã¤¿¡£", m_name, t_name);
706 #else
707                                         msg_format("%^s fires an arrow at %s.", m_name, t_name);
708 #endif
709
710                                 }
711                         }
712                         else
713                         {
714                                 mon_fight = TRUE;
715                         }
716
717                         sound(SOUND_SHOOT);
718                 }
719
720                 dam = damroll(r_ptr->blow[0].d_dice, r_ptr->blow[0].d_side);
721                 monst_bolt_monst(m_idx, y, x, GF_ARROW, dam, MS_SHOOT, learnable);
722
723                 break;
724
725         /* RF4_XXX2 */
726         case 96+5:
727                 /* XXX XXX XXX */
728                 return FALSE;
729
730         /* RF4_XXX3 */
731         case 96+6:
732                 /* XXX XXX XXX */
733                 return FALSE;
734
735         /* RF4_XXX4 */
736         case 96+7:
737                 /* XXX XXX XXX */
738                 return FALSE;
739
740         /* RF4_BR_ACID */
741         case 96+8:
742                 if (known)
743                 {
744                         if (see_either)
745                         {
746                                 disturb(1, 0);
747
748                                 if (blind)
749                                 {
750 #ifdef JP
751                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
752 #else
753                                         msg_format("%^s breathes.", m_name);
754 #endif
755
756                                 }
757                                 else
758                                 {
759 #ifdef JP
760                                         msg_format("%^s¤¬%s¤Ë»À¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
761 #else
762                                         msg_format("%^s breathes acid at %s.", m_name, t_name);
763 #endif
764
765                                 }
766                         }
767                         else
768                         {
769                                 mon_fight = TRUE;
770                         }
771
772                         sound(SOUND_BREATH);
773                 }
774
775                 dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
776                 monst_breath_monst(m_idx, y, x, GF_ACID,
777                                    dam,0, TRUE, MS_BR_ACID, learnable);
778
779                 break;
780
781         /* RF4_BR_ELEC */
782         case 96+9:
783                 if (known)
784                 {
785                         if (see_either)
786                         {
787                                 disturb(1, 0);
788
789                                 if (blind)
790                                 {
791 #ifdef JP
792                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
793 #else
794                                         msg_format("%^s breathes.", m_name);
795 #endif
796
797                                 }
798                                 else
799                                 {
800 #ifdef JP
801                                         msg_format("%^s¤¬%s¤Ë°ðºÊ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
802 #else
803                                         msg_format("%^s breathes lightning at %s.", m_name, t_name);
804 #endif
805
806                                 }
807                         }
808                         else
809                         {
810                                 mon_fight = TRUE;
811                         }
812
813                         sound(SOUND_BREATH);
814                 }
815
816                 dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
817                 monst_breath_monst(m_idx, y, x, GF_ELEC,
818                                    dam,0, TRUE, MS_BR_ELEC, learnable);
819
820                 break;
821
822         /* RF4_BR_FIRE */
823         case 96+10:
824                 if (known)
825                 {
826                         if (see_either)
827                         {
828                                 disturb(1, 0);
829
830                                 if (blind)
831                                 {
832 #ifdef JP
833                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
834 #else
835                                         msg_format("%^s breathes.", m_name);
836 #endif
837
838                                 }
839                                 else
840                                 {
841 #ifdef JP
842                                         msg_format("%^s¤¬%s¤Ë²Ð±ê¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
843 #else
844                                         msg_format("%^s breathes fire at %s.", m_name, t_name);
845 #endif
846
847                                 }
848                         }
849                         else
850                         {
851                                 mon_fight = TRUE;
852                         }
853
854                         sound(SOUND_BREATH);
855                 }
856
857                 dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
858                 monst_breath_monst(m_idx, y, x, GF_FIRE,
859                                    dam,0, TRUE, MS_BR_FIRE, learnable);
860
861                 break;
862
863         /* RF4_BR_COLD */
864         case 96+11:
865                 if (known)
866                 {
867                         if (see_either)
868                         {
869                                 disturb(1, 0);
870
871                                 if (blind)
872                                 {
873 #ifdef JP
874                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
875 #else
876                                         msg_format("%^s breathes.", m_name);
877 #endif
878
879                                 }
880                                 else
881                                 {
882 #ifdef JP
883                                         msg_format("%^s¤¬%s¤ËÎ䵤¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
884 #else
885                                         msg_format("%^s breathes frost at %s.", m_name, t_name);
886 #endif
887
888                                 }
889                         }
890                         else
891                         {
892                                 mon_fight = TRUE;
893                         }
894
895                         sound(SOUND_BREATH);
896                 }
897
898                 dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
899                 monst_breath_monst(m_idx, y, x, GF_COLD,
900                                    dam,0, TRUE, MS_BR_COLD, learnable);
901                 break;
902
903         /* RF4_BR_POIS */
904         case 96+12:
905                 if (known)
906                 {
907                         if (see_either)
908                         {
909                                 disturb(1, 0);
910
911                                 if (blind)
912                                 {
913 #ifdef JP
914                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
915 #else
916                                         msg_format("%^s breathes.", m_name);
917 #endif
918
919                                 }
920                                 else
921                                 {
922 #ifdef JP
923                                         msg_format("%^s¤¬%s¤Ë¥¬¥¹¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
924 #else
925                                         msg_format("%^s breathes gas at %s.", m_name, t_name);
926 #endif
927
928                                 }
929                         }
930                         else
931                         {
932                                 mon_fight = TRUE;
933                         }
934
935                         sound(SOUND_BREATH);
936                 }
937
938                 dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
939                 monst_breath_monst(m_idx, y, x, GF_POIS,
940                                    dam,0, TRUE, MS_BR_POIS, learnable);
941
942                 break;
943
944         /* RF4_BR_NETH */
945         case 96+13:
946                 if (known)
947                 {
948                         if (see_either)
949                         {
950                                 disturb(1, 0);
951
952                                 if (blind)
953                                 {
954 #ifdef JP
955                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
956 #else
957                                         msg_format("%^s breathes.", m_name);
958 #endif
959
960                                 }
961                                 else
962                                 {
963 #ifdef JP
964                                         msg_format("%^s¤¬%s¤ËÃϹö¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
965 #else
966                                         msg_format("%^s breathes nether at %s.", m_name, t_name);
967 #endif
968
969                                 }
970                         }
971                         else
972                         {
973                                 mon_fight = TRUE;
974                         }
975
976                         sound(SOUND_BREATH);
977                 }
978
979                 dam = ((m_ptr->hp / 6) > 550 ? 550 : (m_ptr->hp / 6));
980                 monst_breath_monst(m_idx, y, x, GF_NETHER,
981                                    dam,0, TRUE, MS_BR_NETHER, learnable);
982
983                 break;
984
985         /* RF4_BR_LITE */
986         case 96+14:
987                 if (known)
988                 {
989                         if (see_either)
990                         {
991                                 disturb(1, 0);
992
993                                 if (blind)
994                                 {
995 #ifdef JP
996                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
997 #else
998                                         msg_format("%^s breathes.", m_name);
999 #endif
1000
1001                                 }
1002                                 else
1003                                 {
1004 #ifdef JP
1005                                         msg_format("%^s¤¬%s¤ËÁ®¸÷¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
1006 #else
1007                                         msg_format("%^s breathes light at %s.", m_name, t_name);
1008 #endif
1009
1010                                 }
1011                         }
1012                         else
1013                         {
1014                                 mon_fight = TRUE;
1015                         }
1016
1017                         sound(SOUND_BREATH);
1018                 }
1019
1020                 dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
1021                 monst_breath_monst(m_idx, y, x, GF_LITE,
1022                                    dam,0, TRUE, MS_BR_LITE, learnable);
1023
1024                 break;
1025
1026         /* RF4_BR_DARK */
1027         case 96+15:
1028                 if (known)
1029                 {
1030                         if (see_either)
1031                         {
1032                                 disturb(1, 0);
1033
1034                                 if (blind)
1035                                 {
1036 #ifdef JP
1037                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
1038 #else
1039                                         msg_format("%^s breathes.", m_name);
1040 #endif
1041
1042                                 }
1043                                 else
1044                                 {
1045 #ifdef JP
1046                                         msg_format("%^s¤¬%s¤Ë°Å¹õ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
1047 #else
1048                                         msg_format("%^s breathes darkness at %s.", m_name, t_name);
1049 #endif
1050
1051                                 }
1052                         }
1053                         else
1054                         {
1055                                 mon_fight = TRUE;
1056                         }
1057
1058                         sound(SOUND_BREATH);
1059                 }
1060
1061                 dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
1062                 monst_breath_monst(m_idx, y, x, GF_DARK,
1063                                    dam,0, TRUE, MS_BR_DARK, learnable);
1064
1065                 break;
1066
1067         /* RF4_BR_CONF */
1068         case 96+16:
1069                 if (known)
1070                 {
1071                         if (see_either)
1072                         {
1073                                 disturb(1, 0);
1074
1075                                 if (blind)
1076                                 {
1077 #ifdef JP
1078                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
1079 #else
1080                                         msg_format("%^s breathes.", m_name);
1081 #endif
1082
1083                                 }
1084                                 else
1085                                 {
1086 #ifdef JP
1087                                         msg_format("%^s¤¬%s¤Ëº®Íð¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
1088 #else
1089                                         msg_format("%^s breathes confusion at %s.", m_name, t_name);
1090 #endif
1091
1092                                 }
1093                         }
1094                         else
1095                         {
1096                                 mon_fight = TRUE;
1097                         }
1098
1099                         sound(SOUND_BREATH);
1100                 }
1101
1102                 dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
1103                 monst_breath_monst(m_idx, y, x, GF_CONFUSION,
1104                                    dam,0, TRUE, MS_BR_CONF, learnable);
1105
1106                 break;
1107
1108         /* RF4_BR_SOUN */
1109         case 96+17:
1110                 if (known)
1111                 {
1112                         if (see_either)
1113                         {
1114                                 disturb(1, 0);
1115
1116                                 if (m_ptr->r_idx == MON_JAIAN)
1117 #ifdef JP
1118                                         msg_format("¡Ö¥Ü¥©¥¨¡Á¡Á¡Á¡Á¡Á¡Á¡×");
1119 #else
1120                                 msg_format("'Booooeeeeee'");
1121 #endif
1122                                 else if (blind)
1123                                 {
1124 #ifdef JP
1125                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
1126 #else
1127                                         msg_format("%^s breathes.", m_name);
1128 #endif
1129
1130                                 }
1131                                 else
1132                                 {
1133 #ifdef JP
1134                                         msg_format("%^s¤¬%s¤Ë¹ì²»¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
1135 #else
1136                                         msg_format("%^s breathes sound at %s.", m_name, t_name);
1137 #endif
1138
1139                                 }
1140                         }
1141                         else
1142                         {
1143                                 mon_fight = TRUE;
1144                         }
1145
1146                         sound(SOUND_BREATH);
1147                 }
1148
1149                 dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
1150                 monst_breath_monst(m_idx, y, x, GF_SOUND,
1151                                    dam,0, TRUE, MS_BR_SOUND, learnable);
1152
1153                 break;
1154
1155         /* RF4_BR_CHAO */
1156         case 96+18:
1157                 if (known)
1158                 {
1159                         if (see_either)
1160                         {
1161                                 disturb(1, 0);
1162
1163                                 if (blind)
1164                                 {
1165 #ifdef JP
1166                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
1167 #else
1168                                         msg_format("%^s breathes.", m_name);
1169 #endif
1170
1171                                 }
1172                                 else
1173                                 {
1174 #ifdef JP
1175                                         msg_format("%^s¤¬%s¤Ë¥«¥ª¥¹¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
1176 #else
1177                                         msg_format("%^s breathes chaos at %s.", m_name, t_name);
1178 #endif
1179
1180                                 }
1181                         }
1182                         else
1183                         {
1184                                 mon_fight = TRUE;
1185                         }
1186
1187                         sound(SOUND_BREATH);
1188                 }
1189
1190                 dam = ((m_ptr->hp / 6) > 600 ? 600 : (m_ptr->hp / 6));
1191                 monst_breath_monst(m_idx, y, x, GF_CHAOS,
1192                                    dam,0, TRUE, MS_BR_CHAOS, learnable);
1193
1194                 break;
1195
1196         /* RF4_BR_DISE */
1197         case 96+19:
1198                 if (known)
1199                 {
1200                         if (see_either)
1201                         {
1202                                 disturb(1, 0);
1203
1204                                 if (blind)
1205                                 {
1206 #ifdef JP
1207                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
1208 #else
1209                                         msg_format("%^s breathes.", m_name);
1210 #endif
1211
1212                                 }
1213                                 else
1214                                 {
1215 #ifdef JP
1216                                         msg_format("%^s¤¬%s¤ËÎô²½¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
1217 #else
1218                                         msg_format("%^s breathes disenchantment at %s.", m_name, t_name);
1219 #endif
1220
1221                                 }
1222                         }
1223                         else
1224                         {
1225                                 mon_fight = TRUE;
1226                         }
1227
1228                         sound(SOUND_BREATH);
1229                 }
1230
1231                 dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
1232                 monst_breath_monst(m_idx, y, x, GF_DISENCHANT,
1233                                    dam,0, TRUE, MS_BR_DISEN, learnable);
1234
1235                 break;
1236
1237         /* RF4_BR_NEXU */
1238         case 96+20:
1239                 if (known)
1240                 {
1241                         if (see_either)
1242                         {
1243                                 disturb(1, 0);
1244
1245                                 if (blind)
1246                                 {
1247 #ifdef JP
1248                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
1249 #else
1250                                         msg_format("%^s breathes.", m_name);
1251 #endif
1252
1253                                 }
1254                                 else
1255                                 {
1256 #ifdef JP
1257                                         msg_format("%^s¤¬%s¤Ë°ø²Ìº®Íð¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
1258 #else
1259                                         msg_format("%^s breathes nexus at %s.", m_name, t_name);
1260 #endif
1261
1262                                 }
1263                         }
1264                         else
1265                         {
1266                                 mon_fight = TRUE;
1267                         }
1268
1269                         sound(SOUND_BREATH);
1270                 }
1271
1272                 dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
1273                 monst_breath_monst(m_idx, y, x, GF_NEXUS,
1274                                    dam,0, TRUE, MS_BR_NEXUS, learnable);
1275
1276                 break;
1277
1278         /* RF4_BR_TIME */
1279         case 96+21:
1280                 if (known)
1281                 {
1282                         if (see_either)
1283                         {
1284                                 disturb(1, 0);
1285
1286                                 if (blind)
1287                                 {
1288 #ifdef JP
1289                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
1290 #else
1291                                         msg_format("%^s breathes.", m_name);
1292 #endif
1293
1294                                 }
1295                                 else
1296                                 {
1297 #ifdef JP
1298                                         msg_format("%^s¤¬%s¤Ë»þ´ÖµÕž¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
1299 #else
1300                                         msg_format("%^s breathes time at %s.", m_name, t_name);
1301 #endif
1302
1303                                 }
1304                         }
1305                         else
1306                         {
1307                                 mon_fight = TRUE;
1308                         }
1309
1310                         sound(SOUND_BREATH);
1311                 }
1312
1313                 dam = ((m_ptr->hp / 3) > 150 ? 150 : (m_ptr->hp / 3));
1314                 monst_breath_monst(m_idx, y, x, GF_TIME,
1315                                    dam,0, TRUE, MS_BR_TIME, learnable);
1316
1317                 break;
1318
1319         /* RF4_BR_INER */
1320         case 96+22:
1321                 if (known)
1322                 {
1323                         if (see_either)
1324                         {
1325                                 disturb(1, 0);
1326
1327                                 if (blind)
1328                                 {
1329 #ifdef JP
1330                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
1331 #else
1332                                         msg_format("%^s breathes.", m_name);
1333 #endif
1334
1335                                 }
1336                                 else
1337                                 {
1338 #ifdef JP
1339                                         msg_format("%^s¤¬%s¤ËÃÙÆߤΥ֥쥹¤òÅǤ¤¤¿¡£", m_name, t_name);
1340 #else
1341                                         msg_format("%^s breathes inertia at %s.", m_name, t_name);
1342 #endif
1343
1344                                 }
1345                         }
1346                         else
1347                         {
1348                                 mon_fight = TRUE;
1349                         }
1350
1351                         sound(SOUND_BREATH);
1352                 }
1353
1354                 dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
1355                 monst_breath_monst(m_idx, y, x, GF_INERTIA,
1356                                    dam,0, TRUE, MS_BR_INERTIA, learnable);
1357
1358                 break;
1359
1360         /* RF4_BR_GRAV */
1361         case 96+23:
1362                 if (known)
1363                 {
1364                         if (see_either)
1365                         {
1366                                 disturb(1, 0);
1367
1368                                 if (blind)
1369                                 {
1370 #ifdef JP
1371                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
1372 #else
1373                                         msg_format("%^s breathes.", m_name);
1374 #endif
1375
1376                                 }
1377                                 else
1378                                 {
1379 #ifdef JP
1380                                         msg_format("%^s¤¬%s¤Ë½ÅÎϤΥ֥쥹¤òÅǤ¤¤¿¡£", m_name, t_name);
1381 #else
1382                                         msg_format("%^s breathes gravity at %s.", m_name, t_name);
1383 #endif
1384
1385                                 }
1386                         }
1387                         else
1388                         {
1389                                 mon_fight = TRUE;
1390                         }
1391
1392                         sound(SOUND_BREATH);
1393                 }
1394
1395                 dam = ((m_ptr->hp / 3) > 200 ? 200 : (m_ptr->hp / 3));
1396                 monst_breath_monst(m_idx, y, x, GF_GRAVITY,
1397                                    dam,0, TRUE, MS_BR_GRAVITY, learnable);
1398
1399                 break;
1400
1401         /* RF4_BR_SHAR */
1402         case 96+24:
1403                 if (known)
1404                 {
1405                         if (see_either)
1406                         {
1407                                 disturb(1, 0);
1408
1409                                 if (m_ptr->r_idx == MON_BOTEI)
1410 #ifdef JP
1411                                         msg_format("¡Ö¥ÜÄë¥Ó¥ë¥«¥Ã¥¿¡¼¡ª¡ª¡ª¡×");
1412 #else
1413                                 msg_format("'Boty-Build cutter!!!'");
1414 #endif
1415                                 else if (blind)
1416                                 {
1417 #ifdef JP
1418                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
1419 #else
1420                                         msg_format("%^s breathes.", m_name);
1421 #endif
1422
1423                                 }
1424                                 else
1425                                 {
1426 #ifdef JP
1427                                         msg_format("%^s¤¬%s¤ËÇËÊҤΥ֥쥹¤òÅǤ¤¤¿¡£", m_name, t_name);
1428 #else
1429                                         msg_format("%^s breathes shards at %s.", m_name, t_name);
1430 #endif
1431
1432                                 }
1433                         }
1434                         else
1435                         {
1436                                 mon_fight = TRUE;
1437                         }
1438
1439                         sound(SOUND_BREATH);
1440                 }
1441
1442                 dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
1443                 monst_breath_monst(m_idx, y, x, GF_SHARDS,
1444                                    dam,0, TRUE, MS_BR_SHARDS, learnable);
1445
1446                 break;
1447
1448         /* RF4_BR_PLAS */
1449         case 96+25:
1450                 if (known)
1451                 {
1452                         if (see_either)
1453                         {
1454                                 disturb(1, 0);
1455
1456                                 if (blind)
1457                                 {
1458 #ifdef JP
1459                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
1460 #else
1461                                         msg_format("%^s breathes.", m_name);
1462 #endif
1463
1464                                 }
1465                                 else
1466                                 {
1467 #ifdef JP
1468                                         msg_format("%^s¤¬%s¤Ë¥×¥é¥º¥Þ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
1469 #else
1470                                         msg_format("%^s breathes plasma at %s.", m_name, t_name);
1471 #endif
1472
1473                                 }
1474                         }
1475                         else
1476                         {
1477                                 mon_fight = TRUE;
1478                         }
1479
1480                         sound(SOUND_BREATH);
1481                 }
1482
1483                 dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
1484                 monst_breath_monst(m_idx, y, x, GF_PLASMA,
1485                                    dam,0, TRUE, MS_BR_PLASMA, learnable);
1486
1487                 break;
1488
1489         /* RF4_BR_WALL */
1490         case 96+26:
1491                 if (known)
1492                 {
1493                         if (see_either)
1494                         {
1495                                 disturb(1, 0);
1496
1497                                 if (blind)
1498                                 {
1499 #ifdef JP
1500                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
1501 #else
1502                                         msg_format("%^s breathes.", m_name);
1503 #endif
1504
1505                                 }
1506                                 else
1507                                 {
1508 #ifdef JP
1509                                         msg_format("%^s¤¬%s¤Ë¥Õ¥©¡¼¥¹¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
1510 #else
1511                                         msg_format("%^s breathes force at %s.", m_name, t_name);
1512 #endif
1513
1514                                 }
1515                         }
1516                         else
1517                         {
1518                                 mon_fight = TRUE;
1519                         }
1520
1521                         sound(SOUND_BREATH);
1522                 }
1523
1524                 dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
1525                 monst_breath_monst(m_idx, y, x, GF_FORCE,
1526                                    dam,0, TRUE, MS_BR_FORCE, learnable);
1527                 break;
1528
1529         /* RF4_BR_MANA */
1530         case 96+27:
1531                 if (known)
1532                 {
1533                         if (see_either)
1534                         {
1535                                 disturb(1, 0);
1536
1537                                 if (blind)
1538                                 {
1539 #ifdef JP
1540                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
1541 #else
1542                                         msg_format("%^s breathes.", m_name);
1543 #endif
1544
1545                                 }
1546                                 else
1547                                 {
1548 #ifdef JP
1549                                         msg_format("%^s¤¬%s¤ËËâÎϤΥ֥쥹¤òÅǤ¤¤¿¡£", m_name, t_name);
1550 #else
1551                                         msg_format("%^s breathes mana at %s.", m_name, t_name);
1552 #endif
1553
1554                                 }
1555                         }
1556                         else
1557                         {
1558                                 mon_fight = TRUE;
1559                         }
1560
1561                         sound(SOUND_BREATH);
1562                 }
1563
1564                 dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
1565                 monst_breath_monst(m_idx, y, x, GF_MANA,
1566                                    dam,0, TRUE, MS_BR_MANA, learnable);
1567
1568                 break;
1569
1570         /* RF4_BA_NUKE */
1571         case 96+28:
1572                 if (known)
1573                 {
1574                         if (see_either)
1575                         {
1576                                 disturb(1, 0);
1577
1578                                 if (blind)
1579                                 {
1580 #ifdef JP
1581                                         msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
1582 #else
1583                                         msg_format("%^s mumbles.", m_name);
1584 #endif
1585
1586                                 }
1587                                 else
1588                                 {
1589 #ifdef JP
1590                                         msg_format("%^s¤¬%s¤ËÊü¼Íǽµå¤òÊü¤Ã¤¿¡£", m_name, t_name);
1591 #else
1592                                         msg_format("%^s casts a ball of radiation at %s.", m_name, t_name);
1593 #endif
1594
1595                                 }
1596                         }
1597                         else
1598                         {
1599                                 mon_fight = TRUE;
1600                         }
1601                 }
1602
1603                 dam = (rlev + damroll(10, 6));
1604                 monst_breath_monst(m_idx, y, x, GF_NUKE,
1605                                    dam, 2, FALSE, MS_BALL_NUKE, learnable);
1606
1607                 break;
1608
1609         /* RF4_BR_NUKE */
1610         case 96+29:
1611                 if (known)
1612                 {
1613                         if (see_either)
1614                         {
1615                                 disturb(1, 0);
1616
1617                                 if (blind)
1618                                 {
1619 #ifdef JP
1620                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
1621 #else
1622                                         msg_format("%^s breathes.", m_name);
1623 #endif
1624
1625                                 }
1626                                 else
1627                                 {
1628 #ifdef JP
1629                                         msg_format("%^s¤¬%s¤ËÊü¼ÍÀ­ÇÑ´þʪ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
1630 #else
1631                                         msg_format("%^s breathes toxic waste at %s.", m_name, t_name);
1632 #endif
1633
1634                                 }
1635                         }
1636                         else
1637                         {
1638                                 mon_fight = TRUE;
1639                         }
1640
1641                         sound(SOUND_BREATH);
1642                 }
1643
1644                 dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
1645                 monst_breath_monst(m_idx, y, x, GF_NUKE,
1646                                    dam,0, TRUE, MS_BR_NUKE, learnable);
1647                 break;
1648
1649         /* RF4_BA_CHAO */
1650         case 96+30:
1651                 if (known)
1652                 {
1653                         if (see_either)
1654                         {
1655                                 disturb(1, 0);
1656
1657                                 if (blind)
1658                                 {
1659 #ifdef JP
1660                                         msg_format("%^s¤¬¶²¤í¤·¤²¤Ë¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
1661 #else
1662                                         msg_format("%^s mumbles frighteningly.", m_name);
1663 #endif
1664
1665                                 }
1666                                 else
1667                                 {
1668 #ifdef JP
1669                                         msg_format("%^s¤¬%s¤Ë½ã¥í¥°¥ë¥¹¤òÊü¤Ã¤¿¡£", m_name, t_name);
1670 #else
1671                                         msg_format("%^s invokes raw Logrus upon %s.", m_name, t_name);
1672 #endif
1673
1674                                 }
1675                         }
1676                         else
1677                         {
1678                                 mon_fight = TRUE;
1679                         }
1680                 }
1681
1682                 dam = (rlev * 2) + damroll(10, 10);
1683                 monst_breath_monst(m_idx, y, x, GF_CHAOS,
1684                                    dam, 4, FALSE, MS_BALL_CHAOS, learnable);
1685
1686                 break;
1687
1688         /* RF4_BR_DISI */
1689         case 96+31:
1690                 if (known)
1691                 {
1692                         if (see_either)
1693                         {
1694                                 disturb(1, 0);
1695
1696                                 if (blind)
1697                                 {
1698 #ifdef JP
1699                                         msg_format("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name);
1700 #else
1701                                         msg_format("%^s breathes.", m_name);
1702 #endif
1703
1704                                 }
1705                                 else
1706                                 {
1707 #ifdef JP
1708                                         msg_format("%^s¤¬%s¤Ëʬ²ò¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name);
1709 #else
1710                                         msg_format("%^s breathes disintegration at %s.", m_name, t_name);
1711 #endif
1712
1713                                 }
1714                         }
1715                         else
1716                         {
1717                                 mon_fight = TRUE;
1718                         }
1719
1720                         sound(SOUND_BREATH);
1721                 }
1722
1723                 dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
1724                 monst_breath_monst(m_idx, y, x, GF_DISINTEGRATE,
1725                                    dam,0, TRUE, MS_BR_DISI, learnable);
1726                 break;
1727
1728         /* RF5_BA_ACID */
1729         case 128+0:
1730                 if (known)
1731                 {
1732                         if (see_either)
1733                         {
1734                                 disturb(1, 0);
1735
1736                                 if (blind)
1737                                 {
1738 #ifdef JP
1739                                         msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
1740 #else
1741                                         msg_format("%^s mumbles.", m_name);
1742 #endif
1743
1744                                 }
1745                                 else
1746                                 {
1747 #ifdef JP
1748                                         msg_format("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name, t_name);
1749 #else
1750                                         msg_format("%^s casts an acid ball at %s.", m_name, t_name);
1751 #endif
1752
1753                                 }
1754                         }
1755                         else
1756                         {
1757                                 mon_fight = TRUE;
1758                         }
1759                 }
1760
1761                 dam = (randint1(rlev * 3) + 15) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
1762                 monst_breath_monst(m_idx, y, x, GF_ACID, dam, 2, FALSE, MS_BALL_ACID, learnable);
1763
1764                 break;
1765
1766         /* RF5_BA_ELEC */
1767         case 128+1:
1768                 if (known)
1769                 {
1770                         if (see_either)
1771                         {
1772                                 disturb(1, 0);
1773
1774                                 if (blind)
1775                                 {
1776 #ifdef JP
1777                                         msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
1778 #else
1779                                         msg_format("%^s mumbles.", m_name);
1780 #endif
1781
1782                                 }
1783                                 else
1784                                 {
1785 #ifdef JP
1786                                         msg_format("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name, t_name);
1787 #else
1788                                         msg_format("%^s casts a lightning ball at %s.", m_name, t_name);
1789 #endif
1790
1791                                 }
1792                         }
1793                         else
1794                         {
1795                                 mon_fight = TRUE;
1796                         }
1797                 }
1798
1799                 dam = (randint1(rlev * 3 / 2) + 8) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
1800                 monst_breath_monst(m_idx, y, x, GF_ELEC, dam, 2, FALSE, MS_BALL_ELEC, learnable);
1801
1802                 break;
1803
1804         /* RF5_BA_FIRE */
1805         case 128+2:
1806                 if (known)
1807                 {
1808                         if (see_either)
1809                         {
1810                                 disturb(1, 0);
1811
1812                                 if (m_ptr->r_idx == MON_ROLENTO)
1813                                 {
1814 #ifdef JP
1815                                         if (blind)
1816                                                 msg_format("%^s¤¬²¿¤«¤òÅꤲ¤¿¡£", m_name);
1817                                         else
1818                                                 msg_format("%^s¤¬%^s¤Ë¸þ¤«¤Ã¤Æ¼êÜØÃƤòÅꤲ¤¿¡£", m_name, t_name);
1819 #else
1820                                         if (blind)
1821                                                 msg_format("%^s throws something.", m_name);
1822                                         else
1823                                                 msg_format("%^s throws a hand grenade.", m_name);
1824 #endif
1825                                 }
1826                                 else
1827                                 {
1828                                         if (blind)
1829                                         {
1830 #ifdef JP
1831                                                 msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
1832 #else
1833                                                 msg_format("%^s mumbles.", m_name);
1834 #endif
1835
1836                                         }
1837                                         else
1838                                         {
1839 #ifdef JP
1840                                                 msg_format("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name, t_name);
1841 #else
1842                                                 msg_format("%^s casts a fire ball at %s.", m_name, t_name);
1843 #endif
1844
1845                                         }
1846                                 }
1847                         }
1848                         else
1849                         {
1850                                 mon_fight = TRUE;
1851                         }
1852                 }
1853
1854                 dam = (randint1(rlev * 7 / 2) + 10) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
1855                 monst_breath_monst(m_idx, y, x, GF_FIRE, dam, 2, FALSE, MS_BALL_FIRE, learnable);
1856
1857                 break;
1858
1859         /* RF5_BA_COLD */
1860         case 128+3:
1861                 if (known)
1862                 {
1863                         if (see_either)
1864                         {
1865                                 disturb(1, 0);
1866
1867                                 if (blind)
1868                                 {
1869 #ifdef JP
1870                                         msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
1871 #else
1872                                         msg_format("%^s mumbles.", m_name);
1873 #endif
1874
1875                                 }
1876                                 else
1877                                 {
1878 #ifdef JP
1879                                         msg_format("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥¤¥¹¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name, t_name);
1880 #else
1881                                         msg_format("%^s casts a frost ball at %s.", m_name, t_name);
1882 #endif
1883
1884                                 }
1885                         }
1886                         else
1887                         {
1888                                 mon_fight = TRUE;
1889                         }
1890                 }
1891
1892                 dam = (randint1(rlev * 3 / 2) + 10) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
1893                 monst_breath_monst(m_idx, y, x, GF_COLD, dam, 2, FALSE, MS_BALL_COLD, learnable);
1894
1895                 break;
1896
1897         /* RF5_BA_POIS */
1898         case 128+4:
1899                 if (known)
1900                 {
1901                         if (see_either)
1902                         {
1903                                 disturb(1, 0);
1904
1905                                 if (blind)
1906                                 {
1907 #ifdef JP
1908                                         msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
1909 #else
1910                                         msg_format("%^s mumbles.", m_name);
1911 #endif
1912
1913                                 }
1914                                 else
1915                                 {
1916 #ifdef JP
1917                                         msg_format("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ°­½­±À¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name, t_name);
1918 #else
1919                                         msg_format("%^s casts a stinking cloud at %s.", m_name, t_name);
1920 #endif
1921
1922                                 }
1923                         }
1924                         else
1925                         {
1926                                 mon_fight = TRUE;
1927                         }
1928                 }
1929
1930                 dam = damroll(12, 2) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
1931                 monst_breath_monst(m_idx, y, x, GF_POIS, dam, 2, FALSE, MS_BALL_POIS, learnable);
1932
1933                 break;
1934
1935         /* RF5_BA_NETH */
1936         case 128+5:
1937                 if (known)
1938                 {
1939                         if (see_either)
1940                         {
1941                                 disturb(1, 0);
1942
1943                                 if (blind)
1944                                 {
1945 #ifdef JP
1946                                         msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
1947 #else
1948                                         msg_format("%^s mumbles.", m_name);
1949 #endif
1950
1951                                 }
1952                                 else
1953                                 {
1954 #ifdef JP
1955                                         msg_format("%^s¤¬%s¤Ë¸þ¤«¤Ã¤ÆÃϹöµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name, t_name);
1956 #else
1957                                         msg_format("%^s casts a nether ball at %s.", m_name, t_name);
1958 #endif
1959
1960                                 }
1961                         }
1962                         else
1963                         {
1964                                 mon_fight = TRUE;
1965                         }
1966                 }
1967
1968                 dam = 50 + damroll(10, 10) + (rlev * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1));
1969                 monst_breath_monst(m_idx, y, x, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, learnable);
1970
1971                 break;
1972
1973         /* RF5_BA_WATE */
1974         case 128+6:
1975                 if (known)
1976                 {
1977                         if (see_either)
1978                         {
1979                                 disturb(1, 0);
1980
1981                                 if (blind)
1982                                 {
1983 #ifdef JP
1984                                         msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
1985 #else
1986                                         msg_format("%^s mumbles.", m_name);
1987 #endif
1988
1989                                 }
1990                                 else
1991                                 {
1992 #ifdef JP
1993                                         msg_format("%^s¤¬%s¤ËÂФ·¤Æή¤ì¤ë¤è¤¦¤Ê¿È¿¶¤ê¤ò¤·¤¿¡£", m_name, t_name);
1994 #else
1995                                         msg_format("%^s gestures fluidly at %s.", m_name, t_name);
1996 #endif
1997
1998 #ifdef JP
1999                                         msg_format("%^s¤Ï±²´¬¤Ë°û¤ß¹þ¤Þ¤ì¤¿¡£", t_name);
2000 #else
2001                                         msg_format("%^s is engulfed in a whirlpool.", t_name);
2002 #endif
2003
2004                                 }
2005                         }
2006                         else
2007                         {
2008                                 mon_fight = TRUE;
2009                         }
2010                 }
2011
2012                 dam = ((r_ptr->flags2 & RF2_POWERFUL) ? randint1(rlev * 3) : randint1(rlev * 2)) + 50;
2013                 monst_breath_monst(m_idx, y, x, GF_WATER, dam, 4, FALSE, MS_BALL_WATER, learnable);
2014
2015                 break;
2016
2017         /* RF5_BA_MANA */
2018         case 128+7:
2019                 if (known)
2020                 {
2021                         if (see_either)
2022                         {
2023                                 disturb(1, 0);
2024
2025                                 if (blind)
2026                                 {
2027 #ifdef JP
2028                                         msg_format("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
2029 #else
2030                                         msg_format("%^s mumbles powerfully.", m_name);
2031 #endif
2032
2033                                 }
2034                                 else
2035                                 {
2036 #ifdef JP
2037                                         msg_format("%^s¤¬%s¤ËÂФ·¤ÆËâÎϤÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", m_name, t_name);
2038 #else
2039                                         msg_format("%^s invokes a mana storm upon %s.", m_name, t_name);
2040 #endif
2041
2042                                 }
2043                         }
2044                         else
2045                         {
2046                                 mon_fight = TRUE;
2047                         }
2048                 }
2049
2050                 dam = (rlev * 4) + 50 + damroll(10, 10);
2051                 monst_breath_monst(m_idx, y, x, GF_MANA, dam, 4, FALSE, MS_BALL_MANA, learnable);
2052
2053                 break;
2054
2055         /* RF5_BA_DARK */
2056         case 128+8:
2057                 if (known)
2058                 {
2059                         if (see_either)
2060                         {
2061                                 disturb(1, 0);
2062
2063                                 if (blind)
2064                                 {
2065 #ifdef JP
2066                                         msg_format("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
2067 #else
2068                                         msg_format("%^s mumbles powerfully.", m_name);
2069 #endif
2070
2071                                 }
2072                                 else
2073                                 {
2074 #ifdef JP
2075                                         msg_format("%^s¤¬%s¤ËÂФ·¤Æ°Å¹õ¤ÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", m_name, t_name);
2076 #else
2077                                         msg_format("%^s invokes a darkness storm upon %s.", m_name, t_name);
2078 #endif
2079
2080                                 }
2081                         }
2082                         else
2083                         {
2084                                 mon_fight = TRUE;
2085                         }
2086                 }
2087
2088                 dam = (rlev * 4) + 50 + damroll(10, 10);
2089                 monst_breath_monst(m_idx, y, x, GF_DARK, dam, 4, FALSE, MS_BALL_DARK, learnable);
2090
2091                 break;
2092
2093         /* RF5_DRAIN_MANA */
2094         case 128+9:
2095                 if (see_m)
2096                 {
2097                         /* Basic message */
2098 #ifdef JP
2099                         msg_format("%^s¤ÏÀº¿À¥¨¥Í¥ë¥®¡¼¤ò%s¤«¤éµÛ¤¤¤È¤Ã¤¿¡£", m_name, t_name);
2100 #else
2101                         msg_format("%^s draws psychic energy from %s.", m_name, t_name);
2102 #endif
2103
2104                 }
2105
2106                 dam = ((randint1(rlev) / 2) + 1);
2107                 monst_breath_monst(m_idx, y, x, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, learnable);
2108
2109                 break;
2110
2111         /* RF5_MIND_BLAST */
2112         case 128+10:
2113                 if (see_m)
2114                 {
2115 #ifdef JP
2116                         msg_format("%^s¤Ï%s¤ò¤¸¤Ã¤Èâˤó¤À¡£", m_name, t_name);
2117 #else
2118                         msg_format("%^s gazes intently at %s.", m_name, t_name);
2119 #endif
2120
2121                 }
2122
2123                 dam = damroll(7, 7);
2124                 monst_breath_monst(m_idx, y, x, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, learnable);
2125
2126                 break;
2127
2128         /* RF5_BRAIN_SMASH */
2129         case 128+11:
2130                 if (see_m)
2131                 {
2132 #ifdef JP
2133                         msg_format("%^s¤Ï%s¤ò¤¸¤Ã¤Èâˤó¤À¡£", m_name, t_name);
2134 #else
2135                         msg_format("%^s gazes intently at %s.", m_name, t_name);
2136 #endif
2137
2138                 }
2139
2140                 dam = damroll(12, 12);
2141                 monst_breath_monst(m_idx, y, x, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, learnable);
2142
2143                 break;
2144
2145         /* RF5_CAUSE_1 */
2146         case 128+12:
2147                 if (known)
2148                 {
2149                         if (see_m)
2150                         {
2151 #ifdef JP
2152                                 msg_format("%^s¤Ï%s¤ò»Ø¤µ¤·¤Æ¼ö¤¤¤ò¤«¤±¤¿¡£", m_name, t_name);
2153 #else
2154                                 msg_format("%^s points at %s and curses.", m_name, t_name);
2155 #endif
2156
2157                         }
2158                         else
2159                         {
2160                                 mon_fight = TRUE;
2161                         }
2162                 }
2163
2164                 dam = damroll(3, 8);
2165                 monst_breath_monst(m_idx, y, x, GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1, learnable);
2166
2167                 break;
2168
2169         /* RF5_CAUSE_2 */
2170         case 128+13:
2171                 if (known)
2172                 {
2173                         if (see_m)
2174                         {
2175 #ifdef JP
2176                                 msg_format("%^s¤Ï%s¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼ö¤¤¤ò¤«¤±¤¿¡£", m_name, t_name);
2177 #else
2178                                 msg_format("%^s points at %s and curses horribly.", m_name, t_name);
2179 #endif
2180
2181                         }
2182                         else
2183                         {
2184                                 mon_fight = TRUE;
2185                         }
2186                 }
2187
2188                 dam = damroll(8, 8);
2189                 monst_breath_monst(m_idx, y, x, GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, learnable);
2190
2191                 break;
2192
2193         /* RF5_CAUSE_3 */
2194         case 128+14:
2195                 if (known)
2196                 {
2197                         if (see_m)
2198                         {
2199 #ifdef JP
2200                                 msg_format("%^s¤Ï%s¤ò»Ø¤µ¤·¡¢¶²¤í¤·¤²¤Ë¼öʸ¤ò¾§¤¨¤¿¡ª", m_name, t_name);
2201 #else
2202                                 msg_format("%^s points at %s, incanting terribly!", m_name, t_name);
2203 #endif
2204
2205                         }
2206                         else
2207                         {
2208                                 mon_fight = TRUE;
2209                         }
2210                 }
2211
2212                 dam = damroll(10, 15);
2213                 monst_breath_monst(m_idx, y, x, GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, learnable);
2214
2215                 break;
2216
2217         /* RF5_CAUSE_4 */
2218         case 128+15:
2219                 if (known)
2220                 {
2221                         if (see_m)
2222                         {
2223 #ifdef JP
2224                                 msg_format("%^s¤¬%s¤ÎÈ빦¤òÆͤ¤¤Æ¡¢¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£", m_name, t_name);
2225 #else
2226                                 msg_format("%^s points at %s, screaming the word, 'DIE!'", m_name, t_name);
2227 #endif
2228
2229                         }
2230                         else
2231                         {
2232                                 mon_fight = TRUE;
2233                         }
2234                 }
2235
2236                 dam = damroll(15, 15);
2237                 monst_breath_monst(m_idx, y, x, GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, learnable);
2238
2239                 break;
2240
2241         /* RF5_BO_ACID */
2242         case 128+16:
2243                 if (known)
2244                 {
2245                         if (see_either)
2246                         {
2247 #ifdef JP
2248                                 msg_format("%s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name, t_name);
2249 #else
2250                                 msg_format("%^s casts an acid bolt at %s.", m_name, t_name);
2251 #endif
2252
2253                         }
2254                         else
2255                         {
2256                                 mon_fight = TRUE;
2257                         }
2258                 }
2259
2260                 dam = (damroll(7, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
2261                 monst_bolt_monst(m_idx, y, x, GF_ACID,
2262                                  dam, MS_BOLT_ACID, learnable);
2263
2264                 break;
2265
2266         /* RF5_BO_ELEC */
2267         case 128+17:
2268                 if (known)
2269                 {
2270                         if (see_either)
2271                         {
2272 #ifdef JP
2273                                 msg_format("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name, t_name);
2274 #else
2275                                 msg_format("%^s casts a lightning bolt at %s.", m_name, t_name);
2276 #endif
2277
2278                         }
2279                         else
2280                         {
2281                                 mon_fight = TRUE;
2282                         }
2283                 }
2284
2285                 dam = (damroll(4, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
2286                 monst_bolt_monst(m_idx, y, x, GF_ELEC,
2287                                  dam, MS_BOLT_ELEC, learnable);
2288
2289                 break;
2290
2291         /* RF5_BO_FIRE */
2292         case 128+18:
2293                 if (known)
2294                 {
2295                         if (see_either)
2296                         {
2297 #ifdef JP
2298                                 msg_format("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name, t_name);
2299 #else
2300                                 msg_format("%^s casts a fire bolt at %s.", m_name, t_name);
2301 #endif
2302
2303                         }
2304                         else
2305                         {
2306                                 mon_fight = TRUE;
2307                         }
2308                 }
2309
2310                 dam = (damroll(9, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
2311                 monst_bolt_monst(m_idx, y, x, GF_FIRE,
2312                                  dam, MS_BOLT_FIRE, learnable);
2313
2314                 break;
2315
2316         /* RF5_BO_COLD */
2317         case 128+19:
2318                 if (known)
2319                 {
2320                         if (see_either)
2321                         {
2322 #ifdef JP
2323                                 msg_format("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥¤¥¹¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name, t_name);
2324 #else
2325                                 msg_format("%^s casts a frost bolt at %s.", m_name, t_name);
2326 #endif
2327
2328                         }
2329                         else
2330                         {
2331                                 mon_fight = TRUE;
2332                         }
2333                 }
2334
2335                 dam = (damroll(6, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
2336                 monst_bolt_monst(m_idx, y, x, GF_COLD,
2337                                  dam, MS_BOLT_COLD, learnable);
2338
2339                 break;
2340
2341         /* RF5_BA_LITE */
2342         case 128+20:
2343                 if (known)
2344                 {
2345                         if (see_either)
2346                         {
2347                                 disturb(1, 0);
2348
2349                                 if (blind)
2350                                 {
2351 #ifdef JP
2352                                         msg_format("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
2353 #else
2354                                         msg_format("%^s mumbles powerfully.", m_name);
2355 #endif
2356
2357                                 }
2358                                 else
2359                                 {
2360 #ifdef JP
2361                                         msg_format("%^s¤¬%s¤ËÂФ·¤Æ¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î¼öʸ¤òÇ°¤¸¤¿¡£", m_name, t_name);
2362 #else
2363                                         msg_format("%^s invokes a starburst upon %s.", m_name, t_name);
2364 #endif
2365
2366                                 }
2367                         }
2368                         else
2369                         {
2370                                 mon_fight = TRUE;
2371                         }
2372                 }
2373
2374                 dam = (rlev * 4) + 50 + damroll(10, 10);
2375                 monst_breath_monst(m_idx, y, x, GF_LITE, dam, 4, FALSE, MS_STARBURST, learnable);
2376
2377                 break;
2378
2379         /* RF5_BO_NETH */
2380         case 128+21:
2381                 if (known)
2382                 {
2383                         if (see_either)
2384                         {
2385 #ifdef JP
2386                                 msg_format("%^s¤¬%s¤Ë¸þ¤«¤Ã¤ÆÃϹö¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name, t_name);
2387 #else
2388                                 msg_format("%^s casts a nether bolt at %s.", m_name, t_name);
2389 #endif
2390
2391                         }
2392                         else
2393                         {
2394                                 mon_fight = TRUE;
2395                         }
2396                 }
2397
2398                 dam = 30 + damroll(5, 5) + (rlev * 4) / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3);
2399                 monst_bolt_monst(m_idx, y, x, GF_NETHER,
2400                                  dam, MS_BOLT_NETHER, learnable);
2401
2402                 break;
2403
2404         /* RF5_BO_WATE */
2405         case 128+22:
2406                 if (known)
2407                 {
2408                         if (see_either)
2409                         {
2410 #ifdef JP
2411                                 msg_format("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name, t_name);
2412 #else
2413                                 msg_format("%^s casts a water bolt at %s.", m_name, t_name);
2414 #endif
2415
2416                         }
2417                         else
2418                         {
2419                                 mon_fight = TRUE;
2420                         }
2421                 }
2422
2423                 dam = damroll(10, 10) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
2424                 monst_bolt_monst(m_idx, y, x, GF_WATER,
2425                                  dam, MS_BOLT_WATER, learnable);
2426
2427                 break;
2428
2429         /* RF5_BO_MANA */
2430         case 128+23:
2431                 if (known)
2432                 {
2433                         if (see_either)
2434                         {
2435 #ifdef JP
2436                                 msg_format("%^s¤¬%s¤Ë¸þ¤«¤Ã¤ÆËâÎϤÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name, t_name);
2437 #else
2438                                 msg_format("%^s casts a mana bolt at %s.", m_name, t_name);
2439 #endif
2440
2441                         }
2442                         else
2443                         {
2444                                 mon_fight = TRUE;
2445                         }
2446                 }
2447
2448                 dam = randint1(rlev * 7 / 2) + 50;
2449                 monst_bolt_monst(m_idx, y, x, GF_MANA,
2450                                  dam, MS_BOLT_MANA, learnable);
2451
2452                 break;
2453
2454         /* RF5_BO_PLAS */
2455         case 128+24:
2456                 if (known)
2457                 {
2458                         if (see_either)
2459                         {
2460 #ifdef JP
2461                                 msg_format("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name, t_name);
2462 #else
2463                                 msg_format("%^s casts a plasma bolt at %s.", m_name, t_name);
2464 #endif
2465
2466                         }
2467                         else
2468                         {
2469                                 mon_fight = TRUE;
2470                         }
2471                 }
2472
2473                 dam = 10 + damroll(8, 7) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
2474                 monst_bolt_monst(m_idx, y, x, GF_PLASMA,
2475                                  dam, MS_BOLT_PLASMA, learnable);
2476
2477                 break;
2478
2479         /* RF5_BO_ICEE */
2480         case 128+25:
2481                 if (known)
2482                 {
2483                         if (see_either)
2484                         {
2485 #ifdef JP
2486                                 msg_format("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¶Ë´¨¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name, t_name);
2487 #else
2488                                 msg_format("%^s casts an ice bolt at %s.", m_name, t_name);
2489 #endif
2490
2491                         }
2492                         else
2493                         {
2494                                 mon_fight = TRUE;
2495                         }
2496                 }
2497
2498                 dam = damroll(6, 6) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
2499                 monst_bolt_monst(m_idx, y, x, GF_ICE,
2500                                  dam, MS_BOLT_ICE, learnable);
2501
2502                 break;
2503
2504         /* RF5_MISSILE */
2505         case 128+26:
2506                 if (known)
2507                 {
2508                         if (see_either)
2509                         {
2510 #ifdef JP
2511                                 msg_format("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name, t_name);
2512 #else
2513                                 msg_format("%^s casts a magic missile at %s.", m_name, t_name);
2514 #endif
2515
2516                         }
2517                         else
2518                         {
2519                                 mon_fight = TRUE;
2520                         }
2521                 }
2522
2523                 dam = damroll(2, 6) + (rlev / 3);
2524                 monst_bolt_monst(m_idx, y, x, GF_MISSILE,
2525                                  dam, MS_MAGIC_MISSILE, learnable);
2526
2527                 break;
2528
2529         /* RF5_SCARE */
2530         case 128+27:
2531                 if (known)
2532                 {
2533                         if (see_either)
2534                         {
2535 #ifdef JP
2536                                 msg_format("%^s¤¬¶²¤í¤·¤²¤Ê¸¸³Ð¤òºî¤ê½Ð¤·¤¿¡£", m_name, t_name);
2537 #else
2538                                 msg_format("%^s casts a fearful illusion in front of %s.", m_name, t_name);
2539 #endif
2540
2541                         }
2542                         else
2543                         {
2544                                 mon_fight = TRUE;
2545                         }
2546                 }
2547
2548                 if (tr_ptr->flags3 & RF3_NO_FEAR)
2549                 {
2550 #ifdef JP
2551                         if (see_t) msg_format("%^s¤Ï¶²Éݤò´¶¤¸¤Ê¤¤¡£", t_name);
2552 #else
2553                         if (see_t) msg_format("%^s refuses to be frightened.", t_name);
2554 #endif
2555
2556                 }
2557                 else if (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
2558                 {
2559 #ifdef JP
2560                         if (see_t) msg_format("%^s¤Ï¶²Éݤò´¶¤¸¤Ê¤¤¡£", t_name);
2561 #else
2562                         if (see_t) msg_format("%^s refuses to be frightened.", t_name);
2563 #endif
2564
2565                 }
2566                 else
2567                 {
2568                         if (!t_ptr->monfear) fear = TRUE;
2569
2570                         t_ptr->monfear += randint0(4) + 4;
2571                 }
2572
2573                 wake_up = TRUE;
2574
2575                 break;
2576
2577         /* RF5_BLIND */
2578         case 128+28:
2579                 if (known)
2580                 {
2581                         if (see_either)
2582                         {
2583 #ifdef JP
2584                                 msg_format("%s¤Ï¼öʸ¤ò¾§¤¨¤Æ%s¤ÎÌܤò¾Æ¤­ÉÕ¤«¤»¤¿¡£", m_name, t_name);
2585 #else
2586                                 msg_format("%^s casts a spell, burning %s%s eyes.", m_name, t_name,
2587                                            (streq(t_name, "it") ? "s" : "'s"));
2588 #endif
2589
2590                         }
2591                         else
2592                         {
2593                                 mon_fight = TRUE;
2594                         }
2595                 }
2596
2597                 /* Simulate blindness with confusion */
2598                 if (tr_ptr->flags3 & RF3_NO_CONF)
2599                 {
2600 #ifdef JP
2601                         if (see_t) msg_format("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", t_name);
2602 #else
2603                         if (see_t) msg_format("%^s is unaffected.", t_name);
2604 #endif
2605
2606                 }
2607                 else if (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
2608                 {
2609 #ifdef JP
2610                         if (see_t) msg_format("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", t_name);
2611 #else
2612                         if (see_t) msg_format("%^s is unaffected.", t_name);
2613 #endif
2614
2615                 }
2616                 else
2617                 {
2618 #ifdef JP
2619                         if (see_t)   msg_format("%^s¤ÏÌܤ¬¸«¤¨¤Ê¤¯¤Ê¤Ã¤¿¡ª ", t_name);
2620 #else
2621                         if (see_t) msg_format("%^s is blinded!", t_name);
2622 #endif
2623
2624
2625                         t_ptr->confused += 12 + (byte)randint0(4);
2626                 }
2627
2628                 wake_up = TRUE;
2629
2630                 break;
2631
2632         /* RF5_CONF */
2633         case 128+29:
2634                 if (known)
2635                 {
2636                         if (see_either)
2637                         {
2638 #ifdef JP
2639                                 msg_format("%^s¤¬%s¤ÎÁ°¤Ë¸¸ÏÇŪ¤Ê¸¸¤ò¤Ä¤¯¤ê½Ð¤·¤¿¡£", m_name, t_name);
2640 #else
2641                                 msg_format("%^s casts a mesmerizing illusion in front of %s.", m_name, t_name);
2642 #endif
2643
2644                         }
2645                         else
2646                         {
2647                                 mon_fight = TRUE;
2648                         }
2649                 }
2650
2651                 if (tr_ptr->flags3 & RF3_NO_CONF)
2652                 {
2653 #ifdef JP
2654                         if (see_t) msg_format("%^s¤ÏÏǤ蘆¤ì¤Ê¤«¤Ã¤¿¡£", t_name);
2655 #else
2656                         if (see_t) msg_format("%^s disbelieves the feeble spell.", t_name);
2657 #endif
2658
2659                 }
2660                 else if (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
2661                 {
2662 #ifdef JP
2663                         if (see_t) msg_format("%^s¤ÏÏǤ蘆¤ì¤Ê¤«¤Ã¤¿¡£", t_name);
2664 #else
2665                         if (see_t) msg_format("%^s disbelieves the feeble spell.", t_name);
2666 #endif
2667
2668                 }
2669                 else
2670                 {
2671 #ifdef JP
2672                         if (see_t) msg_format("%^s¤Ïº®Í𤷤¿¤è¤¦¤À¡£", t_name);
2673 #else
2674                         if (see_t) msg_format("%^s seems confused.", t_name);
2675 #endif
2676
2677
2678                         t_ptr->confused += 12 + (byte)randint0(4);
2679                 }
2680
2681                 wake_up = TRUE;
2682
2683                 break;
2684
2685         /* RF5_SLOW */
2686         case 128+30:
2687                 if (known)
2688                 {
2689                         if (see_either)
2690                         {
2691 #ifdef JP
2692                                 msg_format("%s¤¬%s¤Î¶ÚÆù¤«¤éÎϤòµÛ¤¤¤È¤Ã¤¿¡£", m_name, t_name);
2693 #else
2694                                 msg_format("%^s drains power from %s%s muscles.", m_name, t_name,
2695                                            (streq(t_name, "it") ? "s" : "'s"));
2696 #endif
2697
2698                         }
2699                         else
2700                         {
2701                                 mon_fight = TRUE;
2702                         }
2703                 }
2704
2705                 if (tr_ptr->flags1 & RF1_UNIQUE)
2706                 {
2707 #ifdef JP
2708                         if (see_t) msg_format("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", t_name);
2709 #else
2710                         if (see_t) msg_format("%^s is unaffected.", t_name);
2711 #endif
2712
2713                 }
2714                 else if (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
2715                 {
2716 #ifdef JP
2717                         if (see_t) msg_format("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", t_name);
2718 #else
2719                         if (see_t) msg_format("%^s is unaffected.", t_name);
2720 #endif
2721
2722                 }
2723                 else
2724                 {
2725                         if (!t_ptr->slow)
2726                         {
2727 #ifdef JP
2728                                 if (see_t) msg_format("%s¤ÎÆ°¤­¤¬ÃÙ¤¯¤Ê¤Ã¤¿¡£", t_name);
2729 #else
2730                                 if (see_t) msg_format("%^s starts moving slower.", t_name);
2731 #endif
2732                         }
2733
2734                         t_ptr->slow = MIN(200, t_ptr->slow + 50);
2735                 }
2736
2737                 wake_up = TRUE;
2738
2739                 break;
2740
2741         /* RF5_HOLD */
2742         case 128+31:
2743                 if (known)
2744                 {
2745                         if (see_either)
2746                         {
2747 #ifdef JP
2748                                 msg_format("%^s¤Ï%s¤ò¤¸¤Ã¤È¸«¤Ä¤á¤¿¡£", m_name, t_name);
2749 #else
2750                                 msg_format("%^s stares intently at %s.", m_name, t_name);
2751 #endif
2752
2753                         }
2754                         else
2755                         {
2756                                 mon_fight = TRUE;
2757                         }
2758                 }
2759
2760                 if ((tr_ptr->flags1 & RF1_UNIQUE) ||
2761                     (tr_ptr->flags3 & RF3_NO_STUN))
2762                 {
2763 #ifdef JP
2764                         if (see_t) msg_format("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", t_name);
2765 #else
2766                         if (see_t) msg_format("%^s is unaffected.", t_name);
2767 #endif
2768
2769                 }
2770                 else if (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
2771                 {
2772 #ifdef JP
2773                         if (see_t) msg_format("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", t_name);
2774 #else
2775                         if (see_t) msg_format("%^s is unaffected.", t_name);
2776 #endif
2777
2778                 }
2779                 else
2780                 {
2781 #ifdef JP
2782                         if (see_t) msg_format("%^s¤ÏËãá㤷¤¿¡ª", t_name);
2783 #else
2784                         if (see_t) msg_format("%^s is paralyzed!", t_name);
2785 #endif
2786
2787
2788                         t_ptr->stunned += randint1(4) + 4;
2789                 }
2790
2791                 wake_up = TRUE;
2792
2793                 break;
2794
2795
2796         /* RF6_HASTE */
2797         case 160+0:
2798                 if (known)
2799                 {
2800                         if (see_m)
2801                         {
2802 #ifdef JP
2803                                 msg_format("%^s¤¬¼«Ê¬¤ÎÂΤËÇ°¤òÁ÷¤Ã¤¿¡£", m_name);
2804 #else
2805                                 msg_format("%^s concentrates on %s body.", m_name, m_poss);
2806 #endif
2807
2808                         }
2809                         else
2810                         {
2811                                 mon_fight = TRUE;
2812                         }
2813                 }
2814
2815                 /* Allow quick speed increases to base+10 */
2816                 if (!m_ptr->fast)
2817                 {
2818 #ifdef JP
2819                         if (see_m) msg_format("%^s¤ÎÆ°¤­¤¬Â®¤¯¤Ê¤Ã¤¿¡£", m_name);
2820 #else
2821                         if (see_m) msg_format("%^s starts moving faster.", m_name);
2822 #endif
2823
2824                 }
2825                 m_ptr->fast = MIN(200, m_ptr->fast + 100);
2826                 if (p_ptr->riding == m_idx) p_ptr->update |= PU_BONUS;
2827                 break;
2828
2829         /* RF6_HAND_DOOM */
2830         case 160+1:
2831                 if (known)
2832                 {
2833                         if (see_m)
2834                         {
2835 #ifdef JP
2836                                 msg_format("%^s¤¬%s¤Ë<ÇËÌǤμê>¤òÊü¤Ã¤¿¡ª", m_name, t_name);
2837 #else
2838                                 msg_format("%^s invokes the Hand of Doom upon %s!", m_name, t_name);
2839 #endif
2840
2841                         }
2842                         else
2843                         {
2844                                 mon_fight = TRUE;
2845                         }
2846                 }
2847
2848                 dam = 20; /* Dummy power */
2849                 monst_breath_monst(m_idx, y, x, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, learnable);
2850
2851                 break;
2852
2853         /* RF6_HEAL */
2854         case 160+2:
2855                 if (known)
2856                 {
2857                         if (see_m)
2858                         {
2859 #ifdef JP
2860                                 msg_format("%^s¤Ï¼«Ê¬¤Î½ý¤ËÇ°¤ò½¸Ã椷¤¿¡£", m_name);
2861 #else
2862                                 msg_format("%^s concentrates on %s wounds.", m_name, m_poss);
2863 #endif
2864
2865                         }
2866                         else
2867                         {
2868                                 mon_fight = TRUE;
2869                         }
2870                 }
2871
2872                 /* Heal some */
2873                 m_ptr->hp += (rlev * 6);
2874
2875                 /* Fully healed */
2876                 if (m_ptr->hp >= m_ptr->maxhp)
2877                 {
2878                         /* Fully healed */
2879                         m_ptr->hp = m_ptr->maxhp;
2880
2881                         if (known)
2882                         {
2883                                 if (see_m)
2884                                 {
2885 #ifdef JP
2886                                         msg_format("%^s¤Ï´°Á´¤Ë¼£¤Ã¤¿¡ª", m_name);
2887 #else
2888                                         msg_format("%^s looks completely healed!", m_name);
2889 #endif
2890
2891                                 }
2892                                 else
2893                                 {
2894                                         mon_fight = TRUE;
2895                                 }
2896                         }
2897                 }
2898
2899                 /* Partially healed */
2900                 else if (known)
2901                 {
2902                         if (see_m)
2903                         {
2904 #ifdef JP
2905                                 msg_format("%^s¤ÏÂÎÎϤò²óÉü¤·¤¿¤è¤¦¤À¡£", m_name);
2906 #else
2907                                 msg_format("%^s looks healthier.", m_name);
2908 #endif
2909
2910                         }
2911                         else
2912                         {
2913                                 mon_fight = TRUE;
2914                         }
2915                 }
2916
2917                 /* Redraw (later) if needed */
2918                 if (p_ptr->health_who == m_idx) p_ptr->redraw |= (PR_HEALTH);
2919                 if (p_ptr->riding == m_idx) p_ptr->redraw |= (PR_UHEALTH);
2920
2921                 /* Cancel fear */
2922                 if (m_ptr->monfear)
2923                 {
2924                         /* Cancel fear */
2925                         m_ptr->monfear = 0;
2926
2927                         /* Message */
2928 #ifdef JP
2929                         if (see_m) msg_format("%^s¤Ïͦµ¤¤ò¼è¤êÌᤷ¤¿¡£", m_name);
2930 #else
2931                         if (see_m) msg_format("%^s recovers %s courage.", m_name, m_poss);
2932 #endif
2933
2934                 }
2935
2936                 break;
2937
2938         /* RF6_INVULNER */
2939         case 160+3:
2940                 if (known)
2941                 {
2942                         if (see_m)
2943                         {
2944                                 disturb(1, 0);
2945 #ifdef JP
2946                                 msg_format("%s¤Ï̵½ý¤Îµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name);
2947 #else
2948                                 msg_format("%^s casts a Globe of Invulnerability.", m_name);
2949 #endif
2950
2951                         }
2952                         else
2953                         {
2954                                 mon_fight = TRUE;
2955                         }
2956                 }
2957
2958                 if (!m_ptr->invulner) m_ptr->invulner = randint1(4) + 4;
2959
2960                 if (p_ptr->health_who == m_idx) p_ptr->redraw |= (PR_HEALTH);
2961                 if (p_ptr->riding == m_idx) p_ptr->redraw |= (PR_UHEALTH);
2962                 break;
2963
2964         /* RF6_BLINK */
2965         case 160+4:
2966                 if (see_m)
2967                 {
2968 #ifdef JP
2969                         msg_format("%^s¤¬½Ö»þ¤Ë¾Ã¤¨¤¿¡£", m_name);
2970 #else
2971                         msg_format("%^s blinks away.", m_name);
2972 #endif
2973
2974                 }
2975
2976                 teleport_away(m_idx, 10, FALSE);
2977
2978                 break;
2979
2980         /* RF6_TPORT */
2981         case 160+5:
2982                 if (see_m)
2983                 {
2984 #ifdef JP
2985                         msg_format("%^s¤¬¥Æ¥ì¥Ý¡¼¥È¤·¤¿¡£", m_name);
2986 #else
2987                         msg_format("%^s teleports away.", m_name);
2988 #endif
2989                 }
2990
2991                 teleport_away(m_idx, MAX_SIGHT * 2 + 5, FALSE);
2992
2993                 if (los(py, px, m_ptr->fy, m_ptr->fx) && !world_monster && see_m)
2994                 {
2995                         for (i = INVEN_RARM; i < INVEN_TOTAL; i++)
2996                         {
2997                                 u32b flgs[TR_FLAG_SIZE];
2998                                 object_type *o_ptr = &inventory[i];
2999
3000                                 if (cursed_p(o_ptr)) continue;
3001
3002                                 object_flags(o_ptr, flgs);
3003
3004                                 if((have_flag(flgs, TR_TELEPORT)) || (p_ptr->muta1 & MUT1_VTELEPORT) || (p_ptr->pclass == CLASS_IMITATOR))
3005                                 {
3006 #ifdef JP
3007                                         cptr msg = "¤Ä¤¤¤Æ¤¤¤­¤Þ¤¹¤«¡©";
3008 #else
3009                                         cptr msg = "Do you follow it? ";
3010 #endif
3011
3012                                         if(get_check_strict(msg, CHECK_OKAY_CANCEL))
3013                                         {
3014                                                 if (one_in_(3))
3015                                                 {
3016                                                         teleport_player(200);
3017 #ifdef JP
3018                                                         msg_print("¼ºÇÔ¡ª");
3019 #else
3020                                                         msg_print("Failed!");
3021 #endif
3022                                                 }
3023                                                 else teleport_player_to(m_ptr->fy, m_ptr->fx, TRUE);
3024                                                 p_ptr->energy_need = ENERGY_NEED();
3025                                         }
3026                                         break;
3027                                 }
3028                         }
3029                 }
3030                 break;
3031
3032         /* RF6_WORLD */
3033         case 160+6:
3034 #if 0
3035                 int who = 0;
3036                 if(m_ptr->r_idx = MON_DIO) who == 1;
3037                 else if(m_ptr->r_idx = MON_WONG) who == 3;
3038                 dam = who;
3039                 if(!process_the_world(randint1(2)+2, who, los(py, px, m_ptr->fy, m_ptr->fx))) return (FALSE);
3040 #endif
3041                 return FALSE;
3042
3043         /* RF6_SPECIAL */
3044         case 160+7:
3045                 switch (m_ptr->r_idx)
3046                 {
3047                 case MON_OHMU:
3048                         /* Moved to process_monster(), like multiplication */
3049                         return FALSE;
3050
3051                 case MON_ROLENTO:
3052                         if (known)
3053                         {
3054                                 if (see_either)
3055                                 {
3056                                         disturb(1, 0);
3057
3058 #ifdef JP
3059                                         msg_format("%^s¤Ï¼êÜØÃƤò¤Ð¤é¤Þ¤¤¤¿¡£", m_name);
3060 #else
3061                                         msg_format("%^s throws some hand grenades.", m_name);
3062 #endif
3063                                 }
3064                                 else
3065                                 {
3066                                         mon_fight = TRUE;
3067                                 }
3068                         }
3069
3070                         {
3071                                 int num = 1 + randint1(3);
3072                                 for (k = 0; k < num; k++)
3073                                 {
3074                                         count += summon_named_creature(m_idx, y, x, MON_SHURYUUDAN, 0);
3075                                 }
3076                         }
3077
3078                         if (known && !see_t && count)
3079                         {
3080                                 mon_fight = TRUE;
3081                         }
3082                         break;
3083
3084                 default:
3085                         if (r_ptr->d_char == 'B')
3086                         {
3087                                 if (one_in_(3))
3088                                 {
3089                                         if (see_m)
3090                                         {
3091 #ifdef JP
3092                                                 msg_format("%^s¤ÏÆÍÁ³µÞ¾å¾º¤·¤Æ»ë³¦¤«¤é¾Ã¤¨¤¿!", m_name);
3093 #else
3094                                                 msg_format("%^s suddenly go out of your sight!", m_name);
3095 #endif
3096                                         }
3097                                         teleport_away(m_idx, 10, FALSE);
3098                                         p_ptr->update |= (PU_MONSTERS | PU_MON_LITE);
3099                                 }
3100                                 else
3101                                 {
3102                                         if (known)
3103                                         {
3104                                                 if (see_either)
3105                                                 {
3106 #ifdef JP
3107                                                         msg_format("%^s¤¬%s¤òÄϤó¤Ç¶õÃ椫¤éÅꤲÍ¤¿¡£", m_name, t_name);
3108 #else
3109                                                         msg_format("%^s holds %s, and drops from the sky.", m_name, t_name);
3110 #endif
3111
3112                                                 }
3113                                                 else
3114                                                 {
3115                                                         mon_fight = TRUE;
3116                                                 }
3117                                         }
3118
3119                                         dam = damroll(4, 8);
3120
3121                                         if (t_idx == p_ptr->riding) teleport_player_to(m_ptr->fy, m_ptr->fx, FALSE);
3122                                         else teleport_monster_to(t_idx, m_ptr->fy, m_ptr->fx, 100);
3123
3124                                         sound(SOUND_FALL);
3125
3126                                         if (tr_ptr->flags7 & RF7_CAN_FLY)
3127                                         {
3128 #ifdef JP
3129                                                 if (see_t) msg_format("%^s¤ÏÀŤ«¤ËÃåÃϤ·¤¿¡£", t_name);
3130 #else
3131                                                 if (see_t) msg_format("%^s floats gently down to the ground.", t_name);
3132 #endif
3133                                         }
3134                                         else
3135                                         {
3136 #ifdef JP
3137                                                 if (see_t) msg_format("%^s¤ÏÃÏÌ̤Ë᤭¤Ä¤±¤é¤ì¤¿¡£", t_name);
3138 #else
3139                                                 if (see_t) msg_format("%^s crashed into the ground.", t_name);
3140 #endif
3141                                                 dam += damroll(6, 8);
3142                                         }
3143
3144                                         if (p_ptr->riding)
3145                                         {
3146                                                 int get_damage = 0;
3147
3148                                                 /* Mega hack -- this special action deals damage to the player. Therefore the code of "eyeeye" is necessary.
3149                                                    -- henkma
3150                                                  */
3151                                                 get_damage = take_hit(DAMAGE_NOESCAPE, dam, m_name, -1);
3152                                                 if (p_ptr->tim_eyeeye && get_damage > 0 && !p_ptr->is_dead)
3153                                                 {
3154 #ifdef JP
3155                                                         msg_format("¹¶·â¤¬%s¼«¿È¤ò½ý¤Ä¤±¤¿¡ª", m_name);
3156 #else
3157                                                         char m_name_self[80];
3158
3159                                                         /* hisself */
3160                                                         monster_desc(m_name_self, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE | MD_OBJECTIVE);
3161
3162                                                         msg_format("The attack of %s has wounded %s!", m_name, m_name_self);
3163 #endif
3164                                                         project(0, 0, m_ptr->fy, m_ptr->fx, get_damage, GF_MISSILE, PROJECT_KILL, -1);
3165                                                         set_tim_eyeeye(p_ptr->tim_eyeeye-5, TRUE);
3166                                                 }
3167                                         }
3168
3169                                         mon_take_hit_mon(t_idx, dam, &fear, extract_note_dies(real_r_ptr(t_ptr)), m_idx);
3170                                 }
3171                                 break;
3172                         }
3173
3174                         /* Something is wrong */
3175                         else return FALSE;
3176                 }
3177
3178                 /* done */
3179                 break;
3180
3181         /* RF6_TELE_TO */
3182         case 160+8:
3183                 if (known)
3184                 {
3185                         if (see_either)
3186                         {
3187 #ifdef JP
3188                                 msg_format("%^s¤¬%s¤ò°ú¤­Ìᤷ¤¿¡£", m_name, t_name);
3189 #else
3190                                 msg_format("%^s commands %s to return.", m_name, t_name);
3191 #endif
3192
3193                         }
3194                         else
3195                         {
3196                                 mon_fight = TRUE;
3197                         }
3198                 }
3199
3200                 if (tr_ptr->flagsr & RFR_RES_TELE)
3201                 {
3202                         if ((tr_ptr->flags1 & RF1_UNIQUE) || (tr_ptr->flagsr & RFR_RES_ALL))
3203                         {
3204                                 if (see_t)
3205                                 {
3206                                         if (is_original_ap(t_ptr)) tr_ptr->r_flagsr |= RFR_RES_TELE;
3207 #ifdef JP
3208                                         msg_format("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", t_name);
3209 #else
3210                                         msg_format("%^s is unaffected!", t_name);
3211 #endif
3212
3213                                 }
3214
3215                                 resists_tele = TRUE;
3216                         }
3217                         else if (tr_ptr->level > randint1(100))
3218                         {
3219                                 if (see_t)
3220                                 {
3221                                         if (is_original_ap(t_ptr)) tr_ptr->r_flagsr |= RFR_RES_TELE;
3222 #ifdef JP
3223                                         msg_format("%^s¤ÏÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡ª", t_name);
3224 #else
3225                                         msg_format("%^s resists!", t_name);
3226 #endif
3227
3228                                 }
3229
3230                                 resists_tele = TRUE;
3231                         }
3232                 }
3233
3234                 if (!resists_tele)
3235                 {
3236                         if (t_idx == p_ptr->riding) teleport_player_to(m_ptr->fy, m_ptr->fx, TRUE);
3237                         else teleport_monster_to(t_idx, m_ptr->fy, m_ptr->fx, 100);
3238                 }
3239
3240                 wake_up = TRUE;
3241                 break;
3242
3243         /* RF6_TELE_AWAY */
3244         case 160+9:
3245                 if (known)
3246                 {
3247                         if (see_either)
3248                         {
3249 #ifdef JP
3250                                 msg_format("%^s¤Ï%s¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤¿¡£", m_name, t_name);
3251 #else
3252                                 msg_format("%^s teleports %s away.", m_name, t_name);
3253 #endif
3254
3255                         }
3256                         else
3257                         {
3258                                 mon_fight = TRUE;
3259                         }
3260                 }
3261
3262                 if (tr_ptr->flagsr & RFR_RES_TELE)
3263                 {
3264                         if ((tr_ptr->flags1 & RF1_UNIQUE) || (tr_ptr->flagsr & RFR_RES_ALL))
3265                         {
3266                                 if (see_t)
3267                                 {
3268                                         if (is_original_ap(t_ptr)) tr_ptr->r_flagsr |= RFR_RES_TELE;
3269 #ifdef JP
3270                                         msg_format("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", t_name);
3271 #else
3272                                         msg_format("%^s is unaffected!", t_name);
3273 #endif
3274
3275                                 }
3276
3277                                 resists_tele = TRUE;
3278                         }
3279                         else if (tr_ptr->level > randint1(100))
3280                         {
3281                                 if (see_t)
3282                                 {
3283                                         if (is_original_ap(t_ptr)) tr_ptr->r_flagsr |= RFR_RES_TELE;
3284 #ifdef JP
3285                                         msg_format("%^s¤ÏÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡ª", t_name);
3286 #else
3287                                         msg_format("%^s resists!", t_name);
3288 #endif
3289
3290                                 }
3291
3292                                 resists_tele = TRUE;
3293                         }
3294                 }
3295
3296                 if (!resists_tele)
3297                 {
3298                         if (t_idx == p_ptr->riding) teleport_player(MAX_SIGHT * 2 + 5);
3299                         else teleport_away(t_idx, MAX_SIGHT * 2 + 5, FALSE);
3300                 }
3301
3302                 wake_up = TRUE;
3303                 break;
3304
3305         /* RF6_TELE_LEVEL */
3306         case 160+10:
3307                 if (known)
3308                 {
3309                         if (see_either)
3310                         {
3311 #ifdef JP
3312                                 msg_format("%^s¤¬%s¤Î­¤ò»Ø¤µ¤·¤¿¡£", m_name, t_name);
3313 #else
3314                                 msg_format("%^s gestures at %s's feet.", m_name, t_name);
3315 #endif
3316                         }
3317                         else
3318                         {
3319                                 mon_fight = TRUE;
3320                         }
3321                 }
3322
3323                 if (tr_ptr->flagsr & (RFR_EFF_RES_NEXU_MASK | RFR_RES_TELE))
3324                 {
3325 #ifdef JP
3326                         if (see_t) msg_format("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", t_name);
3327 #else
3328                         if (see_t) msg_format("%^s is unaffected!", t_name);
3329 #endif
3330                 }
3331                 else if ((tr_ptr->flags1 & RF1_QUESTOR) ||
3332                             (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10))
3333                 {
3334 #ifdef JP
3335                         if (see_t) msg_format("%^s¤Ï¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", t_name);
3336 #else
3337                         if (see_t) msg_format("%^s resist the effects!", t_name);
3338 #endif
3339                 }
3340                 else teleport_level((t_idx == p_ptr->riding) ? 0 : t_idx);
3341
3342                 wake_up = TRUE;
3343                 break;
3344
3345         /* RF6_PSY_SPEAR */
3346         case 160+11:
3347                 if (known)
3348                 {
3349                         if (see_either)
3350                         {
3351 #ifdef JP
3352                                 msg_format("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¸÷¤Î·õ¤òÊü¤Ã¤¿¡£", m_name, t_name);
3353 #else
3354                                 msg_format("%^s throw a Psycho-spear at %s.", m_name, t_name);
3355 #endif
3356
3357                         }
3358                         else
3359                         {
3360                                 mon_fight = TRUE;
3361                         }
3362                 }
3363
3364                 dam = (r_ptr->flags2 & RF2_POWERFUL) ? (randint1(rlev * 2) + 180) : (randint1(rlev * 3 / 2) + 120);
3365                 monst_beam_monst(m_idx, y, x, GF_PSY_SPEAR,
3366                                  dam, MS_PSY_SPEAR, learnable);
3367                 break;
3368
3369         /* RF6_DARKNESS */
3370         case 160+12:
3371                 if (known)
3372                 {
3373                         if (see_m)
3374                         {
3375 #ifdef JP
3376                                 msg_format("%^s¤¬°Å°Ç¤ÎÃæ¤Ç¼ê¤ò¿¶¤Ã¤¿¡£", m_name);
3377 #else
3378                                 msg_format("%^s gestures in shadow.", m_name);
3379 #endif
3380
3381
3382                                 if (see_t)
3383                                 {
3384 #ifdef JP
3385                                         msg_format("%^s¤Ï°Å°Ç¤ËÊñ¤Þ¤ì¤¿¡£", t_name);
3386 #else
3387                                         msg_format("%^s is surrounded by darkness.", t_name);
3388 #endif
3389
3390                                 }
3391                         }
3392                         else
3393                         {
3394                                 mon_fight = TRUE;
3395                         }
3396                 }
3397
3398                 (void)project(m_idx, 3, y, x, 0, GF_DARK_WEAK, PROJECT_GRID | PROJECT_KILL, MS_DARKNESS);
3399
3400                 unlite_room(y, x);
3401
3402                 break;
3403
3404         /* RF6_TRAPS */
3405         case 160+13:
3406 #if 0
3407                 if (known)
3408                 {
3409                         if (see_m)
3410                         {
3411 #ifdef JP
3412                                 msg_format("%^s¤¬¼öʸ¤ò¾§¤¨¤Æ¼Ù°­¤ËÈù¾Ð¤ó¤À¡£", m_name);
3413 #else
3414                                 msg_format("%^s casts a spell and cackles evilly.", m_name);
3415 #endif
3416                         }
3417                         else
3418                         {
3419 #ifdef JP
3420                                 msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
3421 #else
3422                                 msg_format("%^s mumbles.", m_name);
3423 #endif
3424                         }
3425                 }
3426
3427                 trap_creation(y, x);
3428 #endif
3429                 break;
3430
3431         /* RF6_FORGET */
3432         case 160+14:
3433                 /* Not implemented */
3434                 return FALSE;
3435
3436         /* RF6_RAISE_DEAD */
3437         case 160+15:
3438                 if (known)
3439                 {
3440                         if (see_either)
3441                         {
3442                                 disturb(1, 0);
3443 #ifdef JP
3444                                 if (blind) msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
3445 #else
3446                                 if (blind) msg_format("%^s mumbles.", m_name);
3447 #endif
3448
3449 #ifdef JP
3450                                 else msg_format("%^s¤¬»à¼ÔÉü³è¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name);
3451 #else
3452                                 else msg_format("%^s casts a spell to revive corpses.", m_name);
3453 #endif
3454                         }
3455                         else
3456                         {
3457                                 mon_fight = TRUE;
3458                         }
3459                 }
3460                 animate_dead(m_idx, m_ptr->fy, m_ptr->fx);
3461                 break;
3462
3463         /* RF6_S_KIN */
3464         case 160+16:
3465                 if (known)
3466                 {
3467                         if (see_either)
3468                         {
3469                                 disturb(1, 0);
3470
3471                                 if (m_ptr->r_idx == MON_SERPENT || m_ptr->r_idx == MON_ZOMBI_SERPENT)
3472                                 {
3473 #ifdef JP
3474                                         msg_format("%^s¤¬¥À¥ó¥¸¥ç¥ó¤Î¼ç¤ò¾¤´­¤·¤¿¡£", m_name);
3475 #else
3476                                         msg_format("%^s magically summons guardians of dungeons.", m_name);
3477 #endif
3478                                 }
3479                                 else
3480                                 {
3481 #ifdef JP
3482                                         msg_format("%s¤¬ËâË¡¤Ç%s¤ò¾¤´­¤·¤¿¡£", m_name,
3483                                                    ((r_ptr->flags1 & RF1_UNIQUE) ? "¼ê²¼" : "Ãç´Ö"));
3484 #else
3485                                         msg_format("%^s magically summons %s %s.", m_name, m_poss,
3486                                                    ((r_ptr->flags1 & RF1_UNIQUE) ? "minions" : "kin"));
3487 #endif
3488                                 }
3489
3490                         }
3491                         else
3492                         {
3493                                 mon_fight = TRUE;
3494                         }
3495                 }
3496
3497                 switch (m_ptr->r_idx)
3498                 {
3499                 case MON_MENELDOR:
3500                 case MON_GWAIHIR:
3501                 case MON_THORONDOR:
3502                         {
3503                                 int num = 4 + randint1(3);
3504                                 for (k = 0; k < num; k++)
3505                                 {
3506                                         count += summon_specific(m_idx, y, x, rlev, SUMMON_EAGLES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
3507                                 }
3508                         }
3509                         break;
3510
3511                 case MON_BULLGATES:
3512                         {
3513                                 int num = 2 + randint1(3);
3514                                 for (k = 0; k < num; k++)
3515                                 {
3516                                         count += summon_named_creature(m_idx, y, x, MON_IE, 0);
3517                                 }
3518                         }
3519                         break;
3520
3521                 case MON_SERPENT:
3522                 case MON_ZOMBI_SERPENT:
3523                         if (r_info[MON_JORMUNGAND].cur_num < r_info[MON_JORMUNGAND].max_num && one_in_(6))
3524                         {
3525                                 if (known && see_t)
3526                                 {
3527 #ifdef JP
3528                                         msg_print("ÃÏÌ̤«¤é¿å¤¬¿á¤­½Ð¤·¤¿¡ª");
3529 #else
3530                                         msg_print("Water blew off from the ground!");
3531 #endif
3532                                 }
3533                                 project(t_idx, 8, y, x, 3, GF_WATER_FLOW, PROJECT_GRID | PROJECT_HIDE, -1);
3534                         }
3535
3536                         {
3537                                 int num = 2 + randint1(3);
3538                                 for (k = 0; k < num; k++)
3539                                 {
3540                                         count += summon_specific(m_idx, y, x, rlev, SUMMON_GUARDIANS, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
3541                                 }
3542                         }
3543                         break;
3544
3545                 case MON_CALDARM:
3546                         {
3547                                 int num = randint1(3);
3548                                 for (k = 0; k < num; k++)
3549                                 {
3550                                         count += summon_named_creature(m_idx, y, x, MON_LOCKE_CLONE, 0);
3551                                 }
3552                         }
3553                         break;
3554
3555                 case MON_LOUSY:
3556                         {
3557                                 int num = 2 + randint1(3);
3558                                 for (k = 0; k < num; k++)
3559                                 {
3560                                         count += summon_specific(m_idx, y, x, rlev, SUMMON_LOUSE, (PM_ALLOW_GROUP));
3561                                 }
3562                         }
3563                         break;
3564
3565                 default:
3566                         summon_kin_type = r_ptr->d_char;
3567
3568                         for (k = 0; k < 4; k++)
3569                         {
3570                                 count += summon_specific(m_idx, y, x, rlev, SUMMON_KIN, (PM_ALLOW_GROUP));
3571                         }
3572                         break;
3573                 }
3574
3575                 if (known && !see_t && count)
3576                 {
3577                         mon_fight = TRUE;
3578                 }
3579
3580                 break;
3581
3582         /* RF6_S_CYBER */
3583         case 160+17:
3584                 if (known)
3585                 {
3586                         if (see_either)
3587                         {
3588                                 disturb(1, 0);
3589
3590 #ifdef JP
3591                                 msg_format("%^s¤¬¥µ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤ò¾¤´­¤·¤¿¡ª", m_name);
3592 #else
3593                                 msg_format("%^s magically summons Cyberdemons!", m_name);
3594 #endif
3595
3596                         }
3597                         else
3598                         {
3599                                 mon_fight = TRUE;
3600                         }
3601                 }
3602
3603                 if (is_friendly(m_ptr))
3604                 {
3605                         count += summon_specific(m_idx, y, x, rlev, SUMMON_CYBER, (PM_ALLOW_GROUP));
3606                 }
3607                 else
3608                 {
3609                         count += summon_cyber(m_idx, y, x);
3610                 }
3611
3612                 if (known && !see_t && count)
3613                 {
3614                         mon_fight = TRUE;
3615                 }
3616
3617                 break;
3618
3619         /* RF6_S_MONSTER */
3620         case 160+18:
3621                 if (known)
3622                 {
3623                         if (see_either)
3624                         {
3625                                 disturb(1, 0);
3626
3627 #ifdef JP
3628                                 msg_format("%^s¤¬ËâË¡¤ÇÃç´Ö¤ò¾¤´­¤·¤¿¡ª", m_name);
3629 #else
3630                                 msg_format("%^s magically summons help!", m_name);
3631 #endif
3632
3633                         }
3634                         else
3635                         {
3636                                 mon_fight = TRUE;
3637                         }
3638                 }
3639
3640                 count += summon_specific(m_idx, y, x, rlev, 0, (u_mode));
3641
3642                 if (known && !see_t && count)
3643                 {
3644                         mon_fight = TRUE;
3645                 }
3646
3647                 break;
3648
3649         /* RF6_S_MONSTERS */
3650         case 160+19:
3651                 if (known)
3652                 {
3653                         if (see_either)
3654                         {
3655                                 disturb(1, 0);
3656
3657 #ifdef JP
3658                                 msg_format("%^s¤¬ËâË¡¤Ç¥â¥ó¥¹¥¿¡¼¤ò¾¤´­¤·¤¿¡ª", m_name);
3659 #else
3660                                 msg_format("%^s magically summons monsters!", m_name);
3661 #endif
3662
3663                         }
3664                         else
3665                         {
3666                                 mon_fight = TRUE;
3667                         }
3668                 }
3669
3670                 for (k = 0; k < s_num_6; k++)
3671                 {
3672                         count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | u_mode));
3673                 }
3674
3675                 if (known && !see_t && count)
3676                 {
3677                         mon_fight = TRUE;
3678                 }
3679
3680                 break;
3681
3682         /* RF6_S_ANT */
3683         case 160+20:
3684                 if (known)
3685                 {
3686                         if (see_either)
3687                         {
3688                                 disturb(1, 0);
3689
3690 #ifdef JP
3691                                 msg_format("%^s¤¬ËâË¡¤Ç¥¢¥ê¤ò¾¤´­¤·¤¿¡£", m_name);
3692 #else
3693                                 msg_format("%^s magically summons ants.", m_name);
3694 #endif
3695
3696                         }
3697                         else
3698                         {
3699                                 mon_fight = TRUE;
3700                         }
3701                 }
3702
3703                 for (k = 0; k < s_num_6; k++)
3704                 {
3705                         count += summon_specific(m_idx, y, x, rlev, SUMMON_ANT, (PM_ALLOW_GROUP));
3706                 }
3707
3708                 if (known && !see_t && count)
3709                 {
3710                         mon_fight = TRUE;
3711                 }
3712
3713                 break;
3714
3715         /* RF6_S_SPIDER */
3716         case 160+21:
3717                 if (known)
3718                 {
3719                         if (see_either)
3720                         {
3721                                 disturb(1, 0);
3722
3723 #ifdef JP
3724                                 msg_format("%^s¤¬ËâË¡¤Ç¥¯¥â¤ò¾¤´­¤·¤¿¡£", m_name);
3725 #else
3726                                 msg_format("%^s magically summons spiders.", m_name);
3727 #endif
3728
3729                         }
3730                         else
3731                         {
3732                                 mon_fight = TRUE;
3733                         }
3734                 }
3735
3736                 for (k = 0; k < s_num_6; k++)
3737                 {
3738                         count += summon_specific(m_idx, y, x, rlev, SUMMON_SPIDER, (PM_ALLOW_GROUP));
3739                 }
3740
3741                 if (known && !see_t && count)
3742                 {
3743                         mon_fight = TRUE;
3744                 }
3745
3746                 break;
3747
3748         /* RF6_S_HOUND */
3749         case 160+22:
3750                 if (known)
3751                 {
3752                         if (see_either)
3753                         {
3754                                 disturb(1, 0);
3755
3756 #ifdef JP
3757                                 msg_format("%^s¤¬ËâË¡¤Ç¥Ï¥¦¥ó¥É¤ò¾¤´­¤·¤¿¡£", m_name);
3758 #else
3759                                 msg_format("%^s magically summons hounds.", m_name);
3760 #endif
3761
3762                         }
3763                         else
3764                         {
3765                                 mon_fight = TRUE;
3766                         }
3767                 }
3768
3769                 for (k = 0; k < s_num_4; k++)
3770                 {
3771                         count += summon_specific(m_idx, y, x, rlev, SUMMON_HOUND, (PM_ALLOW_GROUP));
3772                 }
3773
3774                 if (known && !see_t && count)
3775                 {
3776                         mon_fight = TRUE;
3777                 }
3778
3779                 break;
3780
3781         /* RF6_S_HYDRA */
3782         case 160+23:
3783                 if (known)
3784                 {
3785                         if (see_either)
3786                         {
3787                                 disturb(1, 0);
3788
3789 #ifdef JP
3790                                 msg_format("%^s¤¬ËâË¡¤Ç¥Ò¥É¥é¤ò¾¤´­¤·¤¿¡£", m_name);
3791 #else
3792                                 msg_format("%^s magically summons hydras.", m_name);
3793 #endif
3794
3795                         }
3796                         else
3797                         {
3798                                 mon_fight = TRUE;
3799                         }
3800                 }
3801
3802                 for (k = 0; k < s_num_4; k++)
3803                 {
3804                         count += summon_specific(m_idx, y, x, rlev, SUMMON_HYDRA, (PM_ALLOW_GROUP));
3805                 }
3806
3807                 if (known && !see_t && count)
3808                 {
3809                         mon_fight = TRUE;
3810                 }
3811
3812                 break;
3813
3814         /* RF6_S_ANGEL */
3815         case 160+24:
3816                 if (known)
3817                 {
3818                         if (see_either)
3819                         {
3820                                 disturb(1, 0);
3821
3822 #ifdef JP
3823                                 msg_format("%^s¤¬ËâË¡¤ÇÅ·»È¤ò¾¤´­¤·¤¿¡ª", m_name);
3824 #else
3825                                 msg_format("%^s magically summons an angel!", m_name);
3826 #endif
3827
3828                         }
3829                         else
3830                         {
3831                                 mon_fight = TRUE;
3832                         }
3833                 }
3834
3835                 {
3836                         int num = 1;
3837
3838                         if ((r_ptr->flags1 & RF1_UNIQUE) && !easy_band)
3839                         {
3840                                 num += r_ptr->level/40;
3841                         }
3842
3843                         for (k = 0; k < num; k++)
3844                         {
3845                                 count += summon_specific(m_idx, y, x, rlev, SUMMON_ANGEL, (PM_ALLOW_GROUP));
3846                         }
3847                 }
3848
3849                 if (known && !see_t && count)
3850                 {
3851                         mon_fight = TRUE;
3852                 }
3853
3854                 break;
3855
3856         /* RF6_S_DEMON */
3857         case 160+25:
3858                 if (known)
3859                 {
3860                         if (see_either)
3861                         {
3862                                 disturb(1, 0);
3863
3864 #ifdef JP
3865                                 msg_format("%^s¤¬ËâË¡¤Çº®Æ٤εÜÄ¤é¥Ç¡¼¥â¥ó¤ò¾¤´­¤·¤¿¡ª", m_name);
3866 #else
3867                                 msg_format("%^s magically summons a demon from the Courts of Chaos!", m_name);
3868 #endif
3869
3870                         }
3871                         else
3872                         {
3873                                 mon_fight = TRUE;
3874                         }
3875                 }
3876
3877                 for (k = 0; k < 1; k++)
3878                 {
3879                         count += summon_specific(m_idx, y, x, rlev, SUMMON_DEMON, (PM_ALLOW_GROUP));
3880                 }
3881
3882                 if (known && !see_t && count)
3883                 {
3884                         mon_fight = TRUE;
3885                 }
3886
3887                 break;
3888
3889         /* RF6_S_UNDEAD */
3890         case 160+26:
3891                 if (known)
3892                 {
3893                         if (see_either)
3894                         {
3895                                 disturb(1, 0);
3896
3897 #ifdef JP
3898                                 msg_format("%s¤¬ËâË¡¤Ç¥¢¥ó¥Ç¥Ã¥É¤ò¾¤´­¤·¤¿¡£", m_name);
3899 #else
3900                                 msg_format("%^s magically summons undead.", m_name);
3901 #endif
3902
3903                         }
3904                         else
3905                         {
3906                                 mon_fight = TRUE;
3907                         }
3908                 }
3909
3910                 for (k = 0; k < 1; k++)
3911                 {
3912                         count += summon_specific(m_idx, y, x, rlev, SUMMON_UNDEAD, (PM_ALLOW_GROUP));
3913                 }
3914
3915                 if (known && !see_t && count)
3916                 {
3917                         mon_fight = TRUE;
3918                 }
3919
3920                 break;
3921
3922         /* RF6_S_DRAGON */
3923         case 160+27:
3924                 if (known)
3925                 {
3926                         if (see_either)
3927                         {
3928                                 disturb(1, 0);
3929
3930 #ifdef JP
3931                                 msg_format("%^s¤¬ËâË¡¤Ç¥É¥é¥´¥ó¤ò¾¤´­¤·¤¿¡ª", m_name);
3932 #else
3933                                 msg_format("%^s magically summons a dragon!", m_name);
3934 #endif
3935
3936                         }
3937                         else
3938                         {
3939                                 mon_fight = TRUE;
3940                         }
3941                 }
3942
3943                 for (k = 0; k < 1; k++)
3944                 {
3945                         count += summon_specific(m_idx, y, x, rlev, SUMMON_DRAGON, (PM_ALLOW_GROUP));
3946                 }
3947
3948                 if (known && !see_t && count)
3949                 {
3950                         mon_fight = TRUE;
3951                 }
3952
3953                 break;
3954
3955         /* RF6_S_HI_UNDEAD */
3956         case 160+28:
3957                 if (known)
3958                 {
3959                         if (see_either)
3960                         {
3961                                 disturb(1, 0);
3962
3963 #ifdef JP
3964                                 msg_format("%s¤¬ËâË¡¤Ç¥¢¥ó¥Ç¥Ã¥É¤ò¾¤´­¤·¤¿¡£", m_name);
3965 #else
3966                                 msg_format("%^s magically summons undead.", m_name);
3967 #endif
3968
3969                         }
3970                         else
3971                         {
3972                                 mon_fight = TRUE;
3973                         }
3974                 }
3975
3976                 for (k = 0; k < s_num_6; k++)
3977                 {
3978                         count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | u_mode));
3979                 }
3980
3981                 if (known && !see_t && count)
3982                 {
3983                         mon_fight = TRUE;
3984                 }
3985
3986                 break;
3987
3988         /* RF6_S_HI_DRAGON */
3989         case 160+29:
3990                 if (known)
3991                 {
3992                         if (see_either)
3993                         {
3994                                 disturb(1, 0);
3995
3996 #ifdef JP
3997                                 msg_format("%^s¤¬ËâË¡¤Ç¸ÅÂå¥É¥é¥´¥ó¤ò¾¤´­¤·¤¿¡ª", m_name);
3998 #else
3999                                 msg_format("%^s magically summons ancient dragons!", m_name);
4000 #endif
4001
4002                         }
4003                         else
4004                         {
4005                                 mon_fight = TRUE;
4006                         }
4007                 }
4008
4009                 for (k = 0; k < s_num_4; k++)
4010                 {
4011                         count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_DRAGON, (PM_ALLOW_GROUP | u_mode));
4012                 }
4013
4014                 if (known && !see_t && count)
4015                 {
4016                         mon_fight = TRUE;
4017                 }
4018
4019                 break;
4020
4021         /* RF6_S_AMBERITES */
4022         case 160+30:
4023                 if (known)
4024                 {
4025                         if (see_either)
4026                         {
4027                                 disturb(1, 0);
4028
4029 #ifdef JP
4030                                 msg_format("%^s¤¬¥¢¥ó¥Ð¡¼¤Î²¦Â²¤ò¾¤´­¤·¤¿¡ª", m_name);
4031 #else
4032                                 msg_format("%^s magically summons Lords of Amber!", m_name);
4033 #endif
4034
4035                         }
4036                         else
4037                         {
4038                                 mon_fight = TRUE;
4039                         }
4040                 }
4041
4042                 for (k = 0; k < s_num_4; k++)
4043                 {
4044                         count += summon_specific(m_idx, y, x, rlev, SUMMON_AMBERITES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
4045                 }
4046
4047                 if (known && !see_t && count)
4048                 {
4049                         mon_fight = TRUE;
4050                 }
4051
4052                 break;
4053
4054         /* RF6_S_UNIQUE */
4055         case 160+31:
4056                 if (known)
4057                 {
4058                         if (see_either)
4059                         {
4060                                 disturb(1, 0);
4061
4062 #ifdef JP
4063                                 msg_format("%^s¤¬ËâË¡¤ÇÆÃÊ̤ʶ¯Å¨¤ò¾¤´­¤·¤¿¡ª", m_name);
4064 #else
4065                                 msg_format("%^s magically summons special opponents!", m_name);
4066 #endif
4067
4068                         }
4069                         else
4070                         {
4071                                 mon_fight = TRUE;
4072                         }
4073                 }
4074
4075                 for (k = 0; k < s_num_4; k++)
4076                 {
4077                         count += summon_specific(m_idx, y, x, rlev, SUMMON_UNIQUE, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
4078                 }
4079
4080                 if (known && !see_t && count)
4081                 {
4082                         mon_fight = TRUE;
4083                 }
4084
4085                 break;
4086         }
4087
4088         if (wake_up)
4089         {
4090                 t_ptr->csleep = 0;
4091                 if (tr_ptr->flags7 & RF7_HAS_LD_MASK) p_ptr->update |= (PU_MON_LITE);
4092         }
4093
4094         if (fear && see_t)
4095         {
4096 #ifdef JP
4097                 msg_format("%^s¤Ï¶²Éݤ·¤Æƨ¤²½Ð¤·¤¿¡ª", t_name);
4098 #else
4099                 msg_format("%^s flees in terror!", t_name);
4100 #endif
4101
4102         }
4103
4104         if (see_m && maneable && !world_monster && !p_ptr->blind && (p_ptr->pclass == CLASS_IMITATOR))
4105         {
4106                 if (thrown_spell != 167) /* Not RF6_SPECIAL */
4107                 {
4108                         if (p_ptr->mane_num == MAX_MANE)
4109                         {
4110                                 p_ptr->mane_num--;
4111                                 for (i = 0; i < p_ptr->mane_num - 1; i++)
4112                                 {
4113                                         p_ptr->mane_spell[i] = p_ptr->mane_spell[i+1];
4114                                         p_ptr->mane_dam[i] = p_ptr->mane_dam[i+1];
4115                                 }
4116                         }
4117                         p_ptr->mane_spell[p_ptr->mane_num] = thrown_spell - 96;
4118                         p_ptr->mane_dam[p_ptr->mane_num] = dam;
4119                         p_ptr->mane_num++;
4120                         new_mane = TRUE;
4121
4122                         p_ptr->redraw |= (PR_MANE);
4123                 }
4124         }
4125
4126         /* Remember what the monster did, if we saw it */
4127         if (see_m && is_original_ap(m_ptr))
4128         {
4129                 /* Inate spell */
4130                 if (thrown_spell < 32*4)
4131                 {
4132                         r_ptr->r_flags4 |= (1L << (thrown_spell - 32*3));
4133                         if (r_ptr->r_cast_spell < MAX_UCHAR) r_ptr->r_cast_spell++;
4134                 }
4135
4136                 /* Bolt or Ball */
4137                 else if (thrown_spell < 32*5)
4138                 {
4139                         r_ptr->r_flags5 |= (1L << (thrown_spell - 32*4));
4140                         if (r_ptr->r_cast_spell < MAX_UCHAR) r_ptr->r_cast_spell++;
4141                 }
4142
4143                 /* Special spell */
4144                 else if (thrown_spell < 32*6)
4145                 {
4146                         r_ptr->r_flags6 |= (1L << (thrown_spell - 32*5));
4147                         if (r_ptr->r_cast_spell < MAX_UCHAR) r_ptr->r_cast_spell++;
4148                 }
4149         }
4150
4151         /* Always take note of monsters that kill you */
4152         if (p_ptr->is_dead && (r_ptr->r_deaths < MAX_SHORT) && !p_ptr->inside_arena)
4153         {
4154                 r_ptr->r_deaths++; /* Ignore appearance difference */
4155         }
4156
4157         /* A spell was cast */
4158         return TRUE;
4159 }