Ejemplo n.º 1
0
def get_cards_for_fastest_win(cards, identity=None, full_deck=None):
    if not identity:
        identity = cards.identity
    if not full_deck:
        full_deck = cards
    points_to_win = 7
    if identity.name == "Harmony Medtech: Biomedical Pioneer":
        points_to_win = 6
    agendas = data.get_cards_of_type('agenda', cards)
    agendas = data.get_agendas_to_fastest_win(agendas, identity, points_to_win)
    if not agendas:
        return False
    actions_to_play = data.sum_over_attr("actions", agendas, convert_type=int)

    total_cost = data.sum_over_attr('cost', agendas, convert_type=int)
    start_credits = 5
    clicks_per_turn = 3
    # for now, assume player must use actions to take credits
    #turns_for_credits = max(0, total_cost - 5)
    credits_needed = max(0, total_cost - 5)
    money_makers = data.get_money_making_cards(full_deck, instant=True)
    money_makers = parse.get_full_card_list(money_makers)
    money_makers = sorted(money_makers, key=lambda card: int(card.net_cost))
    money_makers_used = []
    actions_used_for_moneymakers = 0
    for card in money_makers:
        if credits_needed < card.actions:
            break
        money_makers_used.append(card)
        credits_needed -= card.net_income
        actions_used_for_moneymakers += card.actions

    return agendas + money_makers_used
Ejemplo n.º 2
0
def get_cards_for_fastest_win(cards, identity=None, full_deck=None):
    if not identity:
        identity = cards.identity
    if not full_deck:
        full_deck = cards
    points_to_win = 7
    if identity.name == "Harmony Medtech: Biomedical Pioneer":
        points_to_win = 6
    agendas = data.get_cards_of_type('agenda', cards)
    agendas = data.get_agendas_to_fastest_win(agendas, identity, points_to_win)
    if not agendas:
        return False
    actions_to_play = data.sum_over_attr("actions", agendas, convert_type=int)

    total_cost = data.sum_over_attr('cost', agendas, convert_type=int)
    start_credits = 5
    clicks_per_turn = 3
    # for now, assume player must use actions to take credits
    #turns_for_credits = max(0, total_cost - 5)
    credits_needed = max(0, total_cost - 5)
    money_makers = data.get_money_making_cards(full_deck, instant=True)
    money_makers = parse.get_full_card_list(money_makers)
    money_makers = sorted(money_makers, key=lambda card: int(card.net_cost))
    money_makers_used = []
    actions_used_for_moneymakers = 0
    for card in money_makers:
        if credits_needed < card.actions:
            break
        money_makers_used.append(card)
        credits_needed -= card.net_income
        actions_used_for_moneymakers += card.actions

    return agendas + money_makers_used
Ejemplo n.º 3
0
def agenda_points(cards, **kwargs):
    num_agenda_points = data.sum_over_attr('agendapoints',
                                           cards,
                                           convert_type=int)
    if num_agenda_points == 0:
        return '/'
    return num_agenda_points
Ejemplo n.º 4
0
def total_out_of_faction_influence(cards, faction=None, **kwargs):
    if not faction:
        raise ValueError
    out_of_faction_cards = data.get_cards_of_attr_not_in(
        "identity", faction, cards)
    return data.sum_over_attr("loyalty",
                              out_of_faction_cards,
                              convert_type=int)
Ejemplo n.º 5
0
def average_actions_to_score_winning_agendas(cards, identity=None, **kwargs):
    points_to_win = 7
    if identity.name == "Harmony Medtech: Biomedical Pioneer":
        points_to_win = 6
    agendas = data.get_cards_of_type('agenda', cards)
    print '^'*20
    for card in agendas:
        print card.name, card.actions, card.agendapoints
    print '^'*20
    num_agendas = data.get_total_cards(agendas)
    total_actions = data.sum_over_attr('actions', agendas, convert_type=int)
    total_points = data.sum_over_attr('agendapoints', agendas, convert_type=int)
    ratio = points_to_win / float(total_points)
    #actions_per_agenda = float(total_actions) / num_agendas
    average_actions_to_score = float(total_actions) * ratio
    if average_actions_to_score == int(average_actions_to_score):
        return int(average_actions_to_score)
    return round(average_actions_to_score, 2)
Ejemplo n.º 6
0
def average_actions_to_score_winning_agendas(cards, identity=None, **kwargs):
    points_to_win = 7
    if identity.name == "Harmony Medtech: Biomedical Pioneer":
        points_to_win = 6
    agendas = data.get_cards_of_type('agenda', cards)
    print '^' * 20
    for card in agendas:
        print card.name, card.actions, card.agendapoints
    print '^' * 20
    num_agendas = data.get_total_cards(agendas)
    total_actions = data.sum_over_attr('actions', agendas, convert_type=int)
    total_points = data.sum_over_attr('agendapoints',
                                      agendas,
                                      convert_type=int)
    ratio = points_to_win / float(total_points)
    #actions_per_agenda = float(total_actions) / num_agendas
    average_actions_to_score = float(total_actions) * ratio
    if average_actions_to_score == int(average_actions_to_score):
        return int(average_actions_to_score)
    return round(average_actions_to_score, 2)
