OSDN Git Service

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