OSDN Git Service

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