flying into pits
In the newsgroup recently, someone mentioned that when polymorphed into
a flying monster, he couldn't retrieve items out of pits, even with the '>'
command. I thought that we had fixed that, but the fix apparently only
covered walk-through-wall creatures (xorns and earth elementals), not flyers
and ceiling clingers. Now those can also deliberately enter pits via '>'.
The fixes entry is in the new features section in order to be next to
the xorn one. '>' at pit locations is new, but it handles something which
was missing so feels more like a bug fix than a new feature to me....
[Keni, the bug page entry C343-12 about '>' (for xorns?) is general enough
to cover this fix, so we don't need to add a new one for flyers.]
I noticed an unrelated fixes35.0 entry mentioning '>' which was duplicated;
this removes one of the copies.
This commit is contained in:
+1
-1
@@ -344,7 +344,6 @@ better handling for Fort Ludios and endgame in wizard mode's `^V ?' menu
|
|||||||
no free lunch for gelatinous cubes eating scrolls of mail
|
no free lunch for gelatinous cubes eating scrolls of mail
|
||||||
eating gold in front of the vault guard will make the guard angry
|
eating gold in front of the vault guard will make the guard angry
|
||||||
calculate engulf time differently for non-digestion attacks than for digestion
|
calculate engulf time differently for non-digestion attacks than for digestion
|
||||||
shattering a monster's weapon didn't work as intended for stack of N>1
|
|
||||||
preform autopickup and/or report on objects at the spot when a failed #untrap
|
preform autopickup and/or report on objects at the spot when a failed #untrap
|
||||||
attempt causes the hero to move onto a trap's location
|
attempt causes the hero to move onto a trap's location
|
||||||
shattering a monster's weapon didn't work as intended for stack of N>1
|
shattering a monster's weapon didn't work as intended for stack of N>1
|
||||||
@@ -921,6 +920,7 @@ build-from-source: dlb utility can handle arbitrary number of files
|
|||||||
General New Features
|
General New Features
|
||||||
--------------------
|
--------------------
|
||||||
when you're teetering on the edge of a pit you can use '>' to enter the pit
|
when you're teetering on the edge of a pit you can use '>' to enter the pit
|
||||||
|
when you're flying over a pit you can use '>' to enter the pit
|
||||||
when asked for a direction, a response of '?' yields help and then asks again
|
when asked for a direction, a response of '?' yields help and then asks again
|
||||||
when adding an item to inventory, try to stack it with the quiver slot
|
when adding an item to inventory, try to stack it with the quiver slot
|
||||||
before trying against other carried objects
|
before trying against other carried objects
|
||||||
|
|||||||
+5
-1
@@ -1324,7 +1324,11 @@ dohide()
|
|||||||
{
|
{
|
||||||
boolean ismimic = youmonst.data->mlet == S_MIMIC;
|
boolean ismimic = youmonst.data->mlet == S_MIMIC;
|
||||||
|
|
||||||
if ((u.utrap && u.utraptype != TT_PIT) || u.ustuck) {
|
if (u.ustuck ||
|
||||||
|
(u.utrap &&
|
||||||
|
/* floor hiders (trapper) can hide while stuck in pits,
|
||||||
|
ceiling hiders can't (after using '>' to get there) */
|
||||||
|
(u.utraptype != TT_PIT || is_clinger(youmonst.data)))) {
|
||||||
You_cant("hide while you're %s.",
|
You_cant("hide while you're %s.",
|
||||||
!u.ustuck ? "trapped" :
|
!u.ustuck ? "trapped" :
|
||||||
!sticks(youmonst.data) ? "being held" :
|
!sticks(youmonst.data) ? "being held" :
|
||||||
|
|||||||
+15
-11
@@ -714,7 +714,7 @@ unsigned trflags;
|
|||||||
defsyms[trap_to_defsym(ttype)].explanation);
|
defsyms[trap_to_defsym(ttype)].explanation);
|
||||||
/* then proceed to normal trap effect */
|
/* then proceed to normal trap effect */
|
||||||
} else if (already_seen && !forcetrap) {
|
} else if (already_seen && !forcetrap) {
|
||||||
if ((Levitation || Flying) &&
|
if ((Levitation || (Flying && !plunged)) &&
|
||||||
(ttype == PIT || ttype == SPIKED_PIT || ttype == HOLE ||
|
(ttype == PIT || ttype == SPIKED_PIT || ttype == HOLE ||
|
||||||
ttype == BEAR_TRAP)) {
|
ttype == BEAR_TRAP)) {
|
||||||
You("%s over %s %s.",
|
You("%s over %s %s.",
|
||||||
@@ -991,9 +991,9 @@ glovecheck: (void) rust_dmg(uarmg, "gauntlets", 1, TRUE, &youmonst);
|
|||||||
case PIT:
|
case PIT:
|
||||||
case SPIKED_PIT:
|
case SPIKED_PIT:
|
||||||
/* KMH -- You can't escape the Sokoban level traps */
|
/* KMH -- You can't escape the Sokoban level traps */
|
||||||
if (!Sokoban && (Levitation || Flying)) break;
|
if (!Sokoban && (Levitation || (Flying && !plunged))) break;
|
||||||
feeltrap(trap);
|
feeltrap(trap);
|
||||||
if (!Sokoban && is_clinger(youmonst.data)) {
|
if (!Sokoban && is_clinger(youmonst.data) && !plunged) {
|
||||||
if(trap->tseen) {
|
if(trap->tseen) {
|
||||||
You_see("%s %spit below you.", a_your[trap->madeby_u],
|
You_see("%s %spit below you.", a_your[trap->madeby_u],
|
||||||
ttype == SPIKED_PIT ? "spiked " : "");
|
ttype == SPIKED_PIT ? "spiked " : "");
|
||||||
@@ -1022,7 +1022,8 @@ glovecheck: (void) rust_dmg(uarmg, "gauntlets", 1, TRUE, &youmonst);
|
|||||||
if (adj_pit) {
|
if (adj_pit) {
|
||||||
You("move into an adjacent pit.");
|
You("move into an adjacent pit.");
|
||||||
} else {
|
} else {
|
||||||
Strcpy(verbbuf, plunged ? "plunge" : "fall");
|
Strcpy(verbbuf, !plunged ? "fall" :
|
||||||
|
(Flying ? "dive" : "plunge"));
|
||||||
You("%s into %s pit!", verbbuf, a_your[trap->madeby_u]);
|
You("%s into %s pit!", verbbuf, a_your[trap->madeby_u]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1067,7 +1068,9 @@ glovecheck: (void) rust_dmg(uarmg, "gauntlets", 1, TRUE, &youmonst);
|
|||||||
poison is limited to attrib loss */
|
poison is limited to attrib loss */
|
||||||
(u.umortality > oldumort) ? 0 : 8, FALSE);
|
(u.umortality > oldumort) ? 0 : 8, FALSE);
|
||||||
} else {
|
} else {
|
||||||
if (!adj_pit)
|
/* plunging flyers take spike damage but not pit damage */
|
||||||
|
if (!adj_pit &&
|
||||||
|
!(plunged && (Flying || is_clinger(youmonst.data))))
|
||||||
losehp(Maybe_Half_Phys(rnd(6)),
|
losehp(Maybe_Half_Phys(rnd(6)),
|
||||||
plunged ? "deliberately plunged into a pit" :
|
plunged ? "deliberately plunged into a pit" :
|
||||||
"fell into a pit",
|
"fell into a pit",
|
||||||
@@ -2818,9 +2821,10 @@ climb_pit()
|
|||||||
display_nhwindow(WIN_MESSAGE, FALSE);
|
display_nhwindow(WIN_MESSAGE, FALSE);
|
||||||
clear_nhwindow(WIN_MESSAGE);
|
clear_nhwindow(WIN_MESSAGE);
|
||||||
You("free your %s.", body_part(LEG));
|
You("free your %s.", body_part(LEG));
|
||||||
} else if (Flying && !Sokoban) {
|
} else if ((Flying || is_clinger(youmonst.data)) && !Sokoban) {
|
||||||
/* eg fell in pit, poly'd to a flying monster */
|
/* eg fell in pit, then poly'd to a flying monster;
|
||||||
You("fly from the pit.");
|
or used '>' to deliberately enter it */
|
||||||
|
You("%s from the pit.", Flying ? "fly" : "climb");
|
||||||
u.utrap = 0;
|
u.utrap = 0;
|
||||||
fill_pit(u.ux, u.uy);
|
fill_pit(u.ux, u.uy);
|
||||||
vision_full_recalc = 1; /* vision limits change */
|
vision_full_recalc = 1; /* vision limits change */
|
||||||
@@ -2834,16 +2838,16 @@ climb_pit()
|
|||||||
"crawl");
|
"crawl");
|
||||||
fill_pit(u.ux, u.uy);
|
fill_pit(u.ux, u.uy);
|
||||||
vision_full_recalc = 1; /* vision limits change */
|
vision_full_recalc = 1; /* vision limits change */
|
||||||
} else if (flags.verbose) {
|
} else if (u.dz || flags.verbose) {
|
||||||
#ifdef STEED
|
#ifdef STEED
|
||||||
if (u.usteed)
|
if (u.usteed)
|
||||||
Norep("%s is still in a pit.",
|
Norep("%s is still in a pit.",
|
||||||
upstart(y_monnam(u.usteed)));
|
upstart(y_monnam(u.usteed)));
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
Norep( (Hallucination && !rn2(5)) ?
|
Norep((Hallucination && !rn2(5)) ?
|
||||||
"You've fallen, and you can't get up." :
|
"You've fallen, and you can't get up." :
|
||||||
"You are still in a pit." );
|
"You are still in a pit.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user