summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/output.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/output.cc')
-rw-r--r--crawl-ref/source/output.cc34
1 files changed, 12 insertions, 22 deletions
diff --git a/crawl-ref/source/output.cc b/crawl-ref/source/output.cc
index 9190fd7529..0c7e129b14 100644
--- a/crawl-ref/source/output.cc
+++ b/crawl-ref/source/output.cc
@@ -1073,33 +1073,23 @@ static bool _compare_monsters_attitude( const monsters *m1, const monsters *m2 )
static void _get_visible_monsters(std::vector<std::string>& describe)
{
- int ystart = you.y_pos - 9, xstart = you.x_pos - 9;
- int yend = you.y_pos + 9, xend = you.x_pos + 9;
- if ( xstart < 0 ) xstart = 0;
- if ( ystart < 0 ) ystart = 0;
- if ( xend >= GXM ) xend = GXM - 1;
- if ( yend >= GYM ) yend = GYM - 1;
-
std::vector<const monsters*> mons;
// monster check
- for (int y = ystart; y <= yend; ++y)
- for (int x = xstart; x <= xend; ++x)
- if (see_grid(x,y))
+ for (radius_iterator ri(you.pos(), LOS_RADIUS); ri; ++ri )
+ {
+ if ( mgrd(*ri) != NON_MONSTER )
+ {
+ const monsters *mon = &menv[mgrd(*ri)];
+ if (player_monster_visible(mon)
+ && !mons_is_submerged(mon)
+ && (!mons_is_mimic(mon->type)
+ || testbits(mon->flags, MF_KNOWN_MIMIC)))
{
- const unsigned short targ_monst = mgrd[x][y];
- if (targ_monst != NON_MONSTER)
- {
- const monsters *mon = &menv[targ_monst];
- if (player_monster_visible(mon)
- && !mons_is_submerged(mon)
- && (!mons_is_mimic(mon->type)
- || testbits(mon->flags, MF_KNOWN_MIMIC)))
- {
- mons.push_back(mon);
- }
- }
+ mons.push_back(mon);
}
+ }
+ }
if (mons.empty())
return;