usmellmon() instead of "It turns into it" during monster polymorph
grammar of messages regarding eating artifacts
avoid a message about an invisible monster looking much better
+player polymorphed as a xorn could not pick up items in pits
Platform- and/or Interface-Specific Fixes
if(at_u) {
if (!wont_fall) {
- if (!Passes_walls)
- u.utrap = rn1(4,2);
+ u.utrap = rn1(4,2);
u.utraptype = TT_PIT;
vision_full_recalc = 1; /* vision limits change */
} else
Your("slow motion kick doesn't hit anything.");
no_kick = TRUE;
} else if (u.utrap) {
+ no_kick = TRUE;
switch (u.utraptype) {
case TT_PIT:
- pline("There's not enough room to kick down here.");
+ if (!Passes_walls)
+ pline("There's not enough room to kick down here.");
+ else no_kick = FALSE;
break;
case TT_WEB:
case TT_BEARTRAP:
default:
break;
}
- no_kick = TRUE;
}
if (no_kick) {
default: Your("feeble kick has no effect."); break;
}
return(1);
+ } else if(u.utrap && u.utraptype == TT_PIT) {
+ /* must be Passes_walls */
+ You("kick at the side of the pit.");
+ return 1;
}
if (Levitation) {
int xx, yy;
}
if(u.utrap) {
if(u.utraptype == TT_PIT) {
- if (!rn2(2) && sobj_at(BOULDER, u.ux, u.uy)) {
+ if (Passes_walls) {
+ /* marked as trapped so they can pick things up */
+ You("ascend from the pit.");
+ u.utrap = 0;
+ fill_pit(u.ux, u.uy);
+ vision_full_recalc = 1; /* vision limits change */
+ } else if (!rn2(2) && sobj_at(BOULDER, u.ux, u.uy)) {
Your("%s gets stuck in a crevice.", body_part(LEG));
display_nhwindow(WIN_MESSAGE, FALSE);
clear_nhwindow(WIN_MESSAGE);
{
boolean sticky = sticks(youmonst.data) && u.ustuck && !u.uswallow,
was_mimicking = (youmonst.m_ap_type == M_AP_OBJECT);
- boolean could_pass_walls = Passes_walls;
boolean was_blind = !!Blind;
if (Upolyd) {
if (u.twoweap && !could_twoweap(youmonst.data))
untwoweapon();
- if (u.utraptype == TT_PIT) {
- if (could_pass_walls) { /* player forms cannot pass walls */
- u.utrap = rn1(6,2);
- }
+ if (u.utraptype == TT_PIT && u.utrap) {
+ u.utrap = rn1(6,2); /* time to escape resets */
}
if (was_blind && !Blind) { /* reverting from eyeless */
Blinded = 1L;
{
boolean sticky = sticks(youmonst.data) && u.ustuck && !u.uswallow,
was_blind = !!Blind, dochange = FALSE;
- boolean could_pass_walls = Passes_walls;
int mlvl;
if (mvitals[mntmp].mvflags & G_GENOD) { /* allow G_EXTINCT */
drop_weapon(1);
(void) hideunder(&youmonst);
- if (u.utraptype == TT_PIT) {
- if (could_pass_walls && !Passes_walls) {
- u.utrap = rn1(6,2);
- } else if (!could_pass_walls && Passes_walls) {
- u.utrap = 0;
- }
+ if (u.utraptype == TT_PIT && u.utrap) {
+ u.utrap = rn1(6,2); /* time to escape resets */
}
if (was_blind && !Blind) { /* previous form was eyeless */
Blinded = 1L;
if (OBJ_AT(u.ux, u.uy) &&
/* ensure we're not standing on the precipice */
- !((!u.utrap || u.utraptype != TT_PIT) &&
- (trap && trap->tseen &&
- (trap->ttyp==PIT || trap->ttyp==SPIKED_PIT)))) {
+ !uteetering_at_seen_pit(trap)) {
register struct obj *obj;
obj = level.objects[u.ux][u.uy];
#endif
You("land %s!", predicament);
}
- if (!Passes_walls)
- u.utrap = rn1(6,2);
+ u.utrap = rn1(6,2);
u.utraptype = TT_PIT;
#ifdef STEED
if (!steedintrap(trap, (struct obj *)0)) {