diff options
Diffstat (limited to 'crawl-ref/source/mutation.cc')
-rw-r--r-- | crawl-ref/source/mutation.cc | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/crawl-ref/source/mutation.cc b/crawl-ref/source/mutation.cc index 3a65ec0694..a09ee6313f 100644 --- a/crawl-ref/source/mutation.cc +++ b/crawl-ref/source/mutation.cc @@ -1524,7 +1524,8 @@ bool mutate(mutation_type which_mutation, bool failMsg, bool force_mutation, return (false); } - if (which_mutation == RANDOM_MUTATION) + if (which_mutation == RANDOM_MUTATION + || which_mutation == RANDOM_XOM_MUTATION) { if ( random2(15) < how_mutated() ) { @@ -1533,15 +1534,16 @@ bool mutate(mutation_type which_mutation, bool failMsg, bool force_mutation, else return (delete_mutation(RANDOM_MUTATION)); } - else + } + + if (which_mutation == RANDOM_MUTATION) + { + do { - do - { - mutat = static_cast<mutation_type>(random2(NUM_MUTATIONS)); - if (one_chance_in(1000)) - return false; - } while ( !accept_mutation(mutat) ); - } + mutat = static_cast<mutation_type>(random2(NUM_MUTATIONS)); + if (one_chance_in(1000)) + return false; + } while ( !accept_mutation(mutat) ); } else if (which_mutation == RANDOM_XOM_MUTATION) { |