OSDN Git Service

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