OSDN Git Service

クローン地獄での謎のモンスターのバグ修正。このバグは3つのバグの複合だった。
[hengband/hengband.git] / src / monster1.c
1 /* File: monster1.c */
2
3 /* Purpose: describe monsters (using monster memory) */
4
5 /*
6  * Copyright (c) 1989 James E. Wilson, Christopher J. Stuart
7  *
8  * This software may be copied and distributed for educational, research, and
9  * not for profit purposes provided that this copyright and statement are
10  * included in all such copies.
11  */
12
13 #include "angband.h"
14
15
16 /*
17  * Pronoun arrays, by gender.
18  */
19 static cptr wd_he[3] =
20 #ifdef JP
21 { "¤½¤ì", "Èà", "Èà½÷" };
22 #else
23 { "it", "he", "she" };
24 #endif
25
26 static cptr wd_his[3] =
27 #ifdef JP
28 { "¤½¤ì¤Î", "Èà¤Î", "Èà½÷¤Î" };
29 #else
30 { "its", "his", "her" };
31 #endif
32
33
34
35 /*
36  * Pluralizer.  Args(count, singular, plural)
37  */
38 #define plural(c,s,p) \
39     (((c) == 1) ? (s) : (p))
40
41
42
43
44
45
46 /*
47  * Determine if the "armor" is known
48  * The higher the level, the fewer kills needed.
49  */
50 static bool know_armour(int r_idx)
51 {
52         monster_race *r_ptr = &r_info[r_idx];
53
54         s32b level = r_ptr->level;
55
56         s32b kills = r_ptr->r_tkills;
57
58         if (cheat_know) return (TRUE);
59
60         /* Normal monsters */
61         if (kills > 304 / (4 + level)) return (TRUE);
62
63         /* Skip non-uniques */
64         if (!(r_ptr->flags1 & RF1_UNIQUE)) return (FALSE);
65
66         /* Unique monsters */
67         if (kills > 304 / (38 + (5 * level) / 4)) return (TRUE);
68
69         /* Assume false */
70         return (FALSE);
71 }
72
73
74 /*
75  * Determine if the "damage" of the given attack is known
76  * the higher the level of the monster, the fewer the attacks you need,
77  * the more damage an attack does, the more attacks you need
78  */
79 static bool know_damage(int r_idx, int i)
80 {
81         monster_race *r_ptr = &r_info[r_idx];
82
83         s32b level = r_ptr->level;
84
85         s32b a = r_ptr->r_blows[i];
86
87         s32b d1 = r_ptr->blow[i].d_dice;
88         s32b d2 = r_ptr->blow[i].d_side;
89
90         s32b d = d1 * d2;
91
92         if (d >= ((4+level)*MAX_UCHAR)/80) d = ((4+level)*MAX_UCHAR-1)/80;
93
94         /* Normal monsters */
95         if ((4 + level) * a > 80 * d) return (TRUE);
96
97         /* Skip non-uniques */
98         if (!(r_ptr->flags1 & RF1_UNIQUE)) return (FALSE);
99
100         /* Unique monsters */
101         if ((4 + level) * (2 * a) > 80 * d) return (TRUE);
102
103         /* Assume false */
104         return (FALSE);
105 }
106
107
108 /*
109  * Prepare hook for c_roff(). It will be changed for spoiler generation in wizard1.c.
110  */
111 void (*hook_c_roff)(byte attr, cptr str) = c_roff;
112
113 static void hooked_roff(cptr str)
114 {
115         /* Spawn */
116         hook_c_roff(TERM_WHITE, str);
117 }
118
119
120 /*
121  * Hack -- display monster information using "hooked_roff()"
122  *
123  * Note that there is now a compiler option to only read the monster
124  * descriptions from the raw file when they are actually needed, which
125  * saves about 60K of memory at the cost of disk access during monster
126  * recall, which is optional to the user.
127  *
128  * This function should only be called with the cursor placed at the
129  * left edge of the screen, on a cleared line, in which the recall is
130  * to take place.  One extra blank line is left after the recall.
131  */
132 static void roff_aux(int r_idx, int mode)
133 {
134         monster_race    *r_ptr = &r_info[r_idx];
135
136         bool            old = FALSE;
137         bool            sin = FALSE;
138
139         int             m, n, r;
140
141         cptr            p, q;
142
143 #ifdef JP
144         char            jverb_buf[64];
145 #endif
146         int             msex = 0;
147
148         int speed = (ironman_nightmare) ? r_ptr->speed + 5 : r_ptr->speed;
149
150         bool            breath = FALSE;
151         bool            magic = FALSE;
152
153         u32b            flags1;
154         u32b            flags2;
155         u32b            flags3;
156         u32b            flags4;
157         u32b            flags5;
158         u32b            flags6;
159         u32b            flags7;
160
161         byte drop_gold, drop_item;
162
163         int             vn = 0;
164         byte            color[64];
165         cptr            vp[64];
166
167         bool know_everything = FALSE;
168
169         /* Obtain a copy of the "known" number of drops */
170         drop_gold = r_ptr->r_drop_gold;
171         drop_item = r_ptr->r_drop_item;
172
173         /* Obtain a copy of the "known" flags */
174         flags1 = (r_ptr->flags1 & r_ptr->r_flags1);
175         flags2 = (r_ptr->flags2 & r_ptr->r_flags2);
176         flags3 = (r_ptr->flags3 & r_ptr->r_flags3);
177         flags4 = (r_ptr->flags4 & r_ptr->r_flags4);
178         flags5 = (r_ptr->flags5 & r_ptr->r_flags5);
179         flags6 = (r_ptr->flags6 & r_ptr->r_flags6);
180         flags7 = (r_ptr->flags7 & r_ptr->flags7);
181
182         /* cheat_know or reserch_mon() */
183         if (cheat_know || (mode & 0x01))
184                 know_everything = TRUE;
185
186         /* Cheat -- Know everything */
187         if (know_everything)
188         {
189                 /* Hack -- maximal drops */
190                 drop_gold = drop_item =
191                 (((r_ptr->flags1 & RF1_DROP_4D2) ? 8 : 0) +
192                  ((r_ptr->flags1 & RF1_DROP_3D2) ? 6 : 0) +
193                  ((r_ptr->flags1 & RF1_DROP_2D2) ? 4 : 0) +
194                  ((r_ptr->flags1 & RF1_DROP_1D2) ? 2 : 0) +
195                  ((r_ptr->flags1 & RF1_DROP_90)  ? 1 : 0) +
196                  ((r_ptr->flags1 & RF1_DROP_60)  ? 1 : 0));
197
198                 /* Hack -- but only "valid" drops */
199                 if (r_ptr->flags1 & RF1_ONLY_GOLD) drop_item = 0;
200                 if (r_ptr->flags1 & RF1_ONLY_ITEM) drop_gold = 0;
201
202                 /* Hack -- know all the flags */
203                 flags1 = r_ptr->flags1;
204                 flags2 = r_ptr->flags2;
205                 flags3 = r_ptr->flags3;
206                 flags4 = r_ptr->flags4;
207                 flags5 = r_ptr->flags5;
208                 flags6 = r_ptr->flags6;
209         }
210
211
212         /* Extract a gender (if applicable) */
213         if (r_ptr->flags1 & RF1_FEMALE) msex = 2;
214         else if (r_ptr->flags1 & RF1_MALE) msex = 1;
215
216         /* Assume some "obvious" flags */
217         if (r_ptr->flags1 & RF1_UNIQUE)  flags1 |= (RF1_UNIQUE);
218         if (r_ptr->flags1 & RF1_QUESTOR) flags1 |= (RF1_QUESTOR);
219         if (r_ptr->flags1 & RF1_MALE)    flags1 |= (RF1_MALE);
220         if (r_ptr->flags1 & RF1_FEMALE)  flags1 |= (RF1_FEMALE);
221
222         /* Assume some "creation" flags */
223         if (r_ptr->flags1 & RF1_FRIENDS) flags1 |= (RF1_FRIENDS);
224         if (r_ptr->flags1 & RF1_ESCORT)  flags1 |= (RF1_ESCORT);
225         if (r_ptr->flags1 & RF1_ESCORTS) flags1 |= (RF1_ESCORTS);
226
227         /* Killing a monster reveals some properties */
228         if (r_ptr->r_tkills || know_everything)
229         {
230                 /* Know "race" flags */
231                 if (r_ptr->flags3 & RF3_ORC)      flags3 |= (RF3_ORC);
232                 if (r_ptr->flags3 & RF3_TROLL)    flags3 |= (RF3_TROLL);
233                 if (r_ptr->flags3 & RF3_GIANT)    flags3 |= (RF3_GIANT);
234                 if (r_ptr->flags3 & RF3_DRAGON)   flags3 |= (RF3_DRAGON);
235                 if (r_ptr->flags3 & RF3_DEMON)    flags3 |= (RF3_DEMON);
236                 if (r_ptr->flags3 & RF3_UNDEAD)   flags3 |= (RF3_UNDEAD);
237                 if (r_ptr->flags3 & RF3_EVIL)     flags3 |= (RF3_EVIL);
238                 if (r_ptr->flags3 & RF3_GOOD)     flags3 |= (RF3_GOOD);
239                 if (r_ptr->flags3 & RF3_ANIMAL)   flags3 |= (RF3_ANIMAL);
240                 if (r_ptr->flags3 & RF3_AMBERITE) flags3 |= (RF3_AMBERITE);
241                 if (r_ptr->flags2 & RF2_HUMAN)    flags2 |= (RF2_HUMAN);
242
243                 /* Know 'quantum' flag */
244                 if (r_ptr->flags2 & RF2_QUANTUM)  flags2 |= (RF2_QUANTUM);
245
246                 /* Know "forced" flags */
247                 if (r_ptr->flags1 & RF1_FORCE_DEPTH) flags1 |= (RF1_FORCE_DEPTH);
248                 if (r_ptr->flags1 & RF1_FORCE_MAXHP) flags1 |= (RF1_FORCE_MAXHP);
249         }
250
251         /* For output_monster_spoiler() */
252         if (mode & 0x02)
253         {
254                 /* Nothing to do */
255         }
256         else
257
258         /* Treat uniques differently */
259         if (flags1 & RF1_UNIQUE)
260         {
261                 /* Hack -- Determine if the unique is "dead" */
262                 bool dead = (r_ptr->max_num == 0) ? TRUE : FALSE;
263
264                 /* We've been killed... */
265                 if (r_ptr->r_deaths)
266                 {
267                         /* Killed ancestors */
268 #ifdef JP
269                         hooked_roff(format("%^s¤Ï¤¢¤Ê¤¿¤ÎÀèÁĤò %d ¿ÍÁò¤Ã¤Æ¤¤¤ë",
270 #else
271                         hooked_roff(format("%^s has slain %d of your ancestors",
272 #endif
273
274                                     wd_he[msex], r_ptr->r_deaths));
275
276                         /* But we've also killed it */
277                         if (dead)
278                         {
279 #ifdef JP
280                                 hooked_roff(format("¤¬¡¢¤¹¤Ç¤ËµØƤ¤Á¤Ï²Ì¤¿¤·¤Æ¤¤¤ë¡ª"));
281 #else
282                                 hooked_roff(format(", but you have avenged %s!  ",
283                                             plural(r_ptr->r_deaths, "him", "them")));
284 #endif
285
286                         }
287
288                         /* Unavenged (ever) */
289                         else
290                         {
291 #ifdef JP
292                                 hooked_roff(format("¤Î¤Ë¡¢¤Þ¤ÀµØƤ¤Á¤ò²Ì¤¿¤·¤Æ¤¤¤Ê¤¤¡£"));
293 #else
294                                 hooked_roff(format(", who %s unavenged.  ",
295                                             plural(r_ptr->r_deaths, "remains", "remain")));
296 #endif
297
298                         }
299                 }
300
301                 /* Dead unique who never hurt us */
302                 else if (dead)
303                 {
304 #ifdef JP
305                         hooked_roff("¤¢¤Ê¤¿¤Ï¤³¤ÎµØŨ¤ò¤¹¤Ç¤ËÁò¤êµî¤Ã¤Æ¤¤¤ë¡£");
306 #else
307                         hooked_roff("You have slain this foe.  ");
308 #endif
309
310                 }
311         }
312
313         /* Not unique, but killed us */
314         else if (r_ptr->r_deaths)
315         {
316                 /* Dead ancestors */
317 #ifdef JP
318                 hooked_roff(format("¤³¤Î¥â¥ó¥¹¥¿¡¼¤Ï¤¢¤Ê¤¿¤ÎÀèÁĤò %d ¿ÍÁò¤Ã¤Æ¤¤¤ë",
319                             r_ptr->r_deaths ));
320 #else
321                 hooked_roff(format("%d of your ancestors %s been killed by this creature, ",
322                             r_ptr->r_deaths, plural(r_ptr->r_deaths, "has", "have")));
323 #endif
324
325
326                 /* Some kills this life */
327                 if (r_ptr->r_pkills)
328                 {
329 #ifdef JP
330                         hooked_roff(format("¤¬¡¢¤¢¤Ê¤¿¤Ï¤³¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¯¤Ê¤¯¤È¤â %d ÂΤÏÅݤ·¤Æ¤¤¤ë¡£",
331 #else
332                         hooked_roff(format("and you have exterminated at least %d of the creatures.  ",
333 #endif
334
335                                     r_ptr->r_pkills));
336                 }
337
338                 /* Some kills past lives */
339                 else if (r_ptr->r_tkills)
340                 {
341 #ifdef JP
342                         hooked_roff(format("¤¬¡¢%s¤Ï¤³¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¯¤Ê¤¯¤È¤â %d ÂΤÏÅݤ·¤Æ¤¤¤ë¡£",
343                                     "¤¢¤Ê¤¿¤ÎÀèÁÄ", r_ptr->r_tkills));
344 #else
345                         hooked_roff(format("and %s have exterminated at least %d of the creatures.  ",
346                                     "your ancestors", r_ptr->r_tkills));
347 #endif
348
349                 }
350
351                 /* No kills */
352                 else
353                 {
354 #ifdef JP
355                         hooked_roff(format("¤¬¡¢¤Þ¤À%s¤òÅݤ·¤¿¤³¤È¤Ï¤Ê¤¤¡£",
356 #else
357                         hooked_roff(format("and %s is not ever known to have been defeated.  ",
358 #endif
359
360                                     wd_he[msex]));
361                 }
362         }
363
364         /* Normal monsters */
365         else
366         {
367                 /* Killed some this life */
368                 if (r_ptr->r_pkills)
369                 {
370 #ifdef JP
371                         hooked_roff(format("¤¢¤Ê¤¿¤Ï¤³¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¯¤Ê¤¯¤È¤â %d ÂΤϻ¦¤·¤Æ¤¤¤ë¡£",
372 #else
373                         hooked_roff(format("You have killed at least %d of these creatures.  ",
374 #endif
375
376                                     r_ptr->r_pkills));
377                 }
378
379                 /* Killed some last life */
380                 else if (r_ptr->r_tkills)
381                 {
382 #ifdef JP
383                         hooked_roff(format("¤¢¤Ê¤¿¤ÎÀèÁĤϤ³¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¯¤Ê¤¯¤È¤â %d ÂΤϻ¦¤·¤Æ¤¤¤ë¡£",
384 #else
385                         hooked_roff(format("Your ancestors have killed at least %d of these creatures.  ",
386 #endif
387
388                                     r_ptr->r_tkills));
389                 }
390
391                 /* Killed none */
392                 else
393                 {
394 #ifdef JP
395                         hooked_roff("¤³¤Î¥â¥ó¥¹¥¿¡¼¤òÅݤ·¤¿¤³¤È¤Ï¤Ê¤¤¡£");
396 #else
397                         hooked_roff("No battles to the death are recalled.  ");
398 #endif
399
400                 }
401         }
402
403
404         /* Descriptions */
405         if (1)
406         {
407                 char buf[2048];
408
409 #ifdef DELAY_LOAD_R_TEXT
410
411                 int fd;
412
413                 /* Build the filename */
414 #ifdef JP
415 path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info_j.raw");
416 #else
417                 path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info.raw");
418 #endif
419
420
421                 /* Open the "raw" file */
422                 fd = fd_open(buf, O_RDONLY);
423
424                 /* Use file */
425                 if (fd >= 0)
426                 {
427                         huge pos;
428
429                         /* Starting position */
430                         pos = r_ptr->text;
431
432                         /* Additional offsets */
433                         pos += r_head->head_size;
434                         pos += r_head->info_size;
435                         pos += r_head->name_size;
436
437                         /* Seek */
438                         (void)fd_seek(fd, pos);
439
440                         /* Read a chunk of data */
441                         (void)fd_read(fd, buf, 2048);
442
443                         /* Close it */
444                         (void)fd_close(fd);
445                 }
446
447 #else
448
449                 /* Simple method */
450                 strcpy(buf, r_text + r_ptr->text);
451
452 #endif
453
454                 /* Dump it */
455                 hooked_roff(buf);
456 #ifndef JP
457                 hooked_roff("  ");
458 #endif
459         }
460
461         if (r_idx == MON_KAGE)
462         {
463                 /* All done */
464                 hooked_roff("\n");
465
466                 return;
467         }
468
469         /* Nothing yet */
470         old = FALSE;
471
472         /* Describe location */
473         if (r_ptr->level == 0)
474         {
475 #ifdef JP
476                 hooked_roff(format("%^s¤ÏÄ®¤Ë½»¤ß", wd_he[msex]));
477 #else
478                 hooked_roff(format("%^s lives in the town", wd_he[msex]));
479 #endif
480
481                 old = TRUE;
482         }
483         else if (r_ptr->r_tkills || know_everything)
484         {
485                 if (depth_in_feet)
486                 {
487 #ifdef JP
488                         hooked_roff(format("%^s¤ÏÄ̾ïÃϲ¼ %d ¥Õ¥£¡¼¥È¤Ç½Ð¸½¤·",
489 #else
490                         hooked_roff(format("%^s is normally found at depths of %d feet",
491 #endif
492
493                                     wd_he[msex], r_ptr->level * 50));
494                 }
495                 else
496                 {
497 #ifdef JP
498                         hooked_roff(format("%^s¤ÏÄ̾ïÃϲ¼ %d ³¬¤Ç½Ð¸½¤·",
499 #else
500                         hooked_roff(format("%^s is normally found on dungeon level %d",
501 #endif
502
503                                     wd_he[msex], r_ptr->level));
504                 }
505                 old = TRUE;
506         }
507
508
509         /* Describe movement */
510         if (r_idx == MON_CHAMELEON)
511         {
512 #ifdef JP
513                 hooked_roff("¡¢Â¾¤Î¥â¥ó¥¹¥¿¡¼¤Ë²½¤±¤ë¡£");
514 #else
515                 hooked_roff("and can take the shape of other monster.");
516 #endif
517                 return;
518         }
519         else
520         {
521                 /* Introduction */
522                 if (old)
523                 {
524 #ifdef JP
525                         hooked_roff("¡¢");
526 #else
527                         hooked_roff(", and ");
528 #endif
529
530                 }
531                 else
532                 {
533 #ifdef JP
534                         hooked_roff(format("%^s¤Ï", wd_he[msex]));
535 #else
536                         hooked_roff(format("%^s ", wd_he[msex]));
537 #endif
538
539                         old = TRUE;
540                 }
541 #ifndef JP
542                 hooked_roff("moves");
543 #endif
544
545                 /* Random-ness */
546                 if ((flags1 & RF1_RAND_50) || (flags1 & RF1_RAND_25))
547                 {
548                         /* Adverb */
549                         if ((flags1 & RF1_RAND_50) && (flags1 & RF1_RAND_25))
550                         {
551 #ifdef JP
552                                 hooked_roff("¤«¤Ê¤ê");
553 #else
554                                 hooked_roff(" extremely");
555 #endif
556
557                         }
558                         else if (flags1 & RF1_RAND_50)
559                         {
560 #ifdef JP
561                                 hooked_roff("´öʬ");
562 #else
563                                 hooked_roff(" somewhat");
564 #endif
565
566                         }
567                         else if (flags1 & RF1_RAND_25)
568                         {
569 #ifdef JP
570                                 hooked_roff("¾¯¡¹");
571 #else
572                                 hooked_roff(" a bit");
573 #endif
574
575                         }
576
577                         /* Adjective */
578 #ifdef JP
579                         hooked_roff("ÉÔµ¬Â§¤Ë");
580 #else
581                         hooked_roff(" erratically");
582 #endif
583
584
585                         /* Hack -- Occasional conjunction */
586 #ifdef JP
587                         if (speed != 110) hooked_roff("¡¢¤«¤Ä");
588 #else
589                         if (speed != 110) hooked_roff(", and");
590 #endif
591
592                 }
593
594                 /* Speed */
595                 if (speed > 110)
596                 {
597 #ifdef JP
598                         if (speed > 139) hook_c_roff(TERM_RED, "¿®¤¸Æñ¤¤¤Û¤É");
599                         else if (speed > 134) hook_c_roff(TERM_ORANGE, "ÌÔÎõ¤Ë");
600                         else if (speed > 129) hook_c_roff(TERM_ORANGE, "Èó¾ï¤Ë");
601                         else if (speed > 124) hook_c_roff(TERM_UMBER, "¤«¤Ê¤ê");
602                         else if (speed < 120) hook_c_roff(TERM_L_UMBER, "¤ä¤ä");
603                         hook_c_roff(TERM_L_RED, "ÁÇÁ᤯");
604 #else
605                         if (speed > 139) hook_c_roff(TERM_RED, "incredibly ");
606                         else if (speed > 134) hook_c_roff(TERM_ORANGE, "extremely ");
607                         else if (speed > 129) hook_c_roff(TERM_ORANGE, "very ");
608                         else if (speed > 124) hook_c_roff(TERM_UMBER, "fairly ");
609                         else if (speed < 120) hook_c_roff(TERM_L_UMBER, "somewhat ");
610                         hook_c_roff(TERM_L_RED, "quickly");
611 #endif
612
613                 }
614                 else if (speed < 110)
615                 {
616 #ifdef JP
617                         if (speed < 90) hook_c_roff(TERM_L_GREEN, "¿®¤¸Æñ¤¤¤Û¤É");
618                         else if (speed < 95) hook_c_roff(TERM_BLUE, "Èó¾ï¤Ë");
619                         else if (speed < 100) hook_c_roff(TERM_BLUE, "¤«¤Ê¤ê");
620                         else if (speed > 104) hook_c_roff(TERM_GREEN, "¤ä¤ä");
621                         hook_c_roff(TERM_L_BLUE, "¤æ¤Ã¤¯¤ê¤È");
622 #else
623                         if (speed < 90) hook_c_roff(TERM_L_GREEN, "incredibly ");
624                         else if (speed < 95) hook_c_roff(TERM_BLUE, "very ");
625                         else if (speed < 100) hook_c_roff(TERM_BLUE, "fairly ");
626                         else if (speed > 104) hook_c_roff(TERM_GREEN, "somewhat ");
627                         hook_c_roff(TERM_L_BLUE, "slowly");
628 #endif
629
630                 }
631                 else
632                 {
633 #ifdef JP
634                         hooked_roff("ÉáÄ̤ή¤µ¤Ç");
635 #else
636                         hooked_roff(" at normal speed");
637 #endif
638
639                 }
640 #ifdef JP
641                 hooked_roff("Æ°¤¤¤Æ¤¤¤ë");
642 #endif
643         }
644
645         /* The code above includes "attack speed" */
646         if (flags1 & RF1_NEVER_MOVE)
647         {
648                 /* Introduce */
649                 if (old)
650                 {
651 #ifdef JP
652                         hooked_roff("¡¢¤·¤«¤·");
653 #else
654                         hooked_roff(", but ");
655 #endif
656
657                 }
658                 else
659                 {
660 #ifdef JP
661                         hooked_roff(format("%^s¤Ï", wd_he[msex]));
662 #else
663                         hooked_roff(format("%^s ", wd_he[msex]));
664 #endif
665
666                         old = TRUE;
667                 }
668
669                 /* Describe */
670 #ifdef JP
671                 hooked_roff("¿¯Æþ¼Ô¤òÄÉÀפ·¤Ê¤¤");
672 #else
673                 hooked_roff("does not deign to chase intruders");
674 #endif
675
676         }
677
678         /* End this sentence */
679         if (old)
680         {
681 #ifdef JP
682                 hooked_roff("¡£");
683 #else
684                 hooked_roff(".  ");
685 #endif
686
687                 old = FALSE;
688         }
689
690
691         /* Describe experience if known */
692         if (r_ptr->r_tkills || know_everything)
693         {
694                 /* Introduction */
695 #ifdef JP
696                 hooked_roff("¤³¤Î");
697 #else
698                 if (flags1 & RF1_UNIQUE)
699                 {
700                         hooked_roff("Killing this");
701                 }
702                 else
703                 {
704                         hooked_roff("A kill of this");
705                 }
706 #endif
707
708
709                 /* Describe the "quality" */
710 #ifdef JP
711 if (flags2 & RF2_ELDRITCH_HORROR) hook_c_roff(TERM_VIOLET, "¶¸µ¤¤òͶ¤¦");/*nuke me*/
712 #else
713                 if (flags2 & RF2_ELDRITCH_HORROR) hooked_roff(" sanity-blasting");
714 #endif
715
716 #ifdef JP
717 if (flags3 & RF3_ANIMAL)          hook_c_roff(TERM_L_GREEN, "¼«Á³³¦¤Î");
718 #else
719                 if (flags3 & RF3_ANIMAL)          hooked_roff(" natural");
720 #endif
721
722 #ifdef JP
723 if (flags3 & RF3_EVIL)            hook_c_roff(TERM_L_DARK, "¼Ù°­¤Ê¤ë");
724 #else
725                 if (flags3 & RF3_EVIL)            hooked_roff(" evil");
726 #endif
727
728 #ifdef JP
729 if (flags3 & RF3_GOOD)            hook_c_roff(TERM_YELLOW, "Á±ÎɤÊ");
730 #else
731                 if (flags3 & RF3_GOOD)            hooked_roff(" good");
732 #endif
733
734 #ifdef JP
735 if (flags3 & RF3_UNDEAD)          hook_c_roff(TERM_VIOLET, "¥¢¥ó¥Ç¥Ã¥É¤Î");
736 #else
737                 if (flags3 & RF3_UNDEAD)          hooked_roff(" undead");
738 #endif
739 #ifdef JP
740 if (flags3 & RF3_AMBERITE)        hook_c_roff(TERM_VIOLET, "¥¢¥ó¥Ð¡¼¤Î²¦Â²¤Î");
741 #else
742                 if (flags3 & RF3_AMBERITE)        hooked_roff(" Amberite");
743 #endif
744
745
746         if ((flags3 & (RF3_DRAGON | RF3_DEMON | RF3_GIANT | RF3_TROLL | RF3_ORC)) || (flags2 & (RF2_QUANTUM | RF2_HUMAN)))
747         {
748         /* Describe the "race" */
749 #ifdef JP
750      if (flags3 & RF3_DRAGON)   hook_c_roff(TERM_ORANGE, "¥É¥é¥´¥ó");
751 #else
752                      if (flags3 & RF3_DRAGON)   hooked_roff(" dragon");
753 #endif
754
755 #ifdef JP
756 if (flags3 & RF3_DEMON)    hook_c_roff(TERM_VIOLET, "¥Ç¡¼¥â¥ó");
757 #else
758                 if (flags3 & RF3_DEMON)    hooked_roff(" demon");
759 #endif
760
761 #ifdef JP
762 if (flags3 & RF3_GIANT)    hook_c_roff(TERM_L_UMBER, "¥¸¥ã¥¤¥¢¥ó¥È");
763 #else
764                 if (flags3 & RF3_GIANT)    hooked_roff(" giant");
765 #endif
766
767 #ifdef JP
768 if (flags3 & RF3_TROLL)    hook_c_roff(TERM_BLUE, "¥È¥í¥ë");
769 #else
770                 if (flags3 & RF3_TROLL)    hooked_roff(" troll");
771 #endif
772
773 #ifdef JP
774 if (flags3 & RF3_ORC)      hook_c_roff(TERM_UMBER, "¥ª¡¼¥¯");
775 #else
776                 if (flags3 & RF3_ORC)      hooked_roff(" orc");
777 #endif
778
779 #ifdef JP
780 if (flags2 & RF2_HUMAN) hook_c_roff(TERM_L_WHITE, "¿Í´Ö");
781 #else
782                 if (flags2 & RF2_HUMAN) hooked_roff(" Human");
783 #endif
784
785 #ifdef JP
786 if (flags2 & RF2_QUANTUM)  hook_c_roff(TERM_VIOLET, "ÎÌ»ÒÀ¸Êª");
787 #else
788                 if (flags2 & RF2_QUANTUM)  hooked_roff(" quantum creature");
789 #endif
790
791         }
792 #ifdef JP
793 else                            hooked_roff("¥â¥ó¥¹¥¿¡¼");
794 #else
795                 else                            hooked_roff(" creature");
796 #endif
797
798
799 #ifdef JP
800                 hooked_roff("¤òÅݤ¹¤³¤È¤Ï");
801 #endif
802                 /* Group some variables */
803                 if (TRUE)
804                 {
805                         long i, j;
806
807 #ifdef JP
808                         i = p_ptr->lev;
809                         hooked_roff(format(" %lu ¥ì¥Ù¥ë¤Î¥­¥ã¥é¥¯¥¿¤Ë¤È¤Ã¤Æ", (long)i));
810
811                         i = (long)r_ptr->mexp * r_ptr->level / (p_ptr->max_plv+2);
812                         j = ((((long)r_ptr->mexp * r_ptr->level % (p_ptr->max_plv+2)) *
813                                (long)1000 / (p_ptr->max_plv+2) + 5) / 10);
814
815                         hooked_roff(format(" Ìó%ld.%02ld ¥Ý¥¤¥ó¥È¤Î·Ð¸³¤È¤Ê¤ë¡£",
816                                 (long)i, (long)j ));
817 #else
818                         /* calculate the integer exp part */
819                         i = (long)r_ptr->mexp * r_ptr->level / (p_ptr->max_plv+2);
820
821                         /* calculate the fractional exp part scaled by 100, */
822                         /* must use long arithmetic to avoid overflow  */
823                         j = ((((long)r_ptr->mexp * r_ptr->level % (p_ptr->max_plv+2)) *
824                                (long)1000 / (p_ptr->max_plv+2) + 5) / 10);
825
826                         /* Mention the experience */
827                         hooked_roff(format(" is worth about %ld.%02ld point%s",
828                                     (long)i, (long)j,
829                                     (((i == 1) && (j == 0)) ? "" : "s")));
830
831                         /* Take account of annoying English */
832                         p = "th";
833                         i = p_ptr->lev % 10;
834                         if ((p_ptr->lev / 10) == 1) /* nothing */;
835                         else if (i == 1) p = "st";
836                         else if (i == 2) p = "nd";
837                         else if (i == 3) p = "rd";
838
839                         /* Take account of "leading vowels" in numbers */
840                         q = "";
841                         i = p_ptr->lev;
842                         if ((i == 8) || (i == 11) || (i == 18)) q = "n";
843
844                         /* Mention the dependance on the player's level */
845                         hooked_roff(format(" for a%s %lu%s level character.  ",
846                                     q, (long)i, p));
847 #endif
848
849                 }
850         }
851
852         if ((flags2 & RF2_AURA_FIRE) && (flags2 & RF2_AURA_ELEC) && (flags3 & RF3_AURA_COLD))
853         {
854 #ifdef JP
855 hook_c_roff(TERM_VIOLET, format("%^s¤Ï±ê¤Èɹ¤È¥¹¥Ñ¡¼¥¯¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
856 #else
857                 hooked_roff(format("%^s is surrounded by flames and electricity.  ", wd_he[msex]));
858 #endif
859
860         }
861         else if ((flags2 & RF2_AURA_FIRE) && (flags2 & RF2_AURA_ELEC))
862         {
863 #ifdef JP
864 hook_c_roff(TERM_L_RED, format("%^s¤Ï±ê¤È¥¹¥Ñ¡¼¥¯¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
865 #else
866                 hooked_roff(format("%^s is surrounded by flames and electricity.  ", wd_he[msex]));
867 #endif
868
869         }
870         else if ((flags2 & RF2_AURA_FIRE) && (flags3 & RF3_AURA_COLD))
871         {
872 #ifdef JP
873 hook_c_roff(TERM_BLUE, format("%^s¤Ï±ê¤Èɹ¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
874 #else
875                 hooked_roff(format("%^s is surrounded by flames and electricity.  ", wd_he[msex]));
876 #endif
877
878         }
879         else if ((flags3 & RF3_AURA_COLD) && (flags2 & RF2_AURA_ELEC))
880         {
881 #ifdef JP
882 hook_c_roff(TERM_L_GREEN, format("%^s¤Ïɹ¤È¥¹¥Ñ¡¼¥¯¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
883 #else
884                 hooked_roff(format("%^s is surrounded by ice and electricity.  ", wd_he[msex]));
885 #endif
886
887         }
888         else if (flags2 & RF2_AURA_FIRE)
889         {
890 #ifdef JP
891 hook_c_roff(TERM_RED, format("%^s¤Ï±ê¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
892 #else
893                 hooked_roff(format("%^s is surrounded by flames.  ", wd_he[msex]));
894 #endif
895
896         }
897         else if (flags3 & RF3_AURA_COLD)
898         {
899 #ifdef JP
900 hook_c_roff(TERM_BLUE, format("%^s¤Ïɹ¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
901 #else
902                 hooked_roff(format("%^s is surrounded by ice.  ", wd_he[msex]));
903 #endif
904
905         }
906         else if (flags2 & RF2_AURA_ELEC)
907         {
908 #ifdef JP
909 hook_c_roff(TERM_L_BLUE, format("%^s¤Ï¥¹¥Ñ¡¼¥¯¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
910 #else
911                 hooked_roff(format("%^s is surrounded by electricity.  ", wd_he[msex]));
912 #endif
913
914         }
915
916         if (flags2 & RF2_REFLECTING)
917         {
918 #ifdef JP
919 hooked_roff(format("%^s¤ÏÌð¤Î¼öʸ¤òÄ·¤ÍÊÖ¤¹¡£", wd_he[msex]));
920 #else
921                 hooked_roff(format("%^s reflects bolt spells.  ", wd_he[msex]));
922 #endif
923
924         }
925
926         /* Describe escorts */
927         if ((flags1 & RF1_ESCORT) || (flags1 & RF1_ESCORTS))
928         {
929 #ifdef JP
930                 hooked_roff(format("%^s¤ÏÄ̾ï¸î±Ò¤òȼ¤Ã¤Æ¸½¤ì¤ë¡£",
931 #else
932                 hooked_roff(format("%^s usually appears with escorts.  ",
933 #endif
934
935                             wd_he[msex]));
936         }
937
938         /* Describe friends */
939         else if (flags1 & RF1_FRIENDS)
940         {
941 #ifdef JP
942                 hooked_roff(format("%^s¤ÏÄ̾クÃĤǸ½¤ì¤ë¡£",
943 #else
944                 hooked_roff(format("%^s usually appears in groups.  ",
945 #endif
946
947                             wd_he[msex]));
948         }
949
950
951         /* Collect inate attacks */
952         vn = 0;
953 #ifdef JP
954         if (flags4 & RF4_SHRIEK)  {vp[vn] = "ÈáÌĤǽõ¤±¤òµá¤á¤ë";color[vn++] = TERM_L_WHITE;}
955 #else
956         if (flags4 & RF4_SHRIEK)  {vp[vn] = "shriek for help";color[vn++] = TERM_L_WHITE;}
957 #endif
958
959 #ifdef JP
960         if (flags4 & RF4_ROCKET)  {vp[vn] = "¥í¥±¥Ã¥È¤òȯ¼Í¤¹¤ë";color[vn++] = TERM_UMBER;}
961 #else
962         if (flags4 & RF4_ROCKET)  {vp[vn] = "shoot a rocket";color[vn++] = TERM_UMBER;}
963 #endif
964
965 #ifdef JP
966         if (flags4 & RF4_SHOOT) {vp[vn] = "¼Í·â¤ò¤¹¤ë";color[vn++] = TERM_UMBER;}
967 #else
968         if (flags4 & RF4_SHOOT) {vp[vn] = "fire an arrow";color[vn++] = TERM_UMBER;}
969 #endif
970
971 #ifdef JP
972         if (flags6 & (RF6_SPECIAL)) {vp[vn] = "ÆÃÊ̤ʹÔÆ°¤ò¤¹¤ë";color[vn++] = TERM_VIOLET;}
973 #else
974         if (flags6 & (RF6_SPECIAL)) {vp[vn] = "do something";color[vn++] = TERM_VIOLET;}
975 #endif
976
977         /* Describe inate attacks */
978         if (vn)
979         {
980                 /* Intro */
981 #ifdef JP
982                 hooked_roff(format("%^s¤Ï", wd_he[msex]));
983 #else
984                 hooked_roff(format("%^s", wd_he[msex]));
985 #endif
986
987
988                 /* Scan */
989                 for (n = 0; n < vn; n++)
990                 {
991 #ifdef JP
992                         if(n!=vn-1){
993                           jverb(vp[n],jverb_buf,JVERB_OR);
994                           hook_c_roff(color[n], jverb_buf);
995                           hook_c_roff(color[n], "¤ê¡¢");
996                         }
997                         else  hook_c_roff(color[n], vp[n]);
998 #else
999                         /* Intro */
1000                         if (n == 0) hooked_roff(" may ");
1001                         else if (n < vn-1) hooked_roff(", ");
1002                         else hooked_roff(" or ");
1003
1004                         /* Dump */
1005                         hooked_roff(vp[n]);
1006 #endif
1007
1008                 }
1009
1010                 /* End */
1011 #ifdef JP
1012                 hooked_roff("¤³¤È¤¬¤¢¤ë¡£");
1013 #else
1014                 hooked_roff(".  ");
1015 #endif
1016
1017         }
1018
1019
1020         /* Collect breaths */
1021         vn = 0;
1022 #ifdef JP
1023         if (flags4 & (RF4_BR_ACID))             {vp[vn] = "»À";color[vn++] = TERM_GREEN;}
1024 #else
1025         if (flags4 & (RF4_BR_ACID))             {vp[vn] = "acid";color[vn++] = TERM_GREEN;}
1026 #endif
1027
1028 #ifdef JP
1029         if (flags4 & (RF4_BR_ELEC))             {vp[vn] = "°ðºÊ";color[vn++] = TERM_BLUE;}
1030 #else
1031         if (flags4 & (RF4_BR_ELEC))             {vp[vn] = "lightning";color[vn++] = TERM_BLUE;}
1032 #endif
1033
1034 #ifdef JP
1035         if (flags4 & (RF4_BR_FIRE))             {vp[vn] = "²Ð±ê";color[vn++] = TERM_RED;}
1036 #else
1037         if (flags4 & (RF4_BR_FIRE))             {vp[vn] = "fire";color[vn++] = TERM_RED;}
1038 #endif
1039
1040 #ifdef JP
1041         if (flags4 & (RF4_BR_COLD))             {vp[vn] = "Î䵤";color[vn++] = TERM_L_WHITE;}
1042 #else
1043         if (flags4 & (RF4_BR_COLD))             {vp[vn] = "frost";color[vn++] = TERM_L_WHITE;}
1044 #endif
1045
1046 #ifdef JP
1047         if (flags4 & (RF4_BR_POIS))             {vp[vn] = "ÆÇ";color[vn++] = TERM_L_GREEN;}
1048 #else
1049         if (flags4 & (RF4_BR_POIS))             {vp[vn] = "poison";color[vn++] = TERM_L_GREEN;}
1050 #endif
1051
1052 #ifdef JP
1053         if (flags4 & (RF4_BR_NETH))             {vp[vn] = "ÃϹö";color[vn++] = TERM_L_DARK;}
1054 #else
1055         if (flags4 & (RF4_BR_NETH))             {vp[vn] = "nether";color[vn++] = TERM_L_DARK;}
1056 #endif
1057
1058 #ifdef JP
1059         if (flags4 & (RF4_BR_LITE))             {vp[vn] = "Á®¸÷";color[vn++] = TERM_YELLOW;}
1060 #else
1061         if (flags4 & (RF4_BR_LITE))             {vp[vn] = "light";color[vn++] = TERM_YELLOW;}
1062 #endif
1063
1064 #ifdef JP
1065         if (flags4 & (RF4_BR_DARK))             {vp[vn] = "°Å¹õ";color[vn++] = TERM_L_DARK;}
1066 #else
1067         if (flags4 & (RF4_BR_DARK))             {vp[vn] = "darkness";color[vn++] = TERM_L_DARK;}
1068 #endif
1069
1070 #ifdef JP
1071         if (flags4 & (RF4_BR_CONF))             {vp[vn] = "º®Íð";color[vn++] = TERM_L_UMBER;}
1072 #else
1073         if (flags4 & (RF4_BR_CONF))             {vp[vn] = "confusion";color[vn++] = TERM_L_UMBER;}
1074 #endif
1075
1076 #ifdef JP
1077         if (flags4 & (RF4_BR_SOUN))             {vp[vn] = "¹ì²»";color[vn++] = TERM_ORANGE;}
1078 #else
1079         if (flags4 & (RF4_BR_SOUN))             {vp[vn] = "sound";color[vn++] = TERM_ORANGE;}
1080 #endif
1081
1082 #ifdef JP
1083         if (flags4 & (RF4_BR_CHAO))             {vp[vn] = "¥«¥ª¥¹";color[vn++] = TERM_VIOLET;}
1084 #else
1085         if (flags4 & (RF4_BR_CHAO))             {vp[vn] = "chaos";color[vn++] = TERM_VIOLET;}
1086 #endif
1087
1088 #ifdef JP
1089         if (flags4 & (RF4_BR_DISE))             {vp[vn] = "Îô²½";color[vn++] = TERM_VIOLET;}
1090 #else
1091         if (flags4 & (RF4_BR_DISE))             {vp[vn] = "disenchantment";color[vn++] = TERM_VIOLET;}
1092 #endif
1093
1094 #ifdef JP
1095         if (flags4 & (RF4_BR_NEXU))             {vp[vn] = "°ø²Ìº®Íð";color[vn++] = TERM_VIOLET;}
1096 #else
1097         if (flags4 & (RF4_BR_NEXU))             {vp[vn] = "nexus";color[vn++] = TERM_VIOLET;}
1098 #endif
1099
1100 #ifdef JP
1101         if (flags4 & (RF4_BR_TIME))             {vp[vn] = "»þ´ÖµÕž";color[vn++] = TERM_L_BLUE;}
1102 #else
1103         if (flags4 & (RF4_BR_TIME))             {vp[vn] = "time";color[vn++] = TERM_L_BLUE;}
1104 #endif
1105
1106 #ifdef JP
1107         if (flags4 & (RF4_BR_INER))             {vp[vn] = "ÃÙÆß";color[vn++] = TERM_SLATE;}
1108 #else
1109         if (flags4 & (RF4_BR_INER))             {vp[vn] = "inertia";color[vn++] = TERM_SLATE;}
1110 #endif
1111
1112 #ifdef JP
1113         if (flags4 & (RF4_BR_GRAV))             {vp[vn] = "½ÅÎÏ";color[vn++] = TERM_SLATE;}
1114 #else
1115         if (flags4 & (RF4_BR_GRAV))             {vp[vn] = "gravity";color[vn++] = TERM_SLATE;}
1116 #endif
1117
1118 #ifdef JP
1119         if (flags4 & (RF4_BR_SHAR))             {vp[vn] = "ÇËÊÒ";color[vn++] = TERM_L_UMBER;}
1120 #else
1121         if (flags4 & (RF4_BR_SHAR))             {vp[vn] = "shards";color[vn++] = TERM_L_UMBER;}
1122 #endif
1123
1124 #ifdef JP
1125         if (flags4 & (RF4_BR_PLAS))             {vp[vn] = "¥×¥é¥º¥Þ";color[vn++] = TERM_L_RED;}
1126 #else
1127         if (flags4 & (RF4_BR_PLAS))             {vp[vn] = "plasma";color[vn++] = TERM_L_RED;}
1128 #endif
1129
1130 #ifdef JP
1131         if (flags4 & (RF4_BR_WALL))             {vp[vn] = "¥Õ¥©¡¼¥¹";color[vn++] = TERM_UMBER;}
1132 #else
1133         if (flags4 & (RF4_BR_WALL))             {vp[vn] = "force";color[vn++] = TERM_UMBER;}
1134 #endif
1135
1136 #ifdef JP
1137         if (flags4 & (RF4_BR_MANA))             {vp[vn] = "ËâÎÏ";color[vn++] = TERM_L_BLUE;}
1138 #else
1139         if (flags4 & (RF4_BR_MANA))             {vp[vn] = "mana";color[vn++] = TERM_L_BLUE;}
1140 #endif
1141
1142 #ifdef JP
1143         if (flags4 & (RF4_BR_NUKE))             {vp[vn] = "Êü¼ÍÀ­ÇÑ´þʪ";color[vn++] = TERM_L_GREEN;}
1144 #else
1145         if (flags4 & (RF4_BR_NUKE))             {vp[vn] = "toxic waste";color[vn++] = TERM_L_GREEN;}
1146 #endif
1147
1148 #ifdef JP
1149         if (flags4 & (RF4_BR_DISI))             {vp[vn] = "ʬ²ò";color[vn++] = TERM_SLATE;}
1150 #else
1151         if (flags4 & (RF4_BR_DISI))             {vp[vn] = "disintegration";color[vn++] = TERM_SLATE;}
1152 #endif
1153
1154
1155         /* Describe breaths */
1156         if (vn)
1157         {
1158                 /* Note breath */
1159                 breath = TRUE;
1160
1161                 /* Intro */
1162 #ifdef JP
1163                 hooked_roff(format("%^s¤Ï", wd_he[msex]));
1164 #else
1165                 hooked_roff(format("%^s", wd_he[msex]));
1166 #endif
1167
1168
1169                 /* Scan */
1170                 for (n = 0; n < vn; n++)
1171                 {
1172                         /* Intro */
1173 #ifdef JP
1174                         if ( n != 0 ) hooked_roff("¤ä");
1175 #else
1176                         if (n == 0) hooked_roff(" may breathe ");
1177                         else if (n < vn-1) hooked_roff(", ");
1178                         else hooked_roff(" or ");
1179 #endif
1180
1181
1182                         /* Dump */
1183                         hook_c_roff(color[n], vp[n]);
1184                 }
1185 #ifdef JP
1186                 hooked_roff("¤Î¥Ö¥ì¥¹¤òÅǤ¯¤³¤È¤¬¤¢¤ë");
1187 #endif
1188         }
1189
1190
1191         /* Collect spells */
1192         vn = 0;
1193 #ifdef JP
1194 if (flags5 & (RF5_BA_ACID))         {vp[vn] = "¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë";color[vn++] = TERM_GREEN;}
1195 #else
1196         if (flags5 & (RF5_BA_ACID))         {vp[vn] = "produce acid balls";color[vn++] = TERM_GREEN;}
1197 #endif
1198
1199 #ifdef JP
1200 if (flags5 & (RF5_BA_ELEC))         {vp[vn] = "¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë";color[vn++] = TERM_BLUE;}
1201 #else
1202         if (flags5 & (RF5_BA_ELEC))         {vp[vn] = "produce lightning balls";color[vn++] = TERM_BLUE;}
1203 #endif
1204
1205 #ifdef JP
1206 if (flags5 & (RF5_BA_FIRE))         {vp[vn] = "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë";color[vn++] = TERM_RED;}
1207 #else
1208         if (flags5 & (RF5_BA_FIRE))         {vp[vn] = "produce fire balls";color[vn++] = TERM_RED;}
1209 #endif
1210
1211 #ifdef JP
1212 if (flags5 & (RF5_BA_COLD))         {vp[vn] = "¥¢¥¤¥¹¡¦¥Ü¡¼¥ë";color[vn++] = TERM_L_WHITE;}
1213 #else
1214         if (flags5 & (RF5_BA_COLD))         {vp[vn] = "produce frost balls";color[vn++] = TERM_L_WHITE;}
1215 #endif
1216
1217 #ifdef JP
1218 if (flags5 & (RF5_BA_POIS))         {vp[vn] = "°­½­±À";color[vn++] = TERM_L_GREEN;}
1219 #else
1220         if (flags5 & (RF5_BA_POIS))         {vp[vn] = "produce poison balls";color[vn++] = TERM_L_GREEN;}
1221 #endif
1222
1223 #ifdef JP
1224 if (flags5 & (RF5_BA_NETH))         {vp[vn] = "ÃϹöµå";color[vn++] = TERM_L_DARK;}
1225 #else
1226         if (flags5 & (RF5_BA_NETH))         {vp[vn] = "produce nether balls";color[vn++] = TERM_L_DARK;}
1227 #endif
1228
1229 #ifdef JP
1230 if (flags5 & (RF5_BA_WATE))         {vp[vn] = "¥¦¥©¡¼¥¿¡¼¡¦¥Ü¡¼¥ë";color[vn++] = TERM_BLUE;}
1231 #else
1232         if (flags5 & (RF5_BA_WATE))         {vp[vn] = "produce water balls";color[vn++] = TERM_BLUE;}
1233 #endif
1234
1235 #ifdef JP
1236 if (flags4 & (RF4_BA_NUKE))         {vp[vn] = "Êü¼Íǽµå";color[vn++] = TERM_L_GREEN;}
1237 #else
1238         if (flags4 & (RF4_BA_NUKE))         {vp[vn] = "produce balls of radiation";color[vn++] = TERM_L_GREEN;}
1239 #endif
1240
1241 #ifdef JP
1242 if (flags5 & (RF5_BA_MANA))         {vp[vn] = "ËâÎϤÎÍò";color[vn++] = TERM_L_BLUE;}
1243 #else
1244         if (flags5 & (RF5_BA_MANA))         {vp[vn] = "invoke mana storms";color[vn++] = TERM_L_BLUE;}
1245 #endif
1246
1247 #ifdef JP
1248 if (flags5 & (RF5_BA_DARK))         {vp[vn] = "°Å¹õ¤ÎÍò";color[vn++] = TERM_L_DARK;}
1249 #else
1250         if (flags5 & (RF5_BA_DARK))         {vp[vn] = "invoke darkness storms";color[vn++] = TERM_L_DARK;}
1251 #endif
1252
1253 #ifdef JP
1254 if (flags5 & (RF5_BA_LITE))         {vp[vn] = "¥¹¥¿¡¼¥Ð¡¼¥¹¥È";color[vn++] = TERM_YELLOW;}
1255 #else
1256         if (flags5 & (RF5_BA_LITE))         {vp[vn] = "invoke starburst";color[vn++] = TERM_YELLOW;}
1257 #endif
1258
1259 #ifdef JP
1260 if (flags4 & (RF4_BA_CHAO))         {vp[vn] = "½ã¥í¥°¥ë¥¹";color[vn++] = TERM_VIOLET;}
1261 #else
1262         if (flags4 & (RF4_BA_CHAO))         {vp[vn] = "invoke raw Logrus";color[vn++] = TERM_VIOLET;}
1263 #endif
1264
1265 #ifdef JP
1266 if (flags6 & (RF6_HAND_DOOM))       {vp[vn] = "ÇËÌǤμê";color[vn++] = TERM_VIOLET;}
1267 #else
1268         if (flags6 & (RF6_HAND_DOOM))       {vp[vn] = "invoke the Hand of Doom";color[vn++] = TERM_VIOLET;}
1269 #endif
1270
1271 #ifdef JP
1272 if (flags6 & (RF6_PSY_SPEAR))            {vp[vn] = "¸÷¤Î·õ";color[vn++] = TERM_YELLOW;}
1273 #else
1274         if (flags6 & (RF6_PSY_SPEAR))            {vp[vn] = "psycho-spear";color[vn++] = TERM_YELLOW;}
1275 #endif
1276
1277 #ifdef JP
1278 if (flags5 & (RF5_DRAIN_MANA))      {vp[vn] = "ËâÎϵۼý";color[vn++] = TERM_SLATE;}
1279 #else
1280         if (flags5 & (RF5_DRAIN_MANA))      {vp[vn] = "drain mana";color[vn++] = TERM_SLATE;}
1281 #endif
1282
1283 #ifdef JP
1284 if (flags5 & (RF5_MIND_BLAST))      {vp[vn] = "Àº¿À¹¶·â";color[vn++] = TERM_L_RED;}
1285 #else
1286         if (flags5 & (RF5_MIND_BLAST))      {vp[vn] = "cause mind blasting";color[vn++] = TERM_L_RED;}
1287 #endif
1288
1289 #ifdef JP
1290 if (flags5 & (RF5_BRAIN_SMASH))     {vp[vn] = "Ǿ¹¶·â";color[vn++] = TERM_RED;}
1291 #else
1292         if (flags5 & (RF5_BRAIN_SMASH))     {vp[vn] = "cause brain smashing";color[vn++] = TERM_RED;}
1293 #endif
1294
1295 #ifdef JP
1296 if (flags5 & (RF5_CAUSE_1))         {vp[vn] = "·Ú½ý¡Ü¼ö¤¤";color[vn++] = TERM_L_WHITE;}
1297 #else
1298         if (flags5 & (RF5_CAUSE_1))         {vp[vn] = "cause light wounds and cursing";color[vn++] = TERM_L_WHITE;}
1299 #endif
1300
1301 #ifdef JP
1302 if (flags5 & (RF5_CAUSE_2))         {vp[vn] = "½Å½ý¡Ü¼ö¤¤";color[vn++] = TERM_L_WHITE;}
1303 #else
1304         if (flags5 & (RF5_CAUSE_2))         {vp[vn] = "cause serious wounds and cursing";color[vn++] = TERM_L_WHITE;}
1305 #endif
1306
1307 #ifdef JP
1308 if (flags5 & (RF5_CAUSE_3))         {vp[vn] = "Ã×Ì¿½ý¡Ü¼ö¤¤";color[vn++] = TERM_L_WHITE;}
1309 #else
1310         if (flags5 & (RF5_CAUSE_3))         {vp[vn] = "cause critical wounds and cursing";color[vn++] = TERM_L_WHITE;}
1311 #endif
1312
1313 #ifdef JP
1314 if (flags5 & (RF5_CAUSE_4))         {vp[vn] = "È빦¤òÆͤ¯";color[vn++] = TERM_L_WHITE;}
1315 #else
1316         if (flags5 & (RF5_CAUSE_4))         {vp[vn] = "cause mortal wounds";color[vn++] = TERM_L_WHITE;}
1317 #endif
1318
1319 #ifdef JP
1320 if (flags5 & (RF5_BO_ACID))         {vp[vn] = "¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È";color[vn++] = TERM_GREEN;}
1321 #else
1322         if (flags5 & (RF5_BO_ACID))         {vp[vn] = "produce acid bolts";color[vn++] = TERM_GREEN;}
1323 #endif
1324
1325 #ifdef JP
1326 if (flags5 & (RF5_BO_ELEC))         {vp[vn] = "¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È";color[vn++] = TERM_BLUE;}
1327 #else
1328         if (flags5 & (RF5_BO_ELEC))         {vp[vn] = "produce lightning bolts";color[vn++] = TERM_BLUE;}
1329 #endif
1330
1331 #ifdef JP
1332 if (flags5 & (RF5_BO_FIRE))         {vp[vn] = "¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È";color[vn++] = TERM_RED;}
1333 #else
1334         if (flags5 & (RF5_BO_FIRE))         {vp[vn] = "produce fire bolts";color[vn++] = TERM_RED;}
1335 #endif
1336
1337 #ifdef JP
1338 if (flags5 & (RF5_BO_COLD))         {vp[vn] = "¥¢¥¤¥¹¡¦¥Ü¥ë¥È";color[vn++] = TERM_L_WHITE;}
1339 #else
1340         if (flags5 & (RF5_BO_COLD))         {vp[vn] = "produce frost bolts";color[vn++] = TERM_L_WHITE;}
1341 #endif
1342
1343 #ifdef JP
1344 if (flags5 & (RF5_BO_NETH))         {vp[vn] = "ÃϹö¤ÎÌð";color[vn++] = TERM_L_DARK;}
1345 #else
1346         if (flags5 & (RF5_BO_NETH))         {vp[vn] = "produce nether bolts";color[vn++] = TERM_L_DARK;}
1347 #endif
1348
1349 #ifdef JP
1350 if (flags5 & (RF5_BO_WATE))         {vp[vn] = "¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È";color[vn++] = TERM_BLUE;}
1351 #else
1352         if (flags5 & (RF5_BO_WATE))         {vp[vn] = "produce water bolts";color[vn++] = TERM_BLUE;}
1353 #endif
1354
1355 #ifdef JP
1356 if (flags5 & (RF5_BO_MANA))         {vp[vn] = "ËâÎϤÎÌð";color[vn++] = TERM_L_BLUE;}
1357 #else
1358         if (flags5 & (RF5_BO_MANA))         {vp[vn] = "produce mana bolts";color[vn++] = TERM_L_BLUE;}
1359 #endif
1360
1361 #ifdef JP
1362 if (flags5 & (RF5_BO_PLAS))         {vp[vn] = "¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È";color[vn++] = TERM_L_RED;}
1363 #else
1364         if (flags5 & (RF5_BO_PLAS))         {vp[vn] = "produce plasma bolts";color[vn++] = TERM_L_RED;}
1365 #endif
1366
1367 #ifdef JP
1368 if (flags5 & (RF5_BO_ICEE))         {vp[vn] = "¶Ë´¨¤ÎÌð";color[vn++] = TERM_WHITE;}
1369 #else
1370         if (flags5 & (RF5_BO_ICEE))         {vp[vn] = "produce ice bolts";color[vn++] = TERM_WHITE;}
1371 #endif
1372
1373 #ifdef JP
1374 if (flags5 & (RF5_MISSILE))         {vp[vn] = "¥Þ¥¸¥Ã¥¯¥ß¥µ¥¤¥ë";color[vn++] = TERM_SLATE;}
1375 #else
1376         if (flags5 & (RF5_MISSILE))         {vp[vn] = "produce magic missiles";color[vn++] = TERM_SLATE;}
1377 #endif
1378
1379 #ifdef JP
1380 if (flags5 & (RF5_SCARE))           {vp[vn] = "¶²ÉÝ";color[vn++] = TERM_SLATE;}
1381 #else
1382         if (flags5 & (RF5_SCARE))           {vp[vn] = "terrify";color[vn++] = TERM_SLATE;}
1383 #endif
1384
1385 #ifdef JP
1386 if (flags5 & (RF5_BLIND))           {vp[vn] = "Ìܤ¯¤é¤Þ¤·";color[vn++] = TERM_L_DARK;}
1387 #else
1388         if (flags5 & (RF5_BLIND))           {vp[vn] = "blind";color[vn++] = TERM_L_DARK;}
1389 #endif
1390
1391 #ifdef JP
1392 if (flags5 & (RF5_CONF))            {vp[vn] = "º®Íð";color[vn++] = TERM_L_UMBER;}
1393 #else
1394         if (flags5 & (RF5_CONF))            {vp[vn] = "confuse";color[vn++] = TERM_L_UMBER;}
1395 #endif
1396
1397 #ifdef JP
1398 if (flags5 & (RF5_SLOW))            {vp[vn] = "¸ºÂ®";color[vn++] = TERM_UMBER;}
1399 #else
1400         if (flags5 & (RF5_SLOW))            {vp[vn] = "slow";color[vn++] = TERM_UMBER;}
1401 #endif
1402
1403 #ifdef JP
1404 if (flags5 & (RF5_HOLD))            {vp[vn] = "Ëãáã";color[vn++] = TERM_RED;}
1405 #else
1406         if (flags5 & (RF5_HOLD))            {vp[vn] = "paralyze";color[vn++] = TERM_RED;}
1407 #endif
1408
1409 #ifdef JP
1410 if (flags6 & (RF6_HASTE))           {vp[vn] = "²Ã®";color[vn++] = TERM_L_GREEN;}
1411 #else
1412         if (flags6 & (RF6_HASTE))           {vp[vn] = "haste-self";color[vn++] = TERM_L_GREEN;}
1413 #endif
1414
1415 #ifdef JP
1416 if (flags6 & (RF6_HEAL))            {vp[vn] = "¼£Ìþ";color[vn++] = TERM_WHITE;}
1417 #else
1418         if (flags6 & (RF6_HEAL))            {vp[vn] = "heal-self";color[vn++] = TERM_WHITE;}
1419 #endif
1420
1421 #ifdef JP
1422         if (flags6 & (RF6_INVULNER))        {vp[vn] = "̵Ũ²½";color[vn++] = TERM_WHITE;}
1423 #else
1424         if (flags6 & (RF6_INVULNER))        {vp[vn] = "make invulnerable";color[vn++] = TERM_WHITE;}
1425 #endif
1426
1427 #ifdef JP
1428 if (flags4 & RF4_DISPEL)    {vp[vn] = "ËâÎϾõî";color[vn++] = TERM_L_WHITE;}
1429 #else
1430         if (flags4 & RF4_DISPEL)    {vp[vn] = "dispel-magic";color[vn++] = TERM_L_WHITE;}
1431 #endif
1432
1433 #ifdef JP
1434 if (flags6 & (RF6_BLINK))           {vp[vn] = "¥·¥ç¡¼¥È¥Æ¥ì¥Ý¡¼¥È";color[vn++] = TERM_UMBER;}
1435 #else
1436         if (flags6 & (RF6_BLINK))           {vp[vn] = "blink-self";color[vn++] = TERM_UMBER;}
1437 #endif
1438
1439 #ifdef JP
1440 if (flags6 & (RF6_TPORT))           {vp[vn] = "¥Æ¥ì¥Ý¡¼¥È";color[vn++] = TERM_ORANGE;}
1441 #else
1442         if (flags6 & (RF6_TPORT))           {vp[vn] = "teleport-self";color[vn++] = TERM_ORANGE;}
1443 #endif
1444
1445 #ifdef JP
1446 if (flags6 & (RF6_WORLD))            {vp[vn] = "»þ¤ò»ß¤á¤ë";color[vn++] = TERM_L_BLUE;}
1447 #else
1448         if (flags6 & (RF6_WORLD))            {vp[vn] = "stop the time";color[vn++] = TERM_L_BLUE;}
1449 #endif
1450
1451 #ifdef JP
1452 if (flags6 & (RF6_TELE_TO))         {vp[vn] = "¥Æ¥ì¥Ý¡¼¥È¥Ð¥Ã¥¯";color[vn++] = TERM_L_UMBER;}
1453 #else
1454         if (flags6 & (RF6_TELE_TO))         {vp[vn] = "teleport to";color[vn++] = TERM_L_UMBER;}
1455 #endif
1456
1457 #ifdef JP
1458 if (flags6 & (RF6_TELE_AWAY))       {vp[vn] = "¥Æ¥ì¥Ý¡¼¥È¥¢¥¦¥§¥¤";color[vn++] = TERM_UMBER;}
1459 #else
1460         if (flags6 & (RF6_TELE_AWAY))       {vp[vn] = "teleport away";color[vn++] = TERM_UMBER;}
1461 #endif
1462
1463 #ifdef JP
1464 if (flags6 & (RF6_TELE_LEVEL))      {vp[vn] = "¥Æ¥ì¥Ý¡¼¥È¡¦¥ì¥Ù¥ë";color[vn++] = TERM_ORANGE;}
1465 #else
1466         if (flags6 & (RF6_TELE_LEVEL))      {vp[vn] = "teleport level";color[vn++] = TERM_ORANGE;}
1467 #endif
1468
1469 #ifdef JP
1470 if (flags6 & (RF6_DARKNESS))        {if ((p_ptr->pclass != CLASS_NINJA) || (flags3 & (RF3_UNDEAD | RF3_HURT_LITE))) {vp[vn] =  "°Å°Ç";color[vn++] = TERM_L_DARK;} else { vp[vn] = "Á®¸÷";color[vn++] = TERM_YELLOW;}}
1471 #else
1472 if (flags6 & (RF6_DARKNESS))        {vp[vn] = ((p_ptr->pclass != CLASS_NINJA) || (flags3 & (RF3_UNDEAD | RF3_HURT_LITE))) ? "create darkness" : "create light";color[vn++] = TERM_L_DARK;}
1473 #endif
1474
1475 #ifdef JP
1476 if (flags6 & (RF6_TRAPS))           {vp[vn] = "¥È¥é¥Ã¥×";color[vn++] = TERM_BLUE;}
1477 #else
1478         if (flags6 & (RF6_TRAPS))           {vp[vn] = "create traps";color[vn++] = TERM_BLUE;}
1479 #endif
1480
1481 #ifdef JP
1482 if (flags6 & (RF6_FORGET))          {vp[vn] = "µ­²±¾Ãµî";color[vn++] = TERM_BLUE;}
1483 #else
1484         if (flags6 & (RF6_FORGET))          {vp[vn] = "cause amnesia";color[vn++] = TERM_BLUE;}
1485 #endif
1486
1487 #ifdef JP
1488 if (flags6 & (RF6_RAISE_DEAD))      {vp[vn] = "»à¼ÔÉü³è";color[vn++] = TERM_RED;}
1489 #else
1490         if (flags6 & (RF6_RAISE_DEAD))      {vp[vn] = "raise dead";color[vn++] = TERM_RED;}
1491 #endif
1492
1493 #ifdef JP
1494 if (flags6 & (RF6_S_MONSTER))       {vp[vn] = "¥â¥ó¥¹¥¿¡¼°ìÂξ¤´­";color[vn++] = TERM_SLATE;}
1495 #else
1496         if (flags6 & (RF6_S_MONSTER))       {vp[vn] = "summon a monster";color[vn++] = TERM_SLATE;}
1497 #endif
1498
1499 #ifdef JP
1500 if (flags6 & (RF6_S_MONSTERS))      {vp[vn] = "¥â¥ó¥¹¥¿¡¼Ê£¿ô¾¤´­";color[vn++] = TERM_L_WHITE;}
1501 #else
1502         if (flags6 & (RF6_S_MONSTERS))      {vp[vn] = "summon monsters";color[vn++] = TERM_L_WHITE;}
1503 #endif
1504
1505 #ifdef JP
1506 if (flags6 & (RF6_S_KIN))           {vp[vn] = "µß±ç¾¤´­";color[vn++] = TERM_ORANGE;}
1507 #else
1508         if (flags6 & (RF6_S_KIN))           {vp[vn] = "summon aid";color[vn++] = TERM_ORANGE;}
1509 #endif
1510
1511 #ifdef JP
1512 if (flags6 & (RF6_S_ANT))           {vp[vn] = "¥¢¥ê¾¤´­";color[vn++] = TERM_RED;}
1513 #else
1514         if (flags6 & (RF6_S_ANT))           {vp[vn] = "summon ants";color[vn++] = TERM_RED;}
1515 #endif
1516
1517 #ifdef JP
1518 if (flags6 & (RF6_S_SPIDER))        {vp[vn] = "¥¯¥â¾¤´­";color[vn++] = TERM_L_DARK;}
1519 #else
1520         if (flags6 & (RF6_S_SPIDER))        {vp[vn] = "summon spiders";color[vn++] = TERM_L_DARK;}
1521 #endif
1522
1523 #ifdef JP
1524 if (flags6 & (RF6_S_HOUND))         {vp[vn] = "¥Ï¥¦¥ó¥É¾¤´­";color[vn++] = TERM_L_UMBER;}
1525 #else
1526         if (flags6 & (RF6_S_HOUND))         {vp[vn] = "summon hounds";color[vn++] = TERM_L_UMBER;}
1527 #endif
1528
1529 #ifdef JP
1530 if (flags6 & (RF6_S_HYDRA))         {vp[vn] = "¥Ò¥É¥é¾¤´­";color[vn++] = TERM_L_GREEN;}
1531 #else
1532         if (flags6 & (RF6_S_HYDRA))         {vp[vn] = "summon hydras";color[vn++] = TERM_L_GREEN;}
1533 #endif
1534
1535 #ifdef JP
1536 if (flags6 & (RF6_S_ANGEL))         {vp[vn] = "Å·»È°ìÂξ¤´­";color[vn++] = TERM_YELLOW;}
1537 #else
1538         if (flags6 & (RF6_S_ANGEL))         {vp[vn] = "summon an angel";color[vn++] = TERM_YELLOW;}
1539 #endif
1540
1541 #ifdef JP
1542 if (flags6 & (RF6_S_DEMON))         {vp[vn] = "¥Ç¡¼¥â¥ó°ìÂξ¤´­";color[vn++] = TERM_L_RED;}
1543 #else
1544         if (flags6 & (RF6_S_DEMON))         {vp[vn] = "summon a demon";color[vn++] = TERM_L_RED;}
1545 #endif
1546
1547 #ifdef JP
1548 if (flags6 & (RF6_S_UNDEAD))        {vp[vn] = "¥¢¥ó¥Ç¥Ã¥É°ìÂξ¤´­";color[vn++] = TERM_L_DARK;}
1549 #else
1550         if (flags6 & (RF6_S_UNDEAD))        {vp[vn] = "summon an undead";color[vn++] = TERM_L_DARK;}
1551 #endif
1552
1553 #ifdef JP
1554 if (flags6 & (RF6_S_DRAGON))        {vp[vn] = "¥É¥é¥´¥ó°ìÂξ¤´­";color[vn++] = TERM_ORANGE;}
1555 #else
1556         if (flags6 & (RF6_S_DRAGON))        {vp[vn] = "summon a dragon";color[vn++] = TERM_ORANGE;}
1557 #endif
1558
1559 #ifdef JP
1560 if (flags6 & (RF6_S_HI_UNDEAD))     {vp[vn] = "¶¯ÎϤʥ¢¥ó¥Ç¥Ã¥É¾¤´­";color[vn++] = TERM_L_DARK;}
1561 #else
1562         if (flags6 & (RF6_S_HI_UNDEAD))     {vp[vn] = "summon Greater Undead";color[vn++] = TERM_L_DARK;}
1563 #endif
1564
1565 #ifdef JP
1566 if (flags6 & (RF6_S_HI_DRAGON))     {vp[vn] = "¸ÅÂå¥É¥é¥´¥ó¾¤´­";color[vn++] = TERM_ORANGE;}
1567 #else
1568         if (flags6 & (RF6_S_HI_DRAGON))     {vp[vn] = "summon Ancient Dragons";color[vn++] = TERM_ORANGE;}
1569 #endif
1570
1571 #ifdef JP
1572 if (flags6 & (RF6_S_CYBER))         {vp[vn] = "¥µ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¾¤´­";color[vn++] = TERM_UMBER;}
1573 #else
1574         if (flags6 & (RF6_S_CYBER))         {vp[vn] = "summon Cyberdemons";color[vn++] = TERM_UMBER;}
1575 #endif
1576
1577 #ifdef JP
1578 if (flags6 & (RF6_S_AMBERITES))     {vp[vn] = "¥¢¥ó¥Ð¡¼¤Î²¦Â²¾¤´­";color[vn++] = TERM_VIOLET;}
1579 #else
1580         if (flags6 & (RF6_S_AMBERITES))     {vp[vn] = "summon Lords of Amber";color[vn++] = TERM_VIOLET;}
1581 #endif
1582
1583 #ifdef JP
1584 if (flags6 & (RF6_S_UNIQUE))        {vp[vn] = "¥æ¥Ë¡¼¥¯¡¦¥â¥ó¥¹¥¿¡¼¾¤´­";color[vn++] = TERM_VIOLET;}
1585 #else
1586         if (flags6 & (RF6_S_UNIQUE))        {vp[vn] = "summon Unique Monsters";color[vn++] = TERM_VIOLET;}
1587 #endif
1588
1589
1590         /* Describe spells */
1591         if (vn)
1592         {
1593                 /* Note magic */
1594                 magic = TRUE;
1595
1596                 /* Intro */
1597                 if (breath)
1598                 {
1599 #ifdef JP
1600                         hooked_roff("¡¢¤Ê¤ª¤«¤Ä");
1601 #else
1602                         hooked_roff(", and is also");
1603 #endif
1604
1605                 }
1606                 else
1607                 {
1608 #ifdef JP
1609                         hooked_roff(format("%^s¤Ï", wd_he[msex]));
1610 #else
1611                         hooked_roff(format("%^s is", wd_he[msex]));
1612 #endif
1613
1614                 }
1615
1616 #ifdef JP
1617                 /* Adverb */
1618                 if (flags2 & (RF2_SMART)) hook_c_roff(TERM_YELLOW, "Ū³Î¤Ë");
1619
1620                 /* Verb Phrase */
1621                 hooked_roff("ËâË¡¤ò»È¤¦¤³¤È¤¬¤Ç¤­¡¢");
1622 #else
1623                 /* Verb Phrase */
1624                 hooked_roff(" magical, casting spells");
1625
1626                 /* Adverb */
1627                 if (flags2 & RF2_SMART) hooked_roff(" intelligently");
1628 #endif
1629
1630
1631                 /* Scan */
1632                 for (n = 0; n < vn; n++)
1633                 {
1634                         /* Intro */
1635 #ifdef JP
1636                         if ( n != 0 ) hooked_roff("¡¢");
1637 #else
1638                         if (n == 0) hooked_roff(" which ");
1639                         else if (n < vn-1) hooked_roff(", ");
1640                         else hooked_roff(" or ");
1641 #endif
1642
1643
1644                         /* Dump */
1645                         hook_c_roff(color[n], vp[n]);
1646                 }
1647 #ifdef JP
1648                 hooked_roff("¤Î¼öʸ¤ò¾§¤¨¤ë¤³¤È¤¬¤¢¤ë");
1649 #endif
1650         }
1651
1652
1653         /* End the sentence about inate/other spells */
1654         if (breath || magic)
1655         {
1656                 /* Total casting */
1657                 m = r_ptr->r_cast_inate + r_ptr->r_cast_spell;
1658
1659                 /* Average frequency */
1660                 n = (r_ptr->freq_inate + r_ptr->freq_spell) / 2;
1661
1662                 /* Describe the spell frequency */
1663                 if (m > 100 || know_everything)
1664                 {
1665 #ifdef JP
1666                         hooked_roff(format("(³ÎΨ:1/%d)", 100 / n));
1667 #else
1668                         hooked_roff(format("; 1 time in %d", 100 / n));
1669 #endif
1670
1671                 }
1672
1673                 /* Guess at the frequency */
1674                 else if (m)
1675                 {
1676                         n = ((n + 9) / 10) * 10;
1677 #ifdef JP
1678                         hooked_roff(format("(³ÎΨ:Ìó1/%d)", 100 / n));
1679 #else
1680                         hooked_roff(format("; about 1 time in %d", 100 / n));
1681 #endif
1682
1683                 }
1684
1685                 /* End this sentence */
1686 #ifdef JP
1687                 hooked_roff("¡£");
1688 #else
1689                 hooked_roff(".  ");
1690 #endif
1691
1692         }
1693
1694         /* Describe monster "toughness" */
1695         if (know_armour(r_idx))
1696         {
1697                 /* Armor */
1698 #ifdef JP
1699                 hooked_roff(format("%^s¤Ï AC%d ¤ÎËɸæÎϤÈ",
1700 #else
1701                 hooked_roff(format("%^s has an armor rating of %d",
1702 #endif
1703
1704                             wd_he[msex], r_ptr->ac));
1705
1706                 /* Maximized hitpoints */
1707                 if (flags1 & RF1_FORCE_MAXHP)
1708                 {
1709 #ifdef JP
1710                         hooked_roff(format(" %d ¤ÎÂÎÎϤ¬¤¢¤ë¡£",
1711 #else
1712                         hooked_roff(format(" and a life rating of %d.  ",
1713 #endif
1714
1715                                     r_ptr->hdice * r_ptr->hside));
1716                 }
1717
1718                 /* Variable hitpoints */
1719                 else
1720                 {
1721 #ifdef JP
1722                         hooked_roff(format(" %dd%d ¤ÎÂÎÎϤ¬¤¢¤ë¡£",
1723 #else
1724                         hooked_roff(format(" and a life rating of %dd%d.  ",
1725 #endif
1726
1727                                     r_ptr->hdice, r_ptr->hside));
1728                 }
1729         }
1730
1731
1732
1733         /* Collect special abilities. */
1734         vn = 0;
1735 #ifdef JP
1736 if (flags7 & (RF7_HAS_LITE_1 | RF7_HAS_LITE_2)) vp[vn++] = "¥À¥ó¥¸¥ç¥ó¤ò¾È¤é¤¹";
1737 #else
1738         if (flags7 & (RF7_HAS_LITE_1 | RF7_HAS_LITE_2)) vp[vn++] = "illuminate the dungeon";
1739 #endif
1740
1741 #ifdef JP
1742 if (flags2 & RF2_OPEN_DOOR) vp[vn++] = "¥É¥¢¤ò³«¤±¤ë";
1743 #else
1744         if (flags2 & RF2_OPEN_DOOR) vp[vn++] = "open doors";
1745 #endif
1746
1747 #ifdef JP
1748 if (flags2 & RF2_BASH_DOOR) vp[vn++] = "¥É¥¢¤òÂǤÁÇˤë";
1749 #else
1750         if (flags2 & RF2_BASH_DOOR) vp[vn++] = "bash down doors";
1751 #endif
1752
1753 #ifdef JP
1754 if (flags2 & RF2_PASS_WALL) vp[vn++] = "Êɤò¤¹¤êÈ´¤±¤ë";
1755 #else
1756         if (flags2 & RF2_PASS_WALL) vp[vn++] = "pass through walls";
1757 #endif
1758
1759 #ifdef JP
1760 if (flags2 & RF2_KILL_WALL) vp[vn++] = "Êɤò·¡¤ê¿Ê¤à";
1761 #else
1762         if (flags2 & RF2_KILL_WALL) vp[vn++] = "bore through walls";
1763 #endif
1764
1765 #ifdef JP
1766 if (flags2 & RF2_MOVE_BODY) vp[vn++] = "¼å¤¤¥â¥ó¥¹¥¿¡¼¤ò²¡¤·¤Î¤±¤ë";
1767 #else
1768         if (flags2 & RF2_MOVE_BODY) vp[vn++] = "push past weaker monsters";
1769 #endif
1770
1771 #ifdef JP
1772 if (flags2 & RF2_KILL_BODY) vp[vn++] = "¼å¤¤¥â¥ó¥¹¥¿¡¼¤òÅݤ¹";
1773 #else
1774         if (flags2 & RF2_KILL_BODY) vp[vn++] = "destroy weaker monsters";
1775 #endif
1776
1777 #ifdef JP
1778 if (flags2 & RF2_TAKE_ITEM) vp[vn++] = "¥¢¥¤¥Æ¥à¤ò½¦¤¦";
1779 #else
1780         if (flags2 & RF2_TAKE_ITEM) vp[vn++] = "pick up objects";
1781 #endif
1782
1783 #ifdef JP
1784 if (flags2 & RF2_KILL_ITEM) vp[vn++] = "¥¢¥¤¥Æ¥à¤ò²õ¤¹";
1785 #else
1786         if (flags2 & RF2_KILL_ITEM) vp[vn++] = "destroy objects";
1787 #endif
1788
1789
1790         /* Describe special abilities. */
1791         if (vn)
1792         {
1793                 /* Intro */
1794 #ifdef JP
1795                 hooked_roff(format("%^s¤Ï", wd_he[msex]));
1796 #else
1797                 hooked_roff(format("%^s", wd_he[msex]));
1798 #endif
1799
1800
1801                 /* Scan */
1802                 for (n = 0; n < vn; n++)
1803                 {
1804                         /* Intro */
1805 #ifdef JP
1806                         if(n!=vn-1){
1807                           jverb(vp[n],jverb_buf,JVERB_AND);
1808                           hooked_roff(jverb_buf);
1809                           hooked_roff("¡¢");
1810                         }
1811                         else  hooked_roff(vp[n]);
1812 #else
1813                         if (n == 0) hooked_roff(" can ");
1814                         else if (n < vn-1) hooked_roff(", ");
1815                         else hooked_roff(" and ");
1816
1817                         /* Dump */
1818                         hooked_roff(vp[n]);
1819 #endif
1820
1821                 }
1822
1823                 /* End */
1824 #ifdef JP
1825                 hooked_roff("¤³¤È¤¬¤Ç¤­¤ë¡£");
1826 #else
1827                 hooked_roff(".  ");
1828 #endif
1829
1830         }
1831
1832
1833         /* Describe special abilities. */
1834         if (flags7 & (RF7_SELF_LITE_1 | RF7_SELF_LITE_2))
1835         {
1836 #ifdef JP
1837                 hooked_roff(format("%^s¤Ï¸÷¤Ã¤Æ¤¤¤ë¡£", wd_he[msex]));
1838 #else
1839                 hooked_roff(format("%^s illuminate the dungeon.  ", wd_he[msex]));
1840 #endif
1841
1842         }
1843         if (flags2 & RF2_INVISIBLE)
1844         {
1845 #ifdef JP
1846                 hooked_roff(format("%^s¤ÏÆ©ÌÀ¤ÇÌܤ˸«¤¨¤Ê¤¤¡£", wd_he[msex]));
1847 #else
1848                 hooked_roff(format("%^s is invisible.  ", wd_he[msex]));
1849 #endif
1850
1851         }
1852         if (flags2 & RF2_COLD_BLOOD)
1853         {
1854 #ifdef JP
1855                 hooked_roff(format("%^s¤ÏÎä·ìưʪ¤Ç¤¢¤ë¡£", wd_he[msex]));
1856 #else
1857                 hooked_roff(format("%^s is cold blooded.  ", wd_he[msex]));
1858 #endif
1859
1860         }
1861         if (flags2 & RF2_EMPTY_MIND)
1862         {
1863 #ifdef JP
1864                 hooked_roff(format("%^s¤Ï¥Æ¥ì¥Ñ¥·¡¼¤Ç¤Ï´¶ÃΤǤ­¤Ê¤¤¡£", wd_he[msex]));
1865 #else
1866                 hooked_roff(format("%^s is not detected by telepathy.  ", wd_he[msex]));
1867 #endif
1868
1869         }
1870         else if (flags2 & RF2_WEIRD_MIND)
1871         {
1872 #ifdef JP
1873                 hooked_roff(format("%^s¤Ï¤Þ¤ì¤Ë¥Æ¥ì¥Ñ¥·¡¼¤Ç´¶ÃΤǤ­¤ë¡£", wd_he[msex]));
1874 #else
1875                 hooked_roff(format("%^s is rarely detected by telepathy.  ", wd_he[msex]));
1876 #endif
1877
1878         }
1879         if (flags2 & RF2_MULTIPLY)
1880         {
1881 #ifdef JP
1882                 hook_c_roff(TERM_L_UMBER, format("%^s¤ÏÇúȯŪ¤ËÁý¿£¤¹¤ë¡£", wd_he[msex]));
1883 #else
1884                 hook_c_roff(TERM_L_UMBER, format("%^s breeds explosively.  ", wd_he[msex]));
1885 #endif
1886
1887         }
1888         if (flags2 & RF2_REGENERATE)
1889         {
1890 #ifdef JP
1891                 hook_c_roff(TERM_L_WHITE, format("%^s¤ÏÁÇÁ᤯ÂÎÎϤò²óÉü¤¹¤ë¡£", wd_he[msex]));
1892 #else
1893                 hook_c_roff(TERM_L_WHITE, format("%^s regenerates quickly.  ", wd_he[msex]));
1894 #endif
1895
1896         }
1897         if (flags7 & RF7_RIDING)
1898         {
1899 #ifdef JP
1900                 hook_c_roff(TERM_SLATE, format("%^s¤Ë¾è¤ë¤³¤È¤¬¤Ç¤­¤ë¡£", wd_he[msex]));
1901 #else
1902                 hook_c_roff(TERM_SLATE, format("%^s is suitable for riding.  ", wd_he[msex]));
1903 #endif
1904
1905         }
1906
1907
1908         /* Collect susceptibilities */
1909         vn = 0;
1910 #ifdef JP
1911         if (flags3 & RF3_HURT_ROCK) {vp[vn] = "´ä¤ò½üµî¤¹¤ë¤â¤Î";color[vn++] = TERM_UMBER;}
1912 #else
1913         if (flags3 & RF3_HURT_ROCK) {vp[vn] = "rock remover";color[vn++] = TERM_UMBER;}
1914 #endif
1915
1916 #ifdef JP
1917         if (flags3 & RF3_HURT_LITE) {vp[vn] = "ÌÀ¤ë¤¤¸÷";color[vn++] = TERM_YELLOW;}
1918 #else
1919         if (flags3 & RF3_HURT_LITE) {vp[vn] = "bright light";color[vn++] = TERM_YELLOW;}
1920 #endif
1921
1922 #ifdef JP
1923         if (flags3 & RF3_HURT_FIRE) {vp[vn] = "±ê";color[vn++] = TERM_RED;}
1924 #else
1925         if (flags3 & RF3_HURT_FIRE) {vp[vn] = "fire";color[vn++] = TERM_RED;}
1926 #endif
1927
1928 #ifdef JP
1929         if (flags3 & RF3_HURT_COLD) {vp[vn] = "Î䵤";color[vn++] = TERM_L_WHITE;}
1930 #else
1931         if (flags3 & RF3_HURT_COLD) {vp[vn] = "cold";color[vn++] = TERM_L_WHITE;}
1932 #endif
1933
1934
1935         /* Describe susceptibilities */
1936         if (vn)
1937         {
1938                 /* Intro */
1939 #ifdef JP
1940                 hooked_roff(format("%^s¤Ë¤Ï", wd_he[msex]));
1941 #else
1942                 hooked_roff(format("%^s", wd_he[msex]));
1943 #endif
1944
1945
1946                 /* Scan */
1947                 for (n = 0; n < vn; n++)
1948                 {
1949                         /* Intro */
1950 #ifdef JP
1951                         if ( n != 0 ) hooked_roff("¤ä");
1952 #else
1953                         if (n == 0) hooked_roff(" is hurt by ");
1954                         else if (n < vn-1) hooked_roff(", ");
1955                         else hooked_roff(" and ");
1956 #endif
1957
1958
1959                         /* Dump */
1960                         hook_c_roff(color[n], vp[n]);
1961                 }
1962
1963                 /* End */
1964 #ifdef JP
1965                 hooked_roff("¤Ç¥À¥á¡¼¥¸¤òÍ¿¤¨¤é¤ì¤ë¡£");
1966 #else
1967                 hooked_roff(".  ");
1968 #endif
1969
1970         }
1971
1972
1973         /* Collect immunities */
1974         vn = 0;
1975 #ifdef JP
1976         if (flags3 & RF3_IM_ACID) {vp[vn] = "»À";color[vn++] = TERM_GREEN;}
1977 #else
1978         if (flags3 & RF3_IM_ACID) {vp[vn] = "acid";color[vn++] = TERM_GREEN;}
1979 #endif
1980
1981 #ifdef JP
1982         if (flags3 & RF3_IM_ELEC) {vp[vn] = "°ðºÊ";color[vn++] = TERM_BLUE;}
1983 #else
1984         if (flags3 & RF3_IM_ELEC) {vp[vn] = "lightning";color[vn++] = TERM_BLUE;}
1985 #endif
1986
1987 #ifdef JP
1988         if (flags3 & RF3_IM_FIRE) {vp[vn] = "±ê";color[vn++] = TERM_RED;}
1989 #else
1990         if (flags3 & RF3_IM_FIRE) {vp[vn] = "fire";color[vn++] = TERM_RED;}
1991 #endif
1992
1993 #ifdef JP
1994         if (flags3 & RF3_IM_COLD) {vp[vn] = "Î䵤";color[vn++] = TERM_L_WHITE;}
1995 #else
1996         if (flags3 & RF3_IM_COLD) {vp[vn] = "cold";color[vn++] = TERM_L_WHITE;}
1997 #endif
1998
1999 #ifdef JP
2000         if (flags3 & RF3_IM_POIS) {vp[vn] = "ÆÇ";color[vn++] = TERM_L_GREEN;}
2001 #else
2002         if (flags3 & RF3_IM_POIS) {vp[vn] = "poison";color[vn++] = TERM_L_GREEN;}
2003 #endif
2004
2005
2006         /* Describe immunities */
2007         if (vn)
2008         {
2009                 /* Intro */
2010 #ifdef JP
2011                 hooked_roff(format("%^s¤Ï", wd_he[msex]));
2012 #else
2013                 hooked_roff(format("%^s", wd_he[msex]));
2014 #endif
2015
2016
2017                 /* Scan */
2018                 for (n = 0; n < vn; n++)
2019                 {
2020                         /* Intro */
2021 #ifdef JP
2022                         if ( n != 0 ) hooked_roff("¤È");
2023 #else
2024                         if (n == 0) hooked_roff(" resists ");
2025                         else if (n < vn-1) hooked_roff(", ");
2026                         else hooked_roff(" and ");
2027 #endif
2028
2029
2030                         /* Dump */
2031                         hook_c_roff(color[n], vp[n]);
2032                 }
2033
2034                 /* End */
2035 #ifdef JP
2036                 hooked_roff("¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£");
2037 #else
2038                 hooked_roff(".  ");
2039 #endif
2040
2041         }
2042
2043
2044         /* Collect resistances */
2045         vn = 0;
2046 #ifdef JP
2047 if (flags4 & RF4_BR_LITE) {vp[vn] = "Á®¸÷";color[vn++] = TERM_YELLOW;}
2048 #else
2049  if (flags4 & RF4_BR_LITE) {vp[vn] = "light";color[vn++] = TERM_YELLOW;}
2050 #endif
2051
2052 #ifdef JP
2053 if ((flags4 & RF4_BR_DARK) || (flags3 & RF3_ORC)) {vp[vn] = "°Å¹õ";color[vn++] = TERM_L_DARK;}
2054 #else
2055  if (flags4 & RF4_BR_DARK  || (flags3 & RF3_ORC)) {vp[vn] = "dark";color[vn++] = TERM_L_DARK;}
2056 #endif
2057
2058 #ifdef JP
2059 if (flags3 & RF3_RES_NETH) {vp[vn] = "ÃϹö";color[vn++] = TERM_L_DARK;}
2060 #else
2061  if (flags3 & RF3_RES_NETH) {vp[vn] = "nether";color[vn++] = TERM_L_DARK;}
2062 #endif
2063
2064 #ifdef JP
2065 if (flags3 & RF3_RES_WATE) {vp[vn] = "¿å";color[vn++] = TERM_BLUE;}
2066 #else
2067 if (flags3 & RF3_RES_WATE) {vp[vn] = "water";color[vn++] = TERM_BLUE;}
2068 #endif
2069
2070 #ifdef JP
2071 if (flags3 & RF3_RES_PLAS) {vp[vn] = "¥×¥é¥º¥Þ";color[vn++] = TERM_L_RED;}
2072 #else
2073  if (flags3 & RF3_RES_PLAS) {vp[vn] = "plasma";color[vn++] = TERM_L_RED;}
2074 #endif
2075
2076 #ifdef JP
2077 if (flags4 & RF4_BR_SHAR) {vp[vn] = "ÇËÊÒ";color[vn++] = TERM_L_UMBER;}
2078 #else
2079  if (flags4 & RF4_BR_SHAR) {vp[vn] = "shards";color[vn++] = TERM_L_UMBER;}
2080 #endif
2081
2082 #ifdef JP
2083 if (flags4 & RF4_BR_SOUN) {vp[vn] = "¹ì²»";color[vn++] = TERM_ORANGE;}
2084 #else
2085  if (flags4 & RF4_BR_SOUN) {vp[vn] = "sound";color[vn++] = TERM_ORANGE;}
2086 #endif
2087
2088 #ifdef JP
2089 if (flags4 & RF4_BR_CONF) {vp[vn] = "º®Íð";color[vn++] = TERM_L_UMBER;}
2090 #else
2091  if (flags4 & RF4_BR_CONF) {vp[vn] = "conf";color[vn++] = TERM_L_UMBER;}
2092 #endif
2093
2094 #ifdef JP
2095 if ((flags4 & RF4_BR_CHAO) || (r_idx == MON_STORMBRINGER)) {vp[vn] = "¥«¥ª¥¹";color[vn++] = TERM_VIOLET;}
2096 #else
2097 if ((flags4 & RF4_BR_CHAO) || (r_idx == MON_STORMBRINGER)) {vp[vn] = "chaos";color[vn++] = TERM_VIOLET;}
2098 #endif
2099
2100 #ifdef JP
2101 if (flags3 & RF3_RES_NEXU) {vp[vn] = "°ø²Ìº®Íð";color[vn++] = TERM_VIOLET;}
2102 #else
2103  if (flags3 & RF3_RES_NEXU) {vp[vn] = "nexus";color[vn++] = TERM_VIOLET;}
2104 #endif
2105
2106 #ifdef JP
2107 if (flags3 & RF3_RES_DISE) {vp[vn] = "Îô²½";color[vn++] = TERM_VIOLET;}
2108 #else
2109  if (flags3 & RF3_RES_DISE) {vp[vn] = "disenchantment";color[vn++] = TERM_VIOLET;}
2110 #endif
2111
2112 #ifdef JP
2113 if (flags4 & RF4_BR_WALL) {vp[vn] = "¥Õ¥©¡¼¥¹";color[vn++] = TERM_UMBER;}
2114 #else
2115  if (flags4 & RF4_BR_WALL) {vp[vn] = "sound";color[vn++] = TERM_UMBER;}
2116 #endif
2117
2118 #ifdef JP
2119 if (flags4 & RF4_BR_INER) {vp[vn] = "ÃÙÆß";color[vn++] = TERM_SLATE;}
2120 #else
2121  if (flags4 & RF4_BR_INER) {vp[vn] = "inertia";color[vn++] = TERM_SLATE;}
2122 #endif
2123
2124 #ifdef JP
2125 if (flags4 & RF4_BR_TIME) {vp[vn] = "»þ´ÖµÕž";color[vn++] = TERM_L_BLUE;}
2126 #else
2127  if (flags4 & RF4_BR_TIME) {vp[vn] = "time";color[vn++] = TERM_L_BLUE;}
2128 #endif
2129
2130 #ifdef JP
2131 if (flags4 & RF4_BR_GRAV) {vp[vn] = "½ÅÎÏ";color[vn++] = TERM_SLATE;}
2132 #else
2133  if (flags4 & RF4_BR_GRAV) {vp[vn] = "gravity";color[vn++] = TERM_SLATE;}
2134 #endif
2135
2136 #ifdef JP
2137 if (flags3 & RF3_RES_ALL) {vp[vn] = "¤¢¤é¤æ¤ë¹¶·â";color[vn++] = TERM_YELLOW;}
2138 #else
2139  if (flags3 & RF3_RES_ALL) {vp[vn] = "all";color[vn++] = TERM_YELLOW;}
2140 #endif
2141
2142 #ifdef JP
2143 if ((flags3 & RF3_RES_TELE) && !(r_ptr->flags1 & RF1_UNIQUE)) {vp[vn] = "¥Æ¥ì¥Ý¡¼¥È";color[vn++] = TERM_ORANGE;}
2144 #else
2145  if ((flags3 & RF3_RES_TELE) && !(r_ptr->flags1 & RF1_UNIQUE)) {vp[vn] = "teleportation";color[vn++] = TERM_ORANGE;}
2146 #endif
2147
2148
2149         /* Describe resistances */
2150         if (vn)
2151         {
2152                 /* Intro */
2153 #ifdef JP
2154                 hooked_roff(format("%^s¤Ï", wd_he[msex]));
2155 #else
2156                 hooked_roff(format("%^s", wd_he[msex]));
2157 #endif
2158
2159
2160                 /* Scan */
2161                 for (n = 0; n < vn; n++)
2162                 {
2163                         /* Intro */
2164 #ifdef JP
2165                         if ( n != 0 ) hooked_roff("¤È");
2166 #else
2167                         if (n == 0) hooked_roff(" resists ");
2168                         else if (n < vn-1) hooked_roff(", ");
2169                         else hooked_roff(" and ");
2170 #endif
2171
2172
2173                         /* Dump */
2174                         hook_c_roff(color[n], vp[n]);
2175                 }
2176
2177                 /* End */
2178 #ifdef JP
2179                 hooked_roff("¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£");
2180 #else
2181                 hooked_roff(".  ");
2182 #endif
2183
2184         }
2185
2186
2187         if ((r_ptr->r_xtra1 & MR1_SINKA) || know_everything)
2188         {
2189                 if (r_ptr->next_r_idx)
2190                 {
2191 #ifdef JP
2192                         hooked_roff(format("%^s¤Ï·Ð¸³¤òÀѤà¤È¡¢", wd_he[msex]));
2193 #else
2194                         hooked_roff(format("%^s will evolve into ", wd_he[msex]));
2195 #endif
2196                         hook_c_roff(TERM_YELLOW, format("%s", r_name+r_info[r_ptr->next_r_idx].name));
2197 #ifdef JP
2198                         hooked_roff(format("¤Ë¿Ê²½¤¹¤ë¡£"));
2199 #else
2200                         hooked_roff(format(" when %s gets enugh experience.  ", wd_he[msex]));
2201 #endif
2202                 }
2203                 else if (!(r_ptr->flags1 & RF1_UNIQUE))
2204                 {
2205 #ifdef JP
2206                         hooked_roff(format("%s¤Ï¿Ê²½¤·¤Ê¤¤¡£", wd_he[msex]));
2207 #else
2208                         hooked_roff(format("%s won't evolve.  ", wd_he[msex]));
2209 #endif
2210                 }
2211         }
2212
2213         /* Collect non-effects */
2214         vn = 0;
2215 #ifdef JP
2216 if (flags3 & RF3_NO_STUN)  {vp[vn] = "Û¯Û°¤È¤·¤Ê¤¤";color[vn++] = TERM_ORANGE;}
2217 #else
2218  if (flags3 & RF3_NO_STUN)  {vp[vn] = "stunned";color[vn++] = TERM_ORANGE;}
2219 #endif
2220
2221 #ifdef JP
2222 if (flags3 & RF3_NO_FEAR)  {vp[vn] = "¶²Éݤò´¶¤¸¤Ê¤¤";color[vn++] = TERM_SLATE;}
2223 #else
2224  if (flags3 & RF3_NO_FEAR)  {vp[vn] = "frightened";color[vn++] = TERM_SLATE;}
2225 #endif
2226
2227 #ifdef JP
2228 if (flags3 & RF3_NO_CONF)  {vp[vn] = "º®Í𤷤ʤ¤";color[vn++] = TERM_L_UMBER;}
2229 #else
2230  if (flags3 & RF3_NO_CONF)  {vp[vn] = "confused";color[vn++] = TERM_L_UMBER;}
2231 #endif
2232
2233 #ifdef JP
2234 if (flags3 & RF3_NO_SLEEP) {vp[vn] = "̲¤é¤µ¤ì¤Ê¤¤";color[vn++] = TERM_BLUE;}
2235 #else
2236  if (flags3 & RF3_NO_SLEEP) {vp[vn] = "slept";color[vn++] = TERM_BLUE;}
2237 #endif
2238
2239 #ifdef JP
2240 if ((flags3 & RF3_RES_TELE) && (r_ptr->flags1 & RF1_UNIQUE)) {vp[vn] = "¥Æ¥ì¥Ý¡¼¥È¤µ¤ì¤Ê¤¤";color[vn++] = TERM_ORANGE;}
2241 #else
2242  if ((flags3 & RF3_RES_TELE) && (r_ptr->flags1 & RF1_UNIQUE)) {vp[vn] = "teleported";color[vn++] = TERM_ORANGE;}
2243 #endif
2244
2245         /* Describe non-effects */
2246         if (vn)
2247         {
2248                 /* Intro */
2249 #ifdef JP
2250                 hooked_roff(format("%^s¤Ï", wd_he[msex]));
2251 #else
2252                 hooked_roff(format("%^s", wd_he[msex]));
2253 #endif
2254
2255
2256                 /* Scan */
2257                 for (n = 0; n < vn; n++)
2258                 {
2259                         /* Intro */
2260 #ifdef JP
2261                         if ( n != 0 ) hooked_roff("¤·¡¢");
2262 #else
2263                         if (n == 0) hooked_roff(" cannot be ");
2264                         else if (n < vn - 1) hooked_roff(", ");
2265                         else hooked_roff(" or ");
2266 #endif
2267
2268
2269                         /* Dump */
2270                         hook_c_roff(color[n], vp[n]);
2271                 }
2272
2273                 /* End */
2274 #ifdef JP
2275                 hooked_roff("¡£");
2276 #else
2277                 hooked_roff(".  ");
2278 #endif
2279
2280         }
2281
2282
2283         /* Do we know how aware it is? */
2284         if ((((int)r_ptr->r_wake * (int)r_ptr->r_wake) > r_ptr->sleep) ||
2285                   (r_ptr->r_ignore == MAX_UCHAR) ||
2286             (r_ptr->sleep == 0 && r_ptr->r_tkills >= 10) || know_everything)
2287         {
2288                 cptr act;
2289
2290                 if (r_ptr->sleep > 200)
2291                 {
2292 #ifdef JP
2293                         act = "¤ò̵»ë¤·¤¬¤Á¤Ç¤¢¤ë¤¬";
2294 #else
2295                         act = "prefers to ignore";
2296 #endif
2297
2298                 }
2299                 else if (r_ptr->sleep > 95)
2300                 {
2301 #ifdef JP
2302                         act = "¤ËÂФ·¤Æ¤Û¤È¤ó¤ÉÃí°Õ¤òʧ¤ï¤Ê¤¤¤¬";
2303 #else
2304                         act = "pays very little attention to";
2305 #endif
2306
2307                 }
2308                 else if (r_ptr->sleep > 75)
2309                 {
2310 #ifdef JP
2311                         act = "¤ËÂФ·¤Æ¤¢¤Þ¤êÃí°Õ¤òʧ¤ï¤Ê¤¤¤¬";
2312 #else
2313                         act = "pays little attention to";
2314 #endif
2315
2316                 }
2317                 else if (r_ptr->sleep > 45)
2318                 {
2319 #ifdef JP
2320                         act = "¤ò¸«²á¤´¤·¤¬¤Á¤Ç¤¢¤ë¤¬";
2321 #else
2322                         act = "tends to overlook";
2323 #endif
2324
2325                 }
2326                 else if (r_ptr->sleep > 25)
2327                 {
2328 #ifdef JP
2329                         act = "¤ò¤Û¤ó¤Î¾¯¤·¤Ï¸«¤Æ¤ª¤ê";
2330 #else
2331                         act = "takes quite a while to see";
2332 #endif
2333
2334                 }
2335                 else if (r_ptr->sleep > 10)
2336                 {
2337 #ifdef JP
2338                         act = "¤ò¤·¤Ð¤é¤¯¤Ï¸«¤Æ¤ª¤ê";
2339 #else
2340                         act = "takes a while to see";
2341 #endif
2342
2343                 }
2344                 else if (r_ptr->sleep > 5)
2345                 {
2346 #ifdef JP
2347                         act = "¤ò´öʬÃí°Õ¿¼¤¯¸«¤Æ¤ª¤ê";
2348 #else
2349                         act = "is fairly observant of";
2350 #endif
2351
2352                 }
2353                 else if (r_ptr->sleep > 3)
2354                 {
2355 #ifdef JP
2356                         act = "¤òÃí°Õ¿¼¤¯¸«¤Æ¤ª¤ê";
2357 #else
2358                         act = "is observant of";
2359 #endif
2360
2361                 }
2362                 else if (r_ptr->sleep > 1)
2363                 {
2364 #ifdef JP
2365                         act = "¤ò¤«¤Ê¤êÃí°Õ¿¼¤¯¸«¤Æ¤ª¤ê";
2366 #else
2367                         act = "is very observant of";
2368 #endif
2369
2370                 }
2371                 else if (r_ptr->sleep > 0)
2372                 {
2373 #ifdef JP
2374                         act = "¤ò·Ù²ü¤·¤Æ¤ª¤ê";
2375 #else
2376                         act = "is vigilant for";
2377 #endif
2378
2379                 }
2380                 else
2381                 {
2382 #ifdef JP
2383                         act = "¤ò¤«¤Ê¤ê·Ù²ü¤·¤Æ¤ª¤ê";
2384 #else
2385                         act = "is ever vigilant for";
2386 #endif
2387
2388                 }
2389
2390 #ifdef JP
2391                 hooked_roff(format("%^s¤Ï¿¯Æþ¼Ô%s¡¢ %d ¥Õ¥£¡¼¥ÈÀ褫¤é¿¯Æþ¼Ô¤Ëµ¤ÉÕ¤¯¤³¤È¤¬¤¢¤ë¡£",
2392                      wd_he[msex], act, 10 * r_ptr->aaf));
2393 #else
2394                 hooked_roff(format("%^s %s intruders, which %s may notice from %d feet.  ",
2395                             wd_he[msex], act, wd_he[msex], 10 * r_ptr->aaf));
2396 #endif
2397
2398         }
2399
2400
2401         /* Drops gold and/or items */
2402         if (drop_gold || drop_item)
2403         {
2404                 /* No "n" needed */
2405                 sin = FALSE;
2406
2407                 /* Intro */
2408 #ifdef JP
2409                 hooked_roff(format("%^s¤Ï", wd_he[msex]));
2410 #else
2411                 hooked_roff(format("%^s may carry", wd_he[msex]));
2412 #endif
2413
2414
2415                 /* Count maximum drop */
2416                 n = MAX(drop_gold, drop_item);
2417
2418                 /* One drop (may need an "n") */
2419                 if (n == 1)
2420                 {
2421 #ifdef JP
2422                         hooked_roff("°ì¤Ä¤Î");
2423 #else
2424                         hooked_roff(" a");
2425 #endif
2426
2427                         sin = TRUE;
2428                 }
2429
2430                 /* Two drops */
2431                 else if (n == 2)
2432                 {
2433 #ifdef JP
2434                         hooked_roff("°ì¤Ä¤«Æó¤Ä¤Î");
2435 #else
2436                         hooked_roff(" one or two");
2437 #endif
2438
2439                 }
2440
2441                 /* Many drops */
2442                 else
2443                 {
2444 #ifdef JP
2445                         hooked_roff(format(" %d ¸Ä¤Þ¤Ç¤Î", n));
2446 #else
2447                         hooked_roff(format(" up to %d", n));
2448 #endif
2449
2450                 }
2451
2452
2453                 /* Great */
2454                 if (flags1 & RF1_DROP_GREAT)
2455                 {
2456 #ifdef JP
2457                         p = "ÆÃÊ̤Ê";
2458 #else
2459                         p = " exceptional";
2460 #endif
2461
2462                 }
2463
2464                 /* Good (no "n" needed) */
2465                 else if (flags1 & RF1_DROP_GOOD)
2466                 {
2467 #ifdef JP
2468                         p = "¾å¼Á¤Ê";
2469 #else
2470                         p = " good";
2471 #endif
2472
2473                         sin = FALSE;
2474                 }
2475
2476                 /* Okay */
2477                 else
2478                 {
2479                         p = NULL;
2480                 }
2481
2482
2483                 /* Objects */
2484                 if (drop_item)
2485                 {
2486                         /* Handle singular "an" */
2487 #ifndef JP
2488                         if (sin) hooked_roff("n");
2489 #endif
2490                         sin = FALSE;
2491
2492                         /* Dump "object(s)" */
2493                         if (p) hooked_roff(p);
2494 #ifdef JP
2495                         hooked_roff("¥¢¥¤¥Æ¥à");
2496 #else
2497                         hooked_roff(" object");
2498                         if (n != 1) hooked_roff("s");
2499 #endif
2500
2501
2502                         /* Conjunction replaces variety, if needed for "gold" below */
2503 #ifdef JP
2504                         p = "¤ä";
2505 #else
2506                         p = " or";
2507 #endif
2508
2509                 }
2510
2511                 /* Treasures */
2512                 if (drop_gold)
2513                 {
2514                         /* Cancel prefix */
2515                         if (!p) sin = FALSE;
2516
2517                         /* Handle singular "an" */
2518 #ifndef JP
2519                         if (sin) hooked_roff("n");
2520 #endif
2521                         sin = FALSE;
2522
2523                         /* Dump "treasure(s)" */
2524                         if (p) hooked_roff(p);
2525 #ifdef JP
2526                         hooked_roff("ºâÊõ");
2527 #else
2528                         hooked_roff(" treasure");
2529                         if (n != 1) hooked_roff("s");
2530 #endif
2531
2532                 }
2533
2534                 /* End this sentence */
2535 #ifdef JP
2536                 hooked_roff("¤ò»ý¤Ã¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ë¡£");
2537 #else
2538                 hooked_roff(".  ");
2539 #endif
2540
2541         }
2542
2543
2544         /* Count the number of "known" attacks */
2545         for (n = 0, m = 0; m < 4; m++)
2546         {
2547                 /* Skip non-attacks */
2548                 if (!r_ptr->blow[m].method) continue;
2549                 if (r_ptr->blow[m].method == RBM_SHOOT) continue;
2550
2551                 /* Count known attacks */
2552                 if (r_ptr->r_blows[m] || know_everything) n++;
2553         }
2554
2555         /* Examine (and count) the actual attacks */
2556         for (r = 0, m = 0; m < 4; m++)
2557         {
2558                 int method, effect, d1, d2;
2559
2560                 /* Skip non-attacks */
2561                 if (!r_ptr->blow[m].method) continue;
2562                 if (r_ptr->blow[m].method == RBM_SHOOT) continue;
2563
2564                 /* Skip unknown attacks */
2565                 if (!r_ptr->r_blows[m] && !know_everything) continue;
2566
2567                 /* Extract the attack info */
2568                 method = r_ptr->blow[m].method;
2569                 effect = r_ptr->blow[m].effect;
2570                 d1 = r_ptr->blow[m].d_dice;
2571                 d2 = r_ptr->blow[m].d_side;
2572
2573                 /* No method yet */
2574                 p = NULL;
2575
2576                 /* Acquire the method */
2577                 switch (method)
2578                 {
2579 #ifdef JP
2580 case RBM_HIT:           p = "²¥¤ë"; break;
2581 #else
2582                         case RBM_HIT:           p = "hit"; break;
2583 #endif
2584
2585 #ifdef JP
2586 case RBM_TOUCH:         p = "¿¨¤ë"; break;
2587 #else
2588                         case RBM_TOUCH:         p = "touch"; break;
2589 #endif
2590
2591 #ifdef JP
2592 case RBM_PUNCH:         p = "¥Ñ¥ó¥Á¤¹¤ë"; break;
2593 #else
2594                         case RBM_PUNCH:         p = "punch"; break;
2595 #endif
2596
2597 #ifdef JP
2598 case RBM_KICK:          p = "½³¤ë"; break;
2599 #else
2600                         case RBM_KICK:          p = "kick"; break;
2601 #endif
2602
2603 #ifdef JP
2604 case RBM_CLAW:          p = "¤Ò¤Ã¤«¤¯"; break;
2605 #else
2606                         case RBM_CLAW:          p = "claw"; break;
2607 #endif
2608
2609 #ifdef JP
2610 case RBM_BITE:          p = "³ú¤à"; break;
2611 #else
2612                         case RBM_BITE:          p = "bite"; break;
2613 #endif
2614
2615 #ifdef JP
2616 case RBM_STING:         p = "»É¤¹"; break;
2617 #else
2618                         case RBM_STING:         p = "sting"; break;
2619 #endif
2620
2621 #ifdef JP
2622 case RBM_SLASH:         p = "»Â¤ë"; break;
2623 #else
2624                         case RBM_SLASH:         p = "slash"; break;
2625 #endif
2626
2627 #ifdef JP
2628 case RBM_BUTT:          p = "³Ñ¤ÇÆͤ¯"; break;
2629 #else
2630                         case RBM_BUTT:          p = "butt"; break;
2631 #endif
2632
2633 #ifdef JP
2634 case RBM_CRUSH:         p = "ÂÎÅö¤¿¤ê¤¹¤ë"; break;
2635 #else
2636                         case RBM_CRUSH:         p = "crush"; break;
2637 #endif
2638
2639 #ifdef JP
2640 case RBM_ENGULF:        p = "°û¤ß¹þ¤à"; break;
2641 #else
2642                         case RBM_ENGULF:        p = "engulf"; break;
2643 #endif
2644
2645 #ifdef JP
2646 case RBM_CHARGE:        p = "ÀÁµá½ñ¤ò¤è¤³¤¹"; break;
2647 #else
2648                         case RBM_CHARGE:        p = "charge";   break;
2649 #endif
2650
2651 #ifdef JP
2652 case RBM_CRAWL:         p = "ÂΤξå¤òÇ礤²ó¤ë"; break;
2653 #else
2654                         case RBM_CRAWL:         p = "crawl on you"; break;
2655 #endif
2656
2657 #ifdef JP
2658 case RBM_DROOL:         p = "¤è¤À¤ì¤ò¤¿¤é¤¹"; break;
2659 #else
2660                         case RBM_DROOL:         p = "drool on you"; break;
2661 #endif
2662
2663 #ifdef JP
2664 case RBM_SPIT:          p = "¤Ä¤Ð¤òÅǤ¯"; break;
2665 #else
2666                         case RBM_SPIT:          p = "spit"; break;
2667 #endif
2668
2669 #ifdef JP
2670 case RBM_EXPLODE:       p = "Çúȯ¤¹¤ë"; break;
2671 #else
2672                         case RBM_EXPLODE:       p = "explode"; break;
2673 #endif
2674
2675 #ifdef JP
2676 case RBM_GAZE:          p = "¤Ë¤é¤à"; break;
2677 #else
2678                         case RBM_GAZE:          p = "gaze"; break;
2679 #endif
2680
2681 #ifdef JP
2682 case RBM_WAIL:          p = "µã¤­¶«¤Ö"; break;
2683 #else
2684                         case RBM_WAIL:          p = "wail"; break;
2685 #endif
2686
2687 #ifdef JP
2688 case RBM_SPORE:         p = "˦»Ò¤òÈô¤Ð¤¹"; break;
2689 #else
2690                         case RBM_SPORE:         p = "release spores"; break;
2691 #endif
2692
2693                         case RBM_XXX4:          break;
2694 #ifdef JP
2695 case RBM_BEG:           p = "¶â¤ò¤»¤¬¤à"; break;
2696 #else
2697                         case RBM_BEG:           p = "beg"; break;
2698 #endif
2699
2700 #ifdef JP
2701 case RBM_INSULT:        p = "Éî¿«¤¹¤ë"; break;
2702 #else
2703                         case RBM_INSULT:        p = "insult"; break;
2704 #endif
2705
2706 #ifdef JP
2707 case RBM_MOAN:          p = "¤¦¤á¤¯"; break;
2708 #else
2709                         case RBM_MOAN:          p = "moan"; break;
2710 #endif
2711
2712 #ifdef JP
2713 case RBM_SHOW:          p = "²Î¤¦"; break;
2714 #else
2715                         case RBM_SHOW:          p = "sing"; break;
2716 #endif
2717
2718                 }
2719
2720
2721                 /* Default effect */
2722                 q = NULL;
2723
2724                 /* Acquire the effect */
2725                 switch (effect)
2726                 {
2727 #ifdef JP
2728 case RBE_SUPERHURT:
2729 case RBE_HURT:          q = "¹¶·â¤¹¤ë"; break;
2730 #else
2731                         case RBE_SUPERHURT:
2732                         case RBE_HURT:          q = "attack"; break;
2733 #endif
2734
2735 #ifdef JP
2736 case RBE_POISON:        q = "ÆǤò¤¯¤é¤ï¤¹"; break;
2737 #else
2738                         case RBE_POISON:        q = "poison"; break;
2739 #endif
2740
2741 #ifdef JP
2742 case RBE_UN_BONUS:      q = "Îô²½¤µ¤»¤ë"; break;
2743 #else
2744                         case RBE_UN_BONUS:      q = "disenchant"; break;
2745 #endif
2746
2747 #ifdef JP
2748 case RBE_UN_POWER:      q = "ËâÎϤòµÛ¤¤¼è¤ë"; break;
2749 #else
2750                         case RBE_UN_POWER:      q = "drain charges"; break;
2751 #endif
2752
2753 #ifdef JP
2754 case RBE_EAT_GOLD:      q = "¶â¤òÅð¤à"; break;
2755 #else
2756                         case RBE_EAT_GOLD:      q = "steal gold"; break;
2757 #endif
2758
2759 #ifdef JP
2760 case RBE_EAT_ITEM:      q = "¥¢¥¤¥Æ¥à¤òÅð¤à"; break;
2761 #else
2762                         case RBE_EAT_ITEM:      q = "steal items"; break;
2763 #endif
2764
2765 #ifdef JP
2766 case RBE_EAT_FOOD:      q = "¤¢¤Ê¤¿¤Î¿©ÎÁ¤ò¿©¤Ù¤ë"; break;
2767 #else
2768                         case RBE_EAT_FOOD:      q = "eat your food"; break;
2769 #endif
2770
2771 #ifdef JP
2772 case RBE_EAT_LITE:      q = "ÌÀ¤«¤ê¤òµÛ¼ý¤¹¤ë"; break;
2773 #else
2774                         case RBE_EAT_LITE:      q = "absorb light"; break;
2775 #endif
2776
2777 #ifdef JP
2778 case RBE_ACID:          q = "»À¤òÈô¤Ð¤¹"; break;
2779 #else
2780                         case RBE_ACID:          q = "shoot acid"; break;
2781 #endif
2782
2783 #ifdef JP
2784 case RBE_ELEC:          q = "´¶ÅŤµ¤»¤ë"; break;
2785 #else
2786                         case RBE_ELEC:          q = "electrocute"; break;
2787 #endif
2788
2789 #ifdef JP
2790 case RBE_FIRE:          q = "dz¤ä¤¹"; break;
2791 #else
2792                         case RBE_FIRE:          q = "burn"; break;
2793 #endif
2794
2795 #ifdef JP
2796 case RBE_COLD:          q = "Åà¤é¤»¤ë"; break;
2797 #else
2798                         case RBE_COLD:          q = "freeze"; break;
2799 #endif
2800
2801 #ifdef JP
2802 case RBE_BLIND:         q = "ÌÕÌܤˤ¹¤ë"; break;
2803 #else
2804                         case RBE_BLIND:         q = "blind"; break;
2805 #endif
2806
2807 #ifdef JP
2808 case RBE_CONFUSE:       q = "º®Í𤵤»¤ë"; break;
2809 #else
2810                         case RBE_CONFUSE:       q = "confuse"; break;
2811 #endif
2812
2813 #ifdef JP
2814 case RBE_TERRIFY:       q = "¶²Éݤµ¤»¤ë"; break;
2815 #else
2816                         case RBE_TERRIFY:       q = "terrify"; break;
2817 #endif
2818
2819 #ifdef JP
2820 case RBE_PARALYZE:      q = "Ëãá㤵¤»¤ë"; break;
2821 #else
2822                         case RBE_PARALYZE:      q = "paralyze"; break;
2823 #endif
2824
2825 #ifdef JP
2826 case RBE_LOSE_STR:      q = "ÏÓÎϤò¸º¾¯¤µ¤»¤ë"; break;
2827 #else
2828                         case RBE_LOSE_STR:      q = "reduce strength"; break;
2829 #endif
2830
2831 #ifdef JP
2832 case RBE_LOSE_INT:      q = "ÃÎǽ¤ò¸º¾¯¤µ¤»¤ë"; break;
2833 #else
2834                         case RBE_LOSE_INT:      q = "reduce intelligence"; break;
2835 #endif
2836
2837 #ifdef JP
2838 case RBE_LOSE_WIS:      q = "¸­¤µ¤ò¸º¾¯¤µ¤»¤ë"; break;
2839 #else
2840                         case RBE_LOSE_WIS:      q = "reduce wisdom"; break;
2841 #endif
2842
2843 #ifdef JP
2844 case RBE_LOSE_DEX:      q = "´ïÍѤµ¤ò¸º¾¯¤µ¤»¤ë"; break;
2845 #else
2846                         case RBE_LOSE_DEX:      q = "reduce dexterity"; break;
2847 #endif
2848
2849 #ifdef JP
2850 case RBE_LOSE_CON:      q = "Âѵ×ÎϤò¸º¾¯¤µ¤»¤ë"; break;
2851 #else
2852                         case RBE_LOSE_CON:      q = "reduce constitution"; break;
2853 #endif
2854
2855 #ifdef JP
2856 case RBE_LOSE_CHR:      q = "Ì¥ÎϤò¸º¾¯¤µ¤»¤ë"; break;
2857 #else
2858                         case RBE_LOSE_CHR:      q = "reduce charisma"; break;
2859 #endif
2860
2861 #ifdef JP
2862 case RBE_LOSE_ALL:      q = "Á´¥¹¥Æ¡¼¥¿¥¹¤ò¸º¾¯¤µ¤»¤ë"; break;
2863 #else
2864                         case RBE_LOSE_ALL:      q = "reduce all stats"; break;
2865 #endif
2866
2867 #ifdef JP
2868 case RBE_SHATTER:       q = "Ê´ºÕ¤¹¤ë"; break;
2869 #else
2870                         case RBE_SHATTER:       q = "shatter"; break;
2871 #endif
2872
2873 #ifdef JP
2874 case RBE_EXP_10:        q = "·Ð¸³Ãͤò¸º¾¯(10d6+)¤µ¤»¤ë"; break;
2875 #else
2876                         case RBE_EXP_10:        q = "lower experience (by 10d6+)"; break;
2877 #endif
2878
2879 #ifdef JP
2880 case RBE_EXP_20:        q = "·Ð¸³Ãͤò¸º¾¯(20d6+)¤µ¤»¤ë"; break;
2881 #else
2882                         case RBE_EXP_20:        q = "lower experience (by 20d6+)"; break;
2883 #endif
2884
2885 #ifdef JP
2886 case RBE_EXP_40:        q = "·Ð¸³Ãͤò¸º¾¯(40d6+)¤µ¤»¤ë"; break;
2887 #else
2888                         case RBE_EXP_40:        q = "lower experience (by 40d6+)"; break;
2889 #endif
2890
2891 #ifdef JP
2892 case RBE_EXP_80:        q = "·Ð¸³Ãͤò¸º¾¯(80d6+)¤µ¤»¤ë"; break;
2893 #else
2894                         case RBE_EXP_80:        q = "lower experience (by 80d6+)"; break;
2895 #endif
2896
2897 #ifdef JP
2898 case RBE_DISEASE:       q = "ɵ¤¤Ë¤¹¤ë"; break;
2899 #else
2900                         case RBE_DISEASE:       q = "disease"; break;
2901 #endif
2902
2903 #ifdef JP
2904 case RBE_TIME:      q = "»þ´Ö¤òµÕÌá¤ê¤µ¤»¤ë"; break;
2905 #else
2906                         case RBE_TIME:      q = "time"; break;
2907 #endif
2908
2909 #ifdef JP
2910 case RBE_EXP_VAMP:  q = "À¸Ì¿ÎϤòµÛ¼ý¤¹¤ë"; break;
2911 #else
2912                         case RBE_EXP_VAMP:  q = "drain life force"; break;
2913 #endif
2914
2915 #ifdef JP
2916 case RBE_DR_MANA:  q = "ËâÎϤòÃ¥¤¦"; break;
2917 #else
2918                         case RBE_DR_MANA:  q = "drain mana force"; break;
2919 #endif
2920
2921                 }
2922
2923
2924 #ifdef JP
2925                 if ( r == 0 ) hooked_roff( format("%^s¤Ï", wd_he[msex]) );
2926
2927                 /***¼ã´³É½¸½¤òÊѹ¹ ita ***/
2928
2929                         /* Describe damage (if known) */
2930                 if (d1 && d2 && (know_everything || know_damage(r_idx, m)))
2931                   {
2932                     
2933                     /* Display the damage */
2934                     hooked_roff(format(" %dd%d ", d1, d2));
2935                     hooked_roff("¤Î¥À¥á¡¼¥¸¤Ç");
2936                   }
2937                 /* Hack -- force a method */
2938                 if (!p) p = "²¿¤«´ñ̯¤Ê¤³¤È¤ò¤¹¤ë";
2939
2940                 /* Describe the method */
2941                 /* XX¤·¤ÆYY¤·/XX¤·¤ÆYY¤¹¤ë/XX¤·/XX¤¹¤ë */
2942                 if(q) jverb( p ,jverb_buf, JVERB_TO);
2943                 else if(r!=n-1) jverb( p ,jverb_buf, JVERB_AND);
2944                 else strcpy(jverb_buf, p);
2945
2946                 hooked_roff(jverb_buf);
2947
2948                 /* Describe the effect (if any) */
2949                 if (q)
2950                 {
2951                   if(r!=n-1) jverb( q,jverb_buf, JVERB_AND);
2952                   else strcpy(jverb_buf,q); 
2953                   hooked_roff(jverb_buf);
2954                 }
2955                 if(r!=n-1) hooked_roff("¡¢");
2956 #else
2957                 /* Introduce the attack description */
2958                 if (!r)
2959                 {
2960                         hooked_roff(format("%^s can ", wd_he[msex]));
2961                 }
2962                 else if (r < n-1)
2963                 {
2964                         hooked_roff(", ");
2965                 }
2966                 else
2967                 {
2968                         hooked_roff(", and ");
2969                 }
2970
2971
2972                 /* Hack -- force a method */
2973                 if (!p) p = "do something weird";
2974
2975                 /* Describe the method */
2976                 hooked_roff(p);
2977
2978
2979                 /* Describe the effect (if any) */
2980                 if (q)
2981                 {
2982                         /* Describe the attack type */
2983                         hooked_roff(" to ");
2984                         hooked_roff(q);
2985
2986                         /* Describe damage (if known) */
2987                         if (d1 && d2 && (know_everything || know_damage(r_idx, m)))
2988                         {
2989                                 /* Display the damage */
2990                                 hooked_roff(" with damage");
2991                                 hooked_roff(format(" %dd%d", d1, d2));
2992                         }
2993                 }
2994 #endif
2995
2996
2997
2998                 /* Count the attacks as printed */
2999                 r++;
3000         }
3001
3002         /* Finish sentence above */
3003         if (r)
3004         {
3005 #ifdef JP
3006                 hooked_roff("¡£");
3007 #else
3008                 hooked_roff(".  ");
3009 #endif
3010
3011         }
3012
3013         /* Notice lack of attacks */
3014         else if (flags1 & RF1_NEVER_BLOW)
3015         {
3016 #ifdef JP
3017                 hooked_roff(format("%^s¤ÏʪÍýŪ¤Ê¹¶·âÊýË¡¤ò»ý¤¿¤Ê¤¤¡£", wd_he[msex]));
3018 #else
3019                 hooked_roff(format("%^s has no physical attacks.  ", wd_he[msex]));
3020 #endif
3021
3022         }
3023
3024         /* Or describe the lack of knowledge */
3025         else
3026         {
3027 #ifdef JP
3028                 hooked_roff(format("%s¹¶·â¤Ë¤Ä¤¤¤Æ¤Ï²¿¤âÃΤé¤Ê¤¤¡£", wd_his[msex]));
3029 #else
3030                 hooked_roff(format("Nothing is known about %s attack.  ", wd_his[msex]));
3031 #endif
3032
3033         }
3034
3035
3036         /*
3037          * Notice "Quest" monsters, but only if you
3038          * already encountered the monster.
3039          */
3040         if ((flags1 & RF1_QUESTOR) && ((r_ptr->r_sights) && (r_ptr->max_num) && ((r_idx == MON_OBERON) || (r_idx == MON_SERPENT))))
3041         {
3042 #ifdef JP
3043                 hook_c_roff(TERM_VIOLET, "¤¢¤Ê¤¿¤Ï¤³¤Î¥â¥ó¥¹¥¿¡¼¤ò»¦¤·¤¿¤¤¤È¤¤¤¦¶¯¤¤Íß˾¤ò´¶¤¸¤Æ¤¤¤ë...");
3044 #else
3045                 hook_c_roff(TERM_VIOLET, "You feel an intense desire to kill this monster...  ");
3046 #endif
3047
3048         }
3049
3050         else if (flags7 & RF7_GUARDIAN)
3051         {
3052 #ifdef JP
3053                 hook_c_roff(TERM_L_RED, "¤³¤Î¥â¥ó¥¹¥¿¡¼¤Ï¥À¥ó¥¸¥ç¥ó¤Î¼ç¤Ç¤¢¤ë¡£");
3054 #else
3055                 hook_c_roff(TERM_L_RED, "This monster is the master of a dungeon.");
3056 #endif
3057
3058         }
3059
3060
3061         /* All done */
3062         hooked_roff("\n");
3063
3064 }
3065
3066
3067
3068 /*
3069  * Hack -- Display the "name" and "attr/chars" of a monster race
3070  */
3071 void roff_top(int r_idx)
3072 {
3073         monster_race    *r_ptr = &r_info[r_idx];
3074
3075         byte            a1, a2;
3076         char            c1, c2;
3077
3078
3079         /* Access the chars */
3080         c1 = r_ptr->d_char;
3081         c2 = r_ptr->x_char;
3082
3083         /* Access the attrs */
3084         a1 = r_ptr->d_attr;
3085         a2 = r_ptr->x_attr;
3086
3087
3088         /* Clear the top line */
3089         Term_erase(0, 0, 255);
3090
3091         /* Reset the cursor */
3092         Term_gotoxy(0, 0);
3093
3094         /* A title (use "The" for non-uniques) */
3095 #ifdef JP
3096         if (0)
3097 #else
3098         if (!(r_ptr->flags1 & RF1_UNIQUE))
3099 #endif
3100
3101         {
3102                 Term_addstr(-1, TERM_WHITE, "The ");
3103         }
3104
3105         /* Dump the name */
3106         Term_addstr(-1, TERM_WHITE, (r_name + r_ptr->name));
3107
3108         /* Append the "standard" attr/char info */
3109         Term_addstr(-1, TERM_WHITE, " ('");
3110         Term_addch(a1, c1);
3111         if (use_bigtile && (a1 & 0x80)) Term_addch(255, -1);
3112         Term_addstr(-1, TERM_WHITE, "')");
3113
3114         /* Append the "optional" attr/char info */
3115         Term_addstr(-1, TERM_WHITE, "/('");
3116         Term_addch(a2, c2);
3117         if (use_bigtile && (a2 & 0x80)) Term_addch(255, -1);
3118         Term_addstr(-1, TERM_WHITE, "'):");
3119
3120         /* Wizards get extra info */
3121         if (p_ptr->wizard)
3122         {
3123                 char buf[6];
3124
3125                 sprintf(buf, "%d", r_idx);
3126
3127                 Term_addstr(-1, TERM_WHITE, " (");
3128                 Term_addstr(-1, TERM_L_BLUE, buf);
3129                 Term_addch(TERM_WHITE, ')');
3130         }
3131 }
3132
3133
3134
3135 /*
3136  * Hack -- describe the given monster race at the top of the screen
3137  */
3138 void screen_roff(int r_idx, int mode)
3139 {
3140         /* Flush messages */
3141         msg_print(NULL);
3142
3143         /* Begin recall */
3144         Term_erase(0, 1, 255);
3145
3146         hook_c_roff = c_roff;
3147
3148         /* Recall monster */
3149         roff_aux(r_idx, mode);
3150
3151         /* Describe monster */
3152         roff_top(r_idx);
3153 }
3154
3155
3156
3157
3158 /*
3159  * Hack -- describe the given monster race in the current "term" window
3160  */
3161 void display_roff(int r_idx)
3162 {
3163         int y;
3164
3165         /* Erase the window */
3166         for (y = 0; y < Term->hgt; y++)
3167         {
3168                 /* Erase the line */
3169                 Term_erase(0, y, 255);
3170         }
3171
3172         /* Begin recall */
3173         Term_gotoxy(0, 1);
3174
3175         hook_c_roff = c_roff;
3176
3177         /* Recall monster */
3178         roff_aux(r_idx, 0);
3179
3180         /* Describe monster */
3181         roff_top(r_idx);
3182 }
3183
3184
3185
3186 /*
3187  * Hack -- output description of the given monster race
3188  */
3189 void output_monster_spoiler(int r_idx, void (*roff_func)(byte attr, cptr str))
3190 {
3191         hook_c_roff = roff_func;
3192
3193         /* Recall monster */
3194         roff_aux(r_idx, 0x03);
3195 }
3196
3197
3198 bool monster_quest(int r_idx)
3199 {
3200         monster_race *r_ptr = &r_info[r_idx];
3201
3202         /* Random quests are in the dungeon */
3203         if (r_ptr->flags8 & RF8_WILD_ONLY) return FALSE;
3204
3205         /* No random quests for aquatic monsters */
3206         if (r_ptr->flags7 & RF7_AQUATIC) return FALSE;
3207
3208         /* No random quests for multiplying monsters */
3209         if (r_ptr->flags2 & RF2_MULTIPLY) return FALSE;
3210
3211         /* No quests to kill friendly monsters */
3212         if (r_ptr->flags7 & RF7_FRIENDLY) return FALSE;
3213
3214         return TRUE;
3215 }
3216
3217
3218 bool monster_dungeon(int r_idx)
3219 {
3220         monster_race *r_ptr = &r_info[r_idx];
3221
3222         if (!(r_ptr->flags8 & RF8_WILD_ONLY))
3223                 return TRUE;
3224         else
3225                 return FALSE;
3226 }
3227
3228
3229 bool monster_ocean(int r_idx)
3230 {
3231         monster_race *r_ptr = &r_info[r_idx];
3232
3233         if (r_ptr->flags8 & RF8_WILD_OCEAN)
3234                 return TRUE;
3235         else
3236                 return FALSE;
3237 }
3238
3239
3240 bool monster_shore(int r_idx)
3241 {
3242         monster_race *r_ptr = &r_info[r_idx];
3243
3244         if (r_ptr->flags8 & RF8_WILD_SHORE)
3245                 return TRUE;
3246         else
3247                 return FALSE;
3248 }
3249
3250
3251 static bool monster_waste(int r_idx)
3252 {
3253         monster_race *r_ptr = &r_info[r_idx];
3254
3255         if (r_ptr->flags8 & (RF8_WILD_WASTE | RF8_WILD_ALL))
3256                 return TRUE;
3257         else
3258                 return FALSE;
3259 }
3260
3261
3262 bool monster_town(int r_idx)
3263 {
3264         monster_race *r_ptr = &r_info[r_idx];
3265
3266         if (r_ptr->flags8 & (RF8_WILD_TOWN | RF8_WILD_ALL))
3267                 return TRUE;
3268         else
3269                 return FALSE;
3270 }
3271
3272
3273 bool monster_wood(int r_idx)
3274 {
3275         monster_race *r_ptr = &r_info[r_idx];
3276
3277         if (r_ptr->flags8 & (RF8_WILD_WOOD | RF8_WILD_ALL))
3278                 return TRUE;
3279         else
3280                 return FALSE;
3281 }
3282
3283
3284 bool monster_volcano(int r_idx)
3285 {
3286         monster_race *r_ptr = &r_info[r_idx];
3287
3288         if (r_ptr->flags8 & RF8_WILD_VOLCANO)
3289                 return TRUE;
3290         else
3291                 return FALSE;
3292 }
3293
3294
3295 bool monster_mountain(int r_idx)
3296 {
3297         monster_race *r_ptr = &r_info[r_idx];
3298
3299         if (r_ptr->flags8 & RF8_WILD_MOUNTAIN)
3300                 return TRUE;
3301         else
3302                 return FALSE;
3303 }
3304
3305
3306 bool monster_grass(int r_idx)
3307 {
3308         monster_race *r_ptr = &r_info[r_idx];
3309
3310         if (r_ptr->flags8 & (RF8_WILD_GRASS | RF8_WILD_ALL))
3311                 return TRUE;
3312         else
3313                 return FALSE;
3314 }
3315
3316
3317 bool monster_deep_water(int r_idx)
3318 {
3319         monster_race *r_ptr = &r_info[r_idx];
3320
3321         if (!monster_dungeon(r_idx)) return FALSE;
3322
3323         if (r_ptr->flags7 & RF7_AQUATIC)
3324                 return TRUE;
3325         else
3326                 return FALSE;
3327 }
3328
3329
3330 bool monster_shallow_water(int r_idx)
3331 {
3332         monster_race *r_ptr = &r_info[r_idx];
3333
3334         if (!monster_dungeon(r_idx)) return FALSE;
3335
3336         if (r_ptr->flags2 & RF2_AURA_FIRE)
3337                 return FALSE;
3338         else
3339                 return TRUE;
3340 }
3341
3342
3343 bool monster_lava(int r_idx)
3344 {
3345         monster_race *r_ptr = &r_info[r_idx];
3346
3347         if (!monster_dungeon(r_idx)) return FALSE;
3348
3349         if (((r_ptr->flags3 & RF3_IM_FIRE) ||
3350              (r_ptr->flags7 & RF7_CAN_FLY)) &&
3351             !(r_ptr->flags3 & RF3_AURA_COLD))
3352                 return TRUE;
3353         else
3354                 return FALSE;
3355 }
3356
3357
3358 monster_hook_type get_monster_hook(void)
3359 {
3360         if (!dun_level && !p_ptr->inside_quest)
3361         {
3362                 switch (wilderness[p_ptr->wilderness_y][p_ptr->wilderness_x].terrain)
3363                 {
3364                 case TERRAIN_TOWN:
3365                         return (monster_hook_type)monster_town;
3366                 case TERRAIN_DEEP_WATER:
3367                         return (monster_hook_type)monster_ocean;
3368                 case TERRAIN_SHALLOW_WATER:
3369                 case TERRAIN_SWAMP:
3370                         return (monster_hook_type)monster_shore;
3371                 case TERRAIN_DIRT:
3372                 case TERRAIN_DESERT:
3373                         return (monster_hook_type)monster_waste;
3374                 case TERRAIN_GRASS:
3375                         return (monster_hook_type)monster_grass;
3376                 case TERRAIN_TREES:
3377                         return (monster_hook_type)monster_wood;
3378                 case TERRAIN_SHALLOW_LAVA:
3379                 case TERRAIN_DEEP_LAVA:
3380                         return (monster_hook_type)monster_volcano;
3381                 case TERRAIN_MOUNTAIN:
3382                         return (monster_hook_type)monster_mountain;
3383                 default:
3384                         return (monster_hook_type)monster_dungeon;
3385                 }
3386         }
3387         else
3388         {
3389                 return (monster_hook_type)monster_dungeon;
3390         }
3391 }
3392
3393
3394 monster_hook_type get_monster_hook2(int y, int x)
3395 {
3396         /* Set the monster list */
3397         switch (cave[y][x].feat)
3398         {
3399         case FEAT_SHAL_WATER:
3400                 return (monster_hook_type)monster_shallow_water;
3401         case FEAT_DEEP_WATER:
3402                 return (monster_hook_type)monster_deep_water;
3403         case FEAT_DEEP_LAVA:
3404         case FEAT_SHAL_LAVA:
3405                 return (monster_hook_type)monster_lava;
3406         default:
3407                 return NULL;
3408         }
3409 }
3410
3411
3412 void set_friendly(monster_type *m_ptr)
3413 {
3414         m_ptr->smart |= SM_FRIENDLY;
3415 }
3416
3417 void set_pet(monster_type *m_ptr)
3418 {
3419         /* Check for quest completion */
3420         check_quest_completion(m_ptr);
3421
3422         m_ptr->smart |= SM_PET;
3423         if (!(r_info[m_ptr->r_idx].flags3 & (RF3_EVIL | RF3_GOOD)))
3424                 m_ptr->sub_align = SUB_ALIGN_NEUTRAL;
3425 }
3426
3427 /*
3428  * Makes the monster hostile towards the player
3429  */
3430 void set_hostile(monster_type *m_ptr)
3431 {
3432         if (p_ptr->inside_battle) return;
3433         m_ptr->smart &= ~SM_PET;
3434         m_ptr->smart &= ~SM_FRIENDLY;
3435 }
3436
3437
3438 /*
3439  * Anger the monster
3440  */
3441 void anger_monster(monster_type *m_ptr)
3442 {
3443         if (p_ptr->inside_battle) return;
3444         if (is_friendly(m_ptr))
3445         {
3446                 char m_name[80];
3447
3448                 monster_desc(m_name, m_ptr, 0);
3449 #ifdef JP
3450 msg_format("%^s¤ÏÅܤä¿¡ª", m_name);
3451 #else
3452                 msg_format("%^s gets angry!", m_name);
3453 #endif
3454
3455                 set_hostile(m_ptr);
3456
3457                 chg_virtue(V_INDIVIDUALISM, 1);
3458                 chg_virtue(V_HONOUR, -1);
3459                 chg_virtue(V_JUSTICE, -1);
3460                 chg_virtue(V_COMPASSION, -1);
3461         }
3462 }
3463
3464
3465 /*
3466  * Check if monster can cross terrain
3467  */
3468 bool monster_can_cross_terrain(byte feat, monster_race *r_ptr)
3469 {
3470         /* Pit */
3471         if (feat == FEAT_DARK_PIT)
3472         {
3473                 if (r_ptr->flags7 & RF7_CAN_FLY)
3474                         return TRUE;
3475                 else
3476                         return FALSE;
3477         }
3478         /* Deep water */
3479         if (feat == FEAT_DEEP_WATER)
3480         {
3481                 if ((r_ptr->flags7 & RF7_AQUATIC) ||
3482                     (r_ptr->flags7 & RF7_CAN_FLY) ||
3483                     (r_ptr->flags7 & RF7_CAN_SWIM))
3484                         return TRUE;
3485                 else
3486                         return FALSE;
3487         }
3488         /* Shallow water */
3489         else if (feat == FEAT_SHAL_WATER)
3490         {
3491                 if (!(r_ptr->flags2 & RF2_AURA_FIRE) ||
3492                     (r_ptr->flags7 & RF7_AQUATIC) ||
3493                     (r_ptr->flags7 & RF7_CAN_FLY) ||
3494                     (r_ptr->flags7 & RF7_CAN_SWIM))
3495                         return TRUE;
3496                 else
3497                         return FALSE;
3498         }
3499         /* Aquatic monster */
3500         else if ((r_ptr->flags7 & RF7_AQUATIC) &&
3501                     !(r_ptr->flags7 & RF7_CAN_FLY))
3502         {
3503                 return FALSE;
3504         }
3505         /* Lava */
3506         else if ((feat == FEAT_SHAL_LAVA) ||
3507             (feat == FEAT_DEEP_LAVA))
3508         {
3509                 if ((r_ptr->flags3 & RF3_IM_FIRE) ||
3510                     (r_ptr->flags7 & RF7_CAN_FLY))
3511                         return TRUE;
3512                 else
3513                         return FALSE;
3514         }
3515
3516         return TRUE;
3517 }
3518
3519
3520 /*
3521  * Check if two monsters are enemies
3522  */
3523 bool are_enemies(monster_type *m_ptr, monster_type *n_ptr)
3524 {
3525         monster_race *r_ptr = &r_info[m_ptr->r_idx];
3526         monster_race *s_ptr = &r_info[n_ptr->r_idx];
3527
3528         if (p_ptr->inside_battle)
3529         {
3530                 if (is_pet(m_ptr) || is_pet(n_ptr)) return FALSE;
3531                 return TRUE;
3532         }
3533
3534         if ((r_ptr->flags8 & (RF8_WILD_TOWN | RF8_WILD_ALL))
3535             && (s_ptr->flags8 & (RF8_WILD_TOWN | RF8_WILD_ALL)))
3536         {
3537                 if (!is_pet(m_ptr) && !is_pet(n_ptr)) return FALSE;
3538         }
3539
3540         /* Friendly vs. opposite aligned normal or pet */
3541         if (m_ptr->sub_align != n_ptr->sub_align)
3542         {
3543                 if (((m_ptr->sub_align & SUB_ALIGN_EVIL) &&
3544                           (n_ptr->sub_align & SUB_ALIGN_GOOD)) ||
3545                          ((m_ptr->sub_align & SUB_ALIGN_GOOD) &&
3546                           (n_ptr->sub_align & SUB_ALIGN_EVIL)))
3547                 {
3548                         if (!(m_ptr->mflag2 & MFLAG_CHAMELEON) || !(n_ptr->mflag2 & MFLAG_CHAMELEON)) return TRUE;
3549                 }
3550         }
3551
3552         /* Hostile vs. non-hostile */
3553         if (is_hostile(m_ptr) != is_hostile(n_ptr))
3554         {
3555                 return TRUE;
3556         }
3557
3558         /* Default */
3559         return FALSE;
3560 }
3561
3562
3563 /*
3564  * Is the monster "alive"?
3565  *
3566  * Used to determine the message to print for a killed monster.
3567  * ("dies", "destroyed")
3568  */
3569 bool monster_living(monster_race *r_ptr)
3570 {
3571         /* Non-living, undead, or demon */
3572         if (r_ptr->flags3 & (RF3_DEMON | RF3_UNDEAD | RF3_NONLIVING))
3573                 return FALSE;
3574         else
3575                 return TRUE;
3576 }