OSDN Git Service

メッセージ履歴での検索文字列と強調文字列を別々に保存し, 検索や強調を
[hengband/hengband.git] / src / cmd4.c
index 7ad1b13..7ba6e8a 100644 (file)
@@ -461,9 +461,11 @@ errr do_cmd_write_nikki(int type, int num, cptr note)
                case NIKKI_HIGAWARI:
                {
 #ifdef JP
-                       fprintf(fff, "%dÆüÌÜ\n",day);
+                       if (day < MAX_DAYS) fprintf(fff, "%dÆüÌÜ\n", day);
+                       else fputs("*****ÆüÌÜ\n", fff);
 #else
-                       fprintf(fff, "Day %d\n",day);
+                       if (day < MAX_DAYS) fprintf(fff, "Day %d\n", day);
+                       else fputs("Day *****\n", fff);
 #endif
                        do_level = FALSE;
                        break;
@@ -749,62 +751,111 @@ errr do_cmd_write_nikki(int type, int num, cptr note)
                        fprintf(fff, " %2d:%02d %20s ", hour, min, note_level);
                        switch (num)
                        {
-                               case 0:
+                               case RECORD_NAMED_PET_NAME:
 #ifdef JP
                                        fprintf(fff, "%s¤òι¤Îͧ¤Ë¤¹¤ë¤³¤È¤Ë·è¤á¤¿¡£\n", note);
 #else
                                        fprintf(fff, "decided to travel together with %s.\n", note);
 #endif
                                        break;
-                               case 1:
+                               case RECORD_NAMED_PET_UNNAME:
 #ifdef JP
                                        fprintf(fff, "%s¤Î̾Á°¤ò¾Ã¤·¤¿¡£\n", note);
 #else
                                        fprintf(fff, "unnamed %s.\n", note);
 #endif
                                        break;
-                               case 2:
+                               case RECORD_NAMED_PET_DISMISS:
 #ifdef JP
                                        fprintf(fff, "%s¤ò²òÊü¤·¤¿¡£\n", note);
 #else
                                        fprintf(fff, "dismissed %s.\n", note);
 #endif
                                        break;
-                               case 3:
+                               case RECORD_NAMED_PET_DEATH:
 #ifdef JP
                                        fprintf(fff, "%s¤¬»à¤ó¤Ç¤·¤Þ¤Ã¤¿¡£\n", note);
 #else
                                        fprintf(fff, "%s died.\n", note);
 #endif
                                        break;
-                               case 4:
+                               case RECORD_NAMED_PET_MOVED:
 #ifdef JP
                                        fprintf(fff, "%s¤ò¤ª¤¤¤ÆÊ̤ΥޥåפذÜÆ°¤·¤¿¡£\n", note);
 #else
                                        fprintf(fff, "moved to another map leaving %s behind.\n", note);
 #endif
                                        break;
-                               case 5:
+                               case RECORD_NAMED_PET_LOST_SIGHT:
 #ifdef JP
                                        fprintf(fff, "%s¤È¤Ï¤°¤ì¤Æ¤·¤Þ¤Ã¤¿¡£\n", note);
 #else
                                        fprintf(fff, "lost sight of %s.\n", note);
 #endif
                                        break;
-                               case 6:
+                               case RECORD_NAMED_PET_DESTROY:
 #ifdef JP
                                        fprintf(fff, "%s¤¬*Ç˲õ*¤Ë¤è¤Ã¤Æ¾Ã¤¨µî¤Ã¤¿¡£\n", note);
 #else
                                        fprintf(fff, "%s was made disappeared by *destruction*.\n", note);
 #endif
                                        break;
-                               case 7:
+                               case RECORD_NAMED_PET_EARTHQUAKE:
 #ifdef JP
                                        fprintf(fff, "%s¤¬´äÀФ˲¡¤·ÄÙ¤µ¤ì¤¿¡£\n", note);
 #else
                                        fprintf(fff, "%s was crushed by falling rocks.\n", note);
 #endif
                                        break;
+                               case RECORD_NAMED_PET_GENOCIDE:
+#ifdef JP
+                                       fprintf(fff, "%s¤¬Ëõ»¦¤Ë¤è¤Ã¤Æ¾Ã¤¨µî¤Ã¤¿¡£\n", note);
+#else
+                                       fprintf(fff, "%s was made disappeared by genocide.\n", note);
+#endif
+                                       break;
+                               case RECORD_NAMED_PET_WIZ_ZAP:
+#ifdef JP
+                                       fprintf(fff, "%s¤¬¥Ç¥Ð¥Ã¥°¥³¥Þ¥ó¥É¤Ë¤è¤Ã¤Æ¾Ã¤¨µî¤Ã¤¿¡£\n", note);
+#else
+                                       fprintf(fff, "%s was removed by debug command.\n", note);
+#endif
+                                       break;
+                               case RECORD_NAMED_PET_TELE_LEVEL:
+#ifdef JP
+                                       fprintf(fff, "%s¤¬¥Æ¥ì¥Ý¡¼¥È¡¦¥ì¥Ù¥ë¤Ë¤è¤Ã¤Æ¾Ã¤¨µî¤Ã¤¿¡£\n", note);
+#else
+                                       fprintf(fff, "%s was made disappeared by teleport level.\n", note);
+#endif
+                                       break;
+                               case RECORD_NAMED_PET_BLAST:
+#ifdef JP
+                                       fprintf(fff, "%s¤òÇúÇˤ·¤¿¡£\n", note);
+#else
+                                       fprintf(fff, "blasted %s.\n", note);
+#endif
+                                       break;
+                               case RECORD_NAMED_PET_HEAL_LEPER:
+#ifdef JP
+                                       fprintf(fff, "%s¤Îɵ¤¤¬¼£¤ê餫¤é³°¤ì¤¿¡£\n", note);
+#else
+                                       fprintf(fff, "%s was healed and left.\n", note);
+#endif
+                                       break;
+                               case RECORD_NAMED_PET_COMPACT:
+#ifdef JP
+                                       fprintf(fff, "%s¤¬¥â¥ó¥¹¥¿¡¼¾ðÊ󰵽̤ˤè¤Ã¤Æ¾Ã¤¨µî¤Ã¤¿¡£\n", note);
+#else
+                                       fprintf(fff, "%s was made disappeared by compacting monsters.\n", note);
+#endif
+                                       break;
+                               case RECORD_NAMED_PET_LOSE_PARENT:
+#ifdef JP
+                                       fprintf(fff, "%s¤Î¾¤´­¼Ô¤¬´û¤Ë¤¤¤Ê¤¤¤¿¤á¾Ã¤¨µî¤Ã¤¿¡£\n", note);
+#else
+                                       fprintf(fff, "%s disappeared because there does not exist summoner.\n", note);
+#endif
+                                       break;
                                default:
                                        fprintf(fff, "\n");
                                        break;
@@ -1293,8 +1344,10 @@ void do_cmd_messages(int num_now)
 {
        int i, n;
 
-       char shower[80];
-       char finder[80];
+       char shower_str[81];
+       char finder_str[81];
+       char back_str[81];
+       cptr shower = NULL;
        int wid, hgt;
        int num_lines;
 
@@ -1305,11 +1358,10 @@ void do_cmd_messages(int num_now)
        num_lines = hgt - 4;
 
        /* Wipe finder */
-       strcpy(finder, "");
+       strcpy(finder_str, "");
 
        /* Wipe shower */
-       strcpy(shower, "");
-
+       strcpy(shower_str, "");
 
        /* Total messages */
        n = message_num();
@@ -1335,10 +1387,10 @@ void do_cmd_messages(int num_now)
                        cptr msg = message_str(i+j);
 
                        /* Dump the messages, bottom to top */
-                       c_prt((i+j < num_now ? TERM_WHITE : TERM_SLATE), msg, num_lines + 1 - j, 0);
+                       c_prt((i + j < num_now ? TERM_WHITE : TERM_SLATE), msg, num_lines + 1 - j, 0);
 
                        /* Hilite "shower" */
-                       if (shower[0])
+                       if (shower && shower[0])
                        {
                                cptr str = msg;
 
@@ -1366,13 +1418,12 @@ void do_cmd_messages(int num_now)
 #ifdef JP
                /* translation */
                prt(format("°ÊÁ°¤Î¥á¥Ã¥»¡¼¥¸ %d-%d Á´Éô¤Ç(%d)",
-                          i, i+j-1, n), 0, 0);
+                          i, i + j - 1, n), 0, 0);
 #else
                prt(format("Message Recall (%d-%d of %d)",
-                          i, i+j-1, n), 0, 0);
+                          i, i + j - 1, n), 0, 0);
 #endif
 
