From: Pasi Kallinen Date: Wed, 3 Jun 2015 14:27:36 +0000 (+0300) Subject: Fix Rogue-level lighting bugs caused by dark room X-Git-Tag: NetHack-3.6.0_RC01~297^2~9 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cf28b8ad71f9b258cf0e89b87314effc560a8c28;p=nethack Fix Rogue-level lighting bugs caused by dark room Found by Boudewijn --- diff --git a/src/display.c b/src/display.c index 70d88ef82..f08748b29 100644 --- a/src/display.c +++ b/src/display.c @@ -577,7 +577,7 @@ xchar x, y; if (lev->typ != ROOM && lev->seenv) { map_background(x, y, 1); } else { - lev->glyph = flags.dark_room + lev->glyph = (flags.dark_room && !Is_rogue_level(&u.uz)) ? cmap_to_glyph(S_darkroom) : (lev->waslit ? cmap_to_glyph(S_room) : cmap_to_glyph(S_stone)); @@ -586,7 +586,7 @@ xchar x, y; } else if ((lev->glyph >= cmap_to_glyph(S_stone) && lev->glyph < cmap_to_glyph(S_darkroom)) || glyph_is_invisible(levl[x][y].glyph)) { - lev->glyph = flags.dark_room + lev->glyph = (flags.dark_room && !Is_rogue_level(&u.uz)) ? cmap_to_glyph(S_darkroom) : (lev->waslit ? cmap_to_glyph(S_room) : cmap_to_glyph(S_stone)); @@ -799,6 +799,14 @@ register int x, y; * These checks and changes must be here and not in back_to_glyph(). * They are dependent on the position being out of sight. */ + else if (Is_rogue_level(&u.uz)) { + if (lev->glyph == cmap_to_glyph(S_litcorr) && lev->typ == CORR) + show_glyph(x, y, lev->glyph = cmap_to_glyph(S_corr)); + else if (lev->glyph == cmap_to_glyph(S_room) && lev->typ == ROOM && !lev->waslit) + show_glyph(x, y, lev->glyph = cmap_to_glyph(S_stone)); + else + goto show_mem; + } else if (!lev->waslit || (flags.dark_room && iflags.use_color)) { if (lev->glyph == cmap_to_glyph(S_litcorr) && lev->typ == CORR) show_glyph(x, y, lev->glyph = cmap_to_glyph(S_corr)); diff --git a/src/options.c b/src/options.c index 0c89826cd..d6c7b9553 100644 --- a/src/options.c +++ b/src/options.c @@ -524,7 +524,7 @@ reglyph_darkroom() for (y = 0; y < ROWNO; y++) { struct rm *lev = &levl[x][y]; - if (!flags.dark_room) { + if (!flags.dark_room || Is_rogue_level(&u.uz)) { if (lev->glyph == cmap_to_glyph(S_darkroom)) lev->glyph = lev->waslit ? cmap_to_glyph(S_room) : cmap_to_glyph(S_stone);