OSDN Git Service

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