flying hero should be able to pass through a hole using '>'
This commit is contained in:
@@ -12,6 +12,7 @@ fix internal self-recover to work with recent fields added to checkpoint file
|
|||||||
improvements to pronoun usage when hallucinating
|
improvements to pronoun usage when hallucinating
|
||||||
function calls made from mapglyph based on dungeon level are now called once
|
function calls made from mapglyph based on dungeon level are now called once
|
||||||
per level
|
per level
|
||||||
|
flying hero could not use a hole deliberately with '>'
|
||||||
|
|
||||||
|
|
||||||
Fixes to Pre-3.7.0 Problems that Were Exposed Via git Repository
|
Fixes to Pre-3.7.0 Problems that Were Exposed Via git Repository
|
||||||
|
|||||||
+1
-1
@@ -2603,7 +2603,7 @@ E boolean FDECL(burnarmor, (struct monst *));
|
|||||||
E int FDECL(erode_obj, (struct obj *, const char *, int, int));
|
E int FDECL(erode_obj, (struct obj *, const char *, int, int));
|
||||||
E boolean FDECL(grease_protect, (struct obj *, const char *, struct monst *));
|
E boolean FDECL(grease_protect, (struct obj *, const char *, struct monst *));
|
||||||
E struct trap *FDECL(maketrap, (int, int, int));
|
E struct trap *FDECL(maketrap, (int, int, int));
|
||||||
E void FDECL(fall_through, (BOOLEAN_P));
|
E void FDECL(fall_through, (BOOLEAN_P, unsigned));
|
||||||
E struct monst *FDECL(animate_statue,
|
E struct monst *FDECL(animate_statue,
|
||||||
(struct obj *, XCHAR_P, XCHAR_P, int, int *));
|
(struct obj *, XCHAR_P, XCHAR_P, int, int *));
|
||||||
E struct monst *FDECL(activate_statue_trap,
|
E struct monst *FDECL(activate_statue_trap,
|
||||||
|
|||||||
+1
-1
@@ -1042,7 +1042,7 @@ dokick()
|
|||||||
return 1;
|
return 1;
|
||||||
} else if (!rn2(4)) {
|
} else if (!rn2(4)) {
|
||||||
if (dunlev(&u.uz) < dunlevs_in_dungeon(&u.uz)) {
|
if (dunlev(&u.uz) < dunlevs_in_dungeon(&u.uz)) {
|
||||||
fall_through(FALSE);
|
fall_through(FALSE, 0);
|
||||||
return 1;
|
return 1;
|
||||||
} else
|
} else
|
||||||
goto ouch;
|
goto ouch;
|
||||||
|
|||||||
+11
-6
@@ -440,13 +440,15 @@ int x, y, typ;
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
fall_through(td)
|
fall_through(td, ftflags)
|
||||||
boolean td; /* td == TRUE : trap door or hole */
|
boolean td; /* td == TRUE : trap door or hole */
|
||||||
|
unsigned ftflags;
|
||||||
{
|
{
|
||||||
d_level dtmp;
|
d_level dtmp;
|
||||||
char msgbuf[BUFSZ];
|
char msgbuf[BUFSZ];
|
||||||
const char *dont_fall = 0;
|
const char *dont_fall = 0;
|
||||||
int newlevel, bottom;
|
int newlevel, bottom;
|
||||||
|
struct trap *t = (struct trap *) 0;
|
||||||
|
|
||||||
/* we'll fall even while levitating in Sokoban; otherwise, if we
|
/* we'll fall even while levitating in Sokoban; otherwise, if we
|
||||||
won't fall and won't be told that we aren't falling, give up now */
|
won't fall and won't be told that we aren't falling, give up now */
|
||||||
@@ -469,10 +471,9 @@ boolean td; /* td == TRUE : trap door or hole */
|
|||||||
} while (!rn2(4) && newlevel < bottom);
|
} while (!rn2(4) && newlevel < bottom);
|
||||||
|
|
||||||
if (td) {
|
if (td) {
|
||||||
struct trap *t = t_at(u.ux, u.uy);
|
t = t_at(u.ux, u.uy);
|
||||||
|
|
||||||
feeltrap(t);
|
feeltrap(t);
|
||||||
if (!Sokoban) {
|
if (!Sokoban && !(ftflags & TOOKPLUNGE)) {
|
||||||
if (t->ttyp == TRAPDOOR)
|
if (t->ttyp == TRAPDOOR)
|
||||||
pline("A trap door opens up under you!");
|
pline("A trap door opens up under you!");
|
||||||
else
|
else
|
||||||
@@ -484,7 +485,8 @@ boolean td; /* td == TRUE : trap door or hole */
|
|||||||
if (Sokoban && Can_fall_thru(&u.uz))
|
if (Sokoban && 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
|
else if (Levitation || u.ustuck
|
||||||
|| (!Can_fall_thru(&u.uz) && !levl[u.ux][u.uy].candig) || Flying
|
|| (!Can_fall_thru(&u.uz) && !levl[u.ux][u.uy].candig)
|
||||||
|
|| (Flying && !(ftflags & TOOKPLUNGE))
|
||||||
|| is_clinger(g.youmonst.data)
|
|| is_clinger(g.youmonst.data)
|
||||||
|| (Inhell && !u.uevent.invoked && newlevel == bottom)) {
|
|| (Inhell && !u.uevent.invoked && newlevel == bottom)) {
|
||||||
dont_fall = "don't fall in.";
|
dont_fall = "don't fall in.";
|
||||||
@@ -503,6 +505,9 @@ boolean td; /* td == TRUE : trap door or hole */
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (Flying && (ftflags & TOOKPLUNGE) && td && t)
|
||||||
|
You("swoop down %s!", (t->ttyp == TRAPDOOR)
|
||||||
|
? "through the trap door" : "into the gaping hole");
|
||||||
|
|
||||||
if (*u.ushops)
|
if (*u.ushops)
|
||||||
shopdig(1);
|
shopdig(1);
|
||||||
@@ -1283,7 +1288,7 @@ unsigned trflags;
|
|||||||
defsyms[trap_to_defsym(ttype)].explanation);
|
defsyms[trap_to_defsym(ttype)].explanation);
|
||||||
break; /* don't activate it after all */
|
break; /* don't activate it after all */
|
||||||
}
|
}
|
||||||
fall_through(TRUE);
|
fall_through(TRUE, (trflags & TOOKPLUNGE));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TELEP_TRAP:
|
case TELEP_TRAP:
|
||||||
|
|||||||
Reference in New Issue
Block a user