summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/abl-show.cc2
-rw-r--r--crawl-ref/source/acr.cc13
-rw-r--r--crawl-ref/source/religion.cc25
3 files changed, 23 insertions, 17 deletions
diff --git a/crawl-ref/source/abl-show.cc b/crawl-ref/source/abl-show.cc
index d381b7a77d..1e3bf2b0c8 100644
--- a/crawl-ref/source/abl-show.cc
+++ b/crawl-ref/source/abl-show.cc
@@ -1319,6 +1319,8 @@ static bool do_ability(const ability_def& abil)
// up to (60 + 33)/3 = 31
const int pow = ( 2*skill_bump(SK_INVOCATIONS) + you.piety / 6 ) / 3;
start_delay(DELAY_RECITE, 3, pow, you.hp);
+
+ exercise( SK_INVOCATIONS, (one_chance_in(3)? 2 : 1) );
break;
}
case ABIL_ZIN_SMITING:
diff --git a/crawl-ref/source/acr.cc b/crawl-ref/source/acr.cc
index f5ad7402b4..77f8ea1035 100644
--- a/crawl-ref/source/acr.cc
+++ b/crawl-ref/source/acr.cc
@@ -2692,17 +2692,10 @@ static void decrement_durations()
if (you.duration[DUR_PIETY_POOL] && one_chance_in(5))
{
you.duration[DUR_PIETY_POOL]--; // decrease even if piety at maximum
- if (you.piety < 200)
- {
-#if DEBUG_DIAGNOSTICS || DEBUG_SACRIFICE || DEBUG_PIETY
- mpr("Piety increases by 1 due to piety pool.", MSGCH_DIAGNOSTICS);
-#endif
- you.piety++;
- }
+ gain_piety(1);
+
#if DEBUG_DIAGNOSTICS || DEBUG_SACRIFICE || DEBUG_PIETY
- else
- mpr("Piety already at maximum and fails to increase "
- "from piety pool.", MSGCH_DIAGNOSTICS);
+ mpr("Piety increases by 1 due to piety pool.", MSGCH_DIAGNOSTICS);
if (!you.duration[DUR_PIETY_POOL])
mpr("Piety pool is now empty.", MSGCH_DIAGNOSTICS);
diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc
index ea25b302fc..6195816558 100644
--- a/crawl-ref/source/religion.cc
+++ b/crawl-ref/source/religion.cc
@@ -744,8 +744,8 @@ static void do_god_gift(bool prayed_for)
// Consider a gift if we don't have a timeout and weren't
// already praying when we prayed.
- if (!player_under_penance()
- && (!you.gift_timeout || you.religion == GOD_ZIN))
+ if (!player_under_penance() && !you.gift_timeout
+ || you.religion == GOD_ZIN)
{
bool success = false;
@@ -3334,7 +3334,22 @@ void offer_items()
}
int estimated_piety = you.piety + donation_value;
- std::string result = god_name(GOD_ZIN) + " will soon be ";
+
+ you.duration[DUR_PIETY_POOL] += donation_value;
+ if (you.duration[DUR_PIETY_POOL] > 500)
+ you.duration[DUR_PIETY_POOL] = 500;
+
+ if (you.penance[GOD_ZIN])
+ {
+ if (estimated_piety >= you.penance[GOD_ZIN])
+ mpr("You feel that soon you will be absolved of all your sins.");
+ else
+ mpr("You feel that soon your burden of sins will be lighter.");
+ return;
+ }
+
+ std::string result = "You feel that " + god_name(GOD_ZIN)
+ + " will soon be ";
result +=
(estimated_piety > 130) ? "exalted by your worship" :
@@ -3351,10 +3366,6 @@ void offer_items()
result += ".";
mpr(result.c_str());
-
- you.duration[DUR_PIETY_POOL] += donation_value;
- if (you.duration[DUR_PIETY_POOL] > 500)
- you.duration[DUR_PIETY_POOL] = 500;
return; // doesn't accept anything else for sacrifice
}