OSDN Git Service

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