From 8e904ab0620577064f4a818272b152d1f5d2d3db Mon Sep 17 00:00:00 2001 From: dshaligram Date: Fri, 7 Sep 2007 15:06:00 +0000 Subject: Turfed out obsolete orange crystal statue and silver statue features. Moved MINMOVE and MINSEE brain damage into the dungeon_feature_type enumeration where it is clearer what they represent. Fixed ice statues not being appropriately affected by Shatter and Lee's. Moved 'v' examine hint information and feature notability into feature_def flags. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2061 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/beam.cc | 4 +- crawl-ref/source/defines.h | 6 --- crawl-ref/source/delay.cc | 2 - crawl-ref/source/direct.cc | 18 ++------- crawl-ref/source/dungeon.cc | 13 ++----- crawl-ref/source/enum.h | 25 ++++++++----- crawl-ref/source/externs.h | 5 ++- crawl-ref/source/misc.cc | 4 +- crawl-ref/source/mon-util.cc | 2 +- crawl-ref/source/monstuff.cc | 2 +- crawl-ref/source/spells4.cc | 37 +++++------------- crawl-ref/source/tutorial.cc | 6 --- crawl-ref/source/view.cc | 89 +++++++++++++++++++++----------------------- crawl-ref/source/view.h | 8 +--- 14 files changed, 85 insertions(+), 136 deletions(-) (limited to 'crawl-ref/source') diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index cd1ae2acd2..3bb7f0c4a5 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -2655,9 +2655,7 @@ static int affect_wall(bolt &beam, int x, int y) } if (targ_grid == DNGN_ORCISH_IDOL - || targ_grid == DNGN_SILVER_STATUE - || targ_grid == DNGN_GRANITE_STATUE - || targ_grid == DNGN_ORANGE_CRYSTAL_STATUE) + || targ_grid == DNGN_GRANITE_STATUE) { grd[x][y] = DNGN_FLOOR; diff --git a/crawl-ref/source/defines.h b/crawl-ref/source/defines.h index c71b24926b..8db899855e 100644 --- a/crawl-ref/source/defines.h +++ b/crawl-ref/source/defines.h @@ -126,12 +126,6 @@ // max shops randomly generated in a level. #define MAX_RANDOM_SHOPS 5 -// lowest grid value which can be passed by walking etc. -#define MINMOVE 31 - -// lowest grid value which can be seen through -#define MINSEE 11 - // Can be passed to monster_die to indicate that a friendly did the killing. #define ANON_FRIENDLY_MONSTER -1 diff --git a/crawl-ref/source/delay.cc b/crawl-ref/source/delay.cc index 586fdc1d49..e18e7a8c12 100644 --- a/crawl-ref/source/delay.cc +++ b/crawl-ref/source/delay.cc @@ -528,8 +528,6 @@ static void finish_delay(const delay_queue_item &delay) case DNGN_METAL_WALL: case DNGN_GREEN_CRYSTAL_WALL: case DNGN_WAX_WALL: - case DNGN_SILVER_STATUE: - case DNGN_ORANGE_CRYSTAL_STATUE: ouch(1 + you.hp, 0, KILLED_BY_PETRIFICATION); break; diff --git a/crawl-ref/source/direct.cc b/crawl-ref/source/direct.cc index d4a35a4b97..9c347adaeb 100644 --- a/crawl-ref/source/direct.cc +++ b/crawl-ref/source/direct.cc @@ -1352,12 +1352,8 @@ std::string raw_feature_description(dungeon_feature_type grid, return ("orcish idol"); case DNGN_WAX_WALL: return ("wall of solid wax"); - case DNGN_SILVER_STATUE: - return ("silver statue"); case DNGN_GRANITE_STATUE: return ("granite statue"); - case DNGN_ORANGE_CRYSTAL_STATUE: - return ("orange crystal statue"); case DNGN_LAVA: return ("Some lava"); case DNGN_DEEP_WATER: @@ -1521,22 +1517,16 @@ static std::string marker_feature_description(const coord_def &p) return (""); } +#ifndef DEBUG_DIAGNOSTICS // Is a feature interesting enough to 'v'iew it, even if a player normally // doesn't care about descriptions, i.e. does the description hold important // information? (Yes, this is entirely subjective. JPEG) + static bool interesting_feature(dungeon_feature_type feat) { - switch (feat) - { - case DNGN_ENTER_ORCISH_MINES: - case DNGN_ENTER_SLIME_PITS: - case DNGN_ENTER_LABYRINTH: -// case DNGN_SPARKLING_FOUNTAIN: - return true; - default: - return false; - } + return (get_feature_def(feat).flags & FFT_EXAMINE_HINT); } +#endif std::string feature_description(int mx, int my, description_level_type dtype, bool add_stop) diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc index 2c69791907..4f037a7137 100644 --- a/crawl-ref/source/dungeon.cc +++ b/crawl-ref/source/dungeon.cc @@ -3952,9 +3952,7 @@ dungeon_feature_type map_feature(map_def *map, const coord_def &c, int rawfeat) (rawfeat == 'C') ? pick_an_altar() : // f(x) elsewhere {dlb} (rawfeat == 'F') ? DNGN_GRANITE_STATUE : (rawfeat == 'I') ? DNGN_ORCISH_IDOL : - (rawfeat == 'S') ? DNGN_SILVER_STATUE : (rawfeat == 'G') ? DNGN_GRANITE_STATUE : - (rawfeat == 'H') ? DNGN_ORANGE_CRYSTAL_STATUE : (rawfeat == 'T') ? DNGN_BLUE_FOUNTAIN : (rawfeat == 'U') ? DNGN_SPARKLING_FOUNTAIN : (rawfeat == 'V') ? DNGN_PERMADRY_FOUNTAIN : @@ -4024,8 +4022,7 @@ static int vault_grid( vault_placement &place, } // first, set base tile for grids {dlb}: - const dungeon_feature_type grid = - grd[vx][vy] = + grd[vx][vy] = ((vgrid == -1) ? grd[vx][vy] : (vgrid == 'x') ? DNGN_ROCK_WALL : (vgrid == 'X') ? DNGN_PERMAROCK_WALL : @@ -4053,9 +4050,7 @@ static int vault_grid( vault_placement &place, (vgrid == 'C') ? pick_an_altar() : // f(x) elsewhere {dlb} (vgrid == 'F') ? DNGN_GRANITE_STATUE : (vgrid == 'I') ? DNGN_ORCISH_IDOL : - (vgrid == 'S') ? DNGN_SILVER_STATUE : (vgrid == 'G') ? DNGN_GRANITE_STATUE : - (vgrid == 'H') ? DNGN_ORANGE_CRYSTAL_STATUE : (vgrid == 'T') ? DNGN_BLUE_FOUNTAIN : (vgrid == 'U') ? DNGN_SPARKLING_FOUNTAIN : (vgrid == 'V') ? DNGN_PERMADRY_FOUNTAIN : @@ -4189,12 +4184,10 @@ static int vault_grid( vault_placement &place, dgn_place_item_explicit(vgrid - 'd', vx, vy, place, level_number); } - if (grid == DNGN_ORANGE_CRYSTAL_STATUE - || grid == DNGN_SILVER_STATUE) + if (vgrid == 'S' || vgrid == 'H') { const int mtype = - grid == DNGN_ORANGE_CRYSTAL_STATUE? MONS_ORANGE_STATUE - : MONS_SILVER_STATUE; + vgrid == 'H'? MONS_ORANGE_STATUE : MONS_SILVER_STATUE; grd[vx][vy] = DNGN_FLOOR; diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h index a11550c525..aead4414c7 100644 --- a/crawl-ref/source/enum.h +++ b/crawl-ref/source/enum.h @@ -993,12 +993,6 @@ enum drop_mode_type DM_MULTI }; -// lowest grid value which can be occupied (walk, swim, fly) -#define MINMOVE 31 - -// lowest grid value which can be seen through -#define MINSEE 11 - // When adding: // // * New stairs/portals: update grid_stair_direction. @@ -1023,11 +1017,15 @@ enum dungeon_feature_type DNGN_WAX_WALL, // 8 DNGN_PERMAROCK_WALL, // 9 - for undiggable walls - DNGN_SILVER_STATUE = 21, // 21 - DNGN_GRANITE_STATUE, - DNGN_ORANGE_CRYSTAL_STATUE, // 23 + // XXX: lowest grid value which can be seen through + DNGN_MINSEE = 11, + + DNGN_GRANITE_STATUE = 21, // 21 DNGN_STATUE_RESERVED_1, - DNGN_STATUE_RESERVED_2, // 25 + DNGN_STATUE_RESERVED_2, + + // XXX: lowest grid value which can be passed by walking etc. + DNGN_MINMOVE = 31, DNGN_LAVA = 61, // 61 DNGN_DEEP_WATER, // 62 @@ -1334,6 +1332,13 @@ enum equipment_type EQ_ALL_ARMOUR // check all armour types }; +enum feature_flag_type +{ + FFT_NONE = 0, + FFT_NOTABLE = 0x1, // should be noted for dungeon overview + FFT_EXAMINE_HINT = 0x2 // could get an "examine-this" hint. +}; + enum fire_type { FIRE_NONE = 0x0000, diff --git a/crawl-ref/source/externs.h b/crawl-ref/source/externs.h index b4cf983058..287552ed8c 100644 --- a/crawl-ref/source/externs.h +++ b/crawl-ref/source/externs.h @@ -1535,8 +1535,9 @@ struct feature_def unsigned short seen_colour; // map_colour when is_terrain_seen() unsigned short em_colour; // Emphasised colour when in LoS. unsigned short seen_em_colour; // Emphasised colour when out of LoS - bool notable; // gets noted when seen - bool seen_effect; // requires special handling when seen + unsigned flags; + + bool is_notable() const { return (flags & FFT_NOTABLE); } }; struct feature_override diff --git a/crawl-ref/source/misc.cc b/crawl-ref/source/misc.cc index ac8efb3947..cc0bbd550b 100644 --- a/crawl-ref/source/misc.cc +++ b/crawl-ref/source/misc.cc @@ -281,12 +281,12 @@ command_type grid_stair_direction(dungeon_feature_type grid) bool grid_is_opaque( dungeon_feature_type grid ) { - return (grid < MINSEE && grid != DNGN_ORCISH_IDOL); + return (grid < DNGN_MINSEE && grid != DNGN_ORCISH_IDOL); } bool grid_is_solid( dungeon_feature_type grid ) { - return (grid < MINMOVE); + return (grid < DNGN_MINMOVE); } bool grid_is_solid( int x, int y ) diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index 627f80e6e3..ff7ef0d590 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -4684,7 +4684,7 @@ std::string do_mon_str_replacements(const std::string in_msg, if (see_grid(monster->x, monster->y)) { dungeon_feature_type feat = grd[monster->x][monster->y]; - if (feat < MINMOVE || feat >= NUM_REAL_FEATURES) + if (feat < DNGN_MINMOVE || feat >= NUM_REAL_FEATURES) msg = replace_all(msg, "@surface@", "buggy surface"); else if (feat == DNGN_LAVA) msg = replace_all(msg, "@surface@", "lava"); diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc index d2e574b950..120c4be4da 100644 --- a/crawl-ref/source/monstuff.cc +++ b/crawl-ref/source/monstuff.cc @@ -4486,7 +4486,7 @@ static void monster_move(monsters *monster) || habitat != DNGN_FLOOR || mons_class_flag( monster->type, M_AMPHIBIOUS )) { - okmove = MINMOVE; + okmove = DNGN_MINMOVE; } for (count_x = 0; count_x < 3; count_x++) diff --git a/crawl-ref/source/spells4.cc b/crawl-ref/source/spells4.cc index d4b4656cc8..4ad98dcf7e 100644 --- a/crawl-ref/source/spells4.cc +++ b/crawl-ref/source/spells4.cc @@ -348,7 +348,6 @@ static int shatter_walls(int x, int y, int pow, int garbage) break; case DNGN_METAL_WALL: - case DNGN_SILVER_STATUE: stuff = DEBRIS_METAL; chance = pow / 10; break; @@ -369,11 +368,6 @@ static int shatter_walls(int x, int y, int pow, int garbage) stuff = DEBRIS_ROCK; break; - case DNGN_ORANGE_CRYSTAL_STATUE: - chance = pow / 6; - stuff = DEBRIS_CRYSTAL; - break; - case DNGN_GREEN_CRYSTAL_WALL: chance = 50; stuff = DEBRIS_CRYSTAL; @@ -2389,6 +2383,7 @@ void cast_fragmentation(int pow) // jmf: ripped idea from airstrike switch (menv[mon].type) { + case MONS_ICE_STATUE: case MONS_ICE_BEAST: // blast of ice fragments case MONS_SIMULACRUM_SMALL: case MONS_SIMULACRUM_LARGE: @@ -2477,8 +2472,14 @@ void cast_fragmentation(int pow) // jmf: ripped idea from airstrike blast.damage.num = 6; } - if (player_hurt_monster(mon, roll_dice( blast.damage ))) - blast.damage.num += 2; + { + int statue_damage = roll_dice(blast.damage) * 2; + if (pow >= 50 && one_chance_in(10)) + statue_damage = menv[mon].hit_points; + + if (player_hurt_monster(mon, statue_damage)) + blast.damage.num += 2; + } break; case MONS_CRYSTAL_GOLEM: @@ -2558,14 +2559,6 @@ void cast_fragmentation(int pow) // jmf: ripped idea from airstrike case DNGN_METAL_WALL: what = "metal wall"; blast.colour = CYAN; - // fallthru - case DNGN_SILVER_STATUE: - if (what == NULL) - { - what = "silver statue"; - blast.colour = WHITE; - } - explode = true; blast.name = "blast of metal fragments"; blast.damage.num = 4; @@ -2585,23 +2578,13 @@ void cast_fragmentation(int pow) // jmf: ripped idea from airstrike case DNGN_GREEN_CRYSTAL_WALL: // crystal -- large & nasty explosion what = "crystal wall"; blast.colour = GREEN; - // fallthru - case DNGN_ORANGE_CRYSTAL_STATUE: - if (what == NULL) - { - what = "crystal statue"; - blast.colour = LIGHTRED; //jmf: == orange, right? - } - explode = true; blast.ex_size = 2; blast.name = "blast of crystal shards"; blast.damage.num = 5; if (okay_to_dest - && ((grid == DNGN_GREEN_CRYSTAL_WALL && coinflip()) - || (grid == DNGN_ORANGE_CRYSTAL_STATUE - && pow >= 50 && one_chance_in(10)))) + && grid == DNGN_GREEN_CRYSTAL_WALL && coinflip()) { blast.ex_size = coinflip() ? 3 : 2; grd[beam.tx][beam.ty] = DNGN_FLOOR; diff --git a/crawl-ref/source/tutorial.cc b/crawl-ref/source/tutorial.cc index 8416b6eade..d5acaff881 100644 --- a/crawl-ref/source/tutorial.cc +++ b/crawl-ref/source/tutorial.cc @@ -1933,8 +1933,6 @@ bool tutorial_feat_interesting(dungeon_feature_type feat) { case DNGN_ORCISH_IDOL: case DNGN_GRANITE_STATUE: - case DNGN_SILVER_STATUE: - case DNGN_ORANGE_CRYSTAL_STATUE: case DNGN_TRAP_MAGICAL: case DNGN_TRAP_MECHANICAL: case DNGN_STONE_STAIRS_DOWN_I: @@ -1960,10 +1958,6 @@ void tutorial_describe_feature(dungeon_feature_type feat) { case DNGN_ORCISH_IDOL: case DNGN_GRANITE_STATUE: - case DNGN_SILVER_STATUE: - case DNGN_ORANGE_CRYSTAL_STATUE: - ostr << "Beware! Sometimes such a statue actually has a mind of its own."; - break; case DNGN_TRAP_MAGICAL: case DNGN_TRAP_MECHANICAL: ostr << "These nasty constructions can do physical damage (with " diff --git a/crawl-ref/source/view.cc b/crawl-ref/source/view.cc index 53cd62555d..896eb12874 100644 --- a/crawl-ref/source/view.cc +++ b/crawl-ref/source/view.cc @@ -105,6 +105,11 @@ static int get_item_dngn_code(const item_def &item); static void set_show_backup( int ex, int ey ); static int get_viewobj_flags(int viewobj); +const feature_def &get_feature_def(dungeon_feature_type feat) +{ + return (Feature[feat]); +} + unsigned map_cell::glyph() const { if (!object) @@ -235,7 +240,7 @@ void clear_envmap_grid( int x, int y ) bool is_notable_terrain(dungeon_feature_type ftype) { - return Feature[ftype].notable; + return (Feature[ftype].is_notable()); } #if defined(WIN32CONSOLE) || defined(DOS) @@ -359,7 +364,7 @@ static void get_symbol( int x, int y, } // Note anything we see that's notable - if ((x || y) && fdef.notable) + if ((x || y) && fdef.is_notable()) seen_notable_thing( static_cast(object), x, y ); } @@ -3372,8 +3377,7 @@ void init_feature_table( void ) { Feature[i].symbol = 0; Feature[i].colour = BLACK; // means must be set some other way - Feature[i].notable = false; - Feature[i].seen_effect = false; + Feature[i].flags = FFT_NONE; Feature[i].magic_symbol = 0; // made equal to symbol if untouched Feature[i].map_colour = DARKGREY; Feature[i].seen_colour = BLACK; // marks no special seen map handling @@ -3439,23 +3443,11 @@ void init_feature_table( void ) Feature[i].magic_symbol = Options.char_table[ DCHAR_WALL_MAGIC ]; break; // wax wall - case DNGN_SILVER_STATUE: - Feature[i].symbol = Options.char_table[ DCHAR_STATUE ]; - Feature[i].colour = WHITE; - Feature[i].seen_effect = true; - break; - case DNGN_GRANITE_STATUE: Feature[i].symbol = Options.char_table[ DCHAR_STATUE ]; Feature[i].colour = LIGHTGREY; break; - case DNGN_ORANGE_CRYSTAL_STATUE: - Feature[i].symbol = Options.char_table[ DCHAR_STATUE ]; - Feature[i].colour = LIGHTRED; - Feature[i].seen_effect = true; - break; - case DNGN_LAVA: Feature[i].symbol = Options.char_table[ DCHAR_WAVY ]; Feature[i].colour = RED; @@ -3480,7 +3472,6 @@ void init_feature_table( void ) case DNGN_EXIT_HELL: Feature[i].symbol = Options.char_table[ DCHAR_ARCH ]; Feature[i].colour = LIGHTRED; - Feature[i].notable = false; Feature[i].map_colour = LIGHTGREY; Feature[i].seen_colour = LIGHTRED; break; @@ -3488,7 +3479,7 @@ void init_feature_table( void ) case DNGN_ENTER_HELL: Feature[i].symbol = Options.char_table[ DCHAR_ARCH ]; Feature[i].colour = RED; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = LIGHTGREY; Feature[i].seen_colour = RED; break; @@ -3520,7 +3511,7 @@ void init_feature_table( void ) case DNGN_ENTER_SHOP: Feature[i].symbol = Options.char_table[ DCHAR_ARCH ]; Feature[i].colour = YELLOW; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = LIGHTGREY; Feature[i].seen_colour = YELLOW; break; @@ -3528,17 +3519,19 @@ void init_feature_table( void ) case DNGN_ENTER_LABYRINTH: Feature[i].symbol = Options.char_table[ DCHAR_ARCH ]; Feature[i].colour = CYAN; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = LIGHTGREY; Feature[i].seen_colour = CYAN; break; case DNGN_ENTER_PORTAL_VAULT: + Feature[i].flags |= FFT_NOTABLE; + // fall through + case DNGN_EXIT_PORTAL_VAULT: - Feature[i].symbol = Options.char_table[ DCHAR_ARCH ]; - Feature[i].colour = EC_SHIMMER_BLUE; - Feature[i].notable = true; - Feature[i].map_colour = LIGHTGREY; + Feature[i].symbol = Options.char_table[ DCHAR_ARCH ]; + Feature[i].colour = EC_SHIMMER_BLUE; + Feature[i].map_colour = LIGHTGREY; Feature[i].seen_colour = EC_SHIMMER_BLUE; break; @@ -3577,7 +3570,7 @@ void init_feature_table( void ) case DNGN_ENTER_DIS: Feature[i].colour = CYAN; Feature[i].symbol = Options.char_table[ DCHAR_ARCH ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = LIGHTGREY; Feature[i].seen_colour = CYAN; break; @@ -3585,7 +3578,7 @@ void init_feature_table( void ) case DNGN_ENTER_GEHENNA: Feature[i].colour = RED; Feature[i].symbol = Options.char_table[ DCHAR_ARCH ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = LIGHTGREY; Feature[i].seen_colour = RED; break; @@ -3593,7 +3586,7 @@ void init_feature_table( void ) case DNGN_ENTER_COCYTUS: Feature[i].colour = LIGHTCYAN; Feature[i].symbol = Options.char_table[ DCHAR_ARCH ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = LIGHTGREY; Feature[i].seen_colour = LIGHTCYAN; break; @@ -3601,7 +3594,7 @@ void init_feature_table( void ) case DNGN_ENTER_TARTARUS: Feature[i].colour = DARKGREY; Feature[i].symbol = Options.char_table[ DCHAR_ARCH ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = LIGHTGREY; Feature[i].seen_colour = DARKGREY; break; @@ -3609,7 +3602,7 @@ void init_feature_table( void ) case DNGN_ENTER_ABYSS: Feature[i].colour = EC_RANDOM; Feature[i].symbol = Options.char_table[ DCHAR_ARCH ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = LIGHTGREY; Feature[i].seen_colour = EC_RANDOM; break; @@ -3629,7 +3622,7 @@ void init_feature_table( void ) case DNGN_ENTER_PANDEMONIUM: Feature[i].colour = LIGHTBLUE; Feature[i].symbol = Options.char_table[ DCHAR_ARCH ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = LIGHTGREY; Feature[i].seen_colour = LIGHTBLUE; break; @@ -3667,7 +3660,7 @@ void init_feature_table( void ) case DNGN_ENTER_RESERVED_4: Feature[i].colour = YELLOW; Feature[i].symbol = Options.char_table[ DCHAR_STAIRS_DOWN ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = RED; Feature[i].seen_colour = YELLOW; break; @@ -3675,7 +3668,7 @@ void init_feature_table( void ) case DNGN_ENTER_ZOT: Feature[i].colour = MAGENTA; Feature[i].symbol = Options.char_table[ DCHAR_ARCH ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = LIGHTGREY; Feature[i].seen_colour = MAGENTA; break; @@ -3712,7 +3705,7 @@ void init_feature_table( void ) case DNGN_ALTAR_ZIN: Feature[i].colour = WHITE; Feature[i].symbol = Options.char_table[ DCHAR_ALTAR ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = DARKGREY; Feature[i].seen_colour = WHITE; break; @@ -3720,7 +3713,7 @@ void init_feature_table( void ) case DNGN_ALTAR_SHINING_ONE: Feature[i].colour = YELLOW; Feature[i].symbol = Options.char_table[ DCHAR_ALTAR ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = DARKGREY; Feature[i].seen_colour = YELLOW; break; @@ -3728,7 +3721,7 @@ void init_feature_table( void ) case DNGN_ALTAR_KIKUBAAQUDGHA: Feature[i].colour = DARKGREY; Feature[i].symbol = Options.char_table[ DCHAR_ALTAR ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = DARKGREY; Feature[i].seen_colour = DARKGREY; break; @@ -3736,7 +3729,7 @@ void init_feature_table( void ) case DNGN_ALTAR_YREDELEMNUL: Feature[i].colour = EC_UNHOLY; Feature[i].symbol = Options.char_table[ DCHAR_ALTAR ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = DARKGREY; Feature[i].seen_colour = EC_UNHOLY; break; @@ -3744,7 +3737,7 @@ void init_feature_table( void ) case DNGN_ALTAR_XOM: Feature[i].colour = EC_RANDOM; Feature[i].symbol = Options.char_table[ DCHAR_ALTAR ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = DARKGREY; Feature[i].seen_colour = EC_RANDOM; break; @@ -3752,7 +3745,7 @@ void init_feature_table( void ) case DNGN_ALTAR_VEHUMET: Feature[i].colour = EC_VEHUMET; Feature[i].symbol = Options.char_table[ DCHAR_ALTAR ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = DARKGREY; Feature[i].seen_colour = EC_VEHUMET; break; @@ -3760,7 +3753,7 @@ void init_feature_table( void ) case DNGN_ALTAR_OKAWARU: Feature[i].colour = CYAN; Feature[i].symbol = Options.char_table[ DCHAR_ALTAR ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = DARKGREY; Feature[i].seen_colour = CYAN; break; @@ -3768,7 +3761,7 @@ void init_feature_table( void ) case DNGN_ALTAR_MAKHLEB: Feature[i].colour = EC_FIRE; Feature[i].symbol = Options.char_table[ DCHAR_ALTAR ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = DARKGREY; Feature[i].seen_colour = EC_FIRE; break; @@ -3776,7 +3769,7 @@ void init_feature_table( void ) case DNGN_ALTAR_SIF_MUNA: Feature[i].colour = BLUE; Feature[i].symbol = Options.char_table[ DCHAR_ALTAR ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = DARKGREY; Feature[i].seen_colour = BLUE; break; @@ -3784,7 +3777,7 @@ void init_feature_table( void ) case DNGN_ALTAR_TROG: Feature[i].colour = RED; Feature[i].symbol = Options.char_table[ DCHAR_ALTAR ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = DARKGREY; Feature[i].seen_colour = RED; break; @@ -3792,7 +3785,7 @@ void init_feature_table( void ) case DNGN_ALTAR_NEMELEX_XOBEH: Feature[i].colour = LIGHTMAGENTA; Feature[i].symbol = Options.char_table[ DCHAR_ALTAR ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = DARKGREY; Feature[i].seen_colour = LIGHTMAGENTA; break; @@ -3800,7 +3793,7 @@ void init_feature_table( void ) case DNGN_ALTAR_ELYVILON: Feature[i].colour = LIGHTGREY; Feature[i].symbol = Options.char_table[ DCHAR_ALTAR ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = DARKGREY; Feature[i].seen_colour = LIGHTGREY; break; @@ -3808,7 +3801,7 @@ void init_feature_table( void ) case DNGN_ALTAR_LUGONU: Feature[i].colour = GREEN; Feature[i].symbol = Options.char_table[ DCHAR_ALTAR ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = DARKGREY; Feature[i].seen_colour = GREEN; break; @@ -3816,7 +3809,7 @@ void init_feature_table( void ) case DNGN_ALTAR_BEOGH: Feature[i].colour = EC_BEOGH; Feature[i].symbol = Options.char_table[ DCHAR_ALTAR ]; - Feature[i].notable = true; + Feature[i].flags |= FFT_NOTABLE; Feature[i].map_colour = DARKGREY; Feature[i].seen_colour = EC_BEOGH; break; @@ -3910,6 +3903,10 @@ void init_feature_table( void ) Feature[i].symbol = Options.char_table[ DCHAR_CLOUD ]; break; } + + if (i == DNGN_ENTER_ORCISH_MINES || i == DNGN_ENTER_SLIME_PITS + || i == DNGN_ENTER_LABYRINTH) + Feature[i].flags |= FFT_EXAMINE_HINT; } apply_feature_overrides(); diff --git a/crawl-ref/source/view.h b/crawl-ref/source/view.h index 1cb1553d56..ad1d962911 100644 --- a/crawl-ref/source/view.h +++ b/crawl-ref/source/view.h @@ -23,12 +23,6 @@ void init_char_table(char_set_type set); void init_feature_table(); -/* *********************************************************************** - * called from: dump_screenshot - chardump - * *********************************************************************** */ -void get_non_ibm_symbol(unsigned int object, unsigned short *ch, - unsigned short *color); - // last updated 29may2000 {dlb} /* *********************************************************************** * called from: bang - beam - direct - effects - fight - monstuff - @@ -109,6 +103,8 @@ void get_item_symbol(unsigned int object, unsigned *ch, unsigned real_colour(unsigned raw_colour); int get_mons_colour(const monsters *mons); +const feature_def &get_feature_def(dungeon_feature_type feat); + void set_envmap_obj( int x, int y, int object ); unsigned get_envmap_char(int x, int y); int get_envmap_obj(int x, int y); -- cgit v1.2.3-54-g00ecf