simplify achievement tracking for special objects

This turned out to be a lot more work than I anticipated, but it is
definitely simpler (other than having #wizmakemap take achievements
away if you replace the level that contains the 'prize', which wasn't
handled before).

I cheated and made Mine's End into a no-bones level because the new
flagging scheme for luckstone, bag, and amulet can't carry over from
one game to another.  It probably should have been no-bones all along.
Sokoban didn't have this issue because it's already no-bones.

Existing save files are invalidated.
This commit is contained in:
PatR
2020-01-24 13:54:23 -08:00
parent dba6c20e2d
commit 0166239a22
12 changed files with 85 additions and 71 deletions

View File

@@ -105,6 +105,11 @@ struct novel_tracking { /* for choosing random passage when reading novel */
passage from the Death Quotes section of dat/tribute */
};
struct achievement_tracking {
unsigned mines_prize_oid, soko_prize_oid; /* obj->o_id */
short mines_prize_type, soko_prize_typ1, soko_prize_typ2; /* obj->otyp */
};
struct context_info {
unsigned ident; /* social security number for each monster */
unsigned no_of_wizards; /* 0, 1 or 2 (wizard and his shadow) */
@@ -143,6 +148,7 @@ struct context_info {
struct obj_split objsplit; /* track most recently split object stack */
struct tribute_info tribute;
struct novel_tracking novel;
struct achievement_tracking achieveo;
};
#endif /* CONTEXT_H */