livelog tweaks, mostly sokoban
Demote "completed sokoban {1,2,3,4}" from major achievement to minor
at the request of hardfought. OR on the 'dump' flag so that those
entries appear in dumplog.
Change "completed Sokoban" (for the whole branch) to "acquired the
Sokoban <prize object>" since that's what triggers the event and it
is possible to pass through the first level without completing that.
This event is still classified as a major achievement. It has has
the 'spoiler' flag added to prevent #chronicle from showing that event
which now discloses the type of item the prize is. (Note: suppression
of spoiler events is ignored in wizard mode.)
The "attained rank N" achievements are classified as minor for ranks
1..3 (gaining levels 3, 6, 10); OR the 'dump' flag for those. [Rank 0
for levels 1 and 2 isn't an achievement and 4..8 for Xp levels 14, 18,
22, 26, and 30 are classified as 'major' achievements so don't need
that flag to make it into dumplog.]
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.7 sp_lev.c $NHDT-Date: 1646171627 2022/03/01 21:53:47 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.257 $ */
|
||||
/* NetHack 3.7 sp_lev.c $NHDT-Date: 1646428015 2022/03/04 21:06:55 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.259 $ */
|
||||
/* Copyright (c) 1989 by Jean-Christophe Collet */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -2276,6 +2276,7 @@ create_object(object* o, struct mkroom* croom)
|
||||
if (Is_mineend_level(&u.uz)) {
|
||||
if (!g.context.achieveo.mines_prize_oid) {
|
||||
g.context.achieveo.mines_prize_oid = otmp->o_id;
|
||||
g.context.achieveo.mines_prize_otyp = otmp->otyp;
|
||||
/* prevent stacking; cleared when achievement is recorded */
|
||||
otmp->nomerge = 1;
|
||||
} else {
|
||||
@@ -2284,6 +2285,7 @@ create_object(object* o, struct mkroom* croom)
|
||||
} else if (Is_sokoend_level(&u.uz)) {
|
||||
if (!g.context.achieveo.soko_prize_oid) {
|
||||
g.context.achieveo.soko_prize_oid = otmp->o_id;
|
||||
g.context.achieveo.soko_prize_otyp = otmp->otyp;
|
||||
otmp->nomerge = 1; /* redundant; Sokoban prizes don't stack */
|
||||
} else {
|
||||
impossible(prize_warning, "sokoban end");
|
||||
|
||||
Reference in New Issue
Block a user