Ejemplo n.º 7
0
def average_agendas_scored_to_win(cards, identity=None, **kwargs):
    points_to_win = 7
    if identity.name == "Harmony Medtech: Biomedical Pioneer":
        points_to_win = 6
    agendas = data.get_cards_of_type('agenda', cards)
    num_agendas = data.get_total_cards(agendas)
    total_agenda_points = data.sum_over_attr('agendapoints', agendas, convert_type=int)
    points_per_agenda = float(total_agenda_points) / float(num_agendas) 
    num_scored_to_win = float(points_to_win) / points_per_agenda
    if int(num_scored_to_win) == num_scored_to_win:
        return int(num_scored_to_win)
    return round(num_scored_to_win, 2)
Ejemplo n.º 8
0
def average_agendas_scored_to_win(cards, identity=None, **kwargs):
    points_to_win = 7
    if identity.name == "Harmony Medtech: Biomedical Pioneer":
        points_to_win = 6
    agendas = data.get_cards_of_type('agenda', cards)
    num_agendas = data.get_total_cards(agendas)
    total_agenda_points = data.sum_over_attr('agendapoints',
                                             agendas,
                                             convert_type=int)
    points_per_agenda = float(total_agenda_points) / float(num_agendas)
    num_scored_to_win = float(points_to_win) / points_per_agenda
    if int(num_scored_to_win) == num_scored_to_win:
        return int(num_scored_to_win)
    return round(num_scored_to_win, 2)
Ejemplo n.º 9
0
def net_income_draw_rate(cards, full_deck=None, **kwargs):
    income_cards = data.get_money_making_cards(cards, instant=True)
    total_net_income = data.sum_over_attr('net_income', income_cards)
    total_cards = data.get_total_cards(full_deck)
    net_income_draw_rate = float(total_net_income) / total_cards
    return round(net_income_draw_rate, 2)
Ejemplo n.º 10
0
def total_cost_of_deck(cards, full_deck=None, **kwargs):
    if not full_deck:
        return False
    total_cost = data.sum_over_attr("cost", full_deck, convert_type=int)
    return total_cost
Ejemplo n.º 11
0
def total_cost(cards, **kwargs):
    total_cost = data.sum_over_attr("cost", cards, convert_type=int)
    return total_cost
Ejemplo n.º 12
0
def total_cost_without_duplicates(cards, **kwargs):
    total_cost = data.sum_over_attr("cost",
                                    cards,
                                    convert_type=int,
                                    unique=True)
    return total_cost
Ejemplo n.º 13
0
def total_net_cost_with_draw(cards, **kwargs):
    return data.sum_over_attr("net_cost_with_draw", cards, convert_type=int)
Ejemplo n.º 14
0
def total_cost(cards, **kwargs):
    total_cost = data.sum_over_attr("cost", cards, convert_type=int)
    return total_cost
Ejemplo n.º 15
0
def total_cost_of_deck(cards, full_deck=None, **kwargs):
    if not full_deck:
        return False
    total_cost = data.sum_over_attr("cost", full_deck, convert_type=int)
    return total_cost
Ejemplo n.º 16
0
def total_memory_units_without_duplicates(cards, **kwargs):
    total = data.sum_over_attr("memory", cards, convert_type=int, unique=True)
    return total
Ejemplo n.º 17
0
def total_memory_units_without_duplicates(cards, **kwargs):
    total = data.sum_over_attr("memory", cards, convert_type=int, unique=True)
    return total
Ejemplo n.º 18
0
def net_income_draw_rate(cards, full_deck=None, **kwargs):
    income_cards = data.get_money_making_cards(cards, instant=True)
    total_net_income = data.sum_over_attr('net_income', income_cards)
    total_cards = data.get_total_cards(full_deck)
    net_income_draw_rate = float(total_net_income) / total_cards
    return round(net_income_draw_rate, 2)
Ejemplo n.º 19
0
def total_cost_without_duplicates(cards, **kwargs):
    total_cost = data.sum_over_attr("cost", cards, convert_type=int, unique=True)
    return total_cost
Ejemplo n.º 20
0
def total_net_cost_with_draw(cards, **kwargs):
    return data.sum_over_attr("net_cost_with_draw", cards, convert_type=int)
Ejemplo n.º 21
0
def total_out_of_faction_influence(cards, faction=None, **kwargs):
    if not faction:
        raise ValueError
    out_of_faction_cards = data.get_cards_of_attr_not_in("identity", faction, cards)
    return data.sum_over_attr("loyalty", out_of_faction_cards, convert_type=int)
Ejemplo n.º 22
0
def agenda_points(cards, **kwargs):
    num_agenda_points = data.sum_over_attr('agendapoints', cards, convert_type=int)
    if num_agenda_points == 0:
        return '/'
    return num_agenda_points
Ejemplo n.º 23
0
def number_of_agenda_points(deck, **kwargs):
    agendas = data.get_cards_of_attr("type", "agenda", deck)
    total = data.sum_over_attr("agendapoints", agendas)
    return ("Number of agenda points", total)
Ejemplo n.º 24
0
def total_memory_units(cards, **kwargs):
    total = data.sum_over_attr("memory", cards, convert_type=int)
    return total
Ejemplo n.º 25
0
def number_of_agenda_points(deck, **kwargs):
    agendas = data.get_cards_of_attr("type", "agenda", deck)
    total = data.sum_over_attr("agendapoints", agendas)
    return ("Number of agenda points", total)
Ejemplo n.º 26
0
def total_memory_units(cards, **kwargs):
    total = data.sum_over_attr("memory", cards, convert_type=int)
    return total