OSDN Git Service

ス、ケヤチホ、ホケス、ィチェツニ、モスミ、キ, キムイネ、ホキソチェツニ、モスミ、キ、ホコル、ォ、、ス、タオ.
[hengband/hengband.git] / src / cmd4.c
index dd93477..cff0ef0 100644 (file)
@@ -3008,7 +3008,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
@@ -6562,6 +6562,7 @@ static void do_cmd_knowledge_artifacts(void)
 
 /*
  * Display known uniques
+ * With "XTRA HACK UNIQHIST" (Originally from XAngband)
  */
 static void do_cmd_knowledge_uniques(void)
 {
@@ -6573,10 +6574,19 @@ static void do_cmd_knowledge_uniques(void)
 
        char file_name[1024];
 
+       int n_alive[10];
+       int n_alive_surface = 0;
+       int n_alive_over100 = 0;
+       int n_alive_total = 0;
+       int max_lev = -1;
+
+       for (i = 0; i < 10; i++) n_alive[i] = 0;
+
        /* Open a new file */
        fff = my_fopen_temp(file_name, 1024);
 
-       if (!fff) {
+       if (!fff)
+       {
 #ifdef JP
            msg_format("°ì»þ¥Õ¥¡¥¤¥ë %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£", file_name);
 #else
@@ -6593,9 +6603,36 @@ static void do_cmd_knowledge_uniques(void)
        for (i = 1; i < max_r_idx; i++)
        {
                monster_race *r_ptr = &r_info[i];
+               int          lev;
 
-               /* Use that monster */
-               if (r_ptr->name) who[n++] = i;
+               if (!r_ptr->name) continue;
+
+               /* Require unique monsters */
+               if (!(r_ptr->flags1 & RF1_UNIQUE)) continue;
+
+               /* Only display "known" uniques */
+               if (!cheat_know && !r_ptr->r_sights) continue;
+
+               /* Only print rarity <= 100 uniques */
+               if (!r_ptr->rarity || ((r_ptr->rarity > 100) && !(r_ptr->flags1 & RF1_QUESTOR))) continue;
+
+               /* Only "alive" uniques */
+               if (r_ptr->max_num == 0) continue;
+
+               if (r_ptr->level)
+               {
+                       lev = (r_ptr->level - 1) / 10;
+                       if (lev < 10)
+                       {
+                               n_alive[lev]++;
+                               if (max_lev < lev) max_lev = lev;
+                       }
+                       else n_alive_over100++;
+               }
+               else n_alive_surface++;
+
+               /* Collect "appropriate" monsters */
+               who[n++] = i;
        }
 
        /* Select the sort method */
@@ -6605,31 +6642,64 @@ static void do_cmd_knowledge_uniques(void)
        /* Sort the array by dungeon depth of monsters */
        ang_sort(who, &why, n);
 
+       if (n_alive_surface)
+       {
+#ifdef JP
+               fprintf(fff, "     ÃϾ堠À¸Â¸: %3dÂÎ\n", n_alive_surface);
+#else
+               fprintf(fff, "      Surface  alive: %3d\n", n_alive_surface);
+#endif
+               n_alive_total += n_alive_surface;
+       }
+       for (i = 0; i <= max_lev; i++)
+       {
+#ifdef JP
+               fprintf(fff, "%3d-%3d³¬  À¸Â¸: %3dÂÎ\n", 1 + i * 10, 10 + i * 10, n_alive[i]);
+#else
+               fprintf(fff, "Level %3d-%3d  alive: %3d\n", 1 + i * 10, 10 + i * 10, n_alive[i]);
+#endif
+               n_alive_total += n_alive[i];
+       }
+       if (n_alive_over100)
+       {
+#ifdef JP
+               fprintf(fff, "101-   ³¬  À¸Â¸: %3dÂÎ\n", n_alive_over100);
+#else
+               fprintf(fff, "Level 101-     alive: %3d\n", n_alive_over100);
+#endif
+               n_alive_total += n_alive_over100;
+       }
+
+       if (n_alive_total)
+       {
+#ifdef JP
+               fputs("---------  -----------\n", fff);
+               fprintf(fff, "     ¹ç·×  À¸Â¸: %3dÂÎ\n\n", n_alive_total);
+#else
+               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
+       }
+
        /* Scan the monster races */
        for (k = 0; k < n; k++)
        {
                monster_race *r_ptr = &r_info[who[k]];
 
-               /* Only print Uniques (rarity <= 100) */
-               if ((r_ptr->flags1 & RF1_UNIQUE) && r_ptr->rarity && (r_ptr->rarity <= 100))
-               {
-                       bool dead = (r_ptr->max_num == 0);
-
-                       if (dead) continue;
-
-                       /* Only display "known" uniques */
-                       if (dead || cheat_know || r_ptr->r_sights)
-                       {
-                               /* Print a message */
+               /* Print a message */
 #ifdef JP
-                               fprintf(fff, "     %s¤Ï¤Þ¤ÀÀ¸¤­¤Æ¤¤¤ë¡£\n",
-                                       (r_name + r_ptr->name));
+               fprintf(fff, "     %s (¥ì¥Ù¥ë%d)\n", r_name + r_ptr->name, r_ptr->level);
 #else
-                               fprintf(fff, "     %s is alive\n",
-                                       (r_name + r_ptr->name));
+               fprintf(fff, "     %s (level %d)\n", r_name + r_ptr->name, r_ptr->level);
 #endif
-                       }
-               }
        }
 
        /* Free the "who" array */
@@ -7047,7 +7117,7 @@ static void do_cmd_knowledge_pets(void)
 
        fprintf(fff, "----------------------------------------------\n");
 #ifdef JP
-       fprintf(fff, "    ¹ç·×: %d ɤ¤Î¥Ú¥Ã¥È\n", t_friends);
+       fprintf(fff, "    ¹ç·×: %d ÂΤΥڥåÈ\n", t_friends);
        fprintf(fff, " °Ý»ý¥³¥¹¥È: %d%% MP\n", show_upkeep);
 #else
        fprintf(fff, "   Total: %d pet%s.\n",
@@ -7141,21 +7211,12 @@ static void do_cmd_knowledge_kill_count(void)
 #else
                        fprintf(fff,"You have defeated no enemies yet.\n\n");
 #endif
-
-               else if (Total == 1)
-#ifdef JP
-                       fprintf(fff,"¤¢¤Ê¤¿¤Ï°ìɤ¤ÎŨ¤òÅݤ·¤Æ¤¤¤ë¡£\n\n");
-#else
-                       fprintf(fff,"You have defeated one enemy.\n\n");
-#endif
-
                else
 #ifdef JP
-                       fprintf(fff,"¤¢¤Ê¤¿¤Ï %lu ɤ¤ÎŨ¤òÅݤ·¤Æ¤¤¤ë¡£\n\n", Total);
+                       fprintf(fff,"¤¢¤Ê¤¿¤Ï%ldÂΤÎŨ¤òÅݤ·¤Æ¤¤¤ë¡£\n\n", Total);
 #else
-                       fprintf(fff,"You have defeated %lu enemies.\n\n", Total);
+                       fprintf(fff,"You have defeated %ld %s.\n\n", Total, (Total == 1) ? "enemy" : "enemies");
 #endif
-
        }
 
        Total = 0;
@@ -7200,11 +7261,11 @@ static void do_cmd_knowledge_kill_count(void)
                        if (This > 0)
                        {
 #ifdef JP
-                               /* p,t¤Ï¿Í¤È¿ô¤¨¤ë by ita*/
-                               if(my_strchr("pt",r_ptr->d_char))
+                               /* p,t¤Ï¿Í¤È¿ô¤¨¤ë by ita */
+                               if (my_strchr("pt", r_ptr->d_char))
                                        fprintf(fff, "     %3d ¿Í¤Î %s\n", This, r_name + r_ptr->name);
                                else
-                                       fprintf(fff, "     %3d ɤ¤Î %s\n", This, r_name + r_ptr->name);
+                                       fprintf(fff, "     %3d ÂΤΠ%s\n", This, r_name + r_ptr->name);
 #else
                                if (This < 2)
                                {
@@ -7234,7 +7295,7 @@ static void do_cmd_knowledge_kill_count(void)
 
        fprintf(fff,"----------------------------------------------\n");
 #ifdef JP
-       fprintf(fff,"    ¹ç·×: %lu ɤ¤òÅݤ·¤¿¡£\n", Total);
+       fprintf(fff,"    ¹ç·×: %lu ÂΤòÅݤ·¤¿¡£\n", Total);
 #else
        fprintf(fff,"   Total: %lu creature%s killed.\n",
                Total, (Total == 1 ? "" : "s"));
@@ -7551,7 +7612,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;
@@ -7776,8 +7837,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++)
@@ -8041,7 +8102,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("ÆäËÊѤï¤Ã¤¿¤È¤³¤í¤Ï¤Ê¤¤¤è¤¦¤À¡£");
@@ -8724,7 +8785,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];