def get_cmr_pack(): # Commander Legends pack distribution pack = [] # Get 1 foil # Get a random card of weighted random rarity, found in booster packs. # If the rarity is mythic, the foil can also be # one of the 32 reprint commanders only found in foil etched versions. card = st.get_random_card( f's:cmr (is:booster or (is:reprint frame:etched))' f' r:{random.choices(["m", "r", "u", "c"], [1, 8, 23, 88])[0]}') # There is a 50% chance a legendary foil # will be replaced with a foil etched version. if 'Legendary' in card['type_line'] and \ 'Creature' in card['type_line']: if random.randint(0, 1) == 1: card = st.search_for_cards( f's:cmr {card["name"]} frame:etched')[0] pack += [card] # Add 2 legendary cards of any rarity rarities = random.choices(['m', 'r', 'u'], [1, 8, 23], k=2) legendary_card_1 = st.get_random_card( f'set:{set_code} t:legendary is:booster r:{rarities[0]}') pack += [ legendary_card_1, st.get_random_card(f'set:{set_code} t:legendary is:booster' f' -"{legendary_card_1["name"]}"' f' r:{rarities[1]}') ] # Add a non-legendary rare or mythic (~14% chance of Mythic) pack += [ st.get_random_card(f'set:{set_code} -t:legendary is:booster' f' r={random.choices(["m", "r"], [1, 6])[0]}') ] # Add 3 uncommons cards = st.search_for_cards( f'set:{set_code} r=u -t:legendary is:booster') pack += random.sample(list(cards), 3) # Add 13 commons cards = st.search_for_cards( f'set:{set_code} r=c is:booster -"Prismatic Piper"') # Prismatic Piper sometimes replaces one of the commons (~16.7% chance) if random.randint(1, 6) == 1: commons = random.sample(list(cards), 12) pack += [st.get_card("The Prismatic Piper")] else: commons = random.sample(list(cards), 13) pack += commons return pack
def create_random_commander_deck(query='', verbose=False, deck_name=''): """Creates a random commander deck for use in TTS""" if 'is:commander' not in query: query = f'({query}) AND is:commander' if verbose: print(f'Query: {query}') random_commander = get_random_card(q=query) print(f'Building deck for commander: {random_commander["name"]}') project_config = configparser.ConfigParser() project_config.read('config.ini') pf = project_config['Main'].get('deckname_prefix') deck_name = deck_name or f'{pf} {random_commander["name"].split(" //")[0]}' deck_array = get_edhrec_average_deck(random_commander) if not deck_array: return None, '' decklist = get_collection(deck_array) return decklist, deck_name
def get_pack(set_code): # Get a rare or mythic (~14% chance of Mythic) if random.randint(0, 7) == 7: rare_card = st.get_random_card(f'set:{set_code} r=m in:booster') else: rare_card = st.get_random_card(f'set:{set_code} r=r in:booster') pack = [rare_card] # Get 3 uncommons cards = st.search_for_cards(f'set:{set_code} r=u in:booster') uncommons = random.sample(list(cards), 3) pack += uncommons # Get 10 commons cards = st.search_for_cards(f'set:{set_code} r=c in:booster') commons = random.sample(list(cards), 10) pack += commons return pack
def get_default_pack(): # The default pack distribution pack = [] # Add 1 basic land pack += [st.get_random_card(f'set:{set_code} is:booster t:basic')] # Add a rare or mythic (~14% chance of Mythic) pack += [ st.get_random_card(f'set:{set_code} is:booster ' f'r={random.choices(["m", "r"], [1, 6])[0]}') ] # Add 3 uncommons cards = st.search_for_cards(f'set:{set_code} r=u is:booster') pack += random.sample(list(cards), 3) # Add 10 commons cards = st.search_for_cards(f'set:{set_code} r=c is:booster -t:basic') pack += random.sample(list(cards), 10) return pack
def get_pack(set_code='ISD'): pack = [] # Get a rare or mythic get_mythic = random.randint(0, 7) == 7 if get_mythic: rare_card = st.get_random_card(f'set:{set_code} r=m in:booster') if not get_mythic or not rare_card: rare_card = st.get_random_card(f'set:{set_code} r=r in:booster') pack.append(rare_card) # Get 3 uncommons cards = st.search_for_cards(f'set:{set_code} r=u in:booster') uncommons = random.sample(list(cards), 3) pack += uncommons # Get 10 commons cards = st.search_for_cards(f'set:{set_code} r=c in:booster') commons = random.sample(list(cards), 10) pack += commons # print(pack) return pack
def create_random_commander_deck(q='', verbose=False, deckname=''): '''Creates a random commander deck for use in TTS''' query = q if 'is:commander' not in query: query = f'({query}) AND is:commander' random_commander = scryfall_tools.get_random_card(q=query) if verbose: print(f'Building deck for commander: {random_commander["name"]}') deck_name = deckname or f'(EDH) {random_commander["name"].split(" //")[0]}' deck_dict = get_EDHREC_average_deck(random_commander) if not deck_dict: return None, '' decklist = scryfall_tools.get_collection(deck_dict) return decklist, deck_name