diff -pruN slashem-0.0.7E7F1-official-release/include/rm.h slashem-0.0.7E7F1-darkroom/include/rm.h --- slashem-0.0.7E7F1-official-release/include/rm.h 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-darkroom/include/rm.h 2005-10-26 01:03:04.000000000 +0200 @@ -127,94 +127,95 @@ #define S_bars 17 /* Added by KMH */ #define S_tree 18 /* Added by 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_toilet 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 +#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_toilet 31 +#define S_fountain 32 +#define S_pool 33 +#define S_ice 34 +#define S_lava 35 +#define S_vodbridge 36 +#define S_hodbridge 37 +#define S_vcdbridge 38 /* closed drawbridge, vertical wall */ +#define S_hcdbridge 39 /* closed drawbridge, horizontal wall */ +#define S_air 40 +#define S_cloud 41 +#define S_water 42 /* end dungeon characters, begin traps */ -#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 +#define S_arrow_trap 43 +#define S_dart_trap 44 +#define S_falling_rock_trap 45 +#define S_squeaky_board 46 +#define S_bear_trap 47 +#define S_land_mine 48 +#define S_rolling_boulder_trap 49 +#define S_sleeping_gas_trap 50 +#define S_rust_trap 51 +#define S_fire_trap 52 +#define S_pit 53 +#define S_spiked_pit 54 +#define S_hole 55 +#define S_trap_door 56 +#define S_teleportation_trap 57 +#define S_level_teleporter 58 +#define S_magic_portal 59 +#define S_web 60 +#define S_statue_trap 61 +#define S_magic_trap 62 +#define S_anti_magic_trap 63 +#define S_polymorph_trap 64 /* end traps, begin special effects */ -#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 +#define S_vbeam 65 /* The 4 zap beam symbols. Do NOT separate. */ +#define S_hbeam 66 /* To change order or add, see function */ +#define S_lslant 67 /* zapdir_to_glyph() in display.c. */ +#define S_rslant 68 +#define S_digbeam 69 /* dig beam symbol */ +#define S_flashbeam 70 /* camera flash symbol */ +#define S_boomleft 71 /* thrown boomerang, open left, e.g ')' */ +#define S_boomright 72 /* thrown boomerand, open right, e.g. '(' */ +#define S_ss1 73 /* 4 magic shield glyphs */ +#define S_ss2 74 +#define S_ss3 75 +#define S_ss4 76 /* 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 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 */ +#define S_sw_tl 77 /* swallow top left [1] */ +#define S_sw_tc 78 /* swallow top center [2] Order: */ +#define S_sw_tr 79 /* swallow top right [3] */ +#define S_sw_ml 80 /* swallow middle left [4] 1 2 3 */ +#define S_sw_mr 81 /* swallow middle right [6] 4 5 6 */ +#define S_sw_bl 82 /* swallow bottom left [7] 7 8 9 */ +#define S_sw_bc 83 /* swallow bottom center [8] */ +#define S_sw_br 84 /* swallow bottom right [9] */ + +#define S_explode1 85 /* explosion top left */ +#define S_explode2 86 /* explosion top center */ +#define S_explode3 87 /* explosion top right Ex. */ +#define S_explode4 88 /* explosion middle left */ +#define S_explode5 89 /* explosion middle center /-\ */ +#define S_explode6 90 /* explosion middle right |@| */ +#define S_explode7 91 /* explosion bottom left \-/ */ +#define S_explode8 92 /* explosion bottom center */ +#define S_explode9 93 /* explosion bottom right */ /* end effects */ -#define MAXPCHARS 93 /* maximum number of mapped characters */ -#define MAXDCHARS 42 /* maximum of mapped dungeon characters */ +#define MAXPCHARS 94 /* maximum number of mapped characters */ +#define MAXDCHARS 43 /* 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 -pruN slashem-0.0.7E7F1-official-release/src/display.c slashem-0.0.7E7F1-darkroom/src/display.c --- slashem-0.0.7E7F1-official-release/src/display.c 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-darkroom/src/display.c 2005-10-26 01:03:57.000000000 +0200 @@ -182,7 +182,7 @@ magic_map_background(x, y, show) if (!cansee(x,y) && !lev->waslit) { /* Floor spaces are dark if unlit. Corridors are dark if unlit. */ if (lev->typ == ROOM && cmap == S_room) - cmap = S_stone; + cmap = S_darkroom; else if (lev->typ == CORR && cmap == S_litcorr) cmap = S_corr; } @@ -337,7 +337,7 @@ unmap_object(x, y) /* 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 */ #endif @@ -652,23 +652,23 @@ feel_location(x, y) map_background(x, y, 1); } else { #ifdef DISPLAY_LAYERS - lev->mem_bg = lev->waslit ? S_room : S_stone; + lev->mem_bg = lev->waslit ? S_room : S_darkroom; #else lev->glyph = lev->waslit ? cmap_to_glyph(S_room) : - cmap_to_glyph(S_stone); + cmap_to_glyph(S_darkroom); #endif show_glyph(x, y, memory_glyph(x, y)); } #ifdef DISPLAY_LAYERS - } else if ((lev->mem_bg >= S_stone && lev->mem_bg < S_room) || + } else if ((lev->mem_bg >= S_stone && lev->mem_bg < S_darkroom) || memory_is_invisible(x, y)) { - lev->mem_bg = lev->waslit ? S_room : S_stone; + lev->mem_bg = lev->waslit ? S_room : S_darkroom; #else } 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); + cmap_to_glyph(S_darkroom); #endif show_glyph(x, y, memory_glyph(x, y)); } @@ -714,7 +714,7 @@ feel_location(x, y) /* Floor spaces are dark if unlit. Corridors are dark if unlit. */ #ifdef DISPLAY_LAYERS if (lev->typ == ROOM && lev->mem_bg == S_room && !lev->waslit) { - lev->mem_bg = S_stone; + lev->mem_bg = S_darkroom; show_glyph(x,y, memory_glyph(x, y)); } else if (lev->typ == CORR && lev->mem_bg == S_litcorr && !lev->waslit) { @@ -724,7 +724,7 @@ feel_location(x, y) #else 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)); @@ -875,14 +875,14 @@ newsym(x,y) lev->mem_bg = S_corr; show_glyph(x, y, memory_glyph(x, y)); } else if (lev->mem_bg == S_room && lev->typ == ROOM) { - lev->mem_bg = S_stone; + lev->mem_bg = S_darkroom; show_glyph(x, y, memory_glyph(x, y)); } #else /* DISPLAY_LAYERS */ 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)); #endif /* DISPLAY_LAYERS */ else goto show_mem; @@ -1596,7 +1596,9 @@ back_to_cmap(x,y) 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; @@ -1654,11 +1656,11 @@ back_to_cmap(x,y) 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; @@ -1667,7 +1669,7 @@ back_to_cmap(x,y) 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; } return idx; diff -pruN slashem-0.0.7E7F1-official-release/src/drawing.c slashem-0.0.7E7F1-darkroom/src/drawing.c --- slashem-0.0.7E7F1-official-release/src/drawing.c 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-darkroom/src/drawing.c 2005-10-26 01:03:04.000000000 +0200 @@ -212,7 +212,7 @@ const struct symdef def_warnsyms[WARNCOU * 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 */ @@ -232,6 +232,7 @@ const struct symdef defsyms[MAXPCHARS] = {'#', "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_BLACK)}, /* dark corr */ {'#', "lit corridor", C(CLR_GRAY)}, /* lit corr (see mapglyph.c) */ {'<', "staircase up", C(CLR_WHITE)}, /* upstair */ @@ -346,6 +347,7 @@ static uchar ibm_graphics[MAXPCHARS] = { 240, /* S_bars: equivalency, courtesy Sascha */ 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), @@ -446,6 +448,7 @@ static uchar dec_graphics[MAXPCHARS] = { 0xfb, /* S_bars: meta-{, small pi, courtesy Pat Rankin */ 0xe7, /* S_tree: meta-g, plus-or-minus, courtesy Pat Rankin */ 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), @@ -544,6 +547,7 @@ static uchar mac_graphics[MAXPCHARS] = { 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 -pruN slashem-0.0.7E7F1-official-release/src/mapglyph.c slashem-0.0.7E7F1-darkroom/src/mapglyph.c --- slashem-0.0.7E7F1-official-release/src/mapglyph.c 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-darkroom/src/mapglyph.c 2005-10-26 01:03:04.000000000 +0200 @@ -116,7 +116,7 @@ unsigned *ospecial; 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 -pruN slashem-0.0.7E7F1-official-release/src/options.c slashem-0.0.7E7F1-darkroom/src/options.c --- slashem-0.0.7E7F1-official-release/src/options.c 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-darkroom/src/options.c 2005-10-26 01:03:04.000000000 +0200 @@ -684,6 +684,11 @@ initoptions() Sdlgl_parse_options(opts, TRUE, FALSE); #endif + if (flags.lit_corridor && iflags.use_color) { + showsyms[S_darkroom]=showsyms[S_room]; + } else { + showsyms[S_darkroom]=showsyms[S_stone]; + } return; } @@ -2541,6 +2546,7 @@ goodfruit: { 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 || @@ -3013,8 +3019,14 @@ doset() } 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 -pruN slashem-0.0.7E7F1-official-release/src/pager.c slashem-0.0.7E7F1-darkroom/src/pager.c --- slashem-0.0.7E7F1-official-release/src/pager.c 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-darkroom/src/pager.c 2005-10-26 01:03:04.000000000 +0200 @@ -281,7 +281,7 @@ lookat(x, y, buf, monbuf) 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)) @@ -655,8 +655,8 @@ do_look(quick) 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 -pruN slashem-0.0.7E7F1-official-release/win/share/other.txt slashem-0.0.7E7F1-darkroom/win/share/other.txt --- slashem-0.0.7E7F1-official-release/win/share/other.txt 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-darkroom/win/share/other.txt 2005-10-26 01:03:04.000000000 +0200 @@ -14,7 +14,7 @@ M = (71, 108, 108) 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 @@ P = (108, 145, 182) 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