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:
22
src/do.c
22
src/do.c
@@ -1624,12 +1624,6 @@ boolean at_stairs, falling, portal;
|
||||
/* special levels can have a custom arrival message */
|
||||
deliver_splev_message();
|
||||
|
||||
/* give room entrance message, if any */
|
||||
check_special_room(FALSE);
|
||||
|
||||
/* deliver objects traveling with player */
|
||||
obj_delivery(TRUE);
|
||||
|
||||
/* Check whether we just entered Gehennom. */
|
||||
if (!In_hell(&u.uz0) && Inhell) {
|
||||
if (Is_valley(&u.uz)) {
|
||||
@@ -1701,9 +1695,18 @@ boolean at_stairs, falling, portal;
|
||||
mtmp->msleeping = 0;
|
||||
}
|
||||
}
|
||||
} else if (In_mines(&u.uz)) {
|
||||
if (newdungeon)
|
||||
record_achievement(ACH_MINE);
|
||||
} else if (In_sokoban(&u.uz)) {
|
||||
if (newdungeon)
|
||||
record_achievement(ACH_SOKO);
|
||||
} else {
|
||||
if (new && Is_rogue_level(&u.uz))
|
||||
if (new && Is_rogue_level(&u.uz)) {
|
||||
You("enter what seems to be an older, more primitive world.");
|
||||
} else if (new && Is_bigroom(&u.uz)) {
|
||||
record_achievement(ACH_BGRM);
|
||||
}
|
||||
/* main dungeon message from your quest leader */
|
||||
if (!In_quest(&u.uz0) && at_dgn_entrance("The Quest")
|
||||
&& !(u.uevent.qcompleted || u.uevent.qexpelled
|
||||
@@ -1727,6 +1730,11 @@ boolean at_stairs, falling, portal;
|
||||
if ((annotation = get_annotation(&u.uz)) != 0)
|
||||
You("remember this level as %s.", annotation);
|
||||
|
||||
/* give room entrance message, if any */
|
||||
check_special_room(FALSE);
|
||||
/* deliver objects traveling with player */
|
||||
obj_delivery(TRUE);
|
||||
|
||||
/* assume this will always return TRUE when changing level */
|
||||
(void) in_out_region(u.ux, u.uy);
|
||||
(void) pickup(1);
|
||||
|
||||
Reference in New Issue
Block a user