diff -Prub nethack-3.4.3/include/rm.h nethack-3.4.3-darkroom/include/rm.h --- nethack-3.4.3/include/rm.h 2003-12-08 01:39:13.000000000 +0200 +++ nethack-3.4.3-darkroom/include/rm.h 2003-12-31 00:28:32.000000000 +0200 @@ -124,93 +124,94 @@ #define S_bars 17 /* KMH -- iron bars */ #define S_tree 18 /* KMH */ #define S_room 19 -#define S_corr 20 -#define S_litcorr 21 -#define S_upstair 22 -#define S_dnstair 23 -#define S_upladder 24 -#define S_dnladder 25 -#define S_altar 26 -#define S_grave 27 -#define S_throne 28 -#define S_sink 29 -#define S_fountain 30 -#define S_pool 31 -#define S_ice 32 -#define S_lava 33 -#define S_vodbridge 34 -#define S_hodbridge 35 -#define S_vcdbridge 36 /* closed drawbridge, vertical wall */ -#define S_hcdbridge 37 /* closed drawbridge, horizontal wall */ -#define S_air 38 -#define S_cloud 39 -#define S_water 40 +#define S_darkroom 20 +#define S_corr 21 +#define S_litcorr 22 +#define S_upstair 23 +#define S_dnstair 24 +#define S_upladder 25 +#define S_dnladder 26 +#define S_altar 27 +#define S_grave 28 +#define S_throne 29 +#define S_sink 30 +#define S_fountain 31 +#define S_pool 32 +#define S_ice 33 +#define S_lava 34 +#define S_vodbridge 35 +#define S_hodbridge 36 +#define S_vcdbridge 37 /* closed drawbridge, vertical wall */ +#define S_hcdbridge 38 /* closed drawbridge, horizontal wall */ +#define S_air 39 +#define S_cloud 40 +#define S_water 41 /* end dungeon characters, begin traps */ -#define S_arrow_trap 41 -#define S_dart_trap 42 -#define S_falling_rock_trap 43 -#define S_squeaky_board 44 -#define S_bear_trap 45 -#define S_land_mine 46 -#define S_rolling_boulder_trap 47 -#define S_sleeping_gas_trap 48 -#define S_rust_trap 49 -#define S_fire_trap 50 -#define S_pit 51 -#define S_spiked_pit 52 -#define S_hole 53 -#define S_trap_door 54 -#define S_teleportation_trap 55 -#define S_level_teleporter 56 -#define S_magic_portal 57 -#define S_web 58 -#define S_statue_trap 59 -#define S_magic_trap 60 -#define S_anti_magic_trap 61 -#define S_polymorph_trap 62 +#define S_arrow_trap 42 +#define S_dart_trap 43 +#define S_falling_rock_trap 44 +#define S_squeaky_board 45 +#define S_bear_trap 46 +#define S_land_mine 47 +#define S_rolling_boulder_trap 48 +#define S_sleeping_gas_trap 49 +#define S_rust_trap 50 +#define S_fire_trap 51 +#define S_pit 52 +#define S_spiked_pit 53 +#define S_hole 54 +#define S_trap_door 55 +#define S_teleportation_trap 56 +#define S_level_teleporter 57 +#define S_magic_portal 58 +#define S_web 59 +#define S_statue_trap 60 +#define S_magic_trap 61 +#define S_anti_magic_trap 62 +#define S_polymorph_trap 63 /* end traps, begin special effects */ -#define S_vbeam 63 /* The 4 zap beam symbols. Do NOT separate. */ -#define S_hbeam 64 /* To change order or add, see function */ -#define S_lslant 65 /* zapdir_to_glyph() in display.c. */ -#define S_rslant 66 -#define S_digbeam 67 /* dig beam symbol */ -#define S_flashbeam 68 /* camera flash symbol */ -#define S_boomleft 69 /* thrown boomerang, open left, e.g ')' */ -#define S_boomright 70 /* thrown boomerand, open right, e.g. '(' */ -#define S_ss1 71 /* 4 magic shield glyphs */ -#define S_ss2 72 -#define S_ss3 73 -#define S_ss4 74 +#define S_vbeam 64 /* The 4 zap beam symbols. Do NOT separate. */ +#define S_hbeam 65 /* To change order or add, see function */ +#define S_lslant 66 /* zapdir_to_glyph() in display.c. */ +#define S_rslant 67 +#define S_digbeam 68 /* dig beam symbol */ +#define S_flashbeam 69 /* camera flash symbol */ +#define S_boomleft 70 /* thrown boomerang, open left, e.g ')' */ +#define S_boomright 71 /* thrown boomerand, open right, e.g. '(' */ +#define S_ss1 72 /* 4 magic shield glyphs */ +#define S_ss2 73 +#define S_ss3 74 +#define S_ss4 75 /* The 8 swallow symbols. Do NOT separate. To change order or add, see */ /* the function swallow_to_glyph() in display.c. */ -#define S_sw_tl 75 /* swallow top left [1] */ -#define S_sw_tc 76 /* swallow top center [2] Order: */ -#define S_sw_tr 77 /* swallow top right [3] */ -#define S_sw_ml 78 /* swallow middle left [4] 1 2 3 */ -#define S_sw_mr 79 /* swallow middle right [6] 4 5 6 */ -#define S_sw_bl 80 /* swallow bottom left [7] 7 8 9 */ -#define S_sw_bc 81 /* swallow bottom center [8] */ -#define S_sw_br 82 /* swallow bottom right [9] */ - -#define S_explode1 83 /* explosion top left */ -#define S_explode2 84 /* explosion top center */ -#define S_explode3 85 /* explosion top right Ex. */ -#define S_explode4 86 /* explosion middle left */ -#define S_explode5 87 /* explosion middle center /-\ */ -#define S_explode6 88 /* explosion middle right |@| */ -#define S_explode7 89 /* explosion bottom left \-/ */ -#define S_explode8 90 /* explosion bottom center */ -#define S_explode9 91 /* explosion bottom right */ +#define S_sw_tl 76 /* swallow top left [1] */ +#define S_sw_tc 77 /* swallow top center [2] Order: */ +#define S_sw_tr 78 /* swallow top right [3] */ +#define S_sw_ml 79 /* swallow middle left [4] 1 2 3 */ +#define S_sw_mr 80 /* swallow middle right [6] 4 5 6 */ +#define S_sw_bl 81 /* swallow bottom left [7] 7 8 9 */ +#define S_sw_bc 82 /* swallow bottom center [8] */ +#define S_sw_br 83 /* swallow bottom right [9] */ + +#define S_explode1 84 /* explosion top left */ +#define S_explode2 85 /* explosion top center */ +#define S_explode3 86 /* explosion top right Ex. */ +#define S_explode4 87 /* explosion middle left */ +#define S_explode5 88 /* explosion middle center /-\ */ +#define S_explode6 89 /* explosion middle right |@| */ +#define S_explode7 90 /* explosion bottom left \-/ */ +#define S_explode8 91 /* explosion bottom center */ +#define S_explode9 92 /* explosion bottom right */ /* end effects */ -#define MAXPCHARS 92 /* maximum number of mapped characters */ -#define MAXDCHARS 41 /* maximum of mapped dungeon characters */ +#define MAXPCHARS 93 /* maximum number of mapped characters */ +#define MAXDCHARS 42 /* maximum of mapped dungeon characters */ #define MAXTCHARS 22 /* maximum of mapped trap characters */ #define MAXECHARS 29 /* maximum of mapped effects characters */ #define MAXEXPCHARS 9 /* number of explosion characters */ diff -Prub nethack-3.4.3/src/display.c nethack-3.4.3-darkroom/src/display.c --- nethack-3.4.3/src/display.c 2003-12-08 01:39:13.000000000 +0200 +++ nethack-3.4.3-darkroom/src/display.c 2003-12-31 12:56:34.000000000 +0200 @@ -179,7 +179,7 @@ if (!cansee(x,y) && !lev->waslit) { /* Floor spaces are dark if unlit. Corridors are dark if unlit. */ if (lev->typ == ROOM && glyph == cmap_to_glyph(S_room)) - glyph = cmap_to_glyph(S_stone); + glyph = cmap_to_glyph(S_darkroom); else if (lev->typ == CORR && glyph == cmap_to_glyph(S_litcorr)) glyph = cmap_to_glyph(S_corr); } @@ -306,7 +306,7 @@ /* turn remembered dark room squares dark */ if (!lev->waslit && lev->glyph == cmap_to_glyph(S_room) && lev->typ == ROOM) - lev->glyph = cmap_to_glyph(S_stone); + lev->glyph = cmap_to_glyph(S_darkroom); } else levl[x][y].glyph = cmap_to_glyph(S_stone); /* default val */ } @@ -560,15 +560,14 @@ if (lev->typ != ROOM && lev->seenv) { map_background(x, y, 1); } else { - lev->glyph = lev->waslit ? cmap_to_glyph(S_room) : - cmap_to_glyph(S_stone); + lev->glyph = (!lev->waslit) ? cmap_to_glyph(S_darkroom) : cmap_to_glyph(S_room); show_glyph(x,y,lev->glyph); } } else if ((lev->glyph >= cmap_to_glyph(S_stone) && - lev->glyph < cmap_to_glyph(S_room)) || + lev->glyph < cmap_to_glyph(S_darkroom)) || glyph_is_invisible(levl[x][y].glyph)) { - lev->glyph = lev->waslit ? cmap_to_glyph(S_room) : - cmap_to_glyph(S_stone); + lev->glyph = (!cansee(x,y) && !lev->waslit) ? cmap_to_glyph(S_darkroom) : + cmap_to_glyph(S_room); show_glyph(x,y,lev->glyph); } } else { @@ -608,7 +607,7 @@ /* Floor spaces are dark if unlit. Corridors are dark if unlit. */ if (lev->typ == ROOM && lev->glyph == cmap_to_glyph(S_room) && !lev->waslit) - show_glyph(x,y, lev->glyph = cmap_to_glyph(S_stone)); + show_glyph(x,y, lev->glyph = cmap_to_glyph(S_darkroom)); else if (lev->typ == CORR && lev->glyph == cmap_to_glyph(S_litcorr) && !lev->waslit) show_glyph(x,y, lev->glyph = cmap_to_glyph(S_corr)); @@ -756,7 +755,7 @@ 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) - show_glyph(x, y, lev->glyph = cmap_to_glyph(S_stone)); + show_glyph(x, y, lev->glyph = cmap_to_glyph(S_darkroom)); else goto show_mem; } else { @@ -1397,7 +1396,9 @@ case STONE: idx = level.flags.arboreal ? S_tree : S_stone; break; - case ROOM: idx = S_room; break; + case ROOM: + idx = (!cansee(x,y) && !ptr->waslit) ? S_darkroom : S_room; + break; case CORR: idx = (ptr->waslit || flags.lit_corridor) ? S_litcorr : S_corr; break; @@ -1454,11 +1455,11 @@ case DB_MOAT: idx = S_pool; break; case DB_LAVA: idx = S_lava; break; case DB_ICE: idx = S_ice; break; - case DB_FLOOR: idx = S_room; break; + case DB_FLOOR: idx = (!cansee(x,y) && !ptr->waslit) ? S_darkroom : S_room; break; default: impossible("Strange db-under: %d", ptr->drawbridgemask & DB_UNDER); - idx = S_room; /* something is better than nothing */ + idx = (!cansee(x,y) && !ptr->waslit) ? S_darkroom : S_room; /* something is better than nothing */ break; } break; @@ -1467,7 +1468,7 @@ break; default: impossible("back_to_glyph: unknown level type [ = %d ]",ptr->typ); - idx = S_room; + idx = (!cansee(x,y) && !ptr->waslit) ? S_darkroom : S_room; break; } diff -Prub nethack-3.4.3/src/drawing.c nethack-3.4.3-darkroom/src/drawing.c --- nethack-3.4.3/src/drawing.c 2003-12-08 01:39:13.000000000 +0200 +++ nethack-3.4.3-darkroom/src/drawing.c 2003-12-31 13:13:59.000000000 +0200 @@ -204,7 +204,7 @@ * Note: {ibm|dec|mac}_graphics[] arrays also depend on this symbol order. */ const struct symdef defsyms[MAXPCHARS] = { -/* 0*/ {' ', "dark part of a room",C(NO_COLOR)}, /* stone */ +/* 0*/ {' ', "unexplored area",C(NO_COLOR)}, /* stone */ {'|', "wall", C(CLR_GRAY)}, /* vwall */ {'-', "wall", C(CLR_GRAY)}, /* hwall */ {'-', "wall", C(CLR_GRAY)}, /* tlcorn */ @@ -224,6 +224,7 @@ {'#', "iron bars", C(HI_METAL)}, /* bars */ {'#', "tree", C(CLR_GREEN)}, /* tree */ {'.', "floor of a room",C(CLR_GRAY)}, /* room */ + {'.', "dark part of a room",C(CLR_BLACK)}, /* dark room */ /*20*/ {'#', "corridor", C(CLR_GRAY)}, /* dark corr */ {'#', "lit corridor", C(CLR_GRAY)}, /* lit corr (see mapglyph.c) */ {'<', "staircase up", C(CLR_GRAY)}, /* upstair */ @@ -335,6 +336,7 @@ 240, /* S_bars: equivalence symbol */ 241, /* S_tree: plus or minus symbol */ 0xfa, /* S_room: meta-z, centered dot */ + g_FILLER(S_stone), /* S_darkroom: meta-z, centered dot */ /*20*/ 0xb0, /* S_corr: meta-0, light shading */ 0xb1, /* S_litcorr: meta-1, medium shading */ g_FILLER(S_upstair), @@ -434,6 +436,7 @@ 0xfb, /* S_bars: meta-{, small pi */ 0xe7, /* S_tree: meta-g, plus-or-minus */ 0xfe, /* S_room: meta-~, centered dot */ + g_FILLER(S_stone), /* S_darkroom: meta-~, centered dot */ /*20*/ g_FILLER(S_corr), g_FILLER(S_litcorr), g_FILLER(S_upstair), @@ -531,6 +534,7 @@ 0xf0, /* S_bars: equivalency symbol */ 0xf1, /* S_tree: plus-or-minus */ g_FILLER(S_Room), + g_FILLER(S_stone), /* S_darkroom */ /*20*/ 0xB0, /* S_corr */ g_FILLER(S_litcorr), g_FILLER(S_upstair), diff -Prub nethack-3.4.3/src/mapglyph.c nethack-3.4.3-darkroom/src/mapglyph.c --- nethack-3.4.3/src/mapglyph.c 2003-12-08 01:39:13.000000000 +0200 +++ nethack-3.4.3-darkroom/src/mapglyph.c 2003-12-31 00:28:32.000000000 +0200 @@ -116,7 +116,7 @@ color = CLR_MAGENTA; else if (offset == S_corr || offset == S_litcorr) color = CLR_GRAY; - else if (offset >= S_room && offset <= S_water) + else if (offset >= S_room && offset <= S_water && offset != S_darkroom) color = CLR_GREEN; else color = NO_COLOR; diff -Prub nethack-3.4.3/src/options.c nethack-3.4.3-darkroom/src/options.c --- nethack-3.4.3/src/options.c 2003-12-08 01:39:13.000000000 +0200 +++ nethack-3.4.3-darkroom/src/options.c 2003-12-31 13:31:48.000000000 +0200 @@ -603,6 +603,11 @@ /* result in the player's preferred fruit [better than "\033"]. */ obj_descr[SLIME_MOLD].oc_name = "fruit"; + if (flags.lit_corridor && iflags.use_color) { + showsyms[S_darkroom]=showsyms[S_room]; + } else { + showsyms[S_darkroom]=showsyms[S_stone]; + } return; } @@ -2220,6 +2225,7 @@ */ vision_recalc(2); /* shut down vision */ vision_full_recalc = 1; /* delayed recalc */ + if (iflags.use_color) need_redraw = TRUE; /* darkroom refresh */ } else if ((boolopt[i].addr) == &iflags.use_inverse || (boolopt[i].addr) == &iflags.showrace || @@ -2523,8 +2529,14 @@ } destroy_nhwindow(tmpwin); - if (need_redraw) + if (need_redraw) { + if (flags.lit_corridor && iflags.use_color) { + showsyms[S_darkroom]=showsyms[S_room]; + } else { + showsyms[S_darkroom]=showsyms[S_stone]; + } (void) doredraw(); + } return 0; } diff -Prub nethack-3.4.3/src/pager.c nethack-3.4.3-darkroom/src/pager.c --- nethack-3.4.3/src/pager.c 2003-12-08 01:39:13.000000000 +0200 +++ nethack-3.4.3-darkroom/src/pager.c 2003-12-31 13:20:02.000000000 +0200 @@ -261,7 +261,7 @@ int tnum = what_trap(glyph_to_trap(glyph)); Strcpy(buf, defsyms[trap_to_defsym(tnum)].explanation); } else if(!glyph_is_cmap(glyph)) { - Strcpy(buf,"dark part of a room"); + Strcpy(buf,"unexplored area"); } else switch(glyph_to_cmap(glyph)) { case S_altar: if(!In_endgame(&u.uz)) @@ -631,8 +631,8 @@ for (hit_trap = FALSE, i = 0; i < MAXPCHARS; i++) { x_str = defsyms[i].explanation; if (sym == (from_screen ? showsyms[i] : defsyms[i].sym) && *x_str) { - /* avoid "an air", "a water", or "a floor of a room" */ - int article = (i == S_room) ? 2 : /* 2=>"the" */ + /* avoid "an air", "a water", "a floor of a room", "a dark part of a room" */ + int article = ((i == S_room)||(i == S_darkroom)) ? 2 : /* 2=>"the" */ !(strcmp(x_str, "air") == 0 || /* 1=>"an" */ strcmp(x_str, "water") == 0); /* 0=>(none)*/ diff -Prub nethack-3.4.3/win/share/other.txt nethack-3.4.3-darkroom/win/share/other.txt --- nethack-3.4.3/win/share/other.txt 2003-12-08 01:39:14.000000000 +0200 +++ nethack-3.4.3-darkroom/win/share/other.txt 2003-12-31 00:28:33.000000000 +0200 @@ -14,7 +14,7 @@ N = (255, 255, 255) O = (218, 218, 182) P = (108, 145, 182) -# tile 0 (dark part of a room) +# tile 0 (unexplored area) { AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA @@ -394,6 +394,25 @@ MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } +# tile 20 (dark part of a room) +{ + MAMAMAMAMAMAMAMA + AMAMAMAMAMAMAMAM + MAMAMAMAMAMAMAMA + AMAMAMAMAMAMAMAM + MAMAMAMAMAMAMAMA + AMAMAMAMAMAMAMAM + MAMAMAMAMAMAMAMA + AMAMAMAPPMAMAMAM + MAMAMAMPPAMAMAMA + AMAMAMAMAMAMAMAM + MAMAMAMAMAMAMAMA + AMAMAMAMAMAMAMAM + MAMAMAMAMAMAMAMA + AMAMAMAMAMAMAMAM + MAMAMAMAMAMAMAMA + AMAMAMAMAMAMAMAM +} # tile 20 (corridor) { MMMMMMMMMMMMMMMM