#ifndef DECKS_H
#define DECKS_H
#include "enum.h"
#include "externs.h"
enum deck_rarity_type
{
DECK_RARITY_COMMON,
DECK_RARITY_RARE,
DECK_RARITY_LEGENDARY
};
enum deck_type
{
DECK_OF_ESCAPE,
DECK_OF_DESTRUCTION,
DECK_OF_DUNGEONS,
DECK_OF_SUMMONING,
DECK_OF_WONDERS
};
enum card_flags_type
{
CFLAG_ODDITY = (1 << 0),
CFLAG_SEEN = (1 << 1),
CFLAG_MARKED = (1 << 2)
};
enum card_type
{
CARD_PORTAL, CARD_WARP, CARD_SWAP, CARD_VELOCITY,
CARD_TOMB, CARD_BANSHEE, CARD_DAMNATION, CARD_SOLITUDE, CARD_WARPWRIGHT, CARD_FLIGHT,
CARD_VITRIOL, CARD_FLAME, CARD_FROST, CARD_VENOM, CARD_HAMMER, CARD_SPARK, CARD_PAIN, CARD_TORMENT,
CARD_ELIXIR, CARD_BATTLELUST, CARD_METAMORPHOSIS, CARD_HELM, CARD_BLADE, CARD_SHADOW,
CARD_CRUSADE,
CARD_SUMMON_ANIMAL,
CARD_SUMMON_DEMON,
CARD_SUMMON_WEAPON,
CARD_SUMMON_FLYING, CARD_SUMMON_SKELETON,
CARD_SUMMON_UGLY,
CARD_SUMMON_ANY,
CARD_POTION,
CARD_FOCUS,
CARD_SHUFFLE,
CARD_EXPERIENCE,
CARD_WILD_MAGIC,
CARD_SAGE, CARD_HELIX,
CARD_WATER, CARD_GLASS, CARD_MAP, CARD_DOWSING, CARD_SPADE, CARD_TROWEL, CARD_MINEFIELD, CARD_STAIRS,
CARD_GENIE, CARD_BARGAIN, CARD_WRATH, CARD_WRAITH, CARD_XOM,
CARD_FEAST,
CARD_FAMINE,
CARD_CURSE, CARD_SWINE,
NUM_CARDS
};
const char* card_name(card_type card);
void evoke_deck(item_def& deck);
bool deck_triple_draw();
bool deck_peek();
bool deck_mark();
bool deck_stack();
bool choose_deck_and_draw();
void nemelex_shuffle_decks();
bool card_effect(card_type which_card, deck_rarity_type rarity,
unsigned char card_flags = 0, bool tell_card = true);
void draw_from_deck_of_punishment();
bool top_card_is_known(const item_def &item);
card_type top_card(const item_def &item);
bool is_deck(const item_def &item);
bool bad_deck(const item_def &item);
deck_rarity_type deck_rarity(const item_def &item);
unsigned char deck_rarity_to_color(deck_rarity_type rarity);
void init_deck(item_def &item);
int cards_in_deck(const item_def &deck);
card_type get_card_and_flags(const item_def& deck, int idx,
unsigned char& _flags);
const std::vector<card_type> get_drawn_cards(const item_def& deck);
#endif