diff options
author | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-06-24 18:59:43 +0000 |
---|---|---|
committer | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-06-24 18:59:43 +0000 |
commit | 163844dfae7a6445a29469852ba48a3ae04012be (patch) | |
tree | 785a25877794c7d6677beb82ef0a63354e3c0d94 /crawl-ref/source/xom.cc | |
parent | 5b7ae42f424b04944b576d5d153fabe5616731c4 (diff) | |
download | crawl-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.cc | 31 |
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) { |