OSDN Git Service

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