OSDN Git Service

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