diff --git a/doc/fixes37.0 b/doc/fixes37.0 index a6ec8281d..bb5c3e4cd 100644 --- a/doc/fixes37.0 +++ b/doc/fixes37.0 @@ -605,6 +605,8 @@ wearing a ring of protection and any amulet behaved as if wearing an amulet of messaging for genetic engineer attacks had several problems give genetic engineers teleport capability (as they had in slash'em); 'port away after polymorphing someone so that they don't just repeat that +if an invisible hero managed to convert an unaligned altar to an aligned one + with color enabled, altar wasn't immediately redrawn with new color curses: 'msg_window' option wasn't functional for curses unless the binary also included tty support diff --git a/src/display.c b/src/display.c index 1b766f4f4..3a1a8d111 100644 --- a/src/display.c +++ b/src/display.c @@ -1593,11 +1593,17 @@ show_glyph(int x, int y, int glyph) if (g.gbuf[y][x].glyph != glyph #ifndef UNBUFFERED_GLYPHINFO - /* I don't think we have to test for changes in TTYCHAR or COLOR - because they typically only change if the glyph changed */ - || g.gbuf[y][x].glyphinfo.glyphflags != glyphinfo.glyphflags + /* flags might change (single object vs pile, monster tamed or pet + gone feral), color might change (altar's alignment converted by + invisible hero), but ttychar normally won't change unless the + glyph does too (changing boulder symbol would be an exception, + but that triggers full redraw so doesn't matter here); still, + be thorough and check everything */ + || g.gbuf[y][x].glyphinfo.glyphflags != glyphinfo.glyphflags + || g.gbuf[y][x].glyphinfo.ttychar != glyphinfo.ttychar + || g.gbuf[y][x].glyphinfo.color != glyphinfo.color #endif - || iflags.use_background_glyph ) { + || iflags.use_background_glyph) { g.gbuf[y][x].glyph = glyph; g.gbuf[y][x].gnew = 1; #ifndef UNBUFFERED_GLYPHINFO