OSDN Git Service

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