From: mogami Date: Sun, 9 Jun 2002 20:10:50 +0000 (+0000) Subject: 、オ、テ、ュ、ホス、タオ、ヌ、゙、ソ・ィ・ミ・ー、キ、ニ、、、ソ、ホ、ヌ コニス、タオ。」 X-Git-Tag: v2.1.2~2060 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=f2845a6fb82bf83c8a0dc5c9f47ceb4fe2c036b9;p=hengband%2Fhengband.git 、オ、テ、ュ、ホス、タオ、ヌ、゙、ソ・ィ・ミ・ー、キ、ニ、、、ソ、ホ、ヌ コニス、タオ。」 --- diff --git a/src/autopick.c b/src/autopick.c index 23aa02ad6..6ab9d7f08 100644 --- a/src/autopick.c +++ b/src/autopick.c @@ -166,7 +166,8 @@ #define ADD_FLG(FLG) (entry->flag[FLG / 32] |= (1L << (FLG % 32))) #define REM_FLG(FLG) (entry->flag[FLG / 32] &= ~(1L << (FLG % 32))) -#define ADD_FLG2(FLG) (entry->flag[FLG / 32] |= (1L << (FLG % 32)), prev_flg = FLG) +#define ADD_FLG_ADJ(FLG) (ADD_FLG(FLG), prev_flg = -1) +#define ADD_FLG_NOUN(FLG) (ADD_FLG(FLG), prev_flg = FLG) #define IS_FLG(FLG) (entry->flag[FLG / 32] & (1L << (FLG % 32))) #ifdef JP @@ -348,12 +349,12 @@ bool autopick_new_entry(autopick_type *entry, cptr str) /* Found flags */ prev_ptr = ptr = buf; prev_flg = -1; - if (MATCH_KEY(KEY_ALL)) ADD_FLG(FLG_ALL); - if (MATCH_KEY(KEY_COLLECTING)) ADD_FLG(FLG_COLLECTING); - 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); - if (MATCH_KEY(KEY_BOOSTED)) ADD_FLG(FLG_BOOSTED); + if (MATCH_KEY(KEY_ALL)) ADD_FLG_ADJ(FLG_ALL); + if (MATCH_KEY(KEY_COLLECTING)) ADD_FLG_ADJ(FLG_COLLECTING); + if (MATCH_KEY(KEY_UNIDENTIFIED)) ADD_FLG_ADJ(FLG_UNIDENTIFIED); + if (MATCH_KEY(KEY_IDENTIFIED)) ADD_FLG_ADJ(FLG_IDENTIFIED); + if (MATCH_KEY(KEY_STAR_IDENTIFIED)) ADD_FLG_ADJ(FLG_STAR_IDENTIFIED); + if (MATCH_KEY(KEY_BOOSTED)) ADD_FLG_ADJ(FLG_BOOSTED); /*** Weapons whose dd*ds is more than nn ***/ if (MATCH_KEY(KEY_MORE_THAN)) @@ -375,7 +376,7 @@ bool autopick_new_entry(autopick_type *entry, cptr str) if (k > 0 && k <= 2) { (void)MATCH_KEY(KEY_DICE); - ADD_FLG(FLG_MORE_THAN); + ADD_FLG_ADJ(FLG_MORE_THAN); } else ptr = prev_ptr; @@ -401,62 +402,68 @@ bool autopick_new_entry(autopick_type *entry, cptr str) if (k > 0 && k <= 2) { (void)MATCH_KEY(KEY_MORE_BONUS2); - ADD_FLG(FLG_MORE_BONUS); + ADD_FLG_ADJ(FLG_MORE_BONUS); } else ptr = prev_ptr; } - if (MATCH_KEY(KEY_WORTHLESS)) ADD_FLG(FLG_WORTHLESS); - if (MATCH_KEY(KEY_ARTIFACT)) ADD_FLG2(FLG_ARTIFACT); - 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_WANTED)) ADD_FLG(FLG_WANTED); - if (MATCH_KEY(KEY_UNIQUE)) ADD_FLG(FLG_UNIQUE); - if (MATCH_KEY(KEY_HUMAN)) ADD_FLG(FLG_HUMAN); - if (MATCH_KEY(KEY_UNREADABLE)) ADD_FLG(FLG_UNREADABLE); - if (MATCH_KEY(KEY_REALM1)) ADD_FLG(FLG_REALM1); - if (MATCH_KEY(KEY_REALM2)) ADD_FLG(FLG_REALM2); - if (MATCH_KEY(KEY_FIRST)) ADD_FLG(FLG_FIRST); - if (MATCH_KEY(KEY_SECOND)) ADD_FLG(FLG_SECOND); - if (MATCH_KEY(KEY_THIRD)) ADD_FLG(FLG_THIRD); - if (MATCH_KEY(KEY_FOURTH)) ADD_FLG(FLG_FOURTH); - - if (MATCH_KEY(KEY_ITEMS)) ADD_FLG2(FLG_ITEMS); - else if (MATCH_KEY(KEY_WEAPONS)) ADD_FLG2(FLG_WEAPONS); - else if (MATCH_KEY(KEY_ARMORS)) ADD_FLG2(FLG_ARMORS); - else if (MATCH_KEY(KEY_MISSILES)) ADD_FLG2(FLG_MISSILES); - else if (MATCH_KEY(KEY_DEVICES)) ADD_FLG2(FLG_DEVICES); - else if (MATCH_KEY(KEY_LIGHTS)) ADD_FLG2(FLG_LIGHTS); - else if (MATCH_KEY(KEY_JUNKS)) ADD_FLG2(FLG_JUNKS); - else if (MATCH_KEY(KEY_SPELLBOOKS)) ADD_FLG2(FLG_SPELLBOOKS); - else if (MATCH_KEY(KEY_HAFTED)) ADD_FLG2(FLG_HAFTED); - else if (MATCH_KEY(KEY_SHIELDS)) ADD_FLG2(FLG_SHIELDS); - else if (MATCH_KEY(KEY_BOWS)) ADD_FLG2(FLG_BOWS); - else if (MATCH_KEY(KEY_RINGS)) ADD_FLG2(FLG_RINGS); - else if (MATCH_KEY(KEY_AMULETS)) ADD_FLG2(FLG_AMULETS); - else if (MATCH_KEY(KEY_SUITS)) ADD_FLG2(FLG_SUITS); - else if (MATCH_KEY(KEY_CLOAKS)) ADD_FLG2(FLG_CLOAKS); - else if (MATCH_KEY(KEY_HELMS)) ADD_FLG2(FLG_HELMS); - else if (MATCH_KEY(KEY_GLOVES)) ADD_FLG2(FLG_GLOVES); - else if (MATCH_KEY(KEY_BOOTS)) ADD_FLG2(FLG_BOOTS); + if (MATCH_KEY(KEY_WORTHLESS)) ADD_FLG_ADJ(FLG_WORTHLESS); + if (MATCH_KEY(KEY_ARTIFACT)) ADD_FLG_NOUN(FLG_ARTIFACT); + if (MATCH_KEY(KEY_EGO)) ADD_FLG_ADJ(FLG_EGO); + if (MATCH_KEY(KEY_NAMELESS)) ADD_FLG_ADJ(FLG_NAMELESS); + if (MATCH_KEY(KEY_UNAWARE)) ADD_FLG_ADJ(FLG_UNAWARE); + if (MATCH_KEY(KEY_WANTED)) ADD_FLG_ADJ(FLG_WANTED); + if (MATCH_KEY(KEY_UNIQUE)) ADD_FLG_ADJ(FLG_UNIQUE); + if (MATCH_KEY(KEY_HUMAN)) ADD_FLG_ADJ(FLG_HUMAN); + if (MATCH_KEY(KEY_UNREADABLE)) ADD_FLG_ADJ(FLG_UNREADABLE); + if (MATCH_KEY(KEY_REALM1)) ADD_FLG_ADJ(FLG_REALM1); + if (MATCH_KEY(KEY_REALM2)) ADD_FLG_ADJ(FLG_REALM2); + if (MATCH_KEY(KEY_FIRST)) ADD_FLG_ADJ(FLG_FIRST); + if (MATCH_KEY(KEY_SECOND)) ADD_FLG_ADJ(FLG_SECOND); + if (MATCH_KEY(KEY_THIRD)) ADD_FLG_ADJ(FLG_THIRD); + if (MATCH_KEY(KEY_FOURTH)) ADD_FLG_ADJ(FLG_FOURTH); + + if (MATCH_KEY(KEY_ITEMS)) ADD_FLG_NOUN(FLG_ITEMS); + else if (MATCH_KEY(KEY_WEAPONS)) ADD_FLG_NOUN(FLG_WEAPONS); + else if (MATCH_KEY(KEY_ARMORS)) ADD_FLG_NOUN(FLG_ARMORS); + else if (MATCH_KEY(KEY_MISSILES)) ADD_FLG_NOUN(FLG_MISSILES); + else if (MATCH_KEY(KEY_DEVICES)) ADD_FLG_NOUN(FLG_DEVICES); + else if (MATCH_KEY(KEY_LIGHTS)) ADD_FLG_NOUN(FLG_LIGHTS); + else if (MATCH_KEY(KEY_JUNKS)) ADD_FLG_NOUN(FLG_JUNKS); + else if (MATCH_KEY(KEY_SPELLBOOKS)) ADD_FLG_NOUN(FLG_SPELLBOOKS); + else if (MATCH_KEY(KEY_HAFTED)) ADD_FLG_NOUN(FLG_HAFTED); + else if (MATCH_KEY(KEY_SHIELDS)) ADD_FLG_NOUN(FLG_SHIELDS); + else if (MATCH_KEY(KEY_BOWS)) ADD_FLG_NOUN(FLG_BOWS); + else if (MATCH_KEY(KEY_RINGS)) ADD_FLG_NOUN(FLG_RINGS); + else if (MATCH_KEY(KEY_AMULETS)) ADD_FLG_NOUN(FLG_AMULETS); + else if (MATCH_KEY(KEY_SUITS)) ADD_FLG_NOUN(FLG_SUITS); + else if (MATCH_KEY(KEY_CLOAKS)) ADD_FLG_NOUN(FLG_CLOAKS); + else if (MATCH_KEY(KEY_HELMS)) ADD_FLG_NOUN(FLG_HELMS); + else if (MATCH_KEY(KEY_GLOVES)) ADD_FLG_NOUN(FLG_GLOVES); + else if (MATCH_KEY(KEY_BOOTS)) ADD_FLG_NOUN(FLG_BOOTS); /* Last 'keyword' must be at the correct location */ if (*ptr == ':') ptr++; - else if (*ptr == '\0') - ; /* nothing to do */ #ifdef JP else if (ptr[0] == kanji_colon[0] && ptr[1] == kanji_colon[1]) ptr += 2; #endif + else if (*ptr == '\0') + ; /* nothing to do */ else { + /* Noun type? */ if (prev_flg != -1) + { + /* A noun type keyword didn't end correctly */ entry->flag[prev_flg/32] &= ~(1L<< (prev_flg%32)); - ptr = prev_ptr; + ptr = prev_ptr; + } } + + /* Save this auto-picker entry line */ entry->name = string_make(ptr); entry->action = act; entry->insc = string_make(insc);