generic object fix
When hallucinating, random object selection for objects was including the new generic objects. It was already excluding 'strange object' by using 'rn2(NUM_OBJECTS - 1) + 1' to skip objects[0]; changing that to be 'rn2(NUM_OBJECTS - MAXOCLASSES) + MAXOCLASSES' will skip the first 18 objects, 'strange object' plus the 17 generic objects. (I'm trying to convince myself that there's no off-by-1 or off-by-N error and think I've succeeded.)
This commit is contained in:
@@ -1457,6 +1457,10 @@ adding command line 'nethack --usage' broke 'nethack -u name' (however,
|
||||
being hit by a big monster and getting knockback effect could send hero out
|
||||
of a shop (or into its "free spot") while carrying unpaid goods;
|
||||
robbery wasn't noticed until hero eventually moved to a different spot
|
||||
hallucination of objects incorrectly included generic objects as candidates
|
||||
for what objects looked like; if an object had its dknown flag set,
|
||||
formatting a generic object in its place was unreliable (Null pointer
|
||||
deference prior to static analyzer fix, odd fake name "generic" after)
|
||||
|
||||
curses: 'msg_window' option wasn't functional for curses unless the binary
|
||||
also included tty support
|
||||
|
||||
@@ -180,9 +180,11 @@
|
||||
* random_object()
|
||||
*
|
||||
* Respectively return a random monster or object.
|
||||
* random_object() won't return STRANGE_OBJECT or the generic objects.
|
||||
* -/+ MAXOCLASSES is used to skip it and them.
|
||||
*/
|
||||
#define random_monster(rng) rng(NUMMONS)
|
||||
#define random_object(rng) (rng(NUM_OBJECTS - 1) + 1)
|
||||
#define random_monster(rng) ((*rng)(NUMMONS))
|
||||
#define random_object(rng) ((*rng)(NUM_OBJECTS - MAXOCLASSES) + MAXOCLASSES)
|
||||
|
||||
/*
|
||||
* what_obj()
|
||||
|
||||
@@ -332,10 +332,11 @@ look_at_object(
|
||||
}
|
||||
|
||||
static void
|
||||
look_at_monster(char *buf,
|
||||
char *monbuf, /* buf: output, monbuf: optional output */
|
||||
struct monst *mtmp,
|
||||
coordxy x, coordxy y)
|
||||
look_at_monster(
|
||||
char *buf,
|
||||
char *monbuf, /* buf: output, monbuf: optional output */
|
||||
struct monst *mtmp,
|
||||
coordxy x, coordxy y)
|
||||
{
|
||||
char *name, monnambuf[BUFSZ], healthbuf[BUFSZ];
|
||||
boolean accurate = !Hallucination;
|
||||
|
||||
Reference in New Issue
Block a user