示例#1
0
    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
示例#3
0
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
示例#4
0
    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
示例#5
0
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
示例#6
0
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