cptr str = msg;
/* Display matches */
- while ((str = strstr(str, shower)) != NULL)
+ while ((str = my_strstr(str, shower)) != NULL)
{
int len = strlen(shower);
/* Get a "shower" string, or continue */
- if (!askfor_aux(shower, 80)) continue;
+ if (!askfor(shower, 80)) continue;
/* Okay */
continue;
/* Get a "finder" string, or continue */
- if (!askfor_aux(finder, 80)) continue;
+ if (!askfor(finder, 80)) continue;
/* Show it */
strcpy(shower, finder);
cptr msg = message_str(z);
/* Search for it */
- if (strstr(msg, finder))
+ if (my_strstr(msg, finder))
{
/* New location */
i = z;
/* Give some choices */
#ifdef JP
- prt("(1) ¥¡¼ÆþÎÏ ¥ª¥×¥·¥ç¥ó", 2, 5);
- prt("(2) ²èÌ̽ÐÎÏ ¥ª¥×¥·¥ç¥ó", 3, 5);
- prt("(3) ¥²¡¼¥à¥×¥ì¥¤ ¥ª¥×¥·¥ç¥ó", 4, 5);
- prt("(4) ¹ÔÆ°Ãæ»ß´Ø·¸ ¥ª¥×¥·¥ç¥ó", 5, 5);
- prt("(5) ¸úΨ²½ ¥ª¥×¥·¥ç¥ó", 6, 5);
- prt("(6) ´Ê°×¥¢¥¤¥Æ¥à¼«Æ°Ç˲õ ¥ª¥×¥·¥ç¥ó", 7, 5);
- prt("(R) ¥×¥ì¥¤µÏ¿ ¥ª¥×¥·¥ç¥ó", 8, 5);
+ prt("(1) ¥¡¼ÆþÎÏ ¥ª¥×¥·¥ç¥ó", 2, 5);
+ prt("(2) ¥Þ¥Ã¥×²èÌÌ ¥ª¥×¥·¥ç¥ó", 3, 5);
+ prt("(3) ¥Æ¥¥¹¥Èɽ¼¨ ¥ª¥×¥·¥ç¥ó", 4, 5);
+ prt("(4) ¥²¡¼¥à¥×¥ì¥¤ ¥ª¥×¥·¥ç¥ó", 5, 5);
+ prt("(5) ¹ÔÆ°Ãæ»ß´Ø·¸ ¥ª¥×¥·¥ç¥ó", 6, 5);
+ prt("(6) ´Ê°×¼«Æ°Ç˲õ ¥ª¥×¥·¥ç¥ó", 7, 5);
+ prt("(R) ¥×¥ì¥¤µÏ¿ ¥ª¥×¥·¥ç¥ó", 8, 5);
/* Special choices */
- prt("(P) ¼«Æ°½¦¤¤¥¨¥Ç¥£¥¿", 10, 5);
- prt("(D) ´ðËÜ¥¦¥§¥¤¥ÈÎÌ", 11, 5);
+ prt("(P) ¼«Æ°½¦¤¤¥¨¥Ç¥£¥¿", 10, 5);
+ prt("(D) ´ðËÜ¥¦¥§¥¤¥ÈÎÌ", 11, 5);
prt("(H) Äã¥Ò¥Ã¥È¥Ý¥¤¥ó¥È·Ù¹ð", 12, 5);
- prt("(M) ÄãËâÎÏ¿§ïçÃÍ", 13, 5);
- prt("(A) ¼«Æ°¥»¡¼¥Ö ¥ª¥×¥·¥ç¥ó", 14, 5);
+ prt("(M) ÄãËâÎÏ¿§ïçÃÍ", 13, 5);
+ prt("(A) ¼«Æ°¥»¡¼¥Ö ¥ª¥×¥·¥ç¥ó", 14, 5);
/* Window flags */
- prt("(W) ¥¦¥¤¥ó¥É¥¦¥Õ¥é¥°", 15, 5);
+ prt("(W) ¥¦¥¤¥ó¥É¥¦¥Õ¥é¥°", 15, 5);
#else
prt("(1) Input Options", 2, 5);
- prt("(2) Output Options", 3, 5);
- prt("(3) Game-Play Options", 4, 5);
- prt("(4) Disturbance Options", 5, 5);
- prt("(5) Efficiency Options", 6, 5);
+ prt("(2) Map Screen Options", 3, 5);
+ prt("(3) Text Display Options", 4, 5);
+ prt("(4) Game-Play Options", 5, 5);
+ prt("(5) Disturbance Options", 6, 5);
prt("(6) Easy Auto-Destroyer Options", 7, 5);
prt("(R) Play-record Options", 8, 5);
/* Special choices */
{
/* Birth */
#ifdef JP
- prt("(B) ½é´ü ¥ª¥×¥·¥ç¥ó (»²¾È¤Î¤ß)", 16, 5);
+ prt("(B) ½é´ü ¥ª¥×¥·¥ç¥ó (»²¾È¤Î¤ß)", 16, 5);
#else
prt("(B) Birth Options (Browse Only)", 16, 5);
#endif
{
/* Birth */
#ifdef JP
- prt("(B) ½é´ü ¥ª¥×¥·¥ç¥ó", 16, 5);
+ prt("(B) ½é´ü ¥ª¥×¥·¥ç¥ó", 16, 5);
#else
prt("(B) Birth Options", 16, 5);
#endif
{
/* Cheating */
#ifdef JP
- prt("(C) º¾µ½ ¥ª¥×¥·¥ç¥ó", 17, 5);
+ prt("(C) º¾µ½ ¥ª¥×¥·¥ç¥ó", 17, 5);
#else
prt("(C) Cheating Options", 17, 5);
#endif
/* Analyze */
switch (k)
{
- /* General Options */
case '1':
{
/* Process the general options */
break;
}
- /* General Options */
case '2':
{
/* Process the general options */
#ifdef JP
- do_cmd_options_aux(OPT_PAGE_OUTPUT, "²èÌ̽ÐÎÏ¥ª¥×¥·¥ç¥ó");
+ do_cmd_options_aux(OPT_PAGE_MAPSCREEN, "¥Þ¥Ã¥×²èÌÌ¥ª¥×¥·¥ç¥ó");
#else
- do_cmd_options_aux(OPT_PAGE_OUTPUT, "Output Options");
+ do_cmd_options_aux(OPT_PAGE_MAPSCREEN, "Map Screen Options");
#endif
break;
}
- /* Inventory Options */
case '3':
{
/* Spawn */
#ifdef JP
- do_cmd_options_aux(OPT_PAGE_GAMEPLAY, "¥²¡¼¥à¥×¥ì¥¤¡¦¥ª¥×¥·¥ç¥ó");
+ do_cmd_options_aux(OPT_PAGE_TEXT, "¥Æ¥¥¹¥Èɽ¼¨¥ª¥×¥·¥ç¥ó");
#else
- do_cmd_options_aux(OPT_PAGE_GAMEPLAY, "Game-Play Options");
+ do_cmd_options_aux(OPT_PAGE_TEXT, "Text Display Options");
#endif
break;
}
- /* Disturbance Options */
case '4':
{
/* Spawn */
#ifdef JP
- do_cmd_options_aux(OPT_PAGE_DISTURBANCE, "¹ÔÆ°Ãæ»ß´Ø·¸¤Î¥ª¥×¥·¥ç¥ó");
+ do_cmd_options_aux(OPT_PAGE_GAMEPLAY, "¥²¡¼¥à¥×¥ì¥¤¡¦¥ª¥×¥·¥ç¥ó");
#else
- do_cmd_options_aux(OPT_PAGE_DISTURBANCE, "Disturbance Options");
+ do_cmd_options_aux(OPT_PAGE_GAMEPLAY, "Game-Play Options");
#endif
break;
}
- /* Efficiency Options */
case '5':
{
/* Spawn */
#ifdef JP
- do_cmd_options_aux(OPT_PAGE_EFFICIENCY, "¸úΨ²½¥ª¥×¥·¥ç¥ó");
+ do_cmd_options_aux(OPT_PAGE_DISTURBANCE, "¹ÔÆ°Ãæ»ß´Ø·¸¤Î¥ª¥×¥·¥ç¥ó");
#else
- do_cmd_options_aux(OPT_PAGE_EFFICIENCY, "Efficiency Options");
+ do_cmd_options_aux(OPT_PAGE_DISTURBANCE, "Disturbance Options");
#endif
break;
}
- /* Object auto-destruction Options */
case '6':
{
/* Spawn */
#ifdef JP
- do_cmd_options_aux(OPT_PAGE_AUTODESTROY, "´Ê°×¥¢¥¤¥Æ¥à¼«Æ°Ç˲õ¥ª¥×¥·¥ç¥ó");
+ do_cmd_options_aux(OPT_PAGE_AUTODESTROY, "´Ê°×¼«Æ°Ç˲õ¥ª¥×¥·¥ç¥ó");
#else
do_cmd_options_aux(OPT_PAGE_AUTODESTROY, "Easy Auto-Destroyer Options");
#endif
(void)process_pref_file_command(buf);
}
-void do_cmd_pickpref(void)
+void do_cmd_reload_autopick(void)
{
- char buf[80];
- errr err;
-
-#ifdef JP
- if(!get_check("¼«Æ°½¦¤¤ÀßÄê¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤·¤Þ¤¹¤«? ")) return;
-#else
- if(!get_check("Reload auto-pick preference file? ")) return;
-#endif
-
- /* Free old entries */
- init_autopicker();
-
- /* ¥¥ã¥éËè¤ÎÀßÄê¥Õ¥¡¥¤¥ë¤ÎÆɤ߹þ¤ß */
-#ifdef JP
- sprintf(buf, "picktype-%s.prf", player_name);
-#else
- sprintf(buf, "pickpref-%s.prf", player_name);
-#endif
- err = process_pickpref_file(buf);
-
- if(err == 0)
- {
-#ifdef JP
- msg_format("%s¤òÆɤ߹þ¤ß¤Þ¤·¤¿¡£", buf);
-#else
- msg_format("loaded '%s'.", buf);
-#endif
- }
-
- /* ¶¦Ä̤ÎÀßÄê¥Õ¥¡¥¤¥ëÆɤ߹þ¤ß */
-
- /* Process 'pick????.prf' if 'pick????-<name>.prf' doesn't exist */
- if (0 > err)
- {
-#ifdef JP
- err = process_pickpref_file("picktype.prf");
-#else
- err = process_pickpref_file("pickpref.prf");
-#endif
-
- if(err == 0)
- {
#ifdef JP
- msg_print("picktype.prf¤òÆɤ߹þ¤ß¤Þ¤·¤¿¡£");
+ if (!get_check("¼«Æ°½¦¤¤ÀßÄê¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤·¤Þ¤¹¤«? ")) return;
#else
- msg_print("loaded 'pickpref.prf'.");
+ if (!get_check("Reload auto-pick preference file? ")) return;
#endif
- }
- }
-
-#ifdef JP
- if(err) msg_print("¼«Æ°½¦¤¤ÀßÄê¥Õ¥¡¥¤¥ë¤ÎÆɤ߹þ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£");
-#else
- if(err) msg_print("Failed to reload autopick preference.");
-#endif
+ /* Load the file with messages */
+ autopick_load_pref(TRUE);
}
#ifdef ALLOW_MACROS
sprintf(tmp, "%s.prf", player_name);
/* Ask for a file */
- if (!askfor_aux(tmp, 80)) continue;
+ if (!askfor(tmp, 80)) continue;
/* Process the given filename */
err = process_pref_file(tmp);
sprintf(tmp, "%s.prf", player_name);
/* Ask for a file */
- if (!askfor_aux(tmp, 80)) continue;
+ if (!askfor(tmp, 80)) continue;
/* Dump the macros */
(void)macro_dump(tmp);
/* Clear */
clear_from(20);
+ /* Help message */
+#ifdef JP
+ c_prt(TERM_L_RED, "¥«¡¼¥½¥ë¥¡¼¤Îº¸±¦¤Ç¥«¡¼¥½¥ë°ÌÃÖ¤ò°ÜÆ°¡£Backspace¤«Delete¤Ç°ìʸ»úºï½ü¡£", 22, 0);
+#else
+ c_prt(TERM_L_RED, "Press Left/Right arrow keys to move cursor. Backspace/Delete to delete a char.", 22, 0);
+#endif
+
/* Prompt */
#ifdef JP
prt("¥Þ¥¯¥í¹ÔÆ°: ", 20, 0);
ascii_to_text(tmp, macro__buf);
/* Get an encoded action */
- if (askfor_aux(tmp, 80))
+ if (askfor(tmp, 80))
{
/* Convert to ascii */
text_to_ascii(macro__buf, tmp);
sprintf(tmp, "%s.prf", player_name);
/* Ask for a file */
- if (!askfor_aux(tmp, 80)) continue;
+ if (!askfor(tmp, 80)) continue;
/* Dump the macros */
(void)keymap_dump(tmp);
/* Clear */
clear_from(20);
+ /* Help message */
+#ifdef JP
+ c_prt(TERM_L_RED, "¥«¡¼¥½¥ë¥¡¼¤Îº¸±¦¤Ç¥«¡¼¥½¥ë°ÌÃÖ¤ò°ÜÆ°¡£Backspace¤«Delete¤Ç°ìʸ»úºï½ü¡£", 22, 0);
+#else
+ c_prt(TERM_L_RED, "Press Left/Right arrow keys to move cursor. Backspace/Delete to delete a char.", 22, 0);
+#endif
+
/* Prompt */
#ifdef JP
prt("¹ÔÆ°: ", 20, 0);
ascii_to_text(tmp, macro__buf);
/* Get an encoded action */
- if (askfor_aux(tmp, 80))
+ if (askfor(tmp, 80))
{
/* Convert to ascii */
text_to_ascii(macro__buf, tmp);
prt("Command: Enter a new action", 16, 0);
#endif
+ /* Clear */
+ clear_from(20);
+
+ /* Help message */
+#ifdef JP
+ c_prt(TERM_L_RED, "¥«¡¼¥½¥ë¥¡¼¤Îº¸±¦¤Ç¥«¡¼¥½¥ë°ÌÃÖ¤ò°ÜÆ°¡£Backspace¤«Delete¤Ç°ìʸ»úºï½ü¡£", 22, 0);
+#else
+ c_prt(TERM_L_RED, "Press Left/Right arrow keys to move cursor. Backspace/Delete to delete a char.", 22, 0);
+#endif
- /* Go to the correct location */
- Term_gotoxy(0, 22);
+ /* Prompt */
+#ifdef JP
+ prt("¥Þ¥¯¥í¹ÔÆ°: ", 20, 0);
+#else
+ prt("Action: ", 20, 0);
+#endif
/* Hack -- limit the value */
tmp[80] = '\0';
/* Get an encoded action */
- if (!askfor_aux(buf, 80)) continue;
+ if (!askfor(buf, 80)) continue;
/* Extract an action */
text_to_ascii(macro__buf, buf);
}
+static cptr lighting_level_str[F_LIT_MAX] =
+{
+#ifdef JP
+ "ɸ½à¿§",
+ "ÌÀ¿§",
+ "°Å¿§",
+ "°Å°Å¿§",
+#else
+ "standard",
+ "brightly lit",
+ "darkened",
+ "darkly darkened",
+#endif
+};
+
+
static void cmd_visuals_aux(int i, int *num, int max)
{
if (iscntrl(i))
if (use_bigtile) empty_symbol = "<< ?? >>";
+
/* File type is "TEXT" */
FILE_TYPE(FILE_TYPE_TEXT);
/* Prompt */
#ifdef JP
- prt("¥³¥Þ¥ó¥É:", 18, 0);
+ prt("¥³¥Þ¥ó¥É:", 15, 0);
#else
prt("Command: ", 15, 0);
#endif
/* Prompt */
#ifdef JP
- prt("¥Õ¥¡¥¤¥ë: ", 18, 0);
+ prt("¥Õ¥¡¥¤¥ë: ", 17, 0);
#else
prt("File: ", 17, 0);
#endif
sprintf(tmp, "%s.prf", player_name);
/* Query */
- if (!askfor_aux(tmp, 70)) continue;
+ if (!askfor(tmp, 70)) continue;
/* Process the given filename */
(void)process_pref_file(tmp);
sprintf(tmp, "%s.prf", player_name);
/* Get a filename */
- if (!askfor_aux(tmp, 70)) continue;
+ if (!askfor(tmp, 70)) continue;
/* Build the filename */
path_build(buf, sizeof(buf), ANGBAND_DIR_USER, tmp);
sprintf(tmp, "%s.prf", player_name);
/* Get a filename */
- if (!askfor_aux(tmp, 70)) continue;
+ if (!askfor(tmp, 70)) continue;
/* Build the filename */
path_build(buf, sizeof(buf), ANGBAND_DIR_USER, tmp);
sprintf(tmp, "%s.prf", player_name);
/* Get a filename */
- if (!askfor_aux(tmp, 70)) continue;
+ if (!askfor(tmp, 70)) continue;
/* Build the filename */
path_build(buf, sizeof(buf), ANGBAND_DIR_USER, tmp);
auto_dump_printf("# %s\n", (f_name + f_ptr->name));
/* Dump the feature attr/char info */
- auto_dump_printf("F:%d:0x%02X/0x%02X\n\n", i,
- (byte)(f_ptr->x_attr), (byte)(f_ptr->x_char));
+ auto_dump_printf("F:%d:0x%02X/0x%02X:0x%02X/0x%02X:0x%02X/0x%02X:0x%02X/0x%02X\n\n", i,
+ (byte)(f_ptr->x_attr[F_LIT_STANDARD]), (byte)(f_ptr->x_char[F_LIT_STANDARD]),
+ (byte)(f_ptr->x_attr[F_LIT_LITE]), (byte)(f_ptr->x_char[F_LIT_LITE]),
+ (byte)(f_ptr->x_attr[F_LIT_DARK]), (byte)(f_ptr->x_char[F_LIT_DARK]),
+ (byte)(f_ptr->x_attr[F_LIT_DARKDARK]), (byte)(f_ptr->x_char[F_LIT_DARKDARK]));
}
/* Close */
while (1)
{
monster_race *r_ptr = &r_info[r];
- byte a, a2;
- char c, c2;
+ char c;
int t;
byte da = (r_ptr->d_attr);
#endif
Term_putstr(40, 19, -1, TERM_WHITE, empty_symbol);
-
- a = da;
- c = dc;
- if (use_bigtile) bigtile_attr(&c, &a, &c2, &a2);
-
- Term_putch(43, 19, a, c);
- if (use_bigtile) Term_putch(43 + 1, 19, a2, c2);
+ Term_queue_bigchar(43, 19, da, dc, 0, 0);
/* Label the Current values */
#ifdef JP
#endif
Term_putstr(40, 20, -1, TERM_WHITE, empty_symbol);
-
- a = ca;
- c = cc;
- if (use_bigtile) bigtile_attr(&c, &a, &c2, &a2);
-
- Term_putch(43, 20, a, c);
- if (use_bigtile) Term_putch(43 + 1, 20, a2, c2);
-
+ Term_queue_bigchar(43, 20, ca, cc, 0, 0);
/* Prompt */
#ifdef JP
while (1)
{
object_kind *k_ptr = &k_info[k];
- byte a, a2;
- char c, c2;
+ char c;
int t;
byte da = (byte)k_ptr->d_attr;
#endif
Term_putstr(40, 19, -1, TERM_WHITE, empty_symbol);
- a = da;
- c = dc;
- if (use_bigtile) bigtile_attr(&c, &a, &c2, &a2);
-
- Term_putch(43, 19, a, c);
- if (use_bigtile) Term_putch(43 + 1, 19, a2, c2);
-
+ Term_queue_bigchar(43, 19, da, dc, 0, 0);
/* Label the Current values */
#ifdef JP
#endif
Term_putstr(40, 20, -1, TERM_WHITE, empty_symbol);
- a = ca;
- c = cc;
- if (use_bigtile) bigtile_attr(&c, &a, &c2, &a2);
-
- Term_putch(43, 20, a, c);
- if (use_bigtile) Term_putch(43 + 1, 20, a2, c2);
-
+ Term_queue_bigchar(43, 20, ca, cc, 0, 0);
/* Prompt */
#ifdef JP
else if (i == '8')
{
static int f = 0;
+ static int lighting_level = F_LIT_STANDARD;
/* Prompt */
#ifdef JP
while (1)
{
feature_type *f_ptr = &f_info[f];
- byte a, a2;
- char c, c2;
+ char c;
int t;
- byte da = (byte)f_ptr->d_attr;
- byte dc = (byte)f_ptr->d_char;
- byte ca = (byte)f_ptr->x_attr;
- byte cc = (byte)f_ptr->x_char;
+ byte da = (byte)f_ptr->d_attr[lighting_level];
+ byte dc = (byte)f_ptr->d_char[lighting_level];
+ byte ca = (byte)f_ptr->x_attr[lighting_level];
+ byte cc = (byte)f_ptr->x_char[lighting_level];
/* Label the object */
+ prt("", 17, 5);
#ifdef JP
Term_putstr(5, 17, -1, TERM_WHITE,
- format("ÃÏ·Á = %d, ̾Á° = %-40.40s",
- f, (f_name + f_ptr->name)));
+ format("ÃÏ·Á = %d, ̾Á° = %s, ÌÀÅÙ = %s",
+ f, (f_name + f_ptr->name), lighting_level_str[lighting_level]));
#else
Term_putstr(5, 17, -1, TERM_WHITE,
- format("Terrain = %d, Name = %-40.40s",
- f, (f_name + f_ptr->name)));
+ format("Terrain = %d, Name = %s, Lighting = %s",
+ f, (f_name + f_ptr->name), lighting_level_str[lighting_level]));
#endif
#endif
Term_putstr(40, 19, -1, TERM_WHITE, empty_symbol);
- a = da;
- c = dc;
- if (use_bigtile) bigtile_attr(&c, &a, &c2, &a2);
- Term_putch(43, 19, a, c);
- if (use_bigtile) Term_putch(43 + 1, 19, a2, c2);
+ Term_queue_bigchar(43, 19, da, dc, 0, 0);
/* Label the Current values */
#endif
Term_putstr(40, 20, -1, TERM_WHITE, empty_symbol);
- a = ca;
- c = cc;
- if (use_bigtile) bigtile_attr(&c, &a, &c2, &a2);
-
- Term_putch(43, 20, a, c);
- if (use_bigtile) Term_putch(43 + 1, 20, a2, c2);
-
+ Term_queue_bigchar(43, 20, ca, cc, 0, 0);
/* Prompt */
#ifdef JP
Term_putstr(0, 22, -1, TERM_WHITE,
- "¥³¥Þ¥ó¥É (n/N/^N/a/A/^A/c/C/^C): ");
+ "¥³¥Þ¥ó¥É (n/N/^N/a/A/^A/c/C/^C/l/L/^L): ");
#else
Term_putstr(0, 22, -1, TERM_WHITE,
- "Command (n/N/^N/a/A/^A/c/C/^C): ");
+ "Command (n/N/^N/a/A/^A/c/C/^C/l/L/^L): ");
#endif
/* Get a command */
cmd_visuals_aux(i, &f, max_f_idx);
break;
case 'a':
- t = (int)f_info[f].x_attr;
+ t = (int)f_info[f].x_attr[lighting_level];
cmd_visuals_aux(i, &t, 256);
- f_info[f].x_attr = (byte)t;
+ f_info[f].x_attr[lighting_level] = (byte)t;
break;
case 'c':
- t = (int)f_info[f].x_char;
+ t = (int)f_info[f].x_char[lighting_level];
cmd_visuals_aux(i, &t, 256);
- f_info[f].x_char = (byte)t;
+ f_info[f].x_char[lighting_level] = (byte)t;
+ break;
+ case 'l':
+ cmd_visuals_aux(i, &lighting_level, F_LIT_MAX);
break;
}
}
sprintf(tmp, "%s.prf", player_name);
/* Query */
- if (!askfor_aux(tmp, 70)) continue;
+ if (!askfor(tmp, 70)) continue;
/* Process the given filename */
(void)process_pref_file(tmp);
sprintf(tmp, "%s.prf", player_name);
/* Get a filename */
- if (!askfor_aux(tmp, 70)) continue;
+ if (!askfor(tmp, 70)) continue;
/* Build the filename */
path_build(buf, sizeof(buf), ANGBAND_DIR_USER, tmp);
else
{
/* Check for race in the group */
- if (!strchr(group_char, r_ptr->d_char)) continue;
+ if (!my_strchr(group_char, r_ptr->d_char)) continue;
}
/* Add the race */
* HACK:Ring of Lordly protection and Dragon equipment
* have random resistances.
*/
- if (((TV_EQUIP_BEGIN <= tval) && (tval <= TV_EQUIP_END) && o_ptr->name2)
+ if (((TV_WEARABLE_BEGIN <= tval) && (tval <= TV_WEARABLE_END) && o_ptr->name2)
|| ((tval == TV_AMULET) && (o_ptr->sval == SV_AMULET_RESISTANCE))
|| ((tval == TV_RING) && (o_ptr->sval == SV_RING_LORDLY))
|| ((tval == TV_SHIELD) && (o_ptr->sval == SV_DRAGON_SHIELD))
|| o_ptr->art_name || o_ptr->name1)
{
int i = 0;
- object_desc(o_name, o_ptr, TRUE, 0);
+ object_desc(o_name, o_ptr, OD_NAME_ONLY);
while (o_name[i] && (i < 26))
{
}
fprintf(fff, "%s\n", inven_res_label);
- for (tval = TV_EQUIP_BEGIN; tval <= TV_EQUIP_END; tval++)
+ for (tval = TV_WEARABLE_BEGIN; tval <= TV_WEARABLE_END; tval++)
{
if (j != 0)
{
/* Make it an artifact */
q_ptr->name1 = (byte)who[k];
+ /* Display as if known */
+ q_ptr->ident |= IDENT_STORE;
+
/* Describe the artifact */
- object_desc_store(base_name, q_ptr, FALSE, 0);
+ object_desc(base_name, q_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
}
/* Hack -- Build the artifact name */
{
int NameLen = strlen(Name);
- if (strstr(Name, "Disembodied hand"))
+ if (my_strstr(Name, "Disembodied hand"))
{
strcpy(Name, "Disembodied hands that strangled people");
}
- else if (strstr(Name, "Colour out of space"))
+ else if (my_strstr(Name, "Colour out of space"))
{
strcpy(Name, "Colours out of space");
}
- else if (strstr(Name, "stairway to hell"))
+ else if (my_strstr(Name, "stairway to hell"))
{
strcpy(Name, "stairways to hell");
}
- else if (strstr(Name, "Dweller on the threshold"))
+ else if (my_strstr(Name, "Dweller on the threshold"))
{
strcpy(Name, "Dwellers on the threshold");
}
- else if (strstr(Name, " of "))
+ else if (my_strstr(Name, " of "))
{
- cptr aider = strstr(Name, " of ");
+ cptr aider = my_strstr(Name, " of ");
char dummy[80];
int i = 0;
cptr ctr = Name;
strcpy(&(dummy[i+1]), aider);
strcpy(Name, dummy);
}
- else if (strstr(Name, "coins"))
+ else if (my_strstr(Name, "coins"))
{
char dummy[80];
strcpy(dummy, "piles of ");
strcpy(Name, dummy);
return;
}
- else if (strstr(Name, "Manes"))
+ else if (my_strstr(Name, "Manes"))
{
return;
}
{
#ifdef JP
/* p,t¤Ï¿Í¤È¿ô¤¨¤ë by ita*/
- if(strchr("pt",r_ptr->d_char))
+ 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);
#else
if (This < 2)
{
- if (strstr(r_name + r_ptr->name, "coins"))
+ if (my_strstr(r_name + r_ptr->name, "coins"))
{
fprintf(fff, " 1 pile of %s\n", (r_name + r_ptr->name));
}
/* Display columns until done */
for (j = 0; j < width; j++)
{
- byte a, a2;
- char c, c2;
+ byte a;
+ char c;
int x = col + j;
int y = row + i;
int ia, ic;
/* Force correct code for both ASCII character and tile */
if (c & 0x80) a |= 0x80;
- if (use_bigtile) bigtile_attr(&c, &a, &c2, &a2);
-
/* Display symbol */
- Term_putch(x, y, a, c);
-
- /* Second byte */
- if (use_bigtile) Term_putch(x + 1, y, a2, c2);
+ Term_queue_bigchar(x, y, a, c, 0, 0);
}
}
}
static byte attr_idx = 0;
static byte char_idx = 0;
+/* Hack -- for feature lighting */
+static byte attr_idx_feat[F_LIT_MAX] = {0, 0, 0, 0};
+static byte char_idx_feat[F_LIT_MAX] = {0, 0, 0, 0};
+
/*
* Do visual mode command -- Change symbols
*/
static bool visual_mode_command(char ch, bool *visual_list_ptr,
- int height, int width,
- byte *attr_top_ptr, byte *char_left_ptr,
- byte *cur_attr_ptr, byte *cur_char_ptr)
+ int height, int width,
+ byte *attr_top_ptr, byte *char_left_ptr,
+ byte *cur_attr_ptr, byte *cur_char_ptr, bool *need_redraw)
{
static byte attr_old = 0, char_old = 0;
{
/* Accept change */
*visual_list_ptr = FALSE;
+ *need_redraw = TRUE;
return TRUE;
}
case 'C':
case 'c':
- /* Set the visual */
- attr_idx = *cur_attr_ptr;
- char_idx = *cur_char_ptr;
+ {
+ int i;
+ /* Set the visual */
+ attr_idx = *cur_attr_ptr;
+ char_idx = *cur_char_ptr;
+
+ /* Hack -- for feature lighting */
+ for (i = 0; i < F_LIT_MAX; i++)
+ {
+ attr_idx_feat[i] = 0;
+ char_idx_feat[i] = 0;
+ }
+ }
return TRUE;
case 'P':
case 'p':
- if (attr_idx)
+ if (attr_idx || (!(char_idx & 0x80) && char_idx)) /* Allow ATTR_DARK text */
{
/* Set the char */
*cur_attr_ptr = attr_idx;
*attr_top_ptr = MAX(0, (*cur_attr_ptr & 0x7f) - 5);
+ if (!*visual_list_ptr) *need_redraw = TRUE;
}
if (char_idx)
/* Set the char */
*cur_char_ptr = char_idx;
*char_left_ptr = MAX(0, *cur_char_ptr - 10);
+ if (!*visual_list_ptr) *need_redraw = TRUE;
}
return TRUE;
if (use_bigtile) eff_width = width / 2;
else eff_width = width;
-
+
/* Restrict direction */
if ((a == 0) && (ddy[d] < 0)) d = 0;
if ((c == 0) && (ddx[d] < 0)) d = 0;
for (i = 0; i < per_page && mon_idx[mon_top + i]; i++)
{
byte attr;
- byte a, a2;
- char c, c2;
/* Get the race index */
int r_idx = mon_idx[mon_top + i] ;
c_prt(attr, format("%d", r_idx), row + i, 60);
}
- a = r_ptr->x_attr;
- c = r_ptr->x_char;
- if (use_bigtile) bigtile_attr(&c, &a, &c2, &a2);
-
/* Display symbol */
- Term_putch(70, row + i, a, c);
+ Term_queue_bigchar(70, row + i, r_ptr->x_attr, r_ptr->x_char, 0, 0);
- /* Second byte */
- if (use_bigtile) Term_putch(70 + 1, row + i, a2, c2);
/* Display kills */
if (!(r_ptr->flags1 & RF1_UNIQUE)) put_str(format("%5d", r_ptr->r_pkills), row + i, 73);
/*
* Display known monsters.
*/
-static void do_cmd_knowledge_monsters(void)
+static void do_cmd_knowledge_monsters(bool *need_redraw)
{
int i, len, max;
int grp_cur, grp_top, old_grp_cur;
int grp_cnt, grp_idx[100];
int mon_cnt;
s16b *mon_idx;
-
+
int column = 0;
bool flag;
bool redraw;
{
Term_gotoxy(max + 3, 6 + (mon_cur - mon_top));
}
-
+
ch = inkey();
/* Do visual mode command if needed */
- if (visual_mode_command(ch, &visual_list, browser_rows-1, wid - (max + 3), &attr_top, &char_left, &r_ptr->x_attr, &r_ptr->x_char)) continue;
+ if (visual_mode_command(ch, &visual_list, browser_rows-1, wid - (max + 3), &attr_top, &char_left, &r_ptr->x_attr, &r_ptr->x_char, need_redraw)) continue;
switch (ch)
{
for (i = 0; i < per_page && object_idx[object_top + i]; i++)
{
char o_name[80];
- byte a, a2;
- char c, c2;
+ byte a, c;
/* Get the object index */
int k_idx = object_idx[object_top + i];
a = TERM_DARK;
}
- if (use_bigtile) bigtile_attr(&c, &a, &c2, &a2);
-
/* Display symbol */
- Term_putch(76, row + i, a, c);
-
- /* Second byte */
- if (use_bigtile) Term_putch(76 + 1, row + i, a2, c2);
+ Term_queue_bigchar(76, row + i, a, c, 0, 0);
}
/* Clear remaining lines */
/*
* Display known objects
*/
-static void do_cmd_knowledge_objects(void)
+static void do_cmd_knowledge_objects(bool *need_redraw)
{
int i, len, max;
int grp_cur, grp_top, old_grp_cur;
/* Prompt */
#ifdef JP
- prt(format("<Êý¸þ>, 'r'¤Ç»×¤¤½Ð¤ò¸«¤ë%s%s, ESC", k_ptr->flavor ? "" : visual_list ? ", ENTER¤Ç·èÄê" : ", 'v'¤Ç¥·¥ó¥Ü¥ëÊѹ¹", (attr_idx||char_idx) ? ", 'c', 'p'¤Ç¥Ú¡¼¥¹¥È" : ", 'c'¤Ç¥³¥Ô¡¼"), hgt - 1, 0);
+ prt(format("<Êý¸þ>, 'r'¤Ç¾ÜºÙ¤ò¸«¤ë%s%s, ESC", k_ptr->flavor ? "" : visual_list ? ", ENTER¤Ç·èÄê" : ", 'v'¤Ç¥·¥ó¥Ü¥ëÊѹ¹", (attr_idx||char_idx) ? ", 'c', 'p'¤Ç¥Ú¡¼¥¹¥È" : ", 'c'¤Ç¥³¥Ô¡¼"), hgt - 1, 0);
#else
prt(format("<dir>, 'r' to recall%s%s, ESC", k_ptr->flavor ? "" : visual_list ? ", ENTER to accept" : ", 'v' for visuals", (attr_idx||char_idx) ? ", 'c', 'p' to paste" : ", 'c' to copy"), hgt - 1, 0);
#endif
{
Term_gotoxy(max + 3, 6 + (object_cur - object_top));
}
-
+
ch = inkey();
/* Do visual mode command if needed */
/* Symbol of objects with flavor cannot be changed */
- if (!k_ptr->flavor && visual_mode_command(ch, &visual_list, browser_rows-1, wid - (max + 3), &attr_top, &char_left, &k_ptr->x_attr, &k_ptr->x_char)) continue;
+ if (!k_ptr->flavor && visual_mode_command(ch, &visual_list, browser_rows-1, wid - (max + 3), &attr_top, &char_left, &k_ptr->x_attr, &k_ptr->x_char, need_redraw)) continue;
switch (ch)
{
}
-
/*
* Display the features in a group.
*/
static void display_feature_list(int col, int row, int per_page, int *feat_idx,
- int feat_cur, int feat_top)
+ int feat_cur, int feat_top, int lighting_level)
{
int i;
+ int col2 = 67;
+ int col3 = 69;
+ int col4 = 71;
+
+ /* Correct columns 1 and 4 */
+ if (use_bigtile)
+ {
+ col2++; col3 += 2; col4 += 3;
+ }
/* Display lines until done */
for (i = 0; i < per_page && feat_idx[feat_top + i]; i++)
{
- byte a, a2;
- char c, c2;
byte attr;
/* Get the index */
/* Hack -- visual_list mode */
if (per_page == 1)
{
- c_prt(attr, format("%02x/%02x", f_ptr->x_attr, f_ptr->x_char), row + i, 60);
+ /* Display lighting level */
+ c_prt(attr, format("(%s)", lighting_level_str[lighting_level]), row + i, col + 1 + strlen(f_name + f_ptr->name));
+
+ c_prt(attr, format("%02x/%02x", f_ptr->x_attr[lighting_level], f_ptr->x_char[lighting_level]), row + i, 56);
}
- a = f_ptr->x_attr;
- c = f_ptr->x_char;
+ /* Display symbol */
+ Term_queue_bigchar(65, row + i, f_ptr->x_attr[F_LIT_STANDARD], f_ptr->x_char[F_LIT_STANDARD], 0, 0);
- if (use_bigtile) bigtile_attr(&c, &a, &c2, &a2);
+ Term_putch(col2, row + i, TERM_SLATE, '(');
+ Term_putch(col3, row + i, TERM_SLATE, '/');
+ Term_putch(col4, row + i, TERM_SLATE, '/');
+ Term_putch(col4 + (use_bigtile ? 3 : 2), row + i, TERM_SLATE, ')');
- /* Display symbol */
- Term_putch(68, row + i, a, c);
+ /* Mega-hack */
+
+ /* Use lightened colour */
+ Term_queue_bigchar(col2 + 1, row + i, f_ptr->x_attr[F_LIT_LITE], f_ptr->x_char[F_LIT_LITE], 0, 0);
+
+ /* Use darkened colour */
+ Term_queue_bigchar(col3 + 1, row + i, f_ptr->x_attr[F_LIT_DARK], f_ptr->x_char[F_LIT_DARK], 0, 0);
- /* Second byte */
- if (use_bigtile) Term_putch(68 + 1, row + i, a2, c2);
+ /* Use darkly darkened colour */
+ Term_queue_bigchar(col4 + 1, row + i, f_ptr->x_attr[F_LIT_DARKDARK], f_ptr->x_char[F_LIT_DARKDARK], 0, 0);
}
/* Clear remaining lines */
/*
* Interact with feature visuals.
*/
-static void do_cmd_knowledge_features(void)
+static void do_cmd_knowledge_features(bool *need_redraw)
{
int i, len, max;
int grp_cur, grp_top, old_grp_cur;
int grp_cnt, grp_idx[100];
int feat_cnt;
int *feat_idx;
-
+
int column = 0;
bool flag;
bool redraw;
int browser_rows;
int wid, hgt;
+ byte attr_old[F_LIT_MAX] = {0, 0, 0, 0};
+ byte char_old[F_LIT_MAX] = {0, 0, 0, 0};
+ byte *cur_attr_ptr, *cur_char_ptr;
+ int lighting_level = F_LIT_STANDARD;
+
/* Get size */
Term_get_size(&wid, &hgt);
if (redraw)
{
clear_from(0);
-
+
+#ifdef JP
+ prt("ɽ¼¨ - ÃÏ·Á", 2, 0);
+ prt("¥°¥ë¡¼¥×", 4, 0);
+ prt("̾Á°", 4, max + 3);
+ if (use_bigtile) prt("ʸ»ú ( l/ d/ D)", 4, 63);
+ else prt("ʸ»ú (l/d/D)", 4, 62);
+#else
prt("Visuals - features", 2, 0);
prt("Group", 4, 0);
prt("Name", 4, max + 3);
- prt("Sym", 4, 67);
+ if (use_bigtile) prt("Sym ( l/ d/ D)", 4, 64);
+ else prt("Sym (l/d/D)", 4, 63);
+#endif
for (i = 0; i < 78; i++)
{
if (!visual_list)
{
/* Display a list of features in the current group */
- display_feature_list(max + 3, 6, browser_rows, feat_idx, feat_cur, feat_top);
+ display_feature_list(max + 3, 6, browser_rows, feat_idx, feat_cur, feat_top, F_LIT_STANDARD);
}
else
{
feat_top = feat_cur;
/* Display a list of features in the current group */
- display_feature_list(max + 3, 6, 1, feat_idx, feat_cur, feat_top);
+ display_feature_list(max + 3, 6, 1, feat_idx, feat_cur, feat_top, lighting_level);
/* Display visual list below first object */
display_visual_list(max + 3, 7, browser_rows-1, wid - (max + 3), attr_top, char_left);
/* Prompt */
#ifdef JP
- prt(format("<Êý¸þ>%s%s, ESC", visual_list ? ", ENTER¤Ç·èÄê" : ", 'v'¤Ç¥·¥ó¥Ü¥ëÊѹ¹", (attr_idx||char_idx) ? ", 'c', 'p'¤Ç¥Ú¡¼¥¹¥È" : ", 'c'¤Ç¥³¥Ô¡¼"), hgt - 1, 0);
+ prt(format("<Êý¸þ>%s%s, ESC", visual_list ? ", ENTER¤Ç·èÄê, 'a'¤ÇÂоÝÌÀÅÙÊѹ¹" : ", 'v'¤Ç¥·¥ó¥Ü¥ëÊѹ¹", (attr_idx||char_idx) ? ", 'c', 'p'¤Ç¥Ú¡¼¥¹¥È" : ", 'c'¤Ç¥³¥Ô¡¼"), hgt - 1, 0);
#else
- prt(format("<dir>%s%s, ESC", visual_list ? ", ENTER to accept" : ", 'v' for visuals", (attr_idx||char_idx) ? ", 'c', 'p' to paste" : ", 'c' to copy"), hgt - 1, 0);
+ prt(format("<dir>%s%s, ESC", visual_list ? ", ENTER to accept, 'a' for lighting level" : ", 'v' for visuals", (attr_idx||char_idx) ? ", 'c', 'p' to paste" : ", 'c' to copy"), hgt - 1, 0);
#endif
/* Get the current feature */
f_ptr = &f_info[feat_idx[feat_cur]];
+ cur_attr_ptr = &f_ptr->x_attr[lighting_level];
+ cur_char_ptr = &f_ptr->x_char[lighting_level];
if (visual_list)
{
- place_visual_list_cursor(max + 3, 7, f_ptr->x_attr, f_ptr->x_char, attr_top, char_left);
+ place_visual_list_cursor(max + 3, 7, *cur_attr_ptr, *cur_char_ptr, attr_top, char_left);
}
else if (!column)
{
{
Term_gotoxy(max + 3, 6 + (feat_cur - feat_top));
}
-
+
ch = inkey();
+ if ((ch == 'A') && visual_list)
+ {
+ if (lighting_level <= F_LIT_STANDARD) lighting_level = F_LIT_DARKDARK;
+ else lighting_level--;
+ attr_top = MAX(0, (f_ptr->x_attr[lighting_level] & 0x7f) - 5);
+ char_left = MAX(0, f_ptr->x_char[lighting_level] - 10);
+ continue;
+ }
+
+ else if ((ch == 'a') && visual_list)
+ {
+ if (lighting_level >= F_LIT_DARKDARK) lighting_level = F_LIT_STANDARD;
+ else lighting_level++;
+ attr_top = MAX(0, (f_ptr->x_attr[lighting_level] & 0x7f) - 5);
+ char_left = MAX(0, f_ptr->x_char[lighting_level] - 10);
+ continue;
+ }
+
/* Do visual mode command if needed */
- if (visual_mode_command(ch, &visual_list, browser_rows-1, wid - (max + 3), &attr_top, &char_left, &f_ptr->x_attr, &f_ptr->x_char)) continue;
+ else if (visual_mode_command(ch, &visual_list, browser_rows-1, wid - (max + 3), &attr_top, &char_left, cur_attr_ptr, cur_char_ptr, need_redraw))
+ {
+ switch (ch)
+ {
+ /* Restore previous visual settings */
+ case ESCAPE:
+ for (i = 0; i < F_LIT_MAX; i++)
+ {
+ f_ptr->x_attr[i] = attr_old[i];
+ f_ptr->x_char[i] = char_old[i];
+ }
+
+ /* Fall through */
+
+ case '\n':
+ case '\r':
+ lighting_level = F_LIT_STANDARD;
+ break;
+
+ /* Preserve current visual settings */
+ case 'V':
+ case 'v':
+ for (i = 0; i < F_LIT_MAX; i++)
+ {
+ attr_old[i] = f_ptr->x_attr[i];
+ char_old[i] = f_ptr->x_char[i];
+ }
+ lighting_level = F_LIT_STANDARD;
+ break;
+
+ case 'C':
+ case 'c':
+ if (!visual_list)
+ {
+ for (i = 0; i < F_LIT_MAX; i++)
+ {
+ attr_idx_feat[i] = f_ptr->x_attr[i];
+ char_idx_feat[i] = f_ptr->x_char[i];
+ }
+ }
+ break;
+
+ case 'P':
+ case 'p':
+ if (!visual_list)
+ {
+ /* Allow ATTR_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];
+ if (char_idx_feat[i]) f_ptr->x_char[i] = char_idx_feat[i];
+ }
+ }
+ break;
+ }
+ continue;
+ }
switch (ch)
{
{
#ifdef JP
if ((i % 12) == 0) fprintf(fff, "\n ( %d ¥Ú¡¼¥¸ )\n", x++);
- object_desc(o_name, &st_ptr->stock[i], TRUE, 3);
+ object_desc(o_name, &st_ptr->stock[i], 0);
if (strlen(o_name) <= 80-3)
{
fprintf(fff, "%c%s %s\n", I2A(i%12), paren, o_name);
fprintf(fff, " %.77s\n", o_name+n);
}
#else
- object_desc(o_name, &st_ptr->stock[i], TRUE, 3);
+ object_desc(o_name, &st_ptr->stock[i], 0);
fprintf(fff, "%c%s %s\n", I2A(i%12), paren, o_name);
#endif
*/
void do_cmd_knowledge(void)
{
- int i,p=0;
+ int i, p = 0;
+ bool need_redraw = FALSE;
+
/* File type is "TEXT" */
FILE_TYPE(FILE_TYPE_TEXT);
+
/* Save the screen */
screen_save();
+
/* Interact until done */
while (1)
{
/* Clear screen */
Term_clear();
+
/* Ask for a choice */
#ifdef JP
prt(format("%d/2 ¥Ú¡¼¥¸", (p+1)), 2, 65);
/* Give some choices */
#ifdef JP
- if (p == 0) {
+ if (p == 0)
+ {
prt("(1) ´ûÃΤÎÅÁÀâ¤Î¥¢¥¤¥Æ¥à ¤Î°ìÍ÷", 6, 5);
prt("(2) ´ûÃΤΥ¢¥¤¥Æ¥à ¤Î°ìÍ÷", 7, 5);
prt("(3) ´ûÃΤÎÀ¸¤¤Æ¤¤¤ë¥æ¥Ë¡¼¥¯¡¦¥â¥ó¥¹¥¿¡¼ ¤Î°ìÍ÷", 8, 5);
prt("(8) ²æ¤¬²È¤Î¥¢¥¤¥Æ¥à ¤Î°ìÍ÷", 13, 5);
prt("(9) *´ÕÄê*ºÑ¤ßÁõÈ÷¤ÎÂÑÀ ¤Î°ìÍ÷", 14, 5);
prt("(0) ÃÏ·Á¤Îɽ¼¨Ê¸»ú/¥¿¥¤¥ë ¤Î°ìÍ÷", 15, 5);
- } else {
+ }
+ else
+ {
prt("(a) ¼«Ê¬¤Ë´Ø¤¹¤ë¾ðÊó ¤Î°ìÍ÷", 6, 5);
prt("(b) ÆÍÁ³ÊÑ°Û ¤Î°ìÍ÷", 7, 5);
prt("(c) Éð´ï¤Î·Ð¸³ÃÍ ¤Î°ìÍ÷", 8, 5);
prt("(i) ¸½ºß¤Î¼«Æ°½¦¤¤/Ç˲õÀßÄê ¤Î°ìÍ÷", 14, 5);
}
#else
- if (p == 0) {
+ if (p == 0)
+ {
prt("(1) Display known artifacts", 6, 5);
prt("(2) Display known objects", 7, 5);
prt("(3) Display remaining uniques", 8, 5);
prt("(8) Display home inventory", 13, 5);
prt("(9) Display *identified* equip.", 14, 5);
prt("(0) Display terrain symbols.", 15, 5);
- } else {
+ }
+ else
+ {
prt("(a) Display about yourself", 6, 5);
prt("(b) Display mutations", 7, 5);
prt("(c) Display weapon proficiency", 8, 5);
/* Prompt */
i = inkey();
+
/* Done */
if (i == ESCAPE) break;
switch (i)
do_cmd_knowledge_artifacts();
break;
case '2': /* Objects */
- do_cmd_knowledge_objects();
+ do_cmd_knowledge_objects(&need_redraw);
break;
case '3': /* Uniques */
do_cmd_knowledge_uniques();
break;
case '4': /* Monsters */
- do_cmd_knowledge_monsters();
+ do_cmd_knowledge_monsters(&need_redraw);
break;
case '5': /* Kill count */
do_cmd_knowledge_kill_count();
do_cmd_knowledge_inven();
break;
case '0': /* Feature list */
- do_cmd_knowledge_features();
+ do_cmd_knowledge_features(&need_redraw);
break;
/* Next page */
case 'a': /* Max stat */
default: /* Unknown option */
bell();
}
+
/* Flush messages */
msg_print(NULL);
}
+
/* Restore the screen */
screen_load();
+
+ if (need_redraw) do_cmd_redraw();
}