Make lua map and terrain commands use same routine
This commit is contained in:
+11
-26
@@ -5216,6 +5216,7 @@ selection_iterate(
|
|||||||
(*func)(x, y, arg);
|
(*func)(x, y, arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* change map location terrain type during level creation */
|
||||||
static void
|
static void
|
||||||
sel_set_ter(coordxy x, coordxy y, genericptr_t arg)
|
sel_set_ter(coordxy x, coordxy y, genericptr_t arg)
|
||||||
{
|
{
|
||||||
@@ -5231,7 +5232,11 @@ sel_set_ter(coordxy x, coordxy y, genericptr_t arg)
|
|||||||
levl[x][y].doormask = D_CLOSED;
|
levl[x][y].doormask = D_CLOSED;
|
||||||
if (x && (IS_WALL(levl[x - 1][y].typ) || levl[x - 1][y].horizontal))
|
if (x && (IS_WALL(levl[x - 1][y].typ) || levl[x - 1][y].horizontal))
|
||||||
levl[x][y].horizontal = 1;
|
levl[x][y].horizontal = 1;
|
||||||
}
|
} else if (levl[x][y].typ == HWALL
|
||||||
|
|| levl[x][y].typ == IRONBARS)
|
||||||
|
levl[x][y].horizontal = 1;
|
||||||
|
else if (splev_init_present && levl[x][y].typ == ICE)
|
||||||
|
levl[x][y].icedpool = icedpools ? ICED_POOL : ICED_MOAT;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -6715,6 +6720,7 @@ TODO: gc.coder->croom needs to be updated
|
|||||||
reset_xystart_size();
|
reset_xystart_size();
|
||||||
} else {
|
} else {
|
||||||
coordxy mptyp;
|
coordxy mptyp;
|
||||||
|
terrain terr;
|
||||||
|
|
||||||
/* Themed rooms should never overwrite anything */
|
/* Themed rooms should never overwrite anything */
|
||||||
if (gi.in_mk_themerooms) {
|
if (gi.in_mk_themerooms) {
|
||||||
@@ -6757,37 +6763,16 @@ TODO: gc.coder->croom needs to be updated
|
|||||||
}
|
}
|
||||||
if (mptyp >= MAX_TYPE)
|
if (mptyp >= MAX_TYPE)
|
||||||
continue;
|
continue;
|
||||||
selection_setpoint(x, y, sel, 1);
|
|
||||||
levl[x][y].typ = mptyp;
|
|
||||||
levl[x][y].lit = lit;
|
|
||||||
/* clear out levl: load_common_data may set them */
|
/* clear out levl: load_common_data may set them */
|
||||||
levl[x][y].flags = 0;
|
levl[x][y].flags = 0;
|
||||||
levl[x][y].horizontal = 0;
|
levl[x][y].horizontal = 0;
|
||||||
levl[x][y].roomno = 0;
|
levl[x][y].roomno = 0;
|
||||||
levl[x][y].edge = 0;
|
levl[x][y].edge = 0;
|
||||||
SpLev_Map[x][y] = 1;
|
SpLev_Map[x][y] = 1;
|
||||||
/*
|
selection_setpoint(x, y, sel, 1);
|
||||||
* Set secret doors to closed (why not trapped too?). Set
|
terr.ter = mptyp;
|
||||||
* the horizontal bit.
|
terr.tlit = lit;
|
||||||
*/
|
sel_set_ter(x, y, &terr);
|
||||||
if (levl[x][y].typ == SDOOR || IS_DOOR(levl[x][y].typ)) {
|
|
||||||
if (levl[x][y].typ == SDOOR)
|
|
||||||
levl[x][y].doormask = D_CLOSED;
|
|
||||||
/*
|
|
||||||
* If there is a wall to the left that connects to a
|
|
||||||
* (secret) door, then it is horizontal. This does
|
|
||||||
* not allow (secret) doors to be corners of rooms.
|
|
||||||
*/
|
|
||||||
if (x != gx.xstart && (IS_WALL(levl[x - 1][y].typ)
|
|
||||||
|| levl[x - 1][y].horizontal))
|
|
||||||
levl[x][y].horizontal = 1;
|
|
||||||
} else if (levl[x][y].typ == HWALL
|
|
||||||
|| levl[x][y].typ == IRONBARS)
|
|
||||||
levl[x][y].horizontal = 1;
|
|
||||||
else if (levl[x][y].typ == LAVAPOOL)
|
|
||||||
levl[x][y].lit = 1;
|
|
||||||
else if (splev_init_present && levl[x][y].typ == ICE)
|
|
||||||
levl[x][y].icedpool = icedpools ? ICED_POOL : ICED_MOAT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user