diff --git a/doc/fixes36.3 b/doc/fixes36.3 index d783301bc..904db232c 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -1,4 +1,4 @@ -$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.86 $ $NHDT-Date: 1562462061 2019/07/07 01:14:21 $ +$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.87 $ $NHDT-Date: 1562532730 2019/07/07 20:52:10 $ This fixes36.3 file is here to capture information about updates in the 3.6.x lineage following the release of 3.6.2 in May 2019. Please note, however, @@ -212,6 +212,13 @@ if you reach the edge of a level (relatively uncommon) and try to move off, 'attributes' disclosure at end of game includes number of experience points that were needed to reach the next experience level (new for normal play and explore mode; previously only shown for wizard mode) +report Friday-13th/phase-of-moon/time-of-day for ^X and final disclosure when + their values matter to game play (date and moon are from the start of + current session and are not dynamically updated as real time elapses; + night is a fixed range of hours using the computer's conception of + local time which could differ from player's if there are time zone or + system clock issues or simply seasonal variation based on latitude; + not new but needs to be documented somewhere other than spoilers...) status highlighting using percentage rules now supported for experience level and experience points; for both, percent is based on Exp progress from the start of the current Xp level to the start of the next Xp level; diff --git a/include/flag.h b/include/flag.h index 5413fbcd1..472e34ade 100644 --- a/include/flag.h +++ b/include/flag.h @@ -1,4 +1,4 @@ -/* NetHack 3.6 flag.h $NHDT-Date: 1559664948 2019/06/04 16:15:48 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.151 $ */ +/* NetHack 3.6 flag.h $NHDT-Date: 1562532730 2019/07/07 20:52:10 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.152 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Michael Allison, 2006. */ /* NetHack may be freely redistributed. See license for details. */ @@ -227,6 +227,8 @@ struct instance_flags { boolean defer_plname; /* X11 hack: askname() might not set g.plname */ boolean herecmd_menu; /* use menu when mouseclick on yourself */ boolean invis_goldsym; /* gold symbol is ' '? */ + int at_midnight; /* only valid during end of game disclosure */ + int at_night; /* also only valid during end of game disclosure */ int failing_untrap; /* move_into_trap() -> spoteffects() -> dotrap() */ int in_lava_effects; /* hack for Boots_off() */ int last_msg; /* indicator of last message player saw */ diff --git a/src/cmd.c b/src/cmd.c index af3da8d79..b21c637a0 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 cmd.c $NHDT-Date: 1561917056 2019/06/30 17:50:56 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.338 $ */ +/* NetHack 3.6 cmd.c $NHDT-Date: 1562532731 2019/07/07 20:52:11 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.339 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2013. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1976,6 +1976,50 @@ int final; /* same phrasing for current and final: "entered" is unconditional */ enlght_line(You_, "entered ", buf, ""); } + + /* for gameover, these have been obtained in really_done() so that they + won't vary if user leaves a disclosure prompt or --More-- unanswered + long enough for the dynamic value to change between then and now */ + if (final ? iflags.at_midnight : midnight()) { + enl_msg("It ", "is ", "was ", "the midnight hour", ""); + } else if (final ? iflags.at_night : night()) { + enl_msg("It ", "is ", "was ", "nighttime", ""); + } + /* other environmental factors */ + if (flags.moonphase == FULL_MOON || flags.moonphase == NEW_MOON) { + /* [This had "tonight" but has been changed to "in effect". + There is a similar issue to Friday the 13th--it's the value + at the start of the current session but that session might + have dragged on for an arbitrary amount of time. We want to + report the values that currently affect play--or affected + play when game ended--rather than actual outside situation.] */ + Sprintf(buf, "a %s moon in effect%s", + (flags.moonphase == FULL_MOON) ? "full" + : (flags.moonphase == NEW_MOON) ? "new" + /* showing these would probably just lead to confusion + since they have no effect on game play... */ + : (flags.moonphase < FULL_MOON) ? "first quarter" + : "last quarter", + /* we don't have access to 'how' here--aside from survived + vs died--so settle for general platitude */ + final ? " when your adventure ended" : ""); + enl_msg("There ", "is ", "was ", buf, ""); + } + if (flags.friday13) { + /* let player know that friday13 penalty is/was in effect; + we don't say "it is/was Friday the 13th" because that was at + the start of the session and it might be past midnight (or + days later if the game has been paused without save/restore), + so phrase this similar to the start up message */ + Sprintf(buf, " Bad things %s on Friday the 13th.", + !final ? "can happen" + : (final == ENL_GAMEOVERALIVE) ? "could have happened" + /* there's no may to tell whether -1 Luck made a + difference but hero has died... */ + : "happened"); + enlght_out(buf); + } + if (!Upolyd) { int ulvl = (int) u.ulevel; /* [flags.showexp currently does not matter; should it?] */ diff --git a/src/end.c b/src/end.c index c45471eeb..7cfbe16ab 100644 --- a/src/end.c +++ b/src/end.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 end.c $NHDT-Date: 1561414303 2019/06/24 22:11:43 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.178 $ */ +/* NetHack 3.6 end.c $NHDT-Date: 1562532734 2019/07/07 20:52:14 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.179 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2012. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1216,6 +1216,9 @@ int how; time or even day if player is slow responding to --More-- */ urealtime.finish_time = endtime = getnow(); urealtime.realtime += (long) (endtime - urealtime.start_timing); + /* collect these for end of game disclosure (not used during play) */ + iflags.at_night = night(); + iflags.at_midnight = midnight(); dump_open_log(endtime); /* Sometimes you die on the first move. Life's not fair.