From 3f8334b021c123a371f0dfe8062c3a84eebba673 Mon Sep 17 00:00:00 2001 From: Adam Borowski Date: Tue, 29 Dec 2009 13:38:36 +0100 Subject: Make clarity allow intentional berserk. Unknown potions of rage override it as well. This is a debatable thing, but since other sources of involuntary berserk are caused by "being angry", it makes sense a drug is not affected by merely being calm. --- crawl-ref/source/abl-show.cc | 9 +++------ crawl-ref/source/dat/descript/items.txt | 3 ++- crawl-ref/source/misc.cc | 4 ++-- crawl-ref/source/misc.h | 2 +- crawl-ref/source/player.cc | 6 ++++-- crawl-ref/source/player.h | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/crawl-ref/source/abl-show.cc b/crawl-ref/source/abl-show.cc index a16fdf3ca6..3079b924d0 100644 --- a/crawl-ref/source/abl-show.cc +++ b/crawl-ref/source/abl-show.cc @@ -702,8 +702,6 @@ 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 @@ -1101,8 +1099,7 @@ static bool _check_ability_possible(const ability_def& abil, mpr("You're too hungry to berserk."); return (false); } - return (you.can_go_berserk(true, abil.ability == ABIL_TROG_BERSERK) - && berserk_check_wielded_weapon()); + return (you.can_go_berserk(true) && berserk_check_wielded_weapon()); case ABIL_FLY_II: if (you.duration[DUR_EXHAUSTED]) @@ -1161,7 +1158,7 @@ static bool _activate_talent(const talent& tal) } if ((tal.which == ABIL_EVOKE_BERSERK || tal.which == ABIL_TROG_BERSERK) - && !you.can_go_berserk(true, tal.which == ABIL_TROG_BERSERK)) + && !you.can_go_berserk(true)) { crawl_state.zero_turns_taken(); return (false); @@ -1745,7 +1742,7 @@ static bool _do_ability(const ability_def& abil) case ABIL_TROG_BERSERK: // Trog abilities don't use or train invocations. - go_berserk(true, true); + go_berserk(true); break; case ABIL_TROG_REGEN_MR: diff --git a/crawl-ref/source/dat/descript/items.txt b/crawl-ref/source/dat/descript/items.txt index 25277aff17..2b1dc4c4ea 100644 --- a/crawl-ref/source/dat/descript/items.txt +++ b/crawl-ref/source/dat/descript/items.txt @@ -8,7 +8,8 @@ one is skilled in the appropriate elemental magic. %%%% amulet of clarity -This amulet protects its wearer from some forms of mental confusion. +This amulet protects its wearer from some forms of mental confusion, +including being infuriated against one's will. %%%% amulet of conservation diff --git a/crawl-ref/source/misc.cc b/crawl-ref/source/misc.cc index 2cc226f127..4bac2e7ff0 100644 --- a/crawl-ref/source/misc.cc +++ b/crawl-ref/source/misc.cc @@ -2696,11 +2696,11 @@ bool scramble(void) return (true); } -bool go_berserk(bool intentional, bool no_clarity) +bool go_berserk(bool intentional) { ASSERT(!crawl_state.arena); - if (!you.can_go_berserk(intentional, no_clarity)) + if (!you.can_go_berserk(intentional)) return (false); if (Tutorial.tutorial_left) diff --git a/crawl-ref/source/misc.h b/crawl-ref/source/misc.h index 3c5cee6cbf..9f75955885 100644 --- a/crawl-ref/source/misc.h +++ b/crawl-ref/source/misc.h @@ -13,7 +13,7 @@ struct bolt; struct dist; struct activity_interrupt_data; -bool go_berserk(bool intentional, bool no_clarity = false); +bool go_berserk(bool intentional); void search_around(bool only_adjacent = false); void down_stairs(int old_level, dungeon_feature_type force_stair = DNGN_UNSEEN, diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc index 7ba87a20ff..631e04e622 100644 --- a/crawl-ref/source/player.cc +++ b/crawl-ref/source/player.cc @@ -5980,8 +5980,10 @@ bool player::can_go_berserk() const return (can_go_berserk(false)); } -bool player::can_go_berserk(bool verbose, bool no_clarity) const +bool player::can_go_berserk(bool intentional) const { + const bool verbose = intentional; + if (berserk()) { if (verbose) @@ -6016,7 +6018,7 @@ bool player::can_go_berserk(bool verbose, bool no_clarity) const return (false); } - if (!no_clarity && player_mental_clarity(true)) + if (!intentional && player_mental_clarity(true)) { if (verbose) { diff --git a/crawl-ref/source/player.h b/crawl-ref/source/player.h index ee34bd703e..c1a3c62b29 100644 --- a/crawl-ref/source/player.h +++ b/crawl-ref/source/player.h @@ -414,7 +414,7 @@ public: void attacking(actor *other); bool can_go_berserk() const; - bool can_go_berserk(bool verbose, bool no_clarity = false) const; + bool can_go_berserk(bool intentional) const; void go_berserk(bool intentional); bool berserk() const; bool can_mutate() const; -- cgit v1.2.3-54-g00ecf