More getpos improvements
Look up remembered dungeon features, not user-visible glyphs, and ignore uninteresting features (room, corridor and wall tiles). Original patch by Patric Mueller, from UnNetHack
This commit is contained in:
@@ -1089,6 +1089,7 @@ change command X to twoweapon toggle
|
|||||||
pressing @ when cursor positioning moves cursor on top of hero
|
pressing @ when cursor positioning moves cursor on top of hero
|
||||||
pressing # when cursor positioning toggles automatic description of features
|
pressing # when cursor positioning toggles automatic description of features
|
||||||
under the cursor
|
under the cursor
|
||||||
|
cursor positioning ignores uninteresting dungeon features
|
||||||
|
|
||||||
|
|
||||||
Platform- and/or Interface-Specific New Features
|
Platform- and/or Interface-Specific New Features
|
||||||
|
|||||||
+18
-2
@@ -204,9 +204,25 @@ const char *goal;
|
|||||||
lo_x = (pass == 0 && ty == lo_y) ? cx + 1 : 1;
|
lo_x = (pass == 0 && ty == lo_y) ? cx + 1 : 1;
|
||||||
hi_x = (pass == 1 && ty == hi_y) ? cx : COLNO - 1;
|
hi_x = (pass == 1 && ty == hi_y) ? cx : COLNO - 1;
|
||||||
for (tx = lo_x; tx <= hi_x; tx++) {
|
for (tx = lo_x; tx <= hi_x; tx++) {
|
||||||
k = levl[tx][ty].glyph;
|
/* look at dungeon feature, not at user-visible glyph */
|
||||||
|
k = back_to_glyph(tx,ty);
|
||||||
|
/* uninteresting background glyph */
|
||||||
if (glyph_is_cmap(k) &&
|
if (glyph_is_cmap(k) &&
|
||||||
matching[glyph_to_cmap(k)]) {
|
(IS_DOOR(levl[tx][ty].typ) ||
|
||||||
|
glyph_to_cmap(k) == S_room ||
|
||||||
|
glyph_to_cmap(k) == S_corr ||
|
||||||
|
glyph_to_cmap(k) == S_litcorr)) {
|
||||||
|
/* what the hero remembers to be at tx,ty */
|
||||||
|
k = glyph_at(tx, ty);
|
||||||
|
}
|
||||||
|
if (glyph_is_cmap(k) &&
|
||||||
|
matching[glyph_to_cmap(k)] &&
|
||||||
|
levl[tx][ty].seenv &&
|
||||||
|
(!IS_WALL(levl[tx][ty].typ)) &&
|
||||||
|
(levl[tx][ty].typ != SDOOR) &&
|
||||||
|
glyph_to_cmap(k) != S_room &&
|
||||||
|
glyph_to_cmap(k) != S_corr &&
|
||||||
|
glyph_to_cmap(k) != S_litcorr) {
|
||||||
cx = tx, cy = ty;
|
cx = tx, cy = ty;
|
||||||
if (msg_given) {
|
if (msg_given) {
|
||||||
clear_nhwindow(WIN_MESSAGE);
|
clear_nhwindow(WIN_MESSAGE);
|
||||||
|
|||||||
Reference in New Issue
Block a user