Merge branch 'NetHack-3.6.2'
This commit is contained in:
10
src/o_init.c
10
src/o_init.c
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
12
src/pager.c
12
src/pager.c
@@ -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';
|
||||
|
||||
41
src/shk.c
41
src/shk.c
@@ -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] */
|
||||
|
||||
Reference in New Issue
Block a user