diff options
author | Adam Borowski <kilobyte@angband.pl> | 2009-12-20 17:27:24 +0100 |
---|---|---|
committer | Adam Borowski <kilobyte@angband.pl> | 2009-12-20 19:09:23 +0100 |
commit | fe2bf66390e67cdb54c0a8e455689258e6fa4ef2 (patch) | |
tree | 7774b5554df5b1843b7e09a47099ad6f9e30a3ef /crawl-ref/source/abl-show.cc | |
parent | 9dfbca5a88a2f5e77e050391fe3a204b36fc04b3 (diff) | |
download | crawl-ref-fe2bf66390e67cdb54c0a8e455689258e6fa4ef2.tar.gz crawl-ref-fe2bf66390e67cdb54c0a8e455689258e6fa4ef2.zip |
Make clarity prevent berserk. Only Trog may override this, and even then,
there's a penalty to success rate.
Diffstat (limited to 'crawl-ref/source/abl-show.cc')
-rw-r--r-- | crawl-ref/source/abl-show.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/crawl-ref/source/abl-show.cc b/crawl-ref/source/abl-show.cc index bb69c1b8d8..e0e46db98d 100644 --- a/crawl-ref/source/abl-show.cc +++ b/crawl-ref/source/abl-show.cc @@ -702,6 +702,8 @@ static talent _get_talent(ability_type ability, bool check_confused) case ABIL_TROG_BERSERK: // piety >= 30 invoc = true; failure = 30 - you.piety; // starts at 0% + if (player_mental_clarity(true)) + failure += 80; break; case ABIL_TROG_REGEN_MR: // piety >= 50 @@ -1102,7 +1104,8 @@ static bool _check_ability_possible(const ability_def& abil, mpr("You're too hungry to berserk."); return (false); } - return (you.can_go_berserk(true) && berserk_check_wielded_weapon()); + return (you.can_go_berserk(true, abil.ability == ABIL_TROG_BERSERK) + && berserk_check_wielded_weapon()); case ABIL_FLY_II: if (you.duration[DUR_EXHAUSTED]) @@ -1161,7 +1164,7 @@ static bool _activate_talent(const talent& tal) } if ((tal.which == ABIL_EVOKE_BERSERK || tal.which == ABIL_TROG_BERSERK) - && !you.can_go_berserk(true)) + && !you.can_go_berserk(true, tal.which == ABIL_TROG_BERSERK)) { crawl_state.zero_turns_taken(); return (false); @@ -1745,7 +1748,7 @@ static bool _do_ability(const ability_def& abil) case ABIL_TROG_BERSERK: // Trog abilities don't use or train invocations. - go_berserk(true); + go_berserk(true, true); break; case ABIL_TROG_REGEN_MR: |