1 #include "cmd-io/cmd-lore.h"
2 #include "core/asking-player.h"
4 #include "core/stuff-handler.h"
5 #include "game-option/game-play-options.h"
6 #include "game-option/cheat-options.h"
7 #include "io/input-key-acceptor.h"
8 #include "monster-race/race-flags1.h"
9 #include "monster-race/race-flags7.h"
10 #include "term/gameterm.h"
11 #include "term/term-color-types.h"
12 #include "view/display-main-window.h"
13 #include "view/display-lore.h"
16 * @brief モンスターの思い出を見るコマンドのメインルーチン
17 * Identify a character, allow recall of monsters
18 * @param player_ptr プレーヤーへの参照ポインタ
22 * Several "special" responses recall "multiple" monsters:
24 * ^U (all unique monsters)
25 * ^N (all non-unique monsters)
27 * The responses may be sorted in several ways, see below.
29 * Note that the player ghosts are ignored.
32 void do_cmd_query_symbol(player_type *creature_ptr)
51 if (!get_com(_("知りたい文字を入力して下さい(記号 or ^A全,^Uユ,^N非ユ,^R乗馬,^M名前): ",
52 "Enter character to be identified(^A:All,^U:Uniqs,^N:Non uniqs,^M:Name): "),
56 for (i = 0; ident_info[i]; ++i) {
57 if (sym == ident_info[i][0])
61 if (sym == KTRL('A')) {
63 strcpy(buf, _("全モンスターのリスト", "Full monster list."));
64 } else if (sym == KTRL('U')) {
66 strcpy(buf, _("ユニーク・モンスターのリスト", "Unique monster list."));
67 } else if (sym == KTRL('N')) {
69 strcpy(buf, _("ユニーク外モンスターのリスト", "Non-unique monster list."));
70 } else if (sym == KTRL('R')) {
72 strcpy(buf, _("乗馬可能モンスターのリスト", "Ridable monster list."));
73 } else if (sym == KTRL('M')) {
75 if (!get_string(_("名前(英語の場合小文字で可)", "Enter name:"), temp, 70)) {
79 sprintf(buf, _("名前:%sにマッチ", "Monsters with a name \"%s\""), temp);
80 } else if (ident_info[i]) {
81 sprintf(buf, "%c - %s.", sym, ident_info[i] + 2);
83 sprintf(buf, "%c - %s", sym, _("無効な文字", "Unknown Symbol"));
87 C_MAKE(who, max_r_idx, MONRACE_IDX);
88 for (n = 0, i = 1; i < max_r_idx; i++) {
89 monster_race *r_ptr = &r_info[i];
90 if (!cheat_know && !r_ptr->r_sights)
93 if (norm && (r_ptr->flags1 & (RF1_UNIQUE)))
96 if (uniq && !(r_ptr->flags1 & (RF1_UNIQUE)))
99 if (ride && !(r_ptr->flags7 & (RF7_RIDING)))
106 for (xx = 0; temp[xx] && xx < 80; xx++) {
108 if (iskanji(temp[xx])) {
113 if (isupper(temp[xx]))
114 temp[xx] = (char)tolower(temp[xx]);
118 strcpy(temp2, r_name + r_ptr->E_name);
120 strcpy(temp2, r_name + r_ptr->name);
122 for (xx = 0; temp2[xx] && xx < 80; xx++)
123 if (isupper(temp2[xx]))
124 temp2[xx] = (char)tolower(temp2[xx]);
127 if (angband_strstr(temp2, temp) || angband_strstr(r_name + r_ptr->name, temp))
129 if (angband_strstr(temp2, temp))
134 else if (all || (r_ptr->d_char == sym))
139 C_KILL(who, max_r_idx, MONRACE_IDX);
143 put_str(_("思い出を見ますか? (k:殺害順/y/n): ", "Recall details? (k/y/n): "), 0, _(36, 40));
147 ang_sort(who, &why, n, ang_sort_comp_hook, ang_sort_swap_hook);
154 C_KILL(who, max_r_idx, MONRACE_IDX);
159 ang_sort(who, &why, n, ang_sort_comp_hook, ang_sort_swap_hook);
165 monster_race_track(creature_ptr, r_idx);
166 handle_stuff(creature_ptr);
170 screen_roff(creature_ptr, who[i], 0);
174 Term_addstr(-1, TERM_WHITE, _(" ['r'思い出, ESC]", " [(r)ecall, ESC]"));
203 C_KILL(who, max_r_idx, IDX);