X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fcmd4.c;h=9046c15829aeb16eb538643a9f6d148f5c5ec016;hb=d259dca7f2f5d5f2ed54bc53a86ae7915fad3aec;hp=150d855a70cfc9ad9de32423682c0d0b7b555299;hpb=2176513979906ac904140156f8854442e4b9374b;p=hengband%2Fhengband.git diff --git a/src/cmd4.c b/src/cmd4.c index 150d855a7..9046c1582 100644 --- a/src/cmd4.c +++ b/src/cmd4.c @@ -3850,11 +3850,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; + + /* Prepare dummy object */ + object_prep(&forge, i); - /* Tidy name */ - strip_name(o_name, i); + /* Get un-shuffled flavor name */ + object_desc(o_name, &forge, OD_FORCE_FLAVOR); + } /* Dump a comment */ auto_dump_printf("# %s\n", o_name); @@ -4909,9 +4919,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)) { @@ -4966,20 +4973,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]); } @@ -5441,7 +5441,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 { @@ -6762,7 +6762,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 ", do_spell(spell_id_from(p_ptr->realm1, i), SPELL_NAME)); + fprintf(fff, "%-25s ", do_spell(p_ptr->realm1, i, SPELL_NAME)); if (p_ptr->realm1 == REALM_HISSATSU) fprintf(fff, "[--]"); else @@ -6797,7 +6797,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 ", do_spell(spell_id_from(p_ptr->realm2, i), SPELL_NAME)); + 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]); @@ -7947,6 +7947,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]; @@ -7958,10 +7959,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 (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 || 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); @@ -7969,22 +7992,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); @@ -8100,6 +8116,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 (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; @@ -8108,7 +8138,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 */ @@ -8126,7 +8156,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) { @@ -8205,17 +8235,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 (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 @@ -8238,7 +8279,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) { @@ -8252,8 +8293,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) {