10 typedef std::map
<show_type
, feature_def
> feat_map
;
11 static feat_map Features
;
13 const feature_def
&get_feature_def(show_type object
)
15 // If this is a monster that is hidden explicitly, show items if
16 // any instead, or the base feature if there are no items.
17 if (object
.cls
== SH_MONSTER
)
18 object
.cls
= (object
.item
!= SHOW_ITEM_NONE
)? SH_ITEM
: SH_FEATURE
;
19 return (Features
[object
]);
22 const feature_def
&get_feature_def(dungeon_feature_type feat
)
24 ASSERT(feat
< NUM_FEATURES
);
26 object
.cls
= SH_FEATURE
;
28 return (Features
[object
]);
31 void apply_feature_overrides()
33 for (int i
= 0, size
= Options
.feature_overrides
.size(); i
< size
; ++i
)
35 const feature_override
&fov
= Options
.feature_overrides
[i
];
36 const feature_def
&ofeat
= fov
.override
;
37 feature_def
&feat
= Features
[fov
.object
];
40 feat
.symbol
= ofeat
.symbol
;
41 if (ofeat
.magic_symbol
)
42 feat
.magic_symbol
= ofeat
.magic_symbol
;
44 feat
.colour
= ofeat
.colour
;
46 feat
.map_colour
= ofeat
.map_colour
;
47 if (ofeat
.seen_colour
)
48 feat
.seen_colour
= ofeat
.seen_colour
;
49 if (ofeat
.seen_em_colour
)
50 feat
.seen_em_colour
= ofeat
.seen_em_colour
;
52 feat
.em_colour
= ofeat
.em_colour
;
56 static void _init_feat(feature_def
&f
, dungeon_feature_type feat
)
66 case DNGN_PERMAROCK_WALL
:
69 f
.magic_symbol
= Options
.char_table
[ DCHAR_WALL_MAGIC
];
76 f
.magic_symbol
= Options
.char_table
[ DCHAR_WALL_MAGIC
];
80 case DNGN_CLEAR_ROCK_WALL
:
81 case DNGN_CLEAR_STONE_WALL
:
82 case DNGN_CLEAR_PERMAROCK_WALL
:
84 f
.magic_symbol
= Options
.char_table
[ DCHAR_WALL_MAGIC
];
90 f
.dchar
= DCHAR_GRATE
;
91 f
.magic_symbol
= Options
.char_table
[ DCHAR_WALL_MAGIC
];
98 f
.magic_symbol
= Options
.char_table
[ DCHAR_WALL_MAGIC
];
103 case DNGN_SWAMP_TREE
:
104 f
.dchar
= DCHAR_TREE
;
105 f
.magic_symbol
= Options
.char_table
[ DCHAR_WALL_MAGIC
];
106 f
.colour
= ETC_SWAMP_TREE
;
111 f
.dchar
= DCHAR_WALL
;
113 f
.minimap
= MF_WATER
;
117 f
.dchar
= DCHAR_DOOR_OPEN
;
118 f
.colour
= LIGHTGREY
;
122 case DNGN_CLOSED_DOOR
:
123 case DNGN_DETECTED_SECRET_DOOR
:
124 f
.dchar
= DCHAR_DOOR_CLOSED
;
125 f
.colour
= LIGHTGREY
;
129 case DNGN_METAL_WALL
:
130 f
.dchar
= DCHAR_WALL
;
132 f
.magic_symbol
= Options
.char_table
[ DCHAR_WALL_MAGIC
];
136 case DNGN_SECRET_DOOR
:
137 // Note: get_secret_door_appearance means this probably isn't used.
138 f
.dchar
= DCHAR_WALL
;
140 f
.magic_symbol
= Options
.char_table
[ DCHAR_WALL_MAGIC
];
144 case DNGN_GREEN_CRYSTAL_WALL
:
145 f
.dchar
= DCHAR_WALL
;
147 f
.magic_symbol
= Options
.char_table
[ DCHAR_WALL_MAGIC
];
151 case DNGN_ORCISH_IDOL
:
152 f
.dchar
= DCHAR_STATUE
;
153 f
.colour
= BROWN
; // same as clay golem, I hope that's okay
158 f
.dchar
= DCHAR_WALL
;
160 f
.magic_symbol
= Options
.char_table
[ DCHAR_WALL_MAGIC
];
164 case DNGN_GRANITE_STATUE
:
165 f
.dchar
= DCHAR_STATUE
;
171 f
.dchar
= DCHAR_WAVY
;
176 case DNGN_DEEP_WATER
:
177 f
.dchar
= DCHAR_WAVY
;
179 f
.minimap
= MF_WATER
;
182 case DNGN_SHALLOW_WATER
:
183 f
.dchar
= DCHAR_WAVY
;
185 f
.minimap
= MF_WATER
;
189 f
.dchar
= DCHAR_FLOOR
;
190 f
.colour
= ETC_FLOOR
;
191 f
.magic_symbol
= Options
.char_table
[ DCHAR_FLOOR_MAGIC
];
192 f
.minimap
= MF_FLOOR
;
196 f
.dchar
= DCHAR_ARCH
;
198 f
.map_colour
= LIGHTGREY
;
199 f
.seen_colour
= LIGHTRED
;
200 f
.minimap
= MF_STAIR_UP
;
203 case DNGN_ENTER_HELL
:
204 f
.dchar
= DCHAR_ARCH
;
206 f
.flags
|= FFT_NOTABLE
;
207 f
.map_colour
= LIGHTGREY
;
209 f
.minimap
= MF_STAIR_BRANCH
;
212 case DNGN_TRAP_MECHANICAL
:
213 f
.colour
= LIGHTCYAN
;
214 f
.dchar
= DCHAR_TRAP
;
215 f
.map_colour
= LIGHTCYAN
;
219 case DNGN_TRAP_MAGICAL
:
221 f
.dchar
= DCHAR_TRAP
;
222 f
.map_colour
= MAGENTA
;
226 case DNGN_TRAP_NATURAL
:
228 f
.dchar
= DCHAR_TRAP
;
229 f
.map_colour
= BROWN
;
233 case DNGN_UNDISCOVERED_TRAP
:
234 f
.dchar
= DCHAR_FLOOR
;
235 f
.colour
= ETC_FLOOR
;
236 f
.magic_symbol
= Options
.char_table
[ DCHAR_FLOOR_MAGIC
];
237 f
.minimap
= MF_FLOOR
;
240 case DNGN_ENTER_SHOP
:
241 f
.dchar
= DCHAR_ARCH
;
243 f
.flags
|= FFT_NOTABLE
;
244 f
.map_colour
= LIGHTGREY
;
245 f
.seen_colour
= YELLOW
;
246 f
.minimap
= MF_FEATURE
;
249 case DNGN_ABANDONED_SHOP
:
250 f
.colour
= LIGHTGREY
;
251 f
.dchar
= DCHAR_ARCH
;
252 f
.map_colour
= LIGHTGREY
;
253 f
.minimap
= MF_FLOOR
;
256 case DNGN_ENTER_LABYRINTH
:
257 f
.dchar
= DCHAR_ARCH
;
259 f
.flags
|= FFT_NOTABLE
;
260 f
.map_colour
= LIGHTGREY
;
261 f
.seen_colour
= CYAN
;
262 f
.minimap
= MF_STAIR_BRANCH
;
265 case DNGN_ENTER_PORTAL_VAULT
:
266 f
.flags
|= FFT_NOTABLE
;
269 case DNGN_EXIT_PORTAL_VAULT
:
270 f
.dchar
= DCHAR_ARCH
;
271 f
.colour
= ETC_SHIMMER_BLUE
;
272 f
.map_colour
= LIGHTGREY
;
273 f
.seen_colour
= ETC_SHIMMER_BLUE
;
274 f
.minimap
= MF_STAIR_BRANCH
;
277 case DNGN_TEMP_PORTAL
:
278 f
.dchar
= DCHAR_ARCH
;
279 f
.colour
= ETC_SHIMMER_BLUE
;
280 f
.map_colour
= LIGHTGREY
;
281 f
.colour
= ETC_SHIMMER_BLUE
;
282 f
.minimap
= MF_STAIR_UP
;
286 case DNGN_ESCAPE_HATCH_DOWN
:
287 f
.dchar
= DCHAR_STAIRS_DOWN
;
289 f
.map_colour
= BROWN
;
290 f
.minimap
= MF_STAIR_DOWN
;
293 case DNGN_STONE_STAIRS_DOWN_I
:
294 case DNGN_STONE_STAIRS_DOWN_II
:
295 case DNGN_STONE_STAIRS_DOWN_III
:
296 f
.dchar
= DCHAR_STAIRS_DOWN
;
300 f
.seen_em_colour
= WHITE
;
301 f
.minimap
= MF_STAIR_DOWN
;
304 case DNGN_ESCAPE_HATCH_UP
:
305 f
.dchar
= DCHAR_STAIRS_UP
;
307 f
.map_colour
= BROWN
;
308 f
.minimap
= MF_STAIR_UP
;
311 case DNGN_STONE_STAIRS_UP_I
:
312 case DNGN_STONE_STAIRS_UP_II
:
313 case DNGN_STONE_STAIRS_UP_III
:
314 f
.dchar
= DCHAR_STAIRS_UP
;
316 f
.map_colour
= GREEN
;
318 f
.seen_em_colour
= WHITE
;
319 f
.minimap
= MF_STAIR_UP
;
324 f
.dchar
= DCHAR_ARCH
;
325 f
.flags
|= FFT_NOTABLE
;
326 f
.map_colour
= LIGHTGREY
;
327 f
.seen_colour
= CYAN
;
328 f
.minimap
= MF_STAIR_BRANCH
;
331 case DNGN_ENTER_GEHENNA
:
333 f
.dchar
= DCHAR_ARCH
;
334 f
.flags
|= FFT_NOTABLE
;
335 f
.map_colour
= LIGHTGREY
;
337 f
.minimap
= MF_STAIR_BRANCH
;
340 case DNGN_ENTER_COCYTUS
:
341 f
.colour
= LIGHTCYAN
;
342 f
.dchar
= DCHAR_ARCH
;
343 f
.flags
|= FFT_NOTABLE
;
344 f
.map_colour
= LIGHTGREY
;
345 f
.seen_colour
= LIGHTCYAN
;
346 f
.minimap
= MF_STAIR_BRANCH
;
349 case DNGN_ENTER_TARTARUS
:
351 f
.dchar
= DCHAR_ARCH
;
352 f
.flags
|= FFT_NOTABLE
;
353 f
.map_colour
= LIGHTGREY
;
354 f
.seen_colour
= DARKGREY
;
355 f
.minimap
= MF_STAIR_BRANCH
;
358 case DNGN_ENTER_ABYSS
:
359 f
.colour
= ETC_RANDOM
;
360 f
.dchar
= DCHAR_ARCH
;
361 f
.flags
|= FFT_NOTABLE
;
362 f
.map_colour
= LIGHTGREY
;
363 f
.seen_colour
= ETC_RANDOM
;
364 f
.minimap
= MF_STAIR_BRANCH
;
367 case DNGN_EXIT_ABYSS
:
368 f
.colour
= ETC_RANDOM
;
369 f
.dchar
= DCHAR_ARCH
;
370 f
.map_colour
= ETC_RANDOM
;
371 f
.minimap
= MF_STAIR_BRANCH
;
374 case DNGN_STONE_ARCH
:
375 f
.colour
= LIGHTGREY
;
376 f
.dchar
= DCHAR_ARCH
;
377 f
.map_colour
= LIGHTGREY
;
378 f
.minimap
= MF_FLOOR
;
381 case DNGN_ENTER_PANDEMONIUM
:
382 f
.colour
= LIGHTBLUE
;
383 f
.dchar
= DCHAR_ARCH
;
384 f
.flags
|= FFT_NOTABLE
;
385 f
.map_colour
= LIGHTGREY
;
386 f
.seen_colour
= LIGHTBLUE
;
387 f
.minimap
= MF_STAIR_BRANCH
;
390 case DNGN_EXIT_PANDEMONIUM
:
391 f
.colour
= LIGHTBLUE
;
392 f
.dchar
= DCHAR_ARCH
;
393 f
.map_colour
= LIGHTGREY
;
394 f
.seen_colour
= LIGHTBLUE
;
395 f
.minimap
= MF_STAIR_BRANCH
;
398 case DNGN_TRANSIT_PANDEMONIUM
:
399 f
.colour
= LIGHTGREEN
;
400 f
.dchar
= DCHAR_ARCH
;
401 f
.map_colour
= LIGHTGREY
;
402 f
.seen_colour
= LIGHTGREEN
;
403 f
.minimap
= MF_STAIR_BRANCH
;
406 case DNGN_ENTER_DWARVEN_HALL
:
407 case DNGN_ENTER_ORCISH_MINES
:
408 case DNGN_ENTER_HIVE
:
409 case DNGN_ENTER_LAIR
:
410 case DNGN_ENTER_SLIME_PITS
:
411 case DNGN_ENTER_VAULTS
:
412 case DNGN_ENTER_CRYPT
:
413 case DNGN_ENTER_HALL_OF_BLADES
:
414 case DNGN_ENTER_TEMPLE
:
415 case DNGN_ENTER_SNAKE_PIT
:
416 case DNGN_ENTER_ELVEN_HALLS
:
417 case DNGN_ENTER_TOMB
:
418 case DNGN_ENTER_SWAMP
:
419 case DNGN_ENTER_SHOALS
:
421 f
.dchar
= DCHAR_STAIRS_DOWN
;
422 f
.flags
|= FFT_NOTABLE
;
424 f
.seen_colour
= YELLOW
;
425 f
.minimap
= MF_STAIR_BRANCH
;
430 f
.dchar
= DCHAR_ARCH
;
431 f
.flags
|= FFT_NOTABLE
;
432 f
.map_colour
= LIGHTGREY
;
433 f
.seen_colour
= MAGENTA
;
434 f
.minimap
= MF_STAIR_BRANCH
;
437 case DNGN_RETURN_FROM_DWARVEN_HALL
:
438 case DNGN_RETURN_FROM_ORCISH_MINES
:
439 case DNGN_RETURN_FROM_HIVE
:
440 case DNGN_RETURN_FROM_LAIR
:
441 case DNGN_RETURN_FROM_SLIME_PITS
:
442 case DNGN_RETURN_FROM_VAULTS
:
443 case DNGN_RETURN_FROM_CRYPT
:
444 case DNGN_RETURN_FROM_HALL_OF_BLADES
:
445 case DNGN_RETURN_FROM_TEMPLE
:
446 case DNGN_RETURN_FROM_SNAKE_PIT
:
447 case DNGN_RETURN_FROM_ELVEN_HALLS
:
448 case DNGN_RETURN_FROM_TOMB
:
449 case DNGN_RETURN_FROM_SWAMP
:
450 case DNGN_RETURN_FROM_SHOALS
:
452 f
.dchar
= DCHAR_STAIRS_UP
;
453 f
.map_colour
= GREEN
;
454 f
.seen_colour
= YELLOW
;
455 f
.minimap
= MF_STAIR_BRANCH
;
458 case DNGN_RETURN_FROM_ZOT
:
460 f
.dchar
= DCHAR_ARCH
;
461 f
.map_colour
= LIGHTGREY
;
462 f
.seen_colour
= MAGENTA
;
463 f
.minimap
= MF_STAIR_BRANCH
;
467 f
.colour
= LIGHTGREY
;
468 f
.dchar
= DCHAR_ALTAR
;
469 f
.flags
|= FFT_NOTABLE
;
470 f
.map_colour
= DARKGREY
;
471 f
.seen_colour
= LIGHTGREY
;
472 f
.minimap
= MF_FEATURE
;
475 case DNGN_ALTAR_SHINING_ONE
:
477 f
.dchar
= DCHAR_ALTAR
;
478 f
.flags
|= FFT_NOTABLE
;
479 f
.map_colour
= DARKGREY
;
480 f
.seen_colour
= YELLOW
;
481 f
.minimap
= MF_FEATURE
;
484 case DNGN_ALTAR_KIKUBAAQUDGHA
:
486 f
.dchar
= DCHAR_ALTAR
;
487 f
.flags
|= FFT_NOTABLE
;
488 f
.map_colour
= DARKGREY
;
489 f
.seen_colour
= DARKGREY
;
490 f
.minimap
= MF_FEATURE
;
493 case DNGN_ALTAR_YREDELEMNUL
:
494 f
.colour
= ETC_UNHOLY
;
495 f
.dchar
= DCHAR_ALTAR
;
496 f
.flags
|= FFT_NOTABLE
;
497 f
.map_colour
= DARKGREY
;
498 f
.seen_colour
= ETC_UNHOLY
;
499 f
.minimap
= MF_FEATURE
;
503 f
.colour
= ETC_RANDOM
;
504 f
.dchar
= DCHAR_ALTAR
;
505 f
.flags
|= FFT_NOTABLE
;
506 f
.map_colour
= DARKGREY
;
507 f
.seen_colour
= ETC_RANDOM
;
508 f
.minimap
= MF_FEATURE
;
511 case DNGN_ALTAR_VEHUMET
:
512 f
.colour
= ETC_VEHUMET
;
513 f
.dchar
= DCHAR_ALTAR
;
514 f
.flags
|= FFT_NOTABLE
;
515 f
.map_colour
= DARKGREY
;
516 f
.seen_colour
= ETC_VEHUMET
;
517 f
.minimap
= MF_FEATURE
;
520 case DNGN_ALTAR_OKAWARU
:
522 f
.dchar
= DCHAR_ALTAR
;
523 f
.flags
|= FFT_NOTABLE
;
524 f
.map_colour
= DARKGREY
;
525 f
.seen_colour
= CYAN
;
526 f
.minimap
= MF_FEATURE
;
529 case DNGN_ALTAR_MAKHLEB
:
531 f
.dchar
= DCHAR_ALTAR
;
532 f
.flags
|= FFT_NOTABLE
;
533 f
.map_colour
= DARKGREY
;
534 f
.seen_colour
= ETC_FIRE
;
535 f
.minimap
= MF_FEATURE
;
538 case DNGN_ALTAR_SIF_MUNA
:
540 f
.dchar
= DCHAR_ALTAR
;
541 f
.flags
|= FFT_NOTABLE
;
542 f
.map_colour
= DARKGREY
;
543 f
.seen_colour
= BLUE
;
544 f
.minimap
= MF_FEATURE
;
547 case DNGN_ALTAR_TROG
:
549 f
.dchar
= DCHAR_ALTAR
;
550 f
.flags
|= FFT_NOTABLE
;
551 f
.map_colour
= DARKGREY
;
553 f
.minimap
= MF_FEATURE
;
556 case DNGN_ALTAR_NEMELEX_XOBEH
:
557 f
.colour
= LIGHTMAGENTA
;
558 f
.dchar
= DCHAR_ALTAR
;
559 f
.flags
|= FFT_NOTABLE
;
560 f
.map_colour
= DARKGREY
;
561 f
.seen_colour
= LIGHTMAGENTA
;
562 f
.minimap
= MF_FEATURE
;
565 case DNGN_ALTAR_ELYVILON
:
567 f
.dchar
= DCHAR_ALTAR
;
568 f
.flags
|= FFT_NOTABLE
;
569 f
.map_colour
= DARKGREY
;
570 f
.seen_colour
= WHITE
;
571 f
.minimap
= MF_FEATURE
;
574 case DNGN_ALTAR_LUGONU
:
576 f
.dchar
= DCHAR_ALTAR
;
577 f
.flags
|= FFT_NOTABLE
;
578 f
.map_colour
= DARKGREY
;
579 f
.seen_colour
= MAGENTA
;
580 f
.minimap
= MF_FEATURE
;
583 case DNGN_ALTAR_BEOGH
:
584 f
.colour
= ETC_BEOGH
;
585 f
.dchar
= DCHAR_ALTAR
;
586 f
.flags
|= FFT_NOTABLE
;
587 f
.map_colour
= DARKGREY
;
588 f
.seen_colour
= ETC_BEOGH
;
589 f
.minimap
= MF_FEATURE
;
592 case DNGN_ALTAR_JIYVA
:
593 f
.colour
= ETC_SLIME
;
594 f
.dchar
= DCHAR_ALTAR
;
595 f
.flags
|= FFT_NOTABLE
;
596 f
.map_colour
= DARKGREY
;
597 f
.seen_colour
= ETC_SLIME
;
598 f
.minimap
= MF_FEATURE
;
601 case DNGN_ALTAR_FEDHAS
:
603 f
.dchar
= DCHAR_ALTAR
;
604 f
.flags
|= FFT_NOTABLE
;
605 f
.map_colour
= DARKGREY
;
606 f
.seen_colour
= GREEN
;
607 f
.minimap
= MF_FEATURE
;
610 case DNGN_ALTAR_CHEIBRIADOS
:
611 f
.colour
= LIGHTCYAN
;
612 f
.dchar
= DCHAR_ALTAR
;
613 f
.flags
|= FFT_NOTABLE
;
614 f
.map_colour
= DARKGREY
;
615 f
.seen_colour
= LIGHTCYAN
;
616 f
.minimap
= MF_FEATURE
;
619 case DNGN_ALTAR_ASHENZARI
:
621 f
.dchar
= DCHAR_ALTAR
;
622 f
.flags
|= FFT_NOTABLE
;
623 f
.map_colour
= DARKGREY
;
624 f
.seen_colour
= LIGHTRED
;
625 f
.minimap
= MF_FEATURE
;
628 case DNGN_FOUNTAIN_BLUE
:
630 f
.dchar
= DCHAR_FOUNTAIN
;
631 f
.minimap
= MF_FEATURE
;
634 case DNGN_FOUNTAIN_SPARKLING
:
635 f
.colour
= LIGHTBLUE
;
636 f
.dchar
= DCHAR_FOUNTAIN
;
637 f
.minimap
= MF_FEATURE
;
640 case DNGN_FOUNTAIN_BLOOD
:
642 f
.dchar
= DCHAR_FOUNTAIN
;
643 f
.minimap
= MF_FEATURE
;
646 case DNGN_DRY_FOUNTAIN_BLUE
:
647 case DNGN_DRY_FOUNTAIN_SPARKLING
:
648 case DNGN_DRY_FOUNTAIN_BLOOD
:
649 case DNGN_PERMADRY_FOUNTAIN
:
650 f
.colour
= LIGHTGREY
;
651 f
.dchar
= DCHAR_FOUNTAIN
;
652 f
.minimap
= MF_FEATURE
;
656 if (feat
== DNGN_ENTER_ORCISH_MINES
|| feat
== DNGN_ENTER_SLIME_PITS
657 || feat
== DNGN_ENTER_LABYRINTH
)
659 f
.flags
|= FFT_EXAMINE_HINT
;
663 static void _init_item(feature_def
&f
, show_item_type item
)
668 case SHOW_ITEM_DETECTED
:
669 f
.dchar
= DCHAR_ITEM_DETECTED
;
673 f
.dchar
= DCHAR_ITEM_ORB
;
676 case SHOW_ITEM_WEAPON
:
677 f
.dchar
= DCHAR_ITEM_WEAPON
;
680 case SHOW_ITEM_ARMOUR
:
681 f
.dchar
= DCHAR_ITEM_ARMOUR
;
685 f
.dchar
= DCHAR_ITEM_WAND
;
689 f
.dchar
= DCHAR_ITEM_FOOD
;
692 case SHOW_ITEM_SCROLL
:
693 f
.dchar
= DCHAR_ITEM_SCROLL
;
697 f
.dchar
= DCHAR_ITEM_RING
;
700 case SHOW_ITEM_POTION
:
701 f
.dchar
= DCHAR_ITEM_POTION
;
704 case SHOW_ITEM_MISSILE
:
705 f
.dchar
= DCHAR_ITEM_MISSILE
;
709 f
.dchar
= DCHAR_ITEM_BOOK
;
712 case SHOW_ITEM_STAVE
:
713 f
.dchar
= DCHAR_ITEM_STAVE
;
716 case SHOW_ITEM_MISCELLANY
:
717 f
.dchar
= DCHAR_ITEM_MISCELLANY
;
720 case SHOW_ITEM_CORPSE
:
721 f
.dchar
= DCHAR_ITEM_CORPSE
;
725 f
.dchar
= DCHAR_ITEM_GOLD
;
728 case SHOW_ITEM_AMULET
:
729 f
.dchar
= DCHAR_ITEM_AMULET
;
737 void init_show_table(void)
740 for (int i
= 0; i
< NUM_FEATURES
; i
++)
742 obj
.cls
= SH_FEATURE
;
743 obj
.feat
= static_cast<dungeon_feature_type
>(i
);
745 _init_feat(Features
[obj
], obj
.feat
);
748 obj
.cls
= SH_INVIS_EXPOSED
;
749 Features
[obj
].dchar
= DCHAR_INVIS_EXPOSED
;
750 Features
[obj
].minimap
= MF_MONS_HOSTILE
;
752 for (int i
= 0; i
< NUM_SHOW_ITEMS
; i
++)
755 obj
.item
= static_cast<show_item_type
>(i
);
757 _init_item(Features
[obj
], obj
.item
);
761 Features
[obj
].dchar
= DCHAR_CLOUD
;
762 Features
[obj
].minimap
= MF_SKIP
;
764 for (feat_map::iterator i
= Features
.begin(); i
!= Features
.end(); ++i
)
766 feature_def
&f
= i
->second
;
767 if (f
.dchar
!= NUM_DCHAR_TYPES
)
768 f
.symbol
= Options
.char_table
[f
.dchar
];
771 apply_feature_overrides();
773 for (feat_map::iterator i
= Features
.begin(); i
!= Features
.end(); ++i
)
775 feature_def
&f
= i
->second
;
777 f
.magic_symbol
= f
.symbol
;
779 if (f
.seen_colour
== BLACK
)
780 f
.seen_colour
= f
.map_colour
;
782 if (f
.seen_em_colour
== BLACK
)
783 f
.seen_em_colour
= f
.seen_colour
;
785 if (f
.em_colour
== BLACK
)
786 f
.em_colour
= f
.colour
;
790 dungeon_feature_type
magic_map_base_feat(dungeon_feature_type feat
)
792 const feature_def
& fdef
= get_feature_def(feat
);
796 return DNGN_GRANITE_STATUE
;
801 return DNGN_SHALLOW_WATER
;
803 return DNGN_ABANDONED_SHOP
;
805 return DNGN_FOUNTAIN_BLUE
;
807 return DNGN_ROCK_WALL
;
809 return DNGN_ALTAR_FIRST_GOD
;
811 // We could do more, e.g. map the different upstairs together.