diff options
Diffstat (limited to 'crawl-ref/source/tilepick.cc')
-rw-r--r-- | crawl-ref/source/tilepick.cc | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/crawl-ref/source/tilepick.cc b/crawl-ref/source/tilepick.cc index ddc0a9013f..725947c13c 100644 --- a/crawl-ref/source/tilepick.cc +++ b/crawl-ref/source/tilepick.cc @@ -121,6 +121,8 @@ int tileidx_monster_base(const monsters *mon, bool detected) bool in_water = feat_is_water(grd(mon->pos())); int type = mon->type; + if (!crawl_state.arena && you.misled()) + type = mon->get_mislead_type(); // Show only base class for detected monsters. if (detected) @@ -1014,6 +1016,12 @@ int tileidx_monster_base(const monsters *mon, bool detected) case MONS_EROLCHA: return TILEP_MONS_EROLCHA; + // rakshasas ('R') + case MONS_MARA: + return TILEP_MONS_MARA; + case MONS_MARA_FAKE: + return TILEP_MONS_MARA_FAKE; + // trolls ('T') case MONS_PURGY: return TILEP_MONS_PURGY; @@ -3123,9 +3131,9 @@ int _get_door_offset (int base_tile, bool opened = false, // Modify wall tile index depending on floor/wall flavour. static inline void _finalise_tile(unsigned int *tile, - unsigned char wall_flv, - unsigned char floor_flv, - unsigned char special_flv, + unsigned int wall_flv, + unsigned int floor_flv, + unsigned int special_flv, coord_def gc) { int orig = (*tile) & TILE_FLAG_MASK; @@ -4411,14 +4419,22 @@ void tile_init_flavour(const coord_def &gc) if (!env.tile_flv(gc).floor) { - int floor_rnd = random2(tile_dngn_count(env.tile_default.floor)); - env.tile_flv(gc).floor = env.tile_default.floor + floor_rnd; + int floor_base = env.tile_default.floor; + int colour = env.grid_colours(gc); + if (colour) + floor_base = tile_dngn_coloured(floor_base, colour); + int floor_rnd = random2(tile_dngn_count(floor_base)); + env.tile_flv(gc).floor = floor_base + floor_rnd; } if (!env.tile_flv(gc).wall) { - int wall_rnd = random2(tile_dngn_count(env.tile_default.wall)); - env.tile_flv(gc).wall = env.tile_default.wall + wall_rnd; + int wall_base = env.tile_default.wall; + int colour = env.grid_colours(gc); + if (colour) + wall_base = tile_dngn_coloured(wall_base, colour); + int wall_rnd = random2(tile_dngn_count(wall_base)); + env.tile_flv(gc).wall = wall_base + wall_rnd; } if (feat_is_door(grd(gc))) @@ -4884,9 +4900,9 @@ void tile_finish_dngn(unsigned int *tileb, int cx, int cy) + coord_def(cx, cy) - crawl_view.vgrdc; const coord_def gc = view2grid(ep); - unsigned char wall_flv = 0; - unsigned char floor_flv = 0; - unsigned char special_flv = 0; + unsigned int wall_flv = 0; + unsigned int floor_flv = 0; + unsigned int special_flv = 0; const bool in_bounds = (map_bounds(gc)); if (in_bounds) |