diff options
author | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-01-18 21:31:22 +0000 |
---|---|---|
committer | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-01-18 21:31:22 +0000 |
commit | a6d89fbabb631ecbdcbb86c59aa70c28fd7da696 (patch) | |
tree | deea069713bf8cbaf641f4804ff2024674c3b1a3 /crawl-ref/source/ouch.cc | |
parent | cff1172ef03ea196d3bf59557e983bd0ad6cb7cc (diff) | |
download | crawl-ref-a6d89fbabb631ecbdcbb86c59aa70c28fd7da696.tar.gz crawl-ref-a6d89fbabb631ecbdcbb86c59aa70c28fd7da696.zip |
Consolidate the player and monster draining functions in fight.cc, make
monster draining take multiple levels of negative energy resistance into
account, and only set the necromancy conduct if draining actually took
place, as with draining beams.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8551 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/ouch.cc')
-rw-r--r-- | crawl-ref/source/ouch.cc | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/crawl-ref/source/ouch.cc b/crawl-ref/source/ouch.cc index 2faca91b49..ca82412f81 100644 --- a/crawl-ref/source/ouch.cc +++ b/crawl-ref/source/ouch.cc @@ -636,7 +636,7 @@ void lose_level() xom_is_stimulated(255); } -void drain_exp(bool announce_full) +bool drain_exp(bool announce_full) { const int protection = player_prot_life(); @@ -644,20 +644,23 @@ void drain_exp(bool announce_full) { if (announce_full) canned_msg(MSG_YOU_RESIST); - return; + + return (false); } if (you.experience == 0) { ouch(INSTANT_DEATH, NON_MONSTER, KILLED_BY_DRAINING); + // Return in case death was escaped via wizard mode. - return; + return (true); } if (you.experience_level == 1) { you.experience = 0; - return; + + return (true); } unsigned long total_exp = exp_needed(you.experience_level + 2) @@ -708,7 +711,11 @@ void drain_exp(bool announce_full) if (you.experience < exp_needed(you.experience_level + 1)) lose_level(); + + return (true); } + + return (false); } static void _xom_checks_damage(kill_method_type death_type, |