summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/arena.cc
diff options
context:
space:
mode:
authorAdam Borowski <kilobyte@angband.pl>2012-08-27 03:08:44 +0200
committerAdam Borowski <kilobyte@angband.pl>2012-08-27 03:08:44 +0200
commitccafab7d387635fe3c668d719da700cc86a190bc (patch)
tree36849d92b5b117a3faaea5b6f09c72d76fa9bbb3 /crawl-ref/source/arena.cc
parent088cf57e3cc6b52504b46d74b02a6ec1f5101db3 (diff)
downloadcrawl-ref-ccafab7d387635fe3c668d719da700cc86a190bc.tar.gz
crawl-ref-ccafab7d387635fe3c668d719da700cc86a190bc.zip
Don't go through inappropriate monsters during arena selection.
Diffstat (limited to 'crawl-ref/source/arena.cc')
-rw-r--r--crawl-ref/source/arena.cc14
1 files changed, 5 insertions, 9 deletions
diff --git a/crawl-ref/source/arena.cc b/crawl-ref/source/arena.cc
index 81c4d57723..e5e5ec441d 100644
--- a/crawl-ref/source/arena.cc
+++ b/crawl-ref/source/arena.cc
@@ -127,7 +127,7 @@ namespace arena
coord_def place_a, place_b;
bool cycle_random = false;
- monster_type cycle_random_pos = NUM_MONSTERS;
+ uint32_t cycle_random_pos = 0;
FILE *file = NULL;
int message_pos = 0;
@@ -1068,17 +1068,13 @@ monster_type arena_pick_random_monster(const level_id &place, int power,
for (int tries = 0; tries <= NUM_MONSTERS; tries++)
{
- ++arena::cycle_random_pos;
- if (arena::cycle_random_pos >= NUM_MONSTERS)
- arena::cycle_random_pos = MONS_0;
+ monster_type mons = pick_monster_by_hash(place.branch,
+ ++arena::cycle_random_pos);
- if (mons_rarity(arena::cycle_random_pos, place.branch) == 0)
+ if (arena_veto_random_monster(mons))
continue;
- if (arena_veto_random_monster(arena::cycle_random_pos))
- continue;
-
- return arena::cycle_random_pos;
+ return mons;
}
game_ended_with_error(