summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/xom.cc
diff options
context:
space:
mode:
authordolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-06-24 18:59:43 +0000
committerdolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-06-24 18:59:43 +0000
commit163844dfae7a6445a29469852ba48a3ae04012be (patch)
tree785a25877794c7d6677beb82ef0a63354e3c0d94 /crawl-ref/source/xom.cc
parent5b7ae42f424b04944b576d5d153fabe5616731c4 (diff)
downloadcrawl-ref-163844dfae7a6445a29469852ba48a3ae04012be.tar.gz
crawl-ref-163844dfae7a6445a29469852ba48a3ae04012be.zip
Properly handle Xom's failing to drain or torment the player.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6120 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/xom.cc')
-rw-r--r--crawl-ref/source/xom.cc31
1 files changed, 21 insertions, 10 deletions
diff --git a/crawl-ref/source/xom.cc b/crawl-ref/source/xom.cc
index c1bd35d487..a7278ef8c0 100644
--- a/crawl-ref/source/xom.cc
+++ b/crawl-ref/source/xom.cc
@@ -819,23 +819,34 @@ static bool _xom_is_bad(int sever)
}
else if (random2(sever) <= 8)
{
- if (player_prot_life() == 3 && player_res_torment())
- goto try_again;
-
- god_speaks(GOD_XOM, _get_xom_speech("draining or torment"));
+ const char *speech = _get_xom_speech("draining or torment");
if (one_chance_in(4))
{
- drain_exp();
- if (random2(sever) > 3)
- drain_exp();
- if (random2(sever) > 3)
+ if (player_prot_life() < 3)
+ {
+ god_speaks(GOD_XOM, speech);
+
drain_exp();
+ if (random2(sever) > 3)
+ drain_exp();
+ if (random2(sever) > 3)
+ drain_exp();
+
+ done = true;
+ }
}
else
- torment_player(0, TORMENT_XOM);
+ {
+ if (!player_res_torment())
+ {
+ god_speaks(GOD_XOM, speech);
- done = true;
+ torment_player(0, TORMENT_XOM);
+
+ done = true;
+ }
+ }
}
else if (random2(sever) <= 9)
{