X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fcmd4.c;h=3431bcc44e9312ef772bceb36c07f96ae0b686d4;hb=d4c22ad2492db99d16fbcf2068d78922166c252a;hp=26ab72499f61877c1bfab28402b943f527ad3a36;hpb=ea71f815d22033f1c3393c91d780a0163ab29477;p=hengband%2Fhengband.git diff --git a/src/cmd4.c b/src/cmd4.c index 26ab72499..3431bcc44 100644 --- a/src/cmd4.c +++ b/src/cmd4.c @@ -386,7 +386,7 @@ errr do_cmd_write_nikki(int type, int num, cptr note) p_ptr->inside_quest = (quest[num].type == QUEST_TYPE_RANDOM) ? 0 : num; /* Get the quest text */ - init_flags = INIT_ASSIGN; + init_flags = INIT_NAME_ONLY; process_dungeon_file("q_info.txt", 0, 0, 0, 0); @@ -461,9 +461,11 @@ errr do_cmd_write_nikki(int type, int num, cptr note) case NIKKI_HIGAWARI: { #ifdef JP - fprintf(fff, "%dÆüÌÜ\n",day); + if (day < MAX_DAYS) fprintf(fff, "%dÆüÌÜ\n", day); + else fputs("*****ÆüÌÜ\n", fff); #else - fprintf(fff, "Day %d\n",day); + if (day < MAX_DAYS) fprintf(fff, "Day %d\n", day); + else fputs("Day *****\n", fff); #endif do_level = FALSE; break; @@ -524,7 +526,7 @@ errr do_cmd_write_nikki(int type, int num, cptr note) #ifdef JP fprintf(fff, " %2d:%02d %20s ¥é¥ó¥À¥à¥¯¥¨¥¹¥È(%s)¤òãÀ®¤·¤¿¡£\n", hour, min, note_level, name); #else - fprintf(fff, " %2d:%02d %20s completed randome quest '%s'\n", hour, min, note_level, name); + fprintf(fff, " %2d:%02d %20s completed random quest '%s'\n", hour, min, note_level, name); #endif break; } @@ -749,62 +751,111 @@ errr do_cmd_write_nikki(int type, int num, cptr note) fprintf(fff, " %2d:%02d %20s ", hour, min, note_level); switch (num) { - case 0: + case RECORD_NAMED_PET_NAME: #ifdef JP fprintf(fff, "%s¤òι¤Îͧ¤Ë¤¹¤ë¤³¤È¤Ë·è¤á¤¿¡£\n", note); #else fprintf(fff, "decided to travel together with %s.\n", note); #endif break; - case 1: + case RECORD_NAMED_PET_UNNAME: #ifdef JP fprintf(fff, "%s¤Î̾Á°¤ò¾Ã¤·¤¿¡£\n", note); #else fprintf(fff, "unnamed %s.\n", note); #endif break; - case 2: + case RECORD_NAMED_PET_DISMISS: #ifdef JP fprintf(fff, "%s¤ò²òÊü¤·¤¿¡£\n", note); #else fprintf(fff, "dismissed %s.\n", note); #endif break; - case 3: + case RECORD_NAMED_PET_DEATH: #ifdef JP fprintf(fff, "%s¤¬»à¤ó¤Ç¤·¤Þ¤Ã¤¿¡£\n", note); #else fprintf(fff, "%s died.\n", note); #endif break; - case 4: + case RECORD_NAMED_PET_MOVED: #ifdef JP fprintf(fff, "%s¤ò¤ª¤¤¤ÆÊ̤ΥޥåפذÜÆ°¤·¤¿¡£\n", note); #else fprintf(fff, "moved to another map leaving %s behind.\n", note); #endif break; - case 5: + case RECORD_NAMED_PET_LOST_SIGHT: #ifdef JP fprintf(fff, "%s¤È¤Ï¤°¤ì¤Æ¤·¤Þ¤Ã¤¿¡£\n", note); #else fprintf(fff, "lost sight of %s.\n", note); #endif break; - case 6: + case RECORD_NAMED_PET_DESTROY: #ifdef JP fprintf(fff, "%s¤¬*Ç˲õ*¤Ë¤è¤Ã¤Æ¾Ã¤¨µî¤Ã¤¿¡£\n", note); #else fprintf(fff, "%s was made disappeared by *destruction*.\n", note); #endif break; - case 7: + case RECORD_NAMED_PET_EARTHQUAKE: #ifdef JP fprintf(fff, "%s¤¬´äÀФ˲¡¤·ÄÙ¤µ¤ì¤¿¡£\n", note); #else fprintf(fff, "%s was crushed by falling rocks.\n", note); #endif break; + case RECORD_NAMED_PET_GENOCIDE: +#ifdef JP + fprintf(fff, "%s¤¬Ëõ»¦¤Ë¤è¤Ã¤Æ¾Ã¤¨µî¤Ã¤¿¡£\n", note); +#else + fprintf(fff, "%s was made disappeared by genocide.\n", note); +#endif + break; + case RECORD_NAMED_PET_WIZ_ZAP: +#ifdef JP + fprintf(fff, "%s¤¬¥Ç¥Ð¥Ã¥°¥³¥Þ¥ó¥É¤Ë¤è¤Ã¤Æ¾Ã¤¨µî¤Ã¤¿¡£\n", note); +#else + fprintf(fff, "%s was removed by debug command.\n", note); +#endif + break; + case RECORD_NAMED_PET_TELE_LEVEL: +#ifdef JP + fprintf(fff, "%s¤¬¥Æ¥ì¥Ý¡¼¥È¡¦¥ì¥Ù¥ë¤Ë¤è¤Ã¤Æ¾Ã¤¨µî¤Ã¤¿¡£\n", note); +#else + fprintf(fff, "%s was made disappeared by teleport level.\n", note); +#endif + break; + case RECORD_NAMED_PET_BLAST: +#ifdef JP + fprintf(fff, "%s¤òÇúÇˤ·¤¿¡£\n", note); +#else + fprintf(fff, "blasted %s.\n", note); +#endif + break; + case RECORD_NAMED_PET_HEAL_LEPER: +#ifdef JP + fprintf(fff, "%s¤Îɵ¤¤¬¼£¤ê餫¤é³°¤ì¤¿¡£\n", note); +#else + fprintf(fff, "%s was healed and left.\n", note); +#endif + break; + case RECORD_NAMED_PET_COMPACT: +#ifdef JP + fprintf(fff, "%s¤¬¥â¥ó¥¹¥¿¡¼¾ðÊ󰵽̤ˤè¤Ã¤Æ¾Ã¤¨µî¤Ã¤¿¡£\n", note); +#else + fprintf(fff, "%s was made disappeared by compacting monsters.\n", note); +#endif + break; + case RECORD_NAMED_PET_LOSE_PARENT: +#ifdef JP + fprintf(fff, "%s¤Î¾¤´­¼Ô¤¬´û¤Ë¤¤¤Ê¤¤¤¿¤á¾Ã¤¨µî¤Ã¤¿¡£\n", note); +#else + fprintf(fff, "%s disappeared because there does not exist summoner.\n", note); +#endif + break; default: fprintf(fff, "\n"); break; @@ -1039,11 +1090,15 @@ void do_cmd_nikki(void) prt("(2) ʸ¾Ï¤òµ­Ï¿¤¹¤ë", 5, 5); prt("(3) ľÁ°¤ËÆþ¼êËô¤Ï´ÕÄꤷ¤¿¤â¤Î¤òµ­Ï¿¤¹¤ë", 6, 5); prt("(4) µ­Ï¿¤ò¾Ãµî¤¹¤ë", 7, 5); + + prt("(R) ¥×¥ì¥¤Æ°²è¤òµ­Ï¿¤¹¤ë/Ãæ»ß¤¹¤ë", 9, 5); #else prt("(1) Display your record", 4, 5); prt("(2) Add record", 5, 5); prt("(3) Record item you last get/identify", 6, 5); prt("(4) Delete your record", 7, 5); + + prt("(R) Record playing movie / or stop it", 9, 5); #endif @@ -1075,6 +1130,10 @@ void do_cmd_nikki(void) case '4': do_cmd_erase_nikki(); break; + case 'r': case 'R': + screen_load(); + prepare_movie_hooks(); + return; default: /* Unknown option */ bell(); } @@ -1293,8 +1352,10 @@ void do_cmd_messages(int num_now) { int i, n; - char shower[80]; - char finder[80]; + char shower_str[81]; + char finder_str[81]; + char back_str[81]; + cptr shower = NULL; int wid, hgt; int num_lines; @@ -1305,11 +1366,10 @@ void do_cmd_messages(int num_now) num_lines = hgt - 4; /* Wipe finder */ - strcpy(finder, ""); + strcpy(finder_str, ""); /* Wipe shower */ - strcpy(shower, ""); - + strcpy(shower_str, ""); /* Total messages */ n = message_num(); @@ -1335,10 +1395,10 @@ void do_cmd_messages(int num_now) cptr msg = message_str(i+j); /* Dump the messages, bottom to top */ - c_prt((i+j < num_now ? TERM_WHITE : TERM_SLATE), msg, num_lines + 1 - j, 0); + c_prt((i + j < num_now ? TERM_WHITE : TERM_SLATE), msg, num_lines + 1 - j, 0); /* Hilite "shower" */ - if (shower[0]) + if (shower && shower[0]) { cptr str = msg; @@ -1366,13 +1426,12 @@ void do_cmd_messages(int num_now) #ifdef JP /* translation */ prt(format("°ÊÁ°¤Î¥á¥Ã¥»¡¼¥¸ %d-%d Á´Éô¤Ç(%d)", - i, i+j-1, n), 0, 0); + i, i + j - 1, n), 0, 0); #else prt(format("Message Recall (%d-%d of %d)", - i, i+j-1, n), 0, 0); + i, i + j - 1, n), 0, 0); #endif - /* Display prompt (not very informative) */ #ifdef JP prt("[ 'p' ¤Ç¹¹¤Ë¸Å¤¤¤â¤Î, 'n' ¤Ç¹¹¤Ë¿·¤·¤¤¤â¤Î, '/' ¤Ç¸¡º÷, ESC ¤ÇÃæÃÇ ]", hgt - 1, 0); @@ -1380,7 +1439,6 @@ void do_cmd_messages(int num_now) prt("[Press 'p' for older, 'n' for newer, ..., or ESCAPE]", hgt - 1, 0); #endif - /* Get a command */ skey = inkey_special(TRUE); @@ -1390,9 +1448,10 @@ void do_cmd_messages(int num_now) /* Hack -- Save the old index */ j = i; - /* Hack -- handle show */ - if (skey == '=') + switch (skey) { + /* Hack -- handle show */ + case '=': /* Prompt */ #ifdef JP prt("¶¯Ä´: ", hgt - 1, 0); @@ -1400,104 +1459,121 @@ void do_cmd_messages(int num_now) prt("Show: ", hgt - 1, 0); #endif - /* Get a "shower" string, or continue */ - if (!askfor(shower, 80)) continue; + strcpy(back_str, shower_str); + if (askfor(shower_str, 80)) + { + /* Show it */ + shower = shower_str[0] ? shower_str : NULL; + } + else strcpy(shower_str, back_str); /* Okay */ continue; - } /* Hack -- handle find */ - if (skey == '/' || skey == KTRL('s')) - { - int z; + case '/': + case KTRL('s'): + { + int z; - /* Prompt */ + /* Prompt */ #ifdef JP - prt("¸¡º÷: ", hgt - 1, 0); + prt("¸¡º÷: ", hgt - 1, 0); #else - prt("Find: ", hgt - 1, 0); + prt("Find: ", hgt - 1, 0); #endif + /* Get a "finder" string, or continue */ + strcpy(back_str, finder_str); + if (!askfor(finder_str, 80)) + { + strcpy(finder_str, back_str); + continue; + } + else if (!finder_str[0]) + { + shower = NULL; /* Stop showing */ + continue; + } - /* Get a "finder" string, or continue */ - if (!askfor(finder, 80)) continue; - - /* Show it */ - strcpy(shower, finder); + /* Show it */ + shower = finder_str; - /* Scan messages */ - for (z = i + 1; z < n; z++) - { - cptr msg = message_str(z); - - /* Search for it */ - if (my_strstr(msg, finder)) + /* Scan messages */ + for (z = i + 1; z < n; z++) { - /* New location */ - i = z; + cptr msg = message_str(z); - /* Done */ - break; + /* Search for it */ + if (my_strstr(msg, finder_str)) + { + /* New location */ + i = z; + + /* Done */ + break; + } } } - } + break; /* Recall 1 older message */ - if (skey == SKEY_TOP) - { + case SKEY_TOP: /* Go to the oldest line */ i = n - num_lines; - } + break; /* Recall 1 newer message */ - if (skey == SKEY_BOTTOM) - { + case SKEY_BOTTOM: /* Go to the newest line */ i = 0; - } + break; /* Recall 1 older message */ - if (skey == '8' || skey == SKEY_UP || skey == '\n' || skey == '\r') - { + case '8': + case SKEY_UP: + case '\n': + case '\r': /* Go older if legal */ i = MIN(i + 1, n - num_lines); - } + break; /* Recall 10 older messages */ - if (skey == '+') - { + case '+': /* Go older if legal */ i = MIN(i + 10, n - num_lines); - } + break; /* Recall 20 older messages */ - if (skey == 'p' || skey == KTRL('P') || skey == ' ' || skey == SKEY_PGUP) - { + case 'p': + case KTRL('P'): + case ' ': + case SKEY_PGUP: /* Go older if legal */ i = MIN(i + num_lines, n - num_lines); - } + break; /* Recall 20 newer messages */ - if (skey == 'n' || skey == KTRL('N') || skey == SKEY_PGDOWN) - { + case 'n': + case KTRL('N'): + case SKEY_PGDOWN: /* Go newer (if able) */ i = MAX(0, i - num_lines); - } + break; /* Recall 10 newer messages */ - if (skey == '-') - { + case '-': /* Go newer (if able) */ i = MAX(0, i - 10); - } + break; /* Recall 1 newer messages */ - if (skey == '2' || skey == SKEY_DOWN) - { + case '2': + case SKEY_DOWN: /* Go newer (if able) */ i = MAX(0, i - 1); + break; } /* Hack -- Error of some kind */ @@ -2260,6 +2336,55 @@ static void do_cmd_options_win(void) +#define OPT_NUM 15 + +static struct opts +{ + char key; + cptr name; + int row; +} +option_fields[OPT_NUM] = +{ +#ifdef JP + { '1', " ¥­¡¼ÆþÎÏ ¥ª¥×¥·¥ç¥ó", 3 }, + { '2', " ¥Þ¥Ã¥×²èÌÌ ¥ª¥×¥·¥ç¥ó", 4 }, + { '3', " ¥Æ¥­¥¹¥Èɽ¼¨ ¥ª¥×¥·¥ç¥ó", 5 }, + { '4', " ¥²¡¼¥à¥×¥ì¥¤ ¥ª¥×¥·¥ç¥ó", 6 }, + { '5', " ¹ÔÆ°Ãæ»ß´Ø·¸ ¥ª¥×¥·¥ç¥ó", 7 }, + { '6', " ´Ê°×¼«Æ°Ç˲õ ¥ª¥×¥·¥ç¥ó", 8 }, + { 'r', " ¥×¥ì¥¤µ­Ï¿ ¥ª¥×¥·¥ç¥ó", 9 }, + + { 'p', "¼«Æ°½¦¤¤¥¨¥Ç¥£¥¿", 11 }, + { 'd', " ´ðËÜ¥¦¥§¥¤¥ÈÎÌ ", 12 }, + { 'h', "Äã¥Ò¥Ã¥È¥Ý¥¤¥ó¥È", 13 }, + { 'm', " ÄãËâÎÏ¿§ïçÃÍ ", 14 }, + { 'a', " ¼«Æ°¥»¡¼¥Ö ¥ª¥×¥·¥ç¥ó", 15 }, + { 'w', "¥¦¥¤¥ó¥É¥¦¥Õ¥é¥°", 16 }, + + { 'b', " ½é´ü ¥ª¥×¥·¥ç¥ó (»²¾È¤Î¤ß)", 18 }, + { 'c', " º¾µ½ ¥ª¥×¥·¥ç¥ó", 19 }, +#else + { '1', "Input Options", 3 }, + { '2', "Map Screen Options", 4 }, + { '3', "Text Display Options", 5 }, + { '4', "Game-Play Options", 6 }, + { '5', "Disturbance Options", 7 }, + { '6', "Easy Auto-Destroyer Options", 8 }, + { 'r', "Play record Options", 9 }, + + { 'p', "Auto-picker/destroyer editor", 11 }, + { 'd', "Base Delay Factor", 12 }, + { 'h', "Hitpoint Warning", 13 }, + { 'm', "Mana Color Threshold", 14 }, + { 'a', "Autosave Options", 15 }, + { 'w', "Window Flags", 16 }, + + { 'b', "Birth Options (Browse Only)", 18 }, + { 'c', "Cheat Options", 19 }, +#endif +}; + /* * Set or unset various options. @@ -2269,8 +2394,9 @@ static void do_cmd_options_win(void) */ void do_cmd_options(void) { - int k; - + char k; + int i, d, skey; + int y = 0; /* Save the screen */ screen_save(); @@ -2278,6 +2404,11 @@ void do_cmd_options(void) /* Interact */ while (1) { + int n = OPT_NUM; + + /* Does not list cheat option when cheat option is off */ + if (!p_ptr->noscore && !allow_debug_opts) n--; + /* Clear screen */ Term_clear(); @@ -2285,87 +2416,58 @@ void do_cmd_options(void) #ifdef JP prt("[ ¥ª¥×¥·¥ç¥ó¤ÎÀßÄê ]", 1, 0); #else - prt("Options", 1, 0); + prt("TinyAngband options", 1, 0); #endif - - /* 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); - - /* Special choices */ - prt("(P) ¼«Æ°½¦¤¤¥¨¥Ç¥£¥¿", 10, 5); - prt("(D) ´ðËÜ¥¦¥§¥¤¥ÈÎÌ", 11, 5); - prt("(H) Äã¥Ò¥Ã¥È¥Ý¥¤¥ó¥È·Ù¹ð", 12, 5); - prt("(M) ÄãËâÎÏ¿§ïçÃÍ", 13, 5); - prt("(A) ¼«Æ°¥»¡¼¥Ö ¥ª¥×¥·¥ç¥ó", 14, 5); - /* Window flags */ - prt("(W) ¥¦¥¤¥ó¥É¥¦¥Õ¥é¥°", 15, 5); -#else - prt("(1) Input Options", 2, 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 */ - prt("(P) Auto-picker/destroyer editor", 10, 5); - prt("(D) Base Delay Factor", 11, 5); - prt("(H) Hitpoint Warning", 12, 5); - prt("(M) Mana Color Threshold", 13, 5); - prt("(A) Autosave Options", 14, 5); - /* Window flags */ - prt("(W) Window Flags", 15, 5); -#endif - - if (!p_ptr->wizard || !allow_debug_opts) - { - /* Birth */ -#ifdef JP - prt("(B) ½é´ü ¥ª¥×¥·¥ç¥ó (»²¾È¤Î¤ß)", 16, 5); -#else - prt("(B) Birth Options (Browse Only)", 16, 5); -#endif - } - else + while(1) { - /* Birth */ + /* Give some choices */ + for (i = 0; i < n; i++) + { + byte a = TERM_WHITE; + if (i == y) a = TERM_L_BLUE; + Term_putstr(5, option_fields[i].row, -1, a, + format("(%c) %s", toupper(option_fields[i].key), option_fields[i].name)); + } + #ifdef JP - prt("(B) ½é´ü ¥ª¥×¥·¥ç¥ó", 16, 5); + prt("<Êý¸þ>¤Ç°ÜÆ°, Enter¤Ç·èÄê, ESC¤Ç¥­¥ã¥ó¥»¥ë, ?¤Ç¥Ø¥ë¥×: ", 21, 0); #else - prt("(B) Birth Options", 16, 5); + prt("Move to , Select to Enter, Cancel to ESC, ? to help: ", 21, 0); #endif - } + /* Get command */ + skey = inkey_special(TRUE); + if (!(skey & SKEY_MASK)) k = (char)skey; + else k = 0; - if (p_ptr->noscore || allow_debug_opts) - { - /* Cheating */ -#ifdef JP - prt("(C) º¾µ½ ¥ª¥×¥·¥ç¥ó", 17, 5); -#else - prt("(C) Cheating Options", 17, 5); -#endif - } + /* Exit */ + if (k == ESCAPE) break; + if (my_strchr("\n\r ", k)) + { + k = option_fields[y].key; + break; + } - /* Prompt */ -#ifdef JP - prt("¥³¥Þ¥ó¥É:", 19, 0); -#else - prt("Command: ", 19, 0); -#endif + for (i = 0; i < n; i++) + { + if (tolower(k) == option_fields[i].key) break; + } + /* Command is found */ + if (i < n) break; - /* Get command */ - k = inkey(); + /* Hack -- browse help */ + if (k == '?') break; + + /* Move cursor */ + d = 0; + if (skey == SKEY_UP) d = 8; + if (skey == SKEY_DOWN) d = 2; + y = (y + ddy[d] + n) % n; + if (!d) bell(); + } /* Exit */ if (k == ESCAPE) break; @@ -2381,7 +2483,6 @@ void do_cmd_options(void) #else do_cmd_options_aux(OPT_PAGE_INPUT, "Input Options"); #endif - break; } @@ -2393,7 +2494,6 @@ void do_cmd_options(void) #else do_cmd_options_aux(OPT_PAGE_MAPSCREEN, "Map Screen Options"); #endif - break; } @@ -2405,7 +2505,6 @@ void do_cmd_options(void) #else do_cmd_options_aux(OPT_PAGE_TEXT, "Text Display Options"); #endif - break; } @@ -2417,7 +2516,6 @@ void do_cmd_options(void) #else do_cmd_options_aux(OPT_PAGE_GAMEPLAY, "Game-Play Options"); #endif - break; } @@ -2429,7 +2527,6 @@ void do_cmd_options(void) #else do_cmd_options_aux(OPT_PAGE_DISTURBANCE, "Disturbance Options"); #endif - break; } @@ -2467,7 +2564,6 @@ void do_cmd_options(void) #else do_cmd_options_aux(OPT_PAGE_BIRTH, (!p_ptr->wizard || !allow_debug_opts) ? "Birth Options(browse only)" : "Birth Options((*)s effect score)"); #endif - break; } @@ -2487,7 +2583,6 @@ void do_cmd_options(void) #else do_cmd_options_cheat("Cheaters never win"); #endif - break; } @@ -2499,7 +2594,6 @@ void do_cmd_options(void) #else do_cmd_options_autosave("Autosave"); #endif - break; } @@ -2511,8 +2605,9 @@ void do_cmd_options(void) do_cmd_options_win(); p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_SPELL | PW_PLAYER | PW_MESSAGE | PW_OVERHEAD | - PW_MONSTER | PW_OBJECT | PW_SNAPSHOT | - PW_BORG_1 | PW_BORG_2 | PW_DUNGEON); + PW_MONSTER | PW_OBJECT | PW_SNAPSHOT | + PW_BORG_1 | PW_BORG_2 | PW_DUNGEON | + PW_MONSTER_LIST); break; } @@ -2529,13 +2624,13 @@ void do_cmd_options(void) case 'd': { /* Prompt */ + clear_from(18); #ifdef JP prt("¥³¥Þ¥ó¥É: ´ðËÜ¥¦¥§¥¤¥ÈÎÌ", 19, 0); #else prt("Command: Base Delay Factor", 19, 0); #endif - /* Get a new value */ while (1) { @@ -2577,13 +2672,13 @@ void do_cmd_options(void) case 'h': { /* Prompt */ + clear_from(18); #ifdef JP prt("¥³¥Þ¥ó¥É: Äã¥Ò¥Ã¥È¥Ý¥¤¥ó¥È·Ù¹ð", 19, 0); #else prt("Command: Hitpoint Warning", 19, 0); #endif - /* Get a new value */ while (1) { @@ -2624,13 +2719,13 @@ void do_cmd_options(void) case 'm': { /* Prompt */ + clear_from(18); #ifdef JP prt("¥³¥Þ¥ó¥É: ÄãËâÎÏ¿§ïçÃÍ", 19, 0); #else prt("Command: Mana Color Threshold", 19, 0); #endif - /* Get a new value */ while (1) { @@ -3008,7 +3103,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 @@ -3089,7 +3184,7 @@ void do_cmd_macros(void) /* Default filename */ - sprintf(tmp, "%s.prf", player_name); + sprintf(tmp, "%s.prf", player_base); /* Ask for a file */ if (!askfor(tmp, 80)) continue; @@ -3145,7 +3240,7 @@ void do_cmd_macros(void) /* Default filename */ - sprintf(tmp, "%s.prf", player_name); + sprintf(tmp, "%s.prf", player_base); /* Ask for a file */ if (!askfor(tmp, 80)) continue; @@ -3339,7 +3434,7 @@ void do_cmd_macros(void) /* Default filename */ - sprintf(tmp, "%s.prf", player_name); + sprintf(tmp, "%s.prf", player_base); /* Ask for a file */ if (!askfor(tmp, 80)) continue; @@ -3580,12 +3675,10 @@ static cptr lighting_level_str[F_LIT_MAX] = "ɸ½à¿§", "ÌÀ¿§", "°Å¿§", - "°Å°Å¿§", #else "standard", "brightly lit", "darkened", - "darkly darkened", #endif }; @@ -3617,7 +3710,7 @@ static bool cmd_visuals_aux(int i, int *num, int max) static void print_visuals_menu(cptr choice_msg) { #ifdef JP - prt("²èÌÌɽ¼¨¤ÎÀßÄê", 1, 0); + prt("[ ²èÌÌɽ¼¨¤ÎÀßÄê ]", 1, 0); #else prt("Interact with Visuals", 1, 0); #endif @@ -3725,7 +3818,7 @@ void do_cmd_visuals(void) #endif /* Default filename */ - sprintf(tmp, "%s.prf", player_name); + sprintf(tmp, "%s.prf", player_base); /* Query */ if (!askfor(tmp, 70)) continue; @@ -3758,7 +3851,7 @@ void do_cmd_visuals(void) #endif /* Default filename */ - sprintf(tmp, "%s.prf", player_name); + sprintf(tmp, "%s.prf", player_base); /* Get a filename */ if (!askfor(tmp, 70)) continue; @@ -3777,7 +3870,7 @@ void do_cmd_visuals(void) #endif /* Dump monsters */ - for (i = 1; i < max_r_idx; i++) + for (i = 0; i < max_r_idx; i++) { monster_race *r_ptr = &r_info[i]; @@ -3825,7 +3918,7 @@ void do_cmd_visuals(void) #endif /* Default filename */ - sprintf(tmp, "%s.prf", player_name); + sprintf(tmp, "%s.prf", player_base); /* Get a filename */ if (!askfor(tmp, 70)) continue; @@ -3844,7 +3937,7 @@ void do_cmd_visuals(void) #endif /* Dump objects */ - for (i = 1; i < max_k_idx; i++) + for (i = 0; i < max_k_idx; i++) { char o_name[80]; object_kind *k_ptr = &k_info[i]; @@ -3852,11 +3945,21 @@ void do_cmd_visuals(void) /* Skip non-entries */ if (!k_ptr->name) continue; - /* Skip entries with flavor */ - if (k_ptr->flavor) continue; + if (!k_ptr->flavor) + { + /* Tidy name */ + strip_name(o_name, i); + } + else + { + object_type forge; - /* Tidy name */ - strip_name(o_name, i); + /* Prepare dummy object */ + object_prep(&forge, i); + + /* Get un-shuffled flavor name */ + object_desc(o_name, &forge, OD_FORCE_FLAVOR); + } /* Dump a comment */ auto_dump_printf("# %s\n", o_name); @@ -3899,7 +4002,7 @@ void do_cmd_visuals(void) #endif /* Default filename */ - sprintf(tmp, "%s.prf", player_name); + sprintf(tmp, "%s.prf", player_base); /* Get a filename */ if (!askfor(tmp, 70)) continue; @@ -3918,7 +4021,7 @@ void do_cmd_visuals(void) #endif /* Dump features */ - for (i = 1; i < max_f_idx; i++) + for (i = 0; i < max_f_idx; i++) { feature_type *f_ptr = &f_info[i]; @@ -3932,11 +4035,10 @@ void do_cmd_visuals(void) 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:0x%02X/0x%02X:0x%02X/0x%02X:0x%02X/0x%02X\n\n", i, + auto_dump_printf("F:%d: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])); + (byte)(f_ptr->x_attr[F_LIT_DARK]), (byte)(f_ptr->x_char[F_LIT_DARK])); } /* Close */ @@ -4107,11 +4209,11 @@ void do_cmd_visuals(void) #ifdef JP Term_putstr(5, 17, -1, TERM_WHITE, format("¥¢¥¤¥Æ¥à = %d, ̾Á° = %-40.40s", - k, (k_name + k_ptr->name))); + k, k_name + (!k_ptr->flavor ? k_ptr->name : k_ptr->flavor_name))); #else Term_putstr(5, 17, -1, TERM_WHITE, format("Object = %d, Name = %-40.40s", - k, (k_name + k_ptr->name))); + k, k_name + (!k_ptr->flavor ? k_ptr->name : k_ptr->flavor_name))); #endif /* Label the Default values */ @@ -4170,7 +4272,7 @@ void do_cmd_visuals(void) break; } } - while (!k_info[k].name || k_info[k].flavor); + while (!k_info[k].name); } break; case 'a': @@ -4470,7 +4572,7 @@ void do_cmd_colors(void) /* Default file */ - sprintf(tmp, "%s.prf", player_name); + sprintf(tmp, "%s.prf", player_base); /* Query */ if (!askfor(tmp, 70)) continue; @@ -4509,7 +4611,7 @@ void do_cmd_colors(void) /* Default filename */ - sprintf(tmp, "%s.prf", player_name); + sprintf(tmp, "%s.prf", player_base); /* Get a filename */ if (!askfor(tmp, 70)) continue; @@ -4912,9 +5014,6 @@ static cptr do_cmd_feeling_text_lucky[11] = */ void do_cmd_feeling(void) { - /* Verify the feeling */ - if (feeling > 10) feeling = 10; - /* No useful feeling in quests */ if (p_ptr->inside_quest && !random_quest_number(dun_level)) { @@ -4969,20 +5068,13 @@ void do_cmd_feeling(void) } /* Display the feeling */ - if (turn - old_turn >= (150 - dun_level)*TURNS_PER_TICK || cheat_xtra) - { - if (p_ptr->muta3 & MUT3_GOOD_LUCK) msg_print(do_cmd_feeling_text_lucky[feeling]); - else { - if((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON)){ - msg_print(do_cmd_feeling_text_combat[feeling]); - }else - msg_print(do_cmd_feeling_text[feeling]); - } - } + if (p_ptr->muta3 & MUT3_GOOD_LUCK) + msg_print(do_cmd_feeling_text_lucky[p_ptr->feeling]); + else if (p_ptr->pseikaku == SEIKAKU_COMBAT || + inventory[INVEN_BOW].name1 == ART_CRIMSON) + msg_print(do_cmd_feeling_text_combat[p_ptr->feeling]); else - { - msg_print(do_cmd_feeling_text[0]); - } + msg_print(do_cmd_feeling_text[p_ptr->feeling]); } @@ -4995,6 +5087,8 @@ static cptr monster_group_text[] = #ifdef JP "¥æ¥Ë¡¼¥¯", /* "Uniques" */ "¾èÇϲÄǽ¤Ê¥â¥ó¥¹¥¿¡¼", /* "Riding" */ + "¾Þ¶â¼ó", /* "Wanted */ + "¥¢¥ó¥Ð¡¼¤Î²¦Â²", /* "Ambertite" */ "¥¢¥ê", "¥³¥¦¥â¥ê", "¥à¥«¥Ç", @@ -5054,6 +5148,8 @@ static cptr monster_group_text[] = #else "Uniques", "Ridable monsters", + "Wanted monsters", + "Ambertite", "Ant", "Bat", "Centipede", @@ -5119,10 +5215,12 @@ static cptr monster_group_text[] = * Symbols of monsters in each group. Note the "Uniques" group * is handled differently. */ -static cptr monster_group_char[] = +static cptr monster_group_char[] = { (char *) -1L, (char *) -2L, + (char *) -3L, + (char *) -4L, "a", "b", "c", @@ -5174,8 +5272,8 @@ static cptr monster_group_char[] = "X", "Y", "Z", - "$!?=&`.|/\\~[]()>", - "#", + "!$&()+./=>?[\\]`{|~", + "#%", ",", "*", "@", @@ -5228,6 +5326,13 @@ static int collect_monsters(int grp_cur, s16b mon_idx[], byte mode) /* XXX Hack -- Check if this is the "Riding" group */ bool grp_riding = (monster_group_char[grp_cur] == (char *) -2L); + /* XXX Hack -- Check if this is the "Wanted" group */ + bool grp_wanted = (monster_group_char[grp_cur] == (char *) -3L); + + /* XXX Hack -- Check if this is the "Amberite" group */ + bool grp_amberite = (monster_group_char[grp_cur] == (char *) -4L); + + /* Check every race */ for (i = 0; i < max_r_idx; i++) { @@ -5250,6 +5355,27 @@ static int collect_monsters(int grp_cur, s16b mon_idx[], byte mode) if (!(r_ptr->flags7 & RF7_RIDING)) continue; } + else if (grp_wanted) + { + bool wanted = FALSE; + int j; + for (j = 0; j < MAX_KUBI; j++) + { + if (kubi_r_idx[j] == i || kubi_r_idx[j] - 10000 == i || + (p_ptr->today_mon && p_ptr->today_mon == i)) + { + wanted = TRUE; + break; + } + } + if (!wanted) continue; + } + + else if (grp_amberite) + { + if (!(r_ptr->flags3 & RF3_AMBERITE)) continue; + } + else { /* Check for race in the group */ @@ -5305,6 +5431,7 @@ static cptr object_group_text[] = "¥´¥ß", "¶õ¤Î¥Ó¥ó", "¹ü", + "»àÂÎ", "Åá·õÎà", /* "Swords" */ "Æß´ï", /* "Blunt Weapons" */ "ĹÊÁÉð´ï", /* "Polearms" */ @@ -5323,6 +5450,7 @@ static cptr object_group_text[] = "´§", /* "Crowns" */ "¥Ö¡¼¥Ä", /* "Boots" */ "ËâË¡½ñ", + "ºâÊõ", "²¿¤«", #else "Mushrooms", @@ -5346,6 +5474,7 @@ static cptr object_group_text[] = "Junks", "Bottles", "Skeletons", + "Corpses", "Swords", "Blunt Weapons", "Polearms", @@ -5364,6 +5493,7 @@ static cptr object_group_text[] = "Crowns", "Boots", "Spellbooks", + "Treasure", "Something", #endif NULL @@ -5396,6 +5526,7 @@ static byte object_group_tval[] = TV_JUNK, TV_BOTTLE, TV_SKELETON, + TV_CORPSE, TV_SWORD, TV_HAFTED, TV_POLEARM, @@ -5414,6 +5545,7 @@ static byte object_group_tval[] = TV_CROWN, TV_BOOTS, TV_LIFE_BOOK, /* Hack -- all spellbooks */ + TV_GOLD, 0, 0, }; @@ -5444,7 +5576,7 @@ static int collect_objects(int grp_cur, int object_idx[], byte mode) if (mode & 0x02) { - if (k_ptr->flavor) continue; + /* Any objects will be displayed */ } else { @@ -5466,7 +5598,7 @@ static int collect_objects(int grp_cur, int object_idx[], byte mode) if (TV_LIFE_BOOK == group_tval) { /* Hack -- All spell books */ - if (TV_LIFE_BOOK <= k_ptr->tval && k_ptr->tval <= TV_HISSATSU_BOOK) + if (TV_LIFE_BOOK <= k_ptr->tval && k_ptr->tval <= TV_HEX_BOOK) { /* Add the object */ object_idx[object_cnt++] = i; @@ -5827,7 +5959,7 @@ static void do_cmd_knowledge_inven_aux(FILE *fff, object_type *o_ptr, int *j, by print_flag(TR_TELEPATHY); print_flag(TR_SLOW_DIGEST); print_flag(TR_REGEN); - print_flag(TR_FEATHER); + print_flag(TR_LEVITATION); fputc('\n', fff); } @@ -5990,7 +6122,7 @@ void do_cmd_save_screen_html_aux(char *filename, int message) tmpfff = my_fopen(buf, "r"); if (!tmpfff) { for (i = 0; html_head[i]; i++) - fprintf(fff, html_head[i]); + fputs(html_head[i], fff); } else { yomikomu = 0; @@ -6052,7 +6184,7 @@ void do_cmd_save_screen_html_aux(char *filename, int message) if (!tmpfff) { for (i = 0; html_foot[i]; i++) - fprintf(fff, html_foot[i]); + fputs(html_foot[i], fff); } else { rewind(tmpfff); @@ -6565,6 +6697,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) { @@ -6576,10 +6709,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 @@ -6596,9 +6738,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 */ @@ -6608,32 +6777,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 */ - if (r_ptr->flags1 & (RF1_UNIQUE)) - { - 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 */ @@ -6729,7 +6930,7 @@ static void do_cmd_knowledge_spell_exp(void) int i = 0, spell_exp, exp_level; FILE *fff; - magic_type *s_ptr; + const magic_type *s_ptr; char file_name[1024]; @@ -6765,7 +6966,7 @@ static void do_cmd_knowledge_spell_exp(void) if (s_ptr->slevel >= 99) continue; spell_exp = p_ptr->spell_exp[i]; exp_level = spell_exp_level(spell_exp); - fprintf(fff, "%-25s ", spell_names[technic2magic(p_ptr->realm1) - 1][i]); + fprintf(fff, "%-25s ", do_spell(p_ptr->realm1, i, SPELL_NAME)); if (p_ptr->realm1 == REALM_HISSATSU) fprintf(fff, "[--]"); else @@ -6800,7 +7001,7 @@ static void do_cmd_knowledge_spell_exp(void) spell_exp = p_ptr->spell_exp[i + 32]; exp_level = spell_exp_level(spell_exp); - fprintf(fff, "%-25s ", spell_names[technic2magic(p_ptr->realm2) - 1][i]); + fprintf(fff, "%-25s ", do_spell(p_ptr->realm2, i, SPELL_NAME)); if (exp_level >= EXP_LEVEL_EXPERT) fprintf(fff, "!"); else fprintf(fff, " "); fprintf(fff, "%s", exp_level_str[exp_level]); @@ -7051,7 +7252,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", @@ -7145,21 +7346,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", (long int)Total); #else - fprintf(fff,"You have defeated %lu enemies.\n\n", Total); + fprintf(fff,"You have defeated %ld %s.\n\n", (long int)Total, (Total == 1) ? "enemy" : "enemies"); #endif - } Total = 0; @@ -7204,11 +7396,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) { @@ -7238,10 +7430,10 @@ static void do_cmd_knowledge_kill_count(void) fprintf(fff,"----------------------------------------------\n"); #ifdef JP - fprintf(fff," ¹ç·×: %lu ɤ¤òÅݤ·¤¿¡£\n", Total); + fprintf(fff," ¹ç·×: %lu ÂΤòÅݤ·¤¿¡£\n", (unsigned long int)Total); #else fprintf(fff," Total: %lu creature%s killed.\n", - Total, (Total == 1 ? "" : "s")); + (unsigned long int)Total, (Total == 1 ? "" : "s")); #endif @@ -7555,7 +7747,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; @@ -7780,8 +7972,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++) @@ -7950,6 +8142,7 @@ static void display_object_list(int col, int row, int per_page, int object_idx[] { char o_name[80]; byte a, c; + object_kind *flavor_k_ptr; /* Get the object index */ int k_idx = object_idx[object_top + i]; @@ -7961,10 +8154,32 @@ static void display_object_list(int col, int row, int per_page, int object_idx[] byte attr = ((k_ptr->aware || visual_only) ? TERM_WHITE : TERM_SLATE); byte cursor = ((k_ptr->aware || visual_only) ? TERM_L_BLUE : TERM_BLUE); + + if (!visual_only && k_ptr->flavor) + { + /* Appearance of this object is shuffled */ + flavor_k_ptr = &k_info[k_ptr->flavor]; + } + else + { + /* Appearance of this object is very normal */ + flavor_k_ptr = k_ptr; + } + + + attr = ((i + object_top == object_cur) ? cursor : attr); - /* Tidy name */ - strip_name(o_name, k_idx); + if (!k_ptr->flavor || (!visual_only && k_ptr->aware)) + { + /* Tidy name */ + strip_name(o_name, k_idx); + } + else + { + /* Flavor name */ + strcpy(o_name, k_name + flavor_k_ptr->flavor_name); + } /* Display the name */ c_prt(attr, o_name, row + i, col); @@ -7972,22 +8187,15 @@ static void display_object_list(int col, int row, int per_page, int object_idx[] /* Hack -- visual_list mode */ if (per_page == 1) { - c_prt(attr, format("%02x/%02x", k_ptr->x_attr, k_ptr->x_char), row + i, (p_ptr->wizard || visual_only) ? 64 : 68); + c_prt(attr, format("%02x/%02x", flavor_k_ptr->x_attr, flavor_k_ptr->x_char), row + i, (p_ptr->wizard || visual_only) ? 64 : 68); } if (p_ptr->wizard || visual_only) { c_prt(attr, format("%d", k_idx), row + i, 70); } - a = k_ptr->flavor ? misc_to_attr[k_ptr->flavor] : k_ptr->x_attr; - c = k_ptr->flavor ? misc_to_char[k_ptr->flavor] : k_ptr->x_char; - - /* Symbol is unknown */ - if (!k_ptr->aware && !p_ptr->wizard) - { - c = ' '; - a = TERM_DARK; - } + a = flavor_k_ptr->x_attr; + c = flavor_k_ptr->x_char; /* Display symbol */ Term_queue_bigchar(use_bigtile ? 76 : 77, row + i, a, c, 0, 0); @@ -8029,7 +8237,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("ÆäËÊѤï¤Ã¤¿¤È¤³¤í¤Ï¤Ê¤¤¤è¤¦¤À¡£"); @@ -8103,6 +8311,20 @@ static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, int di } else { + object_kind *k_ptr = &k_info[direct_k_idx]; + object_kind *flavor_k_ptr; + + if (!visual_only && k_ptr->flavor) + { + /* Appearance of this object is shuffled */ + flavor_k_ptr = &k_info[k_ptr->flavor]; + } + else + { + /* Appearance of this object is very normal */ + flavor_k_ptr = k_ptr; + } + object_idx[0] = direct_k_idx; object_old = direct_k_idx; object_cnt = 1; @@ -8111,7 +8333,7 @@ static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, int di object_idx[1] = -1; (void)visual_mode_command('v', &visual_list, browser_rows - 1, wid - (max + 3), - &attr_top, &char_left, &k_info[direct_k_idx].x_attr, &k_info[direct_k_idx].x_char, need_redraw); + &attr_top, &char_left, &flavor_k_ptr->x_attr, &flavor_k_ptr->x_char, need_redraw); } /* Terminate the list */ @@ -8129,7 +8351,7 @@ static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, int di while (!flag) { char ch; - object_kind *k_ptr; + object_kind *k_ptr, *flavor_k_ptr; if (redraw) { @@ -8208,17 +8430,28 @@ static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, int di /* Get the current object */ k_ptr = &k_info[object_idx[object_cur]]; + if (!visual_only && k_ptr->flavor) + { + /* Appearance of this object is shuffled */ + flavor_k_ptr = &k_info[k_ptr->flavor]; + } + else + { + /* Appearance of this object is very normal */ + flavor_k_ptr = k_ptr; + } + /* Prompt */ #ifdef JP prt(format("<Êý¸þ>%s%s%s, ESC", (!visual_list && !visual_only) ? ", 'r'¤Ç¾ÜºÙ¤ò¸«¤ë" : "", - k_ptr->flavor ? "" : visual_list ? ", ENTER¤Ç·èÄê" : ", 'v'¤Ç¥·¥ó¥Ü¥ëÊѹ¹", + visual_list ? ", ENTER¤Ç·èÄê" : ", 'v'¤Ç¥·¥ó¥Ü¥ëÊѹ¹", (attr_idx || char_idx) ? ", 'c', 'p'¤Ç¥Ú¡¼¥¹¥È" : ", 'c'¤Ç¥³¥Ô¡¼"), hgt - 1, 0); #else prt(format("%s%s%s, ESC", (!visual_list && !visual_only) ? ", 'r' to recall" : "", - k_ptr->flavor ? "" : visual_list ? ", ENTER to accept" : ", 'v' for visuals", + visual_list ? ", ENTER to accept" : ", 'v' for visuals", (attr_idx || char_idx) ? ", 'c', 'p' to paste" : ", 'c' to copy"), hgt - 1, 0); #endif @@ -8241,7 +8474,7 @@ static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, int di if (visual_list) { - place_visual_list_cursor(max + 3, 7, k_ptr->x_attr, k_ptr->x_char, attr_top, char_left); + place_visual_list_cursor(max + 3, 7, flavor_k_ptr->x_attr, flavor_k_ptr->x_char, attr_top, char_left); } else if (!column) { @@ -8255,8 +8488,7 @@ static void do_cmd_knowledge_objects(bool *need_redraw, bool visual_only, int di 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, need_redraw)) + if (visual_mode_command(ch, &visual_list, browser_rows-1, wid - (max + 3), &attr_top, &char_left, &flavor_k_ptr->x_attr, &flavor_k_ptr->x_char, need_redraw)) { if (direct_k_idx >= 0) { @@ -8313,10 +8545,10 @@ static void display_feature_list(int col, int row, int per_page, int *feat_idx, int feat_cur, int feat_top, bool visual_only, int lighting_level) { int lit_col[F_LIT_MAX], i, j; - int f_idx_col = use_bigtile ? 59 : 62; + int f_idx_col = use_bigtile ? 62 : 64; /* Correct columns 1 and 4 */ - lit_col[F_LIT_STANDARD] = use_bigtile ? (69 - F_LIT_MAX) : 69; + lit_col[F_LIT_STANDARD] = use_bigtile ? (71 - F_LIT_MAX) : 71; for (i = F_LIT_NS_BEGIN; i < F_LIT_MAX; i++) lit_col[i] = lit_col[F_LIT_STANDARD] + 2 + (i - F_LIT_NS_BEGIN) * 2 + (use_bigtile ? i : 0); @@ -8483,13 +8715,13 @@ static void do_cmd_knowledge_features(bool *need_redraw, bool visual_only, int d prt("̾Á°", 4, max + 3); if (use_bigtile) { - if (p_ptr->wizard || visual_only) prt("Idx", 4, 59); - prt("ʸ»ú ( l/ d/ D)", 4, 63); + if (p_ptr->wizard || visual_only) prt("Idx", 4, 62); + prt("ʸ»ú ( l/ d)", 4, 66); } else { - if (p_ptr->wizard || visual_only) prt("Idx", 4, 62); - prt("ʸ»ú (l/d/D)", 4, 66); + if (p_ptr->wizard || visual_only) prt("Idx", 4, 64); + prt("ʸ»ú (l/d)", 4, 68); } #else prt("Visuals - features", 2, 0); @@ -8497,13 +8729,13 @@ static void do_cmd_knowledge_features(bool *need_redraw, bool visual_only, int d prt("Name", 4, max + 3); if (use_bigtile) { - if (p_ptr->wizard || visual_only) prt("Idx", 4, 59); - prt("Sym ( l/ d/ D)", 4, 64); + if (p_ptr->wizard || visual_only) prt("Idx", 4, 62); + prt("Sym ( l/ d)", 4, 67); } else { - if (p_ptr->wizard || visual_only) prt("Idx", 4, 62); - prt("Sym (l/d/D)", 4, 67); + if (p_ptr->wizard || visual_only) prt("Idx", 4, 64); + prt("Sym (l/d)", 4, 69); } #endif @@ -8688,7 +8920,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]; @@ -8986,7 +9218,9 @@ static void do_cmd_knowledge_quests_current(FILE *fff) for (i = 1; i < max_quests; i++) { - if ((quest[i].status == QUEST_STATUS_TAKEN) || (quest[i].status == QUEST_STATUS_COMPLETED)) + if ((quest[i].status == QUEST_STATUS_TAKEN) || + ((quest[i].status == QUEST_STATUS_STAGE_COMPLETED) && (quest[i].type == QUEST_TYPE_TOWER)) || + (quest[i].status == QUEST_STATUS_COMPLETED)) { /* Set the quest number temporary */ int old_quest = p_ptr->inside_quest; @@ -9015,7 +9249,7 @@ static void do_cmd_knowledge_quests_current(FILE *fff) { char note[80] = "\0"; - if (quest[i].status == QUEST_STATUS_TAKEN) + if (quest[i].status == QUEST_STATUS_TAKEN || quest[i].status == QUEST_STATUS_STAGE_COMPLETED) { switch (quest[i].type) { @@ -9043,19 +9277,28 @@ static void do_cmd_knowledge_quests_current(FILE *fff) break; case QUEST_TYPE_FIND_ARTIFACT: - strcpy(name, a_name + a_info[quest[i].k_idx].name); + if (quest[i].k_idx) + { + artifact_type *a_ptr = &a_info[quest[i].k_idx]; + object_type forge; + object_type *q_ptr = &forge; + int k_idx = lookup_kind(a_ptr->tval, a_ptr->sval); + object_prep(q_ptr, k_idx); + q_ptr->name1 = quest[i].k_idx; + q_ptr->ident = IDENT_STORE; + object_desc(name, q_ptr, OD_NAME_ONLY); + } #ifdef JP - sprintf(note," - %s¤ò¸«¤Ä¤±½Ð¤¹¡£", name); + sprintf(note,"\n - %s¤ò¸«¤Ä¤±½Ð¤¹¡£", name); #else - sprintf(note," - Find out %s.", name); + sprintf(note,"\n - Find out %s.", name); #endif break; - case QUEST_TYPE_FIND_EXIT: #ifdef JP - sprintf(note," - õº÷¤¹¤ë¡£"); + sprintf(note," - ½Ð¸ý¤ËÅþ㤹¤ë¡£"); #else - sprintf(note," - Search."); + sprintf(note," - Reach to Exit."); #endif break; @@ -9070,6 +9313,7 @@ static void do_cmd_knowledge_quests_current(FILE *fff) break; case QUEST_TYPE_KILL_ALL: + case QUEST_TYPE_TOWER: #ifdef JP sprintf(note," - Á´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤òÅݤ¹¡£"); #else @@ -9088,7 +9332,7 @@ static void do_cmd_knowledge_quests_current(FILE *fff) quest[i].name, quest[i].level, note); #endif - fprintf(fff, tmp_str); + fputs(tmp_str, fff); if (quest[i].status == QUEST_STATUS_COMPLETED) { @@ -9097,7 +9341,7 @@ static void do_cmd_knowledge_quests_current(FILE *fff) #else sprintf(tmp_str, " Quest Completed - Unrewarded\n"); #endif - fprintf(fff, tmp_str); + fputs(tmp_str, fff); } else { @@ -9151,7 +9395,7 @@ static void do_cmd_knowledge_quests_current(FILE *fff) } /* Print the current random quest */ - if (rand_tmp_str[0]) fprintf(fff, rand_tmp_str); + if (rand_tmp_str[0]) fputs(rand_tmp_str, fff); #ifdef JP if (!total) fprintf(fff, " ¤Ê¤·\n"); @@ -9189,7 +9433,7 @@ void do_cmd_knowledge_quests_completed(FILE *fff, int quest_num[]) p_ptr->inside_quest = q_idx; /* Get the quest */ - init_flags = INIT_ASSIGN; + init_flags = INIT_NAME_ONLY; process_dungeon_file("q_info.txt", 0, 0, 0, 0); @@ -9242,7 +9486,7 @@ void do_cmd_knowledge_quests_completed(FILE *fff, int quest_num[]) #endif } - fprintf(fff, tmp_str); + fputs(tmp_str, fff); } } #ifdef JP @@ -9281,7 +9525,7 @@ void do_cmd_knowledge_quests_failed(FILE *fff, int quest_num[]) p_ptr->inside_quest = q_idx; /* Get the quest text */ - init_flags = INIT_ASSIGN; + init_flags = INIT_NAME_ONLY; process_dungeon_file("q_info.txt", 0, 0, 0, 0); @@ -9316,7 +9560,7 @@ void do_cmd_knowledge_quests_failed(FILE *fff, int quest_num[]) quest[q_idx].name, quest[q_idx].level, quest[q_idx].complev); #endif } - fprintf(fff, tmp_str); + fputs(tmp_str, fff); } } #ifdef JP @@ -9358,7 +9602,7 @@ static void do_cmd_knowledge_quests_wiz_random(FILE *fff) sprintf(tmp_str, " %s (%d, %s)\n", quest[i].name, quest[i].level, r_name+r_info[quest[i].r_idx].name); #endif - fprintf(fff, tmp_str); + fputs(tmp_str, fff); } } #ifdef JP @@ -9867,6 +10111,7 @@ void do_cmd_time(void) char desc[1024]; char buf[1024]; + char day_buf[10]; FILE *fff; @@ -9886,14 +10131,17 @@ void do_cmd_time(void) #endif + if (day < MAX_DAYS) sprintf(day_buf, "%d", day); + else strcpy(day_buf, "*****"); + /* Message */ #ifdef JP - msg_format("%d ÆüÌÜ,»þ¹ï¤Ï%d:%02d %s¤Ç¤¹¡£", - day, (hour % 12 == 0) ? 12 : (hour % 12), + msg_format("%sÆüÌÜ, »þ¹ï¤Ï%d:%02d %s¤Ç¤¹¡£", + day_buf, (hour % 12 == 0) ? 12 : (hour % 12), min, (hour < 12) ? "AM" : "PM"); #else - msg_format("This is day %d. The time is %d:%02d %s.", - day, (hour % 12 == 0) ? 12 : (hour % 12), + msg_format("This is day %s. The time is %d:%02d %s.", + day_buf, (hour % 12 == 0) ? 12 : (hour % 12), min, (hour < 12) ? "AM" : "PM"); #endif