Merge branch 'NetHack-3.6.2-beta01' into NetHack-3.6.2

This commit is contained in:
nhmall
2018-12-21 09:37:59 -05:00
6 changed files with 78 additions and 8 deletions

View File

@@ -1,5 +1,5 @@
# NetHack 3.6 data.base
# $NHDT-Date: 1524683801 2018/04/25 19:16:41 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.84 $
# $NHDT-Date: 1545359287 2018/12/21 02:28:07 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.87 $
# Copyright (c) 1994, 1995, 1996 by the NetHack Development Team
# Copyright (c) 1994 by Boudewijn Wayers
# NetHack may be freely redistributed. See license for details.
@@ -1629,9 +1629,19 @@ eye of the aethiopica
the power to instantly open a portal to any other area of the
dungeon, allowing its invoker to travel quickly between
areas.
# note: The Eyes of the Overworld is the title of Jack Vance's sequel
# to The Dying Earth and in it the 'Eyes' were separate "cusps" that
# needed to be worn like contact lenses, one on each eyeball. Wearing
# just one and attempting to look with both eyes caused instant stun.
# And when wearing two you couldn't see normal world, only a projection
# of it that had similar topology but where everything was "better".
# NetHack simplifies things: a pair of lenses is a single item like
# spectacles (eyeglasses), and the effect of wearing these lenses has
# been changed to be useful to game play (Xray vision). [The quote is
# not derived from the book.]
eyes of the overworld
... and finally there is "the Eyes of the Overworld". This
obscure artifact pushes the wearer's view sense into the
The Eyes of the Overworld is a rather obscure artifact.
These magical lenses push the wearer's view sense into the
"overworld" -- another name for a segment of the Astral Plane.
Usually, there is nothing to be seen. However, the wearer
is also able to look back and see the area around herself,

View File

@@ -293,6 +293,10 @@ vibrating square is not really a trap so monsters don't need to avoid it
if hero kicks some embedded gold out of a wall while following vault gaurd
away from vault, don't report "the guard _calms_down_and_ picks up
the gold" unless he's on brink of going ballistic
for '/?' information lookup, "item named The Artifact" failed to find info
about "Artifact" due to presence of "The"
identifying or forgetting gem types now adjusts prices for gems already on
shopping bill
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 extern.h $NHDT-Date: 1545182146 2018/12/19 01:15:46 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.674 $ */
/* NetHack 3.6 extern.h $NHDT-Date: 1545383614 2018/12/21 09:13:34 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.675 $ */
/* Copyright (c) Steve Creps, 1988. */
/* NetHack may be freely redistributed. See license for details. */
@@ -2220,6 +2220,7 @@ E long FDECL(contained_cost,
(struct obj *, struct monst *, long, BOOLEAN_P, BOOLEAN_P));
E long FDECL(contained_gold, (struct obj *));
E void FDECL(picked_container, (struct obj *));
E void FDECL(gem_learned, (int));
E void FDECL(alter_cost, (struct obj *, long));
E long FDECL(unpaid_cost, (struct obj *, BOOLEAN_P));
E boolean FDECL(billable, (struct monst **, struct obj *, CHAR_P, BOOLEAN_P));

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 o_init.c $NHDT-Date: 1528332336 2018/06/07 00:45:36 $ $NHDT-Branch: NetHack-3.6.2 $:$NHDT-Revision: 1.24 $ */
/* NetHack 3.6 o_init.c $NHDT-Date: 1545383615 2018/12/21 09:13:35 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.25 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2011. */
/* NetHack may be freely redistributed. See license for details. */
@@ -362,8 +362,11 @@ boolean credit_hero;
exercise(A_WIS, TRUE);
}
/* moves==1L => initial inventory, gameover => final disclosure */
if (moves > 1L && !program_state.gameover)
if (moves > 1L && !program_state.gameover) {
if (objects[oindx].oc_class == GEM_CLASS)
gem_learned(oindx); /* could affect price of unpaid gems */
update_inventory();
}
}
}
@@ -390,6 +393,9 @@ register int oindx;
disco[dindx - 1] = 0;
else
impossible("named object not in disco");
if (objects[oindx].oc_class == GEM_CLASS)
gem_learned(oindx); /* ok, it's actually been unlearned */
update_inventory();
}
}

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 pager.c $NHDT-Date: 1545129848 2018/12/18 10:44:08 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.142 $ */
/* NetHack 3.6 pager.c $NHDT-Date: 1545361111 2018/12/21 02:58:31 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.143 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2018. */
/* NetHack may be freely redistributed. See license for details. */
@@ -576,6 +576,8 @@ char *supplemental_name;
if (*dbase_str == ' ')
++dbase_str;
}
if (!strncmp(dbase_str, "pair of ", 8))
dbase_str += 8;
if (!strncmp(dbase_str, "tame ", 5))
dbase_str += 5;
else if (!strncmp(dbase_str, "peaceful ", 9))
@@ -640,6 +642,14 @@ char *supplemental_name;
ep = strstri(dbase_str, ", ");
if (ep && ep > dbase_str)
*ep = '\0';
/* remove article from 'alt' name ("a pair of lenses named
The Eyes of the Overworld" simplified above to "lenses named
The Eyes of the Overworld", now reduced to "The Eyes of the
Overworld", skip "The" as with base name processing) */
if (!strncmpi(alt, "a ", 2)
|| !strncmpi(alt, "an ", 3)
|| !strncmpi(alt, "the ", 4))
alt = index(alt, ' ') + 1;
/* remove charges or "(lit)" or wizmode "(N aum)" */
if ((ep = strstri(dbase_str, " (")) != 0 && ep > dbase_str)
*ep = '\0';

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 shk.c $NHDT-Date: 1545036290 2018/12/17 08:44:50 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.143 $ */
/* NetHack 3.6 shk.c $NHDT-Date: 1545383616 2018/12/21 09:13:36 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.144 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2012. */
/* NetHack may be freely redistributed. See license for details. */
@@ -2278,6 +2278,45 @@ register struct monst *shkp;
return tmp;
}
/* unlike alter_cost() which operates on a specific item, identifying or
forgetting a gem causes all unpaid gems of its type to change value */
void
gem_learned(oindx)
int oindx;
{
struct obj *obj;
struct monst *shkp;
struct bill_x *bp;
int ct;
/*
* Unfortunately, shop bill doesn't have object type included,
* just obj->oid for each unpaid stack, so we have to go through
* every bill and every item on that bill and match up against
* every unpaid stack on the level....
*
* Fortunately, there's no need to catch up when changing dungeon
* levels even if we ID'd or forget some gems while gone from a
* level. There won't be any shop bills when arriving; they were
* either paid before leaving or got treated as robbery and it's
* too late to adjust pricing.
*/
for (shkp = next_shkp(fmon, TRUE); shkp;
shkp = next_shkp(shkp->nmon, TRUE)) {
ct = ESHK(shkp)->billct;
bp = ESHK(shkp)->bill;
while (--ct >= 0) {
obj = find_oid(bp->bo_id);
if (!obj) /* shouldn't happen */
continue;
if ((oindx != STRANGE_OBJECT) ? (obj->otyp == oindx)
: (obj->oclass == GEM_CLASS))
bp->price = get_cost(obj, shkp);
++bp;
}
}
}
/* called when an item's value has been enhanced; if it happens to be
on any shop bill, update that bill to reflect the new higher price
[if the new price drops for some reason, keep the old one in place] */