summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/decks.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/decks.cc')
-rw-r--r--crawl-ref/source/decks.cc41
1 files changed, 34 insertions, 7 deletions
diff --git a/crawl-ref/source/decks.cc b/crawl-ref/source/decks.cc
index 47bedbb8fb..1f41182a3e 100644
--- a/crawl-ref/source/decks.cc
+++ b/crawl-ref/source/decks.cc
@@ -1192,12 +1192,39 @@ void evoke_deck( item_def& deck )
int brownie_points = 0;
bool allow_id = in_inventory(deck) && !item_ident(deck, ISFLAG_KNOW_TYPE);
- unsigned char flags = 0;
- card_type card = draw_top_card(deck, true, flags);
- int amusement = xom_check_card(deck, card, flags);
- deck_rarity_type rarity = deck_rarity(deck);
- CrawlHashTable &props = deck.props;
- bool no_brownie = (props["non_brownie_draws"].get_byte() > 0);
+ const deck_rarity_type rarity = deck_rarity(deck);
+ CrawlHashTable &props = deck.props;
+
+ unsigned char flags = 0;
+ card_type card = draw_top_card(deck, true, flags);
+
+ // Passive Nemelex retribution: sometimes a card gets swapped out.
+ // More likely to happen with marked decks.
+ if ( you.penance[GOD_NEMELEX_XOBEH] )
+ {
+ int c = 1;
+ if ( (flags & (CFLAG_MARKED | CFLAG_SEEN)) ||
+ props["num_marked"].get_byte() > 0 )
+ {
+ c = 3;
+ }
+ if ( random2(3000) < c * you.penance[GOD_NEMELEX_XOBEH] )
+ {
+ card_type old_card = card;
+ card = choose_from_archetype(deck_of_punishment, rarity);
+ if ( card != old_card )
+ {
+ simple_god_message(" seems to have exchanged this card "
+ "behind your back!", GOD_NEMELEX_XOBEH);
+ mprf("It's actually %s.", card_name(card));
+ you.penance[GOD_NEMELEX_XOBEH] -=
+ random2(you.penance[GOD_NEMELEX_XOBEH] / 10);
+ }
+ }
+ }
+
+ const int amusement = xom_check_card(deck, card, flags);
+ const bool no_brownie = (props["non_brownie_draws"].get_byte() > 0);
// Do these before the deck item_def object is gone.
if (flags & CFLAG_MARKED)
@@ -2670,7 +2697,7 @@ void init_deck(item_def &item)
props["cards"].new_vector(SV_BYTE).resize(item.plus);
props["card_flags"].new_vector(SV_BYTE).resize(item.plus);
- props["cards_drawn"].new_vector(SV_BYTE);
+ props["drawn_cards"].new_vector(SV_BYTE);
for (int i = 0; i < item.plus; i++)
{