Blindfold removal fix
[slashemextended.git] / src / mapglyph.c
blobc195d432afd8b9ca5238762b1a35e74659b5b9b6
1 /* SCCS Id: @(#)mapglyph.c 3.4 2003/01/08 */
2 /* Copyright (c) David Cohrs, 1991 */
3 /* NetHack may be freely redistributed. See license for details. */
5 #include "hack.h"
6 #if defined(TTY_GRAPHICS)
7 #include "wintty.h" /* for prototype of has_color() only */
8 #endif
9 #include "color.h"
10 #define HI_DOMESTIC CLR_WHITE /* monst.c */
12 #include <ctype.h> /* metanite64: for toupper() prototype */
14 int explcolors[] = {
15 CLR_BLACK, /* dark */
16 CLR_GREEN, /* noxious */
17 CLR_BROWN, /* muddy */
18 CLR_BLUE, /* wet */
19 CLR_MAGENTA, /* magical */
20 CLR_ORANGE, /* fiery */
21 CLR_WHITE, /* frosty */
24 #if !defined(TTY_GRAPHICS)
25 #define has_color(n) TRUE
26 #endif
28 #ifdef TEXTCOLOR
30 STATIC_DCL int zap_color(int);
31 STATIC_DCL int cmap_color(int);
32 STATIC_DCL int obj_color(int);
33 STATIC_DCL int mon_color(int);
34 STATIC_DCL int invis_color(int);
35 STATIC_DCL int pet_color(int);
36 STATIC_DCL int warn_color(int);
37 STATIC_DCL int explode_color(int);
39 /* Yes kerio, I know that my code quality is shit and that you won't touch this file with a 20 foot pole. --Amy */
41 STATIC_OVL
42 int
43 zap_color(n)
44 int n;
46 int color;
47 if (!iflags.use_color) {
48 return NO_COLOR;
51 color = zapcolors[n];
52 if (ColorshiftEffect || u.uprops[COLORSHIFT_EFFECT].extrinsic || have_colorshiftstone()) color = colorshifting(color);
53 if (MiscolorEffect || u.uprops[MISCOLOR_EFFECT].extrinsic || have_miscolorstone()) color = miscoloring(color);
54 if (SpellColorGreen) color = CLR_GREEN;
55 if (uamul && uamul->oartifact == ART_FLEECY_GREEN) color = CLR_GREEN;
56 if (FemtrapActiveMarlena && !rn2(10) ) color = rn2(2) ? CLR_GREEN : CLR_BRIGHT_GREEN;
57 if (BlackNgWalls || (uamul && uamul->oartifact == ART_BLACK_DARKNESS) || have_blackystone() || u.uprops[BLACK_NG_WALLS].extrinsic ) color = CLR_BLACK;
58 if (uarmh && uarmh->oartifact == ART_BLUE_SCREEN_OF_DEATH) color = CLR_BRIGHT_BLUE;
59 if (everythingfleecy()) color = rnd(15);
60 if (uarmg && uarmg->oartifact == ART_JONADAB_S_KEYCODE && !rn2(5)) color = rnd(15);
61 if (uarmc && itemhasappearance(uarmc, APP_FLEECELING_CLOAK) && !rn2(5) ) color = rnd(15);
62 if ((OneRainbowEffect || u.uprops[ONE_RAINBOW_EFFECT].extrinsic || have_onerainbowstone() || (uarm && uarm->oartifact == ART_YOU_REALLY_HAVE_A_TOTAL_DA) || autismweaponcheck(ART_TASTE_THE_RAINBOW)) && (color == u.onerainbownumber) ) color = rnd(15);
63 if (uamul && uamul->oartifact == ART_SUPER_GRAPHICS_CARD_BUG) {
64 if (color > 0 && color < 16) {
65 color++;
66 if (color > 15) color = 1;
70 return color;
73 STATIC_OVL
74 int
75 cmap_color(n)
76 int n;
78 int color;
79 if (!iflags.use_color) {
80 return NO_COLOR;
83 color = defsyms[n].color;
84 if (ColorshiftEffect || u.uprops[COLORSHIFT_EFFECT].extrinsic || have_colorshiftstone()) color = colorshifting(color);
85 if (MiscolorEffect || u.uprops[MISCOLOR_EFFECT].extrinsic || have_miscolorstone()) color = miscoloring(color);
86 if (SpellColorGreen) color = CLR_GREEN;
87 if (uamul && uamul->oartifact == ART_FLEECY_GREEN) color = CLR_GREEN;
88 if (FemtrapActiveMarlena && !rn2(10) ) color = rn2(2) ? CLR_GREEN : CLR_BRIGHT_GREEN;
89 if (BlackNgWalls || (uamul && uamul->oartifact == ART_BLACK_DARKNESS) || have_blackystone() || u.uprops[BLACK_NG_WALLS].extrinsic ) color = CLR_BLACK;
90 if (uarmh && uarmh->oartifact == ART_BLUE_SCREEN_OF_DEATH) color = CLR_BRIGHT_BLUE;
91 if (everythingfleecy()) color = rnd(15);
92 if (uarmg && uarmg->oartifact == ART_JONADAB_S_KEYCODE && !rn2(5)) color = rnd(15);
93 if (uarmc && itemhasappearance(uarmc, APP_FLEECELING_CLOAK) && !rn2(5) ) color = rnd(15);
94 if ((OneRainbowEffect || u.uprops[ONE_RAINBOW_EFFECT].extrinsic || have_onerainbowstone() || (uarm && uarm->oartifact == ART_YOU_REALLY_HAVE_A_TOTAL_DA) || autismweaponcheck(ART_TASTE_THE_RAINBOW)) && (color == u.onerainbownumber) ) color = rnd(15);
95 if (uamul && uamul->oartifact == ART_SUPER_GRAPHICS_CARD_BUG) {
96 if (color > 0 && color < 16) {
97 color++;
98 if (color > 15) color = 1;
102 return color;
106 STATIC_OVL
108 obj_color(n)
109 int n;
111 int color;
112 if (!iflags.use_color) {
113 return NO_COLOR;
116 color = objects[n].oc_color;
118 if (ShadesOfGrey || (uarm && uarm->oartifact == ART_GRAYSCALE_WANDERER) || autismweaponcheck(ART____SHADES_OF_GRAYSWANDIR) || (uarm && uarm->oartifact == ART_GREY_FUCKERY) || (uamul && uamul->oartifact == ART_COLORLESS_VARIETY) || u.uprops[SHADES_OF_GREY].extrinsic || have_shadesofgreystone() || autismweaponcheck(ART_VINTAGE_MEMORY) || isblait) {
119 switch (objects[n].oc_color) {
120 case CLR_RED:
121 case CLR_BROWN:
122 case CLR_BLUE:
123 color = CLR_BLACK; break;
124 case CLR_GREEN:
125 case CLR_MAGENTA:
126 case CLR_CYAN:
127 case CLR_BRIGHT_BLUE:
128 color = CLR_GRAY; break;
129 case CLR_YELLOW:
130 case CLR_ORANGE:
131 case CLR_BRIGHT_GREEN:
132 case CLR_BRIGHT_MAGENTA:
133 case CLR_BRIGHT_CYAN:
134 color = CLR_WHITE; break;
138 if (ColorshiftEffect || u.uprops[COLORSHIFT_EFFECT].extrinsic || have_colorshiftstone()) color = colorshifting(color);
139 if (MiscolorEffect || u.uprops[MISCOLOR_EFFECT].extrinsic || have_miscolorstone()) color = miscoloring(color);
140 if (SpellColorGreen) color = CLR_GREEN;
141 if (uamul && uamul->oartifact == ART_FLEECY_GREEN) color = CLR_GREEN;
142 if (FemtrapActiveMarlena && !rn2(10) ) color = rn2(2) ? CLR_GREEN : CLR_BRIGHT_GREEN;
143 if (BlackNgWalls || (uamul && uamul->oartifact == ART_BLACK_DARKNESS) || have_blackystone() || u.uprops[BLACK_NG_WALLS].extrinsic ) color = CLR_BLACK;
144 if (uarmh && uarmh->oartifact == ART_BLUE_SCREEN_OF_DEATH) color = CLR_BRIGHT_BLUE;
145 if (everythingfleecy()) color = rnd(15);
146 if (uarmg && uarmg->oartifact == ART_JONADAB_S_KEYCODE && !rn2(5)) color = rnd(15);
147 if (uarmc && itemhasappearance(uarmc, APP_FLEECELING_CLOAK) && !rn2(5) ) color = rnd(15);
148 if ((OneRainbowEffect || u.uprops[ONE_RAINBOW_EFFECT].extrinsic || have_onerainbowstone() || (uarm && uarm->oartifact == ART_YOU_REALLY_HAVE_A_TOTAL_DA) || autismweaponcheck(ART_TASTE_THE_RAINBOW)) && (color == u.onerainbownumber) ) color = rnd(15);
149 if (uamul && uamul->oartifact == ART_SUPER_GRAPHICS_CARD_BUG) {
150 if (color > 0 && color < 16) {
151 color++;
152 if (color > 15) color = 1;
156 return color;
160 STATIC_OVL
162 mon_color(n)
163 int n;
165 int color;
166 if (!iflags.use_color) {
167 return NO_COLOR;
170 boolean greyshades = FALSE;
171 if ((ShadesOfGrey || (uarm && uarm->oartifact == ART_GRAYSCALE_WANDERER) || autismweaponcheck(ART____SHADES_OF_GRAYSWANDIR) || (uarm && uarm->oartifact == ART_GREY_FUCKERY) || u.uprops[SHADES_OF_GREY].extrinsic || have_shadesofgreystone() || autismweaponcheck(ART_VINTAGE_MEMORY) ) && Infravision) greyshades = TRUE;
172 if ((uamul && uamul->oartifact == ART_COLORLESS_VARIETY) || isblait) greyshades = TRUE;
174 color = mons[n].mcolor;
176 if (mons[n].mflags4 & M4_MULTIHUED) color = rnd(15);
178 if (greyshades) {
179 switch (mons[n].mcolor) {
180 case CLR_RED:
181 case CLR_BROWN:
182 case CLR_BLUE:
183 color = CLR_BLACK; break;
184 case CLR_GREEN:
185 case CLR_MAGENTA:
186 case CLR_CYAN:
187 case CLR_BRIGHT_BLUE:
188 color = CLR_GRAY; break;
189 case CLR_YELLOW:
190 case CLR_ORANGE:
191 case CLR_BRIGHT_GREEN:
192 case CLR_BRIGHT_MAGENTA:
193 case CLR_BRIGHT_CYAN:
194 color = CLR_WHITE; break;
198 if (ColorshiftEffect || u.uprops[COLORSHIFT_EFFECT].extrinsic || have_colorshiftstone()) color = colorshifting(color);
199 if (MiscolorEffect || u.uprops[MISCOLOR_EFFECT].extrinsic || have_miscolorstone()) color = miscoloring(color);
200 if (SpellColorGreen) color = CLR_GREEN;
201 if (uamul && uamul->oartifact == ART_FLEECY_GREEN) color = CLR_GREEN;
202 if (FemtrapActiveMarlena && !rn2(10) ) color = rn2(2) ? CLR_GREEN : CLR_BRIGHT_GREEN;
203 if (BlackNgWalls || (uamul && uamul->oartifact == ART_BLACK_DARKNESS) || have_blackystone() || u.uprops[BLACK_NG_WALLS].extrinsic ) color = CLR_BLACK;
204 if (uarmc && itemhasappearance(uarmc, APP_COLORFADE_CLOAK) ) color = CLR_BLACK;
205 if (uarmh && uarmh->oartifact == ART_BLUE_SCREEN_OF_DEATH) color = CLR_BRIGHT_BLUE;
206 if (everythingfleecy()) color = rnd(15);
207 if (uarmg && uarmg->oartifact == ART_JONADAB_S_KEYCODE && !rn2(5)) color = rnd(15);
208 if (uarmc && itemhasappearance(uarmc, APP_FLEECELING_CLOAK) && !rn2(5) ) color = rnd(15);
209 if ((OneRainbowEffect || u.uprops[ONE_RAINBOW_EFFECT].extrinsic || have_onerainbowstone() || (uarm && uarm->oartifact == ART_YOU_REALLY_HAVE_A_TOTAL_DA) || autismweaponcheck(ART_TASTE_THE_RAINBOW)) && (color == u.onerainbownumber) ) color = rnd(15);
210 if (uamul && uamul->oartifact == ART_SUPER_GRAPHICS_CARD_BUG) {
211 if (color > 0 && color < 16) {
212 color++;
213 if (color > 15) color = 1;
217 return color;
221 STATIC_OVL
223 invis_color(n)
224 int n;
226 return NO_COLOR;
229 STATIC_OVL
231 pet_color(n)
232 int n;
234 int color;
235 if (!iflags.use_color) {
236 return NO_COLOR;
239 boolean greyshades = FALSE;
240 if ((ShadesOfGrey || (uarm && uarm->oartifact == ART_GRAYSCALE_WANDERER) || autismweaponcheck(ART____SHADES_OF_GRAYSWANDIR) || (uarm && uarm->oartifact == ART_GREY_FUCKERY) || u.uprops[SHADES_OF_GREY].extrinsic || have_shadesofgreystone() || autismweaponcheck(ART_VINTAGE_MEMORY) ) && Infravision) greyshades = TRUE;
241 if ((uamul && uamul->oartifact == ART_COLORLESS_VARIETY) || isblait) greyshades = TRUE;
243 color = mons[n].mcolor;
245 if (mons[n].mflags4 & M4_MULTIHUED) color = rnd(15);
247 if (greyshades) {
248 switch (mons[n].mcolor) {
249 case CLR_RED:
250 case CLR_BROWN:
251 case CLR_BLUE:
252 color = CLR_BLACK; break;
253 case CLR_GREEN:
254 case CLR_MAGENTA:
255 case CLR_CYAN:
256 case CLR_BRIGHT_BLUE:
257 color = CLR_GRAY; break;
258 case CLR_YELLOW:
259 case CLR_ORANGE:
260 case CLR_BRIGHT_GREEN:
261 case CLR_BRIGHT_MAGENTA:
262 case CLR_BRIGHT_CYAN:
263 color = CLR_WHITE; break;
267 if (ColorshiftEffect || u.uprops[COLORSHIFT_EFFECT].extrinsic || have_colorshiftstone()) color = colorshifting(color);
268 if (MiscolorEffect || u.uprops[MISCOLOR_EFFECT].extrinsic || have_miscolorstone()) color = miscoloring(color);
269 if (SpellColorGreen) color = CLR_GREEN;
270 if (uamul && uamul->oartifact == ART_FLEECY_GREEN) color = CLR_GREEN;
271 if (FemtrapActiveMarlena && !rn2(10) ) color = rn2(2) ? CLR_GREEN : CLR_BRIGHT_GREEN;
272 if (BlackNgWalls || (uamul && uamul->oartifact == ART_BLACK_DARKNESS) || have_blackystone() || u.uprops[BLACK_NG_WALLS].extrinsic ) color = CLR_BLACK;
273 if (uarmc && itemhasappearance(uarmc, APP_COLORFADE_CLOAK) ) color = CLR_BLACK;
274 if (uarmh && uarmh->oartifact == ART_BLUE_SCREEN_OF_DEATH) color = CLR_BRIGHT_BLUE;
275 if (everythingfleecy()) color = rnd(15);
276 if (uarmg && uarmg->oartifact == ART_JONADAB_S_KEYCODE && !rn2(5)) color = rnd(15);
277 if (uarmc && itemhasappearance(uarmc, APP_FLEECELING_CLOAK) && !rn2(5) ) color = rnd(15);
278 if ((OneRainbowEffect || u.uprops[ONE_RAINBOW_EFFECT].extrinsic || have_onerainbowstone() || (uarm && uarm->oartifact == ART_YOU_REALLY_HAVE_A_TOTAL_DA) || autismweaponcheck(ART_TASTE_THE_RAINBOW)) && (color == u.onerainbownumber) ) color = rnd(15);
279 if (uamul && uamul->oartifact == ART_SUPER_GRAPHICS_CARD_BUG) {
280 if (color > 0 && color < 16) {
281 color++;
282 if (color > 15) color = 1;
286 return color;
290 STATIC_OVL
292 warn_color(n)
293 int n;
295 int color;
296 if (!iflags.use_color) {
297 return NO_COLOR;
300 color = def_warnsyms[n].color;
301 if (ColorshiftEffect || u.uprops[COLORSHIFT_EFFECT].extrinsic || have_colorshiftstone()) color = colorshifting(color);
302 if (MiscolorEffect || u.uprops[MISCOLOR_EFFECT].extrinsic || have_miscolorstone()) color = miscoloring(color);
303 if (SpellColorGreen) color = CLR_GREEN;
304 if (uamul && uamul->oartifact == ART_FLEECY_GREEN) color = CLR_GREEN;
305 if (FemtrapActiveMarlena && !rn2(10) ) color = rn2(2) ? CLR_GREEN : CLR_BRIGHT_GREEN;
306 if (BlackNgWalls || (uamul && uamul->oartifact == ART_BLACK_DARKNESS) || have_blackystone() || u.uprops[BLACK_NG_WALLS].extrinsic ) color = CLR_BLACK;
307 if (uarmh && uarmh->oartifact == ART_BLUE_SCREEN_OF_DEATH) color = CLR_BRIGHT_BLUE;
308 if (everythingfleecy()) color = rnd(15);
309 if (uarmg && uarmg->oartifact == ART_JONADAB_S_KEYCODE && !rn2(5)) color = rnd(15);
310 if (uarmc && itemhasappearance(uarmc, APP_FLEECELING_CLOAK) && !rn2(5) ) color = rnd(15);
311 if ((OneRainbowEffect || u.uprops[ONE_RAINBOW_EFFECT].extrinsic || have_onerainbowstone() || (uarm && uarm->oartifact == ART_YOU_REALLY_HAVE_A_TOTAL_DA) || autismweaponcheck(ART_TASTE_THE_RAINBOW)) && (color == u.onerainbownumber) ) color = rnd(15);
312 if (uamul && uamul->oartifact == ART_SUPER_GRAPHICS_CARD_BUG) {
313 if (color > 0 && color < 16) {
314 color++;
315 if (color > 15) color = 1;
319 return color;
323 STATIC_OVL
325 explode_color(n)
326 int n;
328 int color;
329 if (!iflags.use_color) {
330 return NO_COLOR;
333 color = explcolors[n];
334 if (ColorshiftEffect || u.uprops[COLORSHIFT_EFFECT].extrinsic || have_colorshiftstone()) color = colorshifting(color);
335 if (MiscolorEffect || u.uprops[MISCOLOR_EFFECT].extrinsic || have_miscolorstone()) color = miscoloring(color);
336 if (SpellColorGreen) color = CLR_GREEN;
337 if (uamul && uamul->oartifact == ART_FLEECY_GREEN) color = CLR_GREEN;
338 if (FemtrapActiveMarlena && !rn2(10) ) color = rn2(2) ? CLR_GREEN : CLR_BRIGHT_GREEN;
339 if (BlackNgWalls || (uamul && uamul->oartifact == ART_BLACK_DARKNESS) || have_blackystone() || u.uprops[BLACK_NG_WALLS].extrinsic ) color = CLR_BLACK;
340 if (uarmh && uarmh->oartifact == ART_BLUE_SCREEN_OF_DEATH) color = CLR_BRIGHT_BLUE;
341 if (everythingfleecy()) color = rnd(15);
342 if (uarmg && uarmg->oartifact == ART_JONADAB_S_KEYCODE && !rn2(5)) color = rnd(15);
343 if (uarmc && itemhasappearance(uarmc, APP_FLEECELING_CLOAK) && !rn2(5) ) color = rnd(15);
344 if ((OneRainbowEffect || u.uprops[ONE_RAINBOW_EFFECT].extrinsic || have_onerainbowstone() || (uarm && uarm->oartifact == ART_YOU_REALLY_HAVE_A_TOTAL_DA) || autismweaponcheck(ART_TASTE_THE_RAINBOW)) && (color == u.onerainbownumber) ) color = rnd(15);
345 if (uamul && uamul->oartifact == ART_SUPER_GRAPHICS_CARD_BUG) {
346 if (color > 0 && color < 16) {
347 color++;
348 if (color > 15) color = 1;
352 return color;
356 # if defined(REINCARNATION) && defined(ASCIIGRAPH)
357 # define ROGUE_COLOR
358 # endif
360 #else /* no text color */
362 #define zap_color(n)
363 #define cmap_color(n)
364 #define obj_color(n)
365 #define mon_color(n)
366 #define invis_color(n)
367 #define pet_color(c)
368 #define warn_color(n)
369 #define explode_color(n)
370 #endif
372 #ifdef ROGUE_COLOR
373 # if defined(USE_TILES) && defined(MSDOS)
374 #define HAS_ROGUE_IBM_GRAPHICS (iflags.IBMgraphics && !iflags.grmode && \
375 Is_rogue_level(&u.uz))
376 # else
377 #define HAS_ROGUE_IBM_GRAPHICS (iflags.IBMgraphics && Is_rogue_level(&u.uz))
378 # endif
379 #endif
381 /*ARGSUSED*/
382 void
383 mapglyph(glyph, ochar, ocolor, ospecial, x, y)
384 int glyph, *ocolor, x, y;
385 int *ochar;
386 unsigned *ospecial;
388 register struct engr *ep = engr_at(x,y);
389 register int offset;
390 #if defined(TEXTCOLOR) || defined(ROGUE_COLOR)
391 int color = NO_COLOR;
392 #endif
393 uchar ch;
394 unsigned special = 0;
395 register struct trap *ttmp;
397 register struct rm *colorroom;
398 colorroom = &levl[x][y];
401 * Map the glyph back to a character and color.
403 * Warning: For speed, this makes an assumption on the order of
404 * offsets. The order is set in display.h.
406 if ((offset = (glyph - GLYPH_WARNING_OFF)) >= 0) { /* a warning flash */
407 if (On_stairs(x,y) && levl[x][y].seenv && !ThereIsNoLite) special |= MG_STAIRS;
408 if (flags.graffitihilite && ep && ep->engr_txt[0] && !Blind && levl[x][y].seenv && !ThereIsNoLite) special |= MG_ENGRAVING;
409 ch = warnsyms[offset];
410 # ifdef ROGUE_COLOR
411 if (HAS_ROGUE_IBM_GRAPHICS)
412 color = NO_COLOR;
413 else
414 # endif
415 color = warn_color(offset);
416 } else if ((offset = (glyph - GLYPH_SWALLOW_OFF)) >= 0) { /* swallow */
417 /* see swallow_to_glyph() in display.c */
418 ch = (uchar) showsyms[S_sw_tl + (offset & 0x7)];
419 #ifdef ROGUE_COLOR
420 if (HAS_ROGUE_IBM_GRAPHICS && iflags.use_color)
421 color = NO_COLOR;
422 else
423 #endif
424 color = mon_color(offset >> 3);
425 } else if ((offset = (glyph - GLYPH_ZAP_OFF)) >= 0) { /* zap beam */
426 /* see zapdir_to_glyph() in display.c */
427 ch = showsyms[S_vbeam + (offset & 0x3)];
428 #ifdef ROGUE_COLOR
429 if (HAS_ROGUE_IBM_GRAPHICS && iflags.use_color)
430 color = NO_COLOR;
431 else
432 #endif
433 color = zap_color((offset >> 2));
434 } else if ((offset = (glyph - GLYPH_EXPLODE_OFF)) >= 0) { /* explosion */
435 ch = showsyms[(offset % MAXEXPCHARS) + S_explode1];
436 color = explode_color(offset / MAXEXPCHARS);
437 } else if ((offset = (glyph - GLYPH_CMAP_OFF)) >= 0) { /* cmap */
438 if (On_stairs(x,y) && (ttmp = t_at(x,y)) && offset != S_grayglyph && !ThereIsNoLite && (ttmp && ttmp->tseen) && levl[x][y].seenv) special |= MG_STAIRS;
439 if (flags.graffitihilite && offset != S_grayglyph && ep && ep->engr_txt[0] && !Blind && levl[x][y].seenv && !ThereIsNoLite) special |= MG_ENGRAVING;
440 ch = showsyms[offset];
441 #ifdef ROGUE_COLOR
442 if (HAS_ROGUE_IBM_GRAPHICS && iflags.use_color) {
443 if (offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall))
444 color = CLR_BROWN;
445 else if (offset >= S_arrow_trap && offset <= S_timerun_trap)
446 color = CLR_MAGENTA;
447 else if (offset == S_corr || offset == S_litcorr)
448 color = CLR_GRAY;
449 else if (offset >= S_room && offset <= S_water && offset != S_darkroom)
450 color = CLR_GREEN;
451 else
452 color = NO_COLOR;
453 } else
454 #endif
455 #ifdef TEXTCOLOR
456 /* provide a visible difference if normal and lit corridor
457 * use the same symbol */
458 if (iflags.use_color &&
459 offset == S_litcorr && ch == showsyms[S_corr])
460 color = CLR_WHITE;
461 else if (iflags.use_color &&
462 (offset == S_upstair || offset == S_dnstair) &&
463 (x == sstairs.sx && y == sstairs.sy))
464 color = CLR_BRIGHT_MAGENTA;
465 /* special level colors by Amy, code partly stolen from dnethack */
466 else if(Is_lawful_quest(&u.uz)) {
467 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
468 color = CLR_BLACK;
470 else if(offset >= S_corr && offset <= S_litcorr){
471 color = CLR_BLACK;
473 else color = cmap_color(offset);
474 } else if(Is_nymph_level(&u.uz)) {
475 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
476 color = CLR_GREEN;
478 else if(offset >= S_corr && offset <= S_litcorr){
479 color = CLR_BRIGHT_GREEN;
481 else color = cmap_color(offset);
482 } else if(In_spacebase(&u.uz)) {
483 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
484 color = CLR_BRIGHT_BLUE;
486 else if(offset >= S_corr && offset <= S_litcorr){
487 color = CLR_BRIGHT_BLUE;
489 else color = cmap_color(offset);
490 } else if(In_sewerplant(&u.uz)) {
491 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
492 color = CLR_BROWN;
494 else if(offset >= S_corr && offset <= S_litcorr){
495 color = CLR_GRAY;
497 else color = cmap_color(offset);
498 } else if(In_gammacaves(&u.uz)) {
499 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
500 color = rn2(2) ? CLR_CYAN : CLR_BRIGHT_CYAN;
502 else if(offset >= S_corr && offset <= S_litcorr){
503 color = rn2(10) ? CLR_BRIGHT_CYAN : rn2(2) ? CLR_BRIGHT_GREEN : CLR_ORANGE;
505 else color = cmap_color(offset);
506 } else if(In_mainframe(&u.uz)) {
507 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
508 color = CLR_BRIGHT_GREEN;
510 else if(offset >= S_corr && offset <= S_litcorr){
511 color = CLR_BRIGHT_GREEN;
513 else color = cmap_color(offset);
514 } else if(Is_forge_level(&u.uz)) {
515 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
516 color = CLR_ORANGE;
518 else if(offset >= S_corr && offset <= S_litcorr){
519 color = CLR_RED;
521 else color = cmap_color(offset);
522 } else if(Is_hitch_level(&u.uz)) {
523 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
524 color = CLR_BRIGHT_CYAN;
526 else if(offset >= S_corr && offset <= S_litcorr){
527 color = CLR_CYAN;
529 else color = cmap_color(offset);
530 } else if(Is_compu_level(&u.uz)) {
531 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
532 color = CLR_YELLOW;
534 else if(offset >= S_corr && offset <= S_litcorr){
535 color = CLR_BROWN;
537 else color = cmap_color(offset);
538 } else if(Is_key_level(&u.uz)) {
539 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
540 color = CLR_MAGENTA;
542 else if(offset >= S_corr && offset <= S_litcorr){
543 color = CLR_MAGENTA;
545 else color = cmap_color(offset);
546 } else if(Is_mtemple_level(&u.uz)) {
547 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
548 color = CLR_ORANGE;
550 else if(offset >= S_corr && offset <= S_litcorr){
551 color = CLR_ORANGE;
553 else color = cmap_color(offset);
554 } else if(Is_stronghold(&u.uz)) {
555 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
556 color = CLR_RED;
558 else if(offset >= S_corr && offset <= S_litcorr){
559 color = CLR_RED;
561 else color = cmap_color(offset);
562 } else if(In_sheol(&u.uz)) {
563 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
564 color = CLR_BRIGHT_CYAN;
566 else if(offset >= S_corr && offset <= S_litcorr){
567 color = CLR_BRIGHT_CYAN;
569 else color = cmap_color(offset);
570 } else if(*in_rooms(x,y,BEEHIVE)) {
571 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
572 color = CLR_YELLOW;
574 else if(offset >= S_corr && offset <= S_litcorr){
575 color = CLR_YELLOW;
577 else color = cmap_color(offset);
578 } else if(*in_rooms(x,y,COURT)) {
579 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
580 color = CLR_MAGENTA;
582 else if(offset >= S_corr && offset <= S_litcorr){
583 color = CLR_MAGENTA;
585 else color = cmap_color(offset);
586 } else if(*in_rooms(x,y,SWAMP)) {
587 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
588 color = CLR_GREEN;
590 else if(offset >= S_corr && offset <= S_litcorr){
591 color = CLR_GREEN;
593 else color = cmap_color(offset);
594 } else if(*in_rooms(x,y,VAULT)) {
595 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
596 color = CLR_YELLOW;
598 else if(offset >= S_corr && offset <= S_litcorr){
599 color = CLR_YELLOW;
601 else color = cmap_color(offset);
602 } else if(*in_rooms(x,y,MORGUE)) {
603 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
604 color = CLR_BLACK;
606 else if(offset >= S_corr && offset <= S_litcorr){
607 color = CLR_BLACK;
609 else color = cmap_color(offset);
610 } else if(*in_rooms(x,y,BARRACKS)) {
611 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
612 color = CLR_RED;
614 else if(offset >= S_corr && offset <= S_litcorr){
615 color = CLR_RED;
617 else color = cmap_color(offset);
618 } else if(*in_rooms(x,y,ZOO)) {
619 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
620 color = CLR_BROWN;
622 else if(offset >= S_corr && offset <= S_litcorr){
623 color = CLR_BROWN;
625 else color = cmap_color(offset);
626 } else if(*in_rooms(x,y,REALZOO)) {
627 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
628 color = CLR_BROWN;
630 else if(offset >= S_corr && offset <= S_litcorr){
631 color = CLR_BROWN;
633 else color = cmap_color(offset);
634 } else if(*in_rooms(x,y,DELPHI)) {
635 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
636 color = CLR_BRIGHT_BLUE;
638 else if(offset >= S_corr && offset <= S_litcorr){
639 color = CLR_BRIGHT_BLUE;
641 else color = cmap_color(offset);
642 } else if(*in_rooms(x,y,TEMPLE)) {
643 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
644 color = CLR_CYAN;
646 else if(offset >= S_corr && offset <= S_litcorr){
647 color = CLR_CYAN;
649 else color = cmap_color(offset);
650 } else if(*in_rooms(x,y,GIANTCOURT)) {
651 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
652 color = CLR_CYAN;
654 else if(offset >= S_corr && offset <= S_litcorr){
655 color = CLR_CYAN;
657 else color = cmap_color(offset);
658 } else if(*in_rooms(x,y,LEPREHALL)) {
659 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
660 color = CLR_GREEN;
662 else if(offset >= S_corr && offset <= S_litcorr){
663 color = CLR_GREEN;
665 else color = cmap_color(offset);
666 } else if(*in_rooms(x,y,DRAGONLAIR)) {
667 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
668 color = CLR_BRIGHT_MAGENTA;
670 else if(offset >= S_corr && offset <= S_litcorr){
671 color = CLR_BRIGHT_MAGENTA;
673 else color = cmap_color(offset);
674 } else if(*in_rooms(x,y,BADFOODSHOP)) {
675 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
676 color = CLR_RED;
678 else if(offset >= S_corr && offset <= S_litcorr){
679 color = CLR_RED;
681 else color = cmap_color(offset);
682 } else if(*in_rooms(x,y,COCKNEST)) {
683 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
684 color = CLR_YELLOW;
686 else if(offset >= S_corr && offset <= S_litcorr){
687 color = CLR_YELLOW;
689 else color = cmap_color(offset);
690 } else if(*in_rooms(x,y,ANTHOLE)) {
691 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
692 color = CLR_BROWN;
694 else if(offset >= S_corr && offset <= S_litcorr){
695 color = CLR_BROWN;
697 else color = cmap_color(offset);
698 } else if(*in_rooms(x,y,LEMUREPIT)) {
699 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
700 color = CLR_BLACK;
702 else if(offset >= S_corr && offset <= S_litcorr){
703 color = CLR_BLACK;
705 else color = cmap_color(offset);
706 } else if(*in_rooms(x,y,MIGOHIVE)) {
707 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
708 color = CLR_BRIGHT_GREEN;
710 else if(offset >= S_corr && offset <= S_litcorr){
711 color = CLR_BRIGHT_GREEN;
713 else color = cmap_color(offset);
714 } else if(*in_rooms(x,y,FUNGUSFARM)) {
715 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
716 color = CLR_BRIGHT_GREEN;
718 else if(offset >= S_corr && offset <= S_litcorr){
719 color = CLR_BRIGHT_GREEN;
721 else color = cmap_color(offset);
722 } else if(*in_rooms(x,y,CLINIC)) {
723 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
724 color = CLR_ORANGE;
726 else if(offset >= S_corr && offset <= S_litcorr){
727 color = CLR_ORANGE;
729 else color = cmap_color(offset);
730 } else if(*in_rooms(x,y,TERRORHALL)) {
731 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
732 color = CLR_BRIGHT_CYAN;
734 else if(offset >= S_corr && offset <= S_litcorr){
735 color = CLR_BRIGHT_CYAN;
737 else color = cmap_color(offset);
738 } else if(*in_rooms(x,y,RIVERROOM)) {
739 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
740 color = CLR_BRIGHT_BLUE;
742 else if(offset >= S_corr && offset <= S_litcorr){
743 color = CLR_BRIGHT_BLUE;
745 else color = cmap_color(offset);
746 } else if(*in_rooms(x,y,ELEMHALL)) {
747 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
748 color = CLR_GRAY;
750 else if(offset >= S_corr && offset <= S_litcorr){
751 color = CLR_GRAY;
753 else color = cmap_color(offset);
754 } else if(*in_rooms(x,y,ANGELHALL)) {
755 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
756 color = CLR_WHITE;
758 else if(offset >= S_corr && offset <= S_litcorr){
759 color = CLR_WHITE;
761 else color = cmap_color(offset);
762 } else if(*in_rooms(x,y,NYMPHHALL)) {
763 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
764 color = CLR_GREEN;
766 else if(offset >= S_corr && offset <= S_litcorr){
767 color = CLR_GREEN;
769 else color = cmap_color(offset);
770 } else if(*in_rooms(x,y,SPIDERHALL)) {
771 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
772 color = CLR_GRAY;
774 else if(offset >= S_corr && offset <= S_litcorr){
775 color = CLR_GRAY;
777 else color = cmap_color(offset);
778 } else if(*in_rooms(x,y,TROLLHALL)) {
779 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
780 color = CLR_BROWN;
782 else if(offset >= S_corr && offset <= S_litcorr){
783 color = CLR_BROWN;
785 else color = cmap_color(offset);
786 } else if(*in_rooms(x,y,HUMANHALL)) {
787 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
788 color = CLR_BRIGHT_BLUE;
790 else if(offset >= S_corr && offset <= S_litcorr){
791 color = CLR_BRIGHT_BLUE;
793 else color = cmap_color(offset);
794 } else if(*in_rooms(x,y,GOLEMHALL)) {
795 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
796 color = CLR_GRAY;
798 else if(offset >= S_corr && offset <= S_litcorr){
799 color = CLR_GRAY;
801 else color = cmap_color(offset);
802 } else if(*in_rooms(x,y,CRYPTROOM)) {
803 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
804 color = CLR_BRIGHT_BLUE;
806 else if(offset >= S_corr && offset <= S_litcorr){
807 color = CLR_BRIGHT_BLUE;
809 else color = cmap_color(offset);
810 } else if(*in_rooms(x,y,TROUBLEZONE)) {
811 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
812 color = CLR_MAGENTA;
814 else if(offset >= S_corr && offset <= S_litcorr){
815 color = CLR_MAGENTA;
817 else color = cmap_color(offset);
818 } else if(*in_rooms(x,y,WEAPONCHAMBER)) {
819 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
820 color = CLR_BROWN;
822 else if(offset >= S_corr && offset <= S_litcorr){
823 color = CLR_BROWN;
825 else color = cmap_color(offset);
826 } else if(*in_rooms(x,y,HELLPIT)) {
827 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
828 color = CLR_ORANGE;
830 else if(offset >= S_corr && offset <= S_litcorr){
831 color = CLR_ORANGE;
833 else color = cmap_color(offset);
834 } else if(*in_rooms(x,y,ROBBERCAVE)) {
835 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
836 color = CLR_GRAY;
838 else if(offset >= S_corr && offset <= S_litcorr){
839 color = CLR_GRAY;
841 else color = cmap_color(offset);
842 } else if(*in_rooms(x,y,SANITATIONCENTRAL)) {
843 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
844 color = CLR_CYAN;
846 else if(offset >= S_corr && offset <= S_litcorr){
847 color = CLR_CYAN;
849 else color = cmap_color(offset);
850 } else if(*in_rooms(x,y,FEMINISMROOM)) {
851 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
852 color = CLR_BRIGHT_MAGENTA;
854 else if(offset >= S_corr && offset <= S_litcorr){
855 color = CLR_BRIGHT_MAGENTA;
857 else color = cmap_color(offset);
858 } else if(*in_rooms(x,y,MEADOWROOM)) {
859 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
860 color = CLR_BRIGHT_GREEN;
862 else if(offset >= S_corr && offset <= S_litcorr){
863 color = CLR_BRIGHT_GREEN;
865 else color = cmap_color(offset);
866 } else if(*in_rooms(x,y,COOLINGCHAMBER)) {
867 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
868 color = CLR_BRIGHT_CYAN;
870 else if(offset >= S_corr && offset <= S_litcorr){
871 color = CLR_BRIGHT_CYAN;
873 else color = cmap_color(offset);
874 } else if(*in_rooms(x,y,VOIDROOM)) {
875 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
876 color = CLR_MAGENTA;
878 else if(offset >= S_corr && offset <= S_litcorr){
879 color = CLR_MAGENTA;
881 else color = cmap_color(offset);
882 } else if(*in_rooms(x,y,HAMLETROOM)) {
883 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
884 color = CLR_GREEN;
886 else if(offset >= S_corr && offset <= S_litcorr){
887 color = CLR_GREEN;
889 else color = cmap_color(offset);
890 } else if(*in_rooms(x,y,KOPSTATION)) {
891 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
892 color = CLR_MAGENTA;
894 else if(offset >= S_corr && offset <= S_litcorr){
895 color = CLR_MAGENTA;
897 else color = cmap_color(offset);
898 } else if(*in_rooms(x,y,BOSSROOM)) {
899 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
900 color = rnd(15);
902 else if(offset >= S_corr && offset <= S_litcorr){
903 color = rnd(15);
905 else color = cmap_color(offset);
906 } else if(*in_rooms(x,y,RNGCENTER)) {
907 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
908 color = rnd(15);
910 else if(offset >= S_corr && offset <= S_litcorr){
911 color = rnd(15);
913 else color = cmap_color(offset);
914 } else if(*in_rooms(x,y,VARIANTROOM)) {
915 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
916 color = rnd(15);
918 else if(offset >= S_corr && offset <= S_litcorr){
919 color = rnd(15);
921 else color = cmap_color(offset);
922 } else if(*in_rooms(x,y,WIZARDSDORM)) {
923 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
924 color = CLR_CYAN;
926 else if(offset >= S_corr && offset <= S_litcorr){
927 color = CLR_CYAN;
929 else color = cmap_color(offset);
930 } else if(*in_rooms(x,y,DOOMEDBARRACKS)) {
931 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
932 color = CLR_BLACK;
934 else if(offset >= S_corr && offset <= S_litcorr){
935 color = CLR_BLACK;
937 else color = cmap_color(offset);
938 } else if(*in_rooms(x,y,SLEEPINGROOM)) {
939 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
940 color = CLR_GRAY;
942 else if(offset >= S_corr && offset <= S_litcorr){
943 color = CLR_GRAY;
945 else color = cmap_color(offset);
946 } else if(*in_rooms(x,y,DIVERPARADISE)) {
947 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
948 color = CLR_BRIGHT_BLUE;
950 else if(offset >= S_corr && offset <= S_litcorr){
951 color = CLR_BRIGHT_BLUE;
953 else color = cmap_color(offset);
954 } else if(*in_rooms(x,y,MENAGERIE)) {
955 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
956 color = CLR_YELLOW;
958 else if(offset >= S_corr && offset <= S_litcorr){
959 color = CLR_YELLOW;
961 else color = cmap_color(offset);
962 } else if(*in_rooms(x,y,EMPTYDESERT)) {
963 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
964 color = CLR_BROWN;
966 else if(offset >= S_corr && offset <= S_litcorr){
967 color = CLR_BROWN;
969 else color = cmap_color(offset);
970 } else if(*in_rooms(x,y,RARITYROOM)) {
971 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
972 color = CLR_YELLOW;
974 else if(offset >= S_corr && offset <= S_litcorr){
975 color = CLR_YELLOW;
977 else color = cmap_color(offset);
978 } else if(*in_rooms(x,y,EXHIBITROOM)) {
979 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
980 color = CLR_RED;
982 else if(offset >= S_corr && offset <= S_litcorr){
983 color = CLR_RED;
985 else color = cmap_color(offset);
986 } else if(*in_rooms(x,y,PRISONCHAMBER)) {
987 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
988 color = CLR_WHITE;
990 else if(offset >= S_corr && offset <= S_litcorr){
991 color = CLR_WHITE;
993 else color = cmap_color(offset);
994 } else if(*in_rooms(x,y,NUCLEARCHAMBER)) {
995 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
996 color = CLR_ORANGE;
998 else if(offset >= S_corr && offset <= S_litcorr){
999 color = CLR_ORANGE;
1001 else color = cmap_color(offset);
1002 } else if(*in_rooms(x,y,LEVELSEVENTYROOM)) {
1003 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1004 color = CLR_BLACK;
1006 else if(offset >= S_corr && offset <= S_litcorr){
1007 color = CLR_BLACK;
1009 else color = cmap_color(offset);
1010 } else if(*in_rooms(x,y,PLAYERCENTRAL)) {
1011 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1012 color = CLR_MAGENTA;
1014 else if(offset >= S_corr && offset <= S_litcorr){
1015 color = CLR_MAGENTA;
1017 else color = cmap_color(offset);
1018 } else if(*in_rooms(x,y,COINHALL)) {
1019 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1020 color = CLR_YELLOW;
1022 else if(offset >= S_corr && offset <= S_litcorr){
1023 color = CLR_YELLOW;
1025 else color = cmap_color(offset);
1026 } else if(*in_rooms(x,y,DOUGROOM)) {
1027 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1028 color = CLR_BRIGHT_CYAN;
1030 else if(offset >= S_corr && offset <= S_litcorr){
1031 color = CLR_BRIGHT_CYAN;
1033 else color = cmap_color(offset);
1034 } else if(*in_rooms(x,y,ARMORY)) {
1035 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1036 color = CLR_CYAN;
1038 else if(offset >= S_corr && offset <= S_litcorr){
1039 color = CLR_CYAN;
1041 else color = cmap_color(offset);
1042 } else if(*in_rooms(x,y,TENSHALL)) {
1043 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1044 color = rnd(15);
1046 else if(offset >= S_corr && offset <= S_litcorr){
1047 color = rnd(15);
1049 else color = cmap_color(offset);
1050 } else if(*in_rooms(x,y,EVILROOM)) {
1051 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1052 color = rn2(2) ? CLR_MAGENTA : CLR_BRIGHT_MAGENTA;
1054 else if(offset >= S_corr && offset <= S_litcorr){
1055 color = rn2(2) ? CLR_MAGENTA : CLR_BRIGHT_MAGENTA;
1057 else color = cmap_color(offset);
1058 } else if(*in_rooms(x,y,RELIGIONCENTER)) {
1059 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1060 color = CLR_BLACK;
1062 else if(offset >= S_corr && offset <= S_litcorr){
1063 color = CLR_BLACK;
1065 else color = cmap_color(offset);
1066 } else if(*in_rooms(x,y,CHAOSROOM)) {
1067 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1068 color = rnd(15);
1070 else if(offset >= S_corr && offset <= S_litcorr){
1071 color = rnd(15);
1073 else color = cmap_color(offset);
1074 } else if(*in_rooms(x,y,CURSEDMUMMYROOM)) {
1075 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1076 color = CLR_CYAN;
1078 else if(offset >= S_corr && offset <= S_litcorr){
1079 color = CLR_CYAN;
1081 else color = cmap_color(offset);
1082 } else if(*in_rooms(x,y,MIXEDPOOL)) {
1083 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1084 color = rn2(2) ? CLR_BRIGHT_BLUE : CLR_BRIGHT_CYAN;
1086 else if(offset >= S_corr && offset <= S_litcorr){
1087 color = rn2(2) ? CLR_BRIGHT_BLUE : CLR_BRIGHT_CYAN;
1089 else color = cmap_color(offset);
1090 } else if(*in_rooms(x,y,ARDUOUSMOUNTAIN)) {
1091 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1092 color = CLR_WHITE;
1094 else if(offset >= S_corr && offset <= S_litcorr){
1095 color = CLR_WHITE;
1097 else color = cmap_color(offset);
1098 } else if(*in_rooms(x,y,CHANGINGROOM)) {
1099 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1100 color = CLR_BRIGHT_MAGENTA;
1102 else if(offset >= S_corr && offset <= S_litcorr){
1103 color = CLR_BRIGHT_MAGENTA;
1105 else color = cmap_color(offset);
1106 } else if(*in_rooms(x,y,QUESTORROOM)) {
1107 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1108 color = CLR_MAGENTA;
1110 else if(offset >= S_corr && offset <= S_litcorr){
1111 color = CLR_MAGENTA;
1113 else color = cmap_color(offset);
1114 } else if(*in_rooms(x,y,LEVELFFROOM)) {
1115 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1116 color = CLR_GRAY;
1118 else if(offset >= S_corr && offset <= S_litcorr){
1119 color = CLR_GRAY;
1121 else color = cmap_color(offset);
1122 } else if(*in_rooms(x,y,VERMINROOM)) {
1123 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1124 color = CLR_BROWN;
1126 else if(offset >= S_corr && offset <= S_litcorr){
1127 color = CLR_BROWN;
1129 else color = cmap_color(offset);
1130 } else if(*in_rooms(x,y,MIRASPA)) {
1131 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1132 color = CLR_YELLOW;
1134 else if(offset >= S_corr && offset <= S_litcorr){
1135 color = CLR_YELLOW;
1137 else color = cmap_color(offset);
1138 } else if(*in_rooms(x,y,MACHINEROOM)) {
1139 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1140 color = CLR_GRAY;
1142 else if(offset >= S_corr && offset <= S_litcorr){
1143 color = CLR_GRAY;
1145 else color = cmap_color(offset);
1146 } else if(*in_rooms(x,y,SHOWERROOM)) {
1147 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1148 color = CLR_BRIGHT_BLUE;
1150 else if(offset >= S_corr && offset <= S_litcorr){
1151 color = CLR_BRIGHT_BLUE;
1153 else color = cmap_color(offset);
1154 } else if(*in_rooms(x,y,GREENCROSSROOM)) {
1155 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1156 color = CLR_BRIGHT_GREEN;
1158 else if(offset >= S_corr && offset <= S_litcorr){
1159 color = CLR_BRIGHT_GREEN;
1161 else color = cmap_color(offset);
1162 } else if(*in_rooms(x,y,CENTRALTEDIUM)) {
1163 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1164 color = CLR_GREEN;
1166 else if(offset >= S_corr && offset <= S_litcorr){
1167 color = CLR_GREEN;
1169 else color = cmap_color(offset);
1170 } else if(*in_rooms(x,y,RUINEDCHURCH)) {
1171 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1172 color = CLR_BLACK;
1174 else if(offset >= S_corr && offset <= S_litcorr){
1175 color = CLR_BLACK;
1177 else color = cmap_color(offset);
1178 } else if(*in_rooms(x,y,RAMPAGEROOM)) {
1179 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1180 color = CLR_GRAY;
1182 else if(offset >= S_corr && offset <= S_litcorr){
1183 color = CLR_GRAY;
1185 else color = cmap_color(offset);
1186 } else if(*in_rooms(x,y,GAMECORNER)) {
1187 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1188 color = CLR_BRIGHT_BLUE;
1190 else if(offset >= S_corr && offset <= S_litcorr){
1191 color = CLR_BRIGHT_BLUE;
1193 else color = cmap_color(offset);
1194 } else if(*in_rooms(x,y,ILLUSIONROOM)) {
1195 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1196 color = !rn2(3) ? CLR_WHITE : !rn2(2) ? CLR_GRAY : CLR_CYAN;
1198 else if(offset >= S_corr && offset <= S_litcorr){
1199 color = !rn2(3) ? CLR_WHITE : !rn2(2) ? CLR_GRAY : CLR_CYAN;
1201 else color = cmap_color(offset);
1202 } else if(*in_rooms(x,y,INSIDEROOM)) {
1203 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1204 color = rnd(15);
1206 else if(offset >= S_corr && offset <= S_litcorr){
1207 color = rnd(15);
1209 else color = cmap_color(offset);
1210 } else if(*in_rooms(x,y,POOLROOM)) {
1211 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1212 color = CLR_BRIGHT_BLUE;
1214 else if(offset >= S_corr && offset <= S_litcorr){
1215 color = CLR_BRIGHT_BLUE;
1217 else color = cmap_color(offset);
1218 } else if(*in_roomscolouur(x,y,1) && *in_rooms(x,y,OROOM)) {
1219 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1220 color = 1;
1222 else if(offset >= S_corr && offset <= S_litcorr){
1223 color = 1;
1225 else color = cmap_color(offset);
1226 } else if(*in_roomscolouur(x,y,2) && *in_rooms(x,y,OROOM)) {
1227 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1228 color = 2;
1230 else if(offset >= S_corr && offset <= S_litcorr){
1231 color = 2;
1233 else color = cmap_color(offset);
1234 } else if(*in_roomscolouur(x,y,3) && *in_rooms(x,y,OROOM)) {
1235 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1236 color = 3;
1238 else if(offset >= S_corr && offset <= S_litcorr){
1239 color = 3;
1241 else color = cmap_color(offset);
1242 } else if(*in_roomscolouur(x,y,4) && *in_rooms(x,y,OROOM)) {
1243 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1244 color = 4;
1246 else if(offset >= S_corr && offset <= S_litcorr){
1247 color = 4;
1249 else color = cmap_color(offset);
1250 } else if(*in_roomscolouur(x,y,5) && *in_rooms(x,y,OROOM)) {
1251 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1252 color = 5;
1254 else if(offset >= S_corr && offset <= S_litcorr){
1255 color = 5;
1257 else color = cmap_color(offset);
1258 } else if(*in_roomscolouur(x,y,6) && *in_rooms(x,y,OROOM)) {
1259 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1260 color = 6;
1262 else if(offset >= S_corr && offset <= S_litcorr){
1263 color = 6;
1265 else color = cmap_color(offset);
1266 } else if(*in_roomscolouur(x,y,7) && *in_rooms(x,y,OROOM)) {
1267 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1268 color = 7;
1270 else if(offset >= S_corr && offset <= S_litcorr){
1271 color = 7;
1273 else color = cmap_color(offset);
1274 } else if(*in_roomscolouur(x,y,8) && *in_rooms(x,y,OROOM)) {
1275 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1276 color = 8;
1278 else if(offset >= S_corr && offset <= S_litcorr){
1279 color = 8;
1281 else color = cmap_color(offset);
1282 } else if(*in_roomscolouur(x,y,9) && *in_rooms(x,y,OROOM)) {
1283 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1284 color = 9;
1286 else if(offset >= S_corr && offset <= S_litcorr){
1287 color = 9;
1289 else color = cmap_color(offset);
1290 } else if(*in_roomscolouur(x,y,10) && *in_rooms(x,y,OROOM)) {
1291 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1292 color = 10;
1294 else if(offset >= S_corr && offset <= S_litcorr){
1295 color = 10;
1297 else color = cmap_color(offset);
1298 } else if(*in_roomscolouur(x,y,11) && *in_rooms(x,y,OROOM)) {
1299 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1300 color = 11;
1302 else if(offset >= S_corr && offset <= S_litcorr){
1303 color = 11;
1305 else color = cmap_color(offset);
1306 } else if(*in_roomscolouur(x,y,12) && *in_rooms(x,y,OROOM)) {
1307 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1308 color = 12;
1310 else if(offset >= S_corr && offset <= S_litcorr){
1311 color = 12;
1313 else color = cmap_color(offset);
1314 } else if(*in_roomscolouur(x,y,13) && *in_rooms(x,y,OROOM)) {
1315 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1316 color = 13;
1318 else if(offset >= S_corr && offset <= S_litcorr){
1319 color = 13;
1321 else color = cmap_color(offset);
1322 } else if(*in_roomscolouur(x,y,14) && *in_rooms(x,y,OROOM)) {
1323 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1324 color = 14;
1326 else if(offset >= S_corr && offset <= S_litcorr){
1327 color = 14;
1329 else color = cmap_color(offset);
1330 } else if(*in_roomscolouur(x,y,15) && *in_rooms(x,y,OROOM)) {
1331 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1332 color = 15;
1334 else if(offset >= S_corr && offset <= S_litcorr){
1335 color = 15;
1337 else color = cmap_color(offset);
1338 } else if(*in_roomscolouur(x,y,20) && *in_rooms(x,y,OROOM)) {
1339 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1340 color = rnd(15);
1342 else if(offset >= S_corr && offset <= S_litcorr){
1343 color = rnd(15);
1345 else color = cmap_color(offset);
1346 } else if(*in_roomscolouur(x,y,21) && *in_rooms(x,y,OROOM)) {
1347 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1348 color = rn2(2) ? CLR_MAGENTA : CLR_BRIGHT_MAGENTA;
1350 else if(offset >= S_corr && offset <= S_litcorr){
1351 color = rn2(2) ? CLR_MAGENTA : CLR_BRIGHT_MAGENTA;
1353 else color = cmap_color(offset);
1354 } else if(*in_roomscolouur(x,y,22) && *in_rooms(x,y,OROOM)) {
1355 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1356 color = rn2(2) ? CLR_BRIGHT_CYAN : CLR_BRIGHT_BLUE;
1358 else if(offset >= S_corr && offset <= S_litcorr){
1359 color = rn2(2) ? CLR_BRIGHT_CYAN : CLR_BRIGHT_BLUE;
1361 else color = cmap_color(offset);
1362 } else if(*in_roomscolouur(x,y,23) && *in_rooms(x,y,OROOM)) {
1363 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1364 color = !rn2(3) ? CLR_WHITE : !rn2(2) ? CLR_GRAY : CLR_CYAN;
1366 else if(offset >= S_corr && offset <= S_litcorr){
1367 color = !rn2(3) ? CLR_WHITE : !rn2(2) ? CLR_GRAY : CLR_CYAN;
1369 else color = cmap_color(offset);
1371 else if (colorroom->fleecycolor == 1) {
1372 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1373 color = 1;
1375 else if(offset >= S_corr && offset <= S_litcorr){
1376 color = 1;
1378 else color = cmap_color(offset);
1380 else if (colorroom->fleecycolor == 2) {
1381 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1382 color = 2;
1384 else if(offset >= S_corr && offset <= S_litcorr){
1385 color = 2;
1387 else color = cmap_color(offset);
1389 else if (colorroom->fleecycolor == 3) {
1390 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1391 color = 3;
1393 else if(offset >= S_corr && offset <= S_litcorr){
1394 color = 3;
1396 else color = cmap_color(offset);
1398 else if (colorroom->fleecycolor == 4) {
1399 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1400 color = 4;
1402 else if(offset >= S_corr && offset <= S_litcorr){
1403 color = 4;
1405 else color = cmap_color(offset);
1407 else if (colorroom->fleecycolor == 5) {
1408 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1409 color = 5;
1411 else if(offset >= S_corr && offset <= S_litcorr){
1412 color = 5;
1414 else color = cmap_color(offset);
1416 else if (colorroom->fleecycolor == 6) {
1417 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1418 color = 6;
1420 else if(offset >= S_corr && offset <= S_litcorr){
1421 color = 6;
1423 else color = cmap_color(offset);
1425 else if (colorroom->fleecycolor == 7) {
1426 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1427 color = 7;
1429 else if(offset >= S_corr && offset <= S_litcorr){
1430 color = 7;
1432 else color = cmap_color(offset);
1434 else if (colorroom->fleecycolor == 8) {
1435 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1436 color = 8;
1438 else if(offset >= S_corr && offset <= S_litcorr){
1439 color = 8;
1441 else color = cmap_color(offset);
1443 else if (colorroom->fleecycolor == 9) {
1444 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1445 color = 9;
1447 else if(offset >= S_corr && offset <= S_litcorr){
1448 color = 9;
1450 else color = cmap_color(offset);
1452 else if (colorroom->fleecycolor == 10) {
1453 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1454 color = 10;
1456 else if(offset >= S_corr && offset <= S_litcorr){
1457 color = 10;
1459 else color = cmap_color(offset);
1461 else if (colorroom->fleecycolor == 11) {
1462 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1463 color = 11;
1465 else if(offset >= S_corr && offset <= S_litcorr){
1466 color = 11;
1468 else color = cmap_color(offset);
1470 else if (colorroom->fleecycolor == 12) {
1471 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1472 color = 12;
1474 else if(offset >= S_corr && offset <= S_litcorr){
1475 color = 12;
1477 else color = cmap_color(offset);
1479 else if (colorroom->fleecycolor == 13) {
1480 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1481 color = 13;
1483 else if(offset >= S_corr && offset <= S_litcorr){
1484 color = 13;
1486 else color = cmap_color(offset);
1488 else if (colorroom->fleecycolor == 14) {
1489 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1490 color = 14;
1492 else if(offset >= S_corr && offset <= S_litcorr){
1493 color = 14;
1495 else color = cmap_color(offset);
1497 else if (colorroom->fleecycolor == 15) {
1498 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1499 color = 15;
1501 else if(offset >= S_corr && offset <= S_litcorr){
1502 color = 15;
1504 else color = cmap_color(offset);
1506 else if (colorroom->fleecycolor == 16) {
1507 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1508 color = rnd(15);
1510 else if(offset >= S_corr && offset <= S_litcorr){
1511 color = rnd(15);
1513 else color = cmap_color(offset);
1515 else if ((100 + u.monstertimefinish + depth(&u.uz)) % 16 == 0) {
1516 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1517 color = 1;
1519 else if(offset >= S_corr && offset <= S_litcorr){
1520 color = 1;
1522 else color = cmap_color(offset);
1523 } else if ((101 + u.monstertimefinish + depth(&u.uz)) % 16 == 0) {
1524 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1525 color = 2;
1527 else if(offset >= S_corr && offset <= S_litcorr){
1528 color = 2;
1530 else color = cmap_color(offset);
1531 } else if ((102 + u.monstertimefinish + depth(&u.uz)) % 16 == 0) {
1532 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1533 color = 3;
1535 else if(offset >= S_corr && offset <= S_litcorr){
1536 color = 3;
1538 else color = cmap_color(offset);
1539 } else if ((103 + u.monstertimefinish + depth(&u.uz)) % 16 == 0) {
1540 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1541 color = 4;
1543 else if(offset >= S_corr && offset <= S_litcorr){
1544 color = 4;
1546 else color = cmap_color(offset);
1547 } else if ((104 + u.monstertimefinish + depth(&u.uz)) % 16 == 0) {
1548 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1549 color = 5;
1551 else if(offset >= S_corr && offset <= S_litcorr){
1552 color = 5;
1554 else color = cmap_color(offset);
1555 } else if ((105 + u.monstertimefinish + depth(&u.uz)) % 16 == 0) {
1556 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1557 color = 6;
1559 else if(offset >= S_corr && offset <= S_litcorr){
1560 color = 6;
1562 else color = cmap_color(offset);
1563 } else if ((106 + u.monstertimefinish + depth(&u.uz)) % 16 == 0) {
1564 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1565 color = 7;
1567 else if(offset >= S_corr && offset <= S_litcorr){
1568 color = 7;
1570 else color = cmap_color(offset);
1571 } else if ((107 + u.monstertimefinish + depth(&u.uz)) % 16 == 0) {
1572 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1573 color = 8;
1575 else if(offset >= S_corr && offset <= S_litcorr){
1576 color = 8;
1578 else color = cmap_color(offset);
1579 } else if ((108 + u.monstertimefinish + depth(&u.uz)) % 16 == 0) {
1580 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1581 color = 9;
1583 else if(offset >= S_corr && offset <= S_litcorr){
1584 color = 9;
1586 else color = cmap_color(offset);
1587 } else if ((109 + u.monstertimefinish + depth(&u.uz)) % 16 == 0) {
1588 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1589 color = 10;
1591 else if(offset >= S_corr && offset <= S_litcorr){
1592 color = 10;
1594 else color = cmap_color(offset);
1595 } else if ((110 + u.monstertimefinish + depth(&u.uz)) % 16 == 0) {
1596 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1597 color = 11;
1599 else if(offset >= S_corr && offset <= S_litcorr){
1600 color = 11;
1602 else color = cmap_color(offset);
1603 } else if ((111 + u.monstertimefinish + depth(&u.uz)) % 16 == 0) {
1604 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1605 color = 12;
1607 else if(offset >= S_corr && offset <= S_litcorr){
1608 color = 12;
1610 else color = cmap_color(offset);
1611 } else if ((112 + u.monstertimefinish + depth(&u.uz)) % 16 == 0) {
1612 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1613 color = 13;
1615 else if(offset >= S_corr && offset <= S_litcorr){
1616 color = 13;
1618 else color = cmap_color(offset);
1619 } else if ((113 + u.monstertimefinish + depth(&u.uz)) % 16 == 0) {
1620 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1621 color = 14;
1623 else if(offset >= S_corr && offset <= S_litcorr){
1624 color = 14;
1626 else color = cmap_color(offset);
1627 } else if ((114 + u.monstertimefinish + depth(&u.uz)) % 16 == 0) {
1628 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1629 color = 15;
1631 else if(offset >= S_corr && offset <= S_litcorr){
1632 color = 15;
1634 else color = cmap_color(offset);
1635 } else if ((115 + u.monstertimefinish + depth(&u.uz)) % 16 == 0) {
1636 if(offset >= S_vwall && offset <= S_hcdoor && !(offset >= S_rockwall && offset <= S_tunnelwall)){
1637 color = rnd(15);
1639 else if(offset >= S_corr && offset <= S_litcorr){
1640 color = rnd(15);
1642 else color = cmap_color(offset);
1643 } else
1644 #endif
1645 if (color == NO_COLOR) color = cmap_color(offset);
1647 if (ColorshiftEffect || u.uprops[COLORSHIFT_EFFECT].extrinsic || have_colorshiftstone()) color = colorshifting(color);
1648 if (MiscolorEffect || u.uprops[MISCOLOR_EFFECT].extrinsic || have_miscolorstone()) color = miscoloring(color);
1650 if (uarmh && uarmh->oartifact == ART_BLUE_SCREEN_OF_DEATH) color = CLR_BRIGHT_BLUE;
1651 else if (BlackNgWalls || (uamul && uamul->oartifact == ART_BLACK_DARKNESS) || have_blackystone() || u.uprops[BLACK_NG_WALLS].extrinsic ) color = CLR_BLACK;
1652 else if (FemtrapActiveMarlena && !rn2(10) ) color = (rn2(2) ? CLR_GREEN : CLR_BRIGHT_GREEN);
1653 else if (uamul && uamul->oartifact == ART_FLEECY_GREEN) color = CLR_GREEN;
1654 else if (SpellColorGreen) color = CLR_GREEN;
1655 else if (ShadesOfGrey || (uarm && uarm->oartifact == ART_GRAYSCALE_WANDERER) || autismweaponcheck(ART____SHADES_OF_GRAYSWANDIR) || (uarm && uarm->oartifact == ART_GREY_FUCKERY) || (uamul && uamul->oartifact == ART_COLORLESS_VARIETY) || u.uprops[SHADES_OF_GREY].extrinsic || have_shadesofgreystone() || autismweaponcheck(ART_VINTAGE_MEMORY) || isblait ) {
1656 switch (color) {
1657 case CLR_RED:
1658 case CLR_BROWN:
1659 case CLR_BLUE:
1660 color = CLR_BLACK;
1661 break;
1662 case CLR_GREEN:
1663 case CLR_MAGENTA:
1664 case CLR_CYAN:
1665 case CLR_BRIGHT_BLUE:
1666 color = CLR_GRAY;
1667 break;
1668 case CLR_YELLOW:
1669 case CLR_ORANGE:
1670 case CLR_BRIGHT_GREEN:
1671 case CLR_BRIGHT_MAGENTA:
1672 case CLR_BRIGHT_CYAN:
1673 color = CLR_WHITE;
1674 break;
1677 if (SpellColorMetal && (offset >= S_vwall && offset <= S_hcdoor) && !(offset > S_rockwall && offset <= S_tunnelwall)) color = rn2(2) ? CLR_CYAN : CLR_BRIGHT_CYAN;
1678 if (SpellColorMetal && (offset == S_dungwall)) color = rn2(2) ? CLR_CYAN : CLR_BRIGHT_CYAN;
1679 if (WallsAreHyperBlue && (offset >= S_vwall && offset <= S_hcdoor) && !(offset > S_rockwall && offset <= S_tunnelwall)) color = CLR_BRIGHT_BLUE;
1680 if (WallsAreHyperBlue && (offset == S_dungwall)) color = CLR_BRIGHT_BLUE;
1681 if (SpellColorOrange && offset == S_grayglyph) color = CLR_ORANGE;
1682 if (SpellColorBrightCyan && offset == S_grayglyph) color = CLR_BRIGHT_CYAN;
1683 if (Race_if(PM_RELEASIER) && !rn2(3)) color = !rn2(3) ? CLR_CYAN : !rn2(2) ? CLR_WHITE : CLR_RED;
1684 if ((KnowledgeBug || u.uprops[KNOWLEDGE_BUG].extrinsic || have_trapknowledgestone()) && (offset == S_grayglyph)) color = rnd(15);
1685 if (Hallucination) color = rnd(15);
1686 if ((uarmc && itemhasappearance(uarmc, APP_FLEECELING_CLOAK)) && !rn2(5) ) color = rnd(15);
1687 if (uarmg && uarmg->oartifact == ART_JONADAB_S_KEYCODE && !rn2(5)) color = rnd(15);
1688 if (everythingfleecy()) color = rnd(15);
1689 if ((OneRainbowEffect || u.uprops[ONE_RAINBOW_EFFECT].extrinsic || have_onerainbowstone() || (uarm && uarm->oartifact == ART_YOU_REALLY_HAVE_A_TOTAL_DA) || autismweaponcheck(ART_TASTE_THE_RAINBOW)) && (color == u.onerainbownumber) ) color = rnd(15);
1690 if (uamul && uamul->oartifact == ART_SUPER_GRAPHICS_CARD_BUG) {
1691 if (color > 0 && color < 16) {
1692 color++;
1693 if (color > 15) color = 1;
1696 } else if ((offset = (glyph - GLYPH_OBJ_OFF)) >= 0) { /* object */
1697 if (On_stairs(x,y) && !ThereIsNoLite && levl[x][y].seenv) special |= MG_STAIRS;
1698 if (flags.graffitihilite && ep && ep->engr_txt[0] && !Blind && levl[x][y].seenv && !ThereIsNoLite) special |= MG_ENGRAVING;
1699 if (offset == BOULDER && iflags.bouldersym) ch = iflags.bouldersym;
1700 else ch = oc_syms[(int)objects[offset].oc_class];
1701 #ifdef ROGUE_COLOR
1702 if (HAS_ROGUE_IBM_GRAPHICS && iflags.use_color) {
1703 switch(objects[offset].oc_class) {
1704 case COIN_CLASS: color = CLR_YELLOW; break;
1705 case FOOD_CLASS: color = CLR_RED; break;
1706 default: color = CLR_BRIGHT_BLUE; break;
1708 } else
1709 #endif
1710 color = obj_color(offset);
1712 struct obj *ptr;
1713 int hilitecnt = 0;
1715 if (level.objlist) {
1717 for (ptr = level.objects[x][y]; ptr; ptr = ptr->nexthere) {
1718 if (ptr && ptr->otyp == STATUE) continue;
1719 if (ptr && ptr->oinvis) continue;
1720 if (ptr && ptr->oinvisreal) continue;
1721 hilitecnt += 1;
1722 if (hilitecnt >= 2) break;
1726 if (offset != BOULDER && !ThereIsNoLite && hilitecnt >= 2)
1727 special |= MG_OBJPILE;
1729 } else if ((offset = (glyph - GLYPH_RIDDEN_OFF)) >= 0) { /* mon ridden */
1730 ch = monsyms[(int)mons[offset].mlet];
1731 if (CapsBugEffect || u.uprops[CAPS_BUG_EFFECT].extrinsic || have_capsstone()) ch = toupper(ch);
1732 #ifdef ROGUE_COLOR
1733 if (HAS_ROGUE_IBM_GRAPHICS)
1734 /* This currently implies that the hero is here -- monsters */
1735 /* don't ride (yet...). Should we set it to yellow like in */
1736 /* the monster case below? There is no equivalent in rogue. */
1737 color = NO_COLOR; /* no need to check iflags.use_color */
1738 else
1739 #endif
1740 color = mon_color(offset);
1741 special |= MG_RIDDEN;
1742 } else if ((offset = (glyph - GLYPH_BODY_OFF)) >= 0) { /* a corpse */
1743 if (On_stairs(x,y) && !ThereIsNoLite && levl[x][y].seenv) special |= MG_STAIRS;
1744 if (flags.graffitihilite && ep && ep->engr_txt[0] && !Blind && levl[x][y].seenv && !ThereIsNoLite) special |= MG_ENGRAVING;
1745 ch = oc_syms[(int)objects[CORPSE].oc_class];
1746 #ifdef ROGUE_COLOR
1747 if (HAS_ROGUE_IBM_GRAPHICS && iflags.use_color)
1748 color = CLR_RED;
1749 else
1750 #endif
1751 color = mon_color(offset);
1752 special |= MG_CORPSE;
1754 struct obj *ptr;
1755 int hilitecnt = 0;
1757 if (level.objlist) {
1758 for (ptr = level.objects[x][y]; ptr; ptr = ptr->nexthere) {
1759 if (ptr->otyp == STATUE) continue;
1760 if (ptr->oinvis) continue;
1761 if (ptr->oinvisreal) continue;
1762 hilitecnt += 1;
1763 if (hilitecnt >= 2) break;
1767 if (offset != BOULDER && !ThereIsNoLite && hilitecnt >= 2)
1768 special |= MG_OBJPILE;
1770 } else if ((offset = (glyph - GLYPH_DETECT_OFF)) >= 0) { /* mon detect */
1771 if (On_stairs(x,y) && !ThereIsNoLite && levl[x][y].seenv) special |= MG_STAIRS;
1772 /*if (flags.graffitihilite && ep && ep->engr_txt[0] && !Blind && levl[x][y].seenv && !ThereIsNoLite) special |= MG_ENGRAVING;*/
1773 ch = monsyms[(int)mons[offset].mlet];
1774 if (CapsBugEffect || u.uprops[CAPS_BUG_EFFECT].extrinsic || have_capsstone()) ch = toupper(ch);
1775 #ifdef ROGUE_COLOR
1776 if (HAS_ROGUE_IBM_GRAPHICS)
1777 color = NO_COLOR; /* no need to check iflags.use_color */
1778 else
1779 #endif
1780 color = mon_color(offset);
1781 /* Disabled for now; anyone want to get reverse video to work? */
1782 /* is_reverse = TRUE; */
1783 special |= MG_DETECT;
1784 } else if ((offset = (glyph - GLYPH_INVIS_OFF)) >= 0) { /* invisible */
1785 if (On_stairs(x,y) && !ThereIsNoLite && levl[x][y].seenv) special |= MG_STAIRS;
1786 if (flags.graffitihilite && ep && ep->engr_txt[0] && !Blind && levl[x][y].seenv && !ThereIsNoLite) special |= MG_ENGRAVING;
1787 ch = DEF_INVISIBLE;
1788 #ifdef ROGUE_COLOR
1789 if (HAS_ROGUE_IBM_GRAPHICS)
1790 color = NO_COLOR; /* no need to check iflags.use_color */
1791 else
1792 #endif
1793 color = invis_color(offset);
1794 special |= MG_INVIS;
1795 } else if ((offset = (glyph - GLYPH_PET_OFF)) >= 0) { /* a pet */
1796 if (On_stairs(x,y) && !ThereIsNoLite && levl[x][y].seenv) special |= MG_STAIRS;
1797 /*if (flags.graffitihilite && ep && ep->engr_txt[0] && !Blind && levl[x][y].seenv && !ThereIsNoLite) special |= MG_ENGRAVING;*/
1798 ch = monsyms[(int)mons[offset].mlet];
1799 if (CapsBugEffect || u.uprops[CAPS_BUG_EFFECT].extrinsic || have_capsstone()) ch = toupper(ch);
1800 #ifdef ROGUE_COLOR
1801 if (HAS_ROGUE_IBM_GRAPHICS)
1802 color = NO_COLOR; /* no need to check iflags.use_color */
1803 else
1804 #endif
1805 color = pet_color(offset);
1806 if (!ThereIsNoLite) special |= MG_PET;
1807 } else { /* a monster */
1808 if (On_stairs(x,y) && !ThereIsNoLite && levl[x][y].seenv) special |= MG_STAIRS;
1809 /*if (flags.graffitihilite && ep && ep->engr_txt[0] && !Blind && levl[x][y].seenv && !ThereIsNoLite) special |= MG_ENGRAVING;*/
1811 struct monst *mtmp;
1813 ch = monsyms[(int)mons[glyph].mlet];
1814 if (CapsBugEffect || u.uprops[CAPS_BUG_EFFECT].extrinsic || have_capsstone()) ch = toupper(ch);
1816 mtmp = m_at(x, y);
1817 if (mtmp && mtmp->isegotype && !mtmp->noegodisplay && !ThereIsNoLite && !PlayerUninformation) special |= MG_EGOTYPE;
1819 if (mtmp && !ThereIsNoLite && mtmp->mpeaceful && Peacevision && !Hallucination) special |= MG_PEACEFUL;
1821 if (mtmp && mtmp->mnum == PM_ULTRAYOUSEE) {
1822 if (!MessagesSuppressed && !Clairvoyant && !RightMouseButtonDoesNotGo) {
1823 MessageSuppression += 1; /* ugly hack */
1824 badeffect(); /* something bad happens and we don't tell you what it is :-P --Amy */
1828 #ifdef ROGUE_COLOR
1829 if (HAS_ROGUE_IBM_GRAPHICS && iflags.use_color) {
1830 if (x == u.ux && y == u.uy)
1831 /* actually player should be yellow-on-gray if in a corridor */
1832 color = CLR_YELLOW;
1833 else
1834 color = NO_COLOR;
1835 } else
1836 #endif
1838 color = mon_color(glyph);
1839 if (mtmp && mtmp->shinymonst) color = rnd(15);
1840 /* special case the hero for `showrace' option */
1841 #ifdef TEXTCOLOR
1842 if (iflags.use_color && x == u.ux && y == u.uy &&
1843 iflags.showrace && !Upolyd)
1844 color = HI_DOMESTIC;
1845 #endif
1849 #ifdef TEXTCOLOR
1850 /* Turn off color if no color defined, or rogue level w/o PC graphics. */
1851 # ifdef REINCARNATION
1852 # ifdef ASCIIGRAPH
1853 if (!has_color(color) || (Is_rogue_level(&u.uz) && !HAS_ROGUE_IBM_GRAPHICS))
1854 # else
1855 if (!has_color(color) || Is_rogue_level(&u.uz))
1856 # endif
1857 # else
1858 if (!has_color(color))
1859 # endif
1860 color = NO_COLOR;
1861 #endif
1863 *ochar = (int)ch;
1864 *ospecial = special;
1865 #ifdef TEXTCOLOR
1866 *ocolor = color;
1867 #endif
1868 return;
1871 /* color shift trap: every color has a matching color that it turns into, 50% of the time --Amy */
1873 colorshifting(color)
1874 int color;
1876 if (color == NO_COLOR) return NO_COLOR;
1878 int miscolor = color;
1879 switch (color) {
1880 case CLR_RED:
1881 miscolor = CLR_ORANGE; break;
1882 case CLR_BLUE:
1883 miscolor = CLR_BRIGHT_BLUE; break;
1884 case CLR_WHITE:
1885 miscolor = CLR_BLACK; break;
1886 case CLR_GREEN:
1887 miscolor = CLR_BRIGHT_GREEN; break;
1888 case CLR_BROWN:
1889 miscolor = CLR_YELLOW; break;
1890 case CLR_YELLOW:
1891 miscolor = CLR_BROWN; break;
1892 case CLR_BLACK:
1893 miscolor = CLR_WHITE; break;
1894 case CLR_GRAY:
1895 miscolor = CLR_GRAY; break; /* none available */
1896 case CLR_CYAN:
1897 miscolor = CLR_BRIGHT_CYAN; break;
1898 case CLR_MAGENTA:
1899 miscolor = CLR_BRIGHT_MAGENTA; break;
1900 case CLR_ORANGE:
1901 miscolor = CLR_RED; break;
1902 case CLR_BRIGHT_BLUE:
1903 miscolor = CLR_BLUE; break;
1904 case CLR_BRIGHT_CYAN:
1905 miscolor = CLR_CYAN; break;
1906 case CLR_BRIGHT_GREEN:
1907 miscolor = CLR_GREEN; break;
1908 case CLR_BRIGHT_MAGENTA:
1909 miscolor = CLR_MAGENTA; break;
1912 if (rn2(2)) color = miscolor;
1913 return color;
1918 miscoloring(color)
1919 int color;
1921 if (color == NO_COLOR) return NO_COLOR;
1923 int miscolor = 0;
1925 switch (color) {
1926 case CLR_RED:
1927 miscolor = 1; break;
1928 case CLR_BLUE:
1929 miscolor = 2; break;
1930 case CLR_WHITE:
1931 miscolor = 3; break;
1932 case CLR_GREEN:
1933 miscolor = 4; break;
1934 case CLR_BROWN:
1935 miscolor = 5; break;
1936 case CLR_YELLOW:
1937 miscolor = 6; break;
1938 case CLR_BLACK:
1939 miscolor = 7; break;
1940 case CLR_GRAY:
1941 miscolor = 8; break;
1942 case CLR_CYAN:
1943 miscolor = 9; break;
1944 case CLR_MAGENTA:
1945 miscolor = 10; break;
1946 case CLR_ORANGE:
1947 miscolor = 11; break;
1948 case CLR_BRIGHT_BLUE:
1949 miscolor = 12; break;
1950 case CLR_BRIGHT_CYAN:
1951 miscolor = 13; break;
1952 case CLR_BRIGHT_GREEN:
1953 miscolor = 14; break;
1954 case CLR_BRIGHT_MAGENTA:
1955 miscolor = 15; break;
1957 miscolor += u.miscolornumber;
1958 if (miscolor > 15) miscolor -= 15;
1960 switch (miscolor) {
1961 case 1:
1962 color = CLR_RED; break;
1963 case 2:
1964 color = CLR_BLUE; break;
1965 case 3:
1966 color = CLR_WHITE; break;
1967 case 4:
1968 color = CLR_GREEN; break;
1969 case 5:
1970 color = CLR_BROWN; break;
1971 case 6:
1972 color = CLR_YELLOW; break;
1973 case 7:
1974 color = CLR_BLACK; break;
1975 case 8:
1976 color = CLR_GRAY; break;
1977 case 9:
1978 color = CLR_CYAN; break;
1979 case 10:
1980 color = CLR_MAGENTA; break;
1981 case 11:
1982 color = CLR_ORANGE; break;
1983 case 12:
1984 color = CLR_BRIGHT_BLUE; break;
1985 case 13:
1986 color = CLR_BRIGHT_CYAN; break;
1987 case 14:
1988 color = CLR_BRIGHT_GREEN; break;
1989 case 15:
1990 color = CLR_BRIGHT_MAGENTA; break;
1993 return color;
1996 /*mapglyph.c*/