#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
/* 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))
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;
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);