diff options
author | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-02-04 21:39:27 +0000 |
---|---|---|
committer | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-02-04 21:39:27 +0000 |
commit | 85186cca64385dc3a8550f12f660dbd7bbe49061 (patch) | |
tree | 8ac495ed949347ed09af3c2bcced0223d96eeed1 /crawl-ref/source/decks.cc | |
parent | 22e8777cd20d3bf9a9bce64901c4838f99fe9326 (diff) | |
download | crawl-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.cc | 18 |
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); } |