unseen wand of striking zapped by unseen monster became known if it hit a door
tweak knight quest messages
guidebook grammar bits
+special level loader wasn't able to place random door in 1x1 room; could
+ trigger divide-by-0 crash for user-developed custom levels
Platform- and/or Interface-Specific Fixes
-/* SCCS Id: @(#)mklev.c 3.5 2001/11/29 */
+/* SCCS Id: @(#)mklev.c 3.5 2006/01/28 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
{
register xchar x, y;
- x = (xl == xh) ? xl : (xl + rn2(xh-xl+1));
- y = (yl == yh) ? yl : (yl + rn2(yh-yl+1));
+ x = rn1(xh - xl + 1, xl);
+ y = rn1(yh - yl + 1, yl);
if(okdoor(x, y))
goto gotit;
-/* SCCS Id: @(#)mkroom.c 3.5 2005/03/12 */
+/* SCCS Id: @(#)mkroom.c 3.5 2006/01/28 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
int roomno;
{
static coord buf;
+ int delta;
struct mkroom *troom = &rooms[roomno - ROOMOFFSET];
- buf.x = troom->lx + ((troom->hx - troom->lx) / 2);
- buf.y = troom->ly + ((troom->hy - troom->ly) / 2);
- return(&buf);
+ /* if width and height are odd, placement will be the exact center;
+ if either or both are even, center point is a hypothetical spot
+ between map locations and placement will be adjacent to that */
+ delta = troom->hx - troom->lx;
+ buf.x = troom->lx + delta / 2;
+ if ((delta % 2) && rn2(2)) buf.x++;
+ delta = troom->hy - troom->ly;
+ buf.y = troom->ly + delta / 2;
+ if ((delta % 2) && rn2(2)) buf.y++;
+ return &buf;
}
STATIC_OVL void
somex(croom)
register struct mkroom *croom;
{
- return rn2(croom->hx-croom->lx+1) + croom->lx;
+ return rn1(croom->hx - croom->lx + 1, croom->lx);
}
int
somey(croom)
register struct mkroom *croom;
{
- return rn2(croom->hy-croom->ly+1) + croom->ly;
+ return rn1(croom->hy - croom->ly + 1, croom->ly);
}
boolean
-/* SCCS Id: @(#)sp_lev.c 3.5 2006/01/02 */
+/* SCCS Id: @(#)sp_lev.c 3.5 2006/01/28 */
/* Copyright (c) 1989 by Jean-Christophe Collet */
/* NetHack may be freely redistributed. See license for details. */
dpos = dd->pos;
if (dpos == -1) /* The position is RANDOM */
dpos = rn2((dwall == W_WEST || dwall == W_EAST) ?
- (broom->hy - broom->ly) : (broom->hx - broom->lx));
+ (broom->hy - broom->ly + 1) :
+ (broom->hx - broom->lx + 1));
/* Convert wall and pos into an absolute coordinate! */