summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/decks.cc
diff options
context:
space:
mode:
authorharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2007-10-23 17:50:10 +0000
committerharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2007-10-23 17:50:10 +0000
commitd01f16731de6b52c31bf8c600ccdbca515b960d7 (patch)
tree766f8d2c06689b0f5e4b17e506473a353c48db77 /crawl-ref/source/decks.cc
parent1cb88e12f39a3bc94e9182f9069b5ff8e52cffcb (diff)
downloadcrawl-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.cc39
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))