Remove melting ice timeouts when terrain changes
If special level lua code creates a melting ice timeout, but later in the code places stairs, or a trap which might change the ice to room floor, the timer sanity checking doesn't like that.
This commit is contained in:
@@ -1635,6 +1635,9 @@ mkstairs(xchar x, xchar y,
|
|||||||
dest.dlevel = u.uz.dlevel + (up ? -1 : 1);
|
dest.dlevel = u.uz.dlevel + (up ? -1 : 1);
|
||||||
stairway_add(x, y, up ? TRUE : FALSE, FALSE, &dest);
|
stairway_add(x, y, up ? TRUE : FALSE, FALSE, &dest);
|
||||||
|
|
||||||
|
if (levl[x][y].typ == ICE)
|
||||||
|
spot_stop_timers(x, y, MELT_ICE_AWAY);
|
||||||
|
|
||||||
levl[x][y].typ = STAIRS;
|
levl[x][y].typ = STAIRS;
|
||||||
levl[x][y].ladder = up ? LA_UP : LA_DOWN;
|
levl[x][y].ladder = up ? LA_UP : LA_DOWN;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -348,6 +348,7 @@ maketrap(int x, int y, int typ)
|
|||||||
boolean oldplace;
|
boolean oldplace;
|
||||||
struct trap *ttmp;
|
struct trap *ttmp;
|
||||||
struct rm *lev = &levl[x][y];
|
struct rm *lev = &levl[x][y];
|
||||||
|
boolean was_ice = (lev->typ == ICE);
|
||||||
|
|
||||||
if ((ttmp = t_at(x, y)) != 0) {
|
if ((ttmp = t_at(x, y)) != 0) {
|
||||||
if (undestroyable_trap(ttmp->ttyp))
|
if (undestroyable_trap(ttmp->ttyp))
|
||||||
@@ -459,6 +460,8 @@ maketrap(int x, int y, int typ)
|
|||||||
: DOOR;
|
: DOOR;
|
||||||
|
|
||||||
unearth_objs(x, y);
|
unearth_objs(x, y);
|
||||||
|
if (was_ice && lev->typ != ICE)
|
||||||
|
spot_stop_timers(x, y, MELT_ICE_AWAY);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user