summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/religion.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/religion.cc')
-rw-r--r--crawl-ref/source/religion.cc32
1 files changed, 28 insertions, 4 deletions
diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc
index b3d48ea41b..76371d0065 100644
--- a/crawl-ref/source/religion.cc
+++ b/crawl-ref/source/religion.cc
@@ -67,6 +67,7 @@
#include "spl-book.h"
#include "spl-cast.h"
#include "spl-util.h"
+#include "stash.h"
#include "state.h"
#include "stuff.h"
#include "terrain.h"
@@ -742,6 +743,13 @@ static bool is_risky_sacrifice(const item_def& item)
static bool confirm_pray_sacrifice()
{
+ if (Options.stash_tracking == STM_EXPLICIT
+ && is_stash(you.x_pos, you.y_pos))
+ {
+ mpr("You can't sacrifice explictly marked stashes.");
+ return false;
+ }
+
for ( int i = igrd[you.x_pos][you.y_pos]; i != NON_ITEM;
i = mitm[i].link )
{
@@ -749,9 +757,9 @@ static bool confirm_pray_sacrifice()
if ( is_risky_sacrifice(item) ||
has_warning_inscription(item, OPER_PRAY) )
{
- std::string prompt = "Really sacrifice ";
+ std::string prompt = "Really sacrifice stack with ";
prompt += item.name(DESC_NOCAP_A);
- prompt += '?';
+ prompt += " in it?";
if ( !yesno(prompt.c_str(), false, 'n') )
return false;
}
@@ -2837,8 +2845,10 @@ void offer_items()
int i = igrd[you.x_pos][you.y_pos];
while (i != NON_ITEM)
{
- const int next = mitm[i].link; // in case we can't get it later.
- const int value = item_value( mitm[i], true );
+ item_def &item(mitm[i]);
+ const int next = item.link; // in case we can't get it later.
+ const int value = item_value( item, true );
+
if (!god_likes_item(you.religion, mitm[i]))
{
@@ -2855,6 +2865,20 @@ void offer_items()
switch (you.religion)
{
case GOD_NEMELEX_XOBEH:
+ if ( is_risky_sacrifice(item) ||
+ item.inscription.find("=p") != std::string::npos)
+ {
+ std::string msg = "Really sacrifice ";
+ msg += item.name(DESC_NOCAP_A);
+ msg += "?";
+
+ if (!yesno(msg.c_str()))
+ {
+ i = next;
+ continue;
+ }
+ }
+
you.sacrifice_value[mitm[i].base_type] += value;
if (you.attribute[ATTR_CARD_COUNTDOWN] && random2(800) < value)
{