OSDN Git Service

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