OSDN Git Service

モンスタースポイラーのコードを思い出のコードと共通化。
authormogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sun, 24 Mar 2002 12:50:39 +0000 (12:50 +0000)
committermogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sun, 24 Mar 2002 12:50:39 +0000 (12:50 +0000)
ついでにcheat_knowと町でのモンスター調査のコード整理。

src/cmd3.c
src/externs.h
src/monster1.c
src/wizard1.c

index 93368aa..bf741f1 100644 (file)
@@ -2938,8 +2938,6 @@ bool research_mon(void)
 
        u16b why = 0;
 
-       monster_race *r2_ptr;
-
        u16b    *who;
 
        /* XTRA HACK WHATSEARCH */
@@ -2952,8 +2950,6 @@ bool research_mon(void)
        static int old_sym = '\0';
        static int old_i = 0;
 
-       oldcheat = cheat_know;
-
 
        /* Save the screen */
        screen_save();
@@ -3050,8 +3046,6 @@ sprintf(buf, "%c - %s", sym, "̵
        {
                monster_race *r_ptr = &r_info[i];
 
-               cheat_know = TRUE;
-
                /* XTRA HACK WHATSEARCH */
                /* Require non-unique monsters if needed */
                if (norm && (r_ptr->flags1 & (RF1_UNIQUE))) continue;
@@ -3092,8 +3086,6 @@ sprintf(buf, "%c - %s", sym, "̵
        /* Nothing to recall */
        if (!n)
        {
-               cheat_know = oldcheat;
-
                /* Free the "who" array */
                C_KILL(who, max_r_idx, u16b);
 
@@ -3156,14 +3148,52 @@ Term_addstr(-1, TERM_WHITE, " ['r'
                        if (recall)
                        {
                                /* Recall on screen */
-                               r2_ptr = &r_info[r_idx];
-
-                               oldkills = r2_ptr->r_tkills;
-                               oldwake = r2_ptr->r_wake;
-                               screen_roff(who[i], 1);
-                               r2_ptr->r_tkills = oldkills;
-                               r2_ptr->r_wake = oldwake;
-                               cheat_know = oldcheat;
+                               monster_race *r_ptr = &r_info[r_idx];
+                               int m;
+
+                               /* Hack -- Maximal info */
+                               r_ptr->r_wake = r_ptr->r_ignore = MAX_UCHAR;
+                               
+                               /* Observe "maximal" attacks */
+                               for (m = 0; m < 4; m++)
+                               {
+                                       /* Examine "actual" blows */
+                                       if (r_ptr->blow[m].effect || r_ptr->blow[m].method)
+                                       {
+                                               /* Hack -- maximal observations */
+                                               r_ptr->r_blows[m] = MAX_UCHAR;
+                                       }
+                               }
+                               
+                               /* Hack -- maximal drops */
+                               r_ptr->r_drop_gold = r_ptr->r_drop_item =
+                                       (((r_ptr->flags1 & RF1_DROP_4D2) ? 8 : 0) +
+                                        ((r_ptr->flags1 & RF1_DROP_3D2) ? 6 : 0) +
+                                        ((r_ptr->flags1 & RF1_DROP_2D2) ? 4 : 0) +
+                                        ((r_ptr->flags1 & RF1_DROP_1D2) ? 2 : 0) +
+                                        ((r_ptr->flags1 & RF1_DROP_90)  ? 1 : 0) +
+                                        ((r_ptr->flags1 & RF1_DROP_60)  ? 1 : 0));
+                               
+                               /* Hack -- but only "valid" drops */
+                               if (r_ptr->flags1 & RF1_ONLY_GOLD) r_ptr->r_drop_item = 0;
+                               if (r_ptr->flags1 & RF1_ONLY_ITEM) r_ptr->r_drop_gold = 0;
+                               
+                               /* Hack -- observe many spells */
+                               r_ptr->r_cast_inate = MAX_UCHAR;
+                               r_ptr->r_cast_spell = MAX_UCHAR;
+                               
+                               /* Hack -- know all the flags */
+                               r_ptr->r_flags1 = r_ptr->flags1;
+                               r_ptr->r_flags2 = r_ptr->flags2;
+                               r_ptr->r_flags3 = r_ptr->flags3;
+                               r_ptr->r_flags4 = r_ptr->flags4;
+                               r_ptr->r_flags5 = r_ptr->flags5;
+                               r_ptr->r_flags6 = r_ptr->flags6;
+                               
+                               r_ptr->r_xtra1 |= MR1_SINKA;
+                       
+                               /* know every thing mode */
+                               screen_roff(r_idx, 0x01);
                                notpicked = FALSE;
 
                                /* XTRA HACK REMEMBER_IDX */
@@ -3209,8 +3239,6 @@ Term_addstr(-1, TERM_WHITE, " ['r'
        /* Re-display the identity */
        /* prt(buf, 5, 5);*/
 
-       cheat_know = oldcheat;
-
        /* Free the "who" array */
        C_KILL(who, max_r_idx, u16b);
 
index ec1c4fc..452311c 100644 (file)
@@ -767,8 +767,9 @@ extern void monster_gain_exp(int m_idx, int s_idx);
 
 /* monster1.c */
 extern void roff_top(int r_idx);
-extern void screen_roff(int r_idx, int remember);
+extern void screen_roff(int r_idx, int mode);
 extern void display_roff(int r_idx);
+extern void output_monster_spoiler(int r_idx, void (*roff_func)(byte attr, cptr str));
 extern void create_name(int type, char *name);
 /* monster1.c (was in monster3.c ??) */
 extern bool monster_quest(int r_idx);
index 754f3fe..3761220 100644 (file)
@@ -106,7 +106,19 @@ static bool know_damage(int r_idx, int i)
 
 
 /*
- * Hack -- display monster information using "roff()"
+ * Prepare hook for c_roff(). It will be changed for spoiler generation in wizard1.c.
+ */
+void (*hook_c_roff)(byte attr, cptr str) = c_roff;
+
+static void hooked_roff(cptr str)
+{
+       /* Spawn */
+       hook_c_roff(TERM_WHITE, str);
+}
+
+
+/*
+ * Hack -- display monster information using "hooked_roff()"
  *
  * Note that there is now a compiler option to only read the monster
  * descriptions from the raw file when they are actually needed, which
@@ -117,7 +129,7 @@ static bool know_damage(int r_idx, int i)
  * left edge of the screen, on a cleared line, in which the recall is
  * to take place.  One extra blank line is left after the recall.
  */
-static void roff_aux(int r_idx, int remem)
+static void roff_aux(int r_idx, int mode)
 {
        monster_race    *r_ptr = &r_info[r_idx];
 
@@ -146,40 +158,36 @@ static void roff_aux(int r_idx, int remem)
        u32b            flags6;
        u32b            flags7;
 
+       byte drop_gold, drop_item;
+
        int             vn = 0;
        byte            color[64];
        cptr            vp[64];
 
-       monster_race    save_mem;
+       bool know_everything = FALSE;
 
+       /* Obtain a copy of the "known" number of drops */
+       drop_gold = r_ptr->r_drop_gold;
+       drop_item = r_ptr->r_drop_item;
 
-       /* Cheat -- Know everything */
-       if (cheat_know)
-       {
-               /* XXX XXX XXX */
-
-               /* Save the "old" memory */
-               save_mem = *r_ptr;
-
-               /* Hack -- Maximal kills */
-/*             r_ptr->r_tkills = MAX_SHORT; */
-
-               /* Hack -- Maximal info */
-               r_ptr->r_wake = r_ptr->r_ignore = MAX_UCHAR;
+       /* Obtain a copy of the "known" flags */
+       flags1 = (r_ptr->flags1 & r_ptr->r_flags1);
+       flags2 = (r_ptr->flags2 & r_ptr->r_flags2);
+       flags3 = (r_ptr->flags3 & r_ptr->r_flags3);
+       flags4 = (r_ptr->flags4 & r_ptr->r_flags4);
+       flags5 = (r_ptr->flags5 & r_ptr->r_flags5);
+       flags6 = (r_ptr->flags6 & r_ptr->r_flags6);
+       flags7 = (r_ptr->flags7 & r_ptr->flags7);
 
-               /* Observe "maximal" attacks */
-               for (m = 0; m < 4; m++)
-               {
-                       /* Examine "actual" blows */
-                       if (r_ptr->blow[m].effect || r_ptr->blow[m].method)
-                       {
-                               /* Hack -- maximal observations */
-                               r_ptr->r_blows[m] = MAX_UCHAR;
-                       }
-               }
+       /* cheat_know or reserch_mon() */
+       if (cheat_know || (mode & 0x01))
+               know_everything = TRUE;
 
+       /* Cheat -- Know everything */
+       if (know_everything)
+       {
                /* Hack -- maximal drops */
-               r_ptr->r_drop_gold = r_ptr->r_drop_item =
+               drop_gold = drop_item =
                (((r_ptr->flags1 & RF1_DROP_4D2) ? 8 : 0) +
                 ((r_ptr->flags1 & RF1_DROP_3D2) ? 6 : 0) +
                 ((r_ptr->flags1 & RF1_DROP_2D2) ? 4 : 0) +
@@ -188,22 +196,16 @@ static void roff_aux(int r_idx, int remem)
                 ((r_ptr->flags1 & RF1_DROP_60)  ? 1 : 0));
 
                /* Hack -- but only "valid" drops */
-               if (r_ptr->flags1 & RF1_ONLY_GOLD) r_ptr->r_drop_item = 0;
-               if (r_ptr->flags1 & RF1_ONLY_ITEM) r_ptr->r_drop_gold = 0;
-
-               /* Hack -- observe many spells */
-               r_ptr->r_cast_inate = MAX_UCHAR;
-               r_ptr->r_cast_spell = MAX_UCHAR;
+               if (r_ptr->flags1 & RF1_ONLY_GOLD) drop_item = 0;
+               if (r_ptr->flags1 & RF1_ONLY_ITEM) drop_gold = 0;
 
                /* Hack -- know all the flags */
-               r_ptr->r_flags1 = r_ptr->flags1;
-               r_ptr->r_flags2 = r_ptr->flags2;
-               r_ptr->r_flags3 = r_ptr->flags3;
-               r_ptr->r_flags4 = r_ptr->flags4;
-               r_ptr->r_flags5 = r_ptr->flags5;
-               r_ptr->r_flags6 = r_ptr->flags6;
-
-               r_ptr->r_xtra1 |= MR1_SINKA;
+               flags1 = r_ptr->flags1;
+               flags2 = r_ptr->flags2;
+               flags3 = r_ptr->flags3;
+               flags4 = r_ptr->flags4;
+               flags5 = r_ptr->flags5;
+               flags6 = r_ptr->flags6;
        }
 
 
@@ -211,17 +213,6 @@ static void roff_aux(int r_idx, int remem)
        if (r_ptr->flags1 & RF1_FEMALE) msex = 2;
        else if (r_ptr->flags1 & RF1_MALE) msex = 1;
 
-
-       /* Obtain a copy of the "known" flags */
-       flags1 = (r_ptr->flags1 & r_ptr->r_flags1);
-       flags2 = (r_ptr->flags2 & r_ptr->r_flags2);
-       flags3 = (r_ptr->flags3 & r_ptr->r_flags3);
-       flags4 = (r_ptr->flags4 & r_ptr->r_flags4);
-       flags5 = (r_ptr->flags5 & r_ptr->r_flags5);
-       flags6 = (r_ptr->flags6 & r_ptr->r_flags6);
-       flags7 = (r_ptr->flags7 & r_ptr->flags7);
-
-
        /* Assume some "obvious" flags */
        if (r_ptr->flags1 & RF1_UNIQUE)  flags1 |= (RF1_UNIQUE);
        if (r_ptr->flags1 & RF1_QUESTOR) flags1 |= (RF1_QUESTOR);
@@ -234,7 +225,7 @@ static void roff_aux(int r_idx, int remem)
        if (r_ptr->flags1 & RF1_ESCORTS) flags1 |= (RF1_ESCORTS);
 
        /* Killing a monster reveals some properties */
-       if (r_ptr->r_tkills || cheat_know)
+       if (r_ptr->r_tkills || know_everything)
        {
                /* Know "race" flags */
                if (r_ptr->flags3 & RF3_ORC)      flags3 |= (RF3_ORC);
@@ -257,6 +248,12 @@ static void roff_aux(int r_idx, int remem)
                if (r_ptr->flags1 & RF1_FORCE_MAXHP) flags1 |= (RF1_FORCE_MAXHP);
        }
 
+       /* For output_monster_spoiler() */
+       if (mode & 0x02)
+       {
+               /* Nothing to do */
+       }
+       else
 
        /* Treat uniques differently */
        if (flags1 & RF1_UNIQUE)
@@ -269,9 +266,9 @@ static void roff_aux(int r_idx, int remem)
                {
                        /* Killed ancestors */
 #ifdef JP
-                       roff(format("%^s¤Ï¤¢¤Ê¤¿¤ÎÀèÁĤò %d ¿ÍÁò¤Ã¤Æ¤¤¤ë",
+                       hooked_roff(format("%^s¤Ï¤¢¤Ê¤¿¤ÎÀèÁĤò %d ¿ÍÁò¤Ã¤Æ¤¤¤ë",
 #else
-                       roff(format("%^s has slain %d of your ancestors",
+                       hooked_roff(format("%^s has slain %d of your ancestors",
 #endif
 
                                    wd_he[msex], r_ptr->r_deaths));
@@ -280,9 +277,9 @@ static void roff_aux(int r_idx, int remem)
                        if (dead)
                        {
 #ifdef JP
-                               roff(format("¤¬¡¢¤¹¤Ç¤ËµØƤ¤Á¤Ï²Ì¤¿¤·¤Æ¤¤¤ë¡ª"));
+                               hooked_roff(format("¤¬¡¢¤¹¤Ç¤ËµØƤ¤Á¤Ï²Ì¤¿¤·¤Æ¤¤¤ë¡ª"));
 #else
-                               roff(format(", but you have avenged %s!  ",
+                               hooked_roff(format(", but you have avenged %s!  ",
                                            plural(r_ptr->r_deaths, "him", "them")));
 #endif
 
@@ -292,9 +289,9 @@ static void roff_aux(int r_idx, int remem)
                        else
                        {
 #ifdef JP
-                               roff(format("¤Î¤Ë¡¢¤Þ¤ÀµØƤ¤Á¤ò²Ì¤¿¤·¤Æ¤¤¤Ê¤¤¡£"));
+                               hooked_roff(format("¤Î¤Ë¡¢¤Þ¤ÀµØƤ¤Á¤ò²Ì¤¿¤·¤Æ¤¤¤Ê¤¤¡£"));
 #else
-                               roff(format(", who %s unavenged.  ",
+                               hooked_roff(format(", who %s unavenged.  ",
                                            plural(r_ptr->r_deaths, "remains", "remain")));
 #endif
 
@@ -305,9 +302,9 @@ static void roff_aux(int r_idx, int remem)
                else if (dead)
                {
 #ifdef JP
-                       roff("¤¢¤Ê¤¿¤Ï¤³¤ÎµØŨ¤ò¤¹¤Ç¤ËÁò¤êµî¤Ã¤Æ¤¤¤ë¡£");
+                       hooked_roff("¤¢¤Ê¤¿¤Ï¤³¤ÎµØŨ¤ò¤¹¤Ç¤ËÁò¤êµî¤Ã¤Æ¤¤¤ë¡£");
 #else
-                       roff("You have slain this foe.  ");
+                       hooked_roff("You have slain this foe.  ");
 #endif
 
                }
@@ -318,10 +315,10 @@ static void roff_aux(int r_idx, int remem)
        {
                /* Dead ancestors */
 #ifdef JP
-               roff(format("¤³¤Î¥â¥ó¥¹¥¿¡¼¤Ï¤¢¤Ê¤¿¤ÎÀèÁĤò %d ¿ÍÁò¤Ã¤Æ¤¤¤ë",
+               hooked_roff(format("¤³¤Î¥â¥ó¥¹¥¿¡¼¤Ï¤¢¤Ê¤¿¤ÎÀèÁĤò %d ¿ÍÁò¤Ã¤Æ¤¤¤ë",
                            r_ptr->r_deaths ));
 #else
-               roff(format("%d of your ancestors %s been killed by this creature, ",
+               hooked_roff(format("%d of your ancestors %s been killed by this creature, ",
                            r_ptr->r_deaths, plural(r_ptr->r_deaths, "has", "have")));
 #endif
 
@@ -330,9 +327,9 @@ static void roff_aux(int r_idx, int remem)
                if (r_ptr->r_pkills)
                {
 #ifdef JP
-                       roff(format("¤¬¡¢¤¢¤Ê¤¿¤Ï¤³¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¯¤Ê¤¯¤È¤â %d ÂΤÏÅݤ·¤Æ¤¤¤ë¡£",
+                       hooked_roff(format("¤¬¡¢¤¢¤Ê¤¿¤Ï¤³¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¯¤Ê¤¯¤È¤â %d ÂΤÏÅݤ·¤Æ¤¤¤ë¡£",
 #else
-                       roff(format("and you have exterminated at least %d of the creatures.  ",
+                       hooked_roff(format("and you have exterminated at least %d of the creatures.  ",
 #endif
 
                                    r_ptr->r_pkills));
@@ -342,10 +339,10 @@ static void roff_aux(int r_idx, int remem)
                else if (r_ptr->r_tkills)
                {
 #ifdef JP
-                       roff(format("¤¬¡¢%s¤Ï¤³¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¯¤Ê¤¯¤È¤â %d ÂΤÏÅݤ·¤Æ¤¤¤ë¡£",
+                       hooked_roff(format("¤¬¡¢%s¤Ï¤³¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¯¤Ê¤¯¤È¤â %d ÂΤÏÅݤ·¤Æ¤¤¤ë¡£",
                                    "¤¢¤Ê¤¿¤ÎÀèÁÄ", r_ptr->r_tkills));
 #else
-                       roff(format("and %s have exterminated at least %d of the creatures.  ",
+                       hooked_roff(format("and %s have exterminated at least %d of the creatures.  ",
                                    "your ancestors", r_ptr->r_tkills));
 #endif
 
@@ -355,9 +352,9 @@ static void roff_aux(int r_idx, int remem)
                else
                {
 #ifdef JP
-                       roff(format("¤¬¡¢¤Þ¤À%s¤òÅݤ·¤¿¤³¤È¤Ï¤Ê¤¤¡£",
+                       hooked_roff(format("¤¬¡¢¤Þ¤À%s¤òÅݤ·¤¿¤³¤È¤Ï¤Ê¤¤¡£",
 #else
-                       roff(format("and %s is not ever known to have been defeated.  ",
+                       hooked_roff(format("and %s is not ever known to have been defeated.  ",
 #endif
 
                                    wd_he[msex]));
@@ -371,9 +368,9 @@ static void roff_aux(int r_idx, int remem)
                if (r_ptr->r_pkills)
                {
 #ifdef JP
-                       roff(format("¤¢¤Ê¤¿¤Ï¤³¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¯¤Ê¤¯¤È¤â %d ÂΤϻ¦¤·¤Æ¤¤¤ë¡£",
+                       hooked_roff(format("¤¢¤Ê¤¿¤Ï¤³¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¯¤Ê¤¯¤È¤â %d ÂΤϻ¦¤·¤Æ¤¤¤ë¡£",
 #else
-                       roff(format("You have killed at least %d of these creatures.  ",
+                       hooked_roff(format("You have killed at least %d of these creatures.  ",
 #endif
 
                                    r_ptr->r_pkills));
@@ -383,9 +380,9 @@ static void roff_aux(int r_idx, int remem)
                else if (r_ptr->r_tkills)
                {
 #ifdef JP
-                       roff(format("¤¢¤Ê¤¿¤ÎÀèÁĤϤ³¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¯¤Ê¤¯¤È¤â %d ÂΤϻ¦¤·¤Æ¤¤¤ë¡£",
+                       hooked_roff(format("¤¢¤Ê¤¿¤ÎÀèÁĤϤ³¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¯¤Ê¤¯¤È¤â %d ÂΤϻ¦¤·¤Æ¤¤¤ë¡£",
 #else
-                       roff(format("Your ancestors have killed at least %d of these creatures.  ",
+                       hooked_roff(format("Your ancestors have killed at least %d of these creatures.  ",
 #endif
 
                                    r_ptr->r_tkills));
@@ -395,9 +392,9 @@ static void roff_aux(int r_idx, int remem)
                else
                {
 #ifdef JP
-                       roff("¤³¤Î¥â¥ó¥¹¥¿¡¼¤òÅݤ·¤¿¤³¤È¤Ï¤Ê¤¤¡£");
+                       hooked_roff("¤³¤Î¥â¥ó¥¹¥¿¡¼¤òÅݤ·¤¿¤³¤È¤Ï¤Ê¤¤¡£");
 #else
-                       roff("No battles to the death are recalled.  ");
+                       hooked_roff("No battles to the death are recalled.  ");
 #endif
 
                }
@@ -455,23 +452,17 @@ path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info_j.raw");
 #endif
 
                /* Dump it */
-               roff(buf);
+               hooked_roff(buf);
 #ifndef JP
-               roff("  ");
+               hooked_roff("  ");
 #endif
        }
 
        if (r_idx == MON_KAGE)
        {
                /* All done */
-               roff("\n");
+               hooked_roff("\n");
 
-               /* Cheat -- know everything */
-               if ((cheat_know) && (remem == 0))
-               {
-                       /* Hack -- restore memory */
-                       COPY(r_ptr, &save_mem, monster_race);
-               }
                return;
        }
 
@@ -482,21 +473,21 @@ path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info_j.raw");
        if (r_ptr->level == 0)
        {
 #ifdef JP
-               roff(format("%^s¤ÏÄ®¤Ë½»¤ß", wd_he[msex]));
+               hooked_roff(format("%^s¤ÏÄ®¤Ë½»¤ß", wd_he[msex]));
 #else
-               roff(format("%^s lives in the town", wd_he[msex]));
+               hooked_roff(format("%^s lives in the town", wd_he[msex]));
 #endif
 
                old = TRUE;
        }
-       else if (r_ptr->r_tkills || cheat_know)
+       else if (r_ptr->r_tkills || know_everything)
        {
                if (depth_in_feet)
                {
 #ifdef JP
-                       roff(format("%^s¤ÏÄ̾ïÃϲ¼ %d ¥Õ¥£¡¼¥È¤Ç½Ð¸½¤·",
+                       hooked_roff(format("%^s¤ÏÄ̾ïÃϲ¼ %d ¥Õ¥£¡¼¥È¤Ç½Ð¸½¤·",
 #else
-                       roff(format("%^s is normally found at depths of %d feet",
+                       hooked_roff(format("%^s is normally found at depths of %d feet",
 #endif
 
                                    wd_he[msex], r_ptr->level * 50));
@@ -504,9 +495,9 @@ path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info_j.raw");
                else
                {
 #ifdef JP
-                       roff(format("%^s¤ÏÄ̾ïÃϲ¼ %d ³¬¤Ç½Ð¸½¤·",
+                       hooked_roff(format("%^s¤ÏÄ̾ïÃϲ¼ %d ³¬¤Ç½Ð¸½¤·",
 #else
-                       roff(format("%^s is normally found on dungeon level %d",
+                       hooked_roff(format("%^s is normally found on dungeon level %d",
 #endif
 
                                    wd_he[msex], r_ptr->level));
@@ -519,9 +510,9 @@ path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info_j.raw");
        if (r_idx == MON_CHAMELEON)
        {
 #ifdef JP
-               roff("¡¢Â¾¤Î¥â¥ó¥¹¥¿¡¼¤Ë²½¤±¤ë¡£");
+               hooked_roff("¡¢Â¾¤Î¥â¥ó¥¹¥¿¡¼¤Ë²½¤±¤ë¡£");
 #else
-               roff("and can take the shape of other monster.");
+               hooked_roff("and can take the shape of other monster.");
 #endif
                return;
        }
@@ -531,24 +522,24 @@ path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info_j.raw");
                if (old)
                {
 #ifdef JP
-                       roff("¡¢");
+                       hooked_roff("¡¢");
 #else
-                       roff(", and ");
+                       hooked_roff(", and ");
 #endif
 
                }
                else
                {
 #ifdef JP
-                       roff(format("%^s¤Ï", wd_he[msex]));
+                       hooked_roff(format("%^s¤Ï", wd_he[msex]));
 #else
-                       roff(format("%^s ", wd_he[msex]));
+                       hooked_roff(format("%^s ", wd_he[msex]));
 #endif
 
                        old = TRUE;
                }
 #ifndef JP
-               roff("moves");
+               hooked_roff("moves");
 #endif
 
                /* Random-ness */
@@ -558,44 +549,44 @@ path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info_j.raw");
                        if ((flags1 & RF1_RAND_50) && (flags1 & RF1_RAND_25))
                        {
 #ifdef JP
-                               roff("¤«¤Ê¤ê");
+                               hooked_roff("¤«¤Ê¤ê");
 #else
-                               roff(" extremely");
+                               hooked_roff(" extremely");
 #endif
 
                        }
                        else if (flags1 & RF1_RAND_50)
                        {
 #ifdef JP
-                               roff("´öʬ");
+                               hooked_roff("´öʬ");
 #else
-                               roff(" somewhat");
+                               hooked_roff(" somewhat");
 #endif
 
                        }
                        else if (flags1 & RF1_RAND_25)
                        {
 #ifdef JP
-                               roff("¾¯¡¹");
+                               hooked_roff("¾¯¡¹");
 #else
-                               roff(" a bit");
+                               hooked_roff(" a bit");
 #endif
 
                        }
 
                        /* Adjective */
 #ifdef JP
-                       roff("ÉÔµ¬Â§¤Ë");
+                       hooked_roff("ÉÔµ¬Â§¤Ë");
 #else
-                       roff(" erratically");
+                       hooked_roff(" erratically");
 #endif
 
 
                        /* Hack -- Occasional conjunction */
 #ifdef JP
-                       if (speed != 110) roff("¡¢¤«¤Ä");
+                       if (speed != 110) hooked_roff("¡¢¤«¤Ä");
 #else
-                       if (speed != 110) roff(", and");
+                       if (speed != 110) hooked_roff(", and");
 #endif
 
                }
@@ -604,45 +595,45 @@ path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info_j.raw");
                if (speed > 110)
                {
 #ifdef JP
-                       if (speed > 139) c_roff(TERM_RED, "¿®¤¸Æñ¤¤¤Û¤É");
-                       else if (speed > 134) c_roff(TERM_ORANGE, "ÌÔÎõ¤Ë");
-                       else if (speed > 129) c_roff(TERM_ORANGE, "Èó¾ï¤Ë");
-                       else if (speed > 124) c_roff(TERM_UMBER, "¤«¤Ê¤ê");
-                       else if (speed < 120) c_roff(TERM_L_UMBER, "¤ä¤ä");
-                       c_roff(TERM_L_RED, "ÁÇÁ᤯");
+                       if (speed > 139) hook_c_roff(TERM_RED, "¿®¤¸Æñ¤¤¤Û¤É");
+                       else if (speed > 134) hook_c_roff(TERM_ORANGE, "ÌÔÎõ¤Ë");
+                       else if (speed > 129) hook_c_roff(TERM_ORANGE, "Èó¾ï¤Ë");
+                       else if (speed > 124) hook_c_roff(TERM_UMBER, "¤«¤Ê¤ê");
+                       else if (speed < 120) hook_c_roff(TERM_L_UMBER, "¤ä¤ä");
+                       hook_c_roff(TERM_L_RED, "ÁÇÁ᤯");
 #else
-                       if (speed > 130) roff(" incredibly");
-                       else if (speed > 120) roff(" very");
-                       roff(" quickly");
+                       if (speed > 130) hooked_roff(" incredibly");
+                       else if (speed > 120) hooked_roff(" very");
+                       hooked_roff(" quickly");
 #endif
 
                }
                else if (speed < 110)
                {
 #ifdef JP
-                       if (speed < 90) c_roff(TERM_L_GREEN, "¿®¤¸Æñ¤¤¤Û¤É");
-                       else if (speed < 95) c_roff(TERM_BLUE, "Èó¾ï¤Ë");
-                       else if (speed < 100) c_roff(TERM_BLUE, "¤«¤Ê¤ê");
-                       else if (speed > 104) c_roff(TERM_GREEN, "¤ä¤ä");
-                       c_roff(TERM_L_BLUE, "¤æ¤Ã¤¯¤ê¤È");
+                       if (speed < 90) hook_c_roff(TERM_L_GREEN, "¿®¤¸Æñ¤¤¤Û¤É");
+                       else if (speed < 95) hook_c_roff(TERM_BLUE, "Èó¾ï¤Ë");
+                       else if (speed < 100) hook_c_roff(TERM_BLUE, "¤«¤Ê¤ê");
+                       else if (speed > 104) hook_c_roff(TERM_GREEN, "¤ä¤ä");
+                       hook_c_roff(TERM_L_BLUE, "¤æ¤Ã¤¯¤ê¤È");
 #else
-                       if (speed < 90) roff(" incredibly");
-                       else if (speed < 100) roff(" very");
-                       roff(" slowly");
+                       if (speed < 90) hooked_roff(" incredibly");
+                       else if (speed < 100) hooked_roff(" very");
+                       hooked_roff(" slowly");
 #endif
 
                }
                else
                {
 #ifdef JP
-                       roff("ÉáÄ̤ή¤µ¤Ç");
+                       hooked_roff("ÉáÄ̤ή¤µ¤Ç");
 #else
-                       roff(" at normal speed");
+                       hooked_roff(" at normal speed");
 #endif
 
                }
 #ifdef JP
-               roff("Æ°¤¤¤Æ¤¤¤ë");
+               hooked_roff("Æ°¤¤¤Æ¤¤¤ë");
 #endif
        }
 
@@ -653,18 +644,18 @@ path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info_j.raw");
                if (old)
                {
 #ifdef JP
-                       roff("¡¢¤·¤«¤·");
+                       hooked_roff("¡¢¤·¤«¤·");
 #else
-                       roff(", but ");
+                       hooked_roff(", but ");
 #endif
 
                }
                else
                {
 #ifdef JP
-                       roff(format("%^s¤Ï", wd_he[msex]));
+                       hooked_roff(format("%^s¤Ï", wd_he[msex]));
 #else
-                       roff(format("%^s ", wd_he[msex]));
+                       hooked_roff(format("%^s ", wd_he[msex]));
 #endif
 
                        old = TRUE;
@@ -672,9 +663,9 @@ path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info_j.raw");
 
                /* Describe */
 #ifdef JP
-               roff("¿¯Æþ¼Ô¤òÄÉÀפ·¤Ê¤¤");
+               hooked_roff("¿¯Æþ¼Ô¤òÄÉÀפ·¤Ê¤¤");
 #else
-               roff("does not deign to chase intruders");
+               hooked_roff("does not deign to chase intruders");
 #endif
 
        }
@@ -683,9 +674,9 @@ path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info_j.raw");
        if (old)
        {
 #ifdef JP
-               roff("¡£");
+               hooked_roff("¡£");
 #else
-               roff(".  ");
+               hooked_roff(".  ");
 #endif
 
                old = FALSE;
@@ -693,57 +684,57 @@ path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info_j.raw");
 
 
        /* Describe experience if known */
-       if (r_ptr->r_tkills || cheat_know)
+       if (r_ptr->r_tkills || know_everything)
        {
                /* Introduction */
 #ifdef JP
-               roff("¤³¤Î");
+               hooked_roff("¤³¤Î");
 #else
                if (flags1 & RF1_UNIQUE)
                {
-                       roff("Killing this");
+                       hooked_roff("Killing this");
                }
                else
                {
-                       roff("A kill of this");
+                       hooked_roff("A kill of this");
                }
 #endif
 
 
                /* Describe the "quality" */
 #ifdef JP
-if (flags2 & RF2_ELDRITCH_HORROR) c_roff(TERM_VIOLET, "¶¸µ¤¤òͶ¤¦");/*nuke me*/
+if (flags2 & RF2_ELDRITCH_HORROR) hook_c_roff(TERM_VIOLET, "¶¸µ¤¤òͶ¤¦");/*nuke me*/
 #else
-               if (flags2 & RF2_ELDRITCH_HORROR) roff(" sanity-blasting");
+               if (flags2 & RF2_ELDRITCH_HORROR) hooked_roff(" sanity-blasting");
 #endif
 
 #ifdef JP
-if (flags3 & RF3_ANIMAL)          c_roff(TERM_L_GREEN, "¼«Á³³¦¤Î");
+if (flags3 & RF3_ANIMAL)          hook_c_roff(TERM_L_GREEN, "¼«Á³³¦¤Î");
 #else
-               if (flags3 & RF3_ANIMAL)          roff(" natural");
+               if (flags3 & RF3_ANIMAL)          hooked_roff(" natural");
 #endif
 
 #ifdef JP
-if (flags3 & RF3_EVIL)            c_roff(TERM_L_DARK, "¼Ù°­¤Ê¤ë");
+if (flags3 & RF3_EVIL)            hook_c_roff(TERM_L_DARK, "¼Ù°­¤Ê¤ë");
 #else
-               if (flags3 & RF3_EVIL)            roff(" evil");
+               if (flags3 & RF3_EVIL)            hooked_roff(" evil");
 #endif
 
 #ifdef JP
-if (flags3 & RF3_GOOD)            c_roff(TERM_YELLOW, "Á±ÎɤÊ");
+if (flags3 & RF3_GOOD)            hook_c_roff(TERM_YELLOW, "Á±ÎɤÊ");
 #else
-               if (flags3 & RF3_GOOD)            roff(" good");
+               if (flags3 & RF3_GOOD)            hooked_roff(" good");
 #endif
 
 #ifdef JP
-if (flags3 & RF3_UNDEAD)          c_roff(TERM_VIOLET, "¥¢¥ó¥Ç¥Ã¥É¤Î");
+if (flags3 & RF3_UNDEAD)          hook_c_roff(TERM_VIOLET, "¥¢¥ó¥Ç¥Ã¥É¤Î");
 #else
-               if (flags3 & RF3_UNDEAD)          roff(" undead");
+               if (flags3 & RF3_UNDEAD)          hooked_roff(" undead");
 #endif
 #ifdef JP
-if (flags3 & RF3_AMBERITE)        c_roff(TERM_VIOLET, "¥¢¥ó¥Ð¡¼¤Î²¦Â²¤Î");
+if (flags3 & RF3_AMBERITE)        hook_c_roff(TERM_VIOLET, "¥¢¥ó¥Ð¡¼¤Î²¦Â²¤Î");
 #else
-               if (flags3 & RF3_AMBERITE)        roff(" Amberite");
+               if (flags3 & RF3_AMBERITE)        hooked_roff(" Amberite");
 #endif
 
 
@@ -751,57 +742,57 @@ if (flags3 & RF3_AMBERITE)        c_roff(TERM_VIOLET, "
        {
        /* Describe the "race" */
 #ifdef JP
-     if (flags3 & RF3_DRAGON)   c_roff(TERM_ORANGE, "¥É¥é¥´¥ó");
+     if (flags3 & RF3_DRAGON)   hook_c_roff(TERM_ORANGE, "¥É¥é¥´¥ó");
 #else
-                    if (flags3 & RF3_DRAGON)   roff(" dragon");
+                    if (flags3 & RF3_DRAGON)   hooked_roff(" dragon");
 #endif
 
 #ifdef JP
-if (flags3 & RF3_DEMON)    c_roff(TERM_VIOLET, "¥Ç¡¼¥â¥ó");
+if (flags3 & RF3_DEMON)    hook_c_roff(TERM_VIOLET, "¥Ç¡¼¥â¥ó");
 #else
-               if (flags3 & RF3_DEMON)    roff(" demon");
+               if (flags3 & RF3_DEMON)    hooked_roff(" demon");
 #endif
 
 #ifdef JP
-if (flags3 & RF3_GIANT)    c_roff(TERM_L_UMBER, "¥¸¥ã¥¤¥¢¥ó¥È");
+if (flags3 & RF3_GIANT)    hook_c_roff(TERM_L_UMBER, "¥¸¥ã¥¤¥¢¥ó¥È");
 #else
-               if (flags3 & RF3_GIANT)    roff(" giant");
+               if (flags3 & RF3_GIANT)    hooked_roff(" giant");
 #endif
 
 #ifdef JP
-if (flags3 & RF3_TROLL)    c_roff(TERM_BLUE, "¥È¥í¥ë");
+if (flags3 & RF3_TROLL)    hook_c_roff(TERM_BLUE, "¥È¥í¥ë");
 #else
-               if (flags3 & RF3_TROLL)    roff(" troll");
+               if (flags3 & RF3_TROLL)    hooked_roff(" troll");
 #endif
 
 #ifdef JP
-if (flags3 & RF3_ORC)      c_roff(TERM_UMBER, "¥ª¡¼¥¯");
+if (flags3 & RF3_ORC)      hook_c_roff(TERM_UMBER, "¥ª¡¼¥¯");
 #else
-               if (flags3 & RF3_ORC)      roff(" orc");
+               if (flags3 & RF3_ORC)      hooked_roff(" orc");
 #endif
 
 #ifdef JP
-if (flags2 & RF2_HUMAN) c_roff(TERM_L_WHITE, "¿Í´Ö");
+if (flags2 & RF2_HUMAN) hook_c_roff(TERM_L_WHITE, "¿Í´Ö");
 #else
-               if (flags2 & RF2_HUMAN) roff(" Human");
+               if (flags2 & RF2_HUMAN) hooked_roff(" Human");
 #endif
 
 #ifdef JP
-if (flags2 & RF2_QUANTUM)  c_roff(TERM_VIOLET, "ÎÌ»ÒÀ¸Êª");
+if (flags2 & RF2_QUANTUM)  hook_c_roff(TERM_VIOLET, "ÎÌ»ÒÀ¸Êª");
 #else
-               if (flags2 & RF2_QUANTUM)  roff(" quantum creature");
+               if (flags2 & RF2_QUANTUM)  hooked_roff(" quantum creature");
 #endif
 
        }
 #ifdef JP
-else                            roff("¥â¥ó¥¹¥¿¡¼");
+else                            hooked_roff("¥â¥ó¥¹¥¿¡¼");
 #else
-               else                            roff(" creature");
+               else                            hooked_roff(" creature");
 #endif
 
 
 #ifdef JP
-               roff("¤òÅݤ¹¤³¤È¤Ï");
+               hooked_roff("¤òÅݤ¹¤³¤È¤Ï");
 #endif
                /* Group some variables */
                if (TRUE)
@@ -810,13 +801,13 @@ else                            roff("
 
 #ifdef JP
                        i = p_ptr->lev;
-                       roff(format(" %lu ¥ì¥Ù¥ë¤Î¥­¥ã¥é¥¯¥¿¤Ë¤È¤Ã¤Æ", (long)i));
+                       hooked_roff(format(" %lu ¥ì¥Ù¥ë¤Î¥­¥ã¥é¥¯¥¿¤Ë¤È¤Ã¤Æ", (long)i));
 
                        i = (long)r_ptr->mexp * r_ptr->level / (p_ptr->max_plv+2);
                        j = ((((long)r_ptr->mexp * r_ptr->level % (p_ptr->max_plv+2)) *
                               (long)1000 / (p_ptr->max_plv+2) + 5) / 10);
 
-                       roff(format(" Ìó%ld.%02ld ¥Ý¥¤¥ó¥È¤Î·Ð¸³¤È¤Ê¤ë¡£",
+                       hooked_roff(format(" Ìó%ld.%02ld ¥Ý¥¤¥ó¥È¤Î·Ð¸³¤È¤Ê¤ë¡£",
                                (long)i, (long)j ));
 #else
                        /* calculate the integer exp part */
@@ -828,7 +819,7 @@ else                            roff("
                               (long)1000 / (p_ptr->max_plv+2) + 5) / 10);
 
                        /* Mention the experience */
-                       roff(format(" is worth about %ld.%02ld point%s",
+                       hooked_roff(format(" is worth about %ld.%02ld point%s",
                                    (long)i, (long)j,
                                    (((i == 1) && (j == 0)) ? "" : "s")));
 
@@ -846,7 +837,7 @@ else                            roff("
                        if ((i == 8) || (i == 11) || (i == 18)) q = "n";
 
                        /* Mention the dependance on the player's level */
-                       roff(format(" for a%s %lu%s level character.  ",
+                       hooked_roff(format(" for a%s %lu%s level character.  ",
                                    q, (long)i, p));
 #endif
 
@@ -856,63 +847,63 @@ else                            roff("
        if ((flags2 & RF2_AURA_FIRE) && (flags2 & RF2_AURA_ELEC) && (flags3 & RF3_AURA_COLD))
        {
 #ifdef JP
-c_roff(TERM_VIOLET, format("%^s¤Ï±ê¤Èɹ¤È¥¹¥Ñ¡¼¥¯¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
+hook_c_roff(TERM_VIOLET, format("%^s¤Ï±ê¤Èɹ¤È¥¹¥Ñ¡¼¥¯¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
 #else
-               roff(format("%^s is surrounded by flames and electricity.  ", wd_he[msex]));
+               hooked_roff(format("%^s is surrounded by flames and electricity.  ", wd_he[msex]));
 #endif
 
        }
        else if ((flags2 & RF2_AURA_FIRE) && (flags2 & RF2_AURA_ELEC))
        {
 #ifdef JP
-c_roff(TERM_L_RED, format("%^s¤Ï±ê¤È¥¹¥Ñ¡¼¥¯¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
+hook_c_roff(TERM_L_RED, format("%^s¤Ï±ê¤È¥¹¥Ñ¡¼¥¯¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
 #else
-               roff(format("%^s is surrounded by flames and electricity.  ", wd_he[msex]));
+               hooked_roff(format("%^s is surrounded by flames and electricity.  ", wd_he[msex]));
 #endif
 
        }
        else if ((flags2 & RF2_AURA_FIRE) && (flags3 & RF3_AURA_COLD))
        {
 #ifdef JP
-c_roff(TERM_BLUE, format("%^s¤Ï±ê¤Èɹ¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
+hook_c_roff(TERM_BLUE, format("%^s¤Ï±ê¤Èɹ¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
 #else
-               roff(format("%^s is surrounded by flames and electricity.  ", wd_he[msex]));
+               hooked_roff(format("%^s is surrounded by flames and electricity.  ", wd_he[msex]));
 #endif
 
        }
        else if ((flags3 & RF3_AURA_COLD) && (flags2 & RF2_AURA_ELEC))
        {
 #ifdef JP
-c_roff(TERM_L_GREEN, format("%^s¤Ïɹ¤È¥¹¥Ñ¡¼¥¯¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
+hook_c_roff(TERM_L_GREEN, format("%^s¤Ïɹ¤È¥¹¥Ñ¡¼¥¯¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
 #else
-               roff(format("%^s is surrounded by ice and electricity.  ", wd_he[msex]));
+               hooked_roff(format("%^s is surrounded by ice and electricity.  ", wd_he[msex]));
 #endif
 
        }
        else if (flags2 & RF2_AURA_FIRE)
        {
 #ifdef JP
-c_roff(TERM_RED, format("%^s¤Ï±ê¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
+hook_c_roff(TERM_RED, format("%^s¤Ï±ê¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
 #else
-               roff(format("%^s is surrounded by flames.  ", wd_he[msex]));
+               hooked_roff(format("%^s is surrounded by flames.  ", wd_he[msex]));
 #endif
 
        }
        else if (flags3 & RF3_AURA_COLD)
        {
 #ifdef JP
-c_roff(TERM_BLUE, format("%^s¤Ïɹ¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
+hook_c_roff(TERM_BLUE, format("%^s¤Ïɹ¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
 #else
-               roff(format("%^s is surrounded by ice.  ", wd_he[msex]));
+               hooked_roff(format("%^s is surrounded by ice.  ", wd_he[msex]));
 #endif
 
        }
        else if (flags2 & RF2_AURA_ELEC)
        {
 #ifdef JP
-c_roff(TERM_L_BLUE, format("%^s¤Ï¥¹¥Ñ¡¼¥¯¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
+hook_c_roff(TERM_L_BLUE, format("%^s¤Ï¥¹¥Ñ¡¼¥¯¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£", wd_he[msex]));
 #else
-               roff(format("%^s is surrounded by electricity.  ", wd_he[msex]));
+               hooked_roff(format("%^s is surrounded by electricity.  ", wd_he[msex]));
 #endif
 
        }
@@ -920,9 +911,9 @@ c_roff(TERM_L_BLUE, format("%^s
        if (flags2 & RF2_REFLECTING)
        {
 #ifdef JP
-roff(format("%^s¤ÏÌð¤Î¼öʸ¤òÄ·¤ÍÊÖ¤¹¡£", wd_he[msex]));
+hooked_roff(format("%^s¤ÏÌð¤Î¼öʸ¤òÄ·¤ÍÊÖ¤¹¡£", wd_he[msex]));
 #else
-               roff(format("%^s reflects bolt spells.  ", wd_he[msex]));
+               hooked_roff(format("%^s reflects bolt spells.  ", wd_he[msex]));
 #endif
 
        }
@@ -931,9 +922,9 @@ roff(format("%^s
        if ((flags1 & RF1_ESCORT) || (flags1 & RF1_ESCORTS))
        {
 #ifdef JP
-               roff(format("%^s¤ÏÄ̾ï¸î±Ò¤òȼ¤Ã¤Æ¸½¤ì¤ë¡£",
+               hooked_roff(format("%^s¤ÏÄ̾ï¸î±Ò¤òȼ¤Ã¤Æ¸½¤ì¤ë¡£",
 #else
-               roff(format("%^s usually appears with escorts.  ",
+               hooked_roff(format("%^s usually appears with escorts.  ",
 #endif
 
                            wd_he[msex]));
@@ -943,9 +934,9 @@ roff(format("%^s
        else if (flags1 & RF1_FRIENDS)
        {
 #ifdef JP
-               roff(format("%^s¤ÏÄ̾クÃĤǸ½¤ì¤ë¡£",
+               hooked_roff(format("%^s¤ÏÄ̾クÃĤǸ½¤ì¤ë¡£",
 #else
-               roff(format("%^s usually appears in groups.  ",
+               hooked_roff(format("%^s usually appears in groups.  ",
 #endif
 
                            wd_he[msex]));
@@ -983,9 +974,9 @@ roff(format("%^s
        {
                /* Intro */
 #ifdef JP
-               roff(format("%^s¤Ï", wd_he[msex]));
+               hooked_roff(format("%^s¤Ï", wd_he[msex]));
 #else
-               roff(format("%^s", wd_he[msex]));
+               hooked_roff(format("%^s", wd_he[msex]));
 #endif
 
 
@@ -995,27 +986,27 @@ roff(format("%^s
 #ifdef JP
                        if(n!=vn-1){
                          jverb(vp[n],jverb_buf,JVERB_OR);
-                         c_roff(color[n], jverb_buf);
-                         c_roff(color[n], "¤ê¡¢");
+                         hook_c_roff(color[n], jverb_buf);
+                         hook_c_roff(color[n], "¤ê¡¢");
                        }
-                       else  c_roff(color[n], vp[n]);
+                       else  hook_c_roff(color[n], vp[n]);
 #else
                        /* Intro */
-                       if (n == 0) roff(" may ");
-                       else if (n < vn-1) roff(", ");
-                       else roff(" or ");
+                       if (n == 0) hooked_roff(" may ");
+                       else if (n < vn-1) hooked_roff(", ");
+                       else hooked_roff(" or ");
 
                        /* Dump */
-                       roff(vp[n]);
+                       hooked_roff(vp[n]);
 #endif
 
                }
 
                /* End */
 #ifdef JP
-               roff("¤³¤È¤¬¤¢¤ë¡£");
+               hooked_roff("¤³¤È¤¬¤¢¤ë¡£");
 #else
-               roff(".  ");
+               hooked_roff(".  ");
 #endif
 
        }
@@ -1164,9 +1155,9 @@ roff(format("%^s
 
                /* Intro */
 #ifdef JP
-               roff(format("%^s¤Ï", wd_he[msex]));
+               hooked_roff(format("%^s¤Ï", wd_he[msex]));
 #else
-               roff(format("%^s", wd_he[msex]));
+               hooked_roff(format("%^s", wd_he[msex]));
 #endif
 
 
@@ -1175,19 +1166,19 @@ roff(format("%^s
                {
                        /* Intro */
 #ifdef JP
-                       if ( n != 0 ) roff("¤ä");
+                       if ( n != 0 ) hooked_roff("¤ä");
 #else
-                       if (n == 0) roff(" may breathe ");
-                       else if (n < vn-1) roff(", ");
-                       else roff(" or ");
+                       if (n == 0) hooked_roff(" may breathe ");
+                       else if (n < vn-1) hooked_roff(", ");
+                       else hooked_roff(" or ");
 #endif
 
 
                        /* Dump */
-                       c_roff(color[n], vp[n]);
+                       hook_c_roff(color[n], vp[n]);
                }
 #ifdef JP
-               roff("¤Î¥Ö¥ì¥¹¤òÅǤ¯¤³¤È¤¬¤¢¤ë");
+               hooked_roff("¤Î¥Ö¥ì¥¹¤òÅǤ¯¤³¤È¤¬¤¢¤ë");
 #endif
        }
 
@@ -1601,34 +1592,34 @@ if (flags6 & (RF6_S_UNIQUE))        {vp[vn] = "
                if (breath)
                {
 #ifdef JP
-                       roff("¡¢¤Ê¤ª¤«¤Ä");
+                       hooked_roff("¡¢¤Ê¤ª¤«¤Ä");
 #else
-                       roff(", and is also");
+                       hooked_roff(", and is also");
 #endif
 
                }
                else
                {
 #ifdef JP
-                       roff(format("%^s¤Ï", wd_he[msex]));
+                       hooked_roff(format("%^s¤Ï", wd_he[msex]));
 #else
-                       roff(format("%^s is", wd_he[msex]));
+                       hooked_roff(format("%^s is", wd_he[msex]));
 #endif
 
                }
 
 #ifdef JP
                /* Adverb */
-               if (flags2 & (RF2_SMART)) c_roff(TERM_YELLOW, "Ū³Î¤Ë");
+               if (flags2 & (RF2_SMART)) hook_c_roff(TERM_YELLOW, "Ū³Î¤Ë");
 
                /* Verb Phrase */
-               roff("ËâË¡¤ò»È¤¦¤³¤È¤¬¤Ç¤­¡¢");
+               hooked_roff("ËâË¡¤ò»È¤¦¤³¤È¤¬¤Ç¤­¡¢");
 #else
                /* Verb Phrase */
-               roff(" magical, casting spells");
+               hooked_roff(" magical, casting spells");
 
                /* Adverb */
-               if (flags2 & RF2_SMART) roff(" intelligently");
+               if (flags2 & RF2_SMART) hooked_roff(" intelligently");
 #endif
 
 
@@ -1637,19 +1628,19 @@ if (flags6 & (RF6_S_UNIQUE))        {vp[vn] = "
                {
                        /* Intro */
 #ifdef JP
-                       if ( n != 0 ) roff("¡¢");
+                       if ( n != 0 ) hooked_roff("¡¢");
 #else
-                       if (n == 0) roff(" which ");
-                       else if (n < vn-1) roff(", ");
-                       else roff(" or ");
+                       if (n == 0) hooked_roff(" which ");
+                       else if (n < vn-1) hooked_roff(", ");
+                       else hooked_roff(" or ");
 #endif
 
 
                        /* Dump */
-                       c_roff(color[n], vp[n]);
+                       hook_c_roff(color[n], vp[n]);
                }
 #ifdef JP
-                roff("¤Î¼öʸ¤ò¾§¤¨¤ë¤³¤È¤¬¤¢¤ë");
+                hooked_roff("¤Î¼öʸ¤ò¾§¤¨¤ë¤³¤È¤¬¤¢¤ë");
 #endif
        }
 
@@ -1664,12 +1655,12 @@ if (flags6 & (RF6_S_UNIQUE))        {vp[vn] = "
                n = (r_ptr->freq_inate + r_ptr->freq_spell) / 2;
 
                /* Describe the spell frequency */
-               if (m > 100)
+               if (m > 100 || know_everything)
                {
 #ifdef JP
-                       roff(format("(³ÎΨ:1/%d)", 100 / n));
+                       hooked_roff(format("(³ÎΨ:1/%d)", 100 / n));
 #else
-                       roff(format("; 1 time in %d", 100 / n));
+                       hooked_roff(format("; 1 time in %d", 100 / n));
 #endif
 
                }
@@ -1679,18 +1670,18 @@ if (flags6 & (RF6_S_UNIQUE))        {vp[vn] = "
                {
                        n = ((n + 9) / 10) * 10;
 #ifdef JP
-                       roff(format("(³ÎΨ:Ìó1/%d)", 100 / n));
+                       hooked_roff(format("(³ÎΨ:Ìó1/%d)", 100 / n));
 #else
-                       roff(format("; about 1 time in %d", 100 / n));
+                       hooked_roff(format("; about 1 time in %d", 100 / n));
 #endif
 
                }
 
                /* End this sentence */
 #ifdef JP
-               roff("¡£");
+               hooked_roff("¡£");
 #else
-               roff(".  ");
+               hooked_roff(".  ");
 #endif
 
        }
@@ -1700,9 +1691,9 @@ if (flags6 & (RF6_S_UNIQUE))        {vp[vn] = "
        {
                /* Armor */
 #ifdef JP
-               roff(format("%^s¤Ï AC%d ¤ÎËɸæÎϤÈ",
+               hooked_roff(format("%^s¤Ï AC%d ¤ÎËɸæÎϤÈ",
 #else
-               roff(format("%^s has an armor rating of %d",
+               hooked_roff(format("%^s has an armor rating of %d",
 #endif
 
                            wd_he[msex], r_ptr->ac));
@@ -1711,9 +1702,9 @@ if (flags6 & (RF6_S_UNIQUE))        {vp[vn] = "
                if (flags1 & RF1_FORCE_MAXHP)
                {
 #ifdef JP
-                       roff(format(" %d ¤ÎÂÎÎϤ¬¤¢¤ë¡£",
+                       hooked_roff(format(" %d ¤ÎÂÎÎϤ¬¤¢¤ë¡£",
 #else
-                       roff(format(" and a life rating of %d.  ",
+                       hooked_roff(format(" and a life rating of %d.  ",
 #endif
 
                                    r_ptr->hdice * r_ptr->hside));
@@ -1723,9 +1714,9 @@ if (flags6 & (RF6_S_UNIQUE))        {vp[vn] = "
                else
                {
 #ifdef JP
-                       roff(format(" %dd%d ¤ÎÂÎÎϤ¬¤¢¤ë¡£",
+                       hooked_roff(format(" %dd%d ¤ÎÂÎÎϤ¬¤¢¤ë¡£",
 #else
-                       roff(format(" and a life rating of %dd%d.  ",
+                       hooked_roff(format(" and a life rating of %dd%d.  ",
 #endif
 
                                    r_ptr->hdice, r_ptr->hside));
@@ -1796,9 +1787,9 @@ if (flags2 & RF2_KILL_ITEM) vp[vn++] = "
        {
                /* Intro */
 #ifdef JP
-               roff(format("%^s¤Ï", wd_he[msex]));
+               hooked_roff(format("%^s¤Ï", wd_he[msex]));
 #else
-               roff(format("%^s", wd_he[msex]));
+               hooked_roff(format("%^s", wd_he[msex]));
 #endif
 
 
@@ -1809,26 +1800,26 @@ if (flags2 & RF2_KILL_ITEM) vp[vn++] = "
 #ifdef JP
                        if(n!=vn-1){
                          jverb(vp[n],jverb_buf,JVERB_AND);
-                         roff(jverb_buf);
-                         roff("¡¢");
+                         hooked_roff(jverb_buf);
+                         hooked_roff("¡¢");
                        }
-                       else  roff(vp[n]);
+                       else  hooked_roff(vp[n]);
 #else
-                       if (n == 0) roff(" can ");
-                       else if (n < vn-1) roff(", ");
-                       else roff(" and ");
+                       if (n == 0) hooked_roff(" can ");
+                       else if (n < vn-1) hooked_roff(", ");
+                       else hooked_roff(" and ");
 
                        /* Dump */
-                       roff(vp[n]);
+                       hooked_roff(vp[n]);
 #endif
 
                }
 
                /* End */
 #ifdef JP
-               roff("¤³¤È¤¬¤Ç¤­¤ë¡£");
+               hooked_roff("¤³¤È¤¬¤Ç¤­¤ë¡£");
 #else
-               roff(".  ");
+               hooked_roff(".  ");
 #endif
 
        }
@@ -1838,72 +1829,72 @@ if (flags2 & RF2_KILL_ITEM) vp[vn++] = "
        if (flags7 & (RF7_SELF_LITE_1 | RF7_SELF_LITE_2))
        {
 #ifdef JP
-               roff(format("%^s¤Ï¸÷¤Ã¤Æ¤¤¤ë¡£", wd_he[msex]));
+               hooked_roff(format("%^s¤Ï¸÷¤Ã¤Æ¤¤¤ë¡£", wd_he[msex]));
 #else
-               roff(format("%^s illuminate the dungeon.  ", wd_he[msex]));
+               hooked_roff(format("%^s illuminate the dungeon.  ", wd_he[msex]));
 #endif
 
        }
        if (flags2 & RF2_INVISIBLE)
        {
 #ifdef JP
-               roff(format("%^s¤ÏÆ©ÌÀ¤ÇÌܤ˸«¤¨¤Ê¤¤¡£", wd_he[msex]));
+               hooked_roff(format("%^s¤ÏÆ©ÌÀ¤ÇÌܤ˸«¤¨¤Ê¤¤¡£", wd_he[msex]));
 #else
-               roff(format("%^s is invisible.  ", wd_he[msex]));
+               hooked_roff(format("%^s is invisible.  ", wd_he[msex]));
 #endif
 
        }
        if (flags2 & RF2_COLD_BLOOD)
        {
 #ifdef JP
-               roff(format("%^s¤ÏÎä·ìưʪ¤Ç¤¢¤ë¡£", wd_he[msex]));
+               hooked_roff(format("%^s¤ÏÎä·ìưʪ¤Ç¤¢¤ë¡£", wd_he[msex]));
 #else
-               roff(format("%^s is cold blooded.  ", wd_he[msex]));
+               hooked_roff(format("%^s is cold blooded.  ", wd_he[msex]));
 #endif
 
        }
        if (flags2 & RF2_EMPTY_MIND)
        {
 #ifdef JP
-               roff(format("%^s¤Ï¥Æ¥ì¥Ñ¥·¡¼¤Ç¤Ï´¶ÃΤǤ­¤Ê¤¤¡£", wd_he[msex]));
+               hooked_roff(format("%^s¤Ï¥Æ¥ì¥Ñ¥·¡¼¤Ç¤Ï´¶ÃΤǤ­¤Ê¤¤¡£", wd_he[msex]));
 #else
-               roff(format("%^s is not detected by telepathy.  ", wd_he[msex]));
+               hooked_roff(format("%^s is not detected by telepathy.  ", wd_he[msex]));
 #endif
 
        }
        else if (flags2 & RF2_WEIRD_MIND)
        {
 #ifdef JP
-               roff(format("%^s¤Ï¤Þ¤ì¤Ë¥Æ¥ì¥Ñ¥·¡¼¤Ç´¶ÃΤǤ­¤ë¡£", wd_he[msex]));
+               hooked_roff(format("%^s¤Ï¤Þ¤ì¤Ë¥Æ¥ì¥Ñ¥·¡¼¤Ç´¶ÃΤǤ­¤ë¡£", wd_he[msex]));
 #else
-               roff(format("%^s is rarely detected by telepathy.  ", wd_he[msex]));
+               hooked_roff(format("%^s is rarely detected by telepathy.  ", wd_he[msex]));
 #endif
 
        }
        if (flags2 & RF2_MULTIPLY)
        {
 #ifdef JP
-               c_roff(TERM_L_UMBER, format("%^s¤ÏÇúȯŪ¤ËÁý¿£¤¹¤ë¡£", wd_he[msex]));
+               hook_c_roff(TERM_L_UMBER, format("%^s¤ÏÇúȯŪ¤ËÁý¿£¤¹¤ë¡£", wd_he[msex]));
 #else
-               c_roff(TERM_L_UMBER, format("%^s breeds explosively.  ", wd_he[msex]));
+               hook_c_roff(TERM_L_UMBER, format("%^s breeds explosively.  ", wd_he[msex]));
 #endif
 
        }
        if (flags2 & RF2_REGENERATE)
        {
 #ifdef JP
-               c_roff(TERM_L_WHITE, format("%^s¤ÏÁÇÁ᤯ÂÎÎϤò²óÉü¤¹¤ë¡£", wd_he[msex]));
+               hook_c_roff(TERM_L_WHITE, format("%^s¤ÏÁÇÁ᤯ÂÎÎϤò²óÉü¤¹¤ë¡£", wd_he[msex]));
 #else
-               c_roff(TERM_L_WHITE, format("%^s regenerates quickly.  ", wd_he[msex]));
+               hook_c_roff(TERM_L_WHITE, format("%^s regenerates quickly.  ", wd_he[msex]));
 #endif
 
        }
        if (flags7 & RF7_RIDING)
        {
 #ifdef JP
-               c_roff(TERM_SLATE, format("%^s¤Ë¾è¤ë¤³¤È¤¬¤Ç¤­¤ë¡£", wd_he[msex]));
+               hook_c_roff(TERM_SLATE, format("%^s¤Ë¾è¤ë¤³¤È¤¬¤Ç¤­¤ë¡£", wd_he[msex]));
 #else
-               c_roff(TERM_SLATE, format("%^s is suitable for riding.  ", wd_he[msex]));
+               hook_c_roff(TERM_SLATE, format("%^s is suitable for riding.  ", wd_he[msex]));
 #endif
 
        }
@@ -1941,9 +1932,9 @@ if (flags2 & RF2_KILL_ITEM) vp[vn++] = "
        {
                /* Intro */
 #ifdef JP
-               roff(format("%^s¤Ë¤Ï", wd_he[msex]));
+               hooked_roff(format("%^s¤Ë¤Ï", wd_he[msex]));
 #else
-               roff(format("%^s", wd_he[msex]));
+               hooked_roff(format("%^s", wd_he[msex]));
 #endif
 
 
@@ -1952,23 +1943,23 @@ if (flags2 & RF2_KILL_ITEM) vp[vn++] = "
                {
                        /* Intro */
 #ifdef JP
-                       if ( n != 0 ) roff("¤ä");
+                       if ( n != 0 ) hooked_roff("¤ä");
 #else
-                       if (n == 0) roff(" is hurt by ");
-                       else if (n < vn-1) roff(", ");
-                       else roff(" and ");
+                       if (n == 0) hooked_roff(" is hurt by ");
+                       else if (n < vn-1) hooked_roff(", ");
+                       else hooked_roff(" and ");
 #endif
 
 
                        /* Dump */
-                       c_roff(color[n], vp[n]);
+                       hook_c_roff(color[n], vp[n]);
                }
 
                /* End */
 #ifdef JP
-               roff("¤Ç¥À¥á¡¼¥¸¤òÍ¿¤¨¤é¤ì¤ë¡£");
+               hooked_roff("¤Ç¥À¥á¡¼¥¸¤òÍ¿¤¨¤é¤ì¤ë¡£");
 #else
-               roff(".  ");
+               hooked_roff(".  ");
 #endif
 
        }
@@ -2012,9 +2003,9 @@ if (flags2 & RF2_KILL_ITEM) vp[vn++] = "
        {
                /* Intro */
 #ifdef JP
-               roff(format("%^s¤Ï", wd_he[msex]));
+               hooked_roff(format("%^s¤Ï", wd_he[msex]));
 #else
-               roff(format("%^s", wd_he[msex]));
+               hooked_roff(format("%^s", wd_he[msex]));
 #endif
 
 
@@ -2023,23 +2014,23 @@ if (flags2 & RF2_KILL_ITEM) vp[vn++] = "
                {
                        /* Intro */
 #ifdef JP
-                       if ( n != 0 ) roff("¤È");
+                       if ( n != 0 ) hooked_roff("¤È");
 #else
-                       if (n == 0) roff(" resists ");
-                       else if (n < vn-1) roff(", ");
-                       else roff(" and ");
+                       if (n == 0) hooked_roff(" resists ");
+                       else if (n < vn-1) hooked_roff(", ");
+                       else hooked_roff(" and ");
 #endif
 
 
                        /* Dump */
-                       c_roff(color[n], vp[n]);
+                       hook_c_roff(color[n], vp[n]);
                }
 
                /* End */
 #ifdef JP
-               roff("¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£");
+               hooked_roff("¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£");
 #else
-               roff(".  ");
+               hooked_roff(".  ");
 #endif
 
        }
@@ -2155,9 +2146,9 @@ if ((flags3 & RF3_RES_TELE) && !(r_ptr->flags1 & RF1_UNIQUE)) {vp[vn] = "
        {
                /* Intro */
 #ifdef JP
-               roff(format("%^s¤Ï", wd_he[msex]));
+               hooked_roff(format("%^s¤Ï", wd_he[msex]));
 #else
-               roff(format("%^s", wd_he[msex]));
+               hooked_roff(format("%^s", wd_he[msex]));
 #endif
 
 
@@ -2166,50 +2157,50 @@ if ((flags3 & RF3_RES_TELE) && !(r_ptr->flags1 & RF1_UNIQUE)) {vp[vn] = "
                {
                        /* Intro */
 #ifdef JP
-                       if ( n != 0 ) roff("¤È");
+                       if ( n != 0 ) hooked_roff("¤È");
 #else
-                       if (n == 0) roff(" resists ");
-                       else if (n < vn-1) roff(", ");
-                       else roff(" and ");
+                       if (n == 0) hooked_roff(" resists ");
+                       else if (n < vn-1) hooked_roff(", ");
+                       else hooked_roff(" and ");
 #endif
 
 
                        /* Dump */
-                       c_roff(color[n], vp[n]);
+                       hook_c_roff(color[n], vp[n]);
                }
 
                /* End */
 #ifdef JP
-               roff("¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£");
+               hooked_roff("¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£");
 #else
-               roff(".  ");
+               hooked_roff(".  ");
 #endif
 
        }
 
 
-       if ((r_ptr->r_xtra1 & MR1_SINKA) || cheat_know)
+       if ((r_ptr->r_xtra1 & MR1_SINKA) || know_everything)
        {
                if (r_ptr->next_r_idx)
                {
 #ifdef JP
-                       roff(format("%^s¤Ï·Ð¸³¤òÀѤà¤È¡¢", wd_he[msex]));
+                       hooked_roff(format("%^s¤Ï·Ð¸³¤òÀѤà¤È¡¢", wd_he[msex]));
 #else
-                       roff(format("%^s will evolve into ", wd_he[msex]));
+                       hooked_roff(format("%^s will evolve into ", wd_he[msex]));
 #endif
-                       c_roff(TERM_YELLOW, format("%s", r_name+r_info[r_ptr->next_r_idx].name));
+                       hook_c_roff(TERM_YELLOW, format("%s", r_name+r_info[r_ptr->next_r_idx].name));
 #ifdef JP
-                       roff(format("¤Ë¿Ê²½¤¹¤ë¡£"));
+                       hooked_roff(format("¤Ë¿Ê²½¤¹¤ë¡£"));
 #else
-                       roff(format(" when %s gets enugh experience.  ", wd_he[msex]));
+                       hooked_roff(format(" when %s gets enugh experience.  ", wd_he[msex]));
 #endif
                }
                else if (!(r_ptr->flags1 & RF1_UNIQUE))
                {
 #ifdef JP
-                       roff(format("%s¤Ï¿Ê²½¤·¤Ê¤¤¡£", wd_he[msex]));
+                       hooked_roff(format("%s¤Ï¿Ê²½¤·¤Ê¤¤¡£", wd_he[msex]));
 #else
-                       roff(format("%s won't evolve.  ", wd_he[msex]));
+                       hooked_roff(format("%s won't evolve.  ", wd_he[msex]));
 #endif
                }
        }
@@ -2251,9 +2242,9 @@ if ((flags3 & RF3_RES_TELE) && (r_ptr->flags1 & RF1_UNIQUE)) {vp[vn] = "
        {
                /* Intro */
 #ifdef JP
-               roff(format("%^s¤Ï", wd_he[msex]));
+               hooked_roff(format("%^s¤Ï", wd_he[msex]));
 #else
-               roff(format("%^s", wd_he[msex]));
+               hooked_roff(format("%^s", wd_he[msex]));
 #endif
 
 
@@ -2262,23 +2253,23 @@ if ((flags3 & RF3_RES_TELE) && (r_ptr->flags1 & RF1_UNIQUE)) {vp[vn] = "
                {
                        /* Intro */
 #ifdef JP
-                       if ( n != 0 ) roff("¤·¡¢");
+                       if ( n != 0 ) hooked_roff("¤·¡¢");
 #else
-                       if (n == 0) roff(" cannot be ");
-                       else if (n < vn - 1) roff(", ");
-                       else roff(" or ");
+                       if (n == 0) hooked_roff(" cannot be ");
+                       else if (n < vn - 1) hooked_roff(", ");
+                       else hooked_roff(" or ");
 #endif
 
 
                        /* Dump */
-                       c_roff(color[n], vp[n]);
+                       hook_c_roff(color[n], vp[n]);
                }
 
                /* End */
 #ifdef JP
-               roff("¡£");
+               hooked_roff("¡£");
 #else
-               roff(".  ");
+               hooked_roff(".  ");
 #endif
 
        }
@@ -2287,7 +2278,7 @@ if ((flags3 & RF3_RES_TELE) && (r_ptr->flags1 & RF1_UNIQUE)) {vp[vn] = "
        /* Do we know how aware it is? */
        if ((((int)r_ptr->r_wake * (int)r_ptr->r_wake) > r_ptr->sleep) ||
                  (r_ptr->r_ignore == MAX_UCHAR) ||
-                ((r_ptr->sleep == 0) && ((r_ptr->r_tkills >= 10) || cheat_know)))
+           (r_ptr->sleep == 0 && r_ptr->r_tkills >= 10) || know_everything)
        {
                cptr act;
 
@@ -2392,10 +2383,10 @@ if ((flags3 & RF3_RES_TELE) && (r_ptr->flags1 & RF1_UNIQUE)) {vp[vn] = "
                }
 
 #ifdef JP
-               roff(format("%^s¤Ï¿¯Æþ¼Ô%s¡¢ %d ¥Õ¥£¡¼¥ÈÀ褫¤é¿¯Æþ¼Ô¤Ëµ¤ÉÕ¤¯¤³¤È¤¬¤¢¤ë¡£",
+               hooked_roff(format("%^s¤Ï¿¯Æþ¼Ô%s¡¢ %d ¥Õ¥£¡¼¥ÈÀ褫¤é¿¯Æþ¼Ô¤Ëµ¤ÉÕ¤¯¤³¤È¤¬¤¢¤ë¡£",
                     wd_he[msex], act, 10 * r_ptr->aaf));
 #else
-               roff(format("%^s %s intruders, which %s may notice from %d feet.  ",
+               hooked_roff(format("%^s %s intruders, which %s may notice from %d feet.  ",
                            wd_he[msex], act, wd_he[msex], 10 * r_ptr->aaf));
 #endif
 
@@ -2403,29 +2394,29 @@ if ((flags3 & RF3_RES_TELE) && (r_ptr->flags1 & RF1_UNIQUE)) {vp[vn] = "
 
 
        /* Drops gold and/or items */
-       if (r_ptr->r_drop_gold || r_ptr->r_drop_item)
+       if (drop_gold || drop_item)
        {
                /* No "n" needed */
                sin = FALSE;
 
                /* Intro */
 #ifdef JP
-               roff(format("%^s¤Ï", wd_he[msex]));
+               hooked_roff(format("%^s¤Ï", wd_he[msex]));
 #else
-               roff(format("%^s may carry", wd_he[msex]));
+               hooked_roff(format("%^s may carry", wd_he[msex]));
 #endif
 
 
                /* Count maximum drop */
-               n = MAX(r_ptr->r_drop_gold, r_ptr->r_drop_item);
+               n = MAX(drop_gold, drop_item);
 
                /* One drop (may need an "n") */
                if (n == 1)
                {
 #ifdef JP
-                       roff("°ì¤Ä¤Î");
+                       hooked_roff("°ì¤Ä¤Î");
 #else
-                       roff(" a");
+                       hooked_roff(" a");
 #endif
 
                        sin = TRUE;
@@ -2435,9 +2426,9 @@ if ((flags3 & RF3_RES_TELE) && (r_ptr->flags1 & RF1_UNIQUE)) {vp[vn] = "
                else if (n == 2)
                {
 #ifdef JP
-                       roff("°ì¤Ä¤«Æó¤Ä¤Î");
+                       hooked_roff("°ì¤Ä¤«Æó¤Ä¤Î");
 #else
-                       roff(" one or two");
+                       hooked_roff(" one or two");
 #endif
 
                }
@@ -2446,9 +2437,9 @@ if ((flags3 & RF3_RES_TELE) && (r_ptr->flags1 & RF1_UNIQUE)) {vp[vn] = "
                else
                {
 #ifdef JP
-                       roff(format(" %d ¸Ä¤Þ¤Ç¤Î", n));
+                       hooked_roff(format(" %d ¸Ä¤Þ¤Ç¤Î", n));
 #else
-                       roff(format(" up to %d", n));
+                       hooked_roff(format(" up to %d", n));
 #endif
 
                }
@@ -2485,21 +2476,21 @@ if ((flags3 & RF3_RES_TELE) && (r_ptr->flags1 & RF1_UNIQUE)) {vp[vn] = "
 
 
                /* Objects */
-               if (r_ptr->r_drop_item)
+               if (drop_item)
                {
                        /* Handle singular "an" */
 #ifndef JP
-                       if (sin) roff("n");
+                       if (sin) hooked_roff("n");
 #endif
                        sin = FALSE;
 
                        /* Dump "object(s)" */
-                       if (p) roff(p);
+                       if (p) hooked_roff(p);
 #ifdef JP
-                       roff("¥¢¥¤¥Æ¥à");
+                       hooked_roff("¥¢¥¤¥Æ¥à");
 #else
-                       roff(" object");
-                       if (n != 1) roff("s");
+                       hooked_roff(" object");
+                       if (n != 1) hooked_roff("s");
 #endif
 
 
@@ -2513,33 +2504,33 @@ if ((flags3 & RF3_RES_TELE) && (r_ptr->flags1 & RF1_UNIQUE)) {vp[vn] = "
                }
 
                /* Treasures */
-               if (r_ptr->r_drop_gold)
+               if (drop_gold)
                {
                        /* Cancel prefix */
                        if (!p) sin = FALSE;
 
                        /* Handle singular "an" */
 #ifndef JP
-                       if (sin) roff("n");
+                       if (sin) hooked_roff("n");
 #endif
                        sin = FALSE;
 
                        /* Dump "treasure(s)" */
-                       if (p) roff(p);
+                       if (p) hooked_roff(p);
 #ifdef JP
-                       roff("ºâÊõ");
+                       hooked_roff("ºâÊõ");
 #else
-                       roff(" treasure");
-                       if (n != 1) roff("s");
+                       hooked_roff(" treasure");
+                       if (n != 1) hooked_roff("s");
 #endif
 
                }
 
                /* End this sentence */
 #ifdef JP
-               roff("¤ò»ý¤Ã¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ë¡£");
+               hooked_roff("¤ò»ý¤Ã¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ë¡£");
 #else
-               roff(".  ");
+               hooked_roff(".  ");
 #endif
 
        }
@@ -2553,7 +2544,7 @@ if ((flags3 & RF3_RES_TELE) && (r_ptr->flags1 & RF1_UNIQUE)) {vp[vn] = "
                if (r_ptr->blow[m].method == RBM_SHOOT) continue;
 
                /* Count known attacks */
-               if (r_ptr->r_blows[m]) n++;
+               if (r_ptr->r_blows[m] || know_everything) n++;
        }
 
        /* Examine (and count) the actual attacks */
@@ -2566,7 +2557,7 @@ if ((flags3 & RF3_RES_TELE) && (r_ptr->flags1 & RF1_UNIQUE)) {vp[vn] = "
                if (r_ptr->blow[m].method == RBM_SHOOT) continue;
 
                /* Skip unknown attacks */
-               if (!r_ptr->r_blows[m]) continue;
+               if (!r_ptr->r_blows[m] && !know_everything) continue;
 
                /* Extract the attack info */
                method = r_ptr->blow[m].method;
@@ -2926,17 +2917,17 @@ case RBE_DR_MANA:  q = "
 
 
 #ifdef JP
-                if ( r == 0 ) roff( format("%^s¤Ï", wd_he[msex]) );
+                if ( r == 0 ) hooked_roff( format("%^s¤Ï", wd_he[msex]) );
 
                /***¼ã´³É½¸½¤òÊѹ¹ ita ***/
 
                         /* Describe damage (if known) */
-               if (d1 && d2 && know_damage(r_idx, m))
+               if (d1 && d2 && (know_everything || know_damage(r_idx, m)))
                  {
                    
                    /* Display the damage */
-                   roff(format(" %dd%d ", d1, d2));
-                   roff("¤Î¥À¥á¡¼¥¸¤Ç");
+                   hooked_roff(format(" %dd%d ", d1, d2));
+                   hooked_roff("¤Î¥À¥á¡¼¥¸¤Ç");
                  }
                /* Hack -- force a method */
                if (!p) p = "²¿¤«´ñ̯¤Ê¤³¤È¤ò¤¹¤ë";
@@ -2947,29 +2938,29 @@ case RBE_DR_MANA:  q = "
                else if(r!=n-1) jverb( p ,jverb_buf, JVERB_AND);
                else strcpy(jverb_buf, p);
 
-               roff(jverb_buf);
+               hooked_roff(jverb_buf);
 
                /* Describe the effect (if any) */
                if (q)
                {
                  if(r!=n-1) jverb( q,jverb_buf, JVERB_AND);
                  else strcpy(jverb_buf,q); 
-                 roff(jverb_buf);
+                 hooked_roff(jverb_buf);
                }
-               if(r!=n-1) roff("¡¢");
+               if(r!=n-1) hooked_roff("¡¢");
 #else
                /* Introduce the attack description */
                if (!r)
                {
-                       roff(format("%^s can ", wd_he[msex]));
+                       hooked_roff(format("%^s can ", wd_he[msex]));
                }
                else if (r < n-1)
                {
-                       roff(", ");
+                       hooked_roff(", ");
                }
                else
                {
-                       roff(", and ");
+                       hooked_roff(", and ");
                }
 
 
@@ -2977,22 +2968,22 @@ case RBE_DR_MANA:  q = "
                if (!p) p = "do something weird";
 
                /* Describe the method */
-               roff(p);
+               hooked_roff(p);
 
 
                /* Describe the effect (if any) */
                if (q)
                {
                        /* Describe the attack type */
-                       roff(" to ");
-                       roff(q);
+                       hooked_roff(" to ");
+                       hooked_roff(q);
 
                        /* Describe damage (if known) */
-                       if (d1 && d2 && know_damage(r_idx, m))
+                       if (d1 && d2 && (know_everything || know_damage(r_idx, m)))
                        {
                                /* Display the damage */
-                               roff(" with damage");
-                               roff(format(" %dd%d", d1, d2));
+                               hooked_roff(" with damage");
+                               hooked_roff(format(" %dd%d", d1, d2));
                        }
                }
 #endif
@@ -3007,9 +2998,9 @@ case RBE_DR_MANA:  q = "
        if (r)
        {
 #ifdef JP
-               roff("¡£");
+               hooked_roff("¡£");
 #else
-               roff(".  ");
+               hooked_roff(".  ");
 #endif
 
        }
@@ -3018,9 +3009,9 @@ case RBE_DR_MANA:  q = "
        else if (flags1 & RF1_NEVER_BLOW)
        {
 #ifdef JP
-               roff(format("%^s¤ÏʪÍýŪ¤Ê¹¶·âÊýË¡¤ò»ý¤¿¤Ê¤¤¡£", wd_he[msex]));
+               hooked_roff(format("%^s¤ÏʪÍýŪ¤Ê¹¶·âÊýË¡¤ò»ý¤¿¤Ê¤¤¡£", wd_he[msex]));
 #else
-               roff(format("%^s has no physical attacks.  ", wd_he[msex]));
+               hooked_roff(format("%^s has no physical attacks.  ", wd_he[msex]));
 #endif
 
        }
@@ -3029,9 +3020,9 @@ case RBE_DR_MANA:  q = "
        else
        {
 #ifdef JP
-               roff(format("%s¹¶·â¤Ë¤Ä¤¤¤Æ¤Ï²¿¤âÃΤé¤Ê¤¤¡£", wd_his[msex]));
+               hooked_roff(format("%s¹¶·â¤Ë¤Ä¤¤¤Æ¤Ï²¿¤âÃΤé¤Ê¤¤¡£", wd_his[msex]));
 #else
-               roff(format("Nothing is known about %s attack.  ", wd_his[msex]));
+               hooked_roff(format("Nothing is known about %s attack.  ", wd_his[msex]));
 #endif
 
        }
@@ -3044,9 +3035,9 @@ case RBE_DR_MANA:  q = "
        if ((flags1 & RF1_QUESTOR) && ((r_ptr->r_sights) && (r_ptr->max_num) && ((r_idx == MON_OBERON) || (r_idx == MON_SERPENT))))
        {
 #ifdef JP
-               c_roff(TERM_VIOLET, "¤¢¤Ê¤¿¤Ï¤³¤Î¥â¥ó¥¹¥¿¡¼¤ò»¦¤·¤¿¤¤¤È¤¤¤¦¶¯¤¤Íß˾¤ò´¶¤¸¤Æ¤¤¤ë...");
+               hook_c_roff(TERM_VIOLET, "¤¢¤Ê¤¿¤Ï¤³¤Î¥â¥ó¥¹¥¿¡¼¤ò»¦¤·¤¿¤¤¤È¤¤¤¦¶¯¤¤Íß˾¤ò´¶¤¸¤Æ¤¤¤ë...");
 #else
-               c_roff(TERM_VIOLET, "You feel an intense desire to kill this monster...  ");
+               hook_c_roff(TERM_VIOLET, "You feel an intense desire to kill this monster...  ");
 #endif
 
        }
@@ -3054,23 +3045,17 @@ case RBE_DR_MANA:  q = "
        else if (flags7 & RF7_GUARDIAN)
        {
 #ifdef JP
-               c_roff(TERM_L_RED, "¤³¤Î¥â¥ó¥¹¥¿¡¼¤Ï¥À¥ó¥¸¥ç¥ó¤Î¼ç¤Ç¤¢¤ë¡£");
+               hook_c_roff(TERM_L_RED, "¤³¤Î¥â¥ó¥¹¥¿¡¼¤Ï¥À¥ó¥¸¥ç¥ó¤Î¼ç¤Ç¤¢¤ë¡£");
 #else
-               c_roff(TERM_L_RED, "This monster is the master of a dungeon.");
+               hook_c_roff(TERM_L_RED, "This monster is the master of a dungeon.");
 #endif
 
        }
 
 
        /* All done */
-       roff("\n");
+       hooked_roff("\n");
 
-       /* Cheat -- know everything */
-       if ((cheat_know) && (remem == 0))
-       {
-               /* Hack -- restore memory */
-               COPY(r_ptr, &save_mem, monster_race);
-       }
 }
 
 
@@ -3145,7 +3130,7 @@ void roff_top(int r_idx)
 /*
  * Hack -- describe the given monster race at the top of the screen
  */
-void screen_roff(int r_idx, int remember)
+void screen_roff(int r_idx, int mode)
 {
        /* Flush messages */
        msg_print(NULL);
@@ -3153,8 +3138,10 @@ void screen_roff(int r_idx, int remember)
        /* Begin recall */
        Term_erase(0, 1, 255);
 
+       hook_c_roff = c_roff;
+
        /* Recall monster */
-       roff_aux(r_idx, remember);
+       roff_aux(r_idx, mode);
 
        /* Describe monster */
        roff_top(r_idx);
@@ -3180,6 +3167,8 @@ void display_roff(int r_idx)
        /* Begin recall */
        Term_gotoxy(0, 1);
 
+       hook_c_roff = c_roff;
+
        /* Recall monster */
        roff_aux(r_idx, 0);
 
@@ -3188,6 +3177,19 @@ void display_roff(int r_idx)
 }
 
 
+
+/*
+ * Hack -- output description of the given monster race
+ */
+void output_monster_spoiler(int r_idx, void (*roff_func)(byte attr, cptr str))
+{
+       hook_c_roff = roff_func;
+
+       /* Recall monster */
+       roff_aux(r_idx, 0x03);
+}
+
+
 bool monster_quest(int r_idx)
 {
        monster_race *r_ptr = &r_info[r_idx];
index 71ba098..8787671 100644 (file)
@@ -1785,20 +1785,6 @@ static void spoil_mon_desc(cptr fname)
  * Primarily based on code already in mon-desc.c, mostly by -BEN-
  */
 
-/*
- * Pronoun arrays
- */
-static cptr wd_che[3] =
-#ifdef JP
-{ "¤½¤ì", "Èà", "Èà½÷" };
-#else
-{ "It", "He", "She" };
-#endif
-
-#ifndef JP
-static cptr wd_lhe[3] =
-{ "it", "he", "she" };
-#endif
 
 
 /*
@@ -1913,6 +1899,16 @@ static void spoil_out(cptr str)
 }
 
 
+
+/*
+ *  Hook function used in spoil_mon_info()
+ */
+void roff_func(byte attr, cptr str)
+{
+       spoil_out(str);
+}
+
+
 /*
  * Create a spoiler file for monsters (-SHAWN-)
  */
@@ -2084,1060 +2080,8 @@ static void spoil_mon_info(cptr fname)
                sprintf(buf, "Exp:%ld\n", (long)(r_ptr->mexp));
                spoil_out(buf);
 
-
-               /* Describe */
-               spoil_out(r_text + r_ptr->text);
-#ifdef JP
-               spoil_out("¡£ ");
-#else
-               spoil_out("  ");
-#endif
-
-
-
-#ifdef JP
-                spoil_out("¤³¤Î");
-
-if (flags2 & RF2_ELDRITCH_HORROR) spoil_out("¶¸µ¤¤òͶ¤¦");/*nuke me*/
-if (flags3 & RF3_ANIMAL)          spoil_out("¼«Á³³¦¤Î");
-if (flags3 & RF3_EVIL)            spoil_out("¼Ù°­¤Ê¤ë");
-if (flags3 & RF3_GOOD)            spoil_out("Á±ÎɤÊ");
-if (flags3 & RF3_UNDEAD)          spoil_out("¥¢¥ó¥Ç¥Ã¥É¤Î");
-if (flags3 & RF3_AMBERITE)        spoil_out("¥¢¥ó¥Ð¡¼¤Î²¦Â²¤Î");
-
-if ((flags3 & (RF3_DRAGON | RF3_DEMON | RF3_GIANT | RF3_TROLL | RF3_ORC)) || (flags2 & (RF2_QUANTUM | RF2_HUMAN)))
-{
-     if (flags3 & RF3_DRAGON)   spoil_out("¥É¥é¥´¥ó");
-     if (flags3 & RF3_DEMON)    spoil_out("¥Ç¡¼¥â¥ó");
-     if (flags3 & RF3_GIANT)    spoil_out("¥¸¥ã¥¤¥¢¥ó¥È");
-     if (flags3 & RF3_TROLL)    spoil_out("¥È¥í¥ë");
-     if (flags3 & RF3_ORC)      spoil_out("¥ª¡¼¥¯");
-     if (flags2 & RF2_HUMAN)    spoil_out("¿Í´Ö");/*nuke me*/
-     if (flags2 & RF2_QUANTUM)  spoil_out("ÎÌ»ÒÀ¸Êª");
-}
-else                            spoil_out("¥â¥ó¥¹¥¿¡¼");
-#else
-               spoil_out("This");
-
-               if (flags2 & (RF2_ELDRITCH_HORROR)) spoil_out (" sanity-blasting");
-               if (flags3 & (RF3_ANIMAL)) spoil_out(" natural");
-               if (flags3 & (RF3_EVIL)) spoil_out(" evil");
-               if (flags3 & (RF3_GOOD)) spoil_out(" good");
-               if (flags3 & (RF3_UNDEAD)) spoil_out(" undead");
-               if (flags3 & (RF3_AMBERITE)) spoil_out (" Amberite");
-
-               if (flags3 & (RF3_DRAGON)) spoil_out(" dragon");
-               else if (flags3 & (RF3_DEMON)) spoil_out(" demon");
-               else if (flags3 & (RF3_GIANT)) spoil_out(" giant");
-               else if (flags3 & (RF3_TROLL)) spoil_out(" troll");
-               else if (flags3 & (RF3_ORC)) spoil_out(" orc");
-               else if (flags2 & (RF2_HUMAN)) spoil_out (" Human");
-               else spoil_out(" creature");
-#endif
-
-
-#ifdef JP
-               spoil_out("¤Ï");
-#else
-               spoil_out(" moves");
-#endif
-
-
-               if ((flags1 & (RF1_RAND_50)) && (flags1 & (RF1_RAND_25)))
-               {
-#ifdef JP
-spoil_out("¤«¤Ê¤êÉÔµ¬Â§¤Ë");
-#else
-                       spoil_out(" extremely erratically");
-#endif
-
-               }
-               else if (flags1 & (RF1_RAND_50))
-               {
-#ifdef JP
-spoil_out("´öʬÉÔµ¬Â§¤Ë");
-#else
-                       spoil_out(" somewhat erratically");
-#endif
-
-               }
-               else if (flags1 & (RF1_RAND_25))
-               {
-#ifdef JP
-spoil_out("¾¯¡¹ÉÔµ¬Â§¤Ë");
-#else
-                       spoil_out(" a bit erratically");
-#endif
-
-               }
-               else
-               {
-#ifdef JP
-spoil_out("ÉáÄ̤Ë");
-#else
-                       spoil_out(" normally");
-#endif
-
-               }
-
-#ifdef JP
-spoil_out("Æ°¤¤¤Æ¤¤¤ë");
-#endif
-               if (flags1 & (RF1_NEVER_MOVE))
-               {
-#ifdef JP
-spoil_out("¤¬¡¢¿¯Æþ¼Ô¤òÄÉÀפ·¤Ê¤¤");
-#else
-                       spoil_out(", but does not deign to chase intruders");
-#endif
-
-               }
-
-#ifdef JP
-                       spoil_out("¤³¤È¤¬¤¢¤ë¡£");
-#else
-               spoil_out(".  ");
-#endif
-
-
-               if (!r_ptr->level || (flags1 & (RF1_FORCE_DEPTH)))
-               {
-                       sprintf(buf, "%s is never found out of depth.  ", wd_che[msex]);
-                       spoil_out(buf);
-               }
-
-               if (flags1 & (RF1_FORCE_SLEEP))
-               {
-                       sprintf(buf, "%s is always created sluggish.  ", wd_che[msex]);
-                       spoil_out(buf);
-               }
-
-               if (flags2 & (RF2_AURA_FIRE))
-               {
-                       sprintf(buf, "%s is surrounded by flames.  ", wd_che[msex]);
-                       spoil_out(buf);
-               }
-
-               if (flags3 & (RF3_AURA_COLD))
-               {
-                       sprintf(buf, "%s is surrounded by ice.  ", wd_che[msex]);
-                       spoil_out(buf);
-               }
-
-               if (flags2 & (RF2_AURA_ELEC))
-               {
-                       sprintf(buf, "%s is surrounded by electricity.  ", wd_che[msex]);
-                       spoil_out(buf);
-               }
-
-               if (flags2 & (RF2_REFLECTING))
-               {
-                       sprintf(buf, "%s reflects bolt spells.  ", wd_che[msex]);
-                       spoil_out(buf);
-               }
-
-               if (flags1 & (RF1_ESCORT))
-               {
-                       sprintf(buf, "%s usually appears with ", wd_che[msex]);
-                       spoil_out(buf);
-                       if (flags1 & (RF1_ESCORTS)) spoil_out("escorts.  ");
-                       else spoil_out("an escort.  ");
-               }
-
-               if (flags1 & RF1_FRIENDS)
-               {
-                       sprintf(buf, "%s usually appears in groups.  ", wd_che[msex]);
-                       spoil_out(buf);
-               }
-
-               /* Collect inate attacks */
-               vn = 0;
-#ifdef JP
-if (flags4 & RF4_SHRIEK)  vp[vn++] = "ÈáÌĤǽõ¤±¤òµá¤á¤ë";
-if (flags4 & RF4_ROCKET)  vp[vn++] = "¥í¥±¥Ã¥È¤òȯ¼Í¤¹¤ë";
-if (flags4 & RF4_SHOOT) vp[vn++] = "¼Í·â¤ò¤¹¤ë";
-if (flags6 & (RF6_SPECIAL)) vp[vn++] = "ÆÃÊ̤ʹÔÆ°¤ò¤¹¤ë";
-#else
-               if (flags4 & RF4_SHRIEK)  vp[vn++] = "shriek for help";
-               if (flags4 & RF4_ROCKET)  vp[vn++] = "shoot a rocket";
-               if (flags4 & RF4_SHOOT) vp[vn++] = "fire missiles";
-               if (flags6 & (RF6_SPECIAL)) vp[vn++] = "do something";
-#endif
-
-
-               if (vn)
-               {
-#ifdef JP
-                       spoil_out(wd_che[msex]);
-                        spoil_out("¤Ï");
-#else
-                       spoil_out(wd_che[msex]);
-#endif
-
-                       for (i = 0; i < vn; i++)
-                       {
-#ifdef JP
-                        if(i!=vn-1){
-                          jverb3(vp[i],jverb_buf);
-                          spoil_out(jverb_buf);
-                          spoil_out("¤ê¡¢");
-                        }
-                        else  spoil_out(vp[i]);
-#else
-                               if (!i) spoil_out(" may ");
-                               else if (i < vn-1) spoil_out(", ");
-                               else spoil_out(" or ");
-                               spoil_out(vp[i]);
-#endif
-
-                       }
-#ifdef JP
-                       spoil_out("¤³¤È¤¬¤Ç¤­¤ë¡£");
-#else
-                       spoil_out(".  ");
-#endif
-
-               }
-
-               /* Collect breaths */
-               vn = 0;
-#ifdef JP
-if (flags4 & (RF4_BR_ACID))            vp[vn++] = "»À";
-if (flags4 & (RF4_BR_ELEC))            vp[vn++] = "°ðºÊ";
-if (flags4 & (RF4_BR_FIRE))            vp[vn++] = "²Ð±ê";
-if (flags4 & (RF4_BR_COLD))            vp[vn++] = "Î䵤";
-if (flags4 & (RF4_BR_POIS))            vp[vn++] = "ÆÇ";
-if (flags4 & (RF4_BR_NETH))            vp[vn++] = "ÃϹö";
-if (flags4 & (RF4_BR_LITE))            vp[vn++] = "Á®¸÷";
-if (flags4 & (RF4_BR_DARK))            vp[vn++] = "°Å¹õ";
-if (flags4 & (RF4_BR_CONF))            vp[vn++] = "º®Íð";
-if (flags4 & (RF4_BR_SOUN))            vp[vn++] = "¹ì²»";
-if (flags4 & (RF4_BR_CHAO))            vp[vn++] = "¥«¥ª¥¹";
-if (flags4 & (RF4_BR_DISE))            vp[vn++] = "Îô²½";
-if (flags4 & (RF4_BR_NEXU))            vp[vn++] = "°ø²Ìº®Íð";
-if (flags4 & (RF4_BR_TIME))            vp[vn++] = "»þ´ÖµÕž";
-if (flags4 & (RF4_BR_INER))            vp[vn++] = "ÃÙÆß";
-if (flags4 & (RF4_BR_GRAV))            vp[vn++] = "½ÅÎÏ";
-if (flags4 & (RF4_BR_SHAR))            vp[vn++] = "ÇËÊÒ";
-if (flags4 & (RF4_BR_PLAS))            vp[vn++] = "¥×¥é¥º¥Þ";
-if (flags4 & (RF4_BR_WALL))            vp[vn++] = "¥Õ¥©¡¼¥¹";
-if (flags4 & (RF4_BR_MANA))            vp[vn++] = "ËâÎÏ";
-if (flags4 & (RF4_BR_NUKE))            vp[vn++] = "Êü¼ÍÀ­ÇÑ´þʪ";
-if (flags4 & (RF4_BR_DISI))            vp[vn++] = "ʬ²ò";
-#else
-               if (flags4 & (RF4_BR_ACID)) vp[vn++] = "acid";
-               if (flags4 & (RF4_BR_ELEC)) vp[vn++] = "lightning";
-               if (flags4 & (RF4_BR_FIRE)) vp[vn++] = "fire";
-               if (flags4 & (RF4_BR_COLD)) vp[vn++] = "frost";
-               if (flags4 & (RF4_BR_POIS)) vp[vn++] = "poison";
-               if (flags4 & (RF4_BR_NETH)) vp[vn++] = "nether";
-               if (flags4 & (RF4_BR_LITE)) vp[vn++] = "light";
-               if (flags4 & (RF4_BR_DARK)) vp[vn++] = "darkness";
-               if (flags4 & (RF4_BR_CONF)) vp[vn++] = "confusion";
-               if (flags4 & (RF4_BR_SOUN)) vp[vn++] = "sound";
-               if (flags4 & (RF4_BR_CHAO)) vp[vn++] = "chaos";
-               if (flags4 & (RF4_BR_DISE)) vp[vn++] = "disenchantment";
-               if (flags4 & (RF4_BR_NEXU)) vp[vn++] = "nexus";
-               if (flags4 & (RF4_BR_TIME)) vp[vn++] = "time";
-               if (flags4 & (RF4_BR_INER)) vp[vn++] = "inertia";
-               if (flags4 & (RF4_BR_GRAV)) vp[vn++] = "gravity";
-               if (flags4 & (RF4_BR_SHAR)) vp[vn++] = "shards";
-               if (flags4 & (RF4_BR_PLAS)) vp[vn++] = "plasma";
-               if (flags4 & (RF4_BR_WALL)) vp[vn++] = "force";
-               if (flags4 & (RF4_BR_MANA)) vp[vn++] = "mana";
-               if (flags4 & (RF4_BR_NUKE)) vp[vn++] = "toxic waste";
-               if (flags4 & (RF4_BR_DISI)) vp[vn++] = "disintegration";
-#endif
-
-
-               if (vn)
-               {
-                       breath = TRUE;
-#ifdef JP
-                       spoil_out(wd_che[msex]);
-                       spoil_out("¤Ï");
-#else
-                       spoil_out(wd_che[msex]);
-#endif
-
-#ifdef JP
-                       spoil_out("¤Ï");
-#endif
-                       for (i = 0; i < vn; i++)
-                       {
-#ifdef JP
-                        if ( i != 0 ) spoil_out("¤ä");
-#else
-                               if (!i) spoil_out(" may breathe ");
-                               else if (i < vn-1) spoil_out(", ");
-                               else spoil_out(" or ");
-#endif
-
-                               spoil_out(vp[i]);
-                       }
-#ifdef JP
-                       spoil_out("¤Î¥Ö¥ì¥¹¤ò");
-                       if (flags2 & (RF2_POWERFUL)) spoil_out("¶¯ÎϤË");
-                       spoil_out("ÅǤ¯¤³¤È¤¬¤¢");
-#else
-                       if (flags2 & (RF2_POWERFUL)) spoil_out(" powerfully");
-#endif
-
-               }
-
-               /* Collect spells */
-               vn = 0;
-#ifdef JP
-if (flags5 & (RF5_BA_ACID))         vp[vn++] = "¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë¤Î";
-if (flags5 & (RF5_BA_ELEC))         vp[vn++] = "¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë¤Î";
-if (flags5 & (RF5_BA_FIRE))         vp[vn++] = "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë¤Î";
-if (flags5 & (RF5_BA_COLD))         vp[vn++] = "¥¢¥¤¥¹¡¦¥Ü¡¼¥ë¤Î";
-if (flags5 & (RF5_BA_POIS))         vp[vn++] = "°­½­±À¤Î";
-if (flags5 & (RF5_BA_NETH))         vp[vn++] = "ÃϹöµå¤Î";
-if (flags5 & (RF5_BA_WATE))         vp[vn++] = "¥¦¥©¡¼¥¿¡¼¡¦¥Ü¡¼¥ë¤Î";
-if (flags4 & (RF4_BA_NUKE))         vp[vn++] = "Êü¼Íǽµå¤Î";
-#else
-               if (flags5 & (RF5_BA_ACID))           vp[vn++] = "produce acid balls";
-               if (flags5 & (RF5_BA_ELEC))           vp[vn++] = "produce lightning balls";
-               if (flags5 & (RF5_BA_FIRE))           vp[vn++] = "produce fire balls";
-               if (flags5 & (RF5_BA_COLD))           vp[vn++] = "produce frost balls";
-               if (flags5 & (RF5_BA_POIS))           vp[vn++] = "produce poison balls";
-               if (flags5 & (RF5_BA_NETH))           vp[vn++] = "produce nether balls";
-               if (flags5 & (RF5_BA_WATE))           vp[vn++] = "produce water balls";
-               if (flags4 & (RF4_BA_NUKE))           vp[vn++] = "produce balls of radiation";
-#endif
-
-#ifdef JP
-if (flags5 & (RF5_BA_MANA))         vp[vn++] = "ËâÎϤÎÍò¤Î";
-if (flags5 & (RF5_BA_DARK))         vp[vn++] = "°Å¹õ¤ÎÍò¤Î";
-if (flags5 & (RF5_BA_LITE))         vp[vn++] = "¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î";
-if (flags4 & (RF4_BA_CHAO))         vp[vn++] = "½ã¥í¥°¥ë¥¹¤Î";
-#else
-               if (flags5 & (RF5_BA_MANA))           vp[vn++] = "produce mana storms";
-               if (flags5 & (RF5_BA_DARK))           vp[vn++] = "produce darkness storms";
-               if (flags4 & (RF5_BA_LITE))           vp[vn++] = "produce starburst";
-               if (flags4 & (RF4_BA_CHAO))           vp[vn++] = "invoke raw Logrus";
-#endif
-#ifdef JP
-if (flags6 & (RF6_HAND_DOOM))       vp[vn++] = "ÇËÌǤμê¤Î";
-if (flags6 & (RF6_PSY_SPEAR))       vp[vn++] = "¸÷¤Î·õ¤Î";
-if (flags5 & (RF5_DRAIN_MANA))      vp[vn++] = "ËâÎϤòµÛ¤¤¼è¤ë";
-if (flags5 & (RF5_MIND_BLAST))      vp[vn++] = "Àº¿À¤ò¹¶·â¤¹¤ë";
-if (flags5 & (RF5_BRAIN_SMASH))     vp[vn++] = "Ǿ¤ò¹¶·â¤¹¤ë";
-if (flags5 & (RF5_CAUSE_1))         vp[vn++] = "·Ú½ý¤ò°ú¤­µ¯¤³¤·¤Æ¼ö¤¤¤ò¤«¤±¤ë";
-if (flags5 & (RF5_CAUSE_2))         vp[vn++] = "½Å½ý¤ò°ú¤­µ¯¤³¤·¤Æ¼ö¤¤¤ò¤«¤±¤ë";
-if (flags5 & (RF5_CAUSE_3))         vp[vn++] = "Ã×Ì¿½ý¤ò°ú¤­µ¯¤³¤·¤Æ¼ö¤¤¤ò¤«¤±¤ë";
-if (flags5 & (RF5_CAUSE_4))         vp[vn++] = "È빦¤òÆͤ¯";
-if (flags5 & (RF5_BO_ACID))         vp[vn++] = "¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¤Î";
-if (flags5 & (RF5_BO_ELEC))         vp[vn++] = "¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¤Î";
-if (flags5 & (RF5_BO_FIRE))         vp[vn++] = "¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î";
-if (flags5 & (RF5_BO_COLD))         vp[vn++] = "¥¢¥¤¥¹¡¦¥Ü¥ë¥È¤Î";
-if (flags5 & (RF5_BO_NETH))         vp[vn++] = "ÃϹö¤ÎÌð¤Î";
-if (flags5 & (RF5_BO_WATE))         vp[vn++] = "¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¤Î";
-if (flags5 & (RF5_BO_MANA))         vp[vn++] = "ËâÎϤÎÌð¤Î";
-if (flags5 & (RF5_BO_PLAS))         vp[vn++] = "¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È¤Î";
-if (flags5 & (RF5_BO_ICEE))         vp[vn++] = "¶Ë´¨¤ÎÌð¤Î";
-if (flags5 & (RF5_MISSILE))         vp[vn++] = "¥Þ¥¸¥Ã¥¯¥ß¥µ¥¤¥ë¤Î";
-if (flags5 & (RF5_SCARE))           vp[vn++] = "¶²Éݤò¸Æ¤Óµ¯¤³¤¹";
-if (flags5 & (RF5_BLIND))           vp[vn++] = "Ìܤò¤¯¤é¤Þ¤»¤ë";
-if (flags5 & (RF5_CONF))            vp[vn++] = "º®Í𤵤»¤ë";
-if (flags5 & (RF5_SLOW))            vp[vn++] = "¸ºÂ®¤µ¤»¤ë";
-if (flags5 & (RF5_HOLD))            vp[vn++] = "Ëãá㤵¤»¤ë";
-if (flags6 & (RF6_HASTE))           vp[vn++] = "¼«Ê¬¤ò²Ã®¤¹¤ë";
-if (flags6 & (RF6_HEAL))            vp[vn++] = "¼«Ê¬¤ò¼£Ìþ¤¹¤ë";
-if (flags6 & (RF6_INVULNER))        vp[vn++] = "̵½ý¤Îµå¤Î";
-if (flags4 & (RF4_DISPEL))          vp[vn++] = "ËâÎϤò¾Ã¤·µî¤ë";
-if (flags6 & (RF6_BLINK))           vp[vn++] = "½Ö»þ¤Ë¾Ã¤¨¤ë";
-if (flags6 & (RF6_TPORT))           vp[vn++] = "¥Æ¥ì¥Ý¡¼¥È¤¹¤ë";
-if (flags6 & (RF6_WORLD))           vp[vn++] = "»þ¤ò»ß¤á¤ë";
-if (flags6 & (RF6_TELE_TO))         vp[vn++] = "¥Æ¥ì¥Ý¡¼¥È¤Ç°ú¤­Ì᤹";
-if (flags6 & (RF6_TELE_AWAY))       vp[vn++] = "¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë";
-if (flags6 & (RF6_TELE_LEVEL))      vp[vn++] = "¥Æ¥ì¥Ý¡¼¥È¡¦¥ì¥Ù¥ë¤µ¤»¤ë";
-if (flags6 & (RF6_DARKNESS))        vp[vn++] = "°Å°Ç¤òºî¤ë";
-if (flags6 & (RF6_TRAPS))           vp[vn++] = "¥È¥é¥Ã¥×¤òºî¤ë";
-if (flags6 & (RF6_FORGET))          vp[vn++] = "µ­²±¤ò¾Ãµî¤¹¤ë";
-if (flags6 & (RF6_RAISE_DEAD))      vp[vn++] = "»à¼Ô¤òᴤ餻¤ë";
-if (flags6 & (RF6_S_MONSTER))       vp[vn++] = "°ìÂΤΥâ¥ó¥¹¥¿¡¼¤ò¾¤´­¤¹¤ë";
-if (flags6 & (RF6_S_MONSTERS))      vp[vn++] = "Ê£¿ô¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¤´­¤¹¤ë";
-if (flags6 & (RF6_S_KIN))           vp[vn++] = "µß±ç¤ò¾¤´­¤¹¤ë";
-if (flags6 & (RF6_S_ANT))           vp[vn++] = "¥¢¥ê¤ò¾¤´­¤¹¤ë";
-if (flags6 & (RF6_S_SPIDER))        vp[vn++] = "¥¯¥â¤ò¾¤´­¤¹¤ë";
-if (flags6 & (RF6_S_HOUND))         vp[vn++] = "¥Ï¥¦¥ó¥É¤ò¾¤´­¤¹¤ë";
-if (flags6 & (RF6_S_HYDRA))         vp[vn++] = "¥Ò¥É¥é¤ò¾¤´­¤¹¤ë";
-if (flags6 & (RF6_S_ANGEL))         vp[vn++] = "°ìÂΤÎÅ·»È¤ò¾¤´­¤¹¤ë";
-if (flags6 & (RF6_S_DEMON))         vp[vn++] = "°ìÂΤΥǡ¼¥â¥ó¤ò¾¤´­¤¹¤ë";
-if (flags6 & (RF6_S_UNDEAD))        vp[vn++] = "°ìÂΤΥ¢¥ó¥Ç¥Ã¥É¤ò¾¤´­¤¹¤ë";
-if (flags6 & (RF6_S_DRAGON))        vp[vn++] = "°ìÂΤΥɥ饴¥ó¤ò¾¤´­¤¹¤ë";
-if (flags6 & (RF6_S_HI_UNDEAD))     vp[vn++] = "¶¯ÎϤʥ¢¥ó¥Ç¥Ã¥É¤ò¾¤´­¤¹¤ë";
-if (flags6 & (RF6_S_HI_DRAGON))     vp[vn++] = "¸ÅÂå¥É¥é¥´¥ó¤ò¾¤´­¤¹¤ë";
-if (flags6 & (RF6_S_CYBER))         vp[vn++] = "¥µ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤ò¾¤´­¤¹¤ë";
-if (flags6 & (RF6_S_AMBERITES))     vp[vn++] = "¥¢¥ó¥Ð¡¼¤Î²¦Â²¤ò¾¤´­¤¹¤ë";
-if (flags6 & (RF6_S_UNIQUE))        vp[vn++] = "¥æ¥Ë¡¼¥¯¡¦¥â¥ó¥¹¥¿¡¼¤ò¾¤´­¤¹¤ë";
-#else
-               if (flags6 & (RF6_HAND_DOOM))         vp[vn++] = "invoke the Hand of Doom";
-               if (flags6 & (RF6_PSY_SPEAR))         vp[vn++] = "psycho-spear";
-               if (flags5 & (RF5_DRAIN_MANA))        vp[vn++] = "drain mana";
-               if (flags5 & (RF5_MIND_BLAST))        vp[vn++] = "cause mind blasting";
-               if (flags5 & (RF5_BRAIN_SMASH))       vp[vn++] = "cause brain smashing";
-               if (flags5 & (RF5_CAUSE_1))           vp[vn++] = "cause light wounds and cursing";
-               if (flags5 & (RF5_CAUSE_2))           vp[vn++] = "cause serious wounds and cursing";
-               if (flags5 & (RF5_CAUSE_3))           vp[vn++] = "cause critical wounds and cursing";
-               if (flags5 & (RF5_CAUSE_4))           vp[vn++] = "cause mortal wounds";
-               if (flags5 & (RF5_BO_ACID))           vp[vn++] = "produce acid bolts";
-               if (flags5 & (RF5_BO_ELEC))           vp[vn++] = "produce lightning bolts";
-               if (flags5 & (RF5_BO_FIRE))           vp[vn++] = "produce fire bolts";
-               if (flags5 & (RF5_BO_COLD))           vp[vn++] = "produce frost bolts";
-               if (flags5 & (RF5_BO_NETH))           vp[vn++] = "produce nether bolts";
-               if (flags5 & (RF5_BO_WATE))           vp[vn++] = "produce water bolts";
-               if (flags5 & (RF5_BO_MANA))           vp[vn++] = "produce mana bolts";
-               if (flags5 & (RF5_BO_PLAS))           vp[vn++] = "produce plasma bolts";
-               if (flags5 & (RF5_BO_ICEE))           vp[vn++] = "produce ice bolts";
-               if (flags5 & (RF5_MISSILE))           vp[vn++] = "produce magic missiles";
-               if (flags5 & (RF5_SCARE))             vp[vn++] = "terrify";
-               if (flags5 & (RF5_BLIND))             vp[vn++] = "blind";
-               if (flags5 & (RF5_CONF))              vp[vn++] = "confuse";
-               if (flags5 & (RF5_SLOW))              vp[vn++] = "slow";
-               if (flags5 & (RF5_HOLD))              vp[vn++] = "paralyze";
-               if (flags6 & (RF6_HASTE))             vp[vn++] = "haste-self";
-               if (flags6 & (RF6_HEAL))              vp[vn++] = "heal-self";
-               if (flags6 & (RF6_INVULNER))          vp[vn++] = "make invulnerable";
-               if (flags6 & (RF6_BLINK))             vp[vn++] = "blink-self";
-               if (flags6 & (RF6_TPORT))             vp[vn++] = "teleport-self";
-               if (flags6 & (RF6_WORLD))             vp[vn++] = "stop the time";
-               if (flags6 & (RF6_TELE_TO))           vp[vn++] = "teleport to";
-               if (flags6 & (RF6_TELE_AWAY))         vp[vn++] = "teleport away";
-               if (flags6 & (RF6_TELE_LEVEL))        vp[vn++] = "teleport level";
-               if (flags6 & (RF6_DARKNESS))          vp[vn++] = "create darkness";
-               if (flags6 & (RF6_TRAPS))             vp[vn++] = "create traps";
-               if (flags6 & (RF6_FORGET))            vp[vn++] = "cause amnesia";
-               if (flags6 & (RF6_RAISE_DEAD))        vp[vn++] = "raise dead";
-               if (flags6 & (RF6_S_MONSTER))         vp[vn++] = "summon a monster";
-               if (flags6 & (RF6_S_MONSTERS))        vp[vn++] = "summon monsters";
-               if (flags6 & (RF6_S_KIN))             vp[vn++] = "summon aid";
-               if (flags6 & (RF6_S_ANT))             vp[vn++] = "summon ants";
-               if (flags6 & (RF6_S_SPIDER))          vp[vn++] = "summon spiders";
-               if (flags6 & (RF6_S_HOUND))           vp[vn++] = "summon hounds";
-               if (flags6 & (RF6_S_HYDRA))           vp[vn++] = "summon hydras";
-               if (flags6 & (RF6_S_ANGEL))           vp[vn++] = "summon an angel";
-               if (flags6 & (RF6_S_DEMON))           vp[vn++] = "summon a demon";
-               if (flags6 & (RF6_S_UNDEAD))          vp[vn++] = "summon an undead";
-               if (flags6 & (RF6_S_DRAGON))          vp[vn++] = "summon a dragon";
-               if (flags6 & (RF6_S_HI_UNDEAD))       vp[vn++] = "summon greater undead";
-               if (flags6 & (RF6_S_HI_DRAGON))       vp[vn++] = "summon ancient dragons";
-               if (flags6 & (RF6_S_CYBER))           vp[vn++] = "summon Cyberdemons";
-               if (flags6 & (RF6_S_AMBERITES))       vp[vn++] = "summon Lords of Amber";
-               if (flags6 & (RF6_S_UNIQUE))          vp[vn++] = "summon unique monsters";
-#endif
-
-
-               if (vn)
-               {
-                       magic = TRUE;
-                       if (breath)
-                       {
-#ifdef JP
-                               spoil_out("¤ê¡¢¤Ê¤ª¤«¤Ä");
-#else
-                               spoil_out(", and is also");
-#endif
-
-                       }
-                       else
-                       {
-#ifdef JP
-                               spoil_out(wd_che[msex]);
-                               spoil_out("¤Ï");
-#else
-                               spoil_out(wd_che[msex]);
-                               spoil_out(" is");
-#endif
-
-                       }
-
-#ifdef JP
-                       /* Adverb */
-                       if (flags2 & (RF2_SMART)) spoil_out("Ū³Î¤Ë");
-
-                       /* Verb Phrase */
-                       spoil_out("ËâË¡¤ò»È¤¦¤³¤È¤¬¤Ç¤­¡¢");
-#else
-                       spoil_out(" magical, casting spells");
-                       if (flags2 & (RF2_SMART)) spoil_out(" intelligently");
-#endif
-
-
-                       for (i = 0; i < vn; i++)
-                       {
-#ifdef JP
-                        if ( i != 0 ) spoil_out("¼öʸ¡¢");
-#else
-                               if (!i) spoil_out(" which ");
-                               else if (i < vn-1) spoil_out(", ");
-                               else spoil_out(" or ");
-#endif
-
-                               spoil_out(vp[i]);
-                       }
-#ifdef JP
-                       spoil_out("¼öʸ¤ò¾§¤¨¤ë¤³¤È¤¬¤¢");
-#endif
-               }
-
-               if (breath || magic)
-               {
-#ifdef JP
-                       sprintf(buf, "¤ë(³ÎΨ:Ìó1/%d)¡£",
-                               200 / (r_ptr->freq_inate + r_ptr->freq_spell));
-                       spoil_out(buf);
-#else
-                       sprintf(buf, "; 1 time in %d.  ",
-                               200 / (r_ptr->freq_inate + r_ptr->freq_spell));
-                       spoil_out(buf);
-#endif
-
-               }
-
-               /* Collect special abilities. */
-               vn = 0;
-#ifdef JP
-if (flags7 & (RF7_HAS_LITE_1 | RF7_HAS_LITE_2))  vp[vn++] = "¥À¥ó¥¸¥ç¥ó¤ò¾È¤é¤¹";
-if (flags7 & (RF7_SELF_LITE_1 | RF7_SELF_LITE_2)) vp[vn++] = "¸÷¤Ã¤Æ¤¤¤ë";
-if (flags2 & (RF2_OPEN_DOOR)) vp[vn++] = "¥É¥¢¤ò³«¤±¤ë";
-if (flags2 & (RF2_BASH_DOOR)) vp[vn++] = "¥É¥¢¤òÂǤÁÇˤë";
-if (flags2 & (RF2_PASS_WALL)) vp[vn++] = "Êɤò¤¹¤êÈ´¤±¤ë";
-if (flags2 & (RF2_KILL_WALL)) vp[vn++] = "Êɤò·¡¤ê¿Ê¤à";
-if (flags2 & (RF2_MOVE_BODY)) vp[vn++] = "¼å¤¤¥â¥ó¥¹¥¿¡¼¤ò²¡¤·¤Î¤±¤ë";
-if (flags2 & (RF2_KILL_BODY)) vp[vn++] = "¼å¤¤¥â¥ó¥¹¥¿¡¼¤òÅݤ¹";
-if (flags2 & (RF2_TAKE_ITEM)) vp[vn++] = "¥¢¥¤¥Æ¥à¤ò½¦¤¦";
-if (flags2 & (RF2_KILL_ITEM)) vp[vn++] = "¥¢¥¤¥Æ¥à¤ò²õ¤¹";
-#else
-               if (flags7 & (RF7_HAS_LITE_1 | RF7_HAS_LITE_2))  vp[vn++] = "illuminate the dungeon";
-               if (flags7 & (RF7_SELF_LITE_1 | RF7_SELF_LITE_2)) vp[vn++] = "illuminate the dungeon";
-               if (flags2 & (RF2_OPEN_DOOR)) vp[vn++] = "open doors";
-               if (flags2 & (RF2_BASH_DOOR)) vp[vn++] = "bash down doors";
-               if (flags2 & (RF2_PASS_WALL)) vp[vn++] = "pass through walls";
-               if (flags2 & (RF2_KILL_WALL)) vp[vn++] = "bore through walls";
-               if (flags2 & (RF2_MOVE_BODY)) vp[vn++] = "push past weaker monsters";
-               if (flags2 & (RF2_KILL_BODY)) vp[vn++] = "destroy weaker monsters";
-               if (flags2 & (RF2_TAKE_ITEM)) vp[vn++] = "pick up objects";
-               if (flags2 & (RF2_KILL_ITEM)) vp[vn++] = "destroy objects";
-#endif
-
-
-               if (vn)
-               {
-                       spoil_out(wd_che[msex]);
-                       for (i = 0; i < vn; i++)
-                       {
-#ifdef JP
-                        if(i!=vn-1){
-                          jverb1(vp[i],jverb_buf);
-                          spoil_out(jverb_buf);
-                          spoil_out("¡¢");
-                        }
-                        else  spoil_out(vp[i]);
-#else
-                               if (!i) spoil_out(" can ");
-                               else if (i < vn-1) spoil_out(", ");
-                               else spoil_out(" and ");
-                               spoil_out(vp[i]);
-#endif
-
-                       }
-                       spoil_out(".  ");
-               }
-
-               if (flags2 & (RF2_INVISIBLE))
-               {
-                       spoil_out(wd_che[msex]);
-#ifdef JP
-spoil_out("¤ÏÆ©ÌÀ¤ÇÌܤ˸«¤¨¤Ê¤¤¡£");
-#else
-                       spoil_out(" is invisible.  ");
-#endif
-
-               }
-               if (flags2 & (RF2_COLD_BLOOD))
-               {
-                       spoil_out(wd_che[msex]);
-#ifdef JP
-spoil_out("¤ÏÎä·ìưʪ¤Ç¤¢¤ë¡£");
-#else
-                       spoil_out(" is cold blooded.  ");
-#endif
-
-               }
-               if (flags2 & (RF2_EMPTY_MIND))
-               {
-                       spoil_out(wd_che[msex]);
-#ifdef JP
-spoil_out("¤Ï¥Æ¥ì¥Ñ¥·¡¼¤Ç¤Ï´¶ÃΤǤ­¤Ê¤¤¡£");
-#else
-                       spoil_out(" is not detected by telepathy.  ");
-#endif
-
-               }
-               if (flags2 & (RF2_WEIRD_MIND))
-               {
-                       spoil_out(wd_che[msex]);
-#ifdef JP
-spoil_out("¤Ï¤Þ¤ì¤Ë¥Æ¥ì¥Ñ¥·¡¼¤Ç´¶ÃΤǤ­¤ë¡£");
-#else
-                       spoil_out(" is rarely detected by telepathy.  ");
-#endif
-
-               }
-               if (flags2 & (RF2_MULTIPLY))
-               {
-                       spoil_out(wd_che[msex]);
-#ifdef JP
-spoil_out("¤ÏÇúȯŪ¤ËÁý¿£¤¹¤ë¡£");
-#else
-                       spoil_out(" breeds explosively.  ");
-#endif
-
-               }
-               if (flags2 & (RF2_REGENERATE))
-               {
-                       spoil_out(wd_che[msex]);
-#ifdef JP
-spoil_out("¤ÏÁÇÁ᤯ÂÎÎϤò²óÉü¤¹¤ë¡£");
-#else
-                       spoil_out(" regenerates quickly.  ");
-#endif
-
-               }
-
-               /* Collect susceptibilities */
-               vn = 0;
-#ifdef JP
-if (flags3 & (RF3_HURT_ROCK)) vp[vn++] = "´ä¤ò½üµî¤¹¤ë¤â¤Î";
-if (flags3 & (RF3_HURT_LITE)) vp[vn++] = "ÌÀ¤ë¤¤¸÷";
-if (flags3 & (RF3_HURT_FIRE)) vp[vn++] = "²Ð";
-if (flags3 & (RF3_HURT_COLD)) vp[vn++] = "Î䵤";
-#else
-               if (flags3 & (RF3_HURT_ROCK)) vp[vn++] = "rock remover";
-               if (flags3 & (RF3_HURT_LITE)) vp[vn++] = "bright light";
-               if (flags3 & (RF3_HURT_FIRE)) vp[vn++] = "fire";
-               if (flags3 & (RF3_HURT_COLD)) vp[vn++] = "cold";
-#endif
-
-
-               if (vn)
-               {
-                       spoil_out(wd_che[msex]);
-                       for (i = 0; i < vn; i++)
-                       {
-                               if (!i) spoil_out(" is hurt by ");
-                               else if (i < vn-1) spoil_out(", ");
-                               else spoil_out(" and ");
-                               spoil_out(vp[i]);
-                       }
-                       spoil_out(".  ");
-               }
-
-               /* Collect immunities */
-               vn = 0;
-#ifdef JP
-if (flags3 & (RF3_IM_ACID)) vp[vn++] = "»À";
-if (flags3 & (RF3_IM_ELEC)) vp[vn++] = "ÅÅ·â";
-if (flags3 & (RF3_IM_FIRE)) vp[vn++] = "²Ð";
-if (flags3 & (RF3_IM_COLD)) vp[vn++] = "Î䵤";
-if (flags3 & (RF3_IM_POIS)) vp[vn++] = "ÆÇ";
-#else
-               if (flags3 & (RF3_IM_ACID)) vp[vn++] = "acid";
-               if (flags3 & (RF3_IM_ELEC)) vp[vn++] = "lightning";
-               if (flags3 & (RF3_IM_FIRE)) vp[vn++] = "fire";
-               if (flags3 & (RF3_IM_COLD)) vp[vn++] = "cold";
-               if (flags3 & (RF3_IM_POIS)) vp[vn++] = "poison";
-#endif
-
-
-               if (vn)
-               {
-                       spoil_out(wd_che[msex]);
-                       for (i = 0; i < vn; i++)
-                       {
-                               if (!i) spoil_out(" resists ");
-                               else if (i < vn-1) spoil_out(", ");
-                               else spoil_out(" and ");
-                               spoil_out(vp[i]);
-                       }
-                       spoil_out(".  ");
-               }
-
-               /* Collect resistances */
-               vn = 0;
-#ifdef JP
-if (flags3 & (RF3_RES_NETH)) vp[vn++] = "ÃϹö";
-if (flags3 & (RF3_RES_WATE)) vp[vn++] = "¿å";
-if (flags3 & (RF3_RES_PLAS)) vp[vn++] = "¥×¥é¥º¥Þ";
-if (flags3 & (RF3_RES_NEXU)) vp[vn++] = "°ø²Ìº®Íð";
-if (flags3 & (RF3_RES_DISE)) vp[vn++] = "Îô²½";
-if (flags3 & (RF3_RES_ALL )) vp[vn++] = "¤¢¤é¤æ¤ë¸ú²Ì";
-#else
-               if (flags3 & (RF3_RES_NETH)) vp[vn++] = "nether";
-               if (flags3 & (RF3_RES_WATE)) vp[vn++] = "water";
-               if (flags3 & (RF3_RES_PLAS)) vp[vn++] = "plasma";
-               if (flags3 & (RF3_RES_NEXU)) vp[vn++] = "nexus";
-               if (flags3 & (RF3_RES_DISE)) vp[vn++] = "disenchantment";
-               if (flags3 & (RF3_RES_ALL )) vp[vn++] = "all";
-#endif
-
-               if (flags3 & (RF3_RES_TELE)) vp[vn++] = "teleportation";
-#ifdef JP
-if ((flags3 & RF3_RES_TELE) && !(r_ptr->flags1 & RF1_UNIQUE)) vp[vn++] = "¥Æ¥ì¥Ý¡¼¥È";
-#else
-               if ((flags3 & RF3_RES_TELE) && !(r_ptr->flags1 & RF1_UNIQUE)) vp[vn++] = "teleportation";
-#endif
-
-
-               if (vn)
-               {
-                       spoil_out(wd_che[msex]);
-                       for (i = 0; i < vn; i++)
-                       {
-                               if (!i) spoil_out(" resists ");
-                               else if (i < vn-1) spoil_out(", ");
-                               else spoil_out(" and ");
-                               spoil_out(vp[i]);
-                       }
-                       spoil_out(".  ");
-               }
-
-               /* Collect non-effects */
-               vn = 0;
-#ifdef JP
-if (flags3 & (RF3_NO_STUN)) vp[vn++] = "Û¯Û°¤È¤·¤Ê¤¤";
-if (flags3 & (RF3_NO_FEAR)) vp[vn++] = "¶²Éݤò´¶¤¸¤Ê¤¤";
-if (flags3 & (RF3_NO_CONF)) vp[vn++] = "º®Í𤷤ʤ¤";
-if (flags3 & (RF3_NO_SLEEP)) vp[vn++] = "̲¤é¤µ¤ì¤Ê¤¤";
-if ((flags3 & RF3_RES_TELE) && (r_ptr->flags1 & RF1_UNIQUE)) vp[vn++] = "¥Æ¥ì¥Ý¡¼¥È¤µ¤ì¤Ê¤¤";
-#else
-               if (flags3 & (RF3_NO_STUN)) vp[vn++] = "stunned";
-               if (flags3 & (RF3_NO_FEAR)) vp[vn++] = "frightened";
-               if (flags3 & (RF3_NO_CONF)) vp[vn++] = "confused";
-               if (flags3 & (RF3_NO_SLEEP)) vp[vn++] = "slept";
-               if ((flags3 & RF3_RES_TELE) && (r_ptr->flags1 & RF1_UNIQUE)) vp[vn++] = "teleported";
-#endif
-
-
-               if (vn)
-               {
-                       spoil_out(wd_che[msex]);
-                       for (i = 0; i < vn; i++)
-                       {
-                               if (!i) spoil_out(" cannot be ");
-                               else if (i < vn-1) spoil_out(", ");
-                               else spoil_out(" or ");
-                               spoil_out(vp[i]);
-                       }
-                       spoil_out(".  ");
-               }
-
-               spoil_out(wd_che[msex]);
-#ifdef JP
-spoil_out("¤Ï¿¯Æþ¼Ô");
-if (r_ptr->sleep > 200)     spoil_out("¤ò̵»ë¤·¤¬¤Á¤Ç¤¢¤ë¤¬");
-else if (r_ptr->sleep > 95) spoil_out("¤ËÂФ·¤Æ¤Û¤È¤ó¤ÉÃí°Õ¤òʧ¤ï¤Ê¤¤¤¬");
-else if (r_ptr->sleep > 75) spoil_out("¤ËÂФ·¤Æ¤¢¤Þ¤êÃí°Õ¤òʧ¤ï¤Ê¤¤¤¬");
-else if (r_ptr->sleep > 45) spoil_out("¤ò¸«²á¤´¤·¤¬¤Á¤Ç¤¢¤ë¤¬");
-else if (r_ptr->sleep > 25) spoil_out("¤ò¤Û¤ó¤Î¾¯¤·¤Ï¸«¤Æ¤ª¤ê");
-else if (r_ptr->sleep > 10) spoil_out("¤ò¤·¤Ð¤é¤¯¤Ï¸«¤Æ¤ª¤ê");
-else if (r_ptr->sleep > 5)  spoil_out("¤ò´öʬÃí°Õ¿¼¤¯¸«¤Æ¤ª¤ê");
-else if (r_ptr->sleep > 3)  spoil_out("¤òÃí°Õ¿¼¤¯¸«¤Æ¤ª¤ê");
-else if (r_ptr->sleep > 1)  spoil_out("¤ò¤«¤Ê¤êÃí°Õ¿¼¤¯¸«¤Æ¤ª¤ê");
-else if (r_ptr->sleep > 0)  spoil_out("¤ò·Ù²ü¤·¤Æ¤ª¤ê");
-else spoil_out("¤ò¤«¤Ê¤ê·Ù²ü¤·¤Æ¤ª¤ê");
-spoil_out("¡¢");
-sprintf(buf, " %d ¥Õ¥£¡¼¥ÈÀ褫¤é¿¯Æþ¼Ô¤Ëµ¤ÉÕ¤¯¤³¤È¤¬¤¢¤ë¡£",
-       10 * r_ptr->aaf);
-       spoil_out(buf);
-#else
-               if (r_ptr->sleep > 200)     spoil_out(" prefers to ignore");
-               else if (r_ptr->sleep > 95) spoil_out(" pays very little attention to");
-               else if (r_ptr->sleep > 75) spoil_out(" pays little attention to");
-               else if (r_ptr->sleep > 45) spoil_out(" tends to overlook");
-               else if (r_ptr->sleep > 25) spoil_out(" takes quite a while to see");
-               else if (r_ptr->sleep > 10) spoil_out(" takes a while to see");
-               else if (r_ptr->sleep > 5)  spoil_out(" is fairly observant of");
-               else if (r_ptr->sleep > 3)  spoil_out(" is observant of");
-               else if (r_ptr->sleep > 1)  spoil_out(" is very observant of");
-               else if (r_ptr->sleep > 0)  spoil_out(" is vigilant for");
-               else spoil_out(" is ever vigilant for");
-
-               sprintf(buf, " intruders, which %s may notice from %d feet.  ",
-                       wd_lhe[msex], 10 * r_ptr->aaf);
-               spoil_out(buf);
-#endif
-
-
-               i = 0;
-               if (flags1 & (RF1_DROP_60)) i += 1;
-               if (flags1 & (RF1_DROP_90)) i += 2;
-               if (flags1 & (RF1_DROP_1D2)) i += 2;
-               if (flags1 & (RF1_DROP_2D2)) i += 4;
-               if (flags1 & (RF1_DROP_3D2)) i += 6;
-               if (flags1 & (RF1_DROP_4D2)) i += 8;
-
-               /* Drops gold and/or items */
-               if (i)
-               {
-                       sin = FALSE;
-                       spoil_out(wd_che[msex]);
-                       spoil_out(" will carry");
-
-                       if (i == 1)
-                       {
-                               spoil_out(" a"); sin = TRUE;
-                       }
-                       else if (i == 2)
-                       {
-                               spoil_out(" one or two");
-                               sin = TRUE;
-                       }
-                       else
-                       {
-                               sprintf(buf, " up to %u", i);
-                               spoil_out(buf);
-                       }
-
-                       if (flags1 & (RF1_DROP_GREAT))
-                       {
-                               if (sin) spoil_out("n");
-                               spoil_out(" exceptional object");
-                       }
-                       else if (flags1 & (RF1_DROP_GOOD))
-                       {
-                               spoil_out(" good object");
-                       }
-                       else if (flags1 & (RF1_ONLY_ITEM))
-                       {
-                               spoil_out(" object");
-                       }
-                       else if (flags1 & (RF1_ONLY_GOLD))
-                       {
-                               spoil_out(" treasure");
-                       }
-                       else
-                       {
-                               spoil_out(" object");
-                               if (i > 1) spoil_out("s");
-                               spoil_out(" or treasure");
-                       }
-                       if (i > 1) spoil_out("s");
-
-                       spoil_out(".  ");
-               }
-
-               /* Count the actual attacks */
-               for (i = 0, j = 0; j < 4; j++)
-               {
-                       if (r_ptr->blow[j].method) i++;
-               }
-
-               /* Examine the actual attacks */
-               for (k = 0, j = 0; j < 4; j++)
-               {
-                       if (!r_ptr->blow[j].method) continue;
-
-                       if (r_ptr->blow[j].method == RBM_SHOOT) continue;
-
-                       /* No method yet */
-                       p = "???";
-
-                       /* Acquire the method */
-                       switch (r_ptr->blow[j].method)
-                       {
-#ifdef JP
-case RBM_HIT:          p = "²¥¤ë"; break;
-case RBM_TOUCH:                p = "¿¨¤ë"; break;
-case RBM_PUNCH:                p = "¥Ñ¥ó¥Á¤¹¤ë"; break;
-case RBM_KICK:         p = "½³¤ë"; break;
-case RBM_CLAW:         p = "¤Ò¤Ã¤«¤¯"; break;
-case RBM_BITE:         p = "³ú¤à"; break;
-case RBM_STING:                p = "»É¤¹"; break;
-case RBM_SLASH:                p = "»Â¤ë"; break;
-#else
-                               case RBM_HIT:    p = "hit"; break;
-                               case RBM_TOUCH:  p = "touch"; break;
-                               case RBM_PUNCH:  p = "punch"; break;
-                               case RBM_KICK:   p = "kick"; break;
-                               case RBM_CLAW:   p = "claw"; break;
-                               case RBM_BITE:   p = "bite"; break;
-                               case RBM_STING:  p = "sting"; break;
-                               case RBM_SLASH:  p = "slash"; break;
-#endif
-#ifdef JP
-case RBM_BUTT:         p = "³Ñ¤ÇÆͤ¯"; break;
-case RBM_CRUSH:                p = "ÂÎÅö¤¿¤ê¤¹¤ë"; break;
-case RBM_ENGULF:       p = "°û¤ß¹þ¤à"; break;
-case RBM_CHARGE:       p = "ÀÁµá½ñ¤ò¤è¤³¤¹"; break;
-case RBM_CRAWL:                p = "ÂΤξå¤òÇ礤²ó¤ë"; break;
-case RBM_DROOL:                p = "¤è¤À¤ì¤ò¤¿¤é¤¹"; break;
-case RBM_SPIT:         p = "¤Ä¤Ð¤òÅǤ¯"; break;
-case RBM_EXPLODE:      p = "Çúȯ¤¹¤ë"; break;
-case RBM_GAZE:         p = "¤Ë¤é¤à"; break;
-case RBM_WAIL:         p = "µã¤­¶«¤Ö"; break;
-case RBM_SPORE:                p = "˦»Ò¤òÈô¤Ð¤¹"; break;
-#else
-                               case RBM_BUTT:   p = "butt"; break;
-                               case RBM_CRUSH:  p = "crush"; break;
-                               case RBM_ENGULF: p = "engulf"; break;
-                               case RBM_CHARGE: p = "charge";  break;
-                               case RBM_CRAWL:  p = "crawl on you"; break;
-                               case RBM_DROOL:  p = "drool on you"; break;
-                               case RBM_SPIT:   p = "spit"; break;
-                               case RBM_EXPLODE: p = "explode";  break;
-                               case RBM_GAZE:   p = "gaze"; break;
-                               case RBM_WAIL:   p = "wail"; break;
-                               case RBM_SPORE:  p = "release spores"; break;
-#endif
-
-                               case RBM_XXX4:   break;
-#ifdef JP
-case RBM_BEG:          p = "¶â¤ò¤»¤¬¤à"; break;
-case RBM_INSULT:       p = "Éî¿«¤¹¤ë"; break;
-case RBM_MOAN:         p = "¤¦¤á¤¯"; break;
-case RBM_SHOW:         p = "²Î¤¦"; break;
-#else
-                               case RBM_BEG:    p = "beg"; break;
-                               case RBM_INSULT: p = "insult"; break;
-                               case RBM_MOAN:   p = "moan"; break;
-                               case RBM_SHOW:   p = "sing"; break;
-#endif
-
-                       }
-
-
-                       /* Default effect */
-                       q = "???";
-
-                       /* Acquire the effect */
-                       switch (r_ptr->blow[j].effect)
-                       {
-#ifdef JP
-case RBE_SUPERHURT:
-case RBE_HURT:         q = "¹¶·â¤¹¤ë"; break;
-case RBE_POISON:       q = "ÆǤò¤¯¤é¤ï¤¹"; break;
-case RBE_UN_BONUS:     q = "Îô²½¤µ¤»¤ë"; break;
-case RBE_UN_POWER:     q = "ËâÎϤòµÛ¤¤¼è¤ë"; break;
-case RBE_EAT_GOLD:     q = "¶â¤òÅð¤à"; break;
-case RBE_EAT_ITEM:     q = "¥¢¥¤¥Æ¥à¤òÅð¤à"; break;
-case RBE_EAT_FOOD:     q = "¤¢¤Ê¤¿¤Î¿©ÎÁ¤ò¿©¤Ù¤ë"; break;
-case RBE_EAT_LITE:     q = "ÌÀ¤«¤ê¤òµÛ¼ý¤¹¤ë"; break;
-case RBE_ACID:         q = "»À¤òÈô¤Ð¤¹"; break;
-case RBE_ELEC:         q = "´¶ÅŤµ¤»¤ë"; break;
-#else
-                               case RBE_SUPERHURT:
-                               case RBE_HURT:          q = "attack"; break;
-                               case RBE_POISON:        q = "poison"; break;
-                               case RBE_UN_BONUS:      q = "disenchant"; break;
-                               case RBE_UN_POWER:      q = "drain charges"; break;
-                               case RBE_EAT_GOLD:      q = "steal gold"; break;
-                               case RBE_EAT_ITEM:      q = "steal items"; break;
-                               case RBE_EAT_FOOD:      q = "eat your food"; break;
-                               case RBE_EAT_LITE:      q = "absorb light"; break;
-                               case RBE_ACID:          q = "shoot acid"; break;
-                               case RBE_ELEC:          q = "electrocute"; break;
-#endif
-
-#ifdef JP
-case RBE_FIRE:         q = "dz¤ä¤¹"; break;
-case RBE_COLD:         q = "Åà¤é¤»¤ë"; break;
-case RBE_BLIND:        q = "ÌÕÌܤˤ¹¤ë"; break;
-case RBE_CONFUSE:      q = "º®Í𤵤»¤ë"; break;
-case RBE_TERRIFY:      q = "¶²Éݤµ¤»¤ë"; break;
-case RBE_PARALYZE:     q = "Ëãá㤵¤»¤ë"; break;
-case RBE_LOSE_STR:     q = "ÏÓÎϤò¸º¾¯¤µ¤»¤ë"; break;
-case RBE_LOSE_INT:     q = "ÃÎǽ¤ò¸º¾¯¤µ¤»¤ë"; break;
-case RBE_LOSE_WIS:     q = "¸­¤µ¤ò¸º¾¯¤µ¤»¤ë"; break;
-case RBE_LOSE_DEX:     q = "´ïÍѤµ¤ò¸º¾¯¤µ¤»¤ë"; break;
-case RBE_LOSE_CON:     q = "Âѵ×ÎϤò¸º¾¯¤µ¤»¤ë"; break;
-case RBE_LOSE_CHR:     q = "Ì¥ÎϤò¸º¾¯¤µ¤»¤ë"; break;
-case RBE_LOSE_ALL:     q = "Á´¥¹¥Æ¡¼¥¿¥¹¤ò¸º¾¯¤µ¤»¤ë"; break;
-case RBE_SHATTER:      q = "Ê´ºÕ¤¹¤ë"; break;
-case RBE_EXP_10:       q = "·Ð¸³Ãͤò¸º¾¯(10d6+)¤µ¤»¤ë"; break;
-case RBE_EXP_20:       q = "·Ð¸³Ãͤò¸º¾¯(20d6+)¤µ¤»¤ë"; break;
-case RBE_EXP_40:       q = "·Ð¸³Ãͤò¸º¾¯(40d6+)¤µ¤»¤ë"; break;
-case RBE_EXP_80:       q = "·Ð¸³Ãͤò¸º¾¯(80d6+)¤µ¤»¤ë"; break;
-case RBE_DISEASE:      q = "ɵ¤¤Ë¤¹¤ë"; break;
-case RBE_TIME:         q = "»þ´ÖµÕž"; break;
-case RBE_EXP_VAMP:     q = "À¸Ì¿ÎϤòµÛ¼ý¤¹¤ë"; break;
-case RBE_DR_MANA:      q = "ËâÎϤòÃ¥¤¦"; break;
-#else
-                               case RBE_FIRE:          q = "burn"; break;
-                               case RBE_COLD:          q = "freeze"; break;
-                               case RBE_BLIND:         q = "blind"; break;
-                               case RBE_CONFUSE:       q = "confuse"; break;
-                               case RBE_TERRIFY:       q = "terrify"; break;
-                               case RBE_PARALYZE:      q = "paralyze"; break;
-                               case RBE_LOSE_STR:      q = "reduce strength"; break;
-                               case RBE_LOSE_INT:      q = "reduce intelligence"; break;
-                               case RBE_LOSE_WIS:      q = "reduce wisdom"; break;
-                               case RBE_LOSE_DEX:      q = "reduce dexterity"; break;
-                               case RBE_LOSE_CON:      q = "reduce constitution"; break;
-                               case RBE_LOSE_CHR:      q = "reduce charisma"; break;
-                               case RBE_LOSE_ALL:      q = "reduce all stats"; break;
-                               case RBE_SHATTER:       q = "shatter"; break;
-                               case RBE_EXP_10:        q = "lower experience (by 10d6+)"; break;
-                               case RBE_EXP_20:        q = "lower experience (by 20d6+)"; break;
-                               case RBE_EXP_40:        q = "lower experience (by 40d6+)"; break;
-                               case RBE_EXP_80:        q = "lower experience (by 80d6+)"; break;
-                               case RBE_DISEASE:       q = "disease"; break;
-                               case RBE_TIME:          q = "time"; break;
-                               case RBE_EXP_VAMP:      q = "drain life force"; break;
-                               case RBE_DR_MANA:       q = "drain mana force"; break;
-#endif
-                       }
-
-
-                       if (!k)
-                       {
-                               spoil_out(wd_che[msex]);
-                               spoil_out(" can ");
-                       }
-                       else if (k < i-1)
-                       {
-                               spoil_out(", ");
-                       }
-                       else
-                       {
-                               spoil_out(", and ");
-                       }
-
-                       /* Describe the method */
-                       spoil_out(p);
-
-                       /* Describe the effect, if any */
-                       if (r_ptr->blow[j].effect)
-                       {
-                               spoil_out(" to ");
-                               spoil_out(q);
-                               if (r_ptr->blow[j].d_dice && r_ptr->blow[j].d_side)
-                               {
-                                       spoil_out(" with damage");
-                                       if (r_ptr->blow[j].d_side == 1)
-                                               sprintf(buf, " %d", r_ptr->blow[j].d_dice);
-                                       else
-                                               sprintf(buf, " %dd%d",
-                                               r_ptr->blow[j].d_dice, r_ptr->blow[j].d_side);
-                                       spoil_out(buf);
-                               }
-                       }
-
-                       k++;
-               }
-
-               if (k)
-               {
-                       spoil_out(".  ");
-               }
-               else if (flags1 & (RF1_NEVER_BLOW))
-               {
-                       sprintf(buf, "%s has no physical attacks.  ", wd_che[msex]);
-                       spoil_out(buf);
-               }
+               /* Reuse the code of monster recall. */
+               output_monster_spoiler(who[l], roff_func);
 
                spoil_out(NULL);
        }
@@ -3157,9 +2101,6 @@ case RBE_DR_MANA: q = "
 
 
 
-
-
-
 /*
  * Forward declare
  */