From 7f9d22e0aac2c298a8a3a8e70ac539e48cbf78af Mon Sep 17 00:00:00 2001 From: "wagic.the.homebrew@gmail.com" Date: Wed, 18 Nov 2009 13:14:08 +0000 Subject: [PATCH] Erwan -fixed a memory leak - Added P02 and PTK - New way to create tokens in the parser, much more flexible, see the Hive in RV. Tokens can now be written as other cards, with a rarity of "T". I suggest their id to be the negative value of the card that generates them when possible. Naming convention for images is the same as before: a negative id such as -1138 will need a [id]t.jpg image (1138t.jpg). Positive ids work as "normal" pictures --- projects/mtg/bin/Res/sets/P02/_cards.dat | 11 + projects/mtg/bin/Res/sets/P02/todo.dat | 1485 +++++++++++++++ projects/mtg/bin/Res/sets/PTK/_cards.dat | 12 + projects/mtg/bin/Res/sets/PTK/todo.dat | 1665 +++++++++++++++++ projects/mtg/bin/Res/sets/RV/_cards.dat | 13 +- projects/mtg/bin/Res/test/_tests.txt | 1 + projects/mtg/bin/Res/test/generic/tokens2.txt | 39 + projects/mtg/include/AllAbilities.h | 33 +- projects/mtg/include/GameApp.h | 3 +- projects/mtg/include/MTGDeck.h | 1 + projects/mtg/include/MTGDefinitions.h | 1 + projects/mtg/include/TargetChooser.h | 4 +- projects/mtg/src/GameApp.cpp | 3 +- projects/mtg/src/MTGAbility.cpp | 20 +- projects/mtg/src/MTGDeck.cpp | 16 +- projects/mtg/src/TargetChooser.cpp | 6 +- 16 files changed, 3283 insertions(+), 30 deletions(-) create mode 100644 projects/mtg/bin/Res/sets/P02/_cards.dat create mode 100644 projects/mtg/bin/Res/sets/P02/todo.dat create mode 100644 projects/mtg/bin/Res/sets/PTK/_cards.dat create mode 100644 projects/mtg/bin/Res/sets/PTK/todo.dat create mode 100644 projects/mtg/bin/Res/test/generic/tokens2.txt diff --git a/projects/mtg/bin/Res/sets/P02/_cards.dat b/projects/mtg/bin/Res/sets/P02/_cards.dat new file mode 100644 index 000000000..c116cb60f --- /dev/null +++ b/projects/mtg/bin/Res/sets/P02/_cards.dat @@ -0,0 +1,11 @@ +[card] +id=6536 +name=Air Elemental +mana={3}{U}{U} +type=Creature +subtype=Elemental +power=4 +toughness=4 +text=Flying +rarity=U +[/card] diff --git a/projects/mtg/bin/Res/sets/P02/todo.dat b/projects/mtg/bin/Res/sets/P02/todo.dat new file mode 100644 index 000000000..4a88da9ee --- /dev/null +++ b/projects/mtg/bin/Res/sets/P02/todo.dat @@ -0,0 +1,1485 @@ +[card] +id=6567 +name=Abyssal Nightstalker +mana={3}{B} +type=Creature +subtype=Nightstalker +power=2 +toughness=2 +text=Whenever Abyssal Nightstalker attacks and isn't blocked, defending player discards a card. +rarity=U +[/card] +[card] +id=6536 +name=Air Elemental +mana={3}{U}{U} +type=Creature +subtype=Elemental +power=4 +toughness=4 +text=Flying +rarity=U +[/card] +[card] +id=6506 +name=Alaborn Cavalier +mana={2}{W}{W} +type=Creature +subtype=Human Knight +power=2 +toughness=2 +text=Whenever Alaborn Cavalier attacks, you may tap target creature. +rarity=U +[/card] +[card] +id=6508 +name=Alaborn Grenadier +mana={W}{W} +type=Creature +subtype=Human Soldier +power=2 +toughness=2 +text=Vigilance +rarity=C +[/card] +[card] +id=6499 +name=Alaborn Musketeer +mana={1}{W} +type=Creature +subtype=Human Soldier +power=2 +toughness=1 +text=Reach (This creature can block creatures with flying.) +rarity=C +[/card] +[card] +id=6493 +name=Alaborn Trooper +mana={2}{W} +type=Creature +subtype=Human Soldier +power=2 +toughness=3 +rarity=C +[/card] +[card] +id=6516 +name=Alaborn Veteran +mana={2}{W} +type=Creature +subtype=Human Knight +power=2 +toughness=2 +text={T}: Target creature gets +2/+2 until end of turn. Activate this ability only during your turn, before attackers are declared. +rarity=R +[/card] +[card] +id=6492 +name=Alaborn Zealot +mana={W} +type=Creature +subtype=Human Soldier +power=1 +toughness=1 +text=When Alaborn Zealot blocks a creature, destroy that creature and Alaborn Zealot. +rarity=U +[/card] +[card] +id=6639 +name=Alluring Scent +mana={1}{G}{G} +type=Sorcery +text=All creatures able to block target creature this turn do so. +rarity=R +[/card] +[card] +id=6579 +name=Ancient Craving +mana={3}{B} +type=Sorcery +text=You draw three cards and you lose 3 life. +rarity=R +[/card] +[card] +id=6515 +name=Angel of Fury +mana={4}{W}{W} +type=Creature +subtype=Angel +power=3 +toughness=5 +text=Flying When Angel of Fury is put into your graveyard from the battlefield, you may shuffle it into your library. +rarity=R +[/card] +[card] +id=6505 +name=Angel of Mercy +mana={4}{W} +type=Creature +subtype=Angel +power=3 +toughness=3 +text=Flying When Angel of Mercy enters the battlefield, you gain 3 life. +rarity=U +[/card] +[card] +id=6500 +name=Angelic Blessing +mana={2}{W} +type=Sorcery +text=Target creature gets +3/+3 and gains flying until end of turn. (It can't be blocked except by creatures with flying or reach.) +rarity=C +[/card] +[card] +id=6498 +name=Angelic Wall +mana={1}{W} +type=Creature +subtype=Wall +power=0 +toughness=4 +text=Defender, flying (This creature can't attack, and it can block creatures with flying.) +rarity=C +[/card] +[card] +id=6535 +name=Apprentice Sorcerer +mana={2}{U} +type=Creature +subtype=Human Wizard +power=1 +toughness=1 +text={T}: Apprentice Sorcerer deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared. +rarity=U +[/card] +[card] +id=6514 +name=Archangel +mana={5}{W}{W} +type=Creature +subtype=Angel +power=5 +toughness=5 +text=Flying, vigilance +rarity=R +[/card] +[card] +id=6520 +name=Armageddon +mana={3}{W} +type=Sorcery +text=Destroy all lands. +rarity=R +[/card] +[card] +id=6537 +name=Armored Galleon +mana={4}{U} +type=Creature +subtype=Human Pirate +power=5 +toughness=4 +text=Armored Galleon can't attack unless defending player controls an Island. +rarity=U +[/card] +[card] +id=6509 +name=Armored Griffin +mana={3}{W} +type=Creature +subtype=Griffin +power=2 +toughness=3 +text=Flying, vigilance +rarity=U +[/card] +[card] +id=6627 +name=Barbtooth Wurm +mana={5}{G} +type=Creature +subtype=Wurm +power=6 +toughness=4 +rarity=C +[/card] +[card] +id=6510 +name=Bargain +mana={2}{W} +type=Sorcery +text=Target opponent draws a card. You gain 7 life. +rarity=U +[/card] +[card] +id=6613 +name=Bear Cub +mana={1}{G} +type=Creature +subtype=Bear +power=2 +toughness=2 +rarity=C +[/card] +[card] +id=6633 +name=Bee Sting +mana={3}{G} +type=Sorcery +text=Bee Sting deals 2 damage to target creature or player. +rarity=U +[/card] +[card] +id=6600 +name=Blaze +mana={X}{R} +type=Sorcery +text=Blaze deals X damage to target creature or player. +rarity=U +[/card] +[card] +id=6573 +name=Bloodcurdling Scream +mana={X}{B} +type=Sorcery +text=Target creature gets +X/+0 until end of turn. +rarity=U +[/card] +[card] +id=6501 +name=Breath of Life +mana={3}{W} +type=Sorcery +text=Return target creature card from your graveyard to the battlefield. +rarity=U +[/card] +[card] +id=6605 +name=Brimstone Dragon +mana={6}{R}{R} +type=Creature +subtype=Dragon +power=6 +toughness=6 +text=Flying, haste +rarity=R +[/card] +[card] +id=6566 +name=Brutal Nightstalker +mana={3}{B}{B} +type=Creature +subtype=Nightstalker +power=3 +toughness=2 +text=When Brutal Nightstalker enters the battlefield, you may have target opponent discard a card. +rarity=U +[/card] +[card] +id=6564 +name=Chorus of Woe +mana={B} +type=Sorcery +text=Creatures you control get +1/+0 until end of turn. +rarity=C +[/card] +[card] +id=6544 +name=Coastal Wizard +mana={2}{U}{U} +type=Creature +subtype=Human Wizard +power=1 +toughness=1 +text={T}: Return Coastal Wizard and another target creature to their owners' hands. Activate this ability only during your turn, before attackers are declared. +rarity=R +[/card] +[card] +id=6570 +name=Coercion +mana={2}{B} +type=Sorcery +text=Target opponent reveals his or her hand. You choose a card from it. That player discards that card. +rarity=U +[/card] +[card] +id=6561 +name=Cruel Edict +mana={1}{B} +type=Sorcery +text=Target opponent sacrifices a creature. +rarity=U +[/card] +[card] +id=6606 +name=Cunning Giant +mana={5}{R} +type=Creature +subtype=Giant +power=4 +toughness=4 +text=If Cunning Giant is unblocked, you may have it assign its combat damage to a creature defending player controls. +rarity=R +[/card] +[card] +id=6553 +name=Dakmor Bat +mana={1}{B} +type=Creature +subtype=Bat +power=1 +toughness=1 +text=Flying +rarity=C +[/card] +[card] +id=6571 +name=Dakmor Plague +mana={3}{B}{B} +type=Sorcery +text=Dakmor Plague deals 3 damage to each creature and each player. +rarity=U +[/card] +[card] +id=6552 +name=Dakmor Scorpion +mana={1}{B} +type=Creature +subtype=Scorpion +power=2 +toughness=1 +rarity=C +[/card] +[card] +id=6576 +name=Dakmor Sorceress +mana={5}{B} +type=Creature +subtype=Human Wizard +power=* +toughness=4 +text=Dakmor Sorceress's power is equal to the number of Swamps you control. +rarity=R +[/card] +[card] +id=6569 +name=Dark Offering +mana={4}{B}{B} +type=Sorcery +text=Destroy target nonblack creature. You gain 3 life. +rarity=U +[/card] +[card] +id=6637 +name=Deathcoil Wurm +mana={6}{G}{G} +type=Creature +subtype=Wurm +power=7 +toughness=6 +text=You may have Deathcoil Wurm assign its combat damage as though it weren't blocked. +rarity=R +[/card] +[card] +id=6631 +name=Deep Wood +mana={1}{G} +type=Instant +text=Cast Deep Wood only during the declare attackers step and only if you've been attacked this step. Prevent all damage that would be dealt to you this turn by attacking creatures. +rarity=U +[/card] +[card] +id=6528 +name=Déjà Vu +mana={2}{U} +type=Sorcery +text=Return target sorcery card from your graveyard to your hand. +rarity=C +[/card] +[card] +id=6546 +name=Denizen of the Deep +mana={6}{U}{U} +type=Creature +subtype=Serpent +power=11 +toughness=11 +text=When Denizen of the Deep enters the battlefield, return each other creature you control to its owner's hand. +rarity=R +[/card] +[card] +id=6609 +name=Earthquake +mana={X}{R} +type=Sorcery +text=Earthquake deals X damage to each creature without flying and each player. +rarity=R +[/card] +[card] +id=6549 +name=Exhaustion +mana={2}{U} +type=Sorcery +text=Creatures and lands target opponent controls don't untap during his or her next untap step. +rarity=U +[/card] +[card] +id=6534 +name=Extinguish +mana={1}{U} +type=Instant +text=Counter target sorcery spell. +rarity=C +[/card] +[card] +id=6538 +name=Eye Spy +mana={U} +type=Sorcery +text=Look at the top card of target player's library. You may put that card into his or her graveyard. +rarity=U +[/card] +[card] +id=6533 +name=False Summoning +mana={1}{U} +type=Instant +text=Counter target creature spell. +rarity=C +[/card] +[card] +id=6504 +name=Festival of Trokin +mana={W} +type=Sorcery +text=You gain 2 life for each creature you control. +rarity=C +[/card] +[card] +id=8409 +name=Forest +mana= +type=Basic Land +subtype=Forest +text=G +rarity=C +[/card] +[card] +id=6568 +name=Foul Spirit +mana={2}{B} +type=Creature +subtype=Spirit +power=3 +toughness=2 +text=Flying When Foul Spirit enters the battlefield, sacrifice a land. +rarity=U +[/card] +[card] +id=6587 +name=Goblin Cavaliers +mana={2}{R} +type=Creature +subtype=Goblin +power=3 +toughness=2 +rarity=C +[/card] +[card] +id=6598 +name=Goblin Firestarter +mana={R} +type=Creature +subtype=Goblin +power=1 +toughness=1 +text=Sacrifice Goblin Firestarter: Goblin Firestarter deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared. +rarity=U +[/card] +[card] +id=6604 +name=Goblin General +mana={1}{R}{R} +type=Creature +subtype=Goblin Warrior +power=1 +toughness=1 +text=Whenever Goblin General attacks, Goblin creatures you control get +1/+1 until end of turn. +rarity=U +[/card] +[card] +id=6584 +name=Goblin Glider +mana={1}{R} +type=Creature +subtype=Goblin +power=1 +toughness=1 +text=Flying Goblin Glider can't block. +rarity=U +[/card] +[card] +id=6602 +name=Goblin Lore +mana={1}{R} +type=Sorcery +text=Draw four cards, then discard three cards at random. +rarity=U +[/card] +[card] +id=6596 +name=Goblin Matron +mana={2}{R} +type=Creature +subtype=Goblin +power=1 +toughness=1 +text=When Goblin Matron enters the battlefield, you may search your library for a Goblin card, reveal that card, and put it into your hand. If you do, shuffle your library. +rarity=U +[/card] +[card] +id=6585 +name=Goblin Mountaineer +mana={R} +type=Creature +subtype=Goblin Scout +power=1 +toughness=1 +text=Mountainwalk +rarity=C +[/card] +[card] +id=6582 +name=Goblin Piker +mana={1}{R} +type=Creature +subtype=Goblin Warrior +power=2 +toughness=1 +rarity=C +[/card] +[card] +id=6583 +name=Goblin Raider +mana={1}{R} +type=Creature +subtype=Goblin Warrior +power=2 +toughness=2 +text=Goblin Raider can't block. +rarity=C +[/card] +[card] +id=6603 +name=Goblin War Cry +mana={2}{R} +type=Sorcery +text=Target opponent chooses a creature he or she controls. Other creatures he or she controls can't block this turn. +rarity=U +[/card] +[card] +id=6594 +name=Goblin War Strike +mana={R} +type=Sorcery +text=Goblin War Strike deals damage equal to the number of Goblins you control to target player. +rarity=C +[/card] +[card] +id=6616 +name=Golden Bear +mana={3}{G} +type=Creature +subtype=Bear +power=4 +toughness=3 +rarity=C +[/card] +[card] +id=6563 +name=Hand of Death +mana={2}{B} +type=Sorcery +text=Destroy target nonblack creature. +rarity=C +[/card] +[card] +id=6632 +name=Harmony of Nature +mana={2}{G} +type=Sorcery +text=Tap any number of untapped creatures you control. You gain 4 life for each creature tapped this way. +rarity=U +[/card] +[card] +id=6574 +name=Hidden Horror +mana={1}{B}{B} +type=Creature +subtype=Horror +power=4 +toughness=4 +text=When Hidden Horror enters the battlefield, sacrifice it unless you discard a creature card. +rarity=U +[/card] +[card] +id=6640 +name=Hurricane +mana={X}{G} +type=Sorcery +text=Hurricane deals X damage to each creature with flying and each player. +rarity=U +[/card] +[card] +id=6628 +name=Ironhoof Ox +mana={3}{G}{G} +type=Creature +subtype=Ox +power=4 +toughness=4 +text=Ironhoof Ox can't be blocked by more than one creature. +rarity=U +[/card] +[card] +id=8390 +name=Island +mana= +type=Basic Land +subtype=Island +text=U +rarity=C +[/card] +[card] +id=6601 +name=Jagged Lightning +mana={3}{R}{R} +type=Sorcery +text=Jagged Lightning deals 3 damage to target creature and 3 damage to another target creature. +rarity=U +[/card] +[card] +id=6519 +name=Just Fate +mana={2}{W} +type=Instant +text=Cast Just Fate only during the declare attackers step and only if you've been attacked this step. Destroy target attacking creature. +rarity=R +[/card] +[card] +id=6572 +name=Kiss of Death +mana={4}{B}{B} +type=Sorcery +text=Kiss of Death deals 4 damage to target opponent. You gain 4 life. +rarity=U +[/card] +[card] +id=6591 +name=Lava Axe +mana={4}{R} +type=Sorcery +text=Lava Axe deals 5 damage to target player. +rarity=C +[/card] +[card] +id=6614 +name=Lone Wolf +mana={2}{G} +type=Creature +subtype=Wolf +power=2 +toughness=2 +text=You may have Lone Wolf assign its combat damage as though it weren't blocked. +rarity=U +[/card] +[card] +id=6557 +name=Lurking Nightstalker +mana={B}{B} +type=Creature +subtype=Nightstalker +power=1 +toughness=1 +text=Whenever Lurking Nightstalker attacks, it gets +2/+0 until end of turn. +rarity=C +[/card] +[card] +id=6611 +name=Lynx +mana={1}{G} +type=Creature +subtype=Cat +power=2 +toughness=1 +text=Forestwalk +rarity=U +[/card] +[card] +id=6607 +name=Magma Giant +mana={5}{R}{R} +type=Creature +subtype=Giant +power=5 +toughness=5 +text=When Magma Giant enters the battlefield, it deals 2 damage to each creature and each player. +rarity=R +[/card] +[card] +id=6562 +name=Mind Rot +mana={2}{B} +type=Sorcery +text=Target player discards two cards. +rarity=C +[/card] +[card] +id=6554 +name=Moaning Spirit +mana={2}{B} +type=Creature +subtype=Spirit +power=2 +toughness=1 +text=Flying +rarity=C +[/card] +[card] +id=6621 +name=Monstrous Growth +mana={1}{G} +type=Sorcery +text=Target creature gets +4/+4 until end of turn. +rarity=C +[/card] +[card] +id=8406 +name=Mountain +mana= +type=Basic Land +subtype=Mountain +text=R +rarity=C +[/card] +[card] +id=6551 +name=Muck Rats +mana={B} +type=Creature +subtype=Rat +power=1 +toughness=1 +rarity=C +[/card] +[card] +id=6542 +name=Mystic Denial +mana={1}{U}{U} +type=Instant +text=Counter target creature or sorcery spell. +rarity=U +[/card] +[card] +id=6624 +name=Natural Spring +mana={3}{G}{G} +type=Sorcery +text=Target player gains 8 life. +rarity=U +[/card] +[card] +id=6623 +name=Nature's Lore +mana={1}{G} +type=Sorcery +text=Search your library for a Forest card and put that card onto the battlefield. Then shuffle your library. +rarity=U +[/card] +[card] +id=6577 +name=Nightstalker Engine +mana={4}{B} +type=Creature +subtype=Nightstalker +power=* +toughness=3 +text=Nightstalker Engine's power is equal to the number of creature cards in your graveyard. +rarity=R +[/card] +[card] +id=6618 +name=Norwood Archers +mana={3}{G} +type=Creature +subtype=Elf Archer +power=3 +toughness=3 +text=Reach (This creature can block creatures with flying.) +rarity=C +[/card] +[card] +id=6634 +name=Norwood Priestess +mana={2}{G}{G} +type=Creature +subtype=Elf Druid +power=1 +toughness=1 +text={T}: You may put a green creature card from your hand onto the battlefield. Activate this ability only during your turn, before attackers are declared. +rarity=R +[/card] +[card] +id=6636 +name=Norwood Ranger +mana={G} +type=Creature +subtype=Elf Scout +power=1 +toughness=2 +rarity=C +[/card] +[card] +id=6615 +name=Norwood Riders +mana={3}{G} +type=Creature +subtype=Elf +power=3 +toughness=3 +text=Norwood Riders can't be blocked by more than one creature. +rarity=C +[/card] +[card] +id=6620 +name=Norwood Warrior +mana={2}{G} +type=Creature +subtype=Elf Warrior +power=2 +toughness=2 +text=Whenever Norwood Warrior becomes blocked, it gets +1/+1 until end of turn. +rarity=C +[/card] +[card] +id=6599 +name=Obsidian Giant +mana={4}{R} +type=Creature +subtype=Giant +power=4 +toughness=4 +rarity=U +[/card] +[card] +id=6595 +name=Ogre Arsonist +mana={4}{R} +type=Creature +subtype=Ogre +power=3 +toughness=3 +text=When Ogre Arsonist enters the battlefield, destroy target land. +rarity=U +[/card] +[card] +id=6586 +name=Ogre Berserker +mana={4}{R} +type=Creature +subtype=Ogre Berserker +power=4 +toughness=2 +text=Haste +rarity=C +[/card] +[card] +id=6588 +name=Ogre Taskmaster +mana={3}{R} +type=Creature +subtype=Ogre +power=4 +toughness=3 +text=Ogre Taskmaster can't block. +rarity=U +[/card] +[card] +id=6597 +name=Ogre Warrior +mana={3}{R} +type=Creature +subtype=Ogre Warrior +power=3 +toughness=3 +rarity=C +[/card] +[card] +id=6502 +name=Path of Peace +mana={3}{W} +type=Sorcery +text=Destroy target creature. Its owner gains 4 life. +rarity=C +[/card] +[card] +id=6550 +name=Piracy +mana={U}{U} +type=Sorcery +text=Until end of turn, you may tap lands you don't control for mana. Spend this mana only to cast spells. +rarity=R +[/card] +[card] +id=8374 +name=Plains +mana= +type=Basic Land +subtype=Plains +text=W +rarity=C +[/card] +[card] +id=6617 +name=Plated Wurm +mana={4}{G} +type=Creature +subtype=Wurm +power=4 +toughness=5 +rarity=C +[/card] +[card] +id=6565 +name=Predatory Nightstalker +mana={3}{B}{B} +type=Creature +subtype=Nightstalker +power=3 +toughness=2 +text=When Predatory Nightstalker enters the battlefield, you may have target opponent sacrifice a creature. +rarity=U +[/card] +[card] +id=6556 +name=Prowling Nightstalker +mana={3}{B} +type=Creature +subtype=Nightstalker +power=2 +toughness=2 +text=Prowling Nightstalker can't be blocked except by black creatures. +rarity=C +[/card] +[card] +id=6581 +name=Raging Goblin +mana={R} +type=Creature +subtype=Goblin Berserker +power=1 +toughness=1 +text=Haste (This creature can attack and {T} as soon as it comes under your control.) +rarity=C +[/card] +[card] +id=6558 +name=Raiding Nightstalker +mana={2}{B} +type=Creature +subtype=Nightstalker +power=2 +toughness=2 +text=Swampwalk +rarity=C +[/card] +[card] +id=6580 +name=Rain of Daggers +mana={4}{B}{B} +type=Sorcery +text=Destroy all creatures target opponent controls. You lose 2 life for each creature destroyed this way. +rarity=R +[/card] +[card] +id=6560 +name=Raise Dead +mana={B} +type=Sorcery +text=Return target creature card from your graveyard to your hand. +rarity=C +[/card] +[card] +id=6511 +name=Rally the Troops +mana={W} +type=Instant +text=Cast Rally the Troops only during the declare attackers step and only if you've been attacked this step. Untap all creatures you control. +rarity=U +[/card] +[card] +id=6559 +name=Ravenous Rats +mana={1}{B} +type=Creature +subtype=Rat +power=1 +toughness=1 +text=When Ravenous Rats enters the battlefield, target opponent discards a card. +rarity=U +[/card] +[card] +id=6638 +name=Razorclaw Bear +mana={2}{G}{G} +type=Creature +subtype=Bear +power=3 +toughness=3 +text=Whenever Razorclaw Bear becomes blocked, it gets +2/+2 until end of turn. +rarity=R +[/card] +[card] +id=6608 +name=Relentless Assault +mana={2}{R}{R} +type=Sorcery +text=Untap all creatures that attacked this turn. After this main phase, there is an additional combat phase followed by an additional main phase. +rarity=R +[/card] +[card] +id=6541 +name=Remove +mana={U} +type=Instant +text=Cast Remove only during the declare attackers step and only if you've been attacked this step. Return target attacking creature to its owner's hand. +rarity=U +[/card] +[card] +id=6629 +name=Renewing Touch +mana={G} +type=Sorcery +text=Shuffle any number of target creature cards from your graveyard into your library. +rarity=U +[/card] +[card] +id=6578 +name=Return of the Nightstalkers +mana={5}{B}{B} +type=Sorcery +text=Return all Nightstalker permanent cards from your graveyard to the battlefield. Then destroy all Swamps you control. +rarity=R +[/card] +[card] +id=6503 +name=Righteous Charge +mana={1}{W}{W} +type=Sorcery +text=Creatures you control get +2/+2 until end of turn. +rarity=U +[/card] +[card] +id=6518 +name=Righteous Fury +mana={4}{W}{W} +type=Sorcery +text=Destroy all tapped creatures. You gain 2 life for each creature destroyed this way. +rarity=R +[/card] +[card] +id=6626 +name=River Bear +mana={3}{G} +type=Creature +subtype=Bear +power=3 +toughness=3 +text=Islandwalk (This creature is unblockable as long as defending player controls an Island.) +rarity=U +[/card] +[card] +id=6622 +name=Salvage +mana={G} +type=Sorcery +text=Put target card from your graveyard on top of your library. +rarity=C +[/card] +[card] +id=6523 +name=Screeching Drake +mana={3}{U} +type=Creature +subtype=Drake +power=2 +toughness=2 +text=Flying When Screeching Drake enters the battlefield, draw a card, then discard a card. +rarity=C +[/card] +[card] +id=6539 +name=Sea Drake +mana={2}{U} +type=Creature +subtype=Drake +power=4 +toughness=3 +text=Flying When Sea Drake enters the battlefield, return two target lands you control to their owner's hand. +rarity=U +[/card] +[card] +id=6529 +name=Sleight of Hand +mana={U} +type=Sorcery +text=Look at the top two cards of your library. Put one of them into your hand and the other on the bottom of your library. +rarity=C +[/card] +[card] +id=6589 +name=Spitting Earth +mana={1}{R} +type=Sorcery +text=Spitting Earth deals damage equal to the number of Mountains you control to target creature. +rarity=U +[/card] +[card] +id=6517 +name=Steam Catapult +mana={3}{W}{W} +type=Creature +subtype=Human Soldier +power=2 +toughness=3 +text={T}: Destroy target tapped creature. Activate this ability only during your turn, before attackers are declared. +rarity=R +[/card] +[card] +id=6526 +name=Steam Frigate +mana={2}{U} +type=Creature +subtype=Human Pirate +power=3 +toughness=3 +text=Steam Frigate can't attack unless defending player controls an Island. +rarity=C +[/card] +[card] +id=6590 +name=Stone Rain +mana={2}{R} +type=Sorcery +text=Destroy target land. +rarity=C +[/card] +[card] +id=8393 +name=Swamp +mana= +type=Basic Land +subtype=Swamp +text=B +rarity=C +[/card] +[card] +id=6555 +name=Swarm of Rats +mana={1}{B} +type=Creature +subtype=Rat +power=* +toughness=1 +text=Swarm of Rats's power is equal to the number of Rats you control. +rarity=U +[/card] +[card] +id=8905 +name=Sylvan Basilisk +mana={3}{G}{G} +type=Creature +subtype=Basilisk +power=2 +toughness=4 +text=Whenever Sylvan Basilisk becomes blocked by a creature, destroy that creature. +rarity=U +[/card] +[card] +id=6635 +name=Sylvan Yeti +mana={2}{G}{G} +type=Creature +subtype=Yeti +power=* +toughness=4 +text=Sylvan Yeti's power is equal to the number of cards in your hand. +rarity=R +[/card] +[card] +id=6524 +name=Talas Air Ship +mana={3}{U} +type=Creature +subtype=Human Pirate +power=3 +toughness=2 +text=Flying +rarity=C +[/card] +[card] +id=6522 +name=Talas Explorer +mana={1}{U} +type=Creature +subtype=Human Pirate Scout +power=1 +toughness=1 +text=Flying When Talas Explorer enters the battlefield, look at target opponent's hand. +rarity=C +[/card] +[card] +id=6525 +name=Talas Merchant +mana={1}{U} +type=Creature +subtype=Human Pirate +power=1 +toughness=3 +rarity=C +[/card] +[card] +id=6547 +name=Talas Researcher +mana={4}{U} +type=Creature +subtype=Human Pirate Wizard +power=1 +toughness=1 +text={T}: Draw a card. Activate this ability only during your turn, before attackers are declared. +rarity=R +[/card] +[card] +id=6521 +name=Talas Scout +mana={1}{U} +type=Creature +subtype=Human Pirate Scout +power=1 +toughness=2 +text=Flying +rarity=C +[/card] +[card] +id=6545 +name=Talas Warrior +mana={1}{U}{U} +type=Creature +subtype=Human Pirate Warrior +power=2 +toughness=2 +text=Talas Warrior is unblockable. +rarity=R +[/card] +[card] +id=6495 +name=Temple Acolyte +mana={1}{W} +type=Creature +subtype=Human Cleric +power=1 +toughness=3 +text=When Temple Acolyte enters the battlefield, you gain 3 life. +rarity=C +[/card] +[card] +id=6507 +name=Temple Elder +mana={2}{W} +type=Creature +subtype=Human Cleric +power=1 +toughness=2 +text={T}: You gain 1 life. Activate this ability only during your turn, before attackers are declared. +rarity=U +[/card] +[card] +id=6548 +name=Temporal Manipulation +mana={3}{U}{U} +type=Sorcery +text=Take an extra turn after this one. +rarity=R +[/card] +[card] +id=6543 +name=Theft of Dreams +mana={2}{U} +type=Sorcery +text=Draw a card for each tapped creature target opponent controls. +rarity=U +[/card] +[card] +id=6531 +name=Tidal Surge +mana={1}{U} +type=Sorcery +text=Tap up to three target creatures without flying. +rarity=C +[/card] +[card] +id=6532 +name=Time Ebb +mana={2}{U} +type=Sorcery +text=Put target creature on top of its owner's library. +rarity=C +[/card] +[card] +id=6527 +name=Touch of Brilliance +mana={3}{U} +type=Sorcery +text=Draw two cards. +rarity=C +[/card] +[card] +id=6494 +name=Town Sentry +mana={2}{W} +type=Creature +subtype=Human Soldier +power=2 +toughness=2 +text=Whenever Town Sentry blocks, it gets +0/+2 until end of turn. +rarity=C +[/card] +[card] +id=6619 +name=Tree Monkey +mana={G} +type=Creature +subtype=Ape +power=1 +toughness=1 +text=Reach (This creature can block creatures with flying.) +rarity=C +[/card] +[card] +id=6592 +name=Tremor +mana={R} +type=Sorcery +text=Tremor deals 1 damage to each creature without flying. +rarity=C +[/card] +[card] +id=6496 +name=Trokin High Guard +mana={3}{W} +type=Creature +subtype=Human Knight +power=3 +toughness=3 +rarity=C +[/card] +[card] +id=6540 +name=Undo +mana={1}{U}{U} +type=Sorcery +text=Return two target creatures to their owners' hands. +rarity=U +[/card] +[card] +id=6630 +name=Untamed Wilds +mana={2}{G} +type=Sorcery +text=Search your library for a basic land card and put that card onto the battlefield. Then shuffle your library. +rarity=U +[/card] +[card] +id=6575 +name=Vampiric Spirit +mana={2}{B}{B} +type=Creature +subtype=Spirit +power=4 +toughness=3 +text=Flying When Vampiric Spirit enters the battlefield, you lose 4 life. +rarity=R +[/card] +[card] +id=6513 +name=Vengeance +mana={3}{W} +type=Sorcery +text=Destroy target tapped creature. +rarity=U +[/card] +[card] +id=6593 +name=Volcanic Hammer +mana={1}{R} +type=Sorcery +text=Volcanic Hammer deals 3 damage to target creature or player. +rarity=C +[/card] +[card] +id=6491 +name=Volunteer Militia +mana={W} +type=Creature +subtype=Human Soldier +power=1 +toughness=2 +rarity=C +[/card] +[card] +id=6512 +name=Warrior's Stand +mana={1}{W} +type=Instant +text=Cast Warrior's Stand only during the declare attackers step and only if you've been attacked this step. Creatures you control get +2/+2 until end of turn. +rarity=U +[/card] +[card] +id=6497 +name=Wild Griffin +mana={2}{W} +type=Creature +subtype=Griffin +power=2 +toughness=2 +text=Flying (This creature can't be blocked except by creatures with flying or reach.) +rarity=C +[/card] +[card] +id=6625 +name=Wild Ox +mana={3}{G} +type=Creature +subtype=Ox +power=3 +toughness=3 +text=Swampwalk +rarity=U +[/card] +[card] +id=6610 +name=Wildfire +mana={4}{R}{R} +type=Sorcery +text=Each player sacrifices four lands. Wildfire deals 4 damage to each creature. +rarity=R +[/card] +[card] +id=6530 +name=Wind Sail +mana={1}{U} +type=Sorcery +text=One or two target creatures gain flying until end of turn. +rarity=U +[/card] diff --git a/projects/mtg/bin/Res/sets/PTK/_cards.dat b/projects/mtg/bin/Res/sets/PTK/_cards.dat new file mode 100644 index 000000000..aab52a6bf --- /dev/null +++ b/projects/mtg/bin/Res/sets/PTK/_cards.dat @@ -0,0 +1,12 @@ +[card] +id=10487 +name=Alert Shu Infantry +mana={2}{W} +type=Creature +subtype=Human Soldier +power=2 +toughness=2 +text=Vigilance +abilities=vigilance +rarity=U +[/card] diff --git a/projects/mtg/bin/Res/sets/PTK/todo.dat b/projects/mtg/bin/Res/sets/PTK/todo.dat new file mode 100644 index 000000000..1d5f34609 --- /dev/null +++ b/projects/mtg/bin/Res/sets/PTK/todo.dat @@ -0,0 +1,1665 @@ +[card] +id=10487 +name=Alert Shu Infantry +mana={2}{W} +type=Creature +subtype=Human Soldier +power=2 +toughness=2 +text=Vigilance +rarity=U +[/card] +[card] +id=10493 +name=Ambition's Cost +mana={3}{B} +type=Sorcery +text=You draw three cards and you lose 3 life. +rarity=U +[/card] +[card] +id=10580 +name=Balance of Power +mana={3}{U}{U} +type=Sorcery +text=If target opponent has more cards in hand than you, draw cards equal to the difference. +rarity=R +[/card] +[card] +id=10574 +name=Barbarian General +mana={4}{R} +type=Creature +subtype=Human Barbarian Soldier +power=3 +toughness=2 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) +rarity=U +[/card] +[card] +id=10578 +name=Barbarian Horde +mana={3}{R} +type=Creature +subtype=Human Barbarian Soldier +power=3 +toughness=3 +rarity=C +[/card] +[card] +id=10507 +name=Blaze +mana={X}{R} +type=Sorcery +text=Blaze deals X damage to target creature or player. +rarity=U +[/card] +[card] +id=10620 +name=Borrowing 100,000 Arrows +mana={2}{U} +type=Sorcery +text=Draw a card for each tapped creature target opponent controls. +rarity=U +[/card] +[card] +id=10549 +name=Borrowing the East Wind +mana={X}{G}{G} +type=Sorcery +text=Borrowing the East Wind deals X damage to each creature with horsemanship and each player. +rarity=R +[/card] +[card] +id=10623 +name=Brilliant Plan +mana={4}{U} +type=Sorcery +text=Draw three cards. +rarity=U +[/card] +[card] +id=10621 +name=Broken Dam +mana={U} +type=Sorcery +text=Tap one or two target creatures without horsemanship. +rarity=C +[/card] +[card] +id=10555 +name=Burning Fields +mana={4}{R} +type=Sorcery +text=Burning Fields deals 5 damage to target opponent. +rarity=C +[/card] +[card] +id=10637 +name=Burning of Xinye +mana={4}{R}{R} +type=Sorcery +text=You destroy four lands you control, then target opponent destroys four lands he or she controls. Then Burning of Xinye deals 4 damage to each creature. +rarity=R +[/card] +[card] +id=10548 +name=Cao Cao, Lord of Wei +mana={3}{B}{B} +type=Legendary Creature +subtype=Human Soldier +power=3 +toughness=3 +text={T}: Target opponent discards two cards. Activate this ability only during your turn, before attackers are declared. +rarity=R +[/card] +[card] +id=10712 +name=Cao Ren, Wei Commander +mana={2}{B}{B} +type=Legendary Creature +subtype=Human Soldier Warrior +power=3 +toughness=3 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) When Cao Ren, Wei Commander enters the battlefield, you lose 3 life. +rarity=R +[/card] +[card] +id=10619 +name=Capture of Jingzhou +mana={3}{U}{U} +type=Sorcery +text=Take an extra turn after this one. +rarity=R +[/card] +[card] +id=10593 +name=Champion's Victory +mana={U} +type=Instant +text=Cast Champion's Victory only during the declare attackers step and only if you've been attacked this step. Return target attacking creature to its owner's hand. +rarity=U +[/card] +[card] +id=10514 +name=Coercion +mana={2}{B} +type=Sorcery +text=Target opponent reveals his or her hand. You choose a card from it. That player discards that card. +rarity=U +[/card] +[card] +id=10538 +name=Control of the Court +mana={1}{R} +type=Sorcery +text=Draw four cards, then discard three cards at random. +rarity=U +[/card] +[card] +id=10595 +name=Corrupt Court Official +mana={1}{B} +type=Creature +subtype=Human Advisor +power=1 +toughness=1 +text=When Corrupt Court Official enters the battlefield, target opponent discards a card. +rarity=U +[/card] +[card] +id=10734 +name=Corrupt Eunuchs +mana={3}{R} +type=Creature +subtype=Human Advisor +power=2 +toughness=2 +text=When Corrupt Eunuchs enters the battlefield, it deals 2 damage to target creature. +rarity=U +[/card] +[card] +id=10601 +name=Council of Advisors +mana={2}{U} +type=Creature +subtype=Human Advisor +power=1 +toughness=1 +text=When Council of Advisors enters the battlefield, draw a card. +rarity=U +[/card] +[card] +id=10628 +name=Counterintelligence +mana={2}{U}{U} +type=Sorcery +text=Return one or two target creatures to their owners' hands. +rarity=U +[/card] +[card] +id=10533 +name=Cunning Advisor +mana={3}{B} +type=Creature +subtype=Human Advisor +power=1 +toughness=1 +text={T}: Target opponent discards a card. Activate this ability only during your turn, before attackers are declared. +rarity=U +[/card] +[card] +id=10560 +name=Deception +mana={2}{B} +type=Sorcery +text=Target opponent discards two cards. +rarity=C +[/card] +[card] +id=10626 +name=Desert Sandstorm +mana={2}{R} +type=Sorcery +text=Desert Sandstorm deals 1 damage to each creature. +rarity=C +[/card] +[card] +id=10512 +name=Desperate Charge +mana={2}{B} +type=Sorcery +text=Creatures you control get +2/+0 until end of turn. +rarity=U +[/card] +[card] +id=10544 +name=Diaochan, Artful Beauty +mana={3}{R} +type=Legendary Creature +subtype=Human Advisor +power=1 +toughness=1 +text={T}: Destroy target creature of your choice, then destroy target creature of an opponent's choice. Activate this ability only during your turn, before attackers are declared. +rarity=R +[/card] +[card] +id=10730 +name=Dong Zhou, the Tyrant +mana={4}{R} +type=Legendary Creature +subtype=Human Soldier +power=3 +toughness=3 +text=When Dong Zhou, the Tyrant enters the battlefield, target creature an opponent controls deals damage equal to its power to that player. +rarity=R +[/card] +[card] +id=10553 +name=Eightfold Maze +mana={2}{W} +type=Instant +text=Cast Eightfold Maze only during the declare attackers step and only if you've been attacked this step. Destroy target attacking creature. +rarity=U +[/card] +[card] +id=10504 +name=Empty City Ruse +mana={W} +type=Sorcery +text=Target opponent skips all combat phases of his or her next turn. +rarity=U +[/card] +[card] +id=10543 +name=Eunuchs' Intrigues +mana={2}{R} +type=Sorcery +text=Target opponent chooses a creature he or she controls. Other creatures he or she controls can't block this turn. +rarity=U +[/card] +[card] +id=10527 +name=Exhaustion +mana={2}{U} +type=Sorcery +text=Creatures and lands target opponent controls don't untap during his or her next untap step. +rarity=U +[/card] +[card] +id=10528 +name=Extinguish +mana={1}{U} +type=Instant +text=Counter target sorcery spell. +rarity=C +[/card] +[card] +id=10509 +name=False Defeat +mana={3}{W} +type=Sorcery +text=Return target creature card from your graveyard to the battlefield. +rarity=U +[/card] +[card] +id=10599 +name=False Mourning +mana={G} +type=Sorcery +text=Put target card from your graveyard on top of your library. +rarity=U +[/card] +[card] +id=10518 +name=Famine +mana={3}{B}{B} +type=Sorcery +text=Famine deals 3 damage to each creature and each player. +rarity=U +[/card] +[card] +id=10632 +name=Fire Ambush +mana={1}{R} +type=Sorcery +text=Fire Ambush deals 3 damage to target creature or player. +rarity=C +[/card] +[card] +id=10535 +name=Fire Bowman +mana={R} +type=Creature +subtype=Human Soldier Archer +power=1 +toughness=1 +text=Sacrifice Fire Bowman: Fire Bowman deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared. +rarity=U +[/card] +[card] +id=10486 +name=Flanking Troops +mana={2}{W}{W} +type=Creature +subtype=Human Soldier +power=2 +toughness=2 +text=Whenever Flanking Troops attacks, you may tap target creature. +rarity=U +[/card] +[card] +id=10622 +name=Forced Retreat +mana={2}{U} +type=Sorcery +text=Put target creature on top of its owner's library. +rarity=C +[/card] +[card] +id=10639 +name=Forest +mana= +type=Basic Land +subtype=Forest +text=G +rarity=C +[/card] +[card] +id=10505 +name=Forest Bear +mana={1}{G} +type=Creature +subtype=Bear +power=2 +toughness=2 +rarity=C +[/card] +[card] +id=10546 +name=Ghostly Visit +mana={2}{B} +type=Sorcery +text=Destroy target nonblack creature. +rarity=C +[/card] +[card] +id=10494 +name=Guan Yu, Sainted Warrior +mana={3}{W}{W} +type=Legendary Creature +subtype=Human Soldier Warrior +power=3 +toughness=5 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) When Guan Yu, Sainted Warrior is put into your graveyard from the battlefield, you may shuffle Guan Yu into your library. +rarity=U +[/card] +[card] +id=10597 +name=Guan Yu's 1,000-Li March +mana={4}{W}{W} +type=Sorcery +text=Destroy all tapped creatures. +rarity=R +[/card] +[card] +id=10523 +name=Heavy Fog +mana={1}{G} +type=Instant +text=Cast Heavy Fog only during the declare attackers step and only if you've been attacked this step. Prevent all damage that would be dealt to you this turn by attacking creatures. +rarity=U +[/card] +[card] +id=10570 +name=Hua Tuo, Honored Physician +mana={1}{G}{G} +type=Legendary Creature +subtype=Human +power=1 +toughness=2 +text={T}: Put target creature card from your graveyard on top of your library. Activate this ability only during your turn, before attackers are declared. +rarity=R +[/card] +[card] +id=10714 +name=Huang Zhong, Shu General +mana={2}{W}{W} +type=Legendary Creature +subtype=Human Soldier +power=2 +toughness=3 +text=Huang Zhong, Shu General can't be blocked by more than one creature. +rarity=R +[/card] +[card] +id=10572 +name=Hunting Cheetah +mana={2}{G} +type=Creature +subtype=Cat +power=2 +toughness=3 +text=Whenever Hunting Cheetah deals damage to an opponent, you may search your library for a Forest card, reveal that card, put it into your hand, then shuffle your library. +rarity=U +[/card] +[card] +id=10515 +name=Imperial Edict +mana={1}{B} +type=Sorcery +text=Target opponent chooses a creature he or she controls. Destroy it. +rarity=C +[/card] +[card] +id=10539 +name=Imperial Recruiter +mana={2}{R} +type=Creature +subtype=Human Advisor +power=1 +toughness=1 +text=When Imperial Recruiter enters the battlefield, search your library for a creature card with power 2 or less, reveal it, and put it into your hand. Then shuffle your library. +rarity=U +[/card] +[card] +id=10728 +name=Imperial Seal +mana={B} +type=Sorcery +text=Search your library for a card, then shuffle your library and put that card on top of it. You lose 2 life. +rarity=R +[/card] +[card] +id=10541 +name=Independent Troops +mana={1}{R} +type=Creature +subtype=Human Soldier +power=2 +toughness=1 +rarity=C +[/card] +[card] +id=10641 +name=Island +mana= +type=Basic Land +subtype=Island +text=U +rarity=C +[/card] +[card] +id=10490 +name=Kongming, "Sleeping Dragon" +mana={2}{W}{W} +type=Legendary Creature +subtype=Human Advisor +power=2 +toughness=2 +text=Other creatures you control get +1/+1. +rarity=R +[/card] +[card] +id=10495 +name=Kongming's Contraptions +mana={3}{W} +type=Creature +subtype=Human Soldier +power=2 +toughness=4 +text={T}: Kongming's Contraptions deals 2 damage to target attacking creature. Activate this ability only during the declare attackers step and only if you've been attacked this step. +rarity=R +[/card] +[card] +id=10721 +name=Lady Sun +mana={1}{U}{U} +type=Legendary Creature +subtype=Human Advisor +power=1 +toughness=1 +text={T}: Return Lady Sun and another target creature to their owners' hands. Activate this ability only during your turn, before attackers are declared. +rarity=R +[/card] +[card] +id=10609 +name=Lady Zhurong, Warrior Queen +mana={4}{G} +type=Legendary Creature +subtype=Human Soldier Warrior +power=4 +toughness=3 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) +rarity=R +[/card] +[card] +id=10499 +name=Liu Bei, Lord of Shu +mana={3}{W}{W} +type=Legendary Creature +subtype=Human Soldier +power=2 +toughness=4 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) Liu Bei, Lord of Shu gets +2/+2 as long as you control a permanent named Guan Yu, Sainted Warrior or a permanent named Zhang Fei, Fierce Warrior. +rarity=R +[/card] +[card] +id=10556 +name=Lone Wolf +mana={2}{G} +type=Creature +subtype=Wolf +power=2 +toughness=2 +text=You may have Lone Wolf assign its combat damage as though it weren't blocked. +rarity=U +[/card] +[card] +id=10491 +name=Loyal Retainers +mana={2}{W} +type=Creature +subtype=Human Advisor +power=1 +toughness=1 +text=Sacrifice Loyal Retainers: Return target legendary creature card from your graveyard to the battlefield. Activate this ability only during your turn, before attackers are declared. +rarity=U +[/card] +[card] +id=10536 +name=Lu Bu, Master-at-Arms +mana={5}{R} +type=Legendary Creature +subtype=Human Soldier Warrior +power=4 +toughness=3 +text=Haste; horsemanship (This creature can't be blocked except by creatures with horsemanship.) +rarity=R +[/card] +[card] +id=10710 +name=Lu Meng, Wu General +mana={3}{U}{U} +type=Legendary Creature +subtype=Human Soldier +power=4 +toughness=4 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) +rarity=U +[/card] +[card] +id=10614 +name=Lu Su, Wu Advisor +mana={3}{U}{U} +type=Legendary Creature +subtype=Human Advisor +power=1 +toughness=2 +text={T}: Draw a card. Activate this ability only during your turn, before attackers are declared. +rarity=R +[/card] +[card] +id=10616 +name=Lu Xun, Scholar General +mana={2}{U}{U} +type=Legendary Creature +subtype=Human Soldier +power=1 +toughness=3 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) Whenever Lu Xun, Scholar General deals damage to an opponent, you may draw a card. +rarity=U +[/card] +[card] +id=10729 +name=Ma Chao, Western Warrior +mana={3}{R}{R} +type=Legendary Creature +subtype=Human Soldier Warrior +power=3 +toughness=3 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) Whenever Ma Chao, Western Warrior attacks alone, it's unblockable this combat. +rarity=R +[/card] +[card] +id=10547 +name=Marshaling the Troops +mana={1}{G} +type=Sorcery +text=Tap any number of untapped creatures you control. You gain 4 life for each creature tapped this way. +rarity=R +[/card] +[card] +id=10732 +name=Meng Huo, Barbarian King +mana={3}{G}{G} +type=Legendary Creature +subtype=Human Barbarian Soldier +power=4 +toughness=4 +text=Other green creatures you control get +1/+1. +rarity=R +[/card] +[card] +id=10503 +name=Meng Huo's Horde +mana={4}{G} +type=Creature +subtype=Human Soldier +power=4 +toughness=5 +rarity=C +[/card] +[card] +id=10579 +name=Misfortune's Gain +mana={3}{W} +type=Sorcery +text=Destroy target creature. Its owner gains 4 life. +rarity=C +[/card] +[card] +id=10643 +name=Mountain +mana= +type=Basic Land +subtype=Mountain +text=R +rarity=C +[/card] +[card] +id=10585 +name=Mountain Bandit +mana={R} +type=Creature +subtype=Human Soldier Rogue +power=1 +toughness=1 +text=Haste +rarity=C +[/card] +[card] +id=10565 +name=Mystic Denial +mana={1}{U}{U} +type=Instant +text=Counter target creature or sorcery spell. +rarity=U +[/card] +[card] +id=10521 +name=Overwhelming Forces +mana={6}{B}{B} +type=Sorcery +text=Destroy all creatures target opponent controls. Draw a card for each creature destroyed this way. +rarity=R +[/card] +[card] +id=10713 +name=Pang Tong, "Young Phoenix" +mana={1}{W}{W} +type=Legendary Creature +subtype=Human Advisor +power=1 +toughness=2 +text={T}: Target creature gets +0/+2 until end of turn. Activate this ability only during your turn, before attackers are declared. +rarity=R +[/card] +[card] +id=10531 +name=Peach Garden Oath +mana={W} +type=Sorcery +text=You gain 2 life for each creature you control. +rarity=U +[/card] +[card] +id=10645 +name=Plains +mana= +type=Basic Land +subtype=Plains +text=W +rarity=C +[/card] +[card] +id=10587 +name=Poison Arrow +mana={4}{B}{B} +type=Sorcery +text=Destroy target nonblack creature. You gain 3 life. +rarity=U +[/card] +[card] +id=10530 +name=Preemptive Strike +mana={1}{U} +type=Instant +text=Counter target creature spell. +rarity=C +[/card] +[card] +id=10589 +name=Rally the Troops +mana={W} +type=Instant +text=Cast Rally the Troops only during the declare attackers step and only if you've been attacked this step. Untap all creatures you control. +rarity=U +[/card] +[card] +id=10500 +name=Ravages of War +mana={3}{W} +type=Sorcery +text=Destroy all lands. +rarity=R +[/card] +[card] +id=13805 +name=Ravaging Horde +mana={3}{R}{R} +type=Creature +subtype=Human Soldier +power=3 +toughness=3 +text=When Ravaging Horde enters the battlefield, destroy target land. +rarity=U +[/card] +[card] +id=10501 +name=Red Cliffs Armada +mana={4}{U} +type=Creature +subtype=Human Soldier +power=5 +toughness=4 +text=Red Cliffs Armada can't attack unless defending player controls an Island. +rarity=U +[/card] +[card] +id=10592 +name=Relentless Assault +mana={2}{R}{R} +type=Sorcery +text=Untap all creatures that attacked this turn. After this main phase, there is an additional combat phase followed by an additional main phase. +rarity=R +[/card] +[card] +id=10576 +name=Renegade Troops +mana={4}{R} +type=Creature +subtype=Human Soldier +power=4 +toughness=2 +text=Haste +rarity=U +[/card] +[card] +id=10588 +name=Return to Battle +mana={B} +type=Sorcery +text=Return target creature card from your graveyard to your hand. +rarity=C +[/card] +[card] +id=10496 +name=Riding Red Hare +mana={2}{W} +type=Sorcery +text=Target creature gets +3/+3 and gains horsemanship until end of turn. (It can't be blocked except by creatures with horsemanship.) +rarity=C +[/card] +[card] +id=10731 +name=Riding the Dilu Horse +mana={2}{G} +type=Sorcery +text=Target creature gets +2/+2 and gains horsemanship. (It can't be blocked except by creatures with horsemanship. This effect lasts indefinitely.) +rarity=U +[/card] +[card] +id=10603 +name=Rockslide Ambush +mana={1}{R} +type=Sorcery +text=Rockslide Ambush deals damage equal to the number of Mountains you control to target creature. +rarity=U +[/card] +[card] +id=10526 +name=Rolling Earthquake +mana={X}{R} +type=Sorcery +text=Rolling Earthquake deals X damage to each creature without horsemanship and each player. +rarity=R +[/card] +[card] +id=10524 +name=Sage's Knowledge +mana={2}{U} +type=Sorcery +text=Return target sorcery card from your graveyard to your hand. +rarity=C +[/card] +[card] +id=10635 +name=Shu Cavalry +mana={2}{W} +type=Creature +subtype=Human Soldier +power=2 +toughness=2 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) +rarity=C +[/card] +[card] +id=10624 +name=Shu Defender +mana={2}{W} +type=Creature +subtype=Human Soldier +power=2 +toughness=2 +text=Whenever Shu Defender blocks, it gets +0/+2 until end of turn. +rarity=C +[/card] +[card] +id=10497 +name=Shu Elite Companions +mana={4}{W} +type=Creature +subtype=Human Soldier +power=3 +toughness=3 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) +rarity=U +[/card] +[card] +id=10627 +name=Shu Elite Infantry +mana={3}{W} +type=Creature +subtype=Human Soldier +power=3 +toughness=3 +rarity=C +[/card] +[card] +id=10618 +name=Shu Farmer +mana={1}{W} +type=Creature +subtype=Human +power=1 +toughness=1 +text={T}: You gain 1 life. Activate this ability only during your turn, before attackers are declared. +rarity=C +[/card] +[card] +id=10489 +name=Shu Foot Soldiers +mana={2}{W} +type=Creature +subtype=Human Soldier +power=2 +toughness=3 +rarity=C +[/card] +[card] +id=10502 +name=Shu General +mana={3}{W} +type=Creature +subtype=Human Soldier +power=2 +toughness=2 +text=Vigilance; horsemanship (This creature can't be blocked except by creatures with horsemanship.) +rarity=U +[/card] +[card] +id=10617 +name=Shu Grain Caravan +mana={2}{W} +type=Creature +subtype=Human Soldier +power=2 +toughness=2 +text=When Shu Grain Caravan enters the battlefield, you gain 2 life. +rarity=C +[/card] +[card] +id=10488 +name=Shu Soldier-Farmers +mana={4}{W} +type=Creature +subtype=Human Soldier +power=2 +toughness=4 +text=When Shu Soldier-Farmers enters the battlefield, you gain 4 life. +rarity=U +[/card] +[card] +id=10630 +name=Sima Yi, Wei Field Marshal +mana={5}{B} +type=Legendary Creature +subtype=Human Soldier +power=* +toughness=4 +text=Sima Yi, Wei Field Marshal's power is equal to the number of Swamps you control. +rarity=R +[/card] +[card] +id=10591 +name=Slashing Tiger +mana={2}{G}{G} +type=Creature +subtype=Cat +power=3 +toughness=3 +text=Whenever Slashing Tiger becomes blocked, it gets +2/+2 until end of turn. +rarity=R +[/card] +[card] +id=10545 +name=Southern Elephant +mana={3}{G} +type=Creature +subtype=Elephant +power=3 +toughness=4 +rarity=C +[/card] +[card] +id=10629 +name=Spoils of Victory +mana={2}{G} +type=Sorcery +text=Search your library for a Plains, Island, Swamp, Mountain, or Forest card and put that card onto the battlefield. Then shuffle your library. +rarity=U +[/card] +[card] +id=10566 +name=Spring of Eternal Peace +mana={3}{G}{G} +type=Sorcery +text=You gain 8 life. +rarity=C +[/card] +[card] +id=10550 +name=Stalking Tiger +mana={3}{G} +type=Creature +subtype=Cat +power=3 +toughness=3 +text=Stalking Tiger can't be blocked by more than one creature. +rarity=C +[/card] +[card] +id=10554 +name=Stolen Grain +mana={4}{B}{B} +type=Sorcery +text=Stolen Grain deals 5 damage to target opponent. You gain 5 life. +rarity=U +[/card] +[card] +id=10508 +name=Stone Catapult +mana={4}{B} +type=Creature +subtype=Human Soldier +power=1 +toughness=2 +text={T}: Destroy target tapped nonblack creature. Activate this ability only during your turn, before attackers are declared. +rarity=R +[/card] +[card] +id=10606 +name=Stone Rain +mana={2}{R} +type=Sorcery +text=Destroy target land. +rarity=C +[/card] +[card] +id=10602 +name=Strategic Planning +mana={1}{U} +type=Sorcery +text=Look at the top three cards of your library. Put one of them into your hand and the rest into your graveyard. +rarity=U +[/card] +[card] +id=10613 +name=Straw Soldiers +mana={1}{U} +type=Creature +subtype=Scarecrow Soldier +power=1 +toughness=3 +rarity=C +[/card] +[card] +id=10709 +name=Sun Ce, Young Conquerer +mana={3}{U}{U} +type=Legendary Creature +subtype=Human Soldier +power=3 +toughness=3 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) When Sun Ce, Young Conquerer enters the battlefield, you may return target creature to its owner's hand. +rarity=U +[/card] +[card] +id=10513 +name=Sun Quan, Lord of Wu +mana={4}{U}{U} +type=Legendary Creature +subtype=Human Soldier +power=4 +toughness=4 +text=Creatures you control have horsemanship. (They can't be blocked except by creatures with horsemanship.) +rarity=R +[/card] +[card] +id=10647 +name=Swamp +mana= +type=Basic Land +subtype=Swamp +text=B +rarity=C +[/card] +[card] +id=10569 +name=Taoist Hermit +mana={2}{G} +type=Creature +subtype=Human Mystic +power=2 +toughness=2 +text=Taoist Hermit can't be the target of spells or abilities your opponents control. +rarity=U +[/card] +[card] +id=10733 +name=Taoist Mystic +mana={2}{G} +type=Creature +subtype=Human Mystic +power=2 +toughness=2 +text=Taoist Mystic can't be blocked by creatures with horsemanship. +rarity=R +[/card] +[card] +id=10492 +name=Taunting Challenge +mana={1}{G}{G} +type=Sorcery +text=All creatures able to block target creature this turn do so. +rarity=R +[/card] +[card] +id=10567 +name=Three Visits +mana={1}{G} +type=Sorcery +text=Search your library for a Forest card and put that card onto the battlefield. Then shuffle your library. +rarity=C +[/card] +[card] +id=10573 +name=Trained Cheetah +mana={2}{G} +type=Creature +subtype=Cat +power=2 +toughness=2 +text=Whenever Trained Cheetah becomes blocked, it gets +1/+1 until end of turn. +rarity=U +[/card] +[card] +id=10571 +name=Trained Jackal +mana={G} +type=Creature +subtype=Hound +power=1 +toughness=2 +rarity=C +[/card] +[card] +id=10625 +name=Trip Wire +mana={2}{G} +type=Sorcery +text=Destroy target creature with horsemanship. +rarity=U +[/card] +[card] +id=10631 +name=Vengeance +mana={3}{W} +type=Sorcery +text=Destroy target tapped creature. +rarity=U +[/card] +[card] +id=10596 +name=Virtuous Charge +mana={2}{W} +type=Sorcery +text=Creatures you control get +1/+1 until end of turn. +rarity=C +[/card] +[card] +id=10483 +name=Volunteer Militia +mana={W} +type=Creature +subtype=Human Soldier +power=1 +toughness=2 +rarity=C +[/card] +[card] +id=10552 +name=Warrior's Oath +mana={R}{R} +type=Sorcery +text=Take an extra turn after this one. At the beginning of that turn's end step, you lose the game. +rarity=R +[/card] +[card] +id=10633 +name=Warrior's Stand +mana={1}{W} +type=Instant +text=Cast Warrior's Stand only during the declare attackers step and only if you've been attacked this step. Creatures you control get +2/+2 until end of turn. +rarity=U +[/card] +[card] +id=10557 +name=Wei Ambush Force +mana={1}{B} +type=Creature +subtype=Human Soldier +power=1 +toughness=1 +text=Whenever Wei Ambush Force attacks, it gets +2/+0 until end of turn. +rarity=C +[/card] +[card] +id=10583 +name=Wei Assassins +mana={3}{B}{B} +type=Creature +subtype=Human Soldier Assassin +power=3 +toughness=2 +text=When Wei Assassins enters the battlefield, target opponent chooses a creature he or she controls. Destroy it. +rarity=U +[/card] +[card] +id=10511 +name=Wei Elite Companions +mana={4}{B} +type=Creature +subtype=Human Soldier +power=3 +toughness=3 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) +rarity=U +[/card] +[card] +id=10519 +name=Wei Infantry +mana={1}{B} +type=Creature +subtype=Human Soldier +power=2 +toughness=1 +rarity=C +[/card] +[card] +id=10484 +name=Wei Night Raiders +mana={2}{B}{B} +type=Creature +subtype=Human Soldier +power=2 +toughness=2 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) Whenever Wei Night Raiders deals damage to an opponent, that player discards a card. +rarity=U +[/card] +[card] +id=10517 +name=Wei Scout +mana={1}{B} +type=Creature +subtype=Human Soldier Scout +power=1 +toughness=1 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) +rarity=C +[/card] +[card] +id=10561 +name=Wei Strike Force +mana={2}{B} +type=Creature +subtype=Human Soldier +power=2 +toughness=1 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) +rarity=C +[/card] +[card] +id=10562 +name=Wielding the Green Dragon +mana={1}{G} +type=Sorcery +text=Target creature gets +4/+4 until end of turn. +rarity=C +[/card] +[card] +id=10522 +name=Wolf Pack +mana={6}{G}{G} +type=Creature +subtype=Wolf +power=7 +toughness=6 +text=You may have Wolf Pack assign its combat damage as though it weren't blocked. +rarity=R +[/card] +[card] +id=10485 +name=Wu Admiral +mana={4}{U} +type=Creature +subtype=Human Soldier +power=3 +toughness=3 +text=Wu Admiral gets +1/+1 as long as an opponent controls an Island. +rarity=U +[/card] +[card] +id=10611 +name=Wu Elite Cavalry +mana={3}{U} +type=Creature +subtype=Human Soldier +power=2 +toughness=3 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) +rarity=C +[/card] +[card] +id=10600 +name=Wu Infantry +mana={1}{U} +type=Creature +subtype=Human Soldier +power=2 +toughness=1 +rarity=C +[/card] +[card] +id=10615 +name=Wu Light Cavalry +mana={1}{U} +type=Creature +subtype=Human Soldier +power=1 +toughness=2 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) +rarity=C +[/card] +[card] +id=10498 +name=Wu Longbowman +mana={2}{U} +type=Creature +subtype=Human Soldier Archer +power=1 +toughness=1 +text={T}: Wu Longbowman deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared. +rarity=U +[/card] +[card] +id=10612 +name=Wu Scout +mana={1}{U} +type=Creature +subtype=Human Soldier Scout +power=1 +toughness=1 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) When Wu Scout enters the battlefield, look at target opponent's hand. +rarity=C +[/card] +[card] +id=10529 +name=Wu Spy +mana={1}{U} +type=Creature +subtype=Human Soldier Rogue +power=1 +toughness=1 +text=When Wu Spy enters the battlefield, look at the top two cards of target player's library. Put one of them into his or her graveyard. +rarity=U +[/card] +[card] +id=10605 +name=Wu Warship +mana={2}{U} +type=Creature +subtype=Human Soldier +power=3 +toughness=3 +text=Wu Warship can't attack unless defending player controls an Island. +rarity=C +[/card] +[card] +id=10590 +name=Xiahou Dun, the One-Eyed +mana={2}{B}{B} +type=Legendary Creature +subtype=Human Soldier +power=3 +toughness=2 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) Sacrifice Xiahou Dun, the One-Eyed: Return target black card from your graveyard to your hand. Activate this ability only during your turn, before attackers are declared. +rarity=U +[/card] +[card] +id=13831 +name=Xun Yu, Wei Advisor +mana={1}{B}{B} +type=Legendary Creature +subtype=Human Advisor +power=1 +toughness=1 +text={T}: Target creature you control gets +2/+0 until end of turn. Activate this ability only during your turn, before attackers are declared. +rarity=R +[/card] +[card] +id=10537 +name=Yellow Scarves Cavalry +mana={1}{R} +type=Creature +subtype=Human Soldier +power=1 +toughness=1 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) Yellow Scarves Cavalry can't block. +rarity=C +[/card] +[card] +id=10577 +name=Yellow Scarves General +mana={3}{R} +type=Creature +subtype=Human Soldier +power=2 +toughness=2 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) Yellow Scarves General can't block. +rarity=R +[/card] +[card] +id=10542 +name=Yellow Scarves Troops +mana={1}{R} +type=Creature +subtype=Human Soldier +power=2 +toughness=2 +text=Yellow Scarves Troops can't block. +rarity=C +[/card] +[card] +id=10584 +name=Young Wei Recruits +mana={1}{B} +type=Creature +subtype=Human Soldier +power=2 +toughness=2 +text=Young Wei Recruits can't block. +rarity=C +[/card] +[card] +id=10516 +name=Yuan Shao, the Indecisive +mana={4}{R} +type=Legendary Creature +subtype=Human Soldier +power=2 +toughness=3 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) Each creature you control can't be blocked by more than one creature. +rarity=R +[/card] +[card] +id=10559 +name=Yuan Shao's Infantry +mana={3}{R} +type=Creature +subtype=Human Soldier +power=2 +toughness=2 +text=Whenever Yuan Shao's Infantry attacks alone, Yuan Shao's Infantry is unblockable this combat. +rarity=U +[/card] +[card] +id=10604 +name=Zhang Fei, Fierce Warrior +mana={4}{W}{W} +type=Legendary Creature +subtype=Human Soldier Warrior +power=4 +toughness=4 +text=Vigilance; horsemanship (This creature can't be blocked except by creatures with horsemanship.) +rarity=U +[/card] +[card] +id=10520 +name=Zhang He, Wei General +mana={3}{B}{B} +type=Legendary Creature +subtype=Human Soldier +power=4 +toughness=2 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) Whenever Zhang He, Wei General attacks, each other creature you control gets +1/+0 until end of turn. +rarity=R +[/card] +[card] +id=10727 +name=Zhang Liao, Hero of Hefei +mana={4}{B}{B} +type=Legendary Creature +subtype=Human Soldier +power=3 +toughness=3 +text=Whenever Zhang Liao, Hero of Hefei deals damage to an opponent, that opponent discards a card. +rarity=R +[/card] +[card] +id=10686 +name=Zhao Zilong, Tiger General +mana={3}{W}{W} +type=Legendary Creature +subtype=Human Soldier Warrior +power=3 +toughness=3 +text=Horsemanship (This creature can't be blocked except by creatures with horsemanship.) Whenever Zhao Zilong, Tiger General blocks, it gets +1/+1 until end of turn. +rarity=R +[/card] +[card] +id=10525 +name=Zhou Yu, Chief Commander +mana={5}{U}{U} +type=Legendary Creature +subtype=Human Soldier +power=8 +toughness=8 +text=Zhou Yu, Chief Commander can't attack unless defending player controls an Island. +rarity=R +[/card] +[card] +id=10711 +name=Zhuge Jin, Wu Strategist +mana={1}{U}{U} +type=Legendary Creature +subtype=Human Advisor +power=1 +toughness=1 +text={T}: Target creature is unblockable this turn. Activate this ability only during your turn, before attackers are declared. +rarity=R +[/card] +[card] +id=10534 +name=Zodiac Dog +mana={2}{R} +type=Creature +subtype=Hound +power=2 +toughness=2 +text=Mountainwalk +rarity=C +[/card] +[card] +id=10510 +name=Zodiac Dragon +mana={7}{R}{R} +type=Creature +subtype=Dragon +power=8 +toughness=8 +text=When Zodiac Dragon is put into your graveyard from the battlefield, you may return it to your hand. +rarity=R +[/card] +[card] +id=10540 +name=Zodiac Goat +mana={R} +type=Creature +subtype=Goat +power=1 +toughness=1 +text=Mountainwalk +rarity=C +[/card] +[card] +id=10598 +name=Zodiac Horse +mana={3}{G} +type=Creature +subtype=Horse +power=3 +toughness=3 +text=Islandwalk +rarity=U +[/card] +[card] +id=10558 +name=Zodiac Monkey +mana={1}{G} +type=Creature +subtype=Ape +power=2 +toughness=1 +text=Forestwalk (This creature is unblockable as long as defending player controls a Forest.) +rarity=C +[/card] +[card] +id=10636 +name=Zodiac Ox +mana={3}{G} +type=Creature +subtype=Ox +power=3 +toughness=3 +text=Swampwalk +rarity=U +[/card] +[card] +id=10586 +name=Zodiac Pig +mana={3}{B} +type=Creature +subtype=Boar +power=3 +toughness=3 +text=Swampwalk +rarity=U +[/card] +[card] +id=10582 +name=Zodiac Rabbit +mana={G} +type=Creature +subtype=Rabbit +power=1 +toughness=1 +text=Forestwalk +rarity=C +[/card] +[card] +id=10564 +name=Zodiac Rat +mana={B} +type=Creature +subtype=Rat +power=1 +toughness=1 +text=Swampwalk +rarity=C +[/card] +[card] +id=10506 +name=Zodiac Rooster +mana={1}{G} +type=Creature +subtype=Bird +power=2 +toughness=1 +text=Plainswalk +rarity=C +[/card] +[card] +id=10608 +name=Zodiac Snake +mana={2}{B} +type=Creature +subtype=Snake +power=2 +toughness=2 +text=Swampwalk +rarity=C +[/card] +[card] +id=10594 +name=Zodiac Tiger +mana={2}{G}{G} +type=Creature +subtype=Cat +power=3 +toughness=4 +text=Forestwalk +rarity=U +[/card] +[card] +id=10610 +name=Zuo Ci, the Mocking Sage +mana={1}{G}{G} +type=Legendary Creature +subtype=Human Advisor +power=1 +toughness=2 +text=Zuo Ci, the Mocking Sage can't be blocked by creatures with horsemanship. Zuo Ci can't be the target of spells or abilities your opponents control. +rarity=R +[/card] diff --git a/projects/mtg/bin/Res/sets/RV/_cards.dat b/projects/mtg/bin/Res/sets/RV/_cards.dat index 671d7fb6d..1166a71e4 100644 --- a/projects/mtg/bin/Res/sets/RV/_cards.dat +++ b/projects/mtg/bin/Res/sets/RV/_cards.dat @@ -2112,7 +2112,7 @@ type=Instant [/card] [card] text={5}, {T}: Put a 1/1 Insect artifact creature token with flying named Wasp onto the battlefield. (It can't be blocked except by creatures with flying or reach.) -auto={5},{T}:token(Wasp,creature artifact insect, 1/1,flying artifact) +auto={5},{T}:token(-1138) id=1138 name=The Hive rarity=R @@ -2120,6 +2120,17 @@ mana={5} type=Artifact [/card] [card] +text=Flying +abilities=flying +id=-1138 +name=Wasp +type=Artifact Creature +rarity=T +power=1 +toughness=1 +type=Artifact +[/card] +[card] text=As The Rack enters the battlefield, choose an opponent. At the beginning of the chosen player's upkeep, The Rack deals X damage to that player, where X is 3 minus the number of cards in his or her hand. id=1139 name=The Rack diff --git a/projects/mtg/bin/Res/test/_tests.txt b/projects/mtg/bin/Res/test/_tests.txt index 8fd06c481..cacd7857c 100644 --- a/projects/mtg/bin/Res/test/_tests.txt +++ b/projects/mtg/bin/Res/test/_tests.txt @@ -37,6 +37,7 @@ generic/targetController_life.txt generic/targetController_life2.txt generic/targetController_damage.txt generic/tokens.txt +generic/tokens2.txt generic/trample.txt generic/trample_vs_indestructible.txt generic/trample_vs_multiblock.txt diff --git a/projects/mtg/bin/Res/test/generic/tokens2.txt b/projects/mtg/bin/Res/test/generic/tokens2.txt new file mode 100644 index 000000000..14e8180b1 --- /dev/null +++ b/projects/mtg/bin/Res/test/generic/tokens2.txt @@ -0,0 +1,39 @@ +#Bug:Segfault in GuiPlay.cpp +[INIT] +SECONDMAIN +[PLAYER1] +inplay:135253 +manapool:{5} +[PLAYER2] +inplay:hypnotic specter +[DO] +135253 +eot +eot +next +#upkeep +next +#draw +next +#main +next +#combat begins +next +#attackers +-135253 +next +#blockers +hypnotic specter +next +#damage +next +#end combat +eot +next +[ASSERT] +UPKEEP +[PLAYER1] +inplay:135253 +[PLAYER2] +inplay:hypnotic specter +[END] \ No newline at end of file diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index f33af55d6..72a520317 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -537,12 +537,18 @@ public: listtypes; listcolors; int power, toughness; + int tokenId; string name; WParsedInt * multiplier; + ATokenCreator(int _id,MTGCardInstance * _source,ManaCost * _cost, int tokenId, int _doTap, WParsedInt * multiplier = NULL):ActivatedAbility(_id,_source,_cost,0,_doTap), multiplier(multiplier), tokenId(tokenId){ + if(!multiplier) this->multiplier = NEW WParsedInt(1); + } + ATokenCreator(int _id,MTGCardInstance * _source,ManaCost * _cost, string sname, string stypes,int _power,int _toughness, string sabilities, int _doTap, WParsedInt * multiplier = NULL):ActivatedAbility(_id,_source,_cost,0,_doTap), multiplier(multiplier){ power = _power; toughness = _toughness; name = sname; + tokenId = 0; if(!multiplier) this->multiplier = NEW WParsedInt(1); //TODO this is a copy/past of other code that's all around the place, everything should be in a dedicated parser class; @@ -578,20 +584,27 @@ public: int resolve(){ for (int i = 0; i < multiplier->getValue(); ++i){ - Token * myToken = NEW Token(name,source,power,toughness); - list::iterator it; - for ( it=types.begin() ; it != types.end(); it++ ){ - myToken->addType(*it); - } - for ( it=colors.begin() ; it != colors.end(); it++ ){ - myToken->setColor(*it); - } - for ( it=abilities.begin() ; it != abilities.end(); it++ ){ - myToken->basicAbilities[*it] = 1; + MTGCardInstance * myToken; + if (tokenId){ + MTGCard * card = GameApp::collection->getCardById(tokenId); + myToken = NEW MTGCardInstance(card,source->controller()->game); + } else { + myToken = NEW Token(name,source,power,toughness); + list::iterator it; + for ( it=types.begin() ; it != types.end(); it++ ){ + myToken->addType(*it); + } + for ( it=colors.begin() ; it != colors.end(); it++ ){ + myToken->setColor(*it); + } + for ( it=abilities.begin() ; it != abilities.end(); it++ ){ + myToken->basicAbilities[*it] = 1; + } } source->controller()->game->temp->addCard(myToken); Spell * spell = NEW Spell(myToken); spell->resolve(); + spell->source->isToken = 1; delete spell; } return 1; diff --git a/projects/mtg/include/GameApp.h b/projects/mtg/include/GameApp.h index 76925e582..b4457143a 100644 --- a/projects/mtg/include/GameApp.h +++ b/projects/mtg/include/GameApp.h @@ -63,7 +63,7 @@ class GameApp: public JApp public: int players[2]; - MTGAllCards * collection; + int gameType; CardEffect *effect; @@ -84,6 +84,7 @@ class GameApp: public JApp static int HasMusic; static string systemError; static JMusic* music; + static MTGAllCards * collection; }; diff --git a/projects/mtg/include/MTGDeck.h b/projects/mtg/include/MTGDeck.h index 23d9aa150..5dadd90dd 100644 --- a/projects/mtg/include/MTGDeck.h +++ b/projects/mtg/include/MTGDeck.h @@ -58,6 +58,7 @@ class MTGSets{ public: friend class MTGSetInfo; MTGSets(); + ~MTGSets(); int Add(const char * subtype); int findSet(string value); diff --git a/projects/mtg/include/MTGDefinitions.h b/projects/mtg/include/MTGDefinitions.h index 0fa4720f3..5f4557cf6 100644 --- a/projects/mtg/include/MTGDefinitions.h +++ b/projects/mtg/include/MTGDefinitions.h @@ -110,6 +110,7 @@ class Constants RARITY_U = 'U', RARITY_C = 'C', RARITY_L = 'L', + RARITY_T = 'T', //Tokens //Price for singles PRICE_1M = 3000, diff --git a/projects/mtg/include/TargetChooser.h b/projects/mtg/include/TargetChooser.h index 388969f3d..03ffc11b0 100644 --- a/projects/mtg/include/TargetChooser.h +++ b/projects/mtg/include/TargetChooser.h @@ -42,7 +42,7 @@ class TargetChooser: public TargetsList { MTGCardInstance * targetter; //Optional, usually equals source, used for protection from... int maxtargets; //Set to -1 for "unlimited" - virtual int targetsZone(MTGGameZone * z){return 0;}; + virtual bool targetsZone(MTGGameZone * z){return false;}; int ForceTargetListReady(); int targetsReadyCheck(); virtual int addTarget(Targetable * target); @@ -68,7 +68,7 @@ class TargetZoneChooser:public TargetChooser{ int zones[10]; int nbzones; int init(int * _zones, int _nbzones); - int targetsZone(MTGGameZone * z); + bool targetsZone(MTGGameZone * z); TargetZoneChooser(MTGCardInstance * card = NULL, int _maxtargets = 1, bool other = false); TargetZoneChooser(int * _zones, int _nbzones, MTGCardInstance * card = NULL, int _maxtargets = 1, bool other = false); virtual bool canTarget(Targetable * _card); diff --git a/projects/mtg/src/GameApp.cpp b/projects/mtg/src/GameApp.cpp index 73a7b04bc..de3e6cd80 100644 --- a/projects/mtg/src/GameApp.cpp +++ b/projects/mtg/src/GameApp.cpp @@ -19,6 +19,7 @@ #include "../include/Translate.h" hgeParticleSystem* GameApp::Particles[] = {NULL,NULL,NULL,NULL,NULL,NULL}; +MTGAllCards * GameApp::collection = NULL; int GameApp::HasMusic = 1; JMusic * GameApp::music = NULL; string GameApp::systemError = ""; @@ -66,7 +67,7 @@ GameApp::~GameApp() void GameApp::Create() { - srand(time(0)); // initialize random + srand((unsigned int)time(0)); // initialize random #if defined (WIN32) _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); #elif not defined (LINUX) diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index 8a2c26ba9..2e80aac83 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -385,9 +385,21 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG //Token creator. Name, type, p/t, abilities found = s.find("token("); if (found != string::npos){ - int end = s.find(",", found); + WParsedInt * multiplier = NULL; + size_t star = s.find("*"); + if (star != string::npos) multiplier = NEW WParsedInt(s.substr(star+1),spell,card); + + size_t end = s.find(")", found); + int tokenId = atoi(s.substr(found + 6,end - found - 6).c_str()); + if (tokenId){ + ATokenCreator * tok = NEW ATokenCreator(id,card,NULL,tokenId,0, multiplier); + tok->oneShot = 1; + return tok; + } + + end = s.find(",", found); string sname = s.substr(found + 6,end - found - 6); - int previous = end+1; + size_t previous = end+1; end = s.find(",",previous); string stypes = s.substr(previous,end - previous); previous = end+1; @@ -396,9 +408,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG int power, toughness; parsePowerToughness(spt,&power, &toughness); string sabilities = s.substr(end+1); - WParsedInt * multiplier = NULL; - found = s.find("*"); - if (found != string::npos)multiplier = NEW WParsedInt(s.substr(found+1),spell,card); + ATokenCreator * tok = NEW ATokenCreator(id,card,NULL,sname,stypes,power,toughness,sabilities,0, multiplier); tok->oneShot = 1; return tok; diff --git a/projects/mtg/src/MTGDeck.cpp b/projects/mtg/src/MTGDeck.cpp index 6d56e1a53..6bc942b06 100644 --- a/projects/mtg/src/MTGDeck.cpp +++ b/projects/mtg/src/MTGDeck.cpp @@ -447,12 +447,7 @@ int MTGDeck::addRandomCards(int howmany, int * setIds, int nbSets, int rarity, c int collectionTotal = database->totalCards(); if (!collectionTotal) return 0; - if (nbSets == 0 && rarity == -1 && !_subtype && !nbcolors){ - for (int i = 0; i < howmany; i++){ - add(database->randomCardId()); - } - return 1; - } + char subtype[4096]; if (_subtype) sprintf(subtype, _subtype); @@ -462,7 +457,8 @@ int MTGDeck::addRandomCards(int howmany, int * setIds, int nbSets, int rarity, c int subtotal = 0; for (int i = 0; i < collectionTotal; i++){ MTGCard * card = database->_(i); - if ((rarity == -1 || card->getRarity()==rarity) && + int r = card->getRarity(); + if (r != Constants::RARITY_T && (rarity == -1 || r==rarity) && (!_subtype || card->hasSubtype(subtype)) ){ int ok = 0; @@ -612,6 +608,12 @@ MTGSets setlist; //Our global. MTGSets::MTGSets(){ } +MTGSets::~MTGSets(){ + for (size_t i = 0; i < setinfo.size(); ++i){ + delete (setinfo[i]); + } +} + MTGSetInfo* MTGSets::getInfo(int setID){ if(setID < 0 || setID >= (int) setinfo.size()) return NULL; diff --git a/projects/mtg/src/TargetChooser.cpp b/projects/mtg/src/TargetChooser.cpp index 70d2f845b..c122f223e 100644 --- a/projects/mtg/src/TargetChooser.cpp +++ b/projects/mtg/src/TargetChooser.cpp @@ -530,10 +530,10 @@ OutputDebugString ("CHECKING INTERRUPTIBLE\n"); } -int TargetZoneChooser::targetsZone(MTGGameZone * z){ +bool TargetZoneChooser::targetsZone(MTGGameZone * z){ for (int i = 0; i < nbzones; i++) - if (MTGGameZone::intToZone(zones[i],source) == z) return 1; - return 0; + if (MTGGameZone::intToZone(zones[i],source) == z) return true; + return false; } /* Player Target */