Merge branch 'NetHack-3.7' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.7

This commit is contained in:
nhmall
2020-01-28 19:10:07 -05:00
7 changed files with 73 additions and 36 deletions

View File

@@ -1,4 +1,4 @@
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.76 $ $NHDT-Date: 1580043420 2020/01/26 12:57:00 $
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.80 $ $NHDT-Date: 1580254093 2020/01/28 23:28:13 $
General Fixes and Modified Features
-----------------------------------
@@ -76,6 +76,8 @@ data.base lookup of an entry with any blank lines would falsely claim that
"'data' file in wrong fromat or corrupted" after some extra checks
were added while investigating tab handling anomalies
using nhl_error() to report a Lua processing problem would clobber the stack
level teleporation's "You materialize on a different level!" could be given
out of sequence with other arrival messages
Platform- and/or Interface-Specific Fixes
@@ -95,12 +97,12 @@ savefile: add support to deconstruct internal data structures down into their
individual fields and save those fields instead of the entire struct
savefile: use little-endian format for fields where that makes a difference
replace build-time level compiler and dungeon compiler with run-time loading of
the dungeon and level descriptions and interpreting them via LUA
the dungeon and level descriptions and interpreting them via Lua
split off some of the functionality that was in makedefs (compiled-in options
build date/time, etc) so that it can be built by a cross-compiler
and accessed on the target platform
replace quest.txt and associated conversion to quest.dat via makedefs with
lua quest texts loaded at runtime
Lua quest texts loaded at runtime
some altars are displayed in different colors (for tty and curses at least)
add 'quick_farsight' option to provide some control over random clairvoyance
where pausing to be able to browse temporarily visible aspects of the
@@ -122,6 +124,9 @@ tiny chance for randomly created spellbooks to be Discworld novels instead
wearing a wet towel confers "half damage from poison gas" attribute
for end of game disclosure and dumplog, show 'achievements' (previously only
available as an encoded value in xlogfile) along with 'conduct'
more grades of self-appearance than beautiful or handsome vs ugly
when 'color' if Off and 'use_inverse' is On, draw ice on the map in inverse
video if it uses the same character as room floor or as dark floor
Platform- and/or Interface-Specific New Features

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 hack.h $NHDT-Date: 1559227823 2019/05/30 14:50:23 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.105 $ */
/* NetHack 3.6 hack.h $NHDT-Date: 1580252122 2020/01/28 22:55:22 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.127 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Pasi Kallinen, 2017. */
/* NetHack may be freely redistributed. See license for details. */
@@ -83,15 +83,16 @@ enum dismount_types {
#define MG_FLAG_NOOVERRIDE 0x01
/* Special returns from mapglyph() */
#define MG_CORPSE 0x01
#define MG_INVIS 0x02
#define MG_DETECT 0x04
#define MG_PET 0x08
#define MG_RIDDEN 0x10
#define MG_STATUE 0x20
#define MG_OBJPILE 0x40 /* more than one stack of objects */
#define MG_BW_LAVA 0x80 /* 'black & white lava': highlight lava if it
can't be distringuished from water by color */
#define MG_CORPSE 0x0001
#define MG_INVIS 0x0002
#define MG_DETECT 0x0004
#define MG_PET 0x0008
#define MG_RIDDEN 0x0010
#define MG_STATUE 0x0020
#define MG_OBJPILE 0x0040 /* more than one stack of objects */
#define MG_BW_LAVA 0x0080 /* 'black & white lava': highlight lava if it
can't be distringuished from water by color */
#define MG_BW_ICE 0x0100 /* similar for ice vs floor */
/* sellobj_state() states */
#define SELL_NORMAL (0)

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 apply.c $NHDT-Date: 1578187332 2020/01/05 01:22:12 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.310 $ */
/* NetHack 3.6 apply.c $NHDT-Date: 1580244571 2020/01/28 20:49:31 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.314 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2012. */
/* NetHack may be freely redistributed. See license for details. */
@@ -815,14 +815,25 @@ register xchar x, y;
}
}
/* charisma is supposed to include qualities like leadership and personal
magnetism rather than just appearance, but it has devolved to this... */
const char *
beautiful()
{
return ((ACURR(A_CHA) > 14)
? ((poly_gender() == 1)
? "beautiful"
: "handsome")
: "ugly");
const char *res;
int cha = ACURR(A_CHA);
/* don't bother complaining about the sexism; nethack is not real life */
res = ((cha >= 25) ? "sublime" /* 25 is the maximum possible */
: (cha >= 19) ? "splendorous" /* note: not "splendiferous" */
: (cha >= 16) ? ((poly_gender() == 1) ? "beautiful" : "handsome")
: (cha >= 14) ? ((poly_gender() == 1) ? "winsome" : "amiable")
: (cha >= 11) ? "cute"
: (cha >= 9) ? "plain"
: (cha >= 6) ? "homely"
: (cha >= 4) ? "ugly"
: "hideous"); /* 3 is the minimum possible */
return res;
}
static const char look_str[] = "look %s.";

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 do.c $NHDT-Date: 1577063925 2019/12/23 01:18:45 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.220 $ */
/* NetHack 3.6 do.c $NHDT-Date: 1580254093 2020/01/28 23:28:13 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.221 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */
@@ -1615,6 +1615,13 @@ boolean at_stairs, falling, portal;
* Move all plines beyond the screen reset.
*/
/* deferred arrival message for level teleport looks odd if given
after the various messages below so give it before them */
if (g.dfr_post_msg && !strncmpi(g.dfr_post_msg, "You materialize", 15)) {
pline("%s", g.dfr_post_msg);
free((genericptr_t) g.dfr_post_msg), g.dfr_post_msg = 0;
}
/* special levels can have a custom arrival message */
deliver_splev_message();
@@ -1699,9 +1706,11 @@ boolean at_stairs, falling, portal;
|| g.quest_status.leader_is_dead)) {
if (!u.uevent.qcalled) {
u.uevent.qcalled = 1;
com_pager("quest_portal"); /* main "leader needs help" message */
} else { /* reminder message */
com_pager(Role_if(PM_ROGUE) ? "quest_portal_demand" : "quest_portal_again");
/* main "leader needs help" message */
com_pager("quest_portal");
} else { /* reminder message */
com_pager(Role_if(PM_ROGUE) ? "quest_portal_demand"
: "quest_portal_again");
}
}
}

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 mapglyph.c $NHDT-Date: 1575830186 2019/12/08 18:36:26 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.60 $ */
/* NetHack 3.6 mapglyph.c $NHDT-Date: 1580252137 2020/01/28 22:55:37 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.62 $ */
/* Copyright (c) David Cohrs, 1991 */
/* NetHack may be freely redistributed. See license for details. */
@@ -162,6 +162,12 @@ unsigned mgflags;
|| g.showsyms[idx]
== g.showsyms[S_water + SYM_OFF_P])) {
special |= MG_BW_LAVA;
/* similar for floor [what about empty doorway?] and ice */
} else if (!iflags.use_color && offset == S_ice
&& (g.showsyms[idx] == g.showsyms[S_room + SYM_OFF_P]
|| g.showsyms[idx]
== g.showsyms[S_darkroom + SYM_OFF_P])) {
special |= MG_BW_ICE;
} else if (offset == S_altar && iflags.use_color) {
int amsk = altarmask_at(x, y); /* might be a mimic */

View File

@@ -688,12 +688,12 @@ curses_print_glyph(winid wid, XCHAR_P x, XCHAR_P y, int glyph,
if ((special & MG_OBJPILE) && iflags.hilite_pile) {
if (iflags.wc_color)
color = 16 + (color * 2) + 1;
else
else /* if (iflags.use_inverse) */
attr = A_REVERSE;
}
/* water and lava look the same except for color; when color is off,
render lava in inverse video so that they look different */
if ((special & MG_BW_LAVA) && iflags.use_inverse) {
if ((special & (MG_BW_LAVA | MG_BW_ICE)) != 0 && iflags.use_inverse) {
attr = A_REVERSE; /* mapglyph() only sets this if color is off */
}
}

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 wintty.c $NHDT-Date: 1578947635 2020/01/13 20:33:55 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.244 $ */
/* NetHack 3.6 wintty.c $NHDT-Date: 1580252140 2020/01/28 22:55:40 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.248 $ */
/* Copyright (c) David Cohrs, 1991 */
/* NetHack may be freely redistributed. See license for details. */
@@ -3391,7 +3391,7 @@ int glyph;
int bkglyph UNUSED;
{
int ch;
boolean reverse_on = FALSE;
boolean inverse_on = FALSE;
int color;
unsigned special;
@@ -3429,13 +3429,16 @@ int bkglyph UNUSED;
}
#endif /* TEXTCOLOR */
/* must be after color check; term_end_color may turn off inverse too */
if (((special & MG_PET) && iflags.hilite_pet)
|| ((special & MG_OBJPILE) && iflags.hilite_pile)
|| ((special & MG_DETECT) && iflags.use_inverse)
|| ((special & MG_BW_LAVA) && iflags.use_inverse)) {
/* must be after color check; term_end_color may turn off inverse too;
BW_LAVA and BW_ICE won't ever be set when color is on;
(tried bold for ice but it didn't look very good; inverse is easier
to see although the Valkyrie quest ends up being hard on the eyes) */
if (((special & MG_PET) != 0 && iflags.hilite_pet)
|| ((special & MG_OBJPILE) != 0 && iflags.hilite_pile)
|| ((special & (MG_DETECT | MG_BW_LAVA | MG_BW_ICE)) != 0
&& iflags.use_inverse)) {
term_start_attr(ATR_INVERSE);
reverse_on = TRUE;
inverse_on = TRUE;
}
#if defined(USE_TILES) && defined(MSDOS)
@@ -3445,10 +3448,12 @@ int bkglyph UNUSED;
#endif
g_putch(ch); /* print the character */
if (reverse_on) {
if (inverse_on) {
term_end_attr(ATR_INVERSE);
#ifdef TEXTCOLOR
/* turn off color as well, ATR_INVERSE may have done this already */
/* turn off color as well, turning off ATR_INVERSE may have done
this already and if so, we won't know the current state unless
we do it explicitly */
if (ttyDisplay->color != NO_COLOR) {
term_end_color();
ttyDisplay->color = NO_COLOR;