Skip to content

Commit 10fc71b

Browse files
committed
Fix: clarify Pilgrim and Grand Tour achievements
Pilgrim had inconsistencies in its implementation: high altars counted towards it, but comments and strings indicated the intent behind it was just for non-high altars. I went back and checked the commit where I added it, thinking the original intent was for it to be an exploration-based achievement that you can't get by stepping on the guaranteed high altars, but this guess was actually wrong: in the original implementation high altars count and you can always guarantee getting it in a game. So I fixed things to account for this, including adding "unaligned" to the list of altars visited in #tnntstats. Meanwhile, The Grand Tour had a comment that mentioned #tnntstats should start showing the high altar display as soon as the Invocation is done so the player doesn't forget to step on Moloch's high altar. The problem is the achievement didn't require Moloch's altar and the popular conception of "The Grand Tour" as an accomplishment doesn't either (nor did the achievement description suggest it; it explicitly says "on Astral"). So I removed this comment and reverted it to only showing high altar alignments after you've stepped on one on Astral.
1 parent ef6b0ea commit 10fc71b

File tree

2 files changed

+20
-18
lines changed

2 files changed

+20
-18
lines changed

include/tnnt_achievements.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ ACH("Statue Showcase", "Enter a cockatrice nest", ENTERED_COCKNEST),
296296
ACH("Ocean's Eleven", "Enter Fort Ludios", ENTERED_LUDIOS),
297297

298298
/* involving doing all of a set of things */
299-
ACH("Pilgrim", "Visit all 4 types of altar", VISITED_ALL_ALTARS),
299+
ACH("Pilgrim", "Visit all 4 types of altars", VISITED_ALL_ALTARS),
300300
ACH("The Grand Tour", "Visit each high altar on the Astral Plane",
301301
VISITED_HIGH_ALTARS),
302302
ACH("All You Ever Wanted", "Get a wish from every wish source",

src/tnnt.c

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
/* this must be kept the same as in topten.c */
2929
#define NAMSZ PL_NSIZ
3030

31+
/* for altar tracking since A_NONE is just 0 and not a flag */
32+
#define TNNT_AM_MOLOCH 0x08
33+
#define TNNT_AM_ALL 0x0F
34+
3135
/* static forward declarations */
3236
static boolean tnnt_common_monst(int mndx);
3337
static char *make_swapobj_filename(struct obj *o);
@@ -248,26 +252,24 @@ boolean final;
248252
maybe_have(final), tnnt_globals.maxpw_from_corpses);
249253
putstr(en_win, 0, buf);
250254

251-
#define print_visited(altars) \
252-
if ((altars) == 0) \
253-
Strcat(buf, " none"); \
254-
if ((altars) & AM_LAWFUL) \
255-
Strcat(buf, " lawful"); \
256-
if ((altars) & AM_NEUTRAL) \
257-
Strcat(buf, " neutral"); \
258-
if ((altars) & AM_CHAOTIC) \
259-
Strcat(buf, " chaotic");
260-
/* Initially I had this check for tnnt_globals.high_altars != 0, but it's
261-
* probably better to show this a little earlier to avoid someone forgetting
262-
* to step on Moloch's high altar and not realizing it until it's too late.
263-
* Starting to show it around the start of the ascension run is fine. */
264-
if (final || u.uevent.udemigod) {
255+
#define print_visited(altars) \
256+
if ((altars) == 0) \
257+
Strcat(buf, " none"); \
258+
if ((altars) & AM_LAWFUL) \
259+
Strcat(buf, " lawful"); \
260+
if ((altars) & AM_NEUTRAL) \
261+
Strcat(buf, " neutral"); \
262+
if ((altars) & AM_CHAOTIC) \
263+
Strcat(buf, " chaotic"); \
264+
if ((altars) & TNNT_AM_MOLOCH) \
265+
Strcat(buf, " unaligned");
266+
if (final || tnnt_globals.high_altars != 0) {
265267
Strcpy(buf, "High altar alignments visited:");
266268
print_visited(tnnt_globals.high_altars);
267269
putstr(en_win, 0, buf);
268270
}
269271

270-
Strcpy(buf, "Regular altar alignments visited:");
272+
Strcpy(buf, "Altar alignments visited:");
271273
print_visited(tnnt_globals.regular_altars);
272274
putstr(en_win, 0, buf);
273275
#undef print_visited
@@ -2776,9 +2778,9 @@ tnnt_record_altar(xchar amask)
27762778
if (amask == 0) {
27772779
/* Moloch altar; set a special bit that isn't actually set in
27782780
* tnnt_globals.regular_altars otherwise */
2779-
tnnt_globals.regular_altars |= 0x08;
2781+
tnnt_globals.regular_altars |= TNNT_AM_MOLOCH;
27802782
}
2781-
if (tnnt_globals.regular_altars == 0x0F)
2783+
if (tnnt_globals.regular_altars == TNNT_AM_ALL)
27822784
tnnt_achieve(A_VISITED_ALL_ALTARS);
27832785
}
27842786

0 commit comments

Comments
 (0)