diff options
author | Adam Borowski <kilobyte@angband.pl> | 2012-08-27 03:08:44 +0200 |
---|---|---|
committer | Adam Borowski <kilobyte@angband.pl> | 2012-08-27 03:08:44 +0200 |
commit | ccafab7d387635fe3c668d719da700cc86a190bc (patch) | |
tree | 36849d92b5b117a3faaea5b6f09c72d76fa9bbb3 /crawl-ref/source/arena.cc | |
parent | 088cf57e3cc6b52504b46d74b02a6ec1f5101db3 (diff) | |
download | crawl-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.cc | 14 |
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( |