OSDN Git Service

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