add some new, easier achievements

Introduce eight achievements that can be attained by more players.
 Entered Gnomish Mines  - self explanatory
 Entered Mine Town      - the town portion, not just the level
 Entered a shop         - any tended shop on any level
 Entered a temple       - likewise for temple
 Consulted the Oracle   - bought at least one major or minor oracle
 Read a Discworld Novel - read at least one passage
 Entered Sokoban        - like mines
 Entered the Big Room   - not always possible since not always present

The novel and bigroom ones aren't always achieveable since novels are
only guaranteed if a book or scroll shop gets created and bigroom is
only guaranteed in wizard mode.  No one ever claimed that every
possible achievement can be attained in a single game.  (If one for
entering the Fort Ludios level--or perhaps entering the Fort itself--
eventually gets add, that won't be possible in every game either.)

The mine town one probably needs some tweaking.  Two of the town's
seven variants have no town boundary (despite a rectangular area of
pre-defined map) and at present simply arriving on either of those
levels is enough to be credited with the entered-town achievement.

Bump EDITLEVEL because u.uachieved[] has increased in size.  This
time it has been expanded to the maximum that xlogfile's bitmask of
achievements can handle, enough for up to 9 more achievements without
another EDITLEVEL increment.
This commit is contained in:
PatR
2020-02-12 14:35:37 -08:00
parent 1ec6e6f96b
commit 804499d9be
15 changed files with 195 additions and 88 deletions

View File

@@ -465,7 +465,8 @@ register struct obj *spellbook;
}
}
if (g.context.spbook.delay && !confused && spellbook == g.context.spbook.book
if (g.context.spbook.delay && !confused
&& spellbook == g.context.spbook.book
/* handle the sequence: start reading, get interrupted, have
g.context.spbook.book become erased somehow, resume reading it */
&& booktype != SPE_BLANK_PAPER) {
@@ -490,6 +491,7 @@ register struct obj *spellbook;
check_unpaid(spellbook);
makeknown(booktype);
if (!u.uevent.read_tribute) {
record_achievement(ACH_NOVL);
/* give bonus of 20 xp and 4*20+0 pts */
more_experienced(20, 0);
newexplevel();