diff --git a/src/monmove.c b/src/monmove.c index 7833795ee..9ce4e0fdf 100644 --- a/src/monmove.c +++ b/src/monmove.c @@ -1964,8 +1964,9 @@ can_hide_under_obj(struct obj *obj) void dissolve_bars(coordxy x, coordxy y) { - levl[x][y].typ = (Is_special(&u.uz) || *in_rooms(x, y, 0)) ? ROOM : CORR; - levl[x][y].flags = 0; + levl[x][y].typ = (levl[x][y].edge == 1) ? DOOR + : (Is_special(&u.uz) || *in_rooms(x, y, 0)) ? ROOM : CORR; + levl[x][y].flags = 0; /* doormask = D_NODOOR */ newsym(x, y); if (u_at(x, y)) switch_terrain(); diff --git a/src/zap.c b/src/zap.c index 06ab216ef..ebfe3788c 100644 --- a/src/zap.c +++ b/src/zap.c @@ -5159,18 +5159,11 @@ zap_over_floor( rangemod -= 3; if (see_it) Norep("The %s melt.", defsyms[S_bars].explanation); + dissolve_bars(x, y); if (*in_rooms(x, y, SHOPBASE)) { - /* in case we ever have a shop bounded by bars */ - lev->typ = ROOM, lev->flags = 0; - if (see_it) - newsym(x, y); add_damage(x, y, (type >= 0) ? SHOP_BARS_COST : 0L); if (type >= 0) *shopdamage = TRUE; - } else { - lev->typ = DOOR, lev->doormask = D_NODOOR; - if (see_it) - newsym(x, y); } } }