summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/religion.cc
diff options
context:
space:
mode:
authorJude Brown <bookofjude@users.sourceforge.net>2010-01-12 15:26:34 +1000
committerJude Brown <bookofjude@users.sourceforge.net>2010-01-12 15:26:34 +1000
commit87f6bc7bfb79dd38454d52945ed1bef5cbb5ffbd (patch)
tree356e2515516aed51b2a69f9c06df9f23700d35f4 /crawl-ref/source/religion.cc
parentacabbaacbc91db8c6b711b85e1f68694b42ed829 (diff)
downloadcrawl-ref-87f6bc7bfb79dd38454d52945ed1bef5cbb5ffbd.tar.gz
crawl-ref-87f6bc7bfb79dd38454d52945ed1bef5cbb5ffbd.zip
A quick "god gift" Wizard function.
It will probably do nasty things to piety and god gift timeouts, but it's useful for quickly checking what acquirements can be got for different gods, and also testing Okawaru's missile acquirement (which wasn't working with slings before, but is now.)
Diffstat (limited to 'crawl-ref/source/religion.cc')
-rw-r--r--crawl-ref/source/religion.cc37
1 files changed, 19 insertions, 18 deletions
diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc
index 0c79623409..c7796a09d8 100644
--- a/crawl-ref/source/religion.cc
+++ b/crawl-ref/source/religion.cc
@@ -1169,13 +1169,13 @@ static const item_def* _find_missile_launcher(int skill)
return (NULL);
}
-static bool _need_missile_gift()
+static bool _need_missile_gift(bool forced)
{
const int best_missile_skill = best_skill(SK_SLINGS, SK_THROWING);
const item_def *launcher = _find_missile_launcher(best_missile_skill);
- return (you.piety > 80
+ return ((you.piety > 80
&& random2( you.piety ) > 70
- && one_chance_in(8)
+ && one_chance_in(8) || forced)
&& you.skills[ best_missile_skill ] >= 8
&& (launcher || best_missile_skill == SK_THROWING));
}
@@ -1260,13 +1260,13 @@ static void _show_pure_deck_chances()
}
#endif
-static void _give_nemelex_gift()
+static void _give_nemelex_gift(bool forced = false)
{
// Nemelex will give at least one gift early.
if (!you.num_gifts[GOD_NEMELEX_XOBEH]
&& x_chance_in_y(you.piety + 1, piety_breakpoint(1))
|| one_chance_in(3) && x_chance_in_y(you.piety + 1, MAX_PIETY)
- && !you.attribute[ATTR_CARD_COUNTDOWN])
+ && !you.attribute[ATTR_CARD_COUNTDOWN] || forced)
{
misc_item_type gift_type;
@@ -1995,7 +1995,7 @@ static void _delayed_gift_callback(const mgen_data &mg, int &midx,
take_note(Note(NOTE_GOD_GIFT, you.religion));
}
-static void _do_god_gift(bool prayed_for)
+void do_god_gift(bool prayed_for, bool forced)
{
ASSERT(you.religion != GOD_NO_GOD);
@@ -2013,7 +2013,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
- || (prayed_for && you.religion == GOD_ZIN || you.religion == GOD_JIYVA))
+ || (prayed_for && you.religion == GOD_ZIN || you.religion == GOD_JIYVA)
+ || forced)
{
bool success = false;
@@ -2035,13 +2036,13 @@ static void _do_god_gift(bool prayed_for)
break;
case GOD_NEMELEX_XOBEH:
- _give_nemelex_gift();
+ _give_nemelex_gift(forced);
break;
case GOD_OKAWARU:
case GOD_TROG:
- if (you.piety > 130
- && random2(you.piety) > 120
+ if ((you.piety > 130
+ && random2(you.piety) > 120 || forced)
&& one_chance_in(4))
{
if (you.religion == GOD_TROG
@@ -2069,7 +2070,7 @@ static void _do_god_gift(bool prayed_for)
break;
}
- if (_need_missile_gift())
+ if (_need_missile_gift(forced))
{
success = acquirement(OBJ_MISSILES, you.religion);
if (success)
@@ -2086,7 +2087,7 @@ static void _do_god_gift(bool prayed_for)
break;
case GOD_YREDELEMNUL:
- if (random2(you.piety) >= piety_breakpoint(2) && one_chance_in(4))
+ if (random2(you.piety) >= piety_breakpoint(2) && one_chance_in(4) || forced)
{
// The maximum threshold occurs at piety_breakpoint(5).
int threshold = (you.piety - piety_breakpoint(2)) * 20 / 9;
@@ -2098,7 +2099,7 @@ static void _do_god_gift(bool prayed_for)
break;
case GOD_JIYVA:
- if (prayed_for && jiyva_grant_jelly())
+ if (prayed_for && jiyva_grant_jelly() || forced)
{
int jelly_count = 0;
for (radius_iterator ri(you.pos(), 9); ri; ++ri)
@@ -2164,7 +2165,7 @@ static void _do_god_gift(bool prayed_for)
&& !you.had_book[BOOK_UNLIFE])
gift = BOOK_UNLIFE;
}
- else if (you.piety > 160 && random2(you.piety) > 100)
+ else if (you.piety > 160 && random2(you.piety) > 100 || forced)
{
if (you.religion == GOD_SIF_MUNA)
gift = OBJ_RANDOM;
@@ -2462,7 +2463,7 @@ void pray()
}
if (!was_praying)
- _do_god_gift(true);
+ do_god_gift(true);
dprf("piety: %d (-%d)", you.piety, you.piety_hysteresis );
}
@@ -3690,7 +3691,7 @@ void gain_piety(int original_gain)
|| you.piety > 150 && one_chance_in(3)
|| you.piety > 100 && one_chance_in(3))
{
- _do_god_gift(false);
+ do_god_gift();
return;
}
}
@@ -3701,7 +3702,7 @@ void gain_piety(int original_gain)
if (you.piety >= MAX_PIETY
|| you.piety > 150 && one_chance_in(5))
{
- _do_god_gift(false);
+ do_god_gift();
return;
}
}
@@ -3796,7 +3797,7 @@ void gain_piety(int original_gain)
holy_beings_attitude_change();
}
- _do_god_gift(false);
+ do_god_gift();
}
// Is the destroyed weapon valuable enough to gain piety by doing so?