Пример #1
0
    def test_find_returns_card(self):
        with vcr.use_cassette('fixtures/choice_of_damnations.yaml'):
            card = Card.find(88803)

            self.assertEqual('Choice of Damnations', card.name)
            self.assertEqual('{5}{B}', card.mana_cost)
            self.assertEqual(6, card.cmc)
            self.assertEqual('Sorcery — Arcane', card.type)
            self.assertTrue('Black' in card.colors)
            self.assertTrue('Sorcery' in card.types)
            self.assertTrue('Arcane' in card.subtypes)
            self.assertEqual('Rare', card.rarity)
            self.assertEqual('SOK', card.set)
            self.assertEqual("Target opponent chooses a number. You may have that player lose that much life. If you don't, that player sacrifices all but that many permanents.", card.text)
            self.assertEqual("\"Life is a series of choices between bad and worse.\"\n—Toshiro Umezawa", card.flavor)
            self.assertEqual('Tim Hildebrandt', card.artist)
            self.assertEqual('62', card.number)
            self.assertEqual(88803, card.multiverse_id)
            self.assertEqual('http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=88803&type=card', card.image_url)
            self.assertTrue(len(card.rulings) > 0)
            self.assertTrue({"name":"Scelta della Dannazione","language":"Italian","multiverseid":105393} in card.foreign_names)
            self.assertTrue('SOK' in card.printings)
            self.assertEqual("Target opponent chooses a number. You may have that player lose that much life. If you don't, that player sacrifices all but that many permanents.", card.original_text)
            self.assertEqual('Sorcery — Arcane', card.original_type)            
            self.assertTrue({"format":"Commander","legality":"Legal"} in card.legalities)
            self.assertEqual('1c4aab072d52d283e902f2302afa255b39e0794b', card.id)
Пример #2
0
    def exchangeRareForToken(self, playerId, cardId):
        card = False
        try:
            card = Card.find(cardId)
        except:
            pass
        if not card or (card.rarity != 'Rare'
                        and card.rarity != 'Mythic Rare'):
            return False

        playerInfo = self.getPlayerInfo(playerId)
        if not playerInfo:
            return False

        cardTokenValue = 2 if card and card.rarity == 'Mythic Rare' else 1
        playerInfo.rareTokens += cardTokenValue

        rare = next((r for r in self.rarePool if r.id == cardId), False)
        if rare:
            rare.count += 1
        else:
            self.rarePool += [self.RarePoolCard(cardId)]

        self.db.save()
        return True
Пример #3
0
    def test_find_returns_card(self):
        with vcr.use_cassette('fixtures/choice_of_damnations.yaml'):
            card = Card.find(88803)

            self.assertEqual('Choice of Damnations', card.name)
            self.assertEqual('{5}{B}', card.mana_cost)
            self.assertEqual(6, card.cmc)
            self.assertEqual('Sorcery — Arcane', card.type)
            self.assertTrue('Black' in card.colors)
            self.assertEqual(['B'], card.color_identity)
            self.assertTrue('Sorcery' in card.types)
            self.assertTrue('Arcane' in card.subtypes)
            self.assertEqual('Rare', card.rarity)
            self.assertEqual('SOK', card.set)
            self.assertEqual('Saviors of Kamigawa', card.set_name)
            self.assertEqual("Target opponent chooses a number. You may have that player lose that much life. If you don't, that player sacrifices all but that many permanents.", card.text)
            self.assertEqual("\"Life is a series of choices between bad and worse.\"\n—Toshiro Umezawa", card.flavor)
            self.assertEqual('Tim Hildebrandt', card.artist)
            self.assertEqual('62', card.number)
            self.assertEqual(88803, card.multiverse_id)
            self.assertEqual('http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=88803&type=card', card.image_url)
            self.assertTrue(len(card.rulings) > 0)
            self.assertTrue({"name":"Scelta della Dannazione","language":"Italian","multiverseid":105393, "imageUrl":"http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=105393&type=card"} in card.foreign_names)
            self.assertTrue('SOK' in card.printings)
            self.assertEqual("Target opponent chooses a number. You may have that player lose that much life. If you don't, that player sacrifices all but that many permanents.", card.original_text)
            self.assertEqual('Sorcery — Arcane', card.original_type)            
            self.assertTrue({"format":"Commander","legality":"Legal"} in card.legalities)
            self.assertEqual('1c4aab072d52d283e902f2302afa255b39e0794b', card.id)
Пример #4
0
async def on_message(message):
        # we do not want the bot to reply to itself
        if message.author == client.user:
                return
        if message.content.startswith('!magic'):
                msg_com = message.content.split('-')
                msg_com.pop(0)
                for msg in msg_com:
                        if '-help' in msg.lower():
                                print('help')
                                await client.send_message(message.channel,'Magic Card Bot \n --help : This message displaying \n -s_reg : Followed by a string will search that string \n -m_uid : Searchs cards by multivesrse id \n -s_adv : Not currently finished')
                        elif 'm_uid' in  msg.lower():
                                print(msg[6:])
                                card_m = Card.find(msg[6:])
                                print(http_address(card_m.set_name,card_m.name))
                                await client.send_message(message.channel,http_address(card_m.set_name,card_m.name))
                                print(http_image(card_m.multiverse_id))
                                await client.send_message(message.channel,http_image(card_m.multiverse_id))
                        elif 's_reg' in msg.lower():
                                print(http_parse(msg[6:]))
                                card_s = Card.where(name=msg[6:]).all()
                                for s_card in card_s:
                                        print(http_address(s_card.set_name,s_card.name))
                                        await client.send_message(message.channel,http_address(s_card.set_name,s_card.name))
                                        print(http_image(s_card.multiverse_id))
                                        await client.send_message(message.channel,http_image(s_card.multiverse_id))
                        elif 's_adv' in msg.lower():
                                await client.send_message(message.channel,'This command is disabled')
                        else:
                                print('RIP something went wrong')
                                await client.send_message(message.channel, 'RIP something went wrong')
Пример #5
0
 def get(self, request):
     test_card = Card.find(386616)
     # Additional context use to populate spans set in cache to avoid redundant queries
     context = {
         "card": test_card,
         "card_type_total": len(cache.get("card_type_total")),
         "card_subtype_total": len(cache.get("card_subtype_total"))
     }
     return render(request, self.template_name, context)
Пример #6
0
def determine_set(file):
	mtg_set = "F**K"

	deck = parse_json(sys.argv[1]+file)
	mb = deck['mainboard']

	for card in mb:
		printings = Card.find(card).printings
		if 1 == len(printings):
			mtg_set = printings[0]
			break
	
	print(mtg_set)
	return mtg_set
Пример #7
0
    def test_find_returns_card(self):
        with vcr.use_cassette('fixtures/choice_of_damnations.yaml'):
            card = Card.find(88803)

            self.assertEqual('Choice of Damnations', card.name)
            self.assertEqual('{5}{B}', card.mana_cost)
            self.assertEqual(6, card.cmc)
            self.assertEqual('Sorcery — Arcane', card.type)
            self.assertTrue('Black' in card.colors)
            self.assertEqual(['B'], card.color_identity)
            self.assertTrue('Sorcery' in card.types)
            self.assertTrue('Arcane' in card.subtypes)
            self.assertEqual('Rare', card.rarity)
            self.assertEqual('SOK', card.set)
            self.assertEqual('Saviors of Kamigawa', card.set_name)
            self.assertEqual(
                "Target opponent chooses a number. You may have that player lose that much life. If you don't, that player sacrifices all but that many permanents.",
                card.text)
            self.assertEqual(
                "\"Life is a series of choices between bad and worse.\" —Toshiro Umezawa",
                card.flavor)
            self.assertEqual('Tim Hildebrandt', card.artist)
            self.assertEqual('62', card.number)
            self.assertEqual(88803, card.multiverse_id)
            self.assertEqual(
                'http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=88803&type=card',
                card.image_url)
            self.assertTrue(len(card.rulings) > 0)
            self.assertTrue({
                "name": "Scelta della Dannazione",
                "text":
                "L'avversario bersaglio sceglie un numero. Puoi far perdere a quel giocatore un ammontare di punti vita pari a quel numero. Se non lo fai, quel giocatore sacrifica tutti i permanenti tranne un numero di permanenti pari al numero scelto.",
                "flavor":
                "\"La vita è una sequela di scelte tra male e peggio.\"\n—Toshiro Umezawa",
                "imageUrl":
                "http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=105393&type=card",
                "language": "Italian",
                "multiverseid": 105393
            } in card.foreign_names)
            self.assertTrue('SOK' in card.printings)
            self.assertEqual(
                "Target opponent chooses a number. You may have that player lose that much life. If you don't, that player sacrifices all but that many permanents.",
                card.original_text)
            self.assertEqual('Sorcery - Arcane', card.original_type)
            self.assertTrue({
                "format": "Commander",
                "legality": "Legal"
            } in card.legalities)
            self.assertEqual('224a2a63-7be6-5e06-bf6b-e667727bf80b', card.id)
Пример #8
0
        else:
            if Card in self.Cards:
                self.Cards.pop(Card)
                self.CurrentSize -=1
            else:
                print("Card is not in the Set")

    def remove_random_card(self):
        if self.Cards == None:
            print("This doesn't have any cards")
        else:
            self.Cards.pop(randint(0,CurrentSize))
            self.CurrentSize-=1


myHand = CardList()
myHand.add_cards([Card.find(386616), Card.find(386617)])
myHand.add_card(Card.find(386618))
myHand.add_card(Card.find(386619))
myHand.add_card(Card.find(386620))
myHand.add_card(Card.find(386615))
myHand.add_card(Card.find(386614))
print(myHand)


print("-----------")
#intentionally adding an extra card to test what will happen
myHand.add_card(Card.find(386614))
for card in myHand:
    print(card.type)
Пример #9
0
 def get_card_info(cls, card_id=40545):
     """ Returns a cv2 image object from a multiverse id of a specific card
     """
     card = Card.find(card_id)
     return cls._build_magic_card(card)
Пример #10
0
def most_printings(mainboard):
	for card in mainboard:
		printings = Card.find(card).printings
		for printing in printings:
			print(printing)
Пример #11
0
#!/usr/bin/env python3

from mtgsdk import Card
from mtgsdk import Set
from mtgsdk import Type
from mtgsdk import Supertype
from mtgsdk import Subtype
from mtgsdk import Changelog

card = Card.find(386616)
print(card)