OSDN Git Service

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