From: mogami Date: Thu, 30 Oct 2003 02:48:40 +0000 (+0000) Subject: 新キーワード「レアな」と「ありふれた」を追加。ドラゴン装備等の特別なベースアイテムを識別する。 X-Git-Tag: v2.1.2~937 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=a4a5d3073a08c440a83961fe191f4f57ed1807f6;p=hengband%2Fhengband.git 新キーワード「レアな」と「ありふれた」を追加。ドラゴン装備等の特別なベースアイテムを識別する。 --- diff --git a/src/autopick.c b/src/autopick.c index aff1eb731..2963e7709 100644 --- a/src/autopick.c +++ b/src/autopick.c @@ -31,16 +31,18 @@ #define FLG_ARTIFACT 12 #define FLG_EGO 13 #define FLG_NAMELESS 14 -#define FLG_WANTED 15 -#define FLG_UNIQUE 16 -#define FLG_HUMAN 17 -#define FLG_UNREADABLE 18 -#define FLG_REALM1 19 -#define FLG_REALM2 20 -#define FLG_FIRST 21 -#define FLG_SECOND 22 -#define FLG_THIRD 23 -#define FLG_FOURTH 24 +#define FLG_RARE 15 +#define FLG_COMMON 16 +#define FLG_WANTED 17 +#define FLG_UNIQUE 18 +#define FLG_HUMAN 19 +#define FLG_UNREADABLE 20 +#define FLG_REALM1 21 +#define FLG_REALM2 22 +#define FLG_FIRST 23 +#define FLG_SECOND 24 +#define FLG_THIRD 25 +#define FLG_FOURTH 26 #define FLG_ITEMS 30 #define FLG_WEAPONS 31 @@ -79,6 +81,7 @@ #define KEY_COLLECTING "¼ý½¸Ãæ¤Î" #endif +#define KEY_UNAWARE "̤ȽÌÀ¤Î" #define KEY_UNIDENTIFIED "̤´ÕÄê¤Î" #define KEY_IDENTIFIED "´ÕÄêºÑ¤ß¤Î" #define KEY_STAR_IDENTIFIED "*´ÕÄê*ºÑ¤ß¤Î" @@ -91,7 +94,8 @@ #define KEY_ARTIFACT "¥¢¡¼¥Æ¥£¥Õ¥¡¥¯¥È" #define KEY_EGO "¥¨¥´" #define KEY_NAMELESS "̵ÌäÎ" -#define KEY_UNAWARE "̤ȽÌÀ¤Î" +#define KEY_RARE "¥ì¥¢¤Ê" +#define KEY_COMMON "¤¢¤ê¤Õ¤ì¤¿" #define KEY_WANTED "¾Þ¶â¼ó¤Î" #define KEY_UNIQUE "¥æ¥Ë¡¼¥¯¡¦¥â¥ó¥¹¥¿¡¼¤Î" #define KEY_HUMAN "¿Í´Ö¤Î" @@ -126,6 +130,7 @@ #define KEY_ALL "all" #define KEY_COLLECTING "collecting" +#define KEY_UNAWARE "unaware" #define KEY_UNIDENTIFIED "unidentified" #define KEY_IDENTIFIED "identified" #define KEY_STAR_IDENTIFIED "*identified*" @@ -138,7 +143,8 @@ #define KEY_ARTIFACT "artifact" #define KEY_EGO "ego" #define KEY_NAMELESS "nameless" -#define KEY_UNAWARE "unaware" +#define KEY_RARE "rare" +#define KEY_COMMON "common" #define KEY_WANTED "wanted" #define KEY_UNIQUE "unique monster's" #define KEY_HUMAN "human" @@ -288,6 +294,7 @@ static bool autopick_new_entry(autopick_type *entry, cptr str, bool allow_defaul if (MATCH_KEY(KEY_ALL)) ADD_FLG(FLG_ALL); if (MATCH_KEY(KEY_COLLECTING)) ADD_FLG(FLG_COLLECTING); + if (MATCH_KEY(KEY_UNAWARE)) ADD_FLG(FLG_UNAWARE); if (MATCH_KEY(KEY_UNIDENTIFIED)) ADD_FLG(FLG_UNIDENTIFIED); if (MATCH_KEY(KEY_IDENTIFIED)) ADD_FLG(FLG_IDENTIFIED); if (MATCH_KEY(KEY_STAR_IDENTIFIED)) ADD_FLG(FLG_STAR_IDENTIFIED); @@ -348,7 +355,8 @@ static bool autopick_new_entry(autopick_type *entry, cptr str, bool allow_defaul if (MATCH_KEY(KEY_WORTHLESS)) ADD_FLG(FLG_WORTHLESS); if (MATCH_KEY(KEY_EGO)) ADD_FLG(FLG_EGO); if (MATCH_KEY(KEY_NAMELESS)) ADD_FLG(FLG_NAMELESS); - if (MATCH_KEY(KEY_UNAWARE)) ADD_FLG(FLG_UNAWARE); + if (MATCH_KEY(KEY_RARE)) ADD_FLG(FLG_RARE); + if (MATCH_KEY(KEY_COMMON)) ADD_FLG(FLG_COMMON); if (MATCH_KEY(KEY_WANTED)) ADD_FLG(FLG_WANTED); if (MATCH_KEY(KEY_UNIQUE)) ADD_FLG(FLG_UNIQUE); if (MATCH_KEY(KEY_HUMAN)) ADD_FLG(FLG_HUMAN); @@ -480,6 +488,71 @@ static bool is_favorite(object_type *o_ptr) /* + * Rare weapons/aromors + * including Blade of Chaos, Dragon armors, etc. + */ +static bool is_rare(object_type *o_ptr) +{ + switch(o_ptr->tval) + { + case TV_HAFTED: + if (o_ptr->sval == SV_MACE_OF_DISRUPTION || + o_ptr->sval == SV_WIZSTAFF) return TRUE; + break; + + case TV_POLEARM: + if (o_ptr->sval == SV_SCYTHE_OF_SLICING || + o_ptr->sval == SV_DEATH_SCYTHE) return TRUE; + break; + + case TV_SWORD: + if (o_ptr->sval == SV_BLADE_OF_CHAOS || + o_ptr->sval == SV_DIAMOND_EDGE || + o_ptr->sval == SV_DOKUBARI || + o_ptr->sval == SV_HAYABUSA) return TRUE; + break; + + case TV_SHIELD: + if (o_ptr->sval == SV_DRAGON_SHIELD || + o_ptr->sval == SV_MIRROR_SHIELD) return TRUE; + break; + + case TV_HELM: + if (o_ptr->sval == SV_DRAGON_HELM) return TRUE; + break; + + case TV_BOOTS: + if (o_ptr->sval == SV_PAIR_OF_DRAGON_GREAVE) return TRUE; + break; + + case TV_CLOAK: + if (o_ptr->sval == SV_ELVEN_CLOAK || + o_ptr->sval == SV_ETHEREAL_CLOAK || + o_ptr->sval == SV_SHADOW_CLOAK) return TRUE; + break; + + case TV_GLOVES: + if (o_ptr->sval == SV_SET_OF_DRAGON_GLOVES) return TRUE; + break; + + case TV_SOFT_ARMOR: + if (o_ptr->sval == SV_KUROSHOUZOKU || + o_ptr->sval == SV_ABUNAI_MIZUGI) return TRUE; + break; + + case TV_DRAG_ARMOR: + return TRUE; + + default: + break; + } + + /* Any others are not "rare" objects. */ + return FALSE; +} + + +/* * Convert string to lower case */ static void str_tolower(char *str) @@ -508,8 +581,10 @@ static void autopick_entry_from_object(autopick_type *entry, object_type *o_ptr) bool name = TRUE; #ifdef JP + /* ¥¨¥´Ì䬼ÙË⤫¤â¤·¤ì¤Ê¤¤¤Î¤Ç¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¡Ö^¡×¤ÏÉÕ¤±¤Ê¤¤ */ bool bol_mark = FALSE; #else + /* We can always use the ^ mark in English */ bool bol_mark = TRUE; #endif @@ -593,10 +668,23 @@ static void autopick_entry_from_object(autopick_type *entry, object_type *o_ptr) * Register the ego type only. */ ego_item_type *e_ptr = &e_info[o_ptr->name2]; +#ifdef JP + /* ¥¨¥´ÌäˤϡÖ^¡×¥Þ¡¼¥¯¤¬»È¤¨¤ë */ + sprintf(name_str, "^%s", e_name + e_ptr->name); +#else + /* We ommit the basename and cannot use the ^ mark */ strcpy(name_str, e_name + e_ptr->name); +#endif /* Don't use the object description */ name = FALSE; + + if (TV_WEAPON_BEGIN <= o_ptr->tval && + o_ptr->tval <= TV_ARMOR_END) + { + /* Restrict to 'common' equipments */ + if (!is_rare(o_ptr)) ADD_FLG(FLG_COMMON); + } } ADD_FLG(FLG_EGO); @@ -863,10 +951,10 @@ cptr autopick_line_from_entry(autopick_type *entry) if (IS_FLG(FLG_ALL)) ADD_KEY(KEY_ALL); if (IS_FLG(FLG_COLLECTING)) ADD_KEY(KEY_COLLECTING); + if (IS_FLG(FLG_UNAWARE)) ADD_KEY(KEY_UNAWARE); if (IS_FLG(FLG_UNIDENTIFIED)) ADD_KEY(KEY_UNIDENTIFIED); if (IS_FLG(FLG_IDENTIFIED)) ADD_KEY(KEY_IDENTIFIED); if (IS_FLG(FLG_STAR_IDENTIFIED)) ADD_KEY(KEY_STAR_IDENTIFIED); - if (IS_FLG(FLG_UNAWARE)) ADD_KEY(KEY_UNAWARE); if (IS_FLG(FLG_BOOSTED)) ADD_KEY(KEY_BOOSTED); if (IS_FLG(FLG_MORE_DICE)) @@ -895,6 +983,8 @@ cptr autopick_line_from_entry(autopick_type *entry) if (IS_FLG(FLG_HUMAN)) ADD_KEY(KEY_HUMAN); if (IS_FLG(FLG_WORTHLESS)) ADD_KEY(KEY_WORTHLESS); if (IS_FLG(FLG_NAMELESS)) ADD_KEY(KEY_NAMELESS); + if (IS_FLG(FLG_RARE)) ADD_KEY(KEY_RARE); + if (IS_FLG(FLG_COMMON)) ADD_KEY(KEY_COMMON); if (IS_FLG(FLG_EGO)) ADD_KEY(KEY_EGO); if (IS_FLG(FLG_ARTIFACT)) ADD_KEY(KEY_ARTIFACT); @@ -986,6 +1076,10 @@ static bool is_autopick_aux(object_type *o_ptr, autopick_type *entry, cptr o_nam int j; cptr ptr = entry->name; + /*** Unaware items ***/ + if (IS_FLG(FLG_UNAWARE) && object_aware_p(o_ptr)) + return FALSE; + /*** Unidentified ***/ if (IS_FLG(FLG_UNIDENTIFIED) && (object_known_p(o_ptr) || (o_ptr->ident & IDENT_SENSE))) @@ -1112,8 +1206,12 @@ static bool is_autopick_aux(object_type *o_ptr, autopick_type *entry, cptr o_nam } } - /*** Unaware items ***/ - if (IS_FLG(FLG_UNAWARE) && object_aware_p(o_ptr)) + /*** Rere equpiments ***/ + if (IS_FLG(FLG_RARE) && !is_rare(o_ptr)) + return FALSE; + + /*** Common equpiments ***/ + if (IS_FLG(FLG_COMMON) && is_rare(o_ptr)) return FALSE; /*** Wanted monster's corpse/skeletons ***/ @@ -2084,6 +2182,10 @@ static void describe_autopick(char *buff, autopick_type *entry) if (IS_FLG(FLG_COLLECTING)) before_str[before_n++] = "¼ý½¸Ãæ¤Ç´û¤Ë»ý¤Ã¤Æ¤¤¤ë¥¹¥í¥Ã¥È¤Ë¤Þ¤È¤á¤é¤ì¤ë"; + /*** Unaware items ***/ + if (IS_FLG(FLG_UNAWARE)) + before_str[before_n++] = "̤´ÕÄê¤Ç¤½¤Î¸ú²Ì¤âȽÌÀ¤·¤Æ¤¤¤Ê¤¤"; + /*** Unidentified ***/ if (IS_FLG(FLG_UNIDENTIFIED)) before_str[before_n++] = "̤´ÕÄê¤Î"; @@ -2151,9 +2253,19 @@ static void describe_autopick(char *buff, autopick_type *entry) body_str = "ÁõÈ÷"; } - /*** Unaware items ***/ - if (IS_FLG(FLG_UNAWARE)) - before_str[before_n++] = "̤´ÕÄê¤Ç¤½¤Î¸ú²Ì¤âȽÌÀ¤·¤Æ¤¤¤Ê¤¤"; + /*** Rare equpiments ***/ + if (IS_FLG(FLG_RARE)) + { + before_str[before_n++] = "¥É¥é¥´¥óÁõÈ÷¤ä¥«¥ª¥¹¡¦¥Ö¥ì¡¼¥ÉÅù¤ò´Þ¤àÄÁ¤·¤¤"; + body_str = "ÁõÈ÷"; + } + + /*** Common equpiments ***/ + if (IS_FLG(FLG_COMMON)) + { + before_str[before_n++] = "¤¢¤ê¤Õ¤ì¤¿(¥É¥é¥´¥óÁõÈ÷¤ä¥«¥ª¥¹¡¦¥Ö¥ì¡¼¥ÉÅù¤ÎÄÁ¤·¤¤Êª¤Ç¤Ï¤Ê¤¤)"; + body_str = "ÁõÈ÷"; + } /*** Wanted monster's corpse/skeletons ***/ if (IS_FLG(FLG_WANTED)) @@ -2340,6 +2452,13 @@ static void describe_autopick(char *buff, autopick_type *entry) if (IS_FLG(FLG_COLLECTING)) which_str[which_n++] = "can be absorbed into an existing inventory slot"; + /*** Unaware items ***/ + if (IS_FLG(FLG_UNAWARE)) + { + before_str[before_n++] = "unidentified"; + whose_str[whose_n++] = "basic abilities are not known"; + } + /*** Unidentified ***/ if (IS_FLG(FLG_UNIDENTIFIED)) before_str[before_n++] = "unidentified"; @@ -2352,6 +2471,22 @@ static void describe_autopick(char *buff, autopick_type *entry) if (IS_FLG(FLG_STAR_IDENTIFIED)) before_str[before_n++] = "fully identified"; + /*** Rare equpiments ***/ + if (IS_FLG(FLG_RARE)) + { + before_str[before_n++] = "very rare"; + body_str = "equipments"; + after_str[after_n++] = "such like Dragon armors, Blades of Chaos, etc."; + } + + /*** Common equpiments ***/ + if (IS_FLG(FLG_COMMON)) + { + before_str[before_n++] = "relatively common"; + body_str = "equipments"; + after_str[after_n++] = "compared to very rare Dragon armors, Blades of Chaos, etc."; + } + /*** Worthless items ***/ if (IS_FLG(FLG_WORTHLESS)) { @@ -2378,13 +2513,6 @@ static void describe_autopick(char *buff, autopick_type *entry) which_str[which_n++] = "is neither ego-item nor artifact"; } - /*** Unaware items ***/ - if (IS_FLG(FLG_UNAWARE)) - { - before_str[before_n++] = "unidentified"; - whose_str[whose_n++] = "basic abilities are not known"; - } - /*** Dice boosted (weapon of slaying) ***/ if (IS_FLG(FLG_BOOSTED)) { @@ -2826,6 +2954,14 @@ static void toggle_keyword(text_body_type *tb, int flg) REM_FLG(i); } + /* You can use only one flag in rare/common */ + else if (FLG_RARE <= flg && flg <= FLG_COMMON) + { + int i; + for (i = FLG_RARE; i <= FLG_COMMON; i++) + REM_FLG(i); + } + if (add) ADD_FLG(flg); else REM_FLG(flg); @@ -3613,33 +3749,35 @@ static void search_for_string(text_body_type *tb, cptr search_str, bool forward) #define EC_OK_ARTIFACT 47 #define EC_OK_EGO 48 #define EC_OK_NAMELESS 49 -#define EC_OK_WANTED 50 -#define EC_OK_UNIQUE 51 -#define EC_OK_HUMAN 52 -#define EC_OK_UNREADABLE 53 -#define EC_OK_REALM1 54 -#define EC_OK_REALM2 55 -#define EC_OK_FIRST 56 -#define EC_OK_SECOND 57 -#define EC_OK_THIRD 58 -#define EC_OK_FOURTH 59 -#define EC_KK_WEAPONS 60 -#define EC_KK_FAVORITE 61 -#define EC_KK_ARMORS 62 -#define EC_KK_MISSILES 63 -#define EC_KK_DEVICES 64 -#define EC_KK_LIGHTS 65 -#define EC_KK_JUNKS 66 -#define EC_KK_SPELLBOOKS 67 -#define EC_KK_SHIELDS 68 -#define EC_KK_BOWS 69 -#define EC_KK_RINGS 70 -#define EC_KK_AMULETS 71 -#define EC_KK_SUITS 72 -#define EC_KK_CLOAKS 73 -#define EC_KK_HELMS 74 -#define EC_KK_GLOVES 75 -#define EC_KK_BOOTS 76 +#define EC_OK_RARE 50 +#define EC_OK_COMMON 51 +#define EC_OK_WANTED 52 +#define EC_OK_UNIQUE 53 +#define EC_OK_HUMAN 54 +#define EC_OK_UNREADABLE 55 +#define EC_OK_REALM1 56 +#define EC_OK_REALM2 57 +#define EC_OK_FIRST 58 +#define EC_OK_SECOND 59 +#define EC_OK_THIRD 60 +#define EC_OK_FOURTH 61 +#define EC_KK_WEAPONS 62 +#define EC_KK_FAVORITE 63 +#define EC_KK_ARMORS 64 +#define EC_KK_MISSILES 65 +#define EC_KK_DEVICES 66 +#define EC_KK_LIGHTS 67 +#define EC_KK_JUNKS 68 +#define EC_KK_SPELLBOOKS 69 +#define EC_KK_SHIELDS 70 +#define EC_KK_BOWS 71 +#define EC_KK_RINGS 72 +#define EC_KK_AMULETS 73 +#define EC_KK_SUITS 74 +#define EC_KK_CLOAKS 75 +#define EC_KK_HELMS 76 +#define EC_KK_GLOVES 77 +#define EC_KK_BOOTS 78 /* Manu names */ @@ -3711,6 +3849,8 @@ static void search_for_string(text_body_type *tb, cptr search_str, bool forward) #define MN_ARTIFACT "¥¢¡¼¥Æ¥£¥Õ¥¡¥¯¥È (ÁõÈ÷)" #define MN_EGO "¥¨¥´ (ÁõÈ÷)" #define MN_NAMELESS "̵ÌäΠ(ÁõÈ÷)" +#define MN_RARE "¥ì¥¢¤Ê (ÁõÈ÷)" +#define MN_COMMON "¤¢¤ê¤Õ¤ì¤¿ (ÁõÈ÷)" #define MN_WANTED "¾Þ¶â¼ó¤Î (»àÂÎ)" #define MN_UNIQUE "¥æ¥Ë¡¼¥¯¡¦¥â¥ó¥¹¥¿¡¼¤Î (»àÂÎ)" #define MN_HUMAN "¿Í´Ö¤Î (»àÂÎ)" @@ -3784,6 +3924,8 @@ static void search_for_string(text_body_type *tb, cptr search_str, bool forward) #define MN_ARTIFACT "artifact (equipments)" #define MN_EGO "ego (equipments)" #define MN_NAMELESS "nameless (equipments)" +#define MN_RARE "rare (equipments)" +#define MN_COMMON "common (equipments)" #define MN_WANTED "wanted (corpse)" #define MN_UNIQUE "unique (corpse)" #define MN_HUMAN "human (corpse)" @@ -3867,6 +4009,8 @@ command_menu_type menu_data[] = {MN_ARTIFACT, 1, -1, EC_OK_ARTIFACT}, {MN_EGO, 1, -1, EC_OK_EGO}, {MN_NAMELESS, 1, -1, EC_OK_NAMELESS}, + {MN_RARE, 1, -1, EC_OK_RARE}, + {MN_COMMON, 1, -1, EC_OK_COMMON}, {MN_WANTED, 1, -1, EC_OK_WANTED}, {MN_UNIQUE, 1, -1, EC_OK_UNIQUE}, {MN_HUMAN, 1, -1, EC_OK_HUMAN}, @@ -5536,6 +5680,8 @@ static bool do_editor_command(text_body_type *tb, int com_id) case EC_OK_ARTIFACT: toggle_keyword(tb, FLG_ARTIFACT); break; case EC_OK_EGO: toggle_keyword(tb, FLG_EGO); break; case EC_OK_NAMELESS: toggle_keyword(tb, FLG_NAMELESS); break; + case EC_OK_RARE: toggle_keyword(tb, FLG_RARE); break; + case EC_OK_COMMON: toggle_keyword(tb, FLG_COMMON); break; case EC_OK_WANTED: toggle_keyword(tb, FLG_WANTED); break; case EC_OK_UNIQUE: toggle_keyword(tb, FLG_UNIQUE); break; case EC_OK_HUMAN: toggle_keyword(tb, FLG_HUMAN); break;