summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Moore <neil@s-z.org>2014-08-03 19:33:50 -0400
committerNeil Moore <neil@s-z.org>2014-08-03 19:34:15 -0400
commitf68c32e264f3f32ed30a177f0118c6134391cffe (patch)
treeace55598d1e98a6ce89e40f06c123cee1fffa461
parent9858ce8f8c97380418f4b12eb725e7a9b81d5e3d (diff)
downloadcrawl-ref-f68c32e264f3f32ed30a177f0118c6134391cffe.tar.gz
crawl-ref-f68c32e264f3f32ed30a177f0118c6134391cffe.zip
Allow autosacrifice on altars and when silenced (minmay)
In the former case, without displaying the normal altar prompts.
-rw-r--r--crawl-ref/source/delay.cc2
-rw-r--r--crawl-ref/source/godprayer.cc8
-rw-r--r--crawl-ref/source/godprayer.h2
-rw-r--r--crawl-ref/source/travel.cc16
4 files changed, 10 insertions, 18 deletions
diff --git a/crawl-ref/source/delay.cc b/crawl-ref/source/delay.cc
index 2cfe33d0f0..692c498797 100644
--- a/crawl-ref/source/delay.cc
+++ b/crawl-ref/source/delay.cc
@@ -1296,7 +1296,7 @@ static void _handle_run_delays(const delay_queue_item &delay)
if (lev && lev->sacrificeable(you.pos()))
{
const interrupt_block block_interrupts;
- pray();
+ pray(false);
return;
}
}
diff --git a/crawl-ref/source/godprayer.cc b/crawl-ref/source/godprayer.cc
index a4303ce00f..23cb0fac3f 100644
--- a/crawl-ref/source/godprayer.cc
+++ b/crawl-ref/source/godprayer.cc
@@ -375,21 +375,21 @@ static void _zen_meditation()
* Pray. (To your god, or the god of the altar you're at, or to Beogh, if
* you're an orc being preached at.)
*/
-void pray()
+void pray(bool allow_altar_prayer)
{
// only successful prayer takes time
you.turn_is_over = false;
// try to pray to an altar (if any is present)
- if (_altar_pray_or_convert())
+ if (allow_altar_prayer && _altar_pray_or_convert())
{
you.turn_is_over = true;
return;
}
// convert to beogh via priest.
- if (you_worship(GOD_NO_GOD) && env.level_state & LSTATE_BEOGH
- && can_convert_to_beogh())
+ if (allow_altar_prayer && you_worship(GOD_NO_GOD)
+ && (env.level_state & LSTATE_BEOGH) && can_convert_to_beogh())
{
// TODO: deduplicate this with the code in _altar_pray_or_convert.
you.turn_is_over = true;
diff --git a/crawl-ref/source/godprayer.h b/crawl-ref/source/godprayer.h
index b865da16ea..c097c39a86 100644
--- a/crawl-ref/source/godprayer.h
+++ b/crawl-ref/source/godprayer.h
@@ -9,7 +9,7 @@
#include "religion-enum.h"
string god_prayer_reaction();
-void pray();
+void pray(bool allow_altar_prayer = true);
piety_gain_t sacrifice_item_stack(const item_def& item, int *js = 0,
int quantity = 0);
diff --git a/crawl-ref/source/travel.cc b/crawl-ref/source/travel.cc
index 5a53ebf797..4fc4564afa 100644
--- a/crawl-ref/source/travel.cc
+++ b/crawl-ref/source/travel.cc
@@ -908,13 +908,6 @@ void explore_pickup_event(int did_pickup, int tried_pickup)
}
}
-static bool _can_sacrifice(const coord_def p)
-{
- const dungeon_feature_type feat = grd(p);
- return !you.cannot_speak()
- && (!feat_is_altar(feat) || feat_is_player_altar(feat));
-}
-
static bool _sacrificeable_at(const coord_def& p)
{
for (stack_iterator si(p, true); si; ++si)
@@ -1040,7 +1033,7 @@ command_type travel()
if ((stack && _prompt_stop_explore(ES_GREEDY_VISITED_ITEM_STACK)
|| sacrificeable && _prompt_stop_explore(ES_GREEDY_SACRIFICEABLE))
&& (Options.auto_sacrifice != AS_YES || !sacrificeable
- || stack || !_can_sacrifice(newpos)))
+ || stack))
{
explore_stopped_pos = newpos;
stop_running();
@@ -3035,7 +3028,7 @@ void start_explore(bool grab_items)
&& (Options.auto_sacrifice == AS_YES
|| Options.auto_sacrifice == AS_BEFORE_EXPLORE)))
{
- pray();
+ pray(false);
}
}
@@ -3059,10 +3052,9 @@ void start_explore(bool grab_items)
if ((Options.auto_sacrifice == AS_YES
|| Options.auto_sacrifice == AS_BEFORE_EXPLORE
|| Options.auto_sacrifice == AS_PROMPT
- && yesno("Do you want to sacrifice the items here? ", true, 'n'))
- && _can_sacrifice(you.pos()))
+ && yesno("Do you want to sacrifice the items here? ", true, 'n')))
{
- pray();
+ pray(false);
}
else if (Options.auto_sacrifice == AS_PROMPT_IGNORE)
{