diff options
-rw-r--r-- | crawl-ref/source/mutation.cc | 6 | ||||
-rw-r--r-- | crawl-ref/source/mutation.h | 3 | ||||
-rw-r--r-- | crawl-ref/source/xom.cc | 11 |
3 files changed, 11 insertions, 9 deletions
diff --git a/crawl-ref/source/mutation.cc b/crawl-ref/source/mutation.cc index af119e8df6..894873188f 100644 --- a/crawl-ref/source/mutation.cc +++ b/crawl-ref/source/mutation.cc @@ -1042,6 +1042,12 @@ static bool _mutation_is_fully_inactive(mutation_type mut) && !you.demon_pow[mut] && !mutation_defs[mut].physical); } +bool can_safely_mutate() +{ + return (!you.is_undead || + (you.is_undead == US_SEMI_UNDEAD && you.hunger_state == HS_ENGORGED)); +} + formatted_string describe_mutations() { std::string result; diff --git a/crawl-ref/source/mutation.h b/crawl-ref/source/mutation.h index 066073c1b1..d52bc659fd 100644 --- a/crawl-ref/source/mutation.h +++ b/crawl-ref/source/mutation.h @@ -46,6 +46,9 @@ bool mutate(mutation_type which_mutation, bool failMsg = true, void display_mutations(); bool mutation_is_fully_active(mutation_type mut); + +bool can_safely_mutate(); + formatted_string describe_mutations(); diff --git a/crawl-ref/source/xom.cc b/crawl-ref/source/xom.cc index 42a64431c8..8c5d551f40 100644 --- a/crawl-ref/source/xom.cc +++ b/crawl-ref/source/xom.cc @@ -626,11 +626,8 @@ static bool xom_is_good(int sever) } else if (random2(sever) <= 9) { - if (you.is_undead - && (you.species != SP_VAMPIRE || you.hunger_state != HS_ENGORGED)) - { + if (!can_safely_mutate()) goto try_again; - } god_speaks(GOD_XOM, _get_xom_speech("good mutations")); mpr("Your body is suffused with distortional energy."); @@ -761,12 +758,8 @@ static bool xom_is_bad(int sever) } else if (random2(sever) <= 6) { - if (you.is_undead - && (you.species != SP_VAMPIRE - || you.hunger_state != HS_ENGORGED)) - { + if (!can_safely_mutate()) goto try_again; - } god_speaks(GOD_XOM, _get_xom_speech("random mutations")); mpr("Your body is suffused with distortional energy."); |