コード例 #1
0
ファイル: heuristics.py プロジェクト: robdennis/cuesbey
    def get(cls, card):
        """
        if the card has phyrexian mana in the cost, often designers
        will put in on curve as if people will always pay life and put it in
        a colorless section
        """

        if not card.mana_cost or not '/P' in card.mana_cost:
            return

        parsed_cost = parse_mana_cost(card.mana_cost)
        modified_cost = [sym for sym in parsed_cost if '/P' not in sym]

        heuristic = dict(
            mana_cost=stitch_mana_cost(modified_cost),
            colors=card.estimate_colors(modified_cost)
        )

        num_phyrexian_symbols = len(parsed_cost) - len(modified_cost)
        heuristic['converted_mana_cost'] = (card.converted_mana_cost -
                                            num_phyrexian_symbols)

        return {
            cls.key: heuristic
        }
コード例 #2
0
ファイル: heuristics.py プロジェクト: robdennis/cuesbey
    def get(cls, card):
        """
        this card has a triggered ability when cycled that could be
        considered as the "real" mana cost
        """
        cycling_text = (r"\((?P<mana_cost>\{.+\}),\s+"
                        r"Discard this card\: Draw a card\.\)\n\n"
                        r"When you cycle %s(?:.+"
                        r"you may pay (?P<extra_cost>\{.+\}))?.+$" % card.name)
        cycling_match = re.search(cycling_text, card.text, re.I)
        if not cycling_match:
            return

        results = cycling_match.groupdict()
        parsed_cost = parse_mana_cost(results['mana_cost'])
        if results.get('extra_cost'):
            parsed_cost = merge_mana_costs(parsed_cost, results['extra_cost'])

        _cyc = dict(
            mana_cost=stitch_mana_cost(parsed_cost),
            converted_mana_cost=estimate_cmc(parsed_cost)
        )

        return {
            cls.key: _cyc
        }
コード例 #3
0
ファイル: test_cards.py プロジェクト: robdennis/cuesbey
 def test_parse_mana_cost(self):
     self.assertEqual(['5'], parse_mana_cost("{5}"))
     self.assertEqual(['5'], Card.get('Batterskull').parsed_mana_cost)
     self.assertEqual(['3', 'U/R', 'B'], Card.get('Slave of Bolas').parsed_mana_cost)
     self.assertEqual(['3', 'U/P'], Card.get('Phyrexian Metamorph').parsed_mana_cost)
コード例 #4
0
ファイル: models.py プロジェクト: robdennis/cuesbey
 def parsed_mana_cost(self):
     return parse_mana_cost(self.mana_cost)