the types value-goes-up and -down aren't meaningful; treat them as
value-changed if from config file and don't offer as choices with 'O'
jumping into or over a Sokoban pit, or over a fire trap, triggers trap twice
+mimics created by #wizgenesis could block or not block vision incorrectly
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
appear = Is_rogue_level(&u.uz) ? S_hwall : S_hcdoor;
else
appear = Is_rogue_level(&u.uz) ? S_vwall : S_vcdoor;
- if (!mtmp->minvis || See_invisible)
- block_point(mx, my); /* vision */
} else if (level.flags.is_maze_lev && !In_sokoban(&u.uz) && rn2(2)) {
ap_type = M_AP_OBJECT;
appear = STATUE;
} else if (roomno < 0 && !t_at(mx, my)) {
ap_type = M_AP_OBJECT;
appear = BOULDER;
- if (!mtmp->minvis || See_invisible)
- block_point(mx, my); /* vision */
} else if (rt == ZOO || rt == VAULT) {
ap_type = M_AP_OBJECT;
appear = GOLD_PIECE;
if (appear == EGG && !can_be_hatched(MCORPSENM(mtmp)))
MCORPSENM(mtmp) = NON_PM; /* revert to generic egg */
}
+
+ if (does_block(mx, my, &levl[mx][my]))
+ block_point(mx, my);
}
/* release monster from bag of tricks; return number of monsters created */
put_saddle_on_mon(otmp, mtmp);
}
- if (d->invisible)
+ if (d->invisible) {
+ int mx = mtmp->mx, my = mtmp->my;
mon_set_minvis(mtmp);
+ if (does_block(mx, my, &levl[mx][my]))
+ block_point(mx, my);
+ else
+ unblock_point(mx, my);
+ }
if (d->sleeping)
mtmp->msleeping = 1;
madeany = TRUE;