-
                /* Display prompt (not very informative) */
 #ifdef JP
                prt("[ 'p' ¤Ç¹¹¤Ë¸Å¤¤¤â¤Î, 'n' ¤Ç¹¹¤Ë¿·¤·¤¤¤â¤Î, '/' ¤Ç¸¡º÷, ESC ¤ÇÃæÃÇ ]", hgt - 1, 0);
@@ -1380,7 +1431,6 @@ void do_cmd_messages(int num_now)
                prt("[Press 'p' for older, 'n' for newer, ..., or ESCAPE]", hgt - 1, 0);
 #endif
 
-
                /* Get a command */
                skey = inkey_special(TRUE);
 
@@ -1390,9 +1440,10 @@ void do_cmd_messages(int num_now)
                /* Hack -- Save the old index */
                j = i;
 
-               /* Hack -- handle show */
-               if (skey == '=')
+               switch (skey)
                {
+               /* Hack -- handle show */
+               case '=':
                        /* Prompt */
 #ifdef JP
                        prt("¶¯Ä´: ", hgt - 1, 0);
@@ -1400,104 +1451,121 @@ void do_cmd_messages(int num_now)
                        prt("Show: ", hgt - 1, 0);
 #endif
 
-
                        /* Get a "shower" string, or continue */
-                       if (!askfor(shower, 80)) continue;
+                       strcpy(back_str, shower_str);
+                       if (askfor(shower_str, 80))
+                       {
+                               /* Show it */
+                               shower = shower_str[0] ? shower_str : NULL;
+                       }
+                       else strcpy(shower_str, back_str);
 
                        /* Okay */
                        continue;
-               }
 
                /* Hack -- handle find */
