Split bound_digging function to two
Also remove a DCC 3.0 specific bug define, doubt anyone is using that anymore ...
This commit is contained in:
+32
-22
@@ -22,6 +22,7 @@ static void FDECL(check_ransacked, (char *));
|
|||||||
static void FDECL(migr_booty_item, (int, const char *));
|
static void FDECL(migr_booty_item, (int, const char *));
|
||||||
static void FDECL(migrate_orc, (struct monst *, unsigned long));
|
static void FDECL(migrate_orc, (struct monst *, unsigned long));
|
||||||
static void NDECL(stolen_booty);
|
static void NDECL(stolen_booty);
|
||||||
|
static void FDECL(get_level_extends, (int *, int *, int *, int *));
|
||||||
|
|
||||||
/* adjust a coordinate one step in the specified direction */
|
/* adjust a coordinate one step in the specified direction */
|
||||||
#define mz_move(X, Y, dir) \
|
#define mz_move(X, Y, dir) \
|
||||||
@@ -1224,18 +1225,9 @@ coord *cc;
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* put a non-diggable boundary around the initial portion of a level map.
|
static void
|
||||||
* assumes that no level will initially put things beyond the isok() range.
|
get_level_extends(left, top, right, bottom)
|
||||||
*
|
int *left, *top, *right, *bottom;
|
||||||
* we can't bound unconditionally on the last line with something in it,
|
|
||||||
* because that something might be a niche which was already reachable,
|
|
||||||
* so the boundary would be breached
|
|
||||||
*
|
|
||||||
* we can't bound unconditionally on one beyond the last line, because
|
|
||||||
* that provides a window of abuse for wallified special levels
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
bound_digging()
|
|
||||||
{
|
{
|
||||||
int x, y;
|
int x, y;
|
||||||
unsigned typ;
|
unsigned typ;
|
||||||
@@ -1243,9 +1235,6 @@ bound_digging()
|
|||||||
boolean found, nonwall;
|
boolean found, nonwall;
|
||||||
int xmin, xmax, ymin, ymax;
|
int xmin, xmax, ymin, ymax;
|
||||||
|
|
||||||
if (Is_earthlevel(&u.uz))
|
|
||||||
return; /* everything diggable here */
|
|
||||||
|
|
||||||
found = nonwall = FALSE;
|
found = nonwall = FALSE;
|
||||||
for (xmin = 0; !found && xmin <= COLNO; xmin++) {
|
for (xmin = 0; !found && xmin <= COLNO; xmin++) {
|
||||||
lev = &levl[xmin][0];
|
lev = &levl[xmin][0];
|
||||||
@@ -1306,16 +1295,37 @@ bound_digging()
|
|||||||
}
|
}
|
||||||
ymax += (nonwall || !g.level.flags.is_maze_lev) ? 2 : 1;
|
ymax += (nonwall || !g.level.flags.is_maze_lev) ? 2 : 1;
|
||||||
|
|
||||||
|
*left = xmin;
|
||||||
|
*right = xmax;
|
||||||
|
*top = ymin;
|
||||||
|
*bottom = ymax;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* put a non-diggable boundary around the initial portion of a level map.
|
||||||
|
* assumes that no level will initially put things beyond the isok() range.
|
||||||
|
*
|
||||||
|
* we can't bound unconditionally on the last line with something in it,
|
||||||
|
* because that something might be a niche which was already reachable,
|
||||||
|
* so the boundary would be breached
|
||||||
|
*
|
||||||
|
* we can't bound unconditionally on one beyond the last line, because
|
||||||
|
* that provides a window of abuse for wallified special levels
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
bound_digging()
|
||||||
|
{
|
||||||
|
int x, y;
|
||||||
|
int xmin, xmax, ymin, ymax;
|
||||||
|
|
||||||
|
if (Is_earthlevel(&u.uz))
|
||||||
|
return; /* everything diggable here */
|
||||||
|
|
||||||
|
get_level_extends(&xmin, &ymin, &xmax, &ymax);
|
||||||
|
|
||||||
for (x = 0; x < COLNO; x++)
|
for (x = 0; x < COLNO; x++)
|
||||||
for (y = 0; y < ROWNO; y++)
|
for (y = 0; y < ROWNO; y++)
|
||||||
if (y <= ymin || y >= ymax || x <= xmin || x >= xmax) {
|
if (y <= ymin || y >= ymax || x <= xmin || x >= xmax)
|
||||||
#ifdef DCC30_BUG
|
|
||||||
lev = &levl[x][y];
|
|
||||||
lev->wall_info |= W_NONDIGGABLE;
|
|
||||||
#else
|
|
||||||
levl[x][y].wall_info |= W_NONDIGGABLE;
|
levl[x][y].wall_info |= W_NONDIGGABLE;
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
Reference in New Issue
Block a user