+}
+
+/*!
+ * @brief 既知の生きているユニークまたは撃破済ユニークの一覧を表示させる
+ * @param creature_ptr プレーヤーへの参照ポインタ
+ * @param is_alive 生きているユニークのリストならばTRUE、撃破したユニークのリストならばFALSE
+ * @return なし
+ */
+void do_cmd_knowledge_uniques(player_type *creature_ptr, bool is_alive)
+{
+ unique_list_type tmp_list;
+ unique_list_type *unique_list_ptr = initialize_unique_lsit_type(&tmp_list, is_alive);
+ FILE *fff = NULL;
+ GAME_TEXT file_name[FILE_NAME_SIZE];
+ if (!open_temporary_file(&fff, file_name))
+ return;
+
+ C_MAKE(unique_list_ptr->who, max_r_idx, MONRACE_IDX);
+ for (IDX i = 1; i < max_r_idx; i++) {
+ monster_race *r_ptr = &r_info[i];
+ if (!sweep_uniques(r_ptr, unique_list_ptr->is_alive))
+ continue;
+
+ if (r_ptr->level) {
+ int lev = (r_ptr->level - 1) / 10;
+ if (lev < 10) {
+ unique_list_ptr->num_uniques[lev]++;
+ if (unique_list_ptr->max_lev < lev)
+ unique_list_ptr->max_lev = lev;
+ } else
+ unique_list_ptr->num_uniques_over100++;
+ } else
+ unique_list_ptr->num_uniques_surface++;
+
+ unique_list_ptr->who[unique_list_ptr->n++] = i;
+ }