summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/decks.cc
diff options
context:
space:
mode:
authorharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2009-02-04 21:39:27 +0000
committerharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2009-02-04 21:39:27 +0000
commit85186cca64385dc3a8550f12f660dbd7bbe49061 (patch)
tree8ac495ed949347ed09af3c2bcced0223d96eeed1 /crawl-ref/source/decks.cc
parent22e8777cd20d3bf9a9bce64901c4838f99fe9326 (diff)
downloadcrawl-ref-85186cca64385dc3a8550f12f660dbd7bbe49061.tar.gz
crawl-ref-85186cca64385dc3a8550f12f660dbd7bbe49061.zip
Fix Triple Draw not updating num_marked on a deck. Fixes [2516231].
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8895 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/decks.cc')
-rw-r--r--crawl-ref/source/decks.cc18
1 files changed, 16 insertions, 2 deletions
diff --git a/crawl-ref/source/decks.cc b/crawl-ref/source/decks.cc
index 5007625023..0bc58a540a 100644
--- a/crawl-ref/source/decks.cc
+++ b/crawl-ref/source/decks.cc
@@ -1085,7 +1085,7 @@ bool deck_triple_draw()
card_type card = _draw_top_card(deck, false, _flags);
draws.push_back(card);
- flags.push_back(_flags | CFLAG_SEEN | CFLAG_MARKED);
+ flags.push_back(_flags);
}
mpr("You draw... (choose one card)");
@@ -1109,8 +1109,21 @@ bool deck_triple_draw()
// Note how many cards were removed from the deck.
deck.plus2 += num_to_draw;
+
+ // Don't forget to update the number of marked ones, too.
+ // But don't reduce the number of non-brownie draws.
+ char num_marked_left = deck.props["num_marked"].get_byte();
for (int i = 0; i < num_to_draw; ++i)
+ {
_remember_drawn_card(deck, draws[i], false);
+ if (flags[i] & CFLAG_MARKED)
+ {
+ ASSERT(num_marked_left > 0);
+ --num_marked_left;
+ }
+ }
+ deck.props["num_marked"] = num_marked_left;
+
you.wield_change = true;
// Make deck disappear *before* the card effect, since we
@@ -1126,7 +1139,8 @@ bool deck_triple_draw()
}
// Note that card_effect() might cause you to unwield the deck.
- card_effect(draws[selected], rarity, flags[selected], false);
+ card_effect(draws[selected], rarity,
+ flags[selected] | CFLAG_SEEN | CFLAG_MARKED, false);
return (true);
}