-               if (skey == '/' || skey == KTRL('s'))
-               {
-                       int z;
+               case '/':
+               case KTRL('s'):
+                       {
+                               int z;
 
-                       /* Prompt */
+                               /* Prompt */
 #ifdef JP
-                       prt("¸¡º÷: ", hgt - 1, 0);
+                               prt("¸¡º÷: ", hgt - 1, 0);
 #else
-                       prt("Find: ", hgt - 1, 0);
+                               prt("Find: ", hgt - 1, 0);
 #endif
 
+                               /* Get a "finder" string, or continue */
+                               strcpy(back_str, finder_str);
+                               if (!askfor(finder_str, 80))
+                               {
+                                       strcpy(finder_str, back_str);
+                                       continue;
+                               }
+                               else if (!finder_str[0])
+                               {
+                                       shower = NULL; /* Stop showing */
+                                       continue;
+                               }
 
-                       /* Get a "finder" string, or continue */
-                       if (!askfor(finder, 80)) continue;
-
-                       /* Show it */
-                       strcpy(shower, finder);
-
-                       /* Scan messages */
-                       for (z = i + 1; z < n; z++)
-                       {
-                               cptr msg = message_str(z);
+                               /* Show it */
+                               shower = finder_str;
 
-                               /* Search for it */
-                               if (my_strstr(msg, finder))
+                               /* Scan messages */
+                               for (z = i + 1; z < n; z++)
                                {
-                                       /* New location */
-                                       i = z;
+                                       cptr msg = message_str(z);
 
-                                       /* Done */
-                                       break;
+                                       /* Search for it */
+                                       if (my_strstr(msg, finder_str))
+                                       {
+                                               /* New location */
+                                               i = z;
+
+                                               /* Done */
+                                               break;
+                                       }
                                }
                        }
-               }
+                       break;
 
                /* Recall 1 older message */
-               if (skey == SKEY_TOP)
-               {
+               case SKEY_TOP:
                        /* Go to the oldest line */
                        i = n - num_lines;
-               }
+                       break;
 
                /* Recall 1 newer message */
-               if (skey == SKEY_BOTTOM)
-               {
+               case SKEY_BOTTOM:
                        /* Go to the newest line */
                        i = 0;
-               }
+                       break;
 
                /* Recall 1 older message */
-               if (skey == '8' || skey == SKEY_UP || skey == '\n' || skey == '\r')
-               {
+               case '8':
+               case SKEY_UP:
+               case '\n':
+               case '\r':
                        /* Go older if legal */
                        i = MIN(i + 1, n - num_lines);
-               }
+                       break;
 
                /* Recall 10 older messages */
-               if (skey == '+')
-               {
+               case '+':
                        /* Go older if legal */
                        i = MIN(i + 10, n - num_lines);
-               }
+                       break;
 
                /* Recall 20 older messages */
-               if (skey == 'p' || skey == KTRL('P') || skey == ' ' || skey == SKEY_PGUP)
-               {
+               case 'p':
+               case KTRL('P'):
+               case ' ':
+               case SKEY_PGUP:
                        /* Go older if legal */
                        i = MIN(i + num_lines, n - num_lines);
-               }
+                       break;
 
                /* Recall 20 newer messages */
-               if (skey == 'n' || skey == KTRL('N') || skey == SKEY_PGDOWN)
-               {
+               case 'n':
+               case KTRL('N'):
+               case SKEY_PGDOWN:
                        /* Go newer (if able) */
                        i = MAX(0, i - num_lines);
-               }
+                       break;
 
                /* Recall 10 newer messages */
-               if (skey == '-')
-               {
+               case '-':
                        /* Go newer (if able) */
                        i = MAX(0, i - 10);
-               }
+                       break;
 
                /* Recall 1 newer messages */
-               if (skey == '2' || skey == SKEY_DOWN)
-               {
+               case '2':
+               case SKEY_DOWN:
                        /* Go newer (if able) */
                        i = MAX(0, i - 1);
+                       break;
                }
 
                /* Hack -- Error of some kind */
@@ -3008,7 +3076,7 @@ void do_cmd_macros(void)
 
                /* Describe that action */
 #ifdef JP
-               prt("(1) ¥æ¡¼¥¶¡¼ÀßÄê¥Õ¥¡¥¤¥ë¤Î¥í¡¼¥É", 4, 5);
+               prt("¥Þ¥¯¥í¹ÔÆ°¤¬(¤â¤·¤¢¤ì¤Ð)²¼¤Ëɽ¼¨¤µ¤ì¤Þ¤¹:", 20, 0);
 #else
                prt("Current action (if any) shown below:", 20, 0);
 #endif
@@ -3089,7 +3157,7 @@ void do_cmd_macros(void)
 
 
                        /* Default filename */
-                       sprintf(tmp, "%s.prf", player_name);
+                       sprintf(tmp, "%s.prf", player_base);
 
                        /* Ask for a file */
                        if (!askfor(tmp, 80)) continue;
@@ -3145,7 +3213,7 @@ void do_cmd_macros(void)
 
 
                        /* Default filename */
-                       sprintf(tmp, "%s.prf", player_name);
+                       sprintf(tmp, "%s.prf", player_base);
 
                        /* Ask for a file */
                        if (!askfor(tmp, 80)) continue;
@@ -3339,7 +3407,7 @@ void do_cmd_macros(void)
 
 
                        /* Default filename */
-                       sprintf(tmp, "%s.prf", player_name);
+                       sprintf(tmp, "%s.prf", player_base);
 
                        /* Ask for a file */
                        if (!askfor(tmp, 80)) continue;
@@ -3615,7 +3683,7 @@ static bool cmd_visuals_aux(int i, int *num, int max)
 static void print_visuals_menu(cptr choice_msg)
 {
 #ifdef JP
-       prt("²èÌÌɽ¼¨¤ÎÀßÄê", 1, 0);
+       prt("[ ²èÌÌɽ¼¨¤ÎÀßÄê ]", 1, 0);
 #else
        prt("Interact with Visuals", 1, 0);
 #endif
@@ -3723,7 +3791,7 @@ void do_cmd_visuals(void)
 #endif
 
                        /* Default filename */
-                       sprintf(tmp, "%s.prf", player_name);
+                       sprintf(tmp, "%s.prf", player_base);
 
                        /* Query */
                        if (!askfor(tmp, 70)) continue;
@@ -3756,7 +3824,7 @@ void do_cmd_visuals(void)
 #endif
 
                        /* Default filename */
-                       sprintf(tmp, "%s.prf", player_name);
+                       sprintf(tmp, "%s.prf", player_base);
 
                        /* Get a filename */
                        if (!askfor(tmp, 70)) continue;
@@ -3775,7 +3843,7 @@ void do_cmd_visuals(void)
 #endif
 
                        /* Dump monsters */
-                       for (i = 1; i < max_r_idx; i++)
+                       for (i = 0; i < max_r_idx; i++)
                        {
                                monster_race *r_ptr = &r_info[i];
 
@@ -3823,7 +3891,7 @@ void do_cmd_visuals(void)
 #endif
 
                        /* Default filename */
-                       sprintf(tmp, "%s.prf", player_name);
+                       sprintf(tmp, "%s.prf", player_base);
 
                        /* Get a filename */
                        if (!askfor(tmp, 70)) continue;
@@ -3842,7 +3910,7 @@ void do_cmd_visuals(void)
 #endif
 
                        /* Dump objects */
-                       for (i = 1; i < max_k_idx; i++)
+                       for (i = 0; i < max_k_idx; i++)
                        {
                                char o_name[80];
                                object_kind *k_ptr = &k_info[i];
@@ -3907,7 +3975,7 @@ void do_cmd_visuals(void)
 #endif
 
                        /* Default filename */
-                       sprintf(tmp, "%s.prf", player_name);
+                       sprintf(tmp, "%s.prf", player_base);
 
                        /* Get a filename */
                        if (!askfor(tmp, 70)) continue;
@@ -3926,7 +3994,7 @@ void do_cmd_visuals(void)
 #endif
 
                        /* Dump features */
-                       for (i = 1; i < max_f_idx; i++)
+                       for (i = 0; i < max_f_idx; i++)
                        {
                                feature_type *f_ptr = &f_info[i];
 
@@ -4114,11 +4182,11 @@ void do_cmd_visuals(void)
 #ifdef JP
                                Term_putstr(5, 17, -1, TERM_WHITE,
                                            format("¥¢¥¤¥Æ¥à = %d, Ì¾Á° = %-40.40s",
-                                                  k, (k_name + k_ptr->name)));
+                                                  k, k_name + (!k_ptr->flavor ? k_ptr->name : k_ptr->flavor_name)));
 #else
                                Term_putstr(5, 17, -1, TERM_WHITE,
                                            format("Object = %d, Name = %-40.40s",
-                                                  k, (k_name + k_ptr->name)));
+                                                  k, k_name + (!k_ptr->flavor ? k_ptr->name : k_ptr->flavor_name)));
 #endif
 
                                /* Label the Default values */
@@ -4177,7 +4245,7 @@ void do_cmd_visuals(void)
                                                                break;
                                                        }
                                                }
