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

@@ -1755,14 +1755,38 @@ int final; /* used "behind the curtain" by enl_foo() macros */
case ACH_NUDE:
enl_msg(You_, "have gone", "went", " without any armor", "");
break;
case ACH_LUCK:
enl_msg(You_, "have ", "", "completed the Gnomish Mines", "");
case ACH_MINE:
you_have_X("entered the Gnomish Mines");
break;
case ACH_TOWN:
you_have_X("entered Mine Town");
break;
case ACH_SHOP:
you_have_X("entered a shop");
break;
case ACH_TMPL:
you_have_X("entered a temple");
break;
case ACH_ORCL:
you_have_X("consulted the Oracle of Delphi");
break;
case ACH_NOVL:
you_have_X("read from a Discworld novel");
break;
case ACH_SOKO:
enl_msg(You_, "have ", "", "completed Sokoban", "");
you_have_X("entered Sokoban");
break;
case ACH_SOKO_PRIZE: /* hard to reach guaranteed bag or amulet */
you_have_X("completed Sokoban");
break;
case ACH_MINE_PRIZE: /* hidden guaranteed luckstone */
you_have_X("completed the Gnomish Mines");
break;
case ACH_BGRM:
you_have_X("entered the Big Room");
break;
case ACH_MEDU:
enl_msg(You_, "have ", "", "defeated Medusa", "");
you_have_X("defeated Medusa");
break;
case ACH_BELL:
/* alternate phrasing for present vs past and also for
@@ -1788,8 +1812,7 @@ int final; /* used "behind the curtain" by enl_foo() macros */
" the Book of the Dead", "");
break;
case ACH_INVK:
enl_msg(You_, "have ", "",
"gained access to Moloch's Sanctum", "");
you_have_X("gained access to Moloch's Sanctum");
break;
case ACH_AMUL:
/* alternate wording for ascended (always past tense) since
@@ -1805,10 +1828,10 @@ int final; /* used "behind the curtain" by enl_foo() macros */
be redundant and ascending makes both be redundant, but
we display all that apply */
case ACH_ENDG:
enl_msg(You_, "have ", "", "reached the Elemental Planes", "");
you_have_X("reached the Elemental Planes");
break;
case ACH_ASTR:
enl_msg(You_, "have ", "", "reached the Astral Plane", "");
you_have_X("reached the Astral Plane");
break;
case ACH_UWIN:
/* the ultimate achievement... */