summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Borowski <kilobyte@angband.pl>2009-12-29 13:38:36 +0100
committerAdam Borowski <kilobyte@angband.pl>2009-12-29 14:23:50 +0100
commit3f8334b021c123a371f0dfe8062c3a84eebba673 (patch)
tree7053abb388e3464328b75792d267513bc3c9ab0b
parent8657d1a1b6f40b7da7e970ca6e0082d04f0d1802 (diff)
downloadcrawl-ref-3f8334b021c123a371f0dfe8062c3a84eebba673.tar.gz
crawl-ref-3f8334b021c123a371f0dfe8062c3a84eebba673.zip
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.
-rw-r--r--crawl-ref/source/abl-show.cc9
-rw-r--r--crawl-ref/source/dat/descript/items.txt3
-rw-r--r--crawl-ref/source/misc.cc4
-rw-r--r--crawl-ref/source/misc.h2
-rw-r--r--crawl-ref/source/player.cc6
-rw-r--r--crawl-ref/source/player.h2
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;