-NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.530 $ $NHDT-Date: 1620590081 2021/05/09 19:54:41 $
+NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.532 $ $NHDT-Date: 1620861202 2021/05/12 23:13:22 $
General Fixes and Modified Features
-----------------------------------
calculate zombie's hit points (depended upon how much had been eaten)
undead turning magic revived corpses flagged as no-revive if they were being
carried but not if they were zapped while on the floor
+forgetting an item's known/dknown/bknown/&c settings when picked up by unseen
+ monster made it possible to trigger a latent shop bug with globs;
+ avoid clearing dknown flag for globs
+fix globby_bill_fixup to use shopkeeper instead of Null for glob pricing
curses: 'msg_window' option wasn't functional for curses unless the binary
also included tty support
-/* NetHack 3.7 extern.h $NHDT-Date: 1620348705 2021/05/07 00:51:45 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.969 $ */
+/* NetHack 3.7 extern.h $NHDT-Date: 1620861202 2021/05/12 23:13:22 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.970 $ */
/* Copyright (c) Steve Creps, 1988. */
/* NetHack may be freely redistributed. See license for details. */
unsigned *);
extern int askchain(struct obj **, const char *, int, int(*)(struct obj *),
int(*)(struct obj *), int, const char *);
-extern void unknow_object(struct obj *);
extern void set_cknown_lknown(struct obj *);
extern void fully_identify_obj(struct obj *);
extern int identify(struct obj *);
extern struct obj *unknwn_contnr_contents(struct obj *);
extern void bill_dummy_object(struct obj *);
extern void costly_alteration(struct obj *, int);
+extern void unknow_object(struct obj *);
extern struct obj *mksobj(int, boolean, boolean);
extern int bcsign(struct obj *);
extern int weight(struct obj *);
-/* NetHack 3.7 invent.c $NHDT-Date: 1620329776 2021/05/06 19:36:16 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.330 $ */
+/* NetHack 3.7 invent.c $NHDT-Date: 1620861205 2021/05/12 23:13:25 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.331 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */
return cnt;
}
-/* hero is losing access to previously known info about an object
- (called when an unseen monster picks up or uses the object) */
-void
-unknow_object(struct obj *obj)
-{
- obj->dknown = 0;
- obj->bknown = obj->rknown = 0;
- obj->cknown = obj->lknown = 0;
- /* awareness of charges or enchantment has gone poof... */
- if (objects[obj->otyp].oc_uses_known)
- obj->known = 0;
-}
-
/*
* Object identification routines:
*/
-/* NetHack 3.7 mkobj.c $NHDT-Date: 1619919403 2021/05/02 01:36:43 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.198 $ */
+/* NetHack 3.7 mkobj.c $NHDT-Date: 1620861208 2021/05/12 23:13:28 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.199 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */
SCROLL_CLASS, GEM_CLASS, SPBOOK_CLASS,
WEAPON_CLASS, TOOL_CLASS, 0 };
+/* some init for a brand new object, or partial re-init when hero loses
+ potentially known info about an object (called when an unseen monster
+ picks up or uses it); moved from invent.c to here for access to dknowns */
+void
+unknow_object(struct obj *obj)
+{
+ obj->dknown = index(dknowns, obj->oclass) ? 0 : 1;
+ if ((obj->otyp >= ELVEN_SHIELD && obj->otyp <= ORCISH_SHIELD)
+ || obj->otyp == SHIELD_OF_REFLECTION
+ || objects[obj->otyp].oc_merge)
+ obj->dknown = 0;
+ /* globs always have dknown flag set (to maximize merging) but for new
+ object, globby flag won't be set yet so isn't available to check */
+ if (Is_pudding(obj))
+ obj->dknown = 1;
+
+ obj->bknown = obj->rknown = 0;
+ obj->cknown = obj->lknown = 0;
+ /* for an existing object, awareness of charges or enchantment has
+ gone poof... [object types which don't use the known flag have
+ it set True for some reason] */
+ obj->known = objects[obj->otyp].oc_uses_known ? 0 : 1;
+}
+
/* mksobj(): create a specific type of object; result it always non-Null */
struct obj *
mksobj(int otyp, boolean init, boolean artif)
otmp->oclass = let;
otmp->otyp = otyp;
otmp->where = OBJ_FREE;
- otmp->dknown = index(dknowns, let) ? 0 : 1;
- if ((otmp->otyp >= ELVEN_SHIELD && otmp->otyp <= ORCISH_SHIELD)
- || otmp->otyp == SHIELD_OF_REFLECTION
- || objects[otmp->otyp].oc_merge)
- otmp->dknown = 0;
- if (!objects[otmp->otyp].oc_uses_known)
- otmp->known = 1;
- otmp->lknown = 0;
- otmp->cknown = 0;
+ unknow_object(otmp); /* set up dknown and known: non-0 for some things */
otmp->corpsenm = NON_PM;
otmp->lua_ref_cnt = 0;
-/* NetHack 3.7 shk.c $NHDT-Date: 1610667899 2021/01/14 23:44:59 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.195 $ */
+/* NetHack 3.7 shk.c $NHDT-Date: 1620861209 2021/05/12 23:13:29 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.197 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2012. */
/* NetHack may be freely redistributed. See license for details. */
struct bill_x *bp, *bp_absorber = (struct bill_x *) 0;
struct monst *shkp = 0;
struct eshk *eshkp;
- long amount, per_unit_cost = set_cost(obj_absorbed, shkp);
+ long amount, per_unit_cost;
boolean floor_absorber = (obj_absorber->where == OBJ_FLOOR);
if (!obj_absorber->globby)
bp_absorber = onbill(obj_absorber, shkp, FALSE);
bp = onbill(obj_absorbed, shkp, FALSE);
eshkp = ESHK(shkp);
+ per_unit_cost = set_cost(obj_absorbed, shkp);
/**************************************************************
* Scenario 1. Shop-owned glob absorbing into shop-owned glob