-                                               while (!k_info[k].name || k_info[k].flavor);
+                                               while (!k_info[k].name);
                                        }
                                        break;
                                case 'a':
@@ -4477,7 +4545,7 @@ void do_cmd_colors(void)
 
 
                        /* Default file */
-                       sprintf(tmp, "%s.prf", player_name);
+                       sprintf(tmp, "%s.prf", player_base);
 
                        /* Query */
                        if (!askfor(tmp, 70)) continue;
@@ -4516,7 +4584,7 @@ void do_cmd_colors(void)
 
 
                        /* Default filename */
-                       sprintf(tmp, "%s.prf", player_name);
+                       sprintf(tmp, "%s.prf", player_base);
 
                        /* Get a filename */
                        if (!askfor(tmp, 70)) continue;
@@ -5302,6 +5370,7 @@ static cptr object_group_text[] =
        "¥´¥ß",
        "¶õ¤Î¥Ó¥ó",
        "¹ü",
+       "»àÂÎ",
        "Åá·õÎà",       /* "Swords" */
        "Æß´ï",         /* "Blunt Weapons" */
        "ĹÊÁÉð´ï",     /* "Polearms" */
@@ -5320,6 +5389,7 @@ static cptr object_group_text[] =
        "´§",   /* "Crowns" */
        "¥Ö¡¼¥Ä",       /* "Boots" */
        "ËâË¡½ñ",
+       "ºâÊõ",
        "²¿¤«",
 #else
        "Mushrooms",
@@ -5343,6 +5413,7 @@ static cptr object_group_text[] =
        "Junks",
        "Bottles",
        "Skeletons",
+       "Corpses",
        "Swords",
        "Blunt Weapons",
        "Polearms",
@@ -5361,6 +5432,7 @@ static cptr object_group_text[] =
        "Crowns",
        "Boots",
        "Spellbooks",
+       "Treasure",
        "Something",
 #endif
        NULL
@@ -5393,6 +5465,7 @@ static byte object_group_tval[] =
        TV_JUNK,
        TV_BOTTLE,
        TV_SKELETON,
+       TV_CORPSE,
        TV_SWORD,
        TV_HAFTED,
        TV_POLEARM,
@@ -5411,6 +5484,7 @@ static byte object_group_tval[] =
        TV_CROWN,
        TV_BOOTS,
        TV_LIFE_BOOK, /* Hack -- all spellbooks */
+       TV_GOLD,
        0,
        0,
 };
@@ -6672,15 +6746,22 @@ static void do_cmd_knowledge_uniques(void)
 
        if (n_alive_total)
        {
-               fprintf(fff, "---------  -----------\n", n_alive_total);
 #ifdef JP
-               fprintf(fff, "     ¹ç·×  À¸Â¸: %3dÂÎ\n", n_alive_total);
+               fputs("---------  -----------\n", fff);
+               fprintf(fff, "     ¹ç·×  À¸Â¸: %3dÂÎ\n\n", n_alive_total);
 #else
-               fprintf(fff, "        Total  alive: %3d\n", n_alive_total);
+               fputs("-------------  ----------\n", fff);
+               fprintf(fff, "        Total  alive: %3d\n\n", n_alive_total);
+#endif
+       }
+       else
+       {
+#ifdef JP
+               fputs("¸½ºß¤Ï´ûÃΤÎÀ¸Â¸¥æ¥Ë¡¼¥¯¤Ï¤¤¤Þ¤»¤ó¡£\n", fff);
+#else
+               fputs("No known uniques alive.\n", fff);
 #endif
-               fputc('\n', fff);
        }
-       else fputs("¸½ºß¤Ï´ûÃΤÎÀ¸Â¸¥æ¥Ë¡¼¥¯¤Ï¤¤¤Þ¤»¤ó¡£\n", fff);
 
        /* Scan the monster races */
        for (k = 0; k < n; k++)
@@ -7605,7 +7686,7 @@ static bool visual_mode_command(char ch, bool *visual_list_ptr,
 
        case 'P':
        case 'p':
-               if (attr_idx || (!(char_idx & 0x80) && char_idx)) /* Allow ATTR_DARK text */
+               if (attr_idx || (!(char_idx & 0x80) && char_idx)) /* Allow TERM_DARK text */
                {
                        /* Set the char */
                        *cur_attr_ptr = attr_idx;
@@ -7830,8 +7911,8 @@ static void do_cmd_knowledge_monsters(bool *need_redraw, bool visual_only, int d
                        if (direct_r_idx < 0) prt("Group", 4, 0);
                        prt("Name", 4, max + 3);
                        if (p_ptr->wizard || visual_only) prt("Idx", 4, 62);
-                       prt("Sym  ", 4, 67);
-                       if (!visual_only) prt(" Kills", 4, 72);
+                       prt("Sym", 4, 68);
+                       if (!visual_only) prt("Kills", 4, 73);
 #endif
 
                        for (i = 0; i < 78; i++)
@@ -8013,7 +8094,7 @@ static void display_object_list(int col, int row, int per_page, int object_idx[]
                byte cursor = ((k_ptr->aware || visual_only) ? TERM_L_BLUE : TERM_BLUE);
 
 
-               if (k_ptr->flavor)
+               if (!visual_only && k_ptr->flavor)
                {
                        /* Appearance of this object is shuffled */
                        flavor_k_ptr = &k_info[k_ptr->flavor];
@@ -8028,7 +8109,7 @@ static void display_object_list(int col, int row, int per_page, int object_idx[]
 
                attr = ((i + object_top == object_cur) ? cursor : attr);
 
-               if (!k_ptr->flavor || k_ptr->aware)
+               if (!k_ptr->flavor || (!visual_only && k_ptr->aware))
                {
                        /* Tidy name */
                        strip_name(o_name, k_idx);
@@ -8095,7 +8176,7 @@ static void desc_obj_fake(int k_idx)
        /* Hack -- Handle stuff */
        handle_stuff();
 
-       if (!screen_object(o_ptr, FALSE))
+       if (!screen_object(o_ptr, SCROBJ_FAKE_OBJECT | SCROBJ_FORCE_DETAIL))
        {
 #ifdef JP
                msg_print("ÆäËÊѤï¤Ã¤¿¤È¤³¤í¤Ï¤Ê¤¤¤è¤¦¤À¡£");
@@ -8172,7 +8253,7 @@ static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, int di
                object_kind *k_ptr = &k_info[direct_k_idx];
                object_kind *flavor_k_ptr;
 
-               if (k_ptr->flavor)
+               if (!visual_only && k_ptr->flavor)
                {
                        /* Appearance of this object is shuffled */
                        flavor_k_ptr = &k_info[k_ptr->flavor];
@@ -8288,7 +8369,7 @@ static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, int di
                /* Get the current object */
                k_ptr = &k_info[object_idx[object_cur]];
 
-               if (k_ptr->flavor)
+               if (!visual_only && k_ptr->flavor)
                {
                        /* Appearance of this object is shuffled */
                        flavor_k_ptr = &k_info[k_ptr->flavor];
@@ -8778,7 +8859,7 @@ static void do_cmd_knowledge_features(bool *need_redraw, bool visual_only, int d
                        case 'p':
                                if (!visual_list)
                                {
-                                       /* Allow ATTR_DARK text */
+                                       /* Allow TERM_DARK text */
                                        for (i = F_LIT_NS_BEGIN; i < F_LIT_MAX; i++)
                                        {
                                                if (attr_idx_feat[i] || (!(char_idx_feat[i] & 0x80) && char_idx_feat[i])) f_ptr->x_attr[i] = attr_idx_feat[i];
@@ -9957,6 +10038,7 @@ void do_cmd_time(void)
        char desc[1024];
 
        char buf[1024];
+       char day_buf[10];
 
        FILE *fff;
 
@@ -9976,14 +10058,17 @@ void do_cmd_time(void)
 #endif
 
 
+       if (day < MAX_DAYS) sprintf(day_buf, "%d", day);
+       else strcpy(day_buf, "*****");
+
        /* Message */
 #ifdef JP
-       msg_format("%d ÆüÌÜ,»þ¹ï¤Ï%d:%02d %s¤Ç¤¹¡£",
-                  day, (hour % 12 == 0) ? 12 : (hour % 12),
+       msg_format("%sÆüÌÜ, »þ¹ï¤Ï%d:%02d %s¤Ç¤¹¡£",
+                  day_buf, (hour % 12 == 0) ? 12 : (hour % 12),
                   min, (hour < 12) ? "AM" : "PM");
 #else
-       msg_format("This is day %d. The time is %d:%02d %s.",
-                  day, (hour % 12 == 0) ? 12 : (hour % 12),
+       msg_format("This is day %s. The time is %d:%02d %s.",
+                  day_buf, (hour % 12 == 0) ? 12 : (hour % 12),
                   min, (hour < 12) ? "AM" : "PM");
 #endif