diff options
author | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-10-23 17:50:10 +0000 |
---|---|---|
committer | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-10-23 17:50:10 +0000 |
commit | d01f16731de6b52c31bf8c600ccdbca515b960d7 (patch) | |
tree | 766f8d2c06689b0f5e4b17e506473a353c48db77 /crawl-ref/source/decks.cc | |
parent | 1cb88e12f39a3bc94e9182f9069b5ff8e52cffcb (diff) | |
download | crawl-ref-d01f16731de6b52c31bf8c600ccdbca515b960d7.tar.gz crawl-ref-d01f16731de6b52c31bf8c600ccdbca515b960d7.zip |
You can now Triple Draw from decks you aren't wielding.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2523 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/decks.cc')
-rw-r--r-- | crawl-ref/source/decks.cc | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/crawl-ref/source/decks.cc b/crawl-ref/source/decks.cc index 95ef24630b..1a05dea1ad 100644 --- a/crawl-ref/source/decks.cc +++ b/crawl-ref/source/decks.cc @@ -628,27 +628,41 @@ static bool check_buggy_deck(item_def& deck) return false; } -// Select a deck from inventory and draw a card from it. -bool choose_deck_and_draw() +// Choose a deck from inventory and return its slot (or -1.) +static int choose_inventory_deck( const char* prompt ) { - int slot = prompt_invent_item( "Draw from which deck?", - MT_INVLIST, OBJ_MISCELLANY, - true, true, true, 0, NULL, - OPER_EVOKE ); + const int slot = prompt_invent_item( prompt, + MT_INVLIST, OBJ_MISCELLANY, + true, true, true, 0, NULL, + OPER_EVOKE ); + if ( slot == PROMPT_ABORT ) { canned_msg(MSG_OK); - return false; + return -1; } - item_def& deck(you.inv[slot]); - if ( !is_deck(deck) ) + if ( !is_deck(you.inv[slot]) ) { mpr("That isn't a deck!"); + return -1; + } + + return slot; +} + +// Select a deck from inventory and draw a card from it. +bool choose_deck_and_draw() +{ + const int slot = choose_inventory_deck( "Draw from which deck?" ); + + if ( slot == -1 ) + { crawl_state.zero_turns_taken(); return false; } - evoke_deck(deck); + + evoke_deck(you.inv[slot]); return true; } @@ -944,14 +958,13 @@ bool deck_stack() // Draw the next three cards, discard two and pick one. bool deck_triple_draw() { - if ( !wielding_deck() ) + const int slot = choose_inventory_deck("Triple draw from which deck?"); + if ( slot == -1 ) { - mpr("You aren't wielding a deck!"); crawl_state.zero_turns_taken(); return false; } - const int slot = you.equip[EQ_WEAPON]; item_def& deck(you.inv[slot]); if (check_buggy_deck(deck)) |