MAXY
for (i = 0; i < MAXY; i++)
item[33][MAXY - 1] = 0;
my = rnd(MAXY - 2);
if (yy >= MAXY - 3) /* north */
for (i = 0; i < MAXY; i++) {
ty = rnd(MAXY - 9) + 1; /* upper left corner of room */
playery = rnd(MAXY - 2);
y = rnd(MAXY - 2);
if (y > MAXY - 2)
y = MAXY - 2;
y = rnd(MAXY - 2);
for (i = 0; i < MAXY; i++)
for (y = 0; y < MAXY; y++)
for (i = 0; i < MAXY; i++)
for (j = 0; j < MAXY; j++)
short hitp[MAXX][MAXY]; /* monster hp on level */
short iarg[MAXX][MAXY]; /* arg for the item array */
char item[MAXX][MAXY]; /* objects in maze if any */
char know[MAXX][MAXY]; /* 1 or 0 if here before */
char mitem[MAXX][MAXY]; /* monster item array */
char moved[MAXX][MAXY]; /* monster movement flags */
char stealth[MAXX][MAXY]; /* 0=sleeping 1=awake monst */
for (j = 0; j < MAXY; j++)
if (cell[p * MAXX * MAXY + i * MAXY + j].item == l)
for (i = 0; i < MAXY; i++) {
lwrite((char *)&cell[k * MAXX * MAXY], sizeof(struct cel) * MAXY * MAXX);
lrfill((char *)&cell[k * MAXX * MAXY], sizeof(struct cel) * MAXY * MAXX);
int d_xmin = 0, d_xmax = MAXX, d_ymin = 0, d_ymax = MAXY;
char screen[MAXX][MAXY], d_flag; /* template for the screen */
if (d_xmin == 0 && d_xmax == MAXX && d_ymin == 0 && d_ymax == MAXY) {
d_xmin = 0, d_xmax = MAXX, d_ymin = 0, d_ymax = MAXY; /* for limited screen drawing */
if (maxy > MAXY - 1)
maxy = MAXY - 1;
if (l < 0 || l >= MAXX || n < 0 || n >= MAXY) {
if (l == 33 && n == MAXY - 1 && level == 1) {
for (n = 0; n < MAXY; n++)
if (++playery >= MAXY - 1) {
if (playery == MAXY - 1 && playerx == 33) /* not in entrance */
extern char item[MAXX][MAXY], iven[], know[MAXX][MAXY], larnlevels[], lastmonst[];
extern char *lpnt, moved[MAXX][MAXY], mitem[MAXX][MAXY], monstlevel[];
extern char screen[MAXX][MAXY], sex, *spelcode[], *speldescript[];
extern char splev[], stealth[MAXX][MAXY], to_lower[], to_upper[], wizard;
extern short diroffx[], diroffy[], hitflag, hit2flag, hit3flag, hitp[MAXX][MAXY];
extern short iarg[MAXX][MAXY], ivenarg[], lasthx, lasthy, lastnum, lastpx, lastpy;
cell = malloc(sizeof(struct cel) * (MAXLEVEL + MAXVLEVEL) * MAXX * MAXY);
draws(0, MAXX, 0, (count > MAXY) ? MAXY : count);
if (j >= MAXY)
for (i = 0; i < MAXY; i++)
for (i = 1; i < MAXY; i++) {
for (i = MAXY; i < MAXY + MAXX; i++) {
item[i - MAXY][MAXY - 1] = i;
iarg[i - MAXY][MAXY - 1] = 0;
for (i = MAXX + MAXY; i < MAXX + MAXY + MAXY; i++) {
item[MAXX - 1][i - MAXX - MAXY] = i;
iarg[MAXX - 1][i - MAXX - MAXY] = 0;
if (*y >= MAXY) {
*y = MAXY - 1;
if (y >= MAXY - 1)
y = MAXY - 2;
if ((y >= 0) && (y <= MAXY - 1) && (x >= 0) && (x <= MAXX - 1))
for (i = max(1, y - 2); i < min(y + 3, MAXY - 1); i++) {
(y != MAXY - 1))
draws(0, MAXX, 0, MAXY);
yh = min(playery + 1, MAXY - 2);
save = malloc(sizeof(struct isave) * MAXX * MAXY * 2);
for (j = 0; j < MAXY; j++)
item[33][MAXY - 1] = 0;
for (j = rnd(MAXY - 2), i = 1; i < MAXX - 1; i++)
for (trys = 100, i = j = 1; --trys > 0 && item[i][j]; i = rnd(MAXX - 1), j = rnd(MAXY - 1))
for (trys = 100, i = j = 1; --trys > 0 && (item[i][j] == OWALL || mitem[i][j]); i = rnd(MAXX - 1), j = rnd(MAXY - 1))
draws(0, MAXX, 0, MAXY);
if ((x > MAXX - 1) || (y > MAXY - 1) || (x < 0) || (y < 0)) {
if ((x < MAXX - 1) && (y < MAXY - 1) && (x) && (y)) {
if (yl >= MAXY)
yl = MAXY - 1;
if (tmp2 > MAXY)
tmp2 = MAXY;
if (tmp2 > MAXY - 1)
tmp2 = MAXY - 1;
for (i = 0; i < MAXY; i++)
draws(0, MAXX, 0, MAXY);
draws(0, MAXX, 0, MAXY);
playery = MAXY - 2;
item[33][MAXY - 1] = know[33][MAXY - 1] = mitem[33][MAXY - 1] = 0;
draws(0, MAXX, 0, MAXY);
for (i = 0; i < MAXY; i++)
i = MAXY;
draws(0, MAXX, 0, MAXY);
for (i = 0; i < MAXY; i++)
i = MAXY;
draws(0, MAXX, 0, MAXY);
draws(0, MAXX, 0, MAXY);
draws(0, MAXX, 0, MAXY);
draws(0, MAXX, 0, MAXY);
playery = rnd(MAXY - 2);
draws(0, MAXX, 0, MAXY);
for (i = 0; i < MAXY; i++)
for (i = 0; i < MAXY; i++)
for (i = 0; i < MAXY; i++)
for (i = 0; i < MAXY; i++)
draws(0, MAXX, 0, MAXY); /* potion of forgetfulness */
yh = min(playery + 7, MAXY);
for (i = 0; i < MAXY; i++)
pcel = &cell[level * MAXX * MAXY]; /* pointer to this level's cells */
pecel = pcel + MAXX * MAXY; /* pointer to past end of this level's cells */
pcel = &cell[level * MAXX * MAXY]; /* pointer to this level's cells */
pecel = pcel + MAXX * MAXY; /* pointer to past end of this level's cells */