Added/fixed primitives, updated the "missing_cards_by_sets" folder, fixed several crash on Commander Format, fixed a possible crash using "and!()!" with "imprint", added a new macros "_REBOUND_" and "_GOAD_" related to rebound and goad abilities and refactored all cards using them, implemented a new keywords "haunt", "hasprey", "preyname" and "isprey" related the haunting ability and improved all cards using it, Added "commander" and "\*" to HINT castpriority for AI decks in order to allow the user to give a cast priority to commanders.

This commit is contained in:
Vittorio Alfieri
2021-09-02 19:32:45 +02:00
parent 54d0c32035
commit 001cea95bd
51 changed files with 634 additions and 800 deletions
+4 -1
View File
@@ -2,8 +2,11 @@
## [master] (https://github.com/WagicProject/wagic/tree/master) ## [master] (https://github.com/WagicProject/wagic/tree/master)
### 02/09/21
- *Committed:* Added/fixed primitives, updated the "missing_cards_by_sets" folder, fixed several crash on Commander Format, fixed a possible crash using "and!()!" with "imprint", added a new macros "_REBOUND_" and "_GOAD_" related to rebound and goad abilities and refactored all cards using them, implemented a new keywords "haunt", "hasprey", "preyname" and "isprey" related the haunting ability and improved all cards using it, Added "commander" and "\*" to HINT castpriority for AI decks in order to allow the user to give a cast priority to commanders. ([Vitty85](https://github.com/Vitty85))
### 31/08/21 ### 31/08/21
- *Committed:* Added/fixed primitives, updated the "missing_cards_by_sets" folder, improved all cards with replicate (now they use a special version of multikicker but they don't count as kicked spell), improved all cards with "fizzle" and "fizzleto" ability and improved engine for "fizzle" and "nofizzle" ability (e.g. now it's possible to grant a card the nofizzle ability on stack), added new keyword "mycolnum" to count the number colors of a card. ([Vitty85](https://github.com/Vitty85)) - *Committed:* Added/fixed primitives, updated the "missing_cards_by_sets" folder, improved all cards with replicate (now they use a special version of multikicker but they don't count as kicked spell), improved all cards with "fizzle" and "fizzleto" ability and improved engine for "fizzle" and "nofizzle" ability (e.g. now it's possible to grant a card the nofizzle ability on stack), added new keyword "mycolnum" to count the number colors of a card. https://github.com/WagicProject/wagic/commit/54d0c3203551b377146d4bbe7d5af0c642b1058e ([Vitty85](https://github.com/Vitty85))
### 30/08/21 ### 30/08/21
- *Committed:* Added/fixed primitives, updated the "missing_cards_by_sets" folder, added a new trigger when a player shuffles his/her library, added new keywords "plastshlturn" and "olastshlturn" to retrieve the last turn a player shuffled his/her library, refactoring of some source files. https://github.com/WagicProject/wagic/commit/45de20c8d3f0449e33286fad09b000a695b07c24 ([Vitty85](https://github.com/Vitty85)) - *Committed:* Added/fixed primitives, updated the "missing_cards_by_sets" folder, added a new trigger when a player shuffles his/her library, added new keywords "plastshlturn" and "olastshlturn" to retrieve the last turn a player shuffled his/her library, refactoring of some source files. https://github.com/WagicProject/wagic/commit/45de20c8d3f0449e33286fad09b000a695b07c24 ([Vitty85](https://github.com/Vitty85))
@@ -59,12 +59,6 @@ mana={2}
type=Artifact type=Artifact
[/card] [/card]
[card] [card]
name=Deadly Designs
text={2}: Put a plot counter on Deadly Designs. Any player may activate this ability. -- When there are five or more plot counters on Deadly Designs, sacrifice it. If you do, destroy up to two target creatures.
mana={1}{B}
type=Enchantment
[/card]
[card]
name=Gisela, Blade of Goldnight name=Gisela, Blade of Goldnight
abilities=flying,first strike abilities=flying,first strike
text=Flying, first strike -- If a source would deal damage to an opponent or a permanent an opponent controls, that source deals double that damage to that player or permanent instead. -- If a source would deal damage to you or a permanent you control, prevent half that damage, rounded up. text=Flying, first strike -- If a source would deal damage to an opponent or a permanent an opponent controls, that source deals double that damage to that player or permanent instead. -- If a source would deal damage to you or a permanent you control, prevent half that damage, rounded up.
@@ -92,12 +92,6 @@ mana={2}
type=Artifact type=Artifact
[/card] [/card]
[card] [card]
name=Metamorphosis
text=As an additional cost to cast Metamorphosis, sacrifice a creature. -- Add X mana of any one color to your mana pool, where X is one plus the sacrificed creature's converted mana cost. Spend this mana only to cast creature spells.
mana={G}
type=Sorcery
[/card]
[card]
name=Nafs Asp name=Nafs Asp
text=Whenever Nafs Asp deals damage to a player, that player loses 1 life at the beginning of his or her next draw step unless he or she pays {1} before that draw step. text=Whenever Nafs Asp deals damage to a player, that player loses 1 life at the beginning of his or her next draw step unless he or she pays {1} before that draw step.
mana={G} mana={G}
@@ -39,15 +39,6 @@ power=0
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Spirit of the Labyrinth
text=Each player can't draw more than one card each turn.
mana={1}{W}
type=Enchantment Creature
subtype=Spirit
power=3
toughness=1
[/card]
[card]
name=Mindreaver name=Mindreaver
text=Heroic — Whenever you cast a spell that targets Mindreaver, exile the top three cards of target player's library. -- {U}{U}, Sacrifice Mindreaver: Counter target spell with the same name as a card exiled with Mindreaver. text=Heroic — Whenever you cast a spell that targets Mindreaver, exile the top three cards of target player's library. -- {U}{U}, Sacrifice Mindreaver: Counter target spell with the same name as a card exiled with Mindreaver.
mana={U}{U} mana={U}{U}
@@ -58,41 +58,6 @@ power=1
toughness=3 toughness=3
[/card] [/card]
[card] [card]
name=Curse of the Forsaken
text=Enchant player -- Whenever a creature attacks enchanted player, its controller gains 1 life.
mana={2}{W}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Curse of Shallow Graves
text=Enchant player -- Whenever a player attacks enchanted player with one or more creatures, that attacking player may put a 2/2 black Zombie creature token onto the battlefield tapped.
mana={2}{B}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Curse of Predation
text=Enchant player -- Whenever a creature attacks enchanted player, put a +1/+1 counter on it.
mana={2}{G}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Curse of Inertia
text=Enchant player -- Whenever a player attacks enchanted player with one or more creatures, that attacking player may tap or untap target permanent of his or her choice.
mana={2}{U}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Curse of Chaos
text=Enchant player -- Whenever a player attacks enchanted player with one or more creatures, that attacking player may discard a card. If the player does, he or she draws a card.
mana={2}{R}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Lim-Dul's Vault name=Lim-Dul's Vault
text=Look at the top five cards of your library. As many times as you choose, you may pay 1 life, put those cards on the bottom of your library in any order, then look at the top five cards of your library. Then shuffle your library and put the last cards you looked at this way on top of it in any order. text=Look at the top five cards of your library. As many times as you choose, you may pay 1 life, put those cards on the bottom of your library in any order, then look at the top five cards of your library. Then shuffle your library and put the last cards you looked at this way on top of it in any order.
mana={U}{B} mana={U}{B}
@@ -1,13 +1,4 @@
[card] [card]
name=Corpsejack Menace
text=If one or more +1/+1 counters would be placed on a creature you control, twice that many +1/+1 counters are placed on it instead.
mana={2}{B}{G}
type=Creature
subtype=Fungus
power=4
toughness=4
[/card]
[card]
name=Chain of Vapor name=Chain of Vapor
text=Return target nonland permanent to its owner's hand. Then that permanent's controller may sacrifice a land. If the player does, he or she may copy this spell and may choose a new target for that copy. text=Return target nonland permanent to its owner's hand. Then that permanent's controller may sacrifice a land. If the player does, he or she may copy this spell and may choose a new target for that copy.
mana={U} mana={U}
@@ -92,13 +83,6 @@ power=1
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Curse of Vengeance
text=Enchant player -- Whenever enchanted player casts a spell, put a spite counter on Curse of Vengeance. -- When enchanted player loses the game, you gain X life and draw X cards, where X is the number of spite counters on Curse of Vengeance.
mana={B}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Cruel Entertainment name=Cruel Entertainment
text=Choose target player and another target player. The first player controls the second player during the second player's next turn, and the second player controls the first player during the first player's next turn. text=Choose target player and another target player. The first player controls the second player during the second player's next turn, and the second player controls the first player during the first player's next turn.
mana={6}{B} mana={6}{B}
@@ -106,12 +106,3 @@ subtype=Sphinx
power=4 power=4
toughness=4 toughness=4
[/card] [/card]
[card]
name=Daxos of Meletis
text=Daxos of Meletis can't be blocked by creatures with power 3 or greater. -- Whenever Daxos of Meletis deals combat damage to a player, exile the top card of that player's library. You gain life equal to that card's converted mana cost. Until end of turn, you may cast that card and you may spend mana as though it were mana of any color to cast it.
mana={1}{W}{U}
type=Legendary Creature
subtype=Human Soldier
power=2
toughness=2
[/card]
@@ -43,12 +43,6 @@ type=Enchantment
subtype=Aura subtype=Aura
[/card] [/card]
[card] [card]
name=Metamorphosis
text=As an additional cost to cast Metamorphosis, sacrifice a creature. -- Add X mana of any one color to your mana pool, where X is one plus the sacrificed creature's converted mana cost. Spend this mana only to cast creature spells.
mana={G}
type=Sorcery
[/card]
[card]
name=Goblin Artisans name=Goblin Artisans
text={T}: Flip a coin. If you win the flip, draw a card. If you lose the flip, counter target artifact spell you control that isn't the target of an ability from another creature named Goblin Artisans. text={T}: Flip a coin. If you win the flip, draw a card. If you lose the flip, counter target artifact spell you control that isn't the target of an ability from another creature named Goblin Artisans.
mana={R} mana={R}
@@ -27,15 +27,6 @@ mana={2}{WU}{WU}
type=Instant type=Instant
[/card] [/card]
[card] [card]
name=Corpsejack Menace
text=If one or more +1/+1 counters would be placed on a creature you control, twice that many +1/+1 counters are placed on it instead.
mana={2}{B}{G}
type=Creature
subtype=Fungus
power=4
toughness=4
[/card]
[card]
name=Oreskos Explorer name=Oreskos Explorer
text=When Oreskos Explorer enters the battlefield, search your library for up to X Plains cards, where X is the number of players who control more lands than you. Reveal those cards, put them into your hand, then shuffle your library. text=When Oreskos Explorer enters the battlefield, search your library for up to X Plains cards, where X is the number of players who control more lands than you. Reveal those cards, put them into your hand, then shuffle your library.
mana={1}{W} mana={1}{W}
@@ -9,13 +9,6 @@ power=1
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Curse of Inertia
text=Enchant player -- Whenever a player attacks enchanted player with one or more creatures, that attacking player may tap or untap target permanent of his or her choice.
mana={2}{U}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Tempt with Glory name=Tempt with Glory
text=Tempting offer — Put a +1/+1 counter on each creature you control. Each opponent may put a +1/+1 counter on each creature he or she controls. For each opponent who does, put a +1/+1 counter on each creature you control. text=Tempting offer — Put a +1/+1 counter on each creature you control. Each opponent may put a +1/+1 counter on each creature he or she controls. For each opponent who does, put a +1/+1 counter on each creature you control.
mana={5}{W} mana={5}{W}
@@ -37,13 +30,6 @@ mana={2}
type=Artifact type=Artifact
[/card] [/card]
[card] [card]
name=Curse of the Forsaken
text=Enchant player -- Whenever a creature attacks enchanted player, its controller gains 1 life.
mana={2}{W}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Flickerform name=Flickerform
text=Enchant creature -- {2}{W}{W}: Exile enchanted creature and all Auras attached to it. At the beginning of the next end step, return that card to the battlefield under its owner's control. If you do, return the other cards exiled this way to the battlefield under their owners' control attached to that creature. text=Enchant creature -- {2}{W}{W}: Exile enchanted creature and all Auras attached to it. At the beginning of the next end step, return that card to the battlefield under its owner's control. If you do, return the other cards exiled this way to the battlefield under their owners' control attached to that creature.
mana={1}{W} mana={1}{W}
@@ -51,13 +37,6 @@ type=Enchantment
subtype=Aura subtype=Aura
[/card] [/card]
[card] [card]
name=Curse of Predation
text=Enchant player -- Whenever a creature attacks enchanted player, put a +1/+1 counter on it.
mana={2}{G}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Mana-Charged Dragon name=Mana-Charged Dragon
abilities=flying,trample abilities=flying,trample
text=Flying, trample -- Join forces — Whenever Mana-Charged Dragon attacks or blocks, each player starting with you may pay any amount of mana. Mana-Charged Dragon gets +X/+0 until end of turn, where X is the total amount of mana paid this way. text=Flying, trample -- Join forces — Whenever Mana-Charged Dragon attacks or blocks, each player starting with you may pay any amount of mana. Mana-Charged Dragon gets +X/+0 until end of turn, where X is the total amount of mana paid this way.
@@ -8,12 +8,6 @@ power=2
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Deadly Designs
text={2}: Put a plot counter on Deadly Designs. Any player may activate this ability. -- When there are five or more plot counters on Deadly Designs, sacrifice it. If you do, destroy up to two target creatures.
mana={1}{B}
type=Enchantment
[/card]
[card]
name=Capital Punishment name=Capital Punishment
text=Council's dilemma — Starting with you, each player votes for death or taxes. Each opponent sacrifices a creature for each death vote and discards a card for each taxes vote. text=Council's dilemma — Starting with you, each player votes for death or taxes. Each opponent sacrifices a creature for each death vote and discards a card for each taxes vote.
mana={4}{B}{B} mana={4}{B}{B}
@@ -204,15 +198,6 @@ type=Artifact
subtype=Equipment subtype=Equipment
[/card] [/card]
[card] [card]
name=Leovold, Emissary of Trest
text=Each opponent can't draw more than one card each turn. -- Whenever you or a permanent you control becomes the target of a spell or ability an opponent controls, you may draw a card.
mana={B}{G}{U}
type=Legendary Creature
subtype=Elf Advisor
power=3
toughness=3
[/card]
[card]
name=Desertion name=Desertion
text=Counter target spell. If an artifact or creature spell is countered this way, put that card onto the battlefield under your control instead of into its owner's graveyard. text=Counter target spell. If an artifact or creature spell is countered this way, put that card onto the battlefield under your control instead of into its owner's graveyard.
mana={3}{U}{U} mana={3}{U}{U}
@@ -24,13 +24,6 @@ mana={3}{G}{G}
type=Enchantment type=Enchantment
[/card] [/card]
[card] [card]
name=Curse of Misfortunes
text=Enchant player -- At the beginning of your upkeep, you may search your library for a Curse card that doesn't have the same name as a Curse attached to enchanted player, put it onto the battlefield attached to that player, then shuffle your library.
mana={4}{B}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Soul Seizer name=Soul Seizer
abilities=flying abilities=flying
text=Flying -- When Soul Seizer deals combat damage to a player, you may transform it. If you do, attach it to target creature that player controls. text=Flying -- When Soul Seizer deals combat damage to a player, you may transform it. If you do, attach it to target creature that player controls.
@@ -57,10 +50,3 @@ text=Target permanent you control gains protection from the color of your choice
mana={W} mana={W}
type=Instant type=Instant
[/card] [/card]
[card]
name=Curse of Echoes
text=Enchant player -- Whenever enchanted player casts an instant or sorcery spell, each other player may copy that spell and may choose new targets for the copy he or she controls.
mana={4}{U}
type=Enchantment
subtype=Aura Curse
[/card]
@@ -1,13 +1,4 @@
[card] [card]
name=Robber of the Rich
text=Reach, haste -- Whenever Robber of the Rich attacks, if defending player has more cards in hand than you, exile the top card of their library. During any turn you attacked with a Rogue, you may cast that card and you may spend mana as though it were mana of any color to cast that spell.
mana={1}{R}
type=Creature
subtype=Human Archer Rogue
power=2
toughness=2
[/card]
[card]
name=Fervent Champion name=Fervent Champion
text=First strike, haste -- Whenever Fervent Champion attacks, another target attacking Knight you control gets +1/+0 until end of turn. -- Equip abilities you activate that target Fervent Champion cost 3 less to activate. text=First strike, haste -- Whenever Fervent Champion attacks, another target attacking Knight you control gets +1/+0 until end of turn. -- Equip abilities you activate that target Fervent Champion cost 3 less to activate.
mana={R} mana={R}
@@ -16,21 +7,3 @@ subtype=Human Knight
power=1 power=1
toughness=1 toughness=1
[/card] [/card]
[card]
name=Specter's Shriek
text=Target opponent reveals their hand. You may choose a nonland card from it. If you do, that player exiles that card. If a nonblack card is exiled this way, exile a card from your hand.
mana={B}
type=Sorcery
[/card]
[card]
name=Lucky Clover
text=Whenever you cast an Adventure instant or sorcery spell, copy it. You may choose new targets for the copy.
mana={2}
type=Artifact
[/card]
[card]
name=Covetous Urge
text=Target opponent reveals their hand. You choose a nonland card from that player's graveyard or hand and exile it. You may cast that card for as long as it remains exiled, and you may spend mana as though it were mana of any color to cast that spell.
mana={UB}{UB}{UB}{UB}
type=Sorcery
[/card]
@@ -1,6 +1,6 @@
[card] [card]
name=Spell Queller name=Spell Queller
abilities=flash abilities=flash,flying
text=Flash -- Flying -- When Spell Queller enters the battlefield, exile target spell with converted mana cost 4 or less. -- When Spell Queller leaves the battlefield, the exiled card's owner may cast that card without paying its mana cost. text=Flash -- Flying -- When Spell Queller enters the battlefield, exile target spell with converted mana cost 4 or less. -- When Spell Queller leaves the battlefield, the exiled card's owner may cast that card without paying its mana cost.
mana={1}{W}{U} mana={1}{W}{U}
type=Creature type=Creature
@@ -76,15 +76,6 @@ mana={2}{B}
type=Sorcery type=Sorcery
[/card] [/card]
[card] [card]
name=Mesmeric Sliver
text=All Slivers have "When this permanent enters the battlefield, you may fateseal 1." (To fateseal 1, its controller looks at the top card of an opponent's library, then he or she may put that card on the bottom of that library.)
mana={3}{U}
type=Creature
subtype=Sliver
power=2
toughness=2
[/card]
[card]
name=Nacatl War-Pride name=Nacatl War-Pride
text=Nacatl War-Pride must be blocked by exactly one creature if able. -- Whenever Nacatl War-Pride attacks, put X tokens that are copies of Nacatl War-Pride onto the battlefield tapped and attacking, where X is the number of creatures defending player controls. Exile the tokens at the beginning of the next end step. text=Nacatl War-Pride must be blocked by exactly one creature if able. -- Whenever Nacatl War-Pride attacks, put X tokens that are copies of Nacatl War-Pride onto the battlefield tapped and attacking, where X is the number of creatures defending player controls. Exile the tokens at the beginning of the next end step.
mana={3}{G}{G}{G} mana={3}{G}{G}{G}
@@ -1,11 +1,4 @@
[card] [card]
name=Curse of Predation
text=Enchant player -- Whenever a creature attacks enchanted player, put a +1/+1 counter on it.
mana={2}{G}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Sphinx of Uthuun name=Sphinx of Uthuun
abilities=flying abilities=flying
text=Flying -- When Sphinx of Uthuun enters the battlefield, reveal the top five cards of your library. An opponent separates those cards into two piles. Put one pile into your hand and the other into your graveyard. text=Flying -- When Sphinx of Uthuun enters the battlefield, reveal the top five cards of your library. An opponent separates those cards into two piles. Put one pile into your hand and the other into your graveyard.
@@ -15,12 +8,3 @@ subtype=Sphinx
power=5 power=5
toughness=6 toughness=6
[/card] [/card]
[card]
name=Corpsejack Menace
text=If one or more +1/+1 counters would be placed on a creature you control, twice that many +1/+1 counters are placed on it instead.
mana={2}{B}{G}
type=Creature
subtype=Fungus
power=4
toughness=4
[/card]
@@ -59,26 +59,8 @@ type=Enchantment
subtype=Aura subtype=Aura
[/card] [/card]
[card] [card]
name=Laquatus's Disdain
text=Counter target spell cast from a graveyard. -- Draw a card.
mana={1}{U}
type=Instant
[/card]
[card]
name=Firecat Blitz
text=Put X 1/1 red Elemental Cat creature tokens with haste onto the battlefield. Exile them at the beginning of the next end step. -- Flashback—{R}{R}, Sacrifice X Mountains. (You may cast this card from your graveyard for its flashback cost. Then exile it.)
mana={X}{R}{R}
type=Sorcery
[/card]
[card]
name=Breaking Point name=Breaking Point
text=Any player may have Breaking Point deal 6 damage to him or her. If no one does, destroy all creatures. Creatures destroyed this way can't be regenerated. text=Any player may have Breaking Point deal 6 damage to him or her. If no one does, destroy all creatures. Creatures destroyed this way can't be regenerated.
mana={1}{R}{R} mana={1}{R}{R}
type=Sorcery type=Sorcery
[/card] [/card]
[card]
name=Spelljack
text=Counter target spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard. You may play it without paying its mana cost for as long as it remains exiled. (If it has X in its mana cost, X is 0.)
mana={3}{U}{U}{U}
type=Instant
[/card]
@@ -25,16 +25,6 @@ text=Green legendary creatures you control have "bands with other legendary crea
type=Land type=Land
[/card] [/card]
[card] [card]
name=Firestorm Phoenix
abilities=flying
text=Flying -- If Firestorm Phoenix would die, return Firestorm Phoenix to its owner's hand instead. Until that player's next turn, that player plays with that card revealed in his or her hand and can't play it.
mana={4}{R}{R}
type=Creature
subtype=Phoenix
power=3
toughness=2
[/card]
[card]
name=Tempest Efreet name=Tempest Efreet
text=Remove Tempest Efreet from your deck before playing if you're not playing for ante. -- {T}, Sacrifice Tempest Efreet: Target opponent may pay 10 life. If that player doesn't, he or she reveals a card at random from his or her hand. Exchange ownership of the revealed card and Tempest Efreet. Put the revealed card into your hand and Tempest Efreet from anywhere into that player's graveyard. text=Remove Tempest Efreet from your deck before playing if you're not playing for ante. -- {T}, Sacrifice Tempest Efreet: Target opponent may pay 10 life. If that player doesn't, he or she reveals a card at random from his or her hand. Exchange ownership of the revealed card and Tempest Efreet. Put the revealed card into your hand and Tempest Efreet from anywhere into that player's graveyard.
mana={1}{R}{R}{R} mana={1}{R}{R}{R}
@@ -171,15 +171,6 @@ mana={2}{U}{B}
type=Sorcery type=Sorcery
[/card] [/card]
[card] [card]
name=Corpsejack Menace
text=If one or more +1/+1 counters would be placed on a creature you control, twice that many +1/+1 counters are placed on it instead.
mana={2}{B}{G}
type=Creature
subtype=Fungus
power=4
toughness=4
[/card]
[card]
name=Coalition Honor Guard name=Coalition Honor Guard
text=While choosing targets as part of casting a spell or activating an ability, your opponents must choose at least one Flagbearer on the battlefield if able. text=While choosing targets as part of casting a spell or activating an ability, your opponents must choose at least one Flagbearer on the battlefield if able.
mana={3}{W} mana={3}{W}
@@ -48,16 +48,6 @@ power=3
toughness=3 toughness=3
[/card] [/card]
[card] [card]
name=Firestorm Phoenix
abilities=flying
text=Flying -- If Firestorm Phoenix would die, return Firestorm Phoenix to its owner's hand instead. Until that player's next turn, that player plays with that card revealed in his or her hand and can't play it.
mana={4}{R}{R}
type=Creature
subtype=Phoenix
power=3
toughness=2
[/card]
[card]
name=Nebuchadnezzar name=Nebuchadnezzar
text={X}, {T}: Name a card. Target opponent reveals X cards at random from his or her hand. Then that player discards all cards with that name revealed this way. Activate this ability only during your turn. text={X}, {T}: Name a card. Target opponent reveals X cards at random from his or her hand. Then that player discards all cards with that name revealed this way. Activate this ability only during your turn.
mana={3}{U}{B} mana={3}{U}{B}
@@ -1,10 +1,4 @@
[card] [card]
name=Force of Rage
text=If it's not your turn, you may exile a red card from your hand rather than pay this spell's mana cost. -- Create two 3/1 red Elemental creature tokens with trample and haste. Sacrifice those tokens at the beginning of your next upkeep.
mana={1}{R}{R}
type=Instant
[/card]
[card]
name=Everdream name=Everdream
text=Draw a card. -- Splice onto instant or sorcery {2}{U} (As you cast an instant or sorcery spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.) text=Draw a card. -- Splice onto instant or sorcery {2}{U} (As you cast an instant or sorcery spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.)
mana={1}{U} mana={1}{U}
@@ -79,9 +79,3 @@ text=Exile all nontoken permanents. Starting with you, each player chooses one o
mana={4}{R}{R}{R} mana={4}{R}{R}{R}
type=Sorcery type=Sorcery
[/card] [/card]
[card]
name=Food Chain
text=Exile a creature you control: Add X mana of any one color to your mana pool, where X is the exiled creature's converted mana cost plus one. Spend this mana only to cast creature spells.
mana={2}{G}
type=Enchantment
[/card]
@@ -21,12 +21,6 @@ mana={5}
type=Legendary Artifact type=Legendary Artifact
[/card] [/card]
[card] [card]
name=Food Chain
text=Exile a creature you control: Add X mana of any one color to your mana pool, where X is the exiled creature's converted mana cost plus one. Spend this mana only to cast creature spells.
mana={2}{G}
type=Enchantment
[/card]
[card]
name=Ixidor, Reality Sculptor name=Ixidor, Reality Sculptor
text=Face-down creatures get +1/+1. -- {2}{U}: Turn target face-down creature face up. text=Face-down creatures get +1/+1. -- {2}{U}: Turn target face-down creature face up.
mana={3}{U}{U} mana={3}{U}{U}
@@ -5,12 +5,6 @@ mana={3}{U}{U}
type=Instant type=Instant
[/card] [/card]
[card] [card]
name=Food Chain
text=Exile a creature you control: Add X mana of any one color to your mana pool, where X is the exiled creature's converted mana cost plus one. Spend this mana only to cast creature spells.
mana={2}{G}
type=Enchantment
[/card]
[card]
name=Magister of Worth name=Magister of Worth
abilities=flying abilities=flying
text=Flying -- Will of the council — When Magister of Worth enters the battlefield, starting with you, each player votes for grace or condemnation. If grace gets more votes, each player returns each creature card from his or her graveyard to the battlefield. If condemnation gets more votes or the vote is tied, destroy all creatures other than Magister of Worth. text=Flying -- Will of the council — When Magister of Worth enters the battlefield, starting with you, each player votes for grace or condemnation. If grace gets more votes, each player returns each creature card from his or her graveyard to the battlefield. If condemnation gets more votes or the vote is tied, destroy all creatures other than Magister of Worth.
@@ -54,15 +48,6 @@ mana={3}{U}
type=Instant type=Instant
[/card] [/card]
[card] [card]
name=Corpsejack Menace
text=If one or more +1/+1 counters would be placed on a creature you control, twice that many +1/+1 counters are placed on it instead.
mana={2}{B}{G}
type=Creature
subtype=Fungus
power=4
toughness=4
[/card]
[card]
name=Glacial Ray name=Glacial Ray
text=Glacial Ray deals 2 damage to target creature or player. -- Splice onto Arcane {1}{R} (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.) text=Glacial Ray deals 2 damage to target creature or player. -- Splice onto Arcane {1}{R} (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.)
mana={1}{R} mana={1}{R}
@@ -15,15 +15,6 @@ power=2
toughness=2 toughness=2
[/card] [/card]
[card] [card]
name=Leovold, Emissary of Trest
text=Each opponent can't draw more than one card each turn. -- Whenever you or a permanent you control becomes the target of a spell or ability an opponent controls, you may draw a card.
mana={B}{G}{U}
type=Legendary Creature
subtype=Elf Advisor
power=3
toughness=3
[/card]
[card]
name=Sigarda, Host of Herons name=Sigarda, Host of Herons
abilities=flying,opponentshroud abilities=flying,opponentshroud
text=Flying, hexproof -- Spells and abilities your opponents control can't cause you to sacrifice permanents. text=Flying, hexproof -- Spells and abilities your opponents control can't cause you to sacrifice permanents.
@@ -5,12 +5,6 @@ mana={R}{R}{R}
type=Sorcery type=Sorcery
[/card] [/card]
[card] [card]
name=Metamorphosis
text=As an additional cost to cast Metamorphosis, sacrifice a creature. -- Add X mana of any one color to your mana pool, where X is one plus the sacrificed creature's converted mana cost. Spend this mana only to cast creature spells.
mana={G}
type=Sorcery
[/card]
[card]
name=Desperate Ritual name=Desperate Ritual
text=Add {R}{R}{R} to your mana pool. -- Splice onto Arcane {1}{R} (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.) text=Add {R}{R}{R} to your mana pool. -- Splice onto Arcane {1}{R} (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.)
mana={1}{R} mana={1}{R}
@@ -18,15 +12,6 @@ type=Instant
subtype=Arcane subtype=Arcane
[/card] [/card]
[card] [card]
name=Leovold, Emissary of Trest
text=Each opponent can't draw more than one card each turn. -- Whenever you or a permanent you control becomes the target of a spell or ability an opponent controls, you may draw a card.
mana={B}{G}{U}
type=Legendary Creature
subtype=Elf Advisor
power=3
toughness=3
[/card]
[card]
name=Nylea's Colossus name=Nylea's Colossus
text=Constellation — Whenever Nylea's Colossus or another enchantment enters the battlefield under your control, double target creature's power and toughness until end of turn. text=Constellation — Whenever Nylea's Colossus or another enchantment enters the battlefield under your control, double target creature's power and toughness until end of turn.
mana={6}{G} mana={6}{G}
@@ -146,10 +131,3 @@ text=Council's dilemma — Starting with you, each player votes for time or money
mana={7}{U}{U} mana={7}{U}{U}
type=Sorcery type=Sorcery
[/card] [/card]
[card]
name=Curse of Vengeance
text=Enchant player -- Whenever enchanted player casts a spell, put a spite counter on Curse of Vengeance. -- When enchanted player loses the game, you gain X life and draw X cards, where X is the number of spite counters on Curse of Vengeance.
mana={B}
type=Enchantment
subtype=Aura Curse
[/card]
@@ -23,15 +23,6 @@ mana={5}{R}
type=Enchantment type=Enchantment
[/card] [/card]
[card] [card]
name=Corpsejack Menace
text=If one or more +1/+1 counters would be placed on a creature you control, twice that many +1/+1 counters are placed on it instead.
mana={2}{B}{G}
type=Creature
subtype=Fungus
power=4
toughness=4
[/card]
[card]
name=Rakdos, Lord of Riots name=Rakdos, Lord of Riots
text=You can't cast Rakdos, Lord of Riots unless an opponent lost life this turn. -- Flying, trample -- Creature spells you cast cost {1} less to cast for each 1 life your opponents have lost this turn. text=You can't cast Rakdos, Lord of Riots unless an opponent lost life this turn. -- Flying, trample -- Creature spells you cast cost {1} less to cast for each 1 life your opponents have lost this turn.
mana={B}{B}{R}{R} mana={B}{B}{R}{R}
@@ -41,16 +32,6 @@ power=6
toughness=6 toughness=6
[/card] [/card]
[card] [card]
name=Sphinx of the Chimes
abilities=flying
text=Flying -- Discard two nonland cards with the same name: Draw four cards.
mana={4}{U}{U}
type=Creature
subtype=Sphinx
power=5
toughness=6
[/card]
[card]
name=Tablet of the Guilds name=Tablet of the Guilds
text=As Tablet of the Guilds enters the battlefield, choose two colors. -- Whenever you cast a spell, if it's at least one of the chosen colors, you gain 1 life for each of the chosen colors it is. text=As Tablet of the Guilds enters the battlefield, choose two colors. -- Whenever you cast a spell, if it's at least one of the chosen colors, you gain 1 life for each of the chosen colors it is.
mana={2} mana={2}
@@ -4,22 +4,3 @@ text=Reveal the top five cards of your library and separate them into two piles.
mana={2}{U}{R} mana={2}{U}{R}
type=Instant type=Instant
[/card] [/card]
[card]
name=Medomai the Ageless
abilities=flying
text=Flying -- Whenever Medomai the Ageless deals combat damage to a player, take an extra turn after this one. -- Medomai the Ageless can't attack during extra turns.
mana={4}{W}{U}
type=Legendary Creature
subtype=Sphinx
power=4
toughness=4
[/card]
[card]
name=Daxos of Meletis
text=Daxos of Meletis can't be blocked by creatures with power 3 or greater. -- Whenever Daxos of Meletis deals combat damage to a player, exile the top card of that player's library. You gain life equal to that card's converted mana cost. Until end of turn, you may cast that card and you may spend mana as though it were mana of any color to cast it.
mana={1}{W}{U}
type=Legendary Creature
subtype=Human Soldier
power=2
toughness=2
[/card]
@@ -89,12 +89,6 @@ power=2
toughness=2 toughness=2
[/card] [/card]
[card] [card]
name=Curse of the Cabal
text=Target player sacrifices half the permanents he or she controls, rounded down. -- Suspend 2—{2}{B}{B} (Rather than cast this card from your hand, you may pay {2}{B}{B} and exile it with two time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.) -- At the beginning of each player's upkeep, if Curse of the Cabal is suspended, that player may sacrifice a permanent. If he or she does, put two time counters on Curse of the Cabal.
mana={9}{B}
type=Sorcery
[/card]
[card]
name=Dementia Sliver name=Dementia Sliver
text=All Slivers have "{T}: Name a card. Target opponent reveals a card at random from his or her hand. If it's the named card, that player discards it. Activate this ability only during your turn." text=All Slivers have "{T}: Name a card. Target opponent reveals a card at random from his or her hand. If it's the named card, that player discards it. Activate this ability only during your turn."
mana={3}{U}{B} mana={3}{U}{B}
@@ -15,15 +15,6 @@ power=2
toughness=2 toughness=2
[/card] [/card]
[card] [card]
name=Leovold, Emissary of Trest
text=Each opponent can't draw more than one card each turn. -- Whenever you or a permanent you control becomes the target of a spell or ability an opponent controls, you may draw a card.
mana={B}{G}{U}
type=Legendary Creature
subtype=Elf Advisor
power=3
toughness=3
[/card]
[card]
name=Living Lore name=Living Lore
text=As Living Lore enters the battlefield, exile an instant or sorcery card from your graveyard. -- Living Lore's power and toughness are each equal to the exiled card's converted mana cost. -- Whenever Living Lore deals combat damage, you may sacrifice it. If you do, you may cast the exiled card without paying its mana cost. text=As Living Lore enters the battlefield, exile an instant or sorcery card from your graveyard. -- Living Lore's power and toughness are each equal to the exiled card's converted mana cost. -- Whenever Living Lore deals combat damage, you may sacrifice it. If you do, you may cast the exiled card without paying its mana cost.
mana={3}{U} mana={3}{U}
@@ -173,14 +173,6 @@ power=1
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Curse of the Fire Penguin
text=Curse of the Fire Penquin consumes and confuses enchanted creature. -- -- ——— -- -- Creature Penguin -- Trample -- -- 6/5 -- Whenthiscreatureisputintoagraveyardfromplay,returnCurseoftheFirePenguinfromyourgraveyardtoplay.
mana={4}{R}{R}
type=Enchant Creature
power=
toughness=
[/card]
[card]
name=Water Gun Balloon Game name=Water Gun Balloon Game
text=As Water Gun Balloon Game comes into play, each player puts a pop counter on a 0. -- Whenever a player plays a spell, move that player's pop counter up 1. -- Whenever a player's pop counter hits 5, that player puts a 5/5 pink Giant Teddy Bear creature token into play and resets all pop counters to 0. text=As Water Gun Balloon Game comes into play, each player puts a pop counter on a 0. -- Whenever a player plays a spell, move that player's pop counter up 1. -- Whenever a player's pop counter hits 5, that player puts a 5/5 pink Giant Teddy Bear creature token into play and resets all pop counters to 0.
mana={2} mana={2}
@@ -1,10 +1,4 @@
[card] [card]
name=Foreshadow
text=Name a card, then put the top card of target opponent's library into his or her graveyard. If that card is the named card, you draw a card. -- Draw a card at the beginning of the next turn's upkeep.
mana={1}{U}
type=Instant
[/card]
[card]
name=Desertion name=Desertion
text=Counter target spell. If an artifact or creature spell is countered this way, put that card onto the battlefield under your control instead of into its owner's graveyard. text=Counter target spell. If an artifact or creature spell is countered this way, put that card onto the battlefield under your control instead of into its owner's graveyard.
mana={3}{U}{U} mana={3}{U}{U}
@@ -15,6 +15,12 @@
# Dies, Evergreen # Dies, Evergreen
#AUTO_DEFINE _DIES_ @movedTo(this|graveyard) from(battlefield): #AUTO_DEFINE _DIES_ @movedTo(this|graveyard) from(battlefield):
# Goad
#AUTO_DEFINE _GOAD_ transforms((,newability[counter(0/0.1.Goaded)],newability[this(counter{0/0.1.Goaded}>0) mustattack],newability[phaseaction[endofturn next once sourceinplay] removeallcounters(0/0.-1.Goaded)])) forever
# Rebound
#AUTO_DEFINE _REBOUND_ if rebound then all(this|mystack) moveto(exile) and!( transforms((,newability[@rebounded:may name(Cast rebounded card) activate castcard(normal)])) forever )!
# Populate # Populate
#AUTO_DEFINE _POPULATE_ name(Populate) clone notAtarget(creature[token]|myBattlefield) #AUTO_DEFINE _POPULATE_ name(Populate) clone notAtarget(creature[token]|myBattlefield)
File diff suppressed because it is too large Load Diff
+31 -51
View File
@@ -6104,8 +6104,7 @@ type=Sorcery
name=Artful Maneuver name=Artful Maneuver
target=creature target=creature
auto=2/2 ueot auto=2/2 ueot
auto=if rebound then ability$!moveto(exile) all(Artful Maneuver|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=Target creature gets +2/+2 until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=Target creature gets +2/+2 until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={1}{W} mana={1}{W}
type=Instant type=Instant
@@ -18184,8 +18183,7 @@ auto=choice name(red) transforms((,newability[protection from red])) ueot
auto=choice name(blue) transforms((,newability[protection from blue])) ueot auto=choice name(blue) transforms((,newability[protection from blue])) ueot
auto=choice name(black) transforms((,newability[protection from black])) ueot auto=choice name(black) transforms((,newability[protection from black])) ueot
auto=choice name(white) transforms((,newability[protection from white])) ueot auto=choice name(white) transforms((,newability[protection from white])) ueot
auto=if rebound then ability$!moveto(exile) all(Center Soul|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=Target creature you control gains protection from the color of your choice until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=Target creature you control gains protection from the color of your choice until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={1}{W} mana={1}{W}
type=Instant type=Instant
@@ -22106,8 +22104,7 @@ type=Instant
name=Consuming Vapors name=Consuming Vapors
target=player target=player
auto=ability$! notatarget(creature|mybattlefield) dynamicability<!mytgt toughnesslifegain abilitycontroller!> sacrifice ) !$ targetedplayer auto=ability$! notatarget(creature|mybattlefield) dynamicability<!mytgt toughnesslifegain abilitycontroller!> sacrifice ) !$ targetedplayer
auto=if rebound then ability$!moveto(exile) all(Consuming Vapors|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=Target player sacrifices a creature. You gain life equal to that creature's toughness. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=Target player sacrifices a creature. You gain life equal to that creature's toughness. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={3}{B} mana={3}{B}
type=Sorcery type=Sorcery
@@ -30214,8 +30211,7 @@ name=Distortion Strike
target=creature target=creature
auto=1/0 ueot auto=1/0 ueot
auto=unblockable ueot auto=unblockable ueot
auto=if rebound then ability$!moveto(exile) all(Distortion Strike|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=Target creature gets +1/+0 until end of turn and is unblockable this turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=Target creature gets +1/+0 until end of turn and is unblockable this turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={U} mana={U}
type=Sorcery type=Sorcery
@@ -35460,8 +35456,7 @@ auto=choice name(red) transforms((,newability[protection from red])) ueot
auto=choice name(blue) transforms((,newability[protection from blue])) ueot auto=choice name(blue) transforms((,newability[protection from blue])) ueot
auto=choice name(black) transforms((,newability[protection from black])) ueot auto=choice name(black) transforms((,newability[protection from black])) ueot
auto=choice name(white) transforms((,newability[protection from white])) ueot auto=choice name(white) transforms((,newability[protection from white])) ueot
auto=if rebound then ability$!moveto(exile) all(Emerge Unscathed|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=Target creature you control gains protection from the color of your choice until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=Target creature you control gains protection from the color of your choice until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={W} mana={W}
type=Instant type=Instant
@@ -49859,8 +49854,7 @@ toughness=3
[card] [card]
name=Great Teacher's Decree name=Great Teacher's Decree
auto=all(creature|mybattlefield) 2/1 ueot auto=all(creature|mybattlefield) 2/1 ueot
auto=if rebound then ability$!moveto(exile) all(Great Teacher's Decree|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=Creatures you control get +2/+1 until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=Creatures you control get +2/+1 until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={3}{W} mana={3}{W}
type=Sorcery type=Sorcery
@@ -80530,8 +80524,7 @@ toughness=2
[card] [card]
name=Nomads' Assembly name=Nomads' Assembly
auto=token(Kor Soldier,Creature Kor Soldier,1/1,white)*type:creature:mybattlefield auto=token(Kor Soldier,Creature Kor Soldier,1/1,white)*type:creature:mybattlefield
auto=if rebound then ability$!moveto(exile) all(Nomads' Assembly|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=Put a 1/1 white Kor Soldier creature token onto the battlefield for each creature you control. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=Put a 1/1 white Kor Soldier creature token onto the battlefield for each creature you control. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={4}{W}{W} mana={4}{W}{W}
type=Sorcery type=Sorcery
@@ -81906,17 +81899,15 @@ toughness=6
name=Ojutai's Breath name=Ojutai's Breath
target=creature target=creature
auto=freeze auto=freeze
auto=if rebound then ability$!moveto(exile) all(Ojutai's Breath|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=Tap target creature. It doesn't untap during its controller's next untap step. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=Tap target creature. It doesn't untap during its controller's next untap step. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={2}{U} mana={2}{U}
type=Instant type=Instant
[/card] [/card]
[card] [card]
name=Ojutai's Summons name=Ojutai's Summons
auto=create(Djinn Monk:Creature Djinn Monk:2/2:flying:blue) auto=token(Djinn Monk,Creature Djinn Monk,2/2,flying,blue)
auto=if rebound then ability$!moveto(exile) all(Ojutai's Summons|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=Put a 2/2 blue Djinn Monk creature token with flying onto the battlefield. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=Put a 2/2 blue Djinn Monk creature token with flying onto the battlefield. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={3}{U}{U} mana={3}{U}{U}
type=Sorcery type=Sorcery
@@ -88191,8 +88182,7 @@ type=Sorcery
name=Prey's Vengeance name=Prey's Vengeance
target=creature target=creature
auto=2/2 auto=2/2
auto=if rebound then ability$!moveto(exile) all(Prey's Vengeance|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=Target creature gets +2/+2 until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=Target creature gets +2/+2 until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={G} mana={G}
type=Instant type=Instant
@@ -88949,8 +88939,7 @@ type=Sorcery
name=Profound Journey name=Profound Journey
target=*[-instant;-sorcery]|mygraveyard target=*[-instant;-sorcery]|mygraveyard
auto=moveto(ownerbattlefield) auto=moveto(ownerbattlefield)
auto=if rebound then ability$!moveto(exile) all(Profound Journey|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=Return target permanent card from your graveyard to the battlefield. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=Return target permanent card from your graveyard to the battlefield. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={5}{W}{W} mana={5}{W}{W}
type=Sorcery type=Sorcery
@@ -93160,8 +93149,7 @@ type=Instant
name=Recurring Insight name=Recurring Insight
target=opponent target=opponent
auto=draw:type:*:targetedpersonshand controller auto=draw:type:*:targetedpersonshand controller
auto=if rebound then ability$!moveto(exile) all(Recurring Insight|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=Draw cards equal to the number of cards in target opponent's hand. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=Draw cards equal to the number of cards in target opponent's hand. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={4}{U}{U} mana={4}{U}{U}
type=Sorcery type=Sorcery
@@ -105066,8 +105054,7 @@ name=Sight Beyond Sight
abilities=hiddenface abilities=hiddenface
aicode=activate transforms((,newability[moveto(myhand) all(*[zpos=1]|mylibrary) && bottomoflibrary all(*[zpos=2]|mylibrary)])) ueot aicode=activate transforms((,newability[moveto(myhand) all(*[zpos=1]|mylibrary) && bottomoflibrary all(*[zpos=2]|mylibrary)])) ueot
auto=name(look) reveal:2 optionone name(Get a card) target(<1>*|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<2>*|reveal) bottomoflibrary optiontwoend revealend auto=name(look) reveal:2 optionone name(Get a card) target(<1>*|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<2>*|reveal) bottomoflibrary optiontwoend revealend
auto=if rebound then ability$!moveto(exile) all(Sight Beyond Sight|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
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. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) 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. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={3}{U} mana={3}{U}
type=Sorcery type=Sorcery
@@ -108207,13 +108194,14 @@ toughness=2
[/card] [/card]
[card] [card]
name=Smallpox name=Smallpox
auto=ability$!life:-1 all(player)!$ controller auto=life:-1 controller
auto=ability$!reject notatarget(*|myhand)!$ controller auto=life:-1 opponent
auto=ability$!reject notatarget(*|myhand)!$ opponent auto=ability$!name(Discard a card) name(Discard a card) target(*|myhand) reject!$ controller
auto=ability$!sacrifice notatarget(creature|mybattlefield)!$ controller auto=ability$!name(Discard a card) name(Discard a card) target(*|myhand) reject!$ opponent
auto=ability$!sacrifice notatarget(creature|mybattlefield)!$ opponent auto=ability$!name(Sacrifice a creature) name(Sacrifice a creature) target(creature|mybattlefield) sacrifice!$ controller
auto=ability$!sacrifice notatarget(land|mybattlefield)!$ controller auto=ability$!name(Sacrifice a creature) name(Sacrifice a creature) target(creature|mybattlefield) sacrifice!$ opponent
auto=ability$!sacrifice notatarget(land|mybattlefield)!$ opponent auto=ability$!name(Sacrifice a land) name(Sacrifice a land) target(land|mybattlefield) sacrifice!$ controller
auto=ability$!name(Sacrifice a land) name(Sacrifice a land) target(land|mybattlefield) sacrifice!$ opponent
text=Each player loses 1 life, discards a card, sacrifices a creature, then sacrifices a land. text=Each player loses 1 life, discards a card, sacrifices a creature, then sacrifices a land.
mana={B}{B} mana={B}{B}
type=Sorcery type=Sorcery
@@ -112416,8 +112404,7 @@ toughness=0
name=Staggershock name=Staggershock
target=creature,player target=creature,player
auto=damage:2 auto=damage:2
auto=if rebound then ability$!moveto(exile) all(Staggershock|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=Staggershock deals 2 damage to target creature or player. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=Staggershock deals 2 damage to target creature or player. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={2}{R} mana={2}{R}
type=Instant type=Instant
@@ -116111,8 +116098,7 @@ toughness=1
[card] [card]
name=Surreal Memoir name=Surreal Memoir
auto=moverandom(instant) from(mygraveyard) to(myhand) auto=moverandom(instant) from(mygraveyard) to(myhand)
auto=if rebound then ability$!moveto(exile) all(Surreal Memoir|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=Return an instant card at random from your graveyard to your hand. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=Return an instant card at random from your graveyard to your hand. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={3}{R} mana={3}{R}
type=Sorcery type=Sorcery
@@ -116140,8 +116126,7 @@ type=Sorcery
name=Survival Cache name=Survival Cache
auto=life:2 controller auto=life:2 controller
auto=if compare(lifetotal)~morethan~compare(opponentlifetotal) then draw:1 controller auto=if compare(lifetotal)~morethan~compare(opponentlifetotal) then draw:1 controller
auto=if rebound then ability$!moveto(exile) all(Survival Cache|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=You gain 2 life. Then if you have more life than an opponent, draw a card. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=You gain 2 life. Then if you have more life than an opponent, draw a card. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={2}{W} mana={2}{W}
type=Sorcery type=Sorcery
@@ -116647,8 +116632,7 @@ subtype=Equipment
name=Sword of the Animist name=Sword of the Animist
auto={2}:equip auto={2}:equip
auto=teach(creature) 1/1 auto=teach(creature) 1/1
aicode=activate moveTo(myBattlefield) and!(tap(noevent))! target(land[basic]|myLibrary) auto=@combat(attacking) source(mytgt):may name(search basic land) target(land[basic]|myLibrary) moveTo(myBattlefield) and!( transforms((,newability[tap(noevent)],newability[shuffle])) oneshot )!
auto=@combat(attacking) source(mytgt):name(search card) reveal:plibrarycount optionone name(choose card) target(land[basic]|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveTo(myBattlefield) and!(tap(noevent))!)! afterrevealedend revealend
text=Equipped creature gets +1/+1. -- Whenever equipped creature attacks, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library. -- Equip {2} text=Equipped creature gets +1/+1. -- Whenever equipped creature attacks, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library. -- Equip {2}
mana={2} mana={2}
type=Legendary Artifact type=Legendary Artifact
@@ -117168,8 +117152,7 @@ name=Taigam's Strike
target=creature target=creature
auto=2/0 ueot auto=2/0 ueot
auto=unblockable ueot auto=unblockable ueot
auto=if rebound then ability$!moveto(exile) all(Taigam's Strike|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=Target creature gets +2/+0 until end of turn and can't be blocked this turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=Target creature gets +2/+0 until end of turn and can't be blocked this turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={3}{U} mana={3}{U}
type=Sorcery type=Sorcery
@@ -129395,8 +129378,7 @@ toughness=1
name=Virulent Swipe name=Virulent Swipe
target=creature target=creature
auto=transforms((,newability[2/0],newability[deachtouch])) ueot auto=transforms((,newability[2/0],newability[deachtouch])) ueot
auto=if rebound then ability$!moveto(exile) all(Virulent Swipe|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=Target creature gets +2/+0 and gains deathtouch until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=Target creature gets +2/+0 and gains deathtouch until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={B} mana={B}
type=Instant type=Instant
@@ -129994,8 +129976,7 @@ type=Sorcery
name=Void Squall name=Void Squall
target=*[-land] target=*[-land]
auto=moveto(ownerhand) auto=moveto(ownerhand)
auto=if rebound then ability$!moveto(exile) all(Void Squall|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=Return target nonland permanent to its owner's hand. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=Return target nonland permanent to its owner's hand. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={4}{U} mana={4}{U}
type=Sorcery type=Sorcery
@@ -135609,9 +135590,8 @@ toughness=2
[card] [card]
name=World at War name=World at War
auto=nextphasealter(add,combatphaseswithmain,controller,after<postbattle>) auto=nextphasealter(add,combatphaseswithmain,controller,after<postbattle>)
auto=untap all(creature[attacking]) auto=all(creature|mybattlefield) transforms((,newability[@each my combatends turnlimited:phaseaction[combatbegins once sourceinplay] untap])) ueot
auto=if rebound then ability$!moveto(exile) all(World at War|mystack)!$ controller auto=_REBOUND_
autoexile=@rebounded:may activate castcard(normal)
text=After the first postcombat main phase this turn, there's an additional combat phase followed by an additional main phase. At the beginning of that combat, untap all creatures that attacked this turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) text=After the first postcombat main phase this turn, there's an additional combat phase followed by an additional main phase. At the beginning of that combat, untap all creatures that attacked this turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={3}{R}{R} mana={3}{R}{R}
type=Sorcery type=Sorcery
@@ -1930,6 +1930,7 @@ subtype=Narset
[card] [card]
name=Narset, Parter of Veils name=Narset, Parter of Veils
auto=counter(0/0,5,loyalty) auto=counter(0/0,5,loyalty)
auto=@drawfoeof(player) restriction{compare(odrewcount)~morethan~1}:name(Opponent can't draw more than 1) transforms((,newability[all(*[zpos=type:*:opponenthand]|opponenthand) moveto(ownerlibrary)])) oneshot
aicode=activate moveto(myhand) target(*[-creature;-land;zpos<=4]|mylibrary) aicode=activate moveto(myhand) target(*[-creature;-land;zpos<=4]|mylibrary)
auto={C(0/0,-2,Loyalty)}:name(-2: Look at the top four cards) name(look) reveal:4 optionone name(Get a card) target(<1>*[-creature;-land]|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<4>*|reveal) bottomoflibrary optiontwoend revealend auto={C(0/0,-2,Loyalty)}:name(-2: Look at the top four cards) name(look) reveal:4 optionone name(Get a card) target(<1>*[-creature;-land]|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<4>*|reveal) bottomoflibrary optiontwoend revealend
text=Each opponent can't draw more than one card each turn. -- 2: Look at the top four cards of your library. You may reveal a noncreature, nonland card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. text=Each opponent can't draw more than one card each turn. -- 2: Look at the top four cards of your library. You may reveal a noncreature, nonland card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.
@@ -1944,8 +1945,8 @@ aicode=activate target(*[-creature;-land;zpos=1]|mylibrary) moveto(myhand)
auto={C(0/0,1,Loyalty)}:name(+1: Look at the top noncreature nonland) reveal:1 optionone target(<upto:1>*[-creature;-land]|reveal) moveTo(myHand) optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveTo(myLibrary) optiontwoend revealend auto={C(0/0,1,Loyalty)}:name(+1: Look at the top noncreature nonland) reveal:1 optionone target(<upto:1>*[-creature;-land]|reveal) moveTo(myHand) optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveTo(myLibrary) optiontwoend revealend
auto={C(0/0,-2,Loyalty)}:name(-2: Your next instant or sorcery has rebound) counter(0/0.1.ReboundActive) all(this) auto={C(0/0,-2,Loyalty)}:name(-2: Your next instant or sorcery has rebound) counter(0/0.1.ReboundActive) all(this)
auto={C(0/0,-9,Loyalty)}:name(-9: Emblem: "Your opponents can't cast noncreature spells") emblem transforms((,newability[maxCast(*[-creature])0 opponent])) forever dontremove auto={C(0/0,-9,Loyalty)}:name(-9: Emblem: "Your opponents can't cast noncreature spells") emblem transforms((,newability[maxCast(*[-creature])0 opponent])) forever dontremove
auto=@movedTo(*[instant;sorcery]|myStack):this(counter{0/0.1.ReboundActive}>=1) all(trigger[to]) transforms((,newability[gainedexiledeath],newability[phaseaction[my upkeep once] counter(0/0.1.PlayExile)])) ueot && counter(0/0.-1.ReboundActive) all(this) auto=@movedTo(*[instant;sorcery]|myStack):this(counter{0/0.1.ReboundActive}>=1) all(trigger[to]) transforms((,newability[gainedexiledeath],newability[phaseaction[my upkeep once] counter(0/0.1.NarsetExile)])) ueot && counter(0/0.-1.ReboundActive) all(this)
auto=@each my upkeep:if type(*[instant;sorcery;counter{0/0.1.PlayExile}]|myexile)~morethan~0 then ability$!name(Choose one) choice name(Cast card from exile) activate castcard(normal) target(*[instant;sorcery;counter{0/0.1.PlayExile}]|myexile) _ choice name(Don't cast card from exile) all(*[instant;sorcery;counter{0/0.1.PlayExile}]|myexile) counter(0/0.-1.PlayExile)!$ controller auto=@each my upkeep:if type(*[instant;sorcery;counter{0/0.1.NarsetExile}]|myexile)~morethan~0 then ability$!name(Choose one) choice name(Cast card from exile) activate castcard(normal) target(*[instant;sorcery;counter{0/0.1.NarsetExile}]|myexile) _ choice name(Don't cast card from exile) all(*[instant;sorcery;counter{0/0.1.NarsetExile}]|myexile) removeallcounters(0/0.-1.NarsetExile)!$ controller
text=+1: Look at the top card of your library. If its a noncreature, nonland card, you may reveal it and put it into your hand. -- 2: When you cast your next instant or sorcery spell from your hand this turn, it gains rebound. (Exile the spell as it resolves. At the beginning of your next upkeep, you may cast that card from exile without paying its mana cost.) -- 9: You get an emblem with “Your opponents cant cast noncreature spells.” text=+1: Look at the top card of your library. If its a noncreature, nonland card, you may reveal it and put it into your hand. -- 2: When you cast your next instant or sorcery spell from your hand this turn, it gains rebound. (Exile the spell as it resolves. At the beginning of your next upkeep, you may cast that card from exile without paying its mana cost.) -- 9: You get an emblem with “Your opponents cant cast noncreature spells.”
mana={2}{W}{U} mana={2}{W}{U}
type=Legendary Planeswalker type=Legendary Planeswalker
@@ -1961,15 +1961,6 @@ type=Enchantment
subtype=Aura subtype=Aura
[/card] [/card]
[card] [card]
name=Corpsejack Menace
text=If one or more +1/+1 counters would be placed on a creature you control, twice that many +1/+1 counters are placed on it instead.
mana={2}{B}{G}
type=Creature
subtype=Fungus
power=4
toughness=4
[/card]
[card]
name=Corrosion name=Corrosion
text=Cumulative upkeep {1} (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.) -- At the beginning of your upkeep, put a rust counter on each artifact target opponent controls. Then destroy each artifact with converted mana cost less than or equal to the number of rust counters on it. Artifacts destroyed this way can't be regenerated. -- When Corrosion leaves the battlefield, remove all rust counters from all permanents. text=Cumulative upkeep {1} (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.) -- At the beginning of your upkeep, put a rust counter on each artifact target opponent controls. Then destroy each artifact with converted mana cost less than or equal to the number of rust counters on it. Artifacts destroyed this way can't be regenerated. -- When Corrosion leaves the battlefield, remove all rust counters from all permanents.
mana={1}{B}{R} mana={1}{B}{R}
@@ -2027,12 +2018,6 @@ mana={2}{W}
type=Snow Enchantment type=Snow Enchantment
[/card] [/card]
[card] [card]
name=Covetous Urge
text=Target opponent reveals their hand. You choose a nonland card from that player's graveyard or hand and exile it. You may cast that card for as long as it remains exiled, and you may spend mana as though it were mana of any color to cast that spell.
mana={UB}{UB}{UB}{UB}
type=Sorcery
[/card]
[card]
name=Cowed by Wisdom name=Cowed by Wisdom
text=Enchant creature -- Enchanted creature can't attack or block unless its controller pays {1} for each card in your hand. text=Enchant creature -- Enchanted creature can't attack or block unless its controller pays {1} for each card in your hand.
mana={W} mana={W}
@@ -2163,76 +2148,6 @@ mana={4}{U}{U}
type=Sorcery type=Sorcery
[/card] [/card]
[card] [card]
name=Curse of Chaos
text=Enchant player -- Whenever a player attacks enchanted player with one or more creatures, that attacking player may discard a card. If the player does, he or she draws a card.
mana={2}{R}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Curse of Echoes
text=Enchant player -- Whenever enchanted player casts an instant or sorcery spell, each other player may copy that spell and may choose new targets for the copy he or she controls.
mana={4}{U}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Curse of Inertia
text=Enchant player -- Whenever a player attacks enchanted player with one or more creatures, that attacking player may tap or untap target permanent of his or her choice.
mana={2}{U}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Curse of Misfortunes
text=Enchant player -- At the beginning of your upkeep, you may search your library for a Curse card that doesn't have the same name as a Curse attached to enchanted player, put it onto the battlefield attached to that player, then shuffle your library.
mana={4}{B}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Curse of Predation
text=Enchant player -- Whenever a creature attacks enchanted player, put a +1/+1 counter on it.
mana={2}{G}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Curse of Shallow Graves
text=Enchant player -- Whenever a player attacks enchanted player with one or more creatures, that attacking player may put a 2/2 black Zombie creature token onto the battlefield tapped.
mana={2}{B}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Curse of Vengeance
text=Enchant player -- Whenever enchanted player casts a spell, put a spite counter on Curse of Vengeance. -- When enchanted player loses the game, you gain X life and draw X cards, where X is the number of spite counters on Curse of Vengeance.
mana={B}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Curse of the Cabal
text=Target player sacrifices half the permanents he or she controls, rounded down. -- Suspend 2—{2}{B}{B} (Rather than cast this card from your hand, you may pay {2}{B}{B} and exile it with two time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.) -- At the beginning of each player's upkeep, if Curse of the Cabal is suspended, that player may sacrifice a permanent. If he or she does, put two time counters on Curse of the Cabal.
mana={9}{B}
type=Sorcery
[/card]
[card]
name=Curse of the Fire Penguin
text=Curse of the Fire Penquin consumes and confuses enchanted creature. -- -- ——— -- -- Creature Penguin -- Trample -- -- 6/5 -- Whenthiscreatureisputintoagraveyardfromplay,returnCurseoftheFirePenguinfromyourgraveyardtoplay.
mana={4}{R}{R}
type=Enchant Creature
power=
toughness=
[/card]
[card]
name=Curse of the Forsaken
text=Enchant player -- Whenever a creature attacks enchanted player, its controller gains 1 life.
mana={2}{W}
type=Enchantment
subtype=Aura Curse
[/card]
[card]
name=Curtain of Light name=Curtain of Light
text=Cast Curtain of Light only during combat after blockers are declared. -- Target unblocked attacking creature becomes blocked. (This spell works on unblockable creatures.) -- Draw a card. text=Cast Curtain of Light only during combat after blockers are declared. -- Target unblocked attacking creature becomes blocked. (This spell works on unblockable creatures.) -- Draw a card.
mana={1}{W} mana={1}{W}
@@ -2342,15 +2257,6 @@ power=2
toughness=4 toughness=4
[/card] [/card]
[card] [card]
name=Daxos of Meletis
text=Daxos of Meletis can't be blocked by creatures with power 3 or greater. -- Whenever Daxos of Meletis deals combat damage to a player, exile the top card of that player's library. You gain life equal to that card's converted mana cost. Until end of turn, you may cast that card and you may spend mana as though it were mana of any color to cast it.
mana={1}{W}{U}
type=Legendary Creature
subtype=Human Soldier
power=2
toughness=2
[/card]
[card]
name=Day's Undoing name=Day's Undoing
text=Each player shuffles his or her hand and graveyard into his or her library, then draws seven cards. If it's your turn, end the turn. (Exile all spells and abilities on the stack, including this card. Discard down to your maximum hand size. Damage wears off, and "this turn" and "until end of turn" effects end.) text=Each player shuffles his or her hand and graveyard into his or her library, then draws seven cards. If it's your turn, end the turn. (Exile all spells and abilities on the stack, including this card. Discard down to your maximum hand size. Damage wears off, and "this turn" and "until end of turn" effects end.)
mana={2}{U} mana={2}{U}
@@ -2364,12 +2270,6 @@ type=Summon
subtype=Zombie subtype=Zombie
[/card] [/card]
[card] [card]
name=Deadly Designs
text={2}: Put a plot counter on Deadly Designs. Any player may activate this ability. -- When there are five or more plot counters on Deadly Designs, sacrifice it. If you do, destroy up to two target creatures.
mana={1}{B}
type=Enchantment
[/card]
[card]
name=Deadly Poison Sampler name=Deadly Poison Sampler
text=Whenever you crank Deadly Poison Sampler, until end of turn, target creature gains "Whenever this creature deals combat damage to a player, destroy target creature that player controls." text=Whenever you crank Deadly Poison Sampler, until end of turn, target creature gains "Whenever this creature deals combat damage to a player, destroy target creature that player controls."
type=Artifact type=Artifact
@@ -3426,22 +3326,6 @@ power=2
toughness=2 toughness=2
[/card] [/card]
[card] [card]
name=Firecat Blitz
text=Put X 1/1 red Elemental Cat creature tokens with haste onto the battlefield. Exile them at the beginning of the next end step. -- Flashback—{R}{R}, Sacrifice X Mountains. (You may cast this card from your graveyard for its flashback cost. Then exile it.)
mana={X}{R}{R}
type=Sorcery
[/card]
[card]
name=Firestorm Phoenix
abilities=flying
text=Flying -- If Firestorm Phoenix would die, return Firestorm Phoenix to its owner's hand instead. Until that player's next turn, that player plays with that card revealed in his or her hand and can't play it.
mana={4}{R}{R}
type=Creature
subtype=Phoenix
power=3
toughness=2
[/card]
[card]
name=First Come, First Served name=First Come, First Served
text=The attacking or blocking creature with the lowest collector number has first strike. If two or more creatures are tied, they all have first strike. text=The attacking or blocking creature with the lowest collector number has first strike. If two or more creatures are tied, they all have first strike.
mana={1}{W} mana={1}{W}
@@ -3536,36 +3420,18 @@ mana={1}{G}
type=Instant type=Instant
[/card] [/card]
[card] [card]
name=Food Chain
text=Exile a creature you control: Add X mana of any one color to your mana pool, where X is the exiled creature's converted mana cost plus one. Spend this mana only to cast creature spells.
mana={2}{G}
type=Enchantment
[/card]
[card]
name=Force Bubble name=Force Bubble
text=If damage would be dealt to you, put that many depletion counters on Force Bubble instead. -- When there are four or more depletion counters on Force Bubble, sacrifice it. -- At the beginning of each end step, remove all depletion counters from Force Bubble. text=If damage would be dealt to you, put that many depletion counters on Force Bubble instead. -- When there are four or more depletion counters on Force Bubble, sacrifice it. -- At the beginning of each end step, remove all depletion counters from Force Bubble.
mana={2}{W}{W} mana={2}{W}{W}
type=Enchantment type=Enchantment
[/card] [/card]
[card] [card]
name=Force of Rage
text=If it's not your turn, you may exile a red card from your hand rather than pay this spell's mana cost. -- Create two 3/1 red Elemental creature tokens with trample and haste. Sacrifice those tokens at the beginning of your next upkeep.
mana={1}{R}{R}
type=Instant
[/card]
[card]
name=Forcefield name=Forcefield
text={1}: The next time an unblocked creature of your choice would deal combat damage to you this turn, prevent all but 1 of that damage. text={1}: The next time an unblocked creature of your choice would deal combat damage to you this turn, prevent all but 1 of that damage.
mana={3} mana={3}
type=Artifact type=Artifact
[/card] [/card]
[card] [card]
name=Foreshadow
text=Name a card, then put the top card of target opponent's library into his or her graveyard. If that card is the named card, you draw a card. -- Draw a card at the beginning of the next turn's upkeep.
mana={1}{U}
type=Instant
[/card]
[card]
name=Forethought Amulet name=Forethought Amulet
text=At the beginning of your upkeep, sacrifice Forethought Amulet unless you pay {3}. -- If an instant or sorcery source would deal 3 or more damage to you, it deals 2 damage to you instead. text=At the beginning of your upkeep, sacrifice Forethought Amulet unless you pay {3}. -- If an instant or sorcery source would deal 3 or more damage to you, it deals 2 damage to you instead.
mana={5} mana={5}
@@ -5863,12 +5729,6 @@ mana={4}{R}
type=Sorcery type=Sorcery
[/card] [/card]
[card] [card]
name=Laquatus's Disdain
text=Counter target spell cast from a graveyard. -- Draw a card.
mana={1}{U}
type=Instant
[/card]
[card]
name=Lash Out name=Lash Out
text=Lash Out deals 3 damage to target creature. Clash with an opponent. If you win, Lash Out deals 3 damage to that creature's controller. (Each clashing player reveals the top card of his or her library, then puts that card on the top or bottom. A player wins if his or her card had a higher converted mana cost.) text=Lash Out deals 3 damage to target creature. Clash with an opponent. If you win, Lash Out deals 3 damage to that creature's controller. (Each clashing player reveals the top card of his or her library, then puts that card on the top or bottom. A player wins if his or her card had a higher converted mana cost.)
mana={1}{R} mana={1}{R}
@@ -5966,15 +5826,6 @@ power=3
toughness=2 toughness=2
[/card] [/card]
[card] [card]
name=Leovold, Emissary of Trest
text=Each opponent can't draw more than one card each turn. -- Whenever you or a permanent you control becomes the target of a spell or ability an opponent controls, you may draw a card.
mana={B}{G}{U}
type=Legendary Creature
subtype=Elf Advisor
power=3
toughness=3
[/card]
[card]
name=Lesser Werewolf name=Lesser Werewolf
text={B}: If Lesser Werewolf's power is 1 or more, it gets -1/-0 until end of turn and put a -0/-1 counter on target creature blocking or blocked by Lesser Werewolf. Activate this ability only during the declare blockers step. text={B}: If Lesser Werewolf's power is 1 or more, it gets -1/-0 until end of turn and put a -0/-1 counter on target creature blocking or blocked by Lesser Werewolf. Activate this ability only during the declare blockers step.
mana={3}{B} mana={3}{B}
@@ -6173,12 +6024,6 @@ mana={3}{G}{G}
type=Enchantment type=Enchantment
[/card] [/card]
[card] [card]
name=Lucky Clover
text=Whenever you cast an Adventure instant or sorcery spell, copy it. You may choose new targets for the copy.
mana={2}
type=Artifact
[/card]
[card]
name=Lurking Automaton name=Lurking Automaton
text=Reveal Lurking Automaton as you draft it and note how many cards you've drafted this draft round, including Lurking Automaton. -- Lurking Automaton enters the battlefield with X +1/+1 counters on it, where X is the highest number you noted for cards named Lurking Automaton. text=Reveal Lurking Automaton as you draft it and note how many cards you've drafted this draft round, including Lurking Automaton. -- Lurking Automaton enters the battlefield with X +1/+1 counters on it, where X is the highest number you noted for cards named Lurking Automaton.
mana={5} mana={5}
@@ -6490,16 +6335,6 @@ power=2
toughness=3 toughness=3
[/card] [/card]
[card] [card]
name=Medomai the Ageless
abilities=flying
text=Flying -- Whenever Medomai the Ageless deals combat damage to a player, take an extra turn after this one. -- Medomai the Ageless can't attack during extra turns.
mana={4}{W}{U}
type=Legendary Creature
subtype=Sphinx
power=4
toughness=4
[/card]
[card]
name=Melee name=Melee
text=Cast Melee only during your turn and only during combat before blockers are declared. -- You choose which creatures block this combat and how those creatures block. -- Whenever a creature attacks and isn't blocked this combat, untap it and remove it from combat. text=Cast Melee only during your turn and only during combat before blockers are declared. -- You choose which creatures block this combat and how those creatures block. -- Whenever a creature attacks and isn't blocked this combat, untap it and remove it from combat.
mana={4}{R} mana={4}{R}
@@ -6560,15 +6395,6 @@ power=1
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Mesmeric Sliver
text=All Slivers have "When this permanent enters the battlefield, you may fateseal 1." (To fateseal 1, its controller looks at the top card of an opponent's library, then he or she may put that card on the bottom of that library.)
mana={3}{U}
type=Creature
subtype=Sliver
power=2
toughness=2
[/card]
[card]
name=Messenger Jays name=Messenger Jays
text=Flying -- Council's dilemma — When Messenger Jays enters the battlefield, starting with you, each player votes for feather or quill. Put a +1/+1 counter on Messenger Jays for each feather vote and draw a card for each quill vote. For each card drawn this way, discard a card. text=Flying -- Council's dilemma — When Messenger Jays enters the battlefield, starting with you, each player votes for feather or quill. Put a +1/+1 counter on Messenger Jays for each feather vote and draw a card for each quill vote. For each card drawn this way, discard a card.
mana={4}{U} mana={4}{U}
@@ -6578,12 +6404,6 @@ power=2
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Metamorphosis
text=As an additional cost to cast Metamorphosis, sacrifice a creature. -- Add X mana of any one color to your mana pool, where X is one plus the sacrificed creature's converted mana cost. Spend this mana only to cast creature spells.
mana={G}
type=Sorcery
[/card]
[card]
name=Midlife Upgrade name=Midlife Upgrade
text=As an additional cost to cast this spell, sacrifice X Contraptions. -- Assemble X plus one Contraptions. (To assemble a Contraption, put the top card of your Contraption deck face up onto one of your sprockets.) text=As an additional cost to cast this spell, sacrifice X Contraptions. -- Assemble X plus one Contraptions. (To assemble a Contraption, put the top card of your Contraption deck face up onto one of your sprockets.)
mana={3}{W} mana={3}{W}
@@ -8883,15 +8703,6 @@ type=Instant
subtype=Arcane subtype=Arcane
[/card] [/card]
[card] [card]
name=Robber of the Rich
text=Reach, haste -- Whenever Robber of the Rich attacks, if defending player has more cards in hand than you, exile the top card of their library. During any turn you attacked with a Rogue, you may cast that card and you may spend mana as though it were mana of any color to cast that spell.
mana={1}{R}
type=Creature
subtype=Human Archer Rogue
power=2
toughness=2
[/card]
[card]
name=Robo- name=Robo-
text=At the beginning of each end step, if an artifact entered the battlefield under your control this turn, -- Augment {2} ({2} , Reveal this card from your hand: Combine it with target host. Augment only as a sorcery.) text=At the beginning of each end step, if an artifact entered the battlefield under your control this turn, -- Augment {2} ({2} , Reveal this card from your hand: Combine it with target host. Augment only as a sorcery.)
type=Artifact Creature type=Artifact Creature
@@ -9967,12 +9778,6 @@ power=1
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Specter's Shriek
text=Target opponent reveals their hand. You may choose a nonland card from it. If you do, that player exiles that card. If a nonblack card is exiled this way, exile a card from your hand.
mana={B}
type=Sorcery
[/card]
[card]
name=Spectral Shift name=Spectral Shift
text=Choose one — Change the text of target spell or permanent by replacing all instances of one basic land type with another; or change the text of target spell or permanent by replacing all instances of one color word with another. (These effects last indefinitely.) -- Entwine {2} (Choose both if you pay the entwine cost.) text=Choose one — Change the text of target spell or permanent by replacing all instances of one basic land type with another; or change the text of target spell or permanent by replacing all instances of one color word with another. (These effects last indefinitely.) -- Entwine {2} (Choose both if you pay the entwine cost.)
mana={1}{U} mana={1}{U}
@@ -9986,7 +9791,7 @@ type=Instant
[/card] [/card]
[card] [card]
name=Spell Queller name=Spell Queller
abilities=flash abilities=flash,flying
text=Flash -- Flying -- When Spell Queller enters the battlefield, exile target spell with converted mana cost 4 or less. -- When Spell Queller leaves the battlefield, the exiled card's owner may cast that card without paying its mana cost. text=Flash -- Flying -- When Spell Queller enters the battlefield, exile target spell with converted mana cost 4 or less. -- When Spell Queller leaves the battlefield, the exiled card's owner may cast that card without paying its mana cost.
mana={1}{W}{U} mana={1}{W}{U}
type=Creature type=Creature
@@ -10001,12 +9806,6 @@ mana={2}{U}{U}
type=Instant type=Instant
[/card] [/card]
[card] [card]
name=Spelljack
text=Counter target spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard. You may play it without paying its mana cost for as long as it remains exiled. (If it has X in its mana cost, X is 0.)
mana={3}{U}{U}{U}
type=Instant
[/card]
[card]
name=Spellskite name=Spellskite
text={PU}: Change a target of target spell or ability to Spellskite. ({PU} can be paid with either {U} or 2 life.) text={PU}: Change a target of target spell or ability to Spellskite. ({PU} can be paid with either {U} or 2 life.)
mana={2} mana={2}
@@ -10085,16 +9884,6 @@ power=5
toughness=6 toughness=6
[/card] [/card]
[card] [card]
name=Sphinx of the Chimes
abilities=flying
text=Flying -- Discard two nonland cards with the same name: Draw four cards.
mana={4}{U}{U}
type=Creature
subtype=Sphinx
power=5
toughness=6
[/card]
[card]
name=Spider Climb name=Spider Climb
text=You may cast Spider Climb as though it had flash. If you cast it any time a sorcery couldn't have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step. -- Enchant creature -- Enchanted creature gets +0/+3 and has reach. (It can block creatures with flying.) text=You may cast Spider Climb as though it had flash. If you cast it any time a sorcery couldn't have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step. -- Enchant creature -- Enchanted creature gets +0/+3 and has reach. (It can block creatures with flying.)
mana={G} mana={G}
@@ -10121,15 +9910,6 @@ power=2
toughness=2 toughness=2
[/card] [/card]
[card] [card]
name=Spirit of the Labyrinth
text=Each player can't draw more than one card each turn.
mana={1}{W}
type=Enchantment Creature
subtype=Spirit
power=3
toughness=1
[/card]
[card]
name=Spirit of the Season name=Spirit of the Season
text=When Spirit of the Season enters the battlefield, it gains haste if it's summer. Put a +1/+1 counter on it if it's autumn. You gain 5 life if it's winter. If it's spring, search your library for a basic land card, reveal it, put it into your hand, then shuffle your library. text=When Spirit of the Season enters the battlefield, it gains haste if it's summer. Put a +1/+1 counter on it if it's autumn. You gain 5 life if it's winter. If it's spring, search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.
mana={1}{G}{G} mana={1}{G}{G}
+11
View File
@@ -1546,6 +1546,17 @@ public:
AAImprint * clone() const; AAImprint * clone() const;
~AAImprint(); ~AAImprint();
}; };
//AAHaunt
class AAHaunt: public ActivatedAbility
{
public:
MTGAbility * andAbility;
AAHaunt(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target = NULL, ManaCost * _cost = NULL);
int resolve();
const string getMenuText();
AAHaunt * clone() const;
~AAHaunt();
};
//AAConjure //AAConjure
class AAConjure: public ActivatedAbility class AAConjure: public ActivatedAbility
{ {
+1
View File
@@ -298,6 +298,7 @@ public:
int countTrini; int countTrini;
bool anymanareplacement; bool anymanareplacement;
vector<MTGCardInstance*> imprintedCards; vector<MTGCardInstance*> imprintedCards;
MTGCardInstance* hauntedCard;
int attackCost; int attackCost;
int attackCostBackup; int attackCostBackup;
int attackPlaneswalkerCost; int attackPlaneswalkerCost;
+2 -1
View File
@@ -322,7 +322,8 @@ class Constants
SHOWOPPONENTHAND = 195, SHOWOPPONENTHAND = 195,
SHOWCONTROLLERHAND = 196, SHOWCONTROLLERHAND = 196,
HASREPLICATE = 197, HASREPLICATE = 197,
NB_BASIC_ABILITIES = 198, ISPREY = 198,
NB_BASIC_ABILITIES = 199,
RARITY_S = 'S', //Special Rarity RARITY_S = 'S', //Special Rarity
RARITY_M = 'M', //Mythics RARITY_M = 'M', //Mythics
+2 -1
View File
@@ -206,7 +206,7 @@ int AIPlayer::clickSingleTarget(TargetChooser *, vector<Targetable*>& potentialT
AIPlayer * AIPlayerFactory::createAIPlayer(GameObserver *observer, MTGAllCards * collection, Player * opponent, int deckid) AIPlayer * AIPlayerFactory::createAIPlayer(GameObserver *observer, MTGAllCards * collection, Player * opponent, int deckid)
{ {
char deckFile[512]; char deckFile[512];
string avatarFilename; // default imagename string avatarFilename = ""; // default imagename
char deckFileSmall[512]; char deckFileSmall[512];
if (deckid == GameStateDuel::MENUITEM_EVIL_TWIN) if (deckid == GameStateDuel::MENUITEM_EVIL_TWIN)
@@ -228,6 +228,7 @@ AIPlayer * AIPlayerFactory::createAIPlayer(GameObserver *observer, MTGAllCards *
} }
sprintf(deckFile, "ai/baka/deck%i.txt", deckid); sprintf(deckFile, "ai/baka/deck%i.txt", deckid);
DeckMetaData *aiMeta = observer->getDeckManager()->getDeckMetaDataByFilename( deckFile, true); DeckMetaData *aiMeta = observer->getDeckManager()->getDeckMetaDataByFilename( deckFile, true);
if(aiMeta)
avatarFilename = aiMeta->getAvatarFilename(); avatarFilename = aiMeta->getAvatarFilename();
sprintf(deckFileSmall, "ai_baka_deck%i", deckid); sprintf(deckFileSmall, "ai_baka_deck%i", deckid);
} }
+3
View File
@@ -2748,6 +2748,9 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
} }
CardDescriptor cd; CardDescriptor cd;
cd.init(); cd.init();
if(!strcmp(type,"commander")) //Added to allow the casting priority for commanders
cd.basicAbilities[Constants::ISCOMMANDER] = 1;
else if(strcmp(type,"*")) //Added to allow the wildcard in casting priority
cd.setType(type); cd.setType(type);
card = NULL; card = NULL;
payAlternative = NONE; payAlternative = NONE;
+56 -1
View File
@@ -2254,6 +2254,7 @@ int AAImprint::resolve()
{ {
andAbilityClone->addToGame(); andAbilityClone->addToGame();
} }
SAFE_DELETE(andAbility); //moved here because in destructor it can cause a crash.
} }
return 1; return 1;
} }
@@ -2272,7 +2273,61 @@ AAImprint * AAImprint::clone() const
AAImprint::~AAImprint() AAImprint::~AAImprint()
{ {
SAFE_DELETE(andAbility); }
//AAHaunt
AAHaunt::AAHaunt(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target, ManaCost * _cost) :
ActivatedAbility(observer, _id, _source, _cost, 0)
{
target = _target;
andAbility = NULL;
}
int AAHaunt::resolve()
{
MTGCardInstance * _target = (MTGCardInstance *) target;
if (_target && _target->hasType(Subtypes::TYPE_CREATURE))
{
if(_target->mutation && _target->parentCards.size() > 0) return 0; // Mutated down cards cannot be haunted, they will follow the fate of top-card
while(_target->next)
_target = _target->next;
_target->basicAbilities[Constants::ISPREY] = 1;
source->hauntedCard = _target;
if(andAbility)
{
MTGAbility * andAbilityClone = andAbility->clone();
andAbilityClone->target = _target;
if(andAbility->oneShot)
{
andAbilityClone->resolve();
SAFE_DELETE(andAbilityClone);
}
else
{
andAbilityClone->addToGame();
}
SAFE_DELETE(andAbility); //moved here because in destructor it can cause a crash.
}
return 1;
}
return 0;
}
const string AAHaunt::getMenuText()
{
return "Haunt";
}
AAHaunt * AAHaunt::clone() const
{
return NEW AAHaunt(*this);
}
AAHaunt::~AAHaunt()
{
} }
//AAConjure //AAConjure
+8
View File
@@ -668,6 +668,14 @@ void GameObserver::gameStateBasedEffects()
card->removeColor(i); card->removeColor(i);
} }
} }
//clear prey
if(card && isInExile(card) && card->hauntedCard)
{
if(!isInPlay(card->hauntedCard))
{
card->hauntedCard = 0;
}
}
//reset alternate paid //reset alternate paid
if(card && (isInGrave(card)||isInHand(card)||isInExile(card))) if(card && (isInGrave(card)||isInHand(card)||isInExile(card)))
{ {
+21
View File
@@ -3372,6 +3372,25 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
} }
} }
//haunt a creature
found = s.find("haunt");
if (found != string::npos)
{
if (s.find("haunted") == string::npos)
{
MTGAbility * a = NEW AAHaunt(observer, id, card, target);
a->oneShot = 1;
//andability
if(storedAndAbility.size())
{
string stored = storedAndAbility;
storedAndAbility.clear();
((AAHaunt*)a)->andAbility = parseMagicLine(stored, id, spell, card);
}
return a;
}
}
//Conjure a card //Conjure a card
found = s.find("conjure"); found = s.find("conjure");
if (found != string::npos) if (found != string::npos)
@@ -5306,6 +5325,8 @@ int AbilityFactory::abilityEfficiency(MTGAbility * a, Player * p, int mode, Targ
return BAKA_EFFECT_GOOD; return BAKA_EFFECT_GOOD;
if (dynamic_cast<AAImprint *> (a)) if (dynamic_cast<AAImprint *> (a))
return BAKA_EFFECT_GOOD; return BAKA_EFFECT_GOOD;
if (dynamic_cast<AAHaunt *> (a))
return BAKA_EFFECT_GOOD;
if (dynamic_cast<ABestow *> (a)) if (dynamic_cast<ABestow *> (a))
return BAKA_EFFECT_GOOD; return BAKA_EFFECT_GOOD;
if (dynamic_cast<AExert *> (a)) if (dynamic_cast<AExert *> (a))
+1
View File
@@ -280,6 +280,7 @@ void MTGCardInstance::initMTGCI()
countTrini = 0; countTrini = 0;
anymanareplacement = false; anymanareplacement = false;
imprintedCards.clear(); imprintedCards.clear();
hauntedCard = NULL;
attackCost = 0; attackCost = 0;
attackCostBackup = 0; attackCostBackup = 0;
attackPlaneswalkerCost = 0; attackPlaneswalkerCost = 0;
+2 -1
View File
@@ -228,7 +228,8 @@ const char* Constants::MTGBasicAbilities[] = {
"wascommander", //It was the current commander (e.g. after it flipped or morphed) "wascommander", //It was the current commander (e.g. after it flipped or morphed)
"showopponenthand", //opponent plays with his hand revealed. "showopponenthand", //opponent plays with his hand revealed.
"showcontrollerhand", //controller plays with his hand revealed. "showcontrollerhand", //controller plays with his hand revealed.
"hasreplicate" //Kicker cost is a replicate cost (eg. "Vacuumelt") "hasreplicate", //Kicker cost is a replicate cost (eg. "Vacuumelt")
"isprey" //Creature has been haunted by some other card.
}; };
map<string,int> Constants::MTGBasicAbilitiesMap; map<string,int> Constants::MTGBasicAbilitiesMap;
+20 -7
View File
@@ -569,6 +569,10 @@ MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone
} }
} }
// Save the haunted status... (solving the bug on comparison cards with haunted status before zone changing events)
if(card->has(Constants::ISPREY) && doCopy && !asCopy && !inplaytoinplay)
copy->basicAbilities[Constants::ISPREY] = 1;
//Commander is going back to Command Zone, so we recalculate costs according to how many times it has been casted from there. //Commander is going back to Command Zone, so we recalculate costs according to how many times it has been casted from there.
if((to == g->players[0]->game->commandzone || to == g->players[1]->game->commandzone) && copy->numofcastfromcommandzone > 0){ if((to == g->players[0]->game->commandzone || to == g->players[1]->game->commandzone) && copy->numofcastfromcommandzone > 0){
copy->getManaCost()->add(Constants::MTG_COLOR_ARTIFACT,2*copy->numofcastfromcommandzone); copy->getManaCost()->add(Constants::MTG_COLOR_ARTIFACT,2*copy->numofcastfromcommandzone);
@@ -740,8 +744,12 @@ MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone
g->receiveEvent(e); g->receiveEvent(e);
} }
// Reset the haunted status... (if the creature is moving from battlefield is no longer a prey)
if(doCopy && !inplaytoinplay && copy->has(Constants::ISPREY))
copy->basicAbilities[Constants::ISPREY] = 0;
// Erasing counters from copy after the event has been triggered (no counter can survive to a zone changing except the perpetual ones) // Erasing counters from copy after the event has been triggered (no counter can survive to a zone changing except the perpetual ones)
if(doCopy && copy->counters && copy->counters->mCount > 0){ if(doCopy && !inplaytoinplay && copy->counters && copy->counters->mCount > 0){
for (unsigned int i = 0; i < copy->counters->counters.size(); i++){ for (unsigned int i = 0; i < copy->counters->counters.size(); i++){
Counter * counter = copy->counters->counters[i]; Counter * counter = copy->counters->counters[i];
for(int j = counter->nb; j > 0; j--){ for(int j = counter->nb; j > 0; j--){
@@ -1469,15 +1477,15 @@ MTGGameZone * MTGGameZone::intToZone(int zoneId, Player * p, Player * p2)
MTGGameZone * MTGGameZone::intToZone(GameObserver *g, int zoneId, MTGCardInstance * source, MTGCardInstance * target) MTGGameZone * MTGGameZone::intToZone(GameObserver *g, int zoneId, MTGCardInstance * source, MTGCardInstance * target)
{ {
Player *p, *p2; Player *p = NULL;
Player *p2 = NULL;
if (!source) if (!source && g) //patchwork fix when g is NULL.
p = g->currentlyActing(); p = g->currentlyActing();
else else
p = source->controller(); p = source->controller();
if (!target) if (!target && source) //patchwork fix when source is NULL.
{ {
//TODO source may be NULL, need to handle the case when it is NULL. method declaration has NULL being default value of source and target.
if(source->target) if(source->target)
{ {
//bug case, this is a patchwork fix for now //bug case, this is a patchwork fix for now
@@ -1492,10 +1500,15 @@ MTGGameZone * MTGGameZone::intToZone(GameObserver *g, int zoneId, MTGCardInstanc
target = source; target = source;
} }
} }
else else if (target)
p2 = target->controller(); p2 = target->controller();
if(!p) { //patchwork fix when p is NULL.
if(!p2)
return NULL;
else
p = p2;
}
MTGGameZone * result = intToZone(zoneId, p, p2); MTGGameZone * result = intToZone(zoneId, p, p2);
if (result) return result; if (result) return result;
switch (zoneId) switch (zoneId)
+11 -1
View File
@@ -913,6 +913,7 @@ int MTGAlternativeCostRule::reactToClick(MTGCardInstance * card)
return 0; return 0;
ManaCost * alternateCost = card->getManaCost()->getAlternative(); ManaCost * alternateCost = card->getManaCost()->getAlternative();
if(!alternateCost) return 0;
card->paymenttype = MTGAbility::ALTERNATIVE_COST; card->paymenttype = MTGAbility::ALTERNATIVE_COST;
if(alternateCost->extraCosts) if(alternateCost->extraCosts)
for(unsigned int i = 0; i < alternateCost->extraCosts->costs.size();i++) for(unsigned int i = 0; i < alternateCost->extraCosts->costs.size();i++)
@@ -1139,6 +1140,7 @@ int MTGBuyBackRule::reactToClick(MTGCardInstance * card)
return 0; return 0;
ManaCost * buybackCost = card->getManaCost()->getBuyback(); ManaCost * buybackCost = card->getManaCost()->getBuyback();
if(!buybackCost) return 0;
if(buybackCost->extraCosts) if(buybackCost->extraCosts)
for(unsigned int i = 0; i < buybackCost->extraCosts->costs.size();i++) for(unsigned int i = 0; i < buybackCost->extraCosts->costs.size();i++)
{ {
@@ -1190,6 +1192,7 @@ int MTGFlashBackRule::isReactingToClick(MTGCardInstance * card, ManaCost * mana)
int MTGFlashBackRule::reactToClick(MTGCardInstance * card) int MTGFlashBackRule::reactToClick(MTGCardInstance * card)
{ {
ManaCost * flashbackCost = card->getManaCost()->getFlashback(); ManaCost * flashbackCost = card->getManaCost()->getFlashback();
if(!flashbackCost) return 0;
if(flashbackCost->extraCosts) if(flashbackCost->extraCosts)
for(unsigned int i = 0; i < flashbackCost->extraCosts->costs.size();i++) for(unsigned int i = 0; i < flashbackCost->extraCosts->costs.size();i++)
{ {
@@ -1239,6 +1242,7 @@ int MTGTempFlashBackRule::isReactingToClick(MTGCardInstance * card, ManaCost * m
int MTGTempFlashBackRule::reactToClick(MTGCardInstance * card) int MTGTempFlashBackRule::reactToClick(MTGCardInstance * card)
{ {
ManaCost * flashbackCost = card->getManaCost(); ManaCost * flashbackCost = card->getManaCost();
if(!flashbackCost) return 0;
if(flashbackCost->extraCosts) if(flashbackCost->extraCosts)
for(unsigned int i = 0; i < flashbackCost->extraCosts->costs.size();i++) for(unsigned int i = 0; i < flashbackCost->extraCosts->costs.size();i++)
{ {
@@ -1306,6 +1310,7 @@ int MTGRetraceRule::reactToClick(MTGCardInstance * card)
return 0; return 0;
ManaCost * retraceCost = card->getManaCost()->getRetrace(); ManaCost * retraceCost = card->getManaCost()->getRetrace();
if(!retraceCost) return 0;
if(retraceCost->extraCosts) if(retraceCost->extraCosts)
for(unsigned int i = 0; i < retraceCost->extraCosts->costs.size();i++) for(unsigned int i = 0; i < retraceCost->extraCosts->costs.size();i++)
{ {
@@ -1386,6 +1391,7 @@ int MTGSuspendRule::reactToClick(MTGCardInstance * card)
Player *player = game->currentlyActing(); Player *player = game->currentlyActing();
ManaCost * playerMana = player->getManaPool(); ManaCost * playerMana = player->getManaPool();
ManaCost * alternateCost = card->getManaCost()->getSuspend(); ManaCost * alternateCost = card->getManaCost()->getSuspend();
if(!alternateCost) return 0;
//this handles extra cost payments at the moment a card is played. //this handles extra cost payments at the moment a card is played.
if (playerMana->canAfford(alternateCost,card->has(Constants::ANYTYPEOFMANA))) if (playerMana->canAfford(alternateCost,card->has(Constants::ANYTYPEOFMANA)))
{ {
@@ -1512,6 +1518,7 @@ int MTGMorphCostRule::reactToClick(MTGCardInstance * card)
ManaCost * cost = card->getManaCost(); ManaCost * cost = card->getManaCost();
ManaCost * playerMana = player->getManaPool(); ManaCost * playerMana = player->getManaPool();
ManaCost * morph = card->getManaCost()->getMorph(); ManaCost * morph = card->getManaCost()->getMorph();
if(!morph) return 0;
if(morph->extraCosts){ if(morph->extraCosts){
for(unsigned int i = 0; i < morph->extraCosts->costs.size();i++) for(unsigned int i = 0; i < morph->extraCosts->costs.size();i++)
morph->extraCosts->costs[i]->setSource(card); morph->extraCosts->costs[i]->setSource(card);
@@ -1647,6 +1654,7 @@ int MTGPayZeroRule::reactToClick(MTGCardInstance * card)
ManaCost * cost = NEW ManaCost(ManaCost::parseManaCost("{0}",NULL,NULL)); ManaCost * cost = NEW ManaCost(ManaCost::parseManaCost("{0}",NULL,NULL));
ManaCost * newCost = card->computeNewCost(card,cost,cost); ManaCost * newCost = card->computeNewCost(card,cost,cost);
if(!newCost) return 0;
if(newCost->extraCosts) if(newCost->extraCosts)
for(unsigned int i = 0; i < newCost->extraCosts->costs.size();i++) for(unsigned int i = 0; i < newCost->extraCosts->costs.size();i++)
{ {
@@ -1693,6 +1701,7 @@ int MTGOverloadRule::isReactingToClick(MTGCardInstance * card, ManaCost * mana)
return 0; return 0;
} }
ManaCost * newCost = card->getManaCost()->getAlternative(); ManaCost * newCost = card->getManaCost()->getAlternative();
if(!newCost) return 0;
if(newCost->extraCosts) if(newCost->extraCosts)
for(unsigned int i = 0; i < newCost->extraCosts->costs.size();i++) for(unsigned int i = 0; i < newCost->extraCosts->costs.size();i++)
{ {
@@ -1707,6 +1716,7 @@ int MTGOverloadRule::reactToClick(MTGCardInstance * card)
if (!isReactingToClick(card)) if (!isReactingToClick(card))
return 0; return 0;
ManaCost * newCost = card->getManaCost()->getAlternative(); ManaCost * newCost = card->getManaCost()->getAlternative();
if(!newCost) return 0;
if(newCost->extraCosts) if(newCost->extraCosts)
for(unsigned int i = 0; i < newCost->extraCosts->costs.size();i++) for(unsigned int i = 0; i < newCost->extraCosts->costs.size();i++)
{ {
@@ -1768,7 +1778,7 @@ int MTGBestowRule::reactToClick(MTGCardInstance * card)
//this new method below in all alternative cost type causes a memleak, however, you cant safedelete the cost here as it cause a crash //this new method below in all alternative cost type causes a memleak, however, you cant safedelete the cost here as it cause a crash
//TODO::::we need to get to the source of this leak and fix it. //TODO::::we need to get to the source of this leak and fix it.
ManaCost * newCost = card->getManaCost()->getBestow(); ManaCost * newCost = card->getManaCost()->getBestow();
if(!newCost) return 0;
if (newCost->extraCosts) if (newCost->extraCosts)
for (unsigned int i = 0; i < newCost->extraCosts->costs.size(); i++) for (unsigned int i = 0; i < newCost->extraCosts->costs.size(); i++)
{ {
+10
View File
@@ -1052,6 +1052,16 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
cd->nameComparisonMode = COMPARISON_EQUAL; cd->nameComparisonMode = COMPARISON_EQUAL;
} }
if (attribute.find("preyname") != string::npos && card->hauntedCard)
{
attributefound = 1;
cd->compareName = card->hauntedCard->getName();
if (minus)
cd->nameComparisonMode = COMPARISON_UNEQUAL;
else
cd->nameComparisonMode = COMPARISON_EQUAL;
}
if (!attributefound) if (!attributefound)
{ {
//Abilities //Abilities
+4
View File
@@ -1315,6 +1315,10 @@ void WParsedInt::extendedParse(string s, Spell * spell, MTGCardInstance * card)
{ {
intValue = (s == "plastshlturn")?card->controller()->lastShuffleTurn:card->controller()->opponent()->lastShuffleTurn; intValue = (s == "plastshlturn")?card->controller()->lastShuffleTurn:card->controller()->opponent()->lastShuffleTurn;
} }
else if (s == "hasprey")
{
intValue = (card->hauntedCard)?1:0;
}
else if(!intValue)//found nothing, try parsing a atoi else if(!intValue)//found nothing, try parsing a atoi
{ {
intValue = atoi(s.c_str()); intValue = atoi(s.c_str());