OSDN Git Service

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