MAXX
for (j = 0; j < MAXX; j++)
for (i = 1; i < MAXX - 1; i++)
if (xx >= MAXX - 3) /* east */
for (j = 0; j < MAXX; j++) {
for (tx = 1 + rnd(10); tx < MAXX - 10; tx += 10)
troom(lv, xsize, ysize, tx = tx + rnd(MAXX - 24), ty, rnd(3) + 6);
playerx = rnd(MAXX - 2);
x = rnd(MAXX - 2);
if (x > MAXX - 2)
x = MAXX - 2;
x = rnd(MAXX - 2);
for (j = 0; j < MAXX; j++)
for (x = 0; x < MAXX; x++)
for (j = 0; j < MAXX; j++)
for (i = 0; i < MAXX; i++)
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 (i = 0; i < MAXX; i++)
if (cell[p * MAXX * MAXY + i * MAXY + j].item == l)
for (j = 0; j < MAXX; j++)
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;
if (xmin == 0 && xmax == MAXX) {
if (xmin <= 0 && xmax == MAXX) {
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 (maxx > MAXX - 1)
maxx = MAXX - 1;
if (l < 0 || l >= MAXX || n < 0 || n >= MAXY) {
for (l = 0; l < MAXX; l++)
draws(0, MAXX, 0, number);
if (++playerx >= MAXX - 1) {
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 (i >= MAXX)
for (j = 0; j < MAXX; j++)
for (i = MAXX - 1; i > MAXX - 1 - MAXPOTION; i--)
if (strlen(potionname[i - MAXX + MAXPOTION]) > 2) { /* no null items */
iarg[i][0] = i - MAXX + MAXPOTION;
for (i = MAXY; i < MAXY + MAXX; i++) {
for (i = MAXX + MAXY; i < MAXX + MAXY + MAXY; i++) {
item[MAXX - 1][i - MAXX - MAXY] = i;
iarg[MAXX - 1][i - MAXX - MAXY] = 0;
if (*x >= MAXX) {
*x = MAXX - 1;
if (x >= MAXX - 1)
x = MAXX - 2;
if ((y >= 0) && (y <= MAXY - 1) && (x >= 0) && (x <= MAXX - 1))
for (j = max(1, x - 2); j < min(x + 3, MAXX - 1); j++)
draws(0, MAXX, 0, MAXY);
xh = min(playerx + 1, MAXX - 2);
save = malloc(sizeof(struct isave) * MAXX * MAXY * 2);
for (i = 0; i < MAXX; i++) { /* save all items and monsters */
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 (xl >= MAXX)
xl = MAXX - 1;
if (tmp4 > MAXX)
tmp4 = MAXX;
if (tmp4 > MAXX - 1)
tmp4 = MAXX - 1;
for (j = 0; j < MAXX; j++)
draws(0, MAXX, 0, MAXY);
draws(0, MAXX, 0, MAXY);
draws(0, MAXX, 0, MAXY);
for (j = 0; j < MAXX; j++) /* put player near volcano shaft */
j = MAXX;
draws(0, MAXX, 0, MAXY);
for (j = 0; j < MAXX; j++) /* put player near volcano shaft */
j = MAXX;
draws(0, MAXX, 0, MAXY);
draws(0, MAXX, 0, MAXY);
draws(0, MAXX, 0, MAXY);
draws(0, MAXX, 0, MAXY);
playerx = rnd(MAXX - 2);
draws(0, MAXX, 0, MAXY);
for (j = 0; j < MAXX; j++)
for (j = 0; j < MAXX; j++) {
for (j = 0; j < MAXX; j++)
for (j = 0; j < MAXX; j++)
draws(0, MAXX, 0, MAXY); /* potion of forgetfulness */
xh = min(playerx + 25, MAXX);
for (j = 0; j < MAXX; j++)
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 */