<ClCompile Include="..\..\src\cmd\cmd-process-screen.c" />\r
<ClCompile Include="..\..\src\cmd\dump-util.c" />\r
<ClCompile Include="..\..\src\knowledge\knowledge-artifacts.c" />\r
+ <ClCompile Include="..\..\src\knowledge\knowledge-uniques.c" />\r
<ClCompile Include="..\..\src\main\music-definitions-table.c" />\r
<ClCompile Include="..\..\src\main\sound-definitions-table.c" />\r
<ClCompile Include="..\..\src\market\building.c" />\r
<ClInclude Include="..\..\src\cmd\cmd-process-screen.h" />\r
<ClInclude Include="..\..\src\cmd\dump-util.h" />\r
<ClInclude Include="..\..\src\knowledge\knowledge-artifacts.h" />\r
+ <ClInclude Include="..\..\src\knowledge\knowledge-uniques.h" />\r
<ClInclude Include="..\..\src\main\music-definitions-table.h" />\r
<ClInclude Include="..\..\src\main\sound-definitions-table.h" />\r
<ClInclude Include="..\..\src\market\building.h" />\r
<ClCompile Include="..\..\src\knowledge\knowledge-artifacts.c">
<Filter>knowledge</Filter>
</ClCompile>
+ <ClCompile Include="..\..\src\knowledge\knowledge-uniques.c">
+ <Filter>knowledge</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\gamevalue.h" />
<ClInclude Include="..\..\src\knowledge\knowledge-artifacts.h">
<Filter>knowledge</Filter>
</ClInclude>
+ <ClInclude Include="..\..\src\knowledge\knowledge-uniques.h">
+ <Filter>knowledge</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\src\wall.bmp" />
z-virt.c z-virt.h \
\
knowledge/knowledge-artifacts.c knowledge/knowledge-artifacts.h \
+ knowledge/knowledge-uniques.c knowledge/knowledge-uniques.h \
\
cmd/dump-util.c cmd/dump-util.h cmd/feeling-table.c cmd/feeling-table.h \
cmd/monster-group-table.c cmd/monster-group-table.h \
#include "io/interpret-pref-file.h"
#include "knowledge/knowledge-artifacts.h"
+#include "knowledge/knowledge-uniques.h"
#include "autopick.h"
#include "birth.h"
/*
- * Display known uniques
- * With "XTRA HACK UNIQHIST" (Originally from XAngband)
- */
-static void do_cmd_knowledge_uniques(player_type *creature_ptr)
-{
- u16b why = 2;
- IDX *who;
- int n_alive[10];
- int n_alive_surface = 0;
- int n_alive_over100 = 0;
- int n_alive_total = 0;
- int max_lev = -1;
- for (IDX i = 0; i < 10; i++)
- n_alive[i] = 0;
-
- FILE *fff = NULL;
- GAME_TEXT file_name[FILE_NAME_SIZE];
- if (!open_temporary_file(&fff, file_name)) return;
-
- C_MAKE(who, max_r_idx, MONRACE_IDX);
- int n = 0;
- for (IDX i = 1; i < max_r_idx; i++)
- {
- monster_race *r_ptr = &r_info[i];
- if (!r_ptr->name) continue;
- if (!(r_ptr->flags1 & RF1_UNIQUE)) continue;
- if (!cheat_know && !r_ptr->r_sights) continue;
- if (!r_ptr->rarity || ((r_ptr->rarity > 100) && !(r_ptr->flags1 & RF1_QUESTOR))) continue;
- if (r_ptr->max_num == 0) continue;
-
- if (r_ptr->level)
- {
- int 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++;
-
- who[n++] = i;
- }
-
- ang_sort(who, &why, n, ang_sort_comp_hook, ang_sort_swap_hook);
- if (n_alive_surface)
- {
- fprintf(fff, _(" 地上 生存: %3d体\n", " Surface alive: %3d\n"), n_alive_surface);
- n_alive_total += n_alive_surface;
- }
-
- for (IDX i = 0; i <= max_lev; i++)
- {
- fprintf(fff, _("%3d-%3d階 生存: %3d体\n", "Level %3d-%3d alive: %3d\n"), 1 + i * 10, 10 + i * 10, n_alive[i]);
- n_alive_total += n_alive[i];
- }
-
- if (n_alive_over100)
- {
- fprintf(fff, _("101- 階 生存: %3d体\n", "Level 101- alive: %3d\n"), n_alive_over100);
- n_alive_total += n_alive_over100;
- }
-
- if (n_alive_total)
- {
- fputs(_("--------- -----------\n", "------------- ----------\n"), fff);
- fprintf(fff, _(" 合計 生存: %3d体\n\n", " Total alive: %3d\n\n"), n_alive_total);
- }
- else
- {
- fputs(_("現在は既知の生存ユニークはいません。\n", "No known uniques alive.\n"), fff);
- }
-
- for (int k = 0; k < n; k++)
- {
- monster_race *r_ptr = &r_info[who[k]];
- fprintf(fff, _(" %s (レベル%d)\n", " %s (level %d)\n"), r_name + r_ptr->name, (int)r_ptr->level);
- }
-
- C_KILL(who, max_r_idx, s16b);
- my_fclose(fff);
- (void)show_file(creature_ptr, TRUE, file_name, _("まだ生きているユニーク・モンスター", "Alive Uniques"), 0, 0);
- fd_kill(file_name);
-}
-
-
-/*
* Display weapon-exp
*/
static void do_cmd_knowledge_weapon_exp(player_type *creature_ptr)
--- /dev/null
+#include "angband.h"
+#include "knowledge-artifacts.h"
+#include "cmd/dump-util.h"
+#include "sort.h"
+#include "core/show-file.h"
+
+/*
+ * Display known uniques
+ * With "XTRA HACK UNIQHIST" (Originally from XAngband)
+ */
+void do_cmd_knowledge_uniques(player_type *creature_ptr)
+{
+ u16b why = 2;
+ IDX *who;
+ int n_alive[10];
+ int n_alive_surface = 0;
+ int n_alive_over100 = 0;
+ int n_alive_total = 0;
+ int max_lev = -1;
+ for (IDX i = 0; i < 10; i++)
+ n_alive[i] = 0;
+
+ FILE *fff = NULL;
+ GAME_TEXT file_name[FILE_NAME_SIZE];
+ if (!open_temporary_file(&fff, file_name)) return;
+
+ C_MAKE(who, max_r_idx, MONRACE_IDX);
+ int n = 0;
+ for (IDX i = 1; i < max_r_idx; i++)
+ {
+ monster_race *r_ptr = &r_info[i];
+ if (!r_ptr->name) continue;
+ if (!(r_ptr->flags1 & RF1_UNIQUE)) continue;
+ if (!cheat_know && !r_ptr->r_sights) continue;
+ if (!r_ptr->rarity || ((r_ptr->rarity > 100) && !(r_ptr->flags1 & RF1_QUESTOR))) continue;
+ if (r_ptr->max_num == 0) continue;
+
+ if (r_ptr->level)
+ {
+ int 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++;
+
+ who[n++] = i;
+ }
+
+ ang_sort(who, &why, n, ang_sort_comp_hook, ang_sort_swap_hook);
+ if (n_alive_surface)
+ {
+ fprintf(fff, _(" 地上 生存: %3d体\n", " Surface alive: %3d\n"), n_alive_surface);
+ n_alive_total += n_alive_surface;
+ }
+
+ for (IDX i = 0; i <= max_lev; i++)
+ {
+ fprintf(fff, _("%3d-%3d階 生存: %3d体\n", "Level %3d-%3d alive: %3d\n"), 1 + i * 10, 10 + i * 10, n_alive[i]);
+ n_alive_total += n_alive[i];
+ }
+
+ if (n_alive_over100)
+ {
+ fprintf(fff, _("101- 階 生存: %3d体\n", "Level 101- alive: %3d\n"), n_alive_over100);
+ n_alive_total += n_alive_over100;
+ }
+
+ if (n_alive_total)
+ {
+ fputs(_("--------- -----------\n", "------------- ----------\n"), fff);
+ fprintf(fff, _(" 合計 生存: %3d体\n\n", " Total alive: %3d\n\n"), n_alive_total);
+ }
+ else
+ {
+ fputs(_("現在は既知の生存ユニークはいません。\n", "No known uniques alive.\n"), fff);
+ }
+
+ for (int k = 0; k < n; k++)
+ {
+ monster_race *r_ptr = &r_info[who[k]];
+ fprintf(fff, _(" %s (レベル%d)\n", " %s (level %d)\n"), r_name + r_ptr->name, (int)r_ptr->level);
+ }
+
+ C_KILL(who, max_r_idx, s16b);
+ my_fclose(fff);
+ (void)show_file(creature_ptr, TRUE, file_name, _("まだ生きているユニーク・モンスター", "Alive Uniques"), 0, 0);
+ fd_kill(file_name);
+}
--- /dev/null
+#pragma once
+
+void do_cmd_knowledge_uniques(player_type *creature_ptr);