summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source
diff options
context:
space:
mode:
authordolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-04-22 19:37:50 +0000
committerdolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-04-22 19:37:50 +0000
commitc23deaf938ce66f6c7711a72f2c147690d486376 (patch)
tree5bf8ab10fdc560d8afdbf2baf28fac99dc812eb8 /crawl-ref/source
parent405736986caa5e90c8b9fe72238bb8aff95fb0cc (diff)
downloadcrawl-ref-c23deaf938ce66f6c7711a72f2c147690d486376.tar.gz
crawl-ref-c23deaf938ce66f6c7711a72f2c147690d486376.zip
Add function can_safely_mutate(), to determine whether a player has any
chance of rotting upon mutation, and make Xom's random mutation routines use it. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@4482 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source')
-rw-r--r--crawl-ref/source/mutation.cc6
-rw-r--r--crawl-ref/source/mutation.h3
-rw-r--r--crawl-ref/source/xom.cc11
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.");