]> granicus.if.org Git - nethack/commitdiff
Fix Rogue-level lighting bugs caused by dark room
authorPasi Kallinen <paxed@alt.org>
Wed, 3 Jun 2015 14:27:36 +0000 (17:27 +0300)
committerPasi Kallinen <paxed@alt.org>
Wed, 3 Jun 2015 14:27:40 +0000 (17:27 +0300)
Found by Boudewijn

src/display.c
src/options.c

index 70d88ef826b7261548b47af33a253387c22dca53..f08748b29fe495893d0e3d12dcdfe7875cae230a 100644 (file)
@@ -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));
index 0c89826cd03c8bfd14491c5627e9ddf2b45477b8..d6c7b95538f62719693a5135689a937e06b0189d 100644 (file)
@@ -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);