filled trap doors on castle can be re-dug
This commit is contained in:
@@ -72,6 +72,7 @@ mimic should not mimic a boulder while on a pit or hole location
|
|||||||
reviving invisible troll could appear visible until it moves
|
reviving invisible troll could appear visible until it moves
|
||||||
adjust some of the shop repair messages
|
adjust some of the shop repair messages
|
||||||
charge for reviving a shop owned corpse or reanimating a shop owned statue
|
charge for reviving a shop owned corpse or reanimating a shop owned statue
|
||||||
|
filled trap doors on castle can be re-dug
|
||||||
|
|
||||||
|
|
||||||
Platform- and/or Interface-Specific Fixes
|
Platform- and/or Interface-Specific Fixes
|
||||||
|
|||||||
@@ -340,6 +340,7 @@ struct rm {
|
|||||||
Bitfield(waslit,1); /* remember if a location was lit */
|
Bitfield(waslit,1); /* remember if a location was lit */
|
||||||
Bitfield(roomno,6); /* room # for special rooms */
|
Bitfield(roomno,6); /* room # for special rooms */
|
||||||
Bitfield(edge,1); /* marks boundaries for special rooms*/
|
Bitfield(edge,1); /* marks boundaries for special rooms*/
|
||||||
|
Bitfield(candig,1); /* Exception to Can_dig_down; was a trapdoor */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
+2
-1
@@ -2839,7 +2839,8 @@ do_break_wand(obj)
|
|||||||
fillmsg = TRUE;
|
fillmsg = TRUE;
|
||||||
} else
|
} else
|
||||||
digactualhole(x, y, BY_OBJECT,
|
digactualhole(x, y, BY_OBJECT,
|
||||||
(rn2(obj->spe) < 3 || !Can_dig_down(&u.uz)) ?
|
(rn2(obj->spe) < 3 ||
|
||||||
|
(!Can_dig_down(&u.uz) && !levl[x][y].candig)) ?
|
||||||
PIT : HOLE);
|
PIT : HOLE);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -186,7 +186,8 @@ dig_check(madeby, verbose, x, y)
|
|||||||
} else if ((IS_ROCK(levl[x][y].typ) && levl[x][y].typ != SDOOR &&
|
} else if ((IS_ROCK(levl[x][y].typ) && levl[x][y].typ != SDOOR &&
|
||||||
(levl[x][y].wall_info & W_NONDIGGABLE) != 0)
|
(levl[x][y].wall_info & W_NONDIGGABLE) != 0)
|
||||||
|| (ttmp &&
|
|| (ttmp &&
|
||||||
(ttmp->ttyp == MAGIC_PORTAL || !Can_dig_down(&u.uz)))) {
|
(ttmp->ttyp == MAGIC_PORTAL ||
|
||||||
|
(!Can_dig_down(&u.uz) && !levl[x][y].candig)))) {
|
||||||
if(verbose) pline_The("%s here is too hard to %s.",
|
if(verbose) pline_The("%s here is too hard to %s.",
|
||||||
surface(x,y), verb);
|
surface(x,y), verb);
|
||||||
return(FALSE);
|
return(FALSE);
|
||||||
@@ -513,7 +514,7 @@ int ttyp;
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ttyp != PIT && !Can_dig_down(&u.uz)) {
|
if (ttyp != PIT && (!Can_dig_down(&u.uz) && !lev->candig)) {
|
||||||
impossible("digactualhole: can't dig %s on this level.",
|
impossible("digactualhole: can't dig %s on this level.",
|
||||||
defsyms[trap_to_defsym(ttyp)].explanation);
|
defsyms[trap_to_defsym(ttyp)].explanation);
|
||||||
ttyp = PIT;
|
ttyp = PIT;
|
||||||
@@ -676,7 +677,7 @@ boolean pit_only;
|
|||||||
struct rm *lev = &levl[u.ux][u.uy];
|
struct rm *lev = &levl[u.ux][u.uy];
|
||||||
struct obj *boulder_here;
|
struct obj *boulder_here;
|
||||||
schar typ;
|
schar typ;
|
||||||
boolean nohole = !Can_dig_down(&u.uz);
|
boolean nohole = (!Can_dig_down(&u.uz) && !lev->candig);
|
||||||
|
|
||||||
if ((ttmp && (ttmp->ttyp == MAGIC_PORTAL || nohole)) ||
|
if ((ttmp && (ttmp->ttyp == MAGIC_PORTAL || nohole)) ||
|
||||||
(IS_ROCK(lev->typ) && lev->typ != SDOOR &&
|
(IS_ROCK(lev->typ) && lev->typ != SDOOR &&
|
||||||
|
|||||||
@@ -174,6 +174,8 @@ moverock()
|
|||||||
deltrap(ttmp);
|
deltrap(ttmp);
|
||||||
delobj(otmp);
|
delobj(otmp);
|
||||||
bury_objs(rx, ry);
|
bury_objs(rx, ry);
|
||||||
|
levl[rx][ry].wall_info &= ~W_NONDIGGABLE;
|
||||||
|
levl[rx][ry].candig = 1;
|
||||||
if (cansee(rx,ry)) newsym(rx,ry);
|
if (cansee(rx,ry)) newsym(rx,ry);
|
||||||
continue;
|
continue;
|
||||||
case LEVEL_TELEP:
|
case LEVEL_TELEP:
|
||||||
|
|||||||
+1
-1
@@ -655,7 +655,7 @@ mon_tele:
|
|||||||
pline_The("digging ray is ineffective.");
|
pline_The("digging ray is ineffective.");
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
if (!Can_dig_down(&u.uz)) {
|
if (!Can_dig_down(&u.uz) && !levl[mtmp->mx][mtmp->my].candig) {
|
||||||
if(canseemon(mtmp))
|
if(canseemon(mtmp))
|
||||||
pline_The("%s here is too hard to dig in.",
|
pline_The("%s here is too hard to dig in.",
|
||||||
surface(mtmp->mx, mtmp->my));
|
surface(mtmp->mx, mtmp->my));
|
||||||
|
|||||||
+2
-1
@@ -333,7 +333,8 @@ boolean td; /* td == TRUE : trap door or hole */
|
|||||||
|
|
||||||
if (In_sokoban(&u.uz) && Can_fall_thru(&u.uz))
|
if (In_sokoban(&u.uz) && Can_fall_thru(&u.uz))
|
||||||
; /* KMH -- You can't escape the Sokoban level traps */
|
; /* KMH -- You can't escape the Sokoban level traps */
|
||||||
else if(Levitation || u.ustuck || !Can_fall_thru(&u.uz)
|
else if(Levitation || u.ustuck
|
||||||
|
|| (!Can_fall_thru(&u.uz) && !levl[u.ux][u.uy].candig)
|
||||||
|| Flying || is_clinger(youmonst.data)
|
|| Flying || is_clinger(youmonst.data)
|
||||||
|| (Inhell && !u.uevent.invoked &&
|
|| (Inhell && !u.uevent.invoked &&
|
||||||
newlevel == dunlevs_in_dungeon(&u.uz))
|
newlevel == dunlevs_in_dungeon(&u.uz))
|
||||||
|
|||||||
Reference in New Issue
Block a user