From 3dfd3253b2860c9b112be727a911721916ce22c3 Mon Sep 17 00:00:00 2001 From: Vittorio Alfieri Date: Fri, 26 May 2023 17:16:57 +0200 Subject: [PATCH] Fixed transformation ability for instant and sorceries when the duration was uynt uent or forever, fixed several primitives to correctly set transformation duration of targeted cards. --- .../bin/Res/sets/primitives/borderline.txt | 264 ++++++++---------- projects/mtg/bin/Res/sets/primitives/mtg.txt | 7 +- .../bin/Res/sets/primitives/planeswalkers.txt | 6 +- projects/mtg/src/MTGAbility.cpp | 15 +- 4 files changed, 136 insertions(+), 156 deletions(-) diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index b8ece7189..c5f6c8754 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -1682,7 +1682,7 @@ abilities=adventure restriction=can play creature other={2}{B} name(Adventure) auto=if paid(alternative) then name(Create Skeleton) name(Create Skeleton) token(Skeleton,Creature Skeleton,4/1,black,menace) and!( tap(noevent) )! -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto={2}{B}{T}{E(creature|myBattlefield)}:name(Return creature) target(creature|mygraveyard) moveTo(mybattlefield) asSorcery text={2}{B}, {T}, Exile a creature you control: Return target creature card from your graveyard to the battlefield. Activate only as a sorcery. // Create a tapped 4/1 black Skeleton creature token with menace. (Then exile this card. You may cast the artifact later from exile.) mana={1}{B} @@ -1830,7 +1830,7 @@ abilities=flying,haste,adventure restriction=can play creature other={4}{R} name(Adventure) auto=if paid(alternative) then name(Deal 4 damage) name(Deal 4 damage) thisforeach(variable{4}) ability$!name(Deal 1 damage) name(Deal 1 damage) target(player,creature,planeswalker) damage:1!$ controller -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Flying, haste // Explosive Crystal deals 4 damage divided as you choose among any number of targets. (Then exile this card. You may cast the creature later from exile.) mana={4}{R}{R} type=Creature @@ -2574,7 +2574,7 @@ abilities=flying,adventure other={2}{U} name(Adventure) otherrestriction=type(artifact[-creature]|mybattlefield)~morethan~0 auto=if paid(alternative) then name(Target artifact becomes creature) name(Target artifact becomes creature) target(artifact[-creature]|myBattlefield) transforms((Artifact Creature,newability[counter(1/1.4)])) forever -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Flying // Target noncreature artifact you control becomes a 0/0 artifact creature. Put four +1/+1 counters on it. mana={2}{U} type=Creature @@ -3797,7 +3797,7 @@ other={1}{W} name(Adventure) auto=if paid(alternative) then if type(creature|battlefield)~morethan~1 then choice name(Tap 2 creatures) name(Tap 2 creatures) name(Tap 2 creatures) target(<2>creature|battlefield) tap(noevent) auto=if paid(alternative) then if type(creature|battlefield)~morethan~0 then choice name(Tap 1 creature) name(Tap 1 creature) name(Tap 1 creature) target(creature|battlefield) tap(noevent) auto=if paid(alternative) then choice name(Don't tap any creature) name(Don't tap any creature) donothing -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Flying // Tap up to two target creatures. (Then exile this card. You may cast the creature later from exile.) mana={1}{W}{W} type=Creature @@ -5012,7 +5012,7 @@ toughness=6 [/card] [card] name=Author of Shadows -auto=if type(*[-land]|opponentgraveyard)~morethan~0 then name(Choose non-land card) name(Choose non-land card) target(*[-land]|opponentgraveyard) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[all(*|opponentgraveyard) moveto(opponentexile)])) forever )! +auto=if type(*[-land]|opponentgraveyard)~morethan~0 then name(Choose non-land card) name(Choose non-land card) target(*[-land]|opponentgraveyard) moveto(myexile) and!( transforms((,newability[canplayfromexile forever],newability[anytypeofmana forever],newability[all(*|opponentgraveyard) moveto(opponentexile)])) forever )! auto=if type(*[-land]|opponentgraveyard)~equalto~0 then all(*|opponentgraveyard) moveto(opponentexile) text=When Author of Shadows enters the battlefield, exile all cards from all opponents' graveyards. Choose a nonland card exiled this way. 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={4}{B} @@ -6856,7 +6856,7 @@ abilities=adventure other={2}{G} name(Adventure) anyzone=type:land:myBattlefield/type:land:myBattlefield cdaactive auto=if paid(alternative) then name(Search basic land) name(Search basic land) target(land[basic]|mylibrary) moveto(mybattlefield) -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Beanstalk Giant's power and toughness are each equal to the number of lands you control. // Search your library for a basic land card, put it onto the battlefield, then shuffle your library. (Then exile this card. You may cast the creature later from exile.) mana={6}{G} type=Creature @@ -8161,7 +8161,7 @@ type=Instant name=Blazing Crescendo target=creature auto=+3/+1 -auto=name(Exile top card) emblem transforms((,newability[all(*[zpos=1]|myLibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )!],newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent +auto=name(Exile top card) all(*[zpos=1]|myLibrary) moveto(exile) and!( transforms((,newability[canplayfromexile uent])) uent )! text=Target creature gets +3/+1 until end of turn. -- Exile the top card of your library. Until the end of your next turn, you may play that card. mana={1}{R} type=Instant @@ -8267,7 +8267,7 @@ restriction=can play creature otherrestriction=type(creature|battlefield)~morethan~0 other={W} name(Adventure) auto=if paid(alternative) then name(Gains indestructible) name(Gains indestructible) target(creature) transforms((,newability[indestructible])) ueot -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=_ATTACKING_name(Another creature gains flying) target(creature[attacking;-flying]) transforms((,newability[flying])) ueot text=Flying -- Whenever Blessed Hippogriff attacks, target attacking creature without flying gains flying until end of turn. // Target creature gains indestructible until end of turn. (Then exile this card. You may cast the creature later from exile.) mana={3}{W} @@ -9929,7 +9929,7 @@ restriction=can play creature other={1}{R} name(Adventure) #MISSING: damage can't be prevented auto=if paid(alternative) then name(Deals 2 damage) name(Deals 2 damage) damage:2 target(player,creature,planeswalker) -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=@targeted(this) from(*|opponentzones):name(Deals 2 damage) damage:2 opponent auto=@targeted(this) from(*|myzones):name(Deals 2 damage) damage:2 controller text=Whenever Bonecrusher Giant becomes the target of a spell, Bonecrusher Giant deals 2 damage to that spell's controller. // Damage can't be prevented this turn. Stomp deals 2 damage to any target. @@ -10669,7 +10669,7 @@ name=Brazen Borrower // Petty Theft abilities=flying,cloud,flash,adventure,asflash other={1}{U} name(Adventure) auto=if paid(alternative) then name(Return to hand) name(Return to hand) target(*[-land]|opponentbattlefield) moveTo(ownerHand) -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Flash -- Flying -- Brazen Borrower can block only creatures with flying. // Return target nonland permanent an opponent controls to its owner's hand. mana={1}{U}{U} type=Creature @@ -10886,7 +10886,7 @@ type=Land [card] name=Breya's Apprentice auto=_THOPTERTOKEN_ -auto={T}{S(artifact|myBattlefield)}:name(Exile top card) emblem transforms((,newability[all(*[zpos=1]|myLibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )!],newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent +auto={T}{S(artifact|myBattlefield)}:name(Exile top card) all(*[zpos=1]|myLibrary) moveto(exile) and!( transforms((,newability[canplayfromexile uent])) uent )! auto={T}{S(artifact|myBattlefield)}:name(Creature gets 2/0) target(creature) 2/0 ueot text=When Breya's Apprentice enters the battlefield, create a 1/1 colorless Thopter artifact creature token with flying. -- {T}, Sacrifice an artifact: Choose one -- Exile the top card of your library. Until the end of your next turn, you may play that card. -- Target creature gets +2/+0 until end of turn. mana={2}{R} @@ -13873,7 +13873,7 @@ name=Champions of Archery // Join the Group abilities=reach,adventure other={2}{R} name(Adventure) auto=if paid(alternative) then name(Move to Command Zone) name(Move to Command Zone) target(creature[legendary]|myHand) moveTo(mycommandzone) and!( transforms((,newability[iscommander])) forever )! -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=lord(*[iscommander]|myBattlefield) type:*[iscommander]:myBattlefield/0 text=Reach -- Commanders you control get +X/+0, where X is the number of Commanders you control. // You may put a legendary creature card from your hand into the command zone. it's also your commander. mana={3}{R} @@ -16090,7 +16090,7 @@ name=Collectigull // Only the Best abilities=flying,adventure other={1}{W} name(Adventure) auto=if paid(alternative) then name(Return to hand) name(Return to hand) target(*[-land]|myGraveyard) moveTo(ownerHand) -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=protection from(*) auto=_ATTACKING_draw:1 controller text=Flying, protection from common -- Whenever Collectigull attacks, reveal the top card of your library. If it's a Booster Fun card, you may put it into your hand. // Return target Booster Fun card from your graveyard to your hand. @@ -16186,7 +16186,7 @@ restriction=can play creature otherrestriction=type(creature|battlefield)~morethan~0 other={1}{G} name(Adventure) auto=if paid(alternative) then name(Choose creature and mill) name(Choose creature and mill) target(creature|battlefield) transforms((,newability[if type(creature[zpos<=4]|mylibrary)~equalto~0 then deplete:4 controller],newability[if type(creature[zpos<=4]|mylibrary)~equalto~1 then counter(1/1.1) && deplete:4 controller],newability[if type(creature[zpos<=4]|mylibrary)~equalto~2 then counter(1/1.2) && deplete:4 controller],newability[if type(creature[zpos<=4]|mylibrary)~equalto~3 then counter(1/1.3) && deplete:4 controller],newability[if type(creature[zpos<=4]|mylibrary)~equalto~4 then counter(1/1.4) && deplete:4 controller])) oneshot -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=ifnot paid(alternative) then name(Gain 3 life) name(Gain 3 life) life:3 controller text=When Colossal Badger enters the battlefield, you gain 3 life. // Choose target creature. Mill four cards, then put a +1/+1 counter on that creature for each creature card milled this way. mana={5}{G} @@ -16612,7 +16612,7 @@ type=Sorcery [/card] [card] name=Compleated Conjurer -auto=name(Exile top card) emblem transforms((,newability[all(*[zpos=1]|myLibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )!],newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent +auto=name(Exile top card) all(*[zpos=1]|myLibrary) moveto(exile) and!( transforms((,newability[canplayfromexile uent])) uent )! text=When this creature transforms into Compleated Conjurer, exile the top card of your library. Until the end of your next turn, you may play that card. color=red,blue type=Creature @@ -17804,8 +17804,8 @@ toughness=2 [/card] [card] name=Covetous Urge -auto=if type(*[-land]|opponentgraveyard)~morethan~0 then name(Exile non land card) name(Exile non land card) target(*[-land]|opponenthand,opponentgraveyard) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[@each beginofturn:name(Can play from exile) transforms((,newability[canplayfromexile],newability[anytypeofmana])) forever])) forever )! -auto=if type(*[-land]|opponentgraveyard)~equalto~0 then if type(*[-land]|opponenthand)~morethan~0 then name(Exile non land card) name(Exile non land card) name(Exile non land card) target(*[-land]|opponenthand) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[@each beginofturn:name(Can play from exile) transforms((,newability[canplayfromexile],newability[anytypeofmana])) forever])) forever )! +auto=if type(*[-land]|opponentgraveyard)~morethan~0 then name(Exile non land card) name(Exile non land card) target(*[-land]|opponenthand,opponentgraveyard) moveto(myexile) and!( transforms((,newability[canplayfromexile forever],newability[anytypeofmana forever])) forever )! +auto=if type(*[-land]|opponentgraveyard)~equalto~0 then if type(*[-land]|opponenthand)~morethan~0 then name(Exile non land card) name(Exile non land card) name(Exile non land card) target(*[-land]|opponenthand) moveto(myexile) and!( transforms((,newability[canplayfromexile forever],newability[anytypeofmana forever])) forever )! auto=if type(*[-land]|opponentgraveyard)~equalto~0 then if type(*[-land]|opponenthand)~equalto~0 then name(Look opponent hand) name(Look opponent hand) name(Look opponent hand) target(*|opponenthand) moveto(myreveal) and!( moveto(opponenthand) )! 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} @@ -18649,7 +18649,7 @@ abilities=flying,vigilance,adventure otherrestriction=type(*[artifact;enchantment;legendary]|mygraveyard)~morethan~0 other={1}{W} name(Adventure) auto=if paid(alternative) then name(Return card) name(Return card) target(*[artifact;enchantment;legendary]|mygraveyard) moveto(ownerhand) -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Flying, vigilance // Return target artifact, enchantment, or legendary card from your graveyard to your hand. (Then exile this card. You may cast the creature later from exile.) mana={4}{W}{W} type=Creature @@ -18943,7 +18943,7 @@ name=Curious Pair // Treats to Share abilities=adventure other={G} name(Adventure) auto=if paid(alternative) then name(Create Food) name(Create Food) token(Food) -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Create a Food token. (Then exile this card. You may cast the creature later from exile. A Food token is an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") mana={1}{G} type=Creature @@ -20225,7 +20225,7 @@ type=Instant [card] name=Dead Man's Chest target=creature|opponentbattlefield -auto=@movedTo(mytgt|graveyard) from(battlefield):all(*[-land;zpos<=p]|opponentlibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana])) forever )! +auto=@movedTo(mytgt|graveyard) from(battlefield):all(*[-land;zpos<=p]|opponentlibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile forever],newability[anytypeofmana forever])) forever )! text=Enchant creature an opponent controls -- When enchanted creature dies, exile cards equal to its power from the top of its owner's library. You may cast spells from among those cards for as long as they remain exiled, and you may spend mana as though it were mana of any type to cast those spells. mana={1}{B} type=Enchantment @@ -22841,8 +22841,8 @@ type=Sorcery [/card] [card] name=Divine Purge -auto=all(creature[manacost<=3]|battlefield) moveto(exile) and!( transforms((,newability[canplayfromexile],newability[counter(0/0.1.PerpetualCost2More) notrg],newability[counter(0/0.1.PerpetualTapped) notrg])) forever )! -auto=all(artifact[manacost<=3]|battlefield) moveto(exile) and!( transforms((,newability[canplayfromexile],newability[counter(0/0.1.PerpetualCost2More) notrg],newability[counter(0/0.1.PerpetualTapped) notrg])) forever )! +auto=all(creature[manacost<=3]|battlefield) moveto(exile) and!( transforms((,newability[canplayfromexile forever],newability[counter(0/0.1.PerpetualCost2More) notrg],newability[counter(0/0.1.PerpetualTapped) notrg])) forever )! +auto=all(artifact[manacost<=3]|battlefield) moveto(exile) and!( transforms((,newability[canplayfromexile forever],newability[counter(0/0.1.PerpetualCost2More) notrg],newability[counter(0/0.1.PerpetualTapped) notrg])) forever )! auto=emblem transforms((,newability[@movedto(*|battlefield):name(Enters tapped) all(trigger[to]) name(Enters tapped) transforms((,newability[if compare(hascntperpetualtapped)~morethan~0 then tap(noevent)])) oneshot],newability[lord(*[counter{0/0.1.PerpetualCost2More}]|opponentzones) changecost(colorless:+2) forcedalive],newability[lord(*[counter{0/0.1.PerpetualCost2More}]|myzones) changecost(colorless:+2) forcedalive])) forever dontremove text=Exile all artifacts and creatures with mana value 3 or less. They perpetually gain "This spell costs {2} more to cast" and "This permanent enters the battlefield tapped." For as long as each of them remain exiled, its owner may play it. mana={1}{W}{W} @@ -23996,7 +23996,7 @@ restriction=can play creature otherrestriction=type(creature|battlefield)~morethan~0 other={3}{G} name(Adventure) auto=if paid(alternative) then name(Choose creature) name(Choose creature) target(creature|battlefield) transforms((,newability[counter(1/1.2)],newability[opponentshroud],newability[untap])) ueot -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=cantbeblockedby(creature[power<=3]) text=Dread Linnorm can't be blocked by creatures with power 3 or less. // Put two +1/+1 counters on target creature and untap it. It gains hexproof until end of turn. (Then exile this card. You may cast the creature later from exile.) mana={6}{G} @@ -24901,16 +24901,16 @@ type=Artifact [card] name=Dungeon of the Mad Mage restriction=never -aicode=activate target(*[zpos<=3]|mylibrary) moveto(myhand) and!( transforms((,newability[zerocast],newability[draw:2 controller])) forever )! +aicode=activate target(*[zpos<=3]|mylibrary) moveto(myhand) and!( transforms((,newability[zerocast forever],newability[draw:2 controller])) forever )! autocommandzone=transforms((,newability[shroud],newability[indestructible])) forever autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~1}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Yawning Portal) name(Yawning Portal) life:1 controller!$ controller autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~2}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Dungeon Level) name(Dungeon Level) _SCRY1_!$ controller autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~3}:ability$!name(Goblin Bazaar or Twisted Caverns) all(Dungeon of the Mad Mage|mycommandzone) transforms((,newability[choice name(Goblin Bazaar) token(Treasure Sur)*type:*[twodngtrg]:mybattlefieldplus1plusend],newability[if type(creature|battlefield)~morethan~0 then choice name(Twisted Caverns) name(Twisted Caverns) target(creature|battlefield) transforms((,newability[cantattack],newability[cantpwattack])) uynt])) oneshot!$ controller autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~4}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Lost Level) name(Lost Level) _SCRY2_!$ controller -autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~5}:ability$!name(Runestone Caverns or Muiral's Graveyard) transforms((,newability[choice name(Muiral's Graveyard) token(Skeleton Mad)*twicetype:*[twodngtrg]:mybattlefieldplus1plusend],newability[choice name(Runestone Caverns) all(*[zpos<=twicecardcountabiltwodngtrgplus1plusend]|mylibrary) moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) oneshot!$ controller +autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~5}:ability$!name(Runestone Caverns or Muiral's Graveyard) transforms((,newability[choice name(Muiral's Graveyard) token(Skeleton Mad)*twicetype:*[twodngtrg]:mybattlefieldplus1plusend],newability[choice name(Runestone Caverns) all(*[zpos<=twicecardcountabiltwodngtrgplus1plusend]|mylibrary) moveto(exile) and!( transforms((,newability[canplayfromexile forever])) forever )!])) oneshot!$ controller autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~6}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Deep Mines) name(Deep Mines) _SCRY3_!$ controller autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~7}:choice name(Dungeon completed) all(Dungeon of the Mad Mage|mycommandzone) completedungeon:1 controller -autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~7}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Mad Wizard's Lair) name(Mad Wizard's Lair) reveal:3 optionone name(Choose a card) target(*|reveal) moveto(myhand) and!( transforms((,newability[zerocast])) forever )! optiononeend optiontwo all(*|reveal) moveto(myhand) optiontwoend revealend!$ controller +autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~7}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Mad Wizard's Lair) name(Mad Wizard's Lair) reveal:3 optionone name(Choose a card) target(*|reveal) moveto(mylibrary) and!( transforms((,newability[zerocast forever])) forever )! optiononeend optiontwo all(*|reveal) moveto(myhand) optiontwoend revealend!$ controller text=Yawning Portal - You gain 1 life. -- Dungeon Level - Scry 1. -- Goblin Bazaar - Create a Treasure token. -- Twisted Caverns - Target creature can't attack until your next turn. -- Lost Level - Scry 2. -- Runestone Caverns - Exile the top two cards of your library. You may play them. -- Muiral's Graveyard - Create two 1/1 black Skeleton creature tokens. -- Deep Mines - Scry 3. -- Mad Wizard's Lair - Draw three cards and reveal them. You may cast one of them without paying its mana cost. type=Dungeon [/card] @@ -24947,8 +24947,8 @@ toughness=2 [card] name=Durnan of the Yawning Portal abilities=backgroundpartner -aicode=activate transforms((,newability[if type(creature[zpos<=4]|myLibrary)~morethan~0 then target(creature[zpos<=4]|myLibrary) moveTo(myexile) and!( transforms((,newability[canplayfromexile],newability[changecost(colorless:-1) forcedalive],newability[all(other *[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )!])) forever )! else all(*[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! ])) oneshot -auto=_ATTACKING_name(Look top 4 cards) reveal:4 optionone name(Exile creature) target(*[creature]|reveal) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[changecost(colorless:-1) forcedalive])) forever )! optiononeend optiontwo name(put on bottom) target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +aicode=activate transforms((,newability[if type(creature[zpos<=4]|myLibrary)~morethan~0 then target(creature[zpos<=4]|myLibrary) moveTo(myexile) and!( transforms((,newability[canplayfromexile forever],newability[changecost(colorless:-1) forcedalive],newability[all(other *[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )!])) forever )! else all(*[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! ])) oneshot +auto=_ATTACKING_name(Look top 4 cards) reveal:4 optionone name(Exile creature) target(*[creature]|reveal) moveto(myexile) and!( transforms((,newability[canplayfromexile forever],newability[changecost(colorless:-1) forcedalive])) forever )! optiononeend optiontwo name(put on bottom) target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend text=Whenever Durnan attacks, look at the top four cards of your library. You may exile a creature card from among them. Put the rest on the bottom of your library in any order. For as long as that card remains exiled, you may cast it. That spell has undaunted. (It costs {1} less to cast for each opponent.) -- Choose a Background (You can have a Background as a second commander.) mana={3}{G} type=Legendary Creature @@ -26081,7 +26081,7 @@ toughness=2 [card] name=Elite Spellbinder abilities=flying -auto=if type(*[-land]|opponenthand)~morethan~0 then name(Exile a non-land card) name(Exile a non-land card) target(*[-land]|opponenthand) moveto(opponentexile) and!( transforms((,newability[canplayfromexile],newability[changecost(colorless:2) forcedalive])) forever )! +auto=if type(*[-land]|opponenthand)~morethan~0 then name(Exile a non-land card) name(Exile a non-land card) target(*[-land]|opponenthand) moveto(opponentexile) and!( transforms((,newability[canplayfromexile forever],newability[changecost(colorless:2) forcedalive])) forever )! auto=if type(*[-land]|opponenthand)~equalto~0 then name(Reveal hand) name(Reveal hand) target(*|opponenthand) moveto(opponentreveal) and!( moveto(opponenthand) )! text=Flying -- When Elite Spellbinder enters the battlefield, look at target opponent's hand. You may exile a nonland card from it. For as long as that card remains exiled, its owner may play it. A spell cast this way costs 2 more to cast. mana={2}{W} @@ -26092,7 +26092,7 @@ toughness=1 [/card] [card] name=Elkin Bottle -auto={3}{T}:moveto(exile) and!( transforms((,canplayfromexile)) uynt )! all(*[zpos=1]|mylibrary) +auto={3}{T}:name(Exile top card) all(*[zpos=1]|mylibrary) moveto(exile) and!( transforms((,newability[canplayfromexile uynt])) uynt )! text={3}, {T}: Exile the top card of your library. Until the beginning of your next upkeep, you may play that card. mana={3} type=Artifact @@ -26362,7 +26362,7 @@ name=Embereth Shieldbreaker // Battle Display abilities=adventure other={R} name(Adventure) auto=if paid(alternative) then name(Destroy artifact) name(Destroy artifact) target(artifact|battlefield) destroy -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Destroy target artifact. (Then exile this card. You may cast the creature later from exile.) mana={1}{R} type=Creature @@ -26468,7 +26468,7 @@ name=Emerald Dragon // Dissonant Wave abilities=flying,trample,adventure,asflash restriction=can play creature otherrestriction=never -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever other={2}{G} name(Adventure) text=Flying, trample // Counter target activated or triggered ability from a noncreature source. (Then exile this card. You may cast the creature later from exile.) mana={4}{G}{G} @@ -27319,8 +27319,7 @@ subtype=Aura [/card] [card] name=Escape to the Wilds -auto=all(*[zpos<=5]|mylibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )! -auto=emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent +auto=all(*[zpos<=5]|mylibrary) moveto(exile) and!( transforms((,newability[canplayfromexile uent])) uent )! auto=maxPlay(land)+1 text=Exile the top five cards of your library. You may play cards exiled this way until the end of your next turn. -- You may play an additional land this turn. mana={3}{R}{G} @@ -27722,7 +27721,7 @@ restriction=can play creature otherrestriction=type(creature[flying]|battlefield)~morethan~0 other={2}{G} name(Adventure) auto=if paid(alternative) then name(Destroy flying creature) name(Destroy flying creature) target(creature[flying]|battlefield) destroy -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Reach // Destroy target creature with flying. (Then exile this card. You may cast the creature later from exile.) mana={4}{G} type=Creature @@ -28681,7 +28680,7 @@ name=Fae of Wishes // Granted abilities=flying,adventure other={3}{U} name(Adventure) auto=if paid(alternative) then name(Pick non-creature from sideboard) name(Pick non-creature from sideboard) target(*[-creature]|mysideboard) moveTo(myhand) -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto={1}{U}{D(*|myhand)}{D(*|myhand)}:name(Return to hand) moveTo(ownerhand) text=Flying -- {1}{U}, Discard two cards: Return Fae of Wishes to its owner's hand. // You may choose a noncreature card you own from outside the game, reveal it, and put it into your hand. mana={1}{U} @@ -28741,7 +28740,7 @@ name=Faerie Guidemother // Gift of the Fae abilities=flying,adventure other={1}{W} name(Adventure) auto=if paid(alternative) then name(Creature gets 2/1 and flying) name(Creature gets 2/1 and flying) target(creature) transforms((,newability[flying],newability[2/1])) ueot -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Flying // Target creature gets +2/+1 and gains flying until end of turn. (Then exile this card. You may cast the creature later from exile.) mana={W} type=Creature @@ -29141,7 +29140,7 @@ abilities=flying,adventure restriction=can play creature other={1}{R} name(Adventure) auto=if paid(alternative) then name(Deal 1 damage) name(Deal 1 damage) all(creature|opponentBattlefield) damage:1 -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Flying // Forktail Sweep deals 1 damage to each creature you don't control. (Then exile this card. You may cast the creature later from exile.) mana={5}{R}{R} type=Creature @@ -30534,7 +30533,7 @@ name=Fire Giant's Fury target=giant|mybattlefield auto=2/2 ueot auto=trample ueot -auto=transforms((,newability[@combatdamaged(player) from(this):transforms((,newability[all(*[zpos<=thatmuch]|mylibrary) moveto(myexile) and!( transforms((,newability[counter(0/0.1.FireEffect)],newability[this(variable{hascntfireeffect}>0) canplayfromexile],newability[phaseaction[opponent upkeep once checkex] counter(0/0.1.FireEffect)],newability[phaseaction[my upkeep once checkex] counter(0/0.1.FireEffect)],newability[phaseaction[endofturn checkex] counter(0/0.-1.FireEffect)])) forever )!])) ueot])) ueot +auto=transforms((,newability[@combatdamaged(player) from(this):name(Exile cards) transforms((,newability[all(*[zpos<=thatmuch]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile uent])) uent )!])) ueot])) ueot text=Target Giant you control gets +2/+2 and gains trample until end of turn. Whenever it deals combat damage to a player this turn, exile that many cards from the top of your library. Until the end of your next turn, you may play those cards. mana={1}{R} type=Sorcery @@ -30955,7 +30954,7 @@ type=Instant [card] name=Five-Finger Discount target=*[-land]|battlefield -auto=moveto(myhand) and!( transforms((,newability[anytypeofmana])) forever)! +auto=moveto(myhand) and!( transforms((,newability[anytypeofmana forever])) forever)! text=Put target nonland permanent into your hand. You may spend mana as though it were mana of any color the next time you cast that card. mana={4}{U}{U} type=Sorcery @@ -31161,9 +31160,7 @@ type=Sorcery [card] name=Flameskull abilities=cantblock,flying -auto=_DIES_name(Rejuvenation) transforms((,newability[all(creature[-token;fresh:zpos=type:*:mygraveyard]|mygraveyard) moveto(exile) and!( transforms((,newability[phaseaction[my endofturn once next checkex] removeallcounters(0/0.1.FlameskullExiled)],newability[this(counter{0/0.1.FlameskullExiled}>0) canplayfromexile],newability[counter(0/0.1.FlameskullExiled)],newability[all(*[zpos=1]|mylibrary) moveTo(myexile) and!( transforms((,newability[counter(0/0.1.FlameskullExiled)],newability[this(counter{0/0.1.FlameskullExiled}>0) canplayfromexile],newability[@each untap restriction{compare(hascntflameskullexiled)~equalto~0}:-canplayfromexile],newability[@each untap restriction{compare(hascntflameskullexiled)~morethan~0}:canplayfromexile],newability[phaseaction[my endofturn once next checkex] removeallcounters(0/0.1.FlameskullExiled)],newability[@movedto(this|mystack) from(myexile) restriction{compare(hascntflameskullexiled)~morethan~0}:all(*[counter{0/0.1.FlameskullExiled}]|myexile) removeallcounters(0/0.1.FlameskullExiled)],newability[@movedto(this|mybattlefield) from(myexile) restriction{compare(hascntflameskullexiled)~morethan~0}:all(*[counter{0/0.1.FlameskullExiled}]|myexile) removeallcounters(0/0.1.FlameskullExiled)])) forever )!])) forever )!])) forever -autoexile=@movedto(*[counter{0/0.1.FlameskullExiled}]|mystack) from(myexile) restriction{compare(hascntflameskullexiled)~morethan~0}:all(*[counter{0/0.1.FlameskullExiled}]|myexile) transforms((,newability[removeallcounters(0/0.1.FlameskullExiled)],newability[-canplayfromexile])) oneshot -autoexile=@movedto(land[counter{0/0.1.FlameskullExiled}]|mybattlefield) from(myexile) restriction{compare(hascntflameskullexiled)~morethan~0}:all(*[counter{0/0.1.FlameskullExiled}]|myexile) transforms((,newability[removeallcounters(0/0.1.FlameskullExiled)],newability[-canplayfromexile])) oneshot +auto=_DIES_name(Rejuvenation) all(this|mygraveyard) moveto(myexile) and!( transforms((,newability[becomes(tobecast) ueot],newability[all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[becomes(tobecast) ueot],newability[name(Can play one exiled card) target(tobecast[fresh]|myexile) canplayfromexile ueot])) ueot )!])) ueot )! text=Flying -- Flameskull can't block. -- Rejuvenation - When Flameskull dies, exile it. If you do, exile the top card of your library. Until the end of your next turn, you may play one of those cards. (If you cast Flameskull this way, you can't play the other card, and vice versa.) mana={1}{R}{R} type=Creature @@ -31261,7 +31258,7 @@ name=Flaxen Intruder // Welcome Home abilities=adventure other={5}{G}{G} name(Adventure) auto=if paid(alternative) then name(Create 3 Bears) name(Create 3 Bears) token(Bear,Creature Bear,2/2,green)*3 -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=@combatdamaged(player) from(this):may sacrifice all(this) && destroy target(*[artifact;enchantment]|battlefield) text=Whenever Flaxen Intruder deals combat damage to a player, you may sacrifice it. When you do, destroy target artifact or enchantment. // Create three 2/2 green Bear creature tokens. (Then exile this card. You may cast the creature later from exile.) mana={G} @@ -32129,7 +32126,7 @@ abilities=deathtouch,adventure,asflash restriction=can play creature other={2}{B} name(Adventure) auto=if paid(alternative) then name(Draw 1 and opponent looses 1 life) name(Draw 1 and opponent looses 1 life) draw:1 controller && life:-1 controller -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Deathtouch // You draw a card and you lose 1 life. (Then exile this card. You may cast the creature later from exile.) mana={B} type=Creature @@ -32752,7 +32749,7 @@ type=Instant [/card] [card] name=Furious Rise -auto=@each my endofturn aslongas(creature[power>=4]|myBattlefield):moveto(exile) and!( transforms((,canplayfromexile)) ueot )! all(*[zpos=1]|mylibrary) uynt +auto=@each my endofturn restriction{type(creature[power>=4]|myBattlefield)~morethan~0}:name(Exile top card) all(*[zpos=1]|mylibrary) moveto(exile) and!( transforms((,newability[canplayfromexile uynt])) uynt )! text=At the beginning of your end step, if you control a creature with power 4 or greater, exile the top card of your library. You may play that card until you exile another card with Furious Rise. mana={2}{R} type=Enchantment @@ -33052,7 +33049,7 @@ toughness=2 name=Gale's Redirection target=*|stack auto=fizzleto(exile) -auto=name(Roll a d20) rolld20 20 winability all(*[zpos=type:*:opponentexile]|opponentexile) transforms((,newability[canplayfromexile],newability[zerocast])) forever winabilityend loseability if compare(lastrollresultplusmanacostplusend)~lessthan~15 then all(*[zpos=type:*:opponentexile]|opponentexile) transforms((,newability[canplayfromexile],newability[anytypeofmana])) forever else all(*[zpos=type:*:opponentexile]|opponentexile) transforms((,newability[canplayfromexile],newability[zerocast])) forever loseabilityend rolld20end +auto=name(Roll a d20) rolld20 20 winability all(*[zpos=type:*:opponentexile]|opponentexile) transforms((,newability[canplayfromexile forever],newability[zerocast forever])) forever winabilityend loseability if compare(lastrollresultplusmanacostplusend)~lessthan~15 then all(*[zpos=type:*:opponentexile]|opponentexile) transforms((,newability[canplayfromexile forever],newability[anytypeofmana forever])) forever else all(*[zpos=type:*:opponentexile]|opponentexile) transforms((,newability[canplayfromexile forever],newability[zerocast forever])) forever loseabilityend rolld20end text=Exile target spell, then roll a d20 and add that spell's mana value. -- 1-14 | You may cast the exiled 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. -- 15+ | You may cast the exiled card without paying its mana cost for as long as it remains exiled. mana={3}{U}{U} type=Instant @@ -33160,9 +33157,8 @@ type=Instant [card] name=Galvanic Relay abilities=storm -auto=all(*[zpos=1]|myLibrary) moveto(myexile) and!( transforms((,newability[phaseaction[opponent end once checkex] counter(0/0.1.GalvanicEffect)])) forever )! -auto=emblem transforms((,newability[lord(*[counter{0/0.1.GalvanicEffect}]|myexile) canplayfromexile])) forever dontremove -auto=emblem transforms((,newability[@each my end:all(*[counter{0/0.1.GalvanicEffect}]|myexile) counter(0/0.-1.GalvanicEffect)])) forever dontremove +auto=all(*[zpos=1]|myLibrary) moveto(myexile) and!( transforms((,newability[phaseaction[opponent end once checkex] counter(0/0.1.GalvanicEffect) notrg])) forever )! +auto=emblem transforms((,newability[lord(*[counter{0/0.1.GalvanicEffect}]|myexile) canplayfromexile],newability[@each my end:all(*[counter{0/0.1.GalvanicEffect}]|myexile) counter(0/0.-1.GalvanicEffect) notrg])) uent text=Exile the top card of your library. During your next turn, you may play that card. -- Storm (When you cast this spell, copy it for each spell cast before it this turn.) mana={2}{R} type=Sorcery @@ -33239,7 +33235,7 @@ abilities=adventure,asflash restriction=can play creature other={1}{G} name(Adventure) auto=if paid(alternative) then name(Creature gets 2/2) name(Creature gets 2/2) target(creature|battlefield) 2/2 ueot -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Target creature gets +2/+2 until end of turn. (Then exile this card. You may cast the creature later from exile.) mana={3}{G} type=Creature @@ -34143,7 +34139,7 @@ other={1}{B} name(Adventure) restriction=can play creature otherrestriction=type(creature|mygraveyard)~morethan~0 auto=if paid(alternative) then name(Return creature) name(Return creature) target(creature|mygraveyard) moveto(myhand) -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto={1}:equip auto=teach(creature) @movedto(creature|graveyard) from(creature|mybattlefield):name(Put 1/1 counter) counter(1/1) text=Whenever a creature you control dies, put a +1/+1 counter on equipped creature. -- Equip {1} // Return target creature card from your graveyard to your hand. (Then exile this card. You may cast the artifact later from exile.) @@ -34284,7 +34280,7 @@ abilities=adventure,asflash restriction=can play creature other={2}{W} name(Adventure) auto=if paid(alternative) then name(Destroy creature) name(Destroy creature) target(creature[power>=4]|battlefield) destroy -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto={1}{W}{T}:target(creature) tap(noevent) text={1}{W}, {T}: Tap target creature. // Destroy target creature with power 4 or greater. (Then exile this card. You may cast the creature later from exile.) mana={W} @@ -37230,7 +37226,7 @@ abilities=adventure other={1}{B} name(Adventure) restriction=can play creature auto=if paid(alternative) then name(Mill 4 cards) name(Mill 4 cards) deplete:4 controller -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=aslongas(creature|mygraveyard) menace >3 auto=aslongas(creature|mygraveyard) deathtouch >3 text=As long as there are four or more creature cards in your graveyard, Gray Slaad has menace and deathtouch. // Mill four cards. (Then exile this card. You may cast the creature later from exile.) @@ -37629,7 +37625,7 @@ type=Sorcery [/card] [card] name=Grinning Totem -auto={2}{T}{S}:target(*|opponentlibrary) moveto(myexile) and!( transforms((,newability[counter(0/0.1.TotemExiled)],newability[canplayfromexile],newability[@each my upkeep:all(*[counter{0/0.1.TotemExiled}]|myexile) moveTo(ownergraveyard)])) forever )! +auto={2}{T}{S}:target(*|opponentlibrary) moveto(myexile) and!( transforms((,newability[counter(0/0.1.TotemExiled)],newability[canplayfromexile uent],newability[@each my upkeep:all(*[counter{0/0.1.TotemExiled}]|myexile) moveTo(ownergraveyard)])) uent )! text={2}, {T}, Sacrifice Grinning Totem: Search target opponent's library for a card and exile it. Then that player shuffles his or her library. Until the beginning of your next upkeep, you may play that card. At the beginning of your next upkeep, if you haven't played it, put it into its owner's graveyard. mana={4} type=Artifact @@ -38004,7 +38000,7 @@ restriction=can play creature otherrestriction=type(*[artifact;enchantment]|battlefield)~morethan~0 other={2}{W} name(Adventure) auto=if paid(alternative) then name(Exile artifact or enchantment) name(Exile artifact or enchantment) target(*[artifact;enchantment]|battlefield) moveto(exile) -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=this(variable{controllerturn}>0) transforms((,newability[preventalldamage to(this)])) text=Vigilance -- As long as it's your turn, prevent all damage that would be dealt to Guardian Naga. // Exile target artifact or enchantment. (Then exile this card. You may cast the creature later from exile.) mana={5}{W}{W} @@ -40551,7 +40547,7 @@ abilities=adventure,asflash other={B} name(Adventure) restriction=can play creature auto=if paid(alternative) then name(Blocking creatures get -1/-1) name(Blocking creatures get -1/-1) all(creature[blocking]|battlefield) -1/-1 ueot -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=@each blockers:name(Blocking creatures get -1/-1) transforms((,newability[lord(creature[blocking]|opponentbattlefield) -1/-1])) ueot text=Whenever one or more creatures you control become blocked, each blocking creature gets -1/-1 until end of turn. // Each creature that blocked this turn gets -1/-1 until end of turn. (Then exile this card. You may cast the creature later from exile.) mana={5}{B}{B} @@ -40893,7 +40889,7 @@ toughness=3 name=Hoarding Broodlord abilities=hiddenface,flying other={convoke} name(Convoke) -auto=name(Search and exile) target(*|mylibrary) moveto(myexile) and!( transforms((,newability[counter(0/0.1.HoardExiled) notrg],newability[canplayfromexile],newability[this(counter{0/0.1.HoardExiled}>0) canplayfromexile],newability[@each untap restriction{compare(hascnthoardexiled)~morethan~0}:canplayfromexile])) forever )! +auto=name(Search and exile) target(*|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile forever])) forever )! auto=lord(creature[-tapped]|mybattlefield) transforms((,newability[{T}:name(Pay 1 convoke for spell) name(Pay 1 convoke for spell) target(*[-land]|myexile) transforms((,newability[changecost(colorless:-1)])) ueot])) text=Convoke -- Flying -- When Hoarding Broodlord enters the battlefield, search your library for a card, exile it face down, then shuffle. For as long as that card remains exiled, you may play it. -- Spells you cast from exile have convoke. mana={5}{B}{B}{B} @@ -41423,7 +41419,7 @@ name=Horn of Valhalla // Ysgard's Call other={X}{W}{W} name(Adventure) restriction=can play artifact auto=if paid(alternative) then name(Create Soldiers) name(Create Soldiers) token(Soldier,Creature Soldier,1/1,white)*X -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=teach(creature) type:creature:mybattlefield/type:creature:mybattlefield nonstatic auto={3}:equip text=Equipped creature gets +1/+1 for each creature you control. -- Equip {3} // Create X 1/1 white Soldier creature tokens. (Then exile this card. You may cast the artifact later from exile.) @@ -41466,9 +41462,9 @@ toughness=4 [card] name=Hostage Taker auto=if type(*[creature;artifact]|opponentbattlefield)~morethan~0 then choice name(Exile opponent creature or artifact) name(Exile opponent creature or artifact) target(*[creature;artifact]|opponentbattlefield) imprint -auto=if type(*[creature;artifact]|opponentbattlefield)~morethan~0 then name(Exile your creature or artifact) name(Exile your creature or artifact) target(other *[creature;artifact]|battlefield) imprint and!( transforms((,newability[canplayfromexile],newability[anytypeofmana])) forever )! +auto=if type(*[creature;artifact]|opponentbattlefield)~morethan~0 then name(Exile your creature or artifact) name(Exile your creature or artifact) target(other *[creature;artifact]|battlefield) imprint and!( transforms((,newability[canplayfromexile forever],newability[anytypeofmana forever])) forever )! auto=this(variable{hasevict}>0) transforms((,newability[@movedto(this|nonbattlezone) from(battlefield):name(Put back exiled card) target(*[evictname]|exile) moveTo(ownerBattlefield)])) -auto=this(variable{hasevict}>0) {0}:name(Cast opponent exiled card) name(Cast opponent exiled card) target(*[evictname]|opponentexile) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[counter(0/0.1.HostageExiled)])) ueot )! +auto=this(variable{hasevict}>0) {0}:name(Cast opponent exiled card) name(Cast opponent exiled card) target(*[evictname]|opponentexile) moveto(myexile) and!( transforms((,newability[canplayfromexile forever],newability[anytypeofmana forever],newability[counter(0/0.1.HostageExiled)])) ueot )! auto=@counteradded(0/0.1.HostageExiled) from(creature|myexile):name(Effect ends) transforms((,newability[@movedto(this|nonbattlezone) from(battlefield):name(Put back exiled card) target(*[counter{0/0.1.HostageExiled}]|myexile) moveTo(ownerBattlefield)])) ueot auto=@each endofturn:if type(*[counter{0/0.1.HostageExiled}]|myexile)~morethan~0 then name(Return card to owner exile) name(Return card to owner exile) target(*[counter{0/0.1.HostageExiled}]|myexile) imprint text=When Hostage Taker enters the battlefield, exile another target creature or artifact until Hostage Taker leaves the battlefield. You may cast that card for as long as it remains exiled, and you may spend mana as though it were mana of any type to cast that spell. @@ -42033,9 +42029,9 @@ toughness=4 [/card] [card] name=Hurl Through Hell -restriction=type(creature|battlefield)~morethan~0 -auto=if compare(controllerturn)~morethan~0 then name(Exile creature) name(Exile creature) target(creature|battlefield) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[phaseaction[my endofturn next once checkex] moveTo(ownerexile)])) forever )! -auto=if compare(controllerturn)~equalto~0 then name(Exile creature) name(Exile creature) target(creature|battlefield) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[phaseaction[my endofturn once checkex] moveTo(ownerexile)])) forever )! +target=creature +auto=if compare(controllerturn)~morethan~0 then name(Exile creature) name(Exile creature) moveto(myexile) and!( transforms((,newability[canplayfromexile uent],newability[anytypeofmana uent],newability[phaseaction[my endofturn next once checkex] moveTo(ownerexile)])) forever )! +auto=if compare(controllerturn)~equalto~0 then name(Exile creature) name(Exile creature) moveto(myexile) and!( transforms((,newability[canplayfromexile uent],newability[anytypeofmana uent],newability[phaseaction[my endofturn once checkex] moveTo(ownerexile)])) forever )! text=Exile target creature. Until the end of your next turn, you may cast that card and you may spend mana as though it were mana of any color to cast that spell. mana={2}{B}{R} type=Instant @@ -42181,7 +42177,7 @@ abilities=flying,adventure,asflash restriction=can play creature other={2}{U} name(Adventure) auto=if paid(alternative) then name(Counter spell) name(Counter spell) target(*[manacost<=3]|stack) fizzle -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Flying // Counter target spell with mana value 3 or less. (Then exile this card. You may cast the creature later from exile.) mana={U}{U} type=Creature @@ -42510,9 +42506,8 @@ type=Instant [card] name=Ignite the Future flashback={7}{R} -auto=name(Exile top 3 cards) all(*[zpos<=3]|mylibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )! -auto=ifnot gravecast then emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent -auto=if gravecast then emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile],newability[lord(*[counter{0/0.1.PlayExile}]|myexile) zerocast])) uent +auto=ifnot gravecast then all(*[zpos<=3]|mylibrary) moveto(exile) and!( transforms((,newability[canplayfromexile uent])) uent )! +auto=if gravecast then all(*[zpos<=3]|mylibrary) moveto(exile) and!( transforms((,newability[canplayfromexile uent],newability[zerocast uent])) uent )! text=Exile the top three cards of your library. Until the end of your next turn, you may play those cards. If this spell was cast from a graveyard, you may play cards this way without paying their mana costs. -- Flashback {7}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) mana={3}{R} type=Sorcery @@ -42585,7 +42580,7 @@ other={X}{U}{U} name(Adventure) restriction=can play creature otherrestriction=type(creature|battlefield)~morethan~0 auto=if paid(alternative) then name(Tap X creatures) name(Tap X creatures) target(creature|Battlefield) freeze -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=ifnot paid(alternative) then may name(Turn creatures) name(Turn creatures) target(creature[-token;tapped]|battlefield) flip(Soldier Bas) and!( transforms((Artifact Creature Horror,setpower=2,settoughness=2)) forever )! text=Ceremorphosis - When Illithid Harvester enters the battlefield, turn any number of target tapped nontoken creatures face down. They're 2/2 Horror creatures. // Tap X target creatures. They don't untap during their controllers' next untap steps. (Then exile this card. You may cast the creature later from exile.) mana={4}{U} @@ -44203,8 +44198,7 @@ toughness=5 [/card] [card] name=Inspired Tinkering -auto=name(Exile top 3 cards) all(*[zpos<=3]|mylibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )! -auto=emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent +auto=name(Exile top 3 cards) all(*[zpos<=3]|mylibrary) moveto(exile) and!( transforms((,newability[canplayfromexile uent])) uent )! auto=name(Create 3 treasures) token(Treasure Sur)*3 text=Exile the top three cards of your library. Until the end of your next turn, you may play those cards. -- Create three Treasure tokens. (They're artifacts with "{T}, Sacrifice this artifact: Add one mana of any color.") mana={4}{R} @@ -44723,7 +44717,7 @@ backside=Lightshield Array restriction=compare(isflipped)~equalto~0 anyzone={0}:doubleside(backside) auto=counter(0/0.3.Defense) -auto=if type(*[-land]|opponenthand)~morethan~0 then ability$!name(Look opponent's hand) name(Look opponent's hand) target(*[-land]|opponenthand) moveto(myreveal) and!( transforms((,newability[choice name(Exile card) moveto(opponentexile) and!( transforms((,newability[canplayfromexile],newability[changecost(colorless:2) forcedalive])) forever )!],newability[choice name(Don't exile card) moveto(opponenthand)])) forever )! !$ controller +auto=if type(*[-land]|opponenthand)~morethan~0 then ability$!name(Look opponent's hand) name(Look opponent's hand) target(*[-land]|opponenthand) moveto(myreveal) and!( transforms((,newability[choice name(Exile card) moveto(opponentexile) and!( transforms((,newability[canplayfromexile forever],newability[changecost(colorless:2) forcedalive])) forever )!],newability[choice name(Don't exile card) moveto(opponenthand)])) forever )! !$ controller auto=if type(*[-land]|opponenthand)~equalto~0 then ability$!name(Look opponent's hand) name(Look opponent's hand) target(*|opponenthand) moveto(opponentreveal) and!( moveto(opponenthand) )! !$ controller auto=moveto(opponentbattlefield) auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! @@ -51023,8 +51017,7 @@ type=Sorcery [/card] [card] name=Light Up the Stage -auto=name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )! -auto=emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent +auto=name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(exile) and!( transforms((,newability[canplayfromexile uent])) uent )! text=Spectacle {R} (You may cast this spell for its spectacle cost rather than its mana cost if an opponent lost life this turn.) -- Exile the top two cards of your library. Until the end of your next turn, you may play those cards. other={R} name(Spectacle) otherrestriction=_SPECTACLE_ @@ -51876,7 +51869,7 @@ name=Lonesome Unicorn // Rider in Need abilities=vigilance,adventure other={2}{W} name(Adventure) auto=if paid(alternative) then name(Create knight) name(Create knight) _KNIGHTTOKEN_ -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Vigilance // Create a 2/2 white Knight creature token with vigilance. (Then exile this card. You may cast the creature later from exile.) mana={4}{W} type=Creature @@ -52268,7 +52261,7 @@ name=Lovestruck Beast // Heart's Desire abilities=adventure other={G} name(Adventure) auto=if paid(alternative) then name(Create human) name(Create human) token(Human,Creature Human,1/1,white) -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=@each my combatbegins:if type(creature[power=1]|mybattlefield)~lessthan~1 then cantattack ueot auto=@each my combatbegins:if type(creature[toughness=1]|mybattlefield)~lessthan~1 then cantattack ueot text=Lovestruck Beast can't attack unless you control a 1/1 creature. // Create a 1/1 white Human creature token. (Then exile this card. You may cast the creature later from exile.) @@ -54834,7 +54827,7 @@ abilities=adventure,asflash restriction=can play creature other={R} name(Adventure) auto=if paid(alternative) then may name(Discard and draw) reject notatarget(*|myhand) and!( draw:1 controller ) -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto={2}{R}{D(*|myhand)}:name(Draw a card) draw:1 text={2}{R}, Discard a card: Draw a card. // You may discard a card. If you do, draw a card. (Then exile this card. You may cast the creature later from exile.) mana={2}{R} @@ -54976,7 +54969,7 @@ abilities=adventure other={U} name(Adventure) auto=if paid(alternative) then choice name(Opponent mills 4 cards) name(Opponent mills 4 cards) deplete:4 opponent auto=if paid(alternative) then choice name(You mill 4 cards) name(You mill 4 cards) deplete:4 controller -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Target player mills four cards. (Then exile this card. You may cast the creature later from exile.) mana={U} type=Creature @@ -56650,7 +56643,7 @@ auto=@each endofturn restriction{compare(hascntmonkeffect)~morethan~0}:removeall auto=this(variable{hascntlevel}=1) {W}{U}:name(Level 2) counter(0/0,1,Level) asSorcery auto=@counteradded(0/0.1.Level) from(this) restriction{compare(hascntlevel)~equalto~2}:may name(Return non-land permanent) target(*[-land]|battlefield) moveto(ownerhand) auto=this(variable{hascntlevel}=2) {1}{W}{U}:name(Level 3) counter(0/0,1,Level) asSorcery -auto=@each my upkeep restriction{compare(hascntlevel)~morethan~2}:name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[@movedto(*|mystack):canplayfromexile ueot])) forever )! +auto=@each my upkeep restriction{compare(hascntlevel)~morethan~2}:name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[@movedto(*|mystack):all(this|myexile) transforms((,newability[canplayfromexile ueot])) ueot])) forever )! text=(Gain the next level as a sorcery to add its ability.) -- The second spell you cast each turn costs {1} less to cast. -- {W}{U}: Level 2 -- When this Class becomes level 2, return up to one target nonland permanent to its owner's hand. -- {1}{W}{U}: Level 3 -- At the beginning of your upkeep, exile the top card of your library. For as long as it remains exiled, it has "You may cast this card from exile as long as you've cast another spell this turn." mana={W}{U} type=Enchantment @@ -56698,7 +56691,7 @@ abilities=adventure restriction=can play creature other={2}{G} name(Adventure) auto=if paid(alternative) then name(Mill 5 cards) name(Mill 5 cards) transforms((,newability[deplete:5 controller],newability[name(Return creature) target(creature[zpos>=type:*mygraveyardminus5minusend]|mygraveyard) moveto(myhand)])) oneshot -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto={1}{G}{T}:name(Put creature in play) target(creature|myhand) moveto(mybattlefield) text={1}{G}, {T}: You may put a creature card from your hand onto the battlefield. // Mill five cards, then return a creature card milled this way to your hand. (Then exile this card. You may cast the artifact later from exile.) mana={3}{G} @@ -56872,7 +56865,7 @@ abilities=flying,adventure,asflash restriction=can play creature other={1}{U} name(Adventure) auto=if paid(alternative) then may name(Creatures gain flying) name(Creatures gain flying) target(creature|battlefield) transforms((,newability[flying])) ueot -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=ifnot paid(alternative) then if opponentdamagedbycombat then name(Draw a card) name(Draw a card) name(Draw a card) draw:1 controller text=Flying -- When Moonshae Pixie enters the battlefield, draw cards equal to the number of opponents who were dealt combat damage this turn. // Up to three target creatures gain flying until end of turn. (Then exile this card. You may cast the creature later from exile.) mana={3}{U} @@ -57412,7 +57405,7 @@ restriction=can play creature other={1}{B}{B} name(Adventure) auto=if paid(alternative) then name(Destroy creature or planeswalker) name(Destroy creature or planeswalker) target(creature,planeswalker) destroy auto=if paid(alternative) then name(You loose 2 life) name(You loose 2 life) life:-2 controller -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=_DIES_name(Put on the bottom of library) all(trigger[to]) bottomoflibrary text=Lifelink -- When Murderous Rider dies, put it on the bottom of its owner's library. // Destroy target creature or planeswalker. You lose 2 life. (Then exile this card. You may cast the creature later from exile.) mana={1}{B}{B} @@ -60281,7 +60274,7 @@ name=Oakhame Ranger // Bring Back abilities=adventure other={GW}{GW}{GW}{GW} name(Adventure) auto=if paid(alternative) then name(Create 2 humans) token(Human,Creature Human,1/1,white)*2 -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto={T}:all(creature|mybattlefield) 1/1 ueot text={T}: Creatures you control get +1/+1 until end of turn. // Create two 1/1 white Human creature tokens. (Then exile this card. You may cast the creature later from exile.) mana={GW}{GW}{GW}{GW} @@ -60387,7 +60380,7 @@ type=Instant [card] name=Ob Nixilis, Captive Kingpin abilities=flying,trample -auto=@lifelostfoeof(player) restriction{compare(thatmuch)~equalto~1}:name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) uent )! +auto=@lifelostfoeof(player) restriction{compare(thatmuch)~equalto~1}:name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile uent])) uent )! auto=@lifelostfoeof(player) restriction{compare(thatmuch)~equalto~1}:name(Put 1/1 counter) counter(1/1) text=Flying, trample -- Whenever one or more opponents each lose exactly 1 life, put a +1/+1 counter on Ob Nixilis, Captive Kingpin. Exile the top card of your library. Until your next end step, you may play that card. mana={2}{B}{R} @@ -61898,7 +61891,7 @@ name=Order of Midnight // Alter Fate abilities=flying,cantblock,adventure other={1}{B} name(Adventure) auto=if paid(alternative) then name(Return creature from graveyard) name(Return creature from graveyard) target(creature|mygraveyard) moveto(myhand) -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Flying -- Order of Midnight can't block. // Return target creature card from your graveyard to your hand. (Then exile this card. You may cast the creature later from exile.) mana={1}{B} type=Creature @@ -63601,7 +63594,7 @@ restriction=can play creature otherrestriction=type(creature|mybattlefield)~morethan~0 other={1}{W} name(Adventure) auto=if paid(alternative) then name(Exile creature) name(Exile creature) target(creature|myBattlefield) moveto(exile) and!( moveto(ownerbattlefield) )! -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=@each my end restriction{revolt}:name(Create Pegasus) token(Pegasus,Creature Pegasus,1/1,white,flying) text=Flying -- At the beginning of your end step, if a permanent you controlled left the battlefield this turn, create a 1/1 white Pegasus creature token with flying. // Exile target creature you control, then return that card to the battlefield under its owner's control. (Then exile this card. You may cast the creature later from exile.) mana={5}{W} @@ -64923,7 +64916,7 @@ type=Sorcery [/card] [card] name=Plargg and Nassari -auto=@each my upkeep:name(Exile from top) transforms((,newability[all(*[zpos<=findfirsttypenonland]|mylibrary) moveto(myexile) && ability$!may name(Cast exiled spell) target(*[-land&fresh]|exile) activate castcard(normal)!$ controller],newability[all(*[zpos<=oppofindfirsttypenonland]|opponentlibrary) moveto(opponentexile) && ability$!may name(Cast exiled spell) target(*[-land&fresh]|exile) activate castcard(normal)!$ opponent])) oneshot +auto=@each my upkeep:name(Exile from top) transforms((,newability[all(*[zpos<=findfirsttypenonland]|mylibrary) moveto(myexile) && all(*[zpos<=oppofindfirsttypenonland]|opponentlibrary) moveto(opponentexile) && ability$!name(Choose exiled spell opponent can cast) name(Choose exiled spell opponent can cast) target(*[-land&fresh]|exile) moveto(opponentexile) and!( transforms((,newability[may name(Cast spell from exile) activate castcard(normal)])) oneshot )!!$ opponent])) oneshot text=At the beginning of your upkeep, each player exiles cards from the top of their library until they exile a nonland card. An opponent chooses a nonland card exiled this way. You may cast up to two spells from among the other cards exiled this way without paying their mana costs. mana={3}{R}{R} type=Legendary Creature @@ -65694,7 +65687,7 @@ type=Instant [/card] [card] name=Praetor's Grasp -auto=name(Search opponent library) target(*|opponentlibrary) moveto(myexile) and!( transforms((,newability[shuffle opponent],newability[canplayfromexile],newability[@each beginofturn:name(Can play from exile) transforms((,newability[canplayfromexile])) forever])) forever )! +auto=name(Search opponent library) target(*|opponentlibrary) moveto(myexile) and!( transforms((,newability[shuffle opponent],newability[canplayfromexile forever])) forever )! text=Search target opponent's library for a card and exile it face down. Then that player shuffles his or her library. You may look at and play that card for as long as it remains exiled. mana={1}{B}{B} type=Sorcery @@ -65792,7 +65785,7 @@ toughness=2 [/card] [card] name=Predators' Hour -auto=all(creature|mybattlefield) transforms((,newability[menace],newability[@combatdamagefoeof(player) from(this):all(*[zpos=1]|opponentlibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[@each beginofturn:canplayfromexile ueot],newability[@each beginofturn:transforms((,newability[anytypeofmana])) ueot])) forever )!])) ueot +auto=all(creature|mybattlefield) transforms((,newability[menace],newability[@combatdamagefoeof(player) from(this):name(Exile top card) all(*[zpos=1]|opponentlibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile forever],newability[anytypeofmana forever])) forever )!])) ueot text=Until end of turn, creatures you control gain menace and "Whenever this creature deals combat damage to a player, exile the top card of that player's library face down. You may look at and play 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={1}{B} type=Sorcery @@ -66544,8 +66537,7 @@ toughness=4 [card] name=Prosper, Tome-Bound abilities=deathtouch -auto=@each my end:name(Exile top card) all(*[zpos<=1]|mylibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )! -auto=@each my end:emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent +auto=@each my end:name(Exile top card) all(*[zpos<=1]|mylibrary) moveto(exile) and!( transforms((,newability[canplayfromexile forever])) forever )! auto=@movedto(*|mystack,mybattlefield) from(myexile):name(Create treasure) token(Treasure Sur) text=Deathtouch -- Mystic Arcanum - At the beginning of your end step, exile the top card of your library. Until the end of your next turn, you may play that card. -- Pact Boon - Whenever you play a card from exile, create a Treasure token. mana={2}{B}{R} @@ -66866,8 +66858,8 @@ subtype=Aura [/card] [card] name=Psychic Intrusion -auto=if type(*[-land]|opponentgraveyard)~morethan~0 then name(Exile non land card) name(Exile non land card) target(*[-land]|opponenthand,opponentgraveyard) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[@each beginofturn:name(Can play from exile) transforms((,newability[canplayfromexile],newability[anytypeofmana])) forever])) forever )! -auto=if type(*[-land]|opponentgraveyard)~equalto~0 then if type(*[-land]|opponenthand)~morethan~0 then name(Exile non land card) name(Exile non land card) name(Exile non land card) target(*[-land]|opponenthand) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[@each beginofturn:name(Can play from exile) transforms((,newability[canplayfromexile],newability[anytypeofmana])) forever])) forever )! +auto=if type(*[-land]|opponentgraveyard)~morethan~0 then name(Exile non land card) name(Exile non land card) target(*[-land]|opponenthand,opponentgraveyard) moveto(myexile) and!( transforms((,newability[canplayfromexile forever],newability[anytypeofmana forever])) forever )! +auto=if type(*[-land]|opponentgraveyard)~equalto~0 then if type(*[-land]|opponenthand)~morethan~0 then name(Exile non land card) name(Exile non land card) name(Exile non land card) target(*[-land]|opponenthand) moveto(myexile) and!( transforms((,newability[canplayfromexile forever],newability[anytypeofmana forever])) forever )! auto=if type(*[-land]|opponentgraveyard)~equalto~0 then if type(*[-land]|opponenthand)~equalto~0 then name(Look opponent hand) name(Look opponent hand) name(Look opponent hand) target(*|opponenthand) moveto(myreveal) and!( moveto(opponenthand) )! text=Target opponent reveals his or her 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={3}{U}{B} @@ -67572,7 +67564,7 @@ name=Queen of Ice // Rage of Winter abilities=adventure other={1}{U} name(Adventure) auto=if paid(alternative) then name(Freeze creature) name(Freeze creature) target(creature|battlefield) freeze -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=@combatdamaged(creature) from(this):all(trigger[to]) freeze text=Whenever Queen of Ice deals combat damage to a creature, tap that creature. It doesn't untap during its controller's next untap step. // Tap target creature. It doesn't untap during its controller's next untap step. (Then exile this card. You may cast the creature later from exile.) mana={2}{U} @@ -69290,7 +69282,7 @@ name=Realm-Cloaked Giant // Cast Off abilities=vigilance,adventure other={3}{W}{W} name(Adventure) auto=if paid(alternative) then name(Destroy all non-giants) name(Destroy all non-giants) destroy all(creature[-giant]|battlefield) -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Vigilance // Destroy all non-Giant creatures. (Then exile this card. You may cast the creature later from exile.) mana={5}{W}{W} type=Creature @@ -69362,7 +69354,7 @@ name=Reaper of Night // Harvest Fear abilities=adventure other={3}{B} name(Adventure) auto=if paid(alternative) then ability$!name(discard 2 cards) name(discard 2 cards) target(<2>*|myhand) reject!$ opponent -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=@combat(attacking) source(this) restriction{type(*|opponenthand)~lessthan~3}:name(Gains flying) all(this) transforms((,newability[flying])) ueot text=Whenever Reaper of Night attacks, if defending player has two or fewer cards in hand, it gains flying until end of turn. // Target opponent discards two cards. (Then exile this card. You may cast the creature later from exile.) mana={5}{B}{B} @@ -69530,8 +69522,7 @@ type=Sorcery [/card] [card] name=Reckless Impulse -auto=name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )! -auto=emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent +auto=name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(exile) and!( transforms((,newability[canplayfromexile uent])) uent )! text=Exile the top two cards of your library. Until the end of your next turn, you may play those cards. mana={1}{R} type=Sorcery @@ -70050,7 +70041,7 @@ type=Sorcery [card] name=Release to the Wind target=*[-land]|battlefield -auto=moveto(exile) and!( transforms((,canplayfromexile)) forever )! +auto=moveto(ownerexile) and!( transforms((,newability[canplayfromexile],newability[zerocast forever])) forever )! text=Exile target nonland permanent. For as long as that card remains exiled, its owner may cast it without paying its mana cost. mana={2}{U} type=Instant @@ -71462,7 +71453,7 @@ abilities=cantblock,adventure,asflash restriction=can play creature other={R} name(Adventure) auto=if paid(alternative) then name(Creature gets 2/0) target(creature|battlefield) 2/0 ueot -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Rimrock Knight can't block. // Target creature gets +2/+0 until end of turn. (Then exile this card. You may cast the creature later from exile.) mana={1}{R} type=Creature @@ -72140,8 +72131,8 @@ toughness=2 [card] name=Robber of the Rich abilities=reach,haste -auto=@combat(attacking) source(this) restriction{compare(ohandcount)~morethan~compare(phandcount)}:name(Exile top card) all(*[zpos=1]|opponentlibrary) moveto(exile) and!( counter(0/0,1,RobberExiled) )! -auto=emblem transforms((,newability[lord(rogue|myBattlefield) transforms((,newability[_ATTACKING_name(Can cast exiled cards) transforms((,newability[{0}:name(Cast exiled card) name(Cast exiled card) target(*[-land;counter{0/0.1.RobberExiled}]|opponentexile) moveto(myexile) and!( transforms((,newability[counter(0/0.1.RobberExiled)],newability[canplayfromexile],newability[anytypeofmana],newability[phaseaction[endofturn once checkex] moveTo(ownerexile)],newability[phaseaction[untap once checkex] counter(0/0.1.RobberExiled)])) ueot )!])) ueot]))])) forever dontremove +auto=@combat(attacking) source(this) restriction{compare(ohandcount)~morethan~compare(phandcount)}:name(Exile top card) all(*[zpos=1]|opponentlibrary) moveto(exile) and!( counter(0/0,1,RobberExiled) notrg )! +auto=emblem transforms((,newability[lord(rogue|myBattlefield) transforms((,newability[_ATTACKING_name(Can cast exiled cards) transforms((,newability[{0}:name(Cast exiled card) name(Cast exiled card) target(*[-land;counter{0/0.1.RobberExiled}]|opponentexile) moveto(myexile) and!( transforms((,newability[counter(0/0.1.RobberExiled) notrg],newability[canplayfromexile ueot],newability[anytypeofmana ueot],newability[phaseaction[endofturn once checkex] moveTo(ownerexile)],newability[phaseaction[untap once checkex] counter(0/0.1.RobberExiled) notrg])) ueot )!])) ueot]))])) forever dontremove 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 @@ -72213,8 +72204,8 @@ toughness=1 [/card] [card] name=Rocco, Street Chef -auto=@each my endofturn:name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) uent )! -auto=@each my endofturn:name(Exile top card) all(*[zpos=1]|opponentlibrary) moveto(opponentexile) and!( transforms((,newability[canplayfromexile])) uent )! +auto=@each my endofturn:name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile uent])) uent )! +auto=@each my endofturn:name(Exile top card) all(*[zpos=1]|opponentlibrary) moveto(opponentexile) and!( transforms((,newability[canplayfromexile uent])) uent )! auto=@movedto(land|battlefield) from(exile):name(Put 1/1 counter) target(creature|battlefield) counter(1/1) auto=@movedto(land|battlefield) from(exile):name(Create food) token(Food) auto=@movedto(*|stack) from(exile):name(Put 1/1 counter) target(creature|battlefield) counter(1/1) @@ -72341,13 +72332,13 @@ toughness=2 [card] name=Rogue Class auto=counter(0/0,1,Level) -auto=@combatdamagefoeof(player) from(creature|mybattlefield):name(Exile top card) all(*[zpos=1]|opponentlibrary) moveto(opponentexile) and!( counter(0/0.1.RogueExiled) )! -auto=@combatdamageof(player) from(creature|mybattlefield):name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( counter(0/0.1.RogueExiled) )! +auto=@combatdamagefoeof(player) from(creature|mybattlefield):name(Exile top card) all(*[zpos=1]|opponentlibrary) moveto(opponentexile) and!( counter(0/0.1.RogueExiled) notrg )! +auto=@combatdamageof(player) from(creature|mybattlefield):name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( counter(0/0.1.RogueExiled) notrg )! auto=this(variable{hascntlevel}=1) {1}{U}{B}:name(Level 2) counter(0/0,1,Level) asSorcery auto=this(variable{hascntlevel}=2) lord(creature|myBattlefield) menace auto=this(variable{hascntlevel}=2) {2}{U}{B}:name(Level 3) counter(0/0,1,Level) asSorcery -auto=this(variable{hascntlevel}>=3) lord(*[counter{0/0.1.RogueExiled}]|myexile) transforms((,newability[canplayfromexile],newability[anytypeofmana])) forever -auto=this(variable{hascntlevel}>=3) {0}:name(May play card from opponent exile) target(*[counter{0/0.1.RogueExiled}]|opponentexile) moveTo(myexile) and!( transforms((,newability[0/0.1.RogueExiled],newability[canplayfromexile],newability[anytypeofmana],newability[phaseaction[endofturn once checkex] moveTo(ownerexile)],newability[phaseaction[untap once checkex] counter(0/0.1.RogueExiled)])) forever )! +auto=this(variable{hascntlevel}>=3) lord(*[counter{0/0.1.RogueExiled}]|myexile) transforms((,newability[canplayfromexile],newability[anytypeofmana])) +auto=this(variable{hascntlevel}>=3) {0}:name(May play card from opponent exile) target(*[counter{0/0.1.RogueExiled}]|opponentexile) moveTo(myexile) and!( transforms((,newability[0/0.1.RogueExiled],newability[canplayfromexile ueot],newability[anytypeofmana ueot],newability[phaseaction[endofturn once checkex] moveTo(ownerexile)],newability[phaseaction[untap once checkex] counter(0/0.1.RogueExiled) notrg])) forever )! text=(Gain the next level as a sorcery to add its ability.) -- Whenever a creature you controls deals combat damage to a player, exile the top card of that player's library face down. You may look at it for as long as it remains exiled. -- {1}{U}{B}: Level 2 -- Creatures you control have menace. -- {2}{U}{B}: Level 3 -- You may play cards exiled with Rogue Class, and you may spend mana as through it were mana of any color to cast them. mana={U}{B} type=Enchantment @@ -72556,8 +72547,7 @@ toughness=4 [card] name=Rooting Moloch abilities=cycling -auto=name(Exile card with cycling) target(*[cycling]|myGraveyard) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )! -auto=emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent +auto=name(Exile card with cycling) target(*[cycling]|myGraveyard) moveto(exile) and!( transforms((,newability[canplayfromexile uent])) uent )! autohand=__CYCLING__({2}) text=When Rooting Moloch enters the battlefield, exile target card with a cycling ability from your graveyard. Until the end of your next turn, you may play that card. -- Cycling {2} ({2}, Discard this card: Draw a card.) mana={4}{R} @@ -72634,7 +72624,7 @@ name=Rosethorn Acolyte // Seasonal Ritual abilities=adventure other={G} name(Adventure) auto=if paid(alternative) then name(Add 1 mana of any color) name(Add 1 mana of any color) transforms((,newability[activatechooseacolor add{chosencolor} activatechooseend])) forever -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto={T}:add{U} auto={T}:add{B} auto={T}:add{R} @@ -74428,7 +74418,7 @@ restriction=can play creature otherrestriction=type(*[-creature]|stack)~morethan~0 other={2}{U} name(Adventure) auto=if paid(alternative) then name(Counter noncreature spell) name(Counter noncreature spell) target(*[-creature]|stack) fizzle -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=_ATTACKING_name(Scry 2) _SCRY2_ auto=@combat(blocking) source(this):name(Scry 2) _SCRY2_ text=Flying -- Whenever Sapphire Dragon attacks or blocks, scry 2. // Counter target noncreature spell. (Then exile this card. You may cast the creature later from exile.) @@ -75880,7 +75870,7 @@ abilities=adventure,asflash restriction=can play creature other={2}{U} name(Adventure) auto=if paid(alternative) then may name(Choose creatures) name(Choose creatures) target(*creature|battlefield) transforms((,newability[1/0],newability[unblockable])) ueot -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=ifnot paid(alternative) then name(Opponent's gain creatures -4/-0) name(Opponent's creatures gain -4/-0) all(creature|opponentBattlefield) transforms((,newability[-4/-0])) ueot text=When Sea Hag enters the battlefield, creatures your opponents control get -4/-0 until end of turn. // Up to two target creatures each get +1/+0 until end of turn and can't be blocked this turn. (Then exile this card. You may cast the creature later from exile.) mana={4}{U} @@ -77862,7 +77852,7 @@ abilities=adventure,asflash restriction=can play creature other={W} name(Adventure) auto=if paid(alternative) then name(Return permanent to hand) name(Return permanent to hand) target(*|myBattlefield) moveTo(ownerhand) -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Return target permanent you control to its owner's hand. (Then exile this card. You may cast the creature later from exile.) mana={1}{W} type=Creature @@ -78354,8 +78344,7 @@ type=Instant name=Showdown of the Skalds auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) -auto=name(Exile top 4 cards) all(*[zpos<=4]|mylibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )! -auto=emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent +auto=name(Exile top 4 cards) all(*[zpos<=4]|mylibrary) moveto(exile) and!( transforms((,newability[canplayfromexile uent])) uent )! auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) emblem transforms((,newability[@movedTo(*|mystack):name(Put 1/1 counter) counter(1/1) target(creature|mybattlefield)])) ueot auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) emblem transforms((,newability[@movedTo(*|mystack):name(Put 1/1 counter) counter(1/1) target(creature|mybattlefield)])) ueot auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) sacrifice(this) @@ -79141,7 +79130,7 @@ abilities=adventure,asflash restriction=can play creature other={2}{W} name(Adventure) auto=if paid(alternative) then name(Creature gets 2/2 and untap) name(Creature gets 2/2 and untap) target(creature|battlefield) transforms((,newability[2/2],newability[untap])) ueot -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Target creature gets +2/+2 until end of turn. Untap it. (Then exile this card. You may cast the creature later from exile.) mana={1}{W} type=Creature @@ -79450,8 +79439,8 @@ toughness=2 [card] name=Siphon Insight flashback={1}{U}{B} -aicode=activate target(*[zpos<=2]|opponentlibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[all(*[zpos<=1]|opponentlibrary) moveto(myreveal) and!( bottomoflibrary )!])) forever )! -auto=name(Look top 2 cards) reveal:2 revealzone(opponentlibrary) optionone name(Put in exile) target(*|reveal) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana])) forever )! optiononeend optiontwo name(put on bottom) all(*|reveal) bottomoflibrary optiontwoend revealend +aicode=activate target(*[zpos<=2]|opponentlibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile forever],newability[anytypeofmana forever],newability[all(*[zpos<=1]|opponentlibrary) moveto(myreveal) and!( bottomoflibrary )!])) forever )! +auto=name(Look top 2 cards) reveal:2 revealzone(opponentlibrary) optionone name(Put in exile) target(*|reveal) moveto(myexile) and!( transforms((,newability[canplayfromexile forever],newability[anytypeofmana forever])) forever )! optiononeend optiontwo name(put on bottom) all(*|reveal) bottomoflibrary optiontwoend revealend text=Look at the top two cards of target opponent's library. Exile one of them face down and put the other on the bottom of that library. You may look at and play the exiled 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. -- Flashback {1}{U}{B} mana={U}{B} type=Instant @@ -80819,7 +80808,7 @@ abilities=lifelink,adventure other={B} name(Adventure) auto=if paid(alternative) then name(You gain life) name(You gain life) life:type:knight:mybattlefield controller auto=if paid(alternative) then name(Opponent looses life) name(Opponent looses life) life:-type:knight:mybattlefield opponent -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Lifelink // You gain X life and each opponent loses X life, where X is the number of Knights you control. mana={1}{B} type=Creature @@ -82438,8 +82427,8 @@ toughness=2 [/card] [card] name=Spelljack -target=*[-nofizzle]|stack -auto=fizzleto(exile) && ability$!name(Can cast countered card) name(Can cast countered card) target(*[fresh]|exile) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[zerocast],newability[@each beginofturn:name(Can play from exile) transforms((,newability[canplayfromexile],newability[zerocast])) forever])) forever )! !$ controller +target=*|stack +auto=fizzleto(exile) && ability$!name(Can cast countered card) name(Can cast countered card) target(*[fresh]|exile) moveto(myexile) and!( transforms((,newability[canplayfromexile forever],newability[zerocast forever])) forever )! !$ controller 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 @@ -86479,7 +86468,7 @@ abilities=adventure,asflash restriction=can play creature other={1}{U} name(Adventure) auto=if paid(alternative) then may name(Return creature) name(Return creature) target(creature|battlefield) moveto(ownerhand) -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=ifnot paid(alternative) then if thisturn(*[-creature]|mystack)~morethan~0 then transforms((,newability[unblockable])) ueot auto=@movedTo(*[-creature]|mystack) turnlimited:name(Becomes unblockable) transforms((,newability[unblockable])) ueot text=Sword Coast Serpent can't be blocked as long as you've cast a noncreature spell this turn. // Return target creature to its owner's hand. (Then exile this card. You may cast the creature later from exile.) @@ -87889,12 +87878,8 @@ type=Instant [/card] [card] name=Tectonic Giant -aicode=activate target(*[zpos<=2]|mylibrary) moveto(myexile) and!( transforms((,newability[all(*[zpos<=2]|mylibrary) moveto(ownerexile)],newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )! -auto=@targeted(this) from(*|opponentcastingzone):name(Choose one) ability$!name(Choose one) choice name(Damage opponent) damage:3 opponent _ choice name(Exile 2 cards) all(mysource) counter(0/0.1.ExileEffect) !$ controller -auto=_ATTACKING_name(Choose one) ability$!name(Choose one) choice name(Damage opponent) damage:3 opponent _ choice name(Exile 2 cards) all(mysource) counter(0/0.1.ExileEffect) !$ controller -auto=@counteradded(0/0.1.ExileEffect) from(this):name(Exile top 2 cards) reveal:2 optionone name(Choose one card) target(*|reveal) moveto(myexile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )! optiononeend optiontwo name(Exile cards) all(*|reveal) moveto(ownerexile) optiontwoend revealend -auto=@counteradded(0/0.1.ExileEffect) from(this):name(Exile top 2 cards) emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent -auto=@counteradded(0/0.1.ExileEffect) from(this):name(Exile top 2 cards) removeallcounters(0/0.1.ExileEffect) +auto=@targeted(this) from(*|opponentcastingzone):name(Choose one) transforms((,newability[choice name(Exile top cards) all(*[zpos<=2]|mylibrary) moveto(myexile) and!( name(Choose exiled card) target(*[fresh]|myexile) transforms((,newability[canplayfromexile uent])) uent )!],newability[choice name(Damage opponent) damage:3 opponent])) forever +auto=_ATTACKING_name(Choose one) transforms((,newability[choice name(Exile top cards) all(*[zpos<=2]|mylibrary) moveto(myexile) and!( name(Choose exiled card) target(*[fresh]|myexile) transforms((,newability[canplayfromexile uent])) uent )!],newability[choice name(Damage opponent) damage:3 opponent])) forever text=Whenever Tectonic Giant attacks or becomes the target of a spell an opponent controls, Choose one -- Tectonic Giant deals 3 damage to each opponent. -- Exile the top two cards of your library. Choose one of them. Until the end of your next turn, you may play that card. mana={2}{R}{R} type=Creature @@ -91073,7 +91058,7 @@ restriction=can play creature otherrestriction=type(creature|mygraveyard)~morethan~0 other={1}{G} name(Adventure) auto=if paid(alternative) then name(Exile creature) name(Exile creature) target(creature|mygraveyard) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto={0}:name(Cast zero from exile) target(creature|myexile) transforms((,newability[zerocast])) ueot limit:1 text=Trample -- Once each turn, you may pay {0} rather than pay the mana cost for a creature spell you cast from exile. // Exile target creature card from your graveyard. Until the end of your next turn, you may cast that card. (Then exile this card. You may cast the creature later from exile.) mana={5}{G}{G} @@ -91417,7 +91402,7 @@ abilities=deathtouch,flying,adventure,asflash restriction=can play creature other={1}{B} name(Adventure) auto=if paid(alternative) then name(Creatures gain deathtouch) name(Creatures gain deathtouch) all(creature|myBattlefield) transforms((,newability[deathtouch])) ueot -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Flying, deathtouch // Creatures you control gain deathtouch until end of turn. (Then exile this card. You may cast the creature later from exile.) mana={4}{B}{B} type=Creature @@ -92782,7 +92767,7 @@ name=Tuinvale Treefolk // Oaken Boon abilities=adventure other={3}{G} name(Adventure) auto=if paid(alternative) then name(Put two 1/1 counters) name(Put two 1/1 counters) target(creature|battlefield) counter(1/1,2) -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Put two +1/+1 counters on target creature. (Then exile this card. You may cast the creature later from exile.) mana={5}{G} type=Creature @@ -93170,7 +93155,7 @@ restriction=can play equipment otherrestriction=type(creature|mybattlefield)~morethan~0 other={1}{R} name(Adventure) auto=if paid(alternative) then name(Creature gains double strike) name(Creature gains double strike) target(creature|myBattlefield) transforms((,newability[double strike])) ueot -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever auto=transforms((,newability[_ATTACKING_name(Double power) power/0 ueot])) auto={1}{R}:equip text=Whenever equipped creature attacks, double its power until end of turn. -- Equip {1}{R} // Target creature you control gains double strike until end of turn. (Then exile this card. You may cast the artifact later from exile.) @@ -97997,7 +97982,7 @@ toughness=3 [/card] [card] name=Warehouse Thief -auto={2}{T}{S(*[artifact;creature]|myBattlefield)}:name(Exile top card) emblem transforms((,newability[all(*[zpos=1]|myLibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )!],newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent +auto={2}{T}{S(*[artifact;creature]|myBattlefield)}:name(Exile top card) all(*[zpos=1]|myLibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile uent])) uent )! text={2}, {T}, Sacrifice an artifact or creature: Exile the top card of your library. Until the end of your next turn, you may play that card. mana={3}{R} type=Creature @@ -100310,8 +100295,7 @@ toughness=3 [/card] [card] name=Wrenn's Resolve -auto=name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )! -auto=emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent +auto=name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(exile) and!( transforms((,newability[canplayfromexile uent])) uent )! text=Exile the top two cards of your library. Until the end of your next turn, you may play those cards. mana={1}{R} type=Sorcery @@ -100798,10 +100782,8 @@ type=Instant [/card] [card] name=You Find Some Prisoners -aicode=activate target(*[zpos<=3]|opponentlibrary) moveto(myexile) and!( transforms((,newability[all(*[zpos<=3]|opponentlibrary) moveto(ownerexile)],newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then moveto(ownerexile)])) forever )! auto=if type(artifact|battlefield)~morethan~0 then choice name(Destroy artifact) name(Destroy artifact) target(artifact) destroy -auto=choice name(Exile top 3 cards) reveal:3 revealzone(opponentlibrary) optionone name(Choose one card) target(*|reveal) moveto(myexile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then moveto(ownerexile)])) forever )! optiononeend optiontwo name(Exile cards) all(*|reveal) moveto(ownerexile) optiontwoend revealend -auto=emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile],newability[lord(*[counter{0/0.1.PlayExile}]|myexile) anytypeofmana])) uent +auto=choice name(Exile top 3 cards) all(*[zpos<=3]|opponentlibrary) moveto(opponentexile) and!( name(Choose exiled card) target(*[fresh]|opponentexile) moveto(myexile) and!( transforms((,newability[anytypeofmana uent],newability[canplayfromexile uent],newability[@each my untap:name(Return at end) phaseaction[my endofturn once checkex] moveto(ownerexile)])) forever )! )! text=Choose one -- Break Their Chains - Destroy target artifact. -- Interrogate Them - Exile the top three cards of target opponent's library. Choose one of them. Until the end of your next turn, you may play that card, and you may spend mana as through it were mana of any color to cast it. mana={1}{R} type=Instant @@ -100904,7 +100886,7 @@ restriction=can play creature other={1}{U} name(Adventure) aicode=activate transforms((,newability[draw:1 controller])) oneshot auto=if paid(alternative) then may name(Scry and draw) name(Scry and draw) scry:1 scrycore delayed draw:1 controller scrycoreend scryend -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Flying // Scry 1, then draw a card. (Then exile this card. You may cast the creature later from exile.) mana={4}{U} type=Creature @@ -100928,7 +100910,7 @@ abilities=flying,cantblock,adventure,asflash restriction=can play creature other={1}{R} name(Adventure) auto=if paid(alternative) then name(Create Treasure) name(Create Treasure) token(Treasure Sur) -auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[transforms((,newability[canplayfromexile forever])) forever text=Flying -- Young Red Dragon can't block. // Create a Treasure token. (Then exile this card. You may cast the creature later from exile.) mana={3}{R} type=Creature diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index 4f8fb5925..3d86f5f11 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -21578,8 +21578,7 @@ type=Instant [/card] [card] name=Commune with Lava -auto=all(*[zpos<=castx]|mylibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )! -auto=emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent +auto=all(*[zpos<=castx]|mylibrary) moveto(exile) and!( transforms((,newability[canplayfromexile uent])) uent )! text=Exile the top X cards of your library. Until the end of your next turn, you may play those cards. mana={X}{R}{R} type=Instant @@ -118821,8 +118820,8 @@ toughness=1 [/card] [card] name=Temporal Aperture -aicode=activate choice all(*[zpos=1]) transforms((,canplayfromlibrarytop,zerocast)) forever -auto={5}{t}:shuffle && reveal:1 optionone name(choose card) target(<1>*|reveal) moveto(mylibrary) and!( transforms((,canplayfromlibrarytop,zerocast)) forever )! optiononeend revealend +aicode=activate choice all(*[zpos=1]) transforms((,newability[canplayfromlibrarytop forever],newability[zerocast forever])) forever +auto={5}{t}:shuffle && reveal:1 optionone name(choose card) target(<1>*|reveal) moveto(mylibrary) and!( transforms((,newability[canplayfromlibrarytop forever],newability[zerocast forever])) forever )! optiononeend revealend text={5}, {T}: Shuffle your library, then reveal the top card. Until end of turn, for as long as that card remains on top of your library, play with the top card of your library revealed and you may play that card without paying its mana cost. (If it has X in its mana cost, X is 0.) mana={2} type=Artifact diff --git a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt index 9f274e9a9..f1ce238db 100644 --- a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt +++ b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt @@ -1616,7 +1616,7 @@ auto={C(0/0.-17.Loyalty)}:limit:1 name(-17: Create fractal with 17 counter) toke auto={C(0/0.-18.Loyalty)}:limit:1 name(-18: Create fractal with 18 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.18) )! auto={C(0/0.-19.Loyalty)}:limit:1 name(-19: Create fractal with 19 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.19) )! auto={C(0/0.-20.Loyalty)}:limit:1 name(-20: Create fractal with 20 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.20) )! -auto={C(0/0.-8.Loyalty)}:limit:1 name(-8: Search instant or sorcery) target(*[instant;sorcery;share!color!]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[zerocast],newability[@each untap:canplayfromexile],newability[@each untap:zerocast])) forever )! +auto={C(0/0.-8.Loyalty)}:limit:1 name(-8: Search instant or sorcery) target(*[instant;sorcery;share!color!]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile forever],newability[zerocast forever])) forever )! auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.2.Loyalty)}:limit:1 name(+2: Scry 1) _SCRY1_])) auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-1.Loyalty)}:limit:1 name(-1: Create fractal with 1 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1) )!])) auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-2.Loyalty)}:limit:1 name(-2: Create fractal with 2 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.2) )!])) @@ -1638,7 +1638,7 @@ auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-17.L auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-18.Loyalty)}:limit:1 name(-18: Create fractal with 18 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.18) )!])) auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-19.Loyalty)}:limit:1 name(-19: Create fractal with 19 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.19) )!])) auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-20.Loyalty)}:limit:1 name(-20: Create fractal with 20 counter) token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.20) )!])) -auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-8.Loyalty)}:limit:1 name(-8: Search instant or sorcery) target(*[instant;sorcery;share!color!]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[zerocast],newability[@each untap:canplayfromexile],newability[@each untap:zerocast])) forever )!])) +auto=lord(other planeswalker|mybattlefield) transforms((,newability[{C(0/0.-8.Loyalty)}:limit:1 name(-8: Search instant or sorcery) target(*[instant;sorcery;share!color!]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile forever],newability[zerocast forever])) forever )!])) text=Each other planeswalker you control has the loyalty abilities of Kasmina, Enigma Sage. -- +2: Scry 1. -- −X: Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it. -- −8: Search your library for an instant or sorcery card that shares a color with this planeswalker, exile that card, then shuffle. You may cast that card without paying its mana cost. mana={1}{G}{U} type=Legendary Planeswalker @@ -3235,7 +3235,7 @@ name=Vivien, Champion of the Wilds auto=counter(0/0,4,loyalty) auto=lord(creature|myHand) asflash auto={C(0/0,1,Loyalty)}:name(+1: Creature gains vigilance and reach) target(creature) vigilance uynt && reach uynt -auto={C(0/0,-2,Loyalty)}:name(-2: Reveal three and may cast it) reveal:3 optionone name(Get a card) target(<1>creature|reveal) moveTo(exile) and!( transforms((,canplayfromexile)) forever )! optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend +auto={C(0/0,-2,Loyalty)}:name(-2: Reveal three and may cast it) reveal:3 optionone name(Get a card) target(<1>creature|reveal) moveTo(exile) and!( transforms((,newability[canplayfromexile forever])) forever )! optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend text=You may cast creature spells as though they had flash. -- +1: Until your next turn, up to one target creature gains vigilance and reach. -- -2: Look at the top three cards of your library. Exile one face down and put the rest on the bottom of your library in any order. For as long as it remains exiled, you may look at that card and you may cast it if it's a creature card. mana={2}{G} type=Legendary Planeswalker diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index ccda81b2c..232c0ed7c 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -4563,7 +4563,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG WParsedInt * value = NEW WParsedInt(valueStr, spell, card); Targetable * t = spell? spell->getNextTarget() : NULL; - if (card->hasType(Subtypes::TYPE_INSTANT) || card->hasType(Subtypes::TYPE_SORCERY) || forceUEOT) + if (((card->hasType(Subtypes::TYPE_INSTANT) || card->hasType(Subtypes::TYPE_SORCERY)) && !forceForever && !untilYourNextEndTurn && !untilYourNextTurn) || forceUEOT) { return NEW AInstantCastRestrictionUEOT(observer, id, card, t, castTargets, value, modifyExisting, kMaxCastZones[i], who); } @@ -4933,8 +4933,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG if (s.find("altercost(") != string::npos) return getManaReduxAbility(s.substr(s.find("altercost(") + 10), id, spell, card, target); - //transform....(hivestone,living enchantment) - //TODO: cleanup this block, it's a rats nest + //transforms (e.g. hivestone,living enchantment) found = s.find("transforms(("); if (found != string::npos) { @@ -5175,7 +5174,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG fromTc->setAllZones(); if (!activated) { - if (card->hasType(Subtypes::TYPE_INSTANT) || card->hasType(Subtypes::TYPE_SORCERY) || forceUEOT) + if (((card->hasType(Subtypes::TYPE_INSTANT) || card->hasType(Subtypes::TYPE_SORCERY)) && !forceForever && !untilYourNextEndTurn && !untilYourNextTurn) || forceUEOT) { MTGAbility * aPF = NEW AProtectionFrom(observer, id, card, target, fromTc, splitProtection[1]); return NEW GenericInstantAbility(observer, 1, card, (Damageable *) target, aPF); @@ -5196,7 +5195,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG fromTc->setAllZones(); if (!activated) { - if (card->hasType(Subtypes::TYPE_INSTANT) || card->hasType(Subtypes::TYPE_SORCERY) || forceUEOT) + if (((card->hasType(Subtypes::TYPE_INSTANT) || card->hasType(Subtypes::TYPE_SORCERY)) && !forceForever && !untilYourNextEndTurn && !untilYourNextTurn) || forceUEOT) { return NULL; //TODO } @@ -5216,7 +5215,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG //default target zone to opponentbattlefield here? if (!activated) { - if (card->hasType(Subtypes::TYPE_INSTANT) || card->hasType(Subtypes::TYPE_SORCERY) || forceUEOT) + if (((card->hasType(Subtypes::TYPE_INSTANT) || card->hasType(Subtypes::TYPE_SORCERY)) && !forceForever && !untilYourNextEndTurn && !untilYourNextTurn) || forceUEOT) { return NULL; //TODO } @@ -5253,7 +5252,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG nonstatic = true; if (!activated) { - if (card->hasType(Subtypes::TYPE_INSTANT) || card->hasType(Subtypes::TYPE_SORCERY) || forceUEOT) + if (((card->hasType(Subtypes::TYPE_INSTANT) || card->hasType(Subtypes::TYPE_SORCERY)) && !forceForever && !untilYourNextEndTurn && !untilYourNextTurn) || forceUEOT) { return NEW PTInstant(observer, id, card, target, wppt,s,nonstatic); } @@ -5447,7 +5446,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG if (!activated) { - if (card->hasType(Subtypes::TYPE_INSTANT) || card->hasType(Subtypes::TYPE_SORCERY) || forceUEOT) + if (((card->hasType(Subtypes::TYPE_INSTANT) || card->hasType(Subtypes::TYPE_SORCERY)) && !forceForever && !untilYourNextEndTurn && !untilYourNextTurn) || forceUEOT) { return NEW AInstantBasicAbilityModifierUntilEOT(observer, id, card, target, j, modifier); }