From eb8da4d4b282d99a04f5590dccce6d184ba9f8eb Mon Sep 17 00:00:00 2001 From: Vittorio Alfieri Date: Mon, 8 Feb 2021 17:08:20 +0100 Subject: [PATCH] Fixed issue #1054 (opened by @ranger7271), fixed/added primitives with "scry" ability, improved scry ability for both Human and AI player, added a new ability to replace the scry ability with some actions (e.g. Eligeth, Crossroads Augur). --- .../bin/Res/sets/primitives/borderline.txt | 261 +++++++++--------- projects/mtg/bin/Res/sets/primitives/mtg.txt | 190 ++++++------- .../bin/Res/sets/primitives/planeswalkers.txt | 26 +- .../bin/Res/sets/primitives/unsupported.txt | 16 -- projects/mtg/include/AllAbilities.h | 2 + projects/mtg/include/MTGCardInstance.h | 1 + projects/mtg/include/MTGDefinitions.h | 3 +- projects/mtg/src/AIPlayerBaka.cpp | 14 +- projects/mtg/src/AllAbilities.cpp | 81 ++++-- projects/mtg/src/MTGAbility.cpp | 7 +- projects/mtg/src/MTGCardInstance.cpp | 1 + projects/mtg/src/MTGDefinitions.cpp | 3 +- projects/mtg/src/WParsedInt.cpp | 4 + 13 files changed, 320 insertions(+), 289 deletions(-) diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index 4a0791b6a..bcb9e6875 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -2335,7 +2335,7 @@ subtype=Forest Plains [card] name=Arcum's Astrolabe other={i} -restriction=type(*|myHand)~morethan~9999 +restriction=never auto=draw:1 controller auto={1}{T}:Add{W} auto={1}{T}:Add{U} @@ -4376,8 +4376,8 @@ name=Behold the Multiverse abilities=foretell autohand={2}:name(Pay 2 and exile face-down) name(Pay 2 and exile face-down) doforetell myturnonly autoexile={1}{U} restriction{compare(canforetellcast)~morethan~0}:name(Cast with foretell) name(Cast with foretell) activate castcard(alternative) -aicode=activate draw:2 controller -auto=scry:2 scrycore choice name(Draw cards) draw:2 controller scrycoreend scryend +aicode=activate transforms((,newability[draw:2 controller])) oneshot +auto=scry:2 scrycore delayed draw:2 controller scrycoreend scryend text=Scry 2, then draw two cards. -- Foretell {1}{U} (During your turn, you may pay {2} and exile this card from your hand face down. Cast it on a later turn for its foretell cost.) mana={3}{U} type=Instant @@ -5977,10 +5977,10 @@ type=Sorcery [/card] [card] name=Bontu the Glorified -abilities=menace, indestructible, cantattack, cantblock -auto=@movedto(creature|mygraveyard) from(mybattlefield): -cantattack ueot -auto=@movedto(creature|mygraveyard) from(mybattlefield): -cantblock ueot -auto={1}{B}{S(other creature|mybattlefield)}:life:-1 opponent && life:1 controller +abilities=menace,indestructible,cantattack,cantblock +auto=@movedto(creature|mygraveyard) from(mybattlefield):-cantattack ueot +auto=@movedto(creature|mygraveyard) from(mybattlefield):-cantblock ueot +auto={1}{B}{S(other creature|mybattlefield)}:scry:1 scrycore delayed dontshow donothing scrycoreend scryend && life:-1 opponent && life:1 controller text=Menace, indestructible -- Bontu the Glorified can't attack or block unless a creature died under your control this turn. -- {1}{B}, Sacrifice another creature: Scry 1. Each opponent loses 1 life and you gain 1 life. mana={2}{B} type=Legendary Creature @@ -6374,6 +6374,7 @@ toughness=1 [card] name=Brazen Buccaneers abilities=haste +aicode=activate if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand) auto=explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 text=Haste -- When Brazen Buccaneers enters the battlefield, it explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard.) mana={3}{R} @@ -7801,7 +7802,7 @@ toughness=5 name=Cavalier of Gales abilities=flying auto=draw:3 controller && transforms((,newability[target(<2>*|myhand) moveto(mylibrary)])) oneshot -autograveyard=moveTo(ownerlibrary) && shuffle then scry:2 scrycore delayed dontshow donothing scrycoreend scryend +auto=@movedTo(this|graveyard) from(myBattlefield):all(trigger[to]) moveTo(mylibrary) and!( transforms((,newability[scry:2 scrycore delayed dontshow donothing scrycoreend scryend],newability[shuffle])) oneshot )! text=Flying -- When Cavalier of Gales enters the battlefield, draw three cards, then put two cards from your hand on top of your library in any order. -- When Cavalier of Gales dies, shuffle it into its owner's library, then scry 2. mana={2}{U}{U}{U} type=Creature @@ -9795,7 +9796,7 @@ name=Commanding Presence target=creature auto=first strike auto=2/2 -auto=@combatdamaged(player) from(mytgt):token(Human,Com) +auto=@combatdamaged(player) from(mytgt):token(Soldier,Creature Human Soldier,1/1,white) text=Enchant creature -- Enchanted creature gets +2/+2 and has first strike and Whenever this creature deals combat damage to a player, create a 1/1 white Human Soldier creature token. mana={3}{W} type=Enchantment @@ -10685,7 +10686,7 @@ name=Crashing Footfalls auto=token(Rhino,creature Rhino,4/4,green,trample)*2 text=Suspend {4} G} (Rather than cast this card from your hand, pay {G} and exile it with four time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.) -- Create two 4/4 green Rhino creature tokens with trample. color=green -restriction=turn:200 +restriction=never mana={0} suspend(4)={G} type=Sorcery @@ -10983,8 +10984,8 @@ type=Land [card] name=Cryptic Annelid auto=scry:1 scrycore delayed dontshow donothing scrycoreend scryend -auto=scry:2 scrycore delayed dontshow donothing scrycoreend scryend auto=scry:3 scrycore delayed dontshow donothing scrycoreend scryend +auto=scry:2 scrycore delayed dontshow donothing scrycoreend scryend text=When Cryptic Annelid enters the battlefield, scry 1, then scry 2, then scry 3. (To scry X, look at the top X cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) mana={3}{U} type=Creature @@ -10995,7 +10996,7 @@ toughness=4 [card] name=Cryptic Caves auto={T}:add {1} -auto=aslongas(land|myBattlefield){1}{T}{S}:draw:1 >4 +auto=aslongas(land|myBattlefield) {1}{T}{S}:draw:1 >4 text={T}: Add {1}. -- {1}, {T}, Sacrifice Cryptic Caves: Draw a card. Activate this ability only if you control five or more lands. type=Land [/card] @@ -11929,6 +11930,7 @@ toughness=2 [/card] [card] name=Deadeye Tracker +aicode=activate if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand) auto={1}{B}{T}{E(*|opponentgraveyard)} restriction{type(*|opponentgraveyard)~morethan~1}:moveto(exile) target(*|opponentgraveyard) && explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 text={1}{B}, {T}: Exile two target cards from an opponent's graveyard. Deadeye Tracker explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard.) mana={B} @@ -12304,8 +12306,8 @@ type=Instant [/card] [card] name=Deliberate -auto=scry:2 scrycore delayed dontshow donothing scrycoreend scryend -auto=draw:1 controller +auto=scry:2 scrycore delayed draw:1 controller scrycoreend scryend +aicode=activate transforms((,newability[draw:1 controller])) oneshot text=Scry 2, then draw a card. mana={1}{U} type=Instant @@ -13138,6 +13140,7 @@ toughness=1 [card] name=Dire Fleet Interloper abilities=menace +aicode=activate if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand) auto=explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 text=Menace -- When Dire Fleet Interloper enters the battlefield, it explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard.) mana={3}{B} @@ -14686,8 +14689,8 @@ toughness=2 [/card] [card] name=Eager Construct -auto=may scry:1 scrycore delayed dontshow donothing scrycoreend scryend -auto=may scry:1 scrycore delayed dontshow donothing scrycoreend scryend opponent +auto=may name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto=ability$!name(Scry 1) may name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend!$ opponent text=When Eager Construct enters the battlefield, each player may scry 1. mana={2} type=Artifact Creature @@ -15040,6 +15043,17 @@ power=0 toughness=2 [/card] [card] +name=Eligeth, Crossroads Augur +abilities=flying,partner,replacescry +auto=@scryed(*|mybattlefield,mystack):name(Draw cards instead of scry) draw:scryedcards controller +text=Flying -- If you would scry a number of cards, draw that many cards instead. -- Partner (You can have two commanders if both have partner.) +mana={4}{U}{U} +type=Legendary Creature +subtype=Sphinx +power=5 +toughness=6 +[/card] +[card] name=Eliminate auto=choice name(Destroy creature) target(creature[manacost<=3]) destroy auto=choice name(Destroy planeswalker) target(planeswalker[manacost<=3]) destroy @@ -15457,6 +15471,7 @@ toughness=4 [card] name=Emissary of Sunrise abilities=first strike +aicode=activate if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand) auto=explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 text=First strike -- When Emissary of Sunrise enters the battlefield, it explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard.) mana={2}{W} @@ -15477,6 +15492,7 @@ toughness=2 [/card] [card] name=Emperor's Vanguard +aicode=activate if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand) auto=@combatdamaged(player) from(this):explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 text=Whenever Emperor's Vanguard deals combat damage to a player, it explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard.) mana={3}{G} @@ -15765,6 +15781,7 @@ type=Sorcery [card] name=Enter the Unknown target=creature|mybattlefield +aicode=activate if type(land[zpos=1]|mylibrary)~lessthan~1 then counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand) auto=maxPlay(land)+1 auto=choice name(Target creature you control explores) name(Target creature you control explores) explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 text=Target creature you control explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on the creature, then put the card back or put it into your graveyard.) -- You may play an additional land this turn. @@ -16617,8 +16634,8 @@ toughness=2 [/card] [card] name=Eyes Everywhere -auto={5}{U}:moveto(mybattlefield) target(*[-land]|opponentbattlefield) && moveto(opponentbattlefield) all(this) -auto=@each my upkeep:scrycore delayed dontshow donothing scrycoreend scryend +auto={5}{U}:moveto(mybattlefield) target(*[-land]|opponentbattlefield) and!( moveto(opponentbattlefield) all(this) )! asSorcery +auto=@each my upkeep:scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=At the beginning of your upkeep, scry 1. -- {5}{U}: Exchange control of Eyes Everywhere and target nonland permanent. Activate this ability only any time you could cast a sorcery. mana={2}{U} type=Enchantment @@ -19471,7 +19488,7 @@ toughness=2 [card] name=Gargos, Vicious Watcher abilities=vigilance -auto=lord(*[hydra]|mycastingzone) altercost(colorless, -4) +auto=lord(hydra|mycastingzone) altercost(colorless, -4) auto=@targeted(creature|mybattlefield):transforms((,newability[target(creature|opponentbattlefield) dynamicability])) text=Vigilance -- Hydra spells you cast cost {4} less to cast. -- Whenever a creature you control becomes the target of a spell, Gargos, Vicious Watcher fights up to one target creature you don't control. mana={3}{G}{G}{G} @@ -22626,7 +22643,7 @@ toughness=0 [card] name=Haakon, Stromgald Scourge autograveyard={1}{B}{B}:activate castcard(normal) -restriction=type(land|mygraveyard)~morethan~9999 +restriction=never auto=lord(knight|mygraveyard) canPlayFromGraveyard auto=@movedTo(this|graveyard) from(battlefield):life:-2 controller text=You may cast Haakon, Stromgald Scourge from your graveyard, but not from anywhere else. -- As long as Haakon is on the battlefield, you may play Knight cards from your graveyard. -- When Haakon dies, you lose 2 life. @@ -23861,7 +23878,7 @@ toughness=2 [/card] [card] name=Hero of the Nyxborn -auto=token(Human,Her) +auto=token(Soldier,Creature Human Soldier,1/1,white) auto=@targeted(this) from(*[instant;sorcery;enchantment]|mycastingzone):1/0 all(creature|mybattlefield) ueot oneshot text=When Hero of the Nyxborn enters the battlefield, create a 1/1 white Human Soldier creature token. -- Whenever you cast a spell that targets Hero of the Nyxborn, creatures you control get +1/+0 until end of turn. mana={1}{R}{W} @@ -24672,62 +24689,6 @@ toughness=1 color=white [/card] [card] -name=Human,Com -type=Creature -subtype=Human Soldier -power=1 -toughness=1 -color=white -[/card] -[card] -name=Human,Els -type=Creature -subtype=Human Soldier -power=1 -toughness=1 -color=white -[/card] -[card] -name=Human,Her -type=Creature -subtype=Human Soldier -power=1 -toughness=1 -color=white -[/card] -[card] -name=Human,Ome -type=Creature -subtype=Human Soldier -power=1 -toughness=1 -color=white -[/card] -[card] -name=Human,Rev -type=Creature -subtype=Human Soldier -power=1 -toughness=1 -color=white -[/card] -[card] -name=Human,Sio -type=Creature -subtype=Human Soldier -power=1 -toughness=1 -color=white -[/card] -[card] -name=Human,The -type=Creature -subtype=Human Soldier -power=1 -toughness=1 -color=white -[/card] -[card] name=Humble Naturalist auto=this(variable{type:creature:myrestrictedcastingzone}>0) {T}:add{G} auto=this(variable{type:creature:myrestrictedcastingzone}>0) {T}:add{W} @@ -24963,7 +24924,7 @@ toughness=4 [card] name=Hypergenesis color=green -restriction=turn:200 +restriction=never mana={0} suspend(3)={1}{g}{g} auto=ability$! moveto(ownerbattlefield) notatarget(artifact,creature,enchantment,land|myhand) !$ controller @@ -25057,7 +25018,7 @@ toughness=8 [card] name=Icehide Golem other={i} -restriction=type(*|myHand)~morethan~9999 +restriction=never text=({S}i} can be paid with one mana from a snow permanent.) mana={1} type=Snow Artifact Creature @@ -26228,9 +26189,9 @@ toughness=3 [card] name=Inscription of Abundance kicker={2}{G} -auto=if paid(kicker) then ability$!name(Put two +1/+1 counters) name(Put two +1/+1 counters) counter(1/1,2) target(creature)!$ controller -auto=if paid(kicker) then ability$!name(Gain life equal to power) name(Gain life equal to power) target(player) life:power:highest:*:targetedpersonsbattlefield!$ controller -auto=if paid(kicker) then name(Target creature fights) name(Target creature fights) target(creature|myBattlefield) transforms((,newability[target(creature|opponentBattlefield) dynamicability])) ueot +auto=if paid(kicker) then ability$!name(Target creature fights) may name(Target creature fights) target(creature|myBattlefield) transforms((,newability[target(creature|opponentBattlefield) dynamicability])) ueot!$ controller +auto=if paid(kicker) then ability$!name(Gain life equal to power) may name(Gain life equal to power) target(player) life:power:highest:*:targetedpersonsbattlefield!$ controller +auto=if paid(kicker) then ability$!name(Put two +1/+1 counters) may name(Put two +1/+1 counters) counter(1/1,2) target(creature)!$ controller auto=ifnot paid(kicker) then choice name(Put two +1/+1 counters) name(Put two +1/+1 counters) counter(1/1,2) target(creature) auto=ifnot paid(kicker) then choice name(Gain life equal to power) name(Gain life equal to power) target(player) life:power:highest:*:targetedpersonsbattlefield auto=ifnot paid(kicker) then choice name(Target creature fights) name(Target creature fights) target(creature|myBattlefield) transforms((,newability[target(creature|opponentBattlefield) dynamicability])) ueot @@ -26241,12 +26202,15 @@ type=Instant [card] name=Inscription of Insight kicker={2}{U}{U} -auto=if paid(kicker) then ability$!name(Reveal) reveal:2 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<2>*|reveal) bottomoflibrary optiontwoend afterrevealed name(Return 2 creatures to owner hand) moveTo(ownerHand) target(creature) afterrevealedend revealend !$ controller -auto=if paid(kicker) then ability$!name(Choose one) choice name(You create an X/X Illusion) name(You create an X/X Illusion) token(Illusion,Creature Illusion,phandcount/phandcount,blue) && draw:2 controller _ choice name(Opponent creates an X/X Illusion) name(Opponent creates an X/X Illusion) token(Illusion,Creature Illusion,ohandcount/ohandcount,blue) opponent && draw:2 controller!$ controller -auto=ifnot paid(kicker) then choice name(Return 2 creatures to owner hand) name(Return 2 creatures to owner hand) moveTo(ownerHand) target(creature) -auto=ifnot paid(kicker) then choice name(Scry 2 and draw 2 cards) name(Scry 2 and draw 2 cards) reveal:2 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<2>*|reveal) bottomoflibrary optiontwoend afterrevealed transforms((,newability[draw:2 controller])) oneshot afterrevealedend revealend -auto=ifnot paid(kicker) then choice name(You create an X/X Illusion) name(You create an X/X Illusion) token(Illusion,Creature Illusion,phandcount/phandcount,blue) -auto=ifnot paid(kicker) then choice name(Opponent creates an X/X Illusion) name(Opponent creates an X/X Illusion) token(Illusion,Creature Illusion,ohandcount/ohandcount,blue) opponent +aicode=activate transforms((,newability[draw:2 controller])) oneshot +auto=if paid(kicker) then ability$!name(Scry 2 and draw) may name(Scry 2 and draw) scry:2 scrycore delayed draw:2 controller scrycoreend scryend!$ controller +auto=if paid(kicker) then ability$!name(Choose one) choice name(Return 1 creature) target(creature|battlefield) moveto(ownerhand) _ choice name(Return 2 creatures) target(creature|battlefield) moveto(ownerhand) _ choice name(Don't return any creature) donothing!$ controller +auto=if paid(kicker) then ability$!name(Choose one) choice name(You create an X/X illusion) token(Illusion,Creature Illusion,phandcount/phandcount,blue) _ choice name(Opponent creates an X/X illusion) token(Illusion,Creature Illusion,ohandcount/ohandcount,blue) opponent _ choice name(Don't creates illusion) donothing!$ controller +auto=ifnot paid(kicker) then choice name(Return 1 creature to owner hand) name(Return 1 creature to owner hand) moveTo(ownerHand) target(creature|battlefield) +auto=ifnot paid(kicker) then choice name(Return 2 creatures to owner hand) name(Return 2 creatures to owner hand) moveTo(ownerHand) target(<2>creature|battlefield) +auto=ifnot paid(kicker) then choice name(Scry 2 and draw) name(Scry 2 and draw) scry:2 scrycore delayed draw:2 controller scrycoreend scryend +auto=ifnot paid(kicker) then choice name(You create an X/X illusion) name(You create an X/X illusion) token(Illusion,Creature Illusion,phandcount/phandcount,blue) +auto=ifnot paid(kicker) then choice name(Opponent creates an X/X illusion) name(Opponent creates an X/X illusion) token(Illusion,Creature Illusion,ohandcount/ohandcount,blue) opponent text=Kicker {2}{U}{U} -- Choose one. If this spell was kicked, choose any number instead. -- Return up to two target creatures to their owners' hands. -- Scry 2, then draw two cards. -- Target player creates an X/X blue Illusion creature token, where X is the number of cards in their hand. mana={3}{U} type=Sorcery @@ -26254,9 +26218,9 @@ type=Sorcery [card] name=Inscription of Ruin kicker={2}{B}{B} -auto=if paid(kicker) then ability$!name(Opponent discards 2 cards) name(Opponent discards 2 cards) notatarget(<2>*|myhand) reject!$ opponent -auto=if paid(kicker) then ability$!name(Return a creature with mana cost 2 or less) name(Return a creature with mana cost 2 or less) moveTo(mybattlefield) target(creature[manacost<=2]|myGraveyard)!$ controller -auto=if paid(kicker) then ability$!name(Destroy target creature with mana cost 3 or less) name(Destroy target creature with mana cost 3 or less) destroy target(creature[manacost<=3])!$ controller +auto=if paid(kicker) then ability$!name(Opponent discards 2 cards) may name(Opponent discards 2 cards) notatarget(<2>*|myhand) reject!$ opponent +auto=if paid(kicker) then ability$!name(Return a creature with mana cost 2 or less) may name(Return a creature with mana cost 2 or less) moveTo(mybattlefield) target(creature[manacost<=2]|myGraveyard)!$ controller +auto=if paid(kicker) then ability$!name(Destroy target creature with mana cost 3 or less) may name(Destroy target creature with mana cost 3 or less) destroy target(creature[manacost<=3])!$ controller auto=ifnot paid(kicker) then choice name(Opponent discards 2 cards) name(Opponent discards 2 cards) ability$!name(Opponent discards 2 cards) notatarget(<2>*|myhand) reject!$ opponent auto=ifnot paid(kicker) then choice name(Return a creature with mana cost 2 or less) name(Return a creature with mana cost 2 or less) moveTo(mybattlefield) target(creature[manacost<=2]|myGraveyard) auto=ifnot paid(kicker) then choice name(Destroy target creature with mana cost 3 or less) name(Destroy target creature with mana cost 3 or less) destroy target(creature[manacost<=3]) @@ -26311,7 +26275,7 @@ type=Instant [/card] [card] name=Inspire Awe -auto=preventAllcombatDamage(-creature[aura>=1],-Enchantment Creature) ueot +auto=preventallcombatdamage from(creature[-enchantment;-enchanted]|battlefield) ueot auto=scry:2 scrycore delayed dontshow donothing scrycoreend scryend text=Prevent all combat damage that would be dealt this turn except by enchanted creatures and enchantment creatures. Scry 2. mana={3}{G} @@ -26786,7 +26750,8 @@ type=Instant [card] name=Isolated Watchtower auto={T}:add{C} -auto={2}{T}:scry:1 scrycore delayed target(land[zpos<=1]|mylibrary) moveto(mybattlefield) and!(tap(noevent))! scrycoreend scryend restriction{type(land|opponentbattlefield)~morethan~1} +aicode=activate target(land[zpos<=1]|mylibrary) moveto(mybattlefield) and!( tap(noevent) )! +auto={2}{T} restriction{compare(type:land:opponentbattlefield)~morethan~compare(type:land:mybattlefieldplus1plusend)}:name(Scry 1) scry:1 scrycore delayed target(land[zpos<=1]|mylibrary) moveto(mybattlefield) and!( tap(noevent) )! scrycoreend scryend text={T}: Add {C}. -- {2}, {T}: Scry 1, then you may reveal the top card of your library. If a basic land card is revealed this way, put it onto the battlefield tapped. Activate this ability only if an opponent controls at least two more lands than you. type=Land [/card] @@ -26816,6 +26781,7 @@ type=Enchantment [/card] [card] name=Ixalli's Diviner +aicode=activate if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand) auto=explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 text=When Ixalli's Diviner enters the battlefield, it explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard.) mana={1}{G} @@ -27051,6 +27017,7 @@ type=Instant [/card] [card] name=Jadelight Ranger +aicode=activate if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand) auto=explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 auto=explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 text=When Jadelight Ranger enters the battlefield, it explores, then it explores again. (Reveal the top card of your library. Put that card into your hand if its a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard. Then repeat this process.) @@ -32480,8 +32447,9 @@ type=Land [/card] [card] name=Mazemind Tome -auto={T}{C(0/0,1,Page):scry:1 scrycore delayed dontshow donothing scrycoreend scryend && aslongas(Mazemind Tome[counter{0/0.4.Page}]|myBattlefield) life:4 controller && aslongas(Mazemind Tome[counter{0/0.4.Page}]|myBattlefield) moveTo(myExile) all(this) -auto={2}{T}{C(0/0,1,Page)}:draw:1 controller && aslongas(Mazemind Tome[counter{0/0.4.Page}]|myBattlefield) life:4 controller && aslongas(Mazemind Tome[counter{0/0.4.Page}]|myBattlefield) moveTo(myExile) all(this) +auto={T}{C(0/0,1,Page)}:name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto={2}{T}{C(0/0,1,Page)}:name(Draw 1) draw:1 controller +auto=@counteradded(0/0,1,Page) from(this):this(counter{0/0.1.Page}>=4) moveTo(myExile) all(this) && life:4 controller text={T}, Put a page counter on Mazemind Tome: Scry 1. -- {2], {T}, Put a page counter on Mazemind Tome: Draw a card. -- When there are four or more page counters on Mazemind Tome, exile it. If you do, you gain 4 life. mana={2} type=Artifact @@ -32500,6 +32468,7 @@ toughness=1 name=Medomai's Prophecy auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) +aicode=activate donothing auto=scry:2 scrycore delayed dontshow donothing scrycoreend scryend auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) chooseaname donothing chooseend auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) transforms((,newability[@movedto(*[lastnamechosen]|mystack) once:draw:1 controller])) ueot @@ -32694,6 +32663,7 @@ toughness=2 [/card] [card] name=Merfolk Branchwalker +aicode=activate if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand) auto=explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 text=When Merfolk Branchwalker enters the battlefield, it explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard.) mana={1}{G} @@ -33249,7 +33219,7 @@ type=Instant [card] name=Mischievous Chimera abilities=flying -auto=@movedto(*|mystack) restriction{opponentturnonly,thisturn(*|mystack)~equalto~0}:damage:1 target(opponent) && scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto=@movedto(*|mystack) restriction{opponentturnonly,thisturn(*|mystack)~equalto~0}:damage:1 opponent && scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Flying -- Whenever you cast your first spell during each opponent's turn, Mischievous Chimera deals 1 damage to each opponent. Scry 1. mana={U}{R} type=Enchantment Creature @@ -33807,7 +33777,7 @@ type=Artifact [card] name=Mox Tantalite suspend(3)={0} -restriction=turn:200 +restriction=never mana={0} auto={T}:Add{W} auto={T}:Add{U} @@ -35415,7 +35385,7 @@ type=Land [/card] [card] name=No Escape -target=creature,planeswalker|stack +target=*[creature;planeswalker]|stack auto=fizzleto(exile) auto=scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Counter target creature or planeswalker spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard. -- Scry 1. @@ -36203,7 +36173,8 @@ type=Enchantment [card] name=Omen of the Sea abilities=flash -auto=scry:2 scrycore delayed dontshow donothing scrycoreend scryend && draw: 1 controller +aicode=activate transforms((,newability[draw:1 controller])) oneshot +auto=scry:2 scrycore delayed draw:1 controller scrycoreend scryend auto={2}{U}{S}:scry:2 scrycore delayed dontshow donothing scrycoreend scryend text=Flash -- When Omen of the Sea enters the battlefield, scry 2, then draw a card. -- {2}{U}, Sacrifice Omen of the Sea: Scry 2. mana={1}{U} @@ -36212,7 +36183,8 @@ type=Enchantment [card] name=Omen of the Sun abilities=flash -auto=token(Human,Ome)*2 && life:2 controller +auto=token(Soldier,Creature Human Soldier,1/1,white)*2 +auto=life:2 controller auto={2}{W}{S}:scry:2 scrycore delayed dontshow donothing scrycoreend scryend text=Flash -- When Omen of the Sun enters the battlefield, create two 1/1 white Human Soldier creature tokens and you gain 2 life. -- {2}{W}, Sacrifice Omen of the Sun: Scry 2. mana={2}{W} @@ -37566,7 +37538,8 @@ type=Land [/card] [card] name=Path of Discovery -auto=@movedTo(creature|myBattlefield):explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 +aicode=activate if type(land[zpos=1]|mylibrary)~lessthan~1 then counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand) +auto=@movedTo(creature|myBattlefield):all(trigger[to]) explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 text=Whenever a creature enters the battlefield under your control, it explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on the creature, then put the card back or put it into your graveyard.) mana={3}{G} type=Enchantment @@ -37783,10 +37756,18 @@ type=Enchantment subtype=Aura [/card] [card] +name=Peregrination +auto=if type(land|myLibrary)~morethan~1 then choice name(Search two lands) name(Search two lands) target(land[basic]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[tap(noevent)],newability[name(Search another land) target(land[basic]|mylibrary) moveto(myhand) and!( transforms((,newability[name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend])) oneshot )!])) oneshot )! +auto=if type(land|myLibrary)~morethan~0 then choice name(Search one land) name(Search one land) target(land[basic]|mylibrary) moveto(mybattlefield) and!( tap(noevent) && scry:1 scrycore delayed dontshow donothing scrycoreend scryend )! +auto=choice name(Don't search any land) scry:1 scrycore delayed dontshow donothing scrycoreend scryend +text=Search your library for up to two basic land cards, reveal those cards, and put one onto the battlefield tapped and the other into your hand. Shuffle your library, then scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) +mana={3}{G} +type=Sorcery +[/card] +[card] name=Perilous Voyage -target=*[-land]|opponentBattlefield -auto=moveto(ownerhand) -auto=if targeted(*[manacost<=2]) then _SCRY_(2) +auto=if type(*[-land;manacost<=2]|opponentBattlefield)~morethan~0 then choice name(Return permanent with manacost 2 or less) name(Return permanent with manacost 2 or less) target(*[-land;manacost<=2]|opponentBattlefield) moveto(ownerhand) && scry:2 scrycore delayed dontshow donothing scrycoreend scryend +auto=choice name(Return permanent with manacost 3 or more) target(*[-land;manacost>=3]|opponentBattlefield) moveto(ownerhand) text=Return target nonland permanent you don't control to its owner's hand. If its converted mana cost was 2 or less, scry 2. mana={1}{U} type=Instant @@ -38782,8 +38763,8 @@ type=Enchantment [/card] [card] name=Precognitive Perception -auto=if compare(restriction{assorcery}~morethan~0) then scry:3 scrycore delayed dontshow donothing scrycoreend scryend else -auto=draw:3 +aicode=activate transforms((,newability[draw:3 controller])) oneshot +auto=if compare(restriction{assorcery}~morethan~0) then scry:3 scrycore delayed draw:3 controller scrycoreend scryend else draw:3 controller text=Draw three cards. -- Addendum If you cast this spell during your main phase, instead scry 3, then draw three cards. mana={3}{U}{U} type=Instant @@ -39036,6 +39017,7 @@ toughness=1 [card] name=Prison Realm auto=(blink)forsrc target(*[creature;planeswalker]|opponentbattlefield) +auto=scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=When Prison Realm enters the battlefield, exile target creature or planeswalker an opponent controls until Prison Realm leaves the battlefield. -- When Prison Realm enters the battlefield, scry 1. mana={2}{W} type=Enchantment @@ -39327,7 +39309,7 @@ type=Instant [/card] [card] name=Psychic Corrosion -auto=@draw:deplete:2 opponent +auto=@drawof(player):deplete:2 opponent text=Whenever you draw a card, each opponent puts the top two cards of their library into their graveyard. mana={2}{U} type=Enchantment @@ -39766,6 +39748,7 @@ toughness=3 [card] name=Queen's Agent abilities=lifelink +aicode=activate if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand) auto=explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 text=Lifelink -- When Queen's Agent enters the battlefield, it explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard.) mana={5}{B} @@ -40824,8 +40807,9 @@ toughness=5 [/card] [card] name=Reason // Believe -auto=deplete:3 controller && transforms((,newability[may moveto(mylibrary) target(*|mygraveyard)])) ueot -autograveyard={4}{G}{E}:flipacoin winability moverandom(creature) from(mylibrary) to(mybattlefield) winabilityend loseability moverandom(*[-creature]) from(mylibrary) to(myhand) loseabilityend flipend assorcery +auto=scry:3 scrycore delayed dontshow donothing scrycoreend scryend +autograveyard={4}{G}{E} restriction{type(creature[zpos=1]|mylibrary)~morethan~0}:name(Look top card) all(creature[zpos=1]|mylibrary) moveTo(myhand) and!( transforms((,newability[may name(Put on battlefield) moveto(myBattlefield)])) oneshot )! +autograveyard={4}{G}{E} restriction{type(creature[zpos=1]|mylibrary)~equalto~0}:name(Look top card) all(*[zpos=1]|mylibrary) moveTo(myhand) text=Scry 3. -- Aftermath (Cast this spell only from your graveyard. Then exile it.) Look at the top card of your library. You may put it onto the battlefield if it's a creature card. If you don't, put it into your hand. mana={U} type=Sorcery @@ -41680,7 +41664,7 @@ type=Enchantment [/card] [card] name=Reverent Hoplite -auto=token(Human,Rev)*type:manaW +auto=token(Soldier,Creature Human Soldier,1/1,white)*type:manaW text=When Reverent Hoplite enters the battlefield, create a number of 1/1 white Human Soldier creature tokens equal to your devotion to white. (Each {W} in the mana costs of permanents you control counts toward your devotion to white.) mana={4}{W} type=Creature @@ -44673,8 +44657,8 @@ toughness=3 [/card] [card] name=Scour All Possibilities -aicode=activate draw:1 -auto=name(Scry) reveal:2 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<2>*|reveal) bottomoflibrary optiontwoend afterrevealed transforms((,newability[draw:1 controller])) oneshot afterrevealedend revealend +aicode=activate transforms((,newability[draw:1 controller])) oneshot +auto=scry:2 scrycore delayed draw:1 controller scrycoreend scryend flashback={4}{U} text=Scry 2, then draw a card. -- Flashback {4}{U} (You may cast this card from your graveyard for its flashback cost. Then exile it.) mana={1}{U} @@ -44986,8 +44970,8 @@ type=Land [card] name=Season of Growth auto=@movedto(creature|mybattlefield):scry:1 scrycore delayed dontshow donothing scrycoreend scryend -auto=@targeted(creature|myBattlefield) from(instant,sorcery|mystack):draw:1 -auto=@targeted(creature|mybattlefield) from(*[instant;sorcery]|nonbattlezone,stack):draw:1 +auto=@targeted(creature|myBattlefield) from(instant,sorcery|mystack):draw:1 controller +auto=@targeted(creature|mybattlefield) from(*[instant;sorcery]|nonbattlezone,stack):draw:1 controller text=Whenever a creature enters the battlefield under your control, scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) -- Whenever you cast a spell that targets a creature you control, draw a card. mana={1}{G} type=Enchantment @@ -45098,6 +45082,7 @@ toughness=3 [/card] [card] name=Seekers' Squire +aicode=activate if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand) auto=explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 text=When Seekers' Squire enters the battlefield, it explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard.) mana={1}{B} @@ -45847,7 +45832,8 @@ type=Enchantment [/card] [card] name=Shard -auto={2}{S}:scry:1 scrycore dontshow delayed draw:1 scrycoreend scryend +aicode=activate transforms((,newability[draw:1 controller])) oneshot +auto={2}{S}:scry:1 scrycore delayed draw:1 controller scrycoreend scryend text={2}, Sacrifice this enchantment: Scry 1, then draw a card. type=Enchantment [/card] @@ -46630,6 +46616,7 @@ toughness=2 [card] name=Sifter Wurm abilities=trample +aicode=activate transforms((,newability[all(*[zpos=1]|mylibrary) transforms((,newability[life:manacost controller])) oneshot])) oneshot auto=scry:3 scrycore delayed life:revealedmana scrycoreend scryend text=Trample -- When Sifter Wurm enters the battlefield, scry 3, then reveal the top card of your library. You gain life equal to that card's converted mana cost. mana={5}{G}{G} @@ -47042,9 +47029,9 @@ toughness=2 [card] name=Siona, Captain of the Pyleas abilities=hiddenface -aicode=activate target(*[zpos<=7]|mylibrary) moveto(ownerhand) -auto=reveal:7 optionone name(Look at the top four cards) target(enchantment[aura]|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<7>*|reveal) bottomoflibrary optiontwoend revealend -auto=@targeted(creature|myBattlefield) from(aura):token(Human,Sio) +aicode=activate target(aura[zpos<=7]|mylibrary) moveto(ownerhand) +auto=reveal:7 optionone name(Look at the top seven cards) target(aura|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<7>*|reveal) bottomoflibrary optiontwoend revealend +auto=@targeted(creature|myBattlefield) from(aura|myzones):token(Soldier,Creature Human Soldier,1/1,white) text=When Siona, Captain of the Pyleas enters the battlefield, look at the top seven cards of your library. You may reveal an Aura card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. -- Whenever an Aura you control becomes attached to a creature you control, create a 1/1 white Human Soldier creature token. mana={1}{G}{W} type=Legendary Creature @@ -47055,6 +47042,7 @@ toughness=2 [card] name=Siren Lookout abilities=flying +aicode=activate if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand) auto=explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 text=Flying -- When Siren Lookout enters the battlefield, it explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard.) mana={2}{U} @@ -51175,6 +51163,7 @@ toughness=3 [card] name=Sunrise Seeker abilities=vigilance +aicode=activate if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand) auto=explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 text=Vigilance -- When Sunrise Seeker enters the battlefield, it explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard.) mana={4}{W} @@ -51219,8 +51208,8 @@ toughness=3 [card] name=Sunset Pyramid auto=counter(0/0,3,brick) -auto={2}{T}{counter(0/0,-1,brick)}:draw:1 -auto={2}{T}:scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto={2}{T}{counter(0/0,-1,brick)}:name(Draw 1) draw:1 controller +auto={2}{T}:name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Sunset Pyramid enters the battlefield with three brick counters on it. -- {2}, {T}, Remove a brick counter from Sunset Pyramid: Draw a card. -- {2}, {T}: Scry 1. mana={2} type=Artifact @@ -52199,8 +52188,8 @@ toughness=3 [/card] [card] name=Tamiyo's Epiphany -aicode=activate draw:2 controller -auto=name(Scry) reveal:4 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<4>*|reveal) bottomoflibrary optiontwoend afterrevealed transforms((,newability[draw:2 controller])) oneshot afterrevealedend revealend +aicode=activate transforms((,newability[draw:2 controller])) oneshot +auto=scry:4 scrycore delayed draw:2 controller scrycoreend scryend text=Scry 4, then draw two cards. mana={3}{U} type=Sorcery @@ -53158,7 +53147,7 @@ subtype=Saga [/card] [card] name=The First Iroan Games -auto=token(Human,The) +auto=token(Soldier,Creature Human Soldier,1/1,white) auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}) counter(1/1,3) target(creature|myBattlefield) @@ -53326,8 +53315,8 @@ type=Legendary Artifact [card] name=The Scarab God auto={2}{U}{B}:target(creature|graveyard) clone and!( transforms((Zombie,setpower=4,settoughness=4,black)) forever )! && moveTo(exile) -auto=@each my upkeep:foreach(zombie|mybattlefield) life:-1 opponent -auto=@each my upkeep:reveal:type:zombie:mybattlefield optionone name(Scry) target(<60>*|reveal) moveto(mylibrary) optiononeend revealend +auto=@each my upkeep:name(Opponent looses life) foreach(zombie|mybattlefield) life:-1 opponent +auto=@each my upkeep:name(Scry cards) scry:type:zombie:mybattlefield scrycore delayed scrycoreend scryend auto=@movedTo(this|graveyard) from(battlefield):phaseaction[endofturn once] moveTo(ownerhand) ueot text=At the beginning of your upkeep, each opponent loses X life and you scry X, where X is the number of Zombies you control. -- {2}{U}{B}: Exile target creature card from a graveyard. Create a token that's a copy of it, except it's a 4/4 black Zombie. -- When The Scarab God dies, return it to its owner's hand at the beginning of the next end step. mana={3}{U}{B} @@ -53706,9 +53695,8 @@ toughness=4 [card] name=Thrasios, Triton Hero abilities=partner -aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -aicode=activate target(<1>*[zpos=1]|mylibrary) name(revealed card) moveto(myhand) name(revealed card) and!(if cantargetcard(land|*) then moveto(mybattlefield) tap(noevent))! -auto={4}:name(Scry 1) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend && reveal:1 optionone target(land|reveal) moveto(mybattlefield) tap(noevent) optiononeend optiontwo name(Put in hand) target(<1>*|reveal) moveto(myhand) optiontwoend revealend +aicode=activate if type(land[zpos=1]|mylibrary)~equalto~0 then draw:1 controller else all(land[zpos=1]|mylibrary) moveto(mybattlefield) and!( tap(noevent) )! +auto={4}:scry:1 scrycore delayed dontshow transforms((,newability[if type(land[zpos=1]|mylibrary)~equalto~0 then all(*[zpos=1]|mylibrary) moveto(myhand) else all(land[zpos=1]|mylibrary) moveto(mybattlefield) and!( tap(noevent) )!])) oneshot scrycoreend scryend text={4}: Scry 1, then reveal the top card of your library. If its a land card, put it onto the battlefield tapped. Otherwise, draw a card. -- Partner (You can have two commanders if both have partner.) mana={G}{U} type=Legendary Creature @@ -54313,6 +54301,7 @@ toughness=2 [/card] [card] name=Tishana's Wayfinder +aicode=activate if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand) auto=explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 text=When Tishana's Wayfinder enters the battlefield, it explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard.) mana={2}{G} @@ -54504,6 +54493,7 @@ toughness=3 [card] name=Tomb Robber abilities=menace +aicode=activate if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand) auto={1}{D(*|myhand)}:name(Explores) explores && reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend revealend limit:1 text=Menace -- {1}, Discard a card: Tomb Robber explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard.) mana={2}{B} @@ -54831,8 +54821,8 @@ type=Instant [/card] [card] name=Track Down -auto=scry:3 scrycore delayed dontshow donothing scrycoreend scryend -auto=reveal:1 optionone if type(*[land;creature]|reveal)~morethan~0 then draw:1 controller optiononeend optiontwo name(back to library) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend +aicode=activate if type(*[creature;land;zpos=1]|mylibrary)~morethan~0 then draw:1 controller +auto=scry:3 scrycore delayed dontshow transforms((,newability[if type(*[creature;land;zpos=1]|mylibrary)~morethan~0 then all(*[zpos=1]|mylibrary) moveto(myhand) else target(*[zpos=1]|mylibrary) moveto(myreveal) and!( placefromthetop(1) )!])) oneshot scrycoreend scryend text=Scry 3, then reveal the top card of your library. If it's a creature or land card, draw a card. (To scry 3, look at the top three cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) mana={1}{G} type=Sorcery @@ -55778,11 +55768,13 @@ toughness=2 [/card] [card] name=Tymaret Calls the Dead -auto=deplete:3 controller && may moveto(exile) target(creature,enchantment|myGraveyard) && token(Zombie,Creature Zombie,2/2,black) +auto=transforms((,newability[deplete:3 controller],newability[may name(Exile card and create zombie) moveto(exile) target(*[creature;enchantment]|myGraveyard) && token(Zombie^Creature Zombie^2/2^black)])) oneshot auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}) deplete:3 controller && may moveto(exile) target(creature,enchantment|myGraveyard) && token(Zombie,Creature Zombie,2/2,black) -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) :life:type:zombie:mybattlefield controller && scry:type:zombie:mybattlefield scrycore delayed dontshow donothing scrycoreend scryend && sacrifice(this) +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}):transforms((,newability[deplete:3 controller],newability[may name(Exile card and create zombie) moveto(exile) target(*[creature;enchantment]|myGraveyard) && token(Zombie^Creature Zombie^2/2^black)])) oneshot +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}):life:type:zombie:mybattlefield controller +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}):scry:type:zombie:mybattlefield scrycore delayed dontshow donothing scrycoreend scryend +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}):sacrifice(this) text=(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.) -- I, II Put the top three cards of your library into your graveyard. Then you may exile a creature or enchantment card from your graveyard. If you do, create a 2/2 black Zombie creature token. -- III You gain X life and scry X, where X is the number of Zombies you control. mana={2}{B} type=Enchantment @@ -58722,7 +58714,7 @@ toughness=1 [/card] [card] name=Warteye Witch -auto=@movedTo(creature|graveyard) from(mybattlefield:scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto=@movedTo(creature|graveyard) from(mybattlefield):scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Whenever Warteye Witch or another creature you control dies, scry 1. mana={2}{B} type=Creature @@ -59701,6 +59693,7 @@ type=Sorcery [card] name=Witching Well auto=scry:2 scrycore delayed dontshow donothing scrycoreend scryend +auto={3}{U}{S}:draw:2 controller text=When Witching Well enters the battlefield, scry 2. (Look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) -- {3}{U}, Sacrifice Witching Well: Draw two cards. mana={U} type=Artifact diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index ac002bfaf..aa0c3a0df 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -3448,7 +3448,7 @@ auto=target(player) draw:3 text=Ancestral Vision is blue. -- Suspend 4 - {U} (Rather than cast this card from your hand, pay {U} and exile it with four time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.) -- Target player draws three cards. mana={0} color=blue -restriction=turn:200 +restriction=never suspend(4)={u} type=Sorcery [/card] @@ -4648,7 +4648,7 @@ toughness=0 name=Aqueous Form target=creature aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=@combat(attacking) source(mytgt):name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=@combat(attacking) source(mytgt):scry:1 scrycore delayed dontshow donothing scrycoreend scryend auto=teach(creature) unblockable text=Enchant creature -- Enchanted creature can't be blocked. -- Whenever enchanted creature attacks, scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) mana={U} @@ -4689,7 +4689,7 @@ toughness=1 [card] name=Arachnogenesis auto=token(Spider,Creature Spider,1/2,reach,green)*type:creature[attacking]:opponentbattlefield -auto=preventAllCombatDamage from(creature[-spider]) ueot +auto=preventAllCombatDamage from(creature[-spider]|battlefield) ueot text=Put X 1/2 green Spider creature tokens with reach onto the battlefield, where X is the number of creatures attacking you. Prevent all combat damage that would be dealt this turn by non-Spider creatures. mana={2}{G} type=Instant @@ -5916,7 +5916,7 @@ toughness=4 [/card] [card] name=Armored Transport -auto=preventAllCombatDamage from(creature[blocking]) to(this) +auto=preventAllCombatDamage from(creature[blocking]|battlefield) to(this) text=Prevent all combat damage that would be dealt to Armored Transport by creatures blocking it. mana={3} type=Artifact Creature @@ -9851,7 +9851,7 @@ toughness=2 [card] name=Battlewise Hoplite aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=@targeted(this) from(*[instant;sorcery;enchantment]|mycastingzone):counter(1/1,1) && name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=@targeted(this) from(*[instant;sorcery;enchantment]|mycastingzone):counter(1/1,1) && scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Heroic -- Whenever you cast a spell that targets Battlewise Hoplite, put a +1/+1 counter on Battlewise Hoplite, then scry 1. (To scry 1, look at the top card of your library, then you may put that card on the bottom of your library.) mana={W}{U} type=Creature @@ -14282,14 +14282,16 @@ type=Instant [card] name=Brain in a Jar auto={1}{T}:counter(0/0,1,Charge) && transforms((,newability[target(*[instant;sorcery;manacost=counter{0%0.1.charge}]|myhand) castcard(normal)])) oneshot -auto={3}{T}{c(0/0,-1,Charge)}: scry:1 scrycore delayed dontshow donothing scrycoreend scryend -auto={3}{T}{c(0/0,-2,Charge)}: scry:2 scrycore delayed dontshow donothing scrycoreend scryend -auto={3}{T}{c(0/0,-3,Charge)}: scry:3 scrycore delayed dontshow donothing scrycoreend scryend -auto={3}{T}{c(0/0,-4,Charge)}: scry:4 scrycore delayed dontshow donothing scrycoreend scryend -auto={3}{T}{c(0/0,-5,Charge)}: scry:5 scrycore delayed dontshow donothing scrycoreend scryend -auto={3}{T}{c(0/0,-6,Charge)}: scry:6 scrycore delayed dontshow donothing scrycoreend scryend -auto={3}{T}{c(0/0,-7,Charge)}: scry:7 scrycore delayed dontshow donothing scrycoreend scryend -auto={3}{T}:counter(0/0,-8,Charge) scry:8 scrycore delayed dontshow donothing scrycoreend scryend +auto={3}{T}{c(0/0,-1,Charge)}:name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto={3}{T}{c(0/0,-2,Charge)}:name(Scry 2) scry:2 scrycore delayed dontshow donothing scrycoreend scryend +auto={3}{T}{c(0/0,-3,Charge)}:name(Scry 3) scry:3 scrycore delayed dontshow donothing scrycoreend scryend +auto={3}{T}{c(0/0,-4,Charge)}:name(Scry 4) scry:4 scrycore delayed dontshow donothing scrycoreend scryend +auto={3}{T}{c(0/0,-5,Charge)}:name(Scry 5) scry:5 scrycore delayed dontshow donothing scrycoreend scryend +auto={3}{T}{c(0/0,-6,Charge)}:name(Scry 6) scry:6 scrycore delayed dontshow donothing scrycoreend scryend +auto={3}{T}{c(0/0,-7,Charge)}:name(Scry 7) scry:7 scrycore delayed dontshow donothing scrycoreend scryend +auto={3}{T}{c(0/0,-8,Charge)}:name(Scry 8) scry:8 scrycore delayed dontshow donothing scrycoreend scryend +auto={3}{T}{c(0/0,-9,Charge)}:name(Scry 9) scry:9 scrycore delayed dontshow donothing scrycoreend scryend +auto={3}{T}{c(0/0,-10,Charge)}:name(Scry 10) scry:10 scrycore delayed dontshow donothing scrycoreend scryend text={1}, {T}: Put a charge counter on Brain in a Jar, then you may cast an instant or sorcery card with converted mana cost equal to the number of charge counters on Brain in a Jar from your hand without paying its mana cost. -- {3}, {T}, Remove X charge counters from Brain in a Jar: Scry X. mana={2} type=Artifact @@ -17391,7 +17393,7 @@ name=Catacomb Sifter abilities=devoid auto=choice token(Eldrazi Scion,Creature Eldrazi Scion,1/1) and!( transforms((,newability[{S}:Add{C}])) forever )! controller aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=@movedTo(other creature|graveyard) from(myBattlefield):name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=@movedTo(other creature|graveyard) from(myBattlefield):name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Devoid (This card has no color.) -- When Catacomb Sifter enters the battlefield, put a 1/1 colorless Eldrazi Scion creature token onto the battlefield. It has "Sacrifice this creature: Add {C} to your mana pool." -- Whenever another creature you control dies, scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) mana={1}{B}{G} type=Creature @@ -19519,7 +19521,7 @@ type=Instant name=Chorus of the Tides abilities=flying aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=@targeted(this) from(*[instant;sorcery;enchantment]|mycastingzone):counter(1/1,1) && name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=@targeted(this) from(*[instant;sorcery;enchantment]|mycastingzone):counter(1/1,1) && name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Flying -- Heroic -- Whenever you cast a spell that targets Chorus of the Tides, scry 1. (To scry 1, look at the top card of your library, then you may put that card on the bottom of your library.) mana={3}{U} type=Creature @@ -27770,7 +27772,7 @@ toughness=1 [/card] [card] name=Deepwood Tantiv -auto=@combat(blocked,turnlimited) source(this):life:2 conroller +auto=@combat(blocked,turnlimited) source(this):life:2 controller text=Whenever Deepwood Tantiv becomes blocked, you gain 2 life. mana={4}{G} type=Creature @@ -35667,7 +35669,7 @@ subtype=Aura [/card] [card] name=Enchanted Being -auto=preventAllCombatDamage from(creature[enchanted]) to(this) +auto=preventAllCombatDamage from(creature[enchanted]|battlefield) to(this) text=Prevent all combat damage that would be dealt to Enchanted Being by enchanted creatures. mana={1}{W}{W} type=Creature @@ -42700,8 +42702,8 @@ toughness=2 [/card] [card] name=Foresee -aicode=activate draw:2 controller -auto=name(Scry) reveal:4 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<4>*|reveal) bottomoflibrary optiontwoend afterrevealed transforms((,newability[draw:2 controller])) oneshot afterrevealedend revealend +aicode=activate transforms((,newability[draw:2 controller])) oneshot +auto=name(Scry 4 and draw) scry:4 scrycore delayed draw:2 controller scrycoreend scryend text=Scry 4, then draw two cards. (To scry 4, look at the top four cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) mana={3}{U} type=Sorcery @@ -43598,7 +43600,7 @@ toughness=1 name=Frontline Strategist facedown={3} autofacedown={w}:morph -autofaceup=preventallcombatdamage from(creature[-soldier]) +autofaceup=preventallcombatdamage from(creature[-soldier]|battlefield) text=Morph {W} (You may cast this face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.) -- When Frontline Strategist is turned face up, prevent all combat damage non-Soldier creatures would deal this turn. mana={W} type=Creature @@ -46741,8 +46743,8 @@ toughness=3 [/card] [card] name=Glimmer of Genius -aicode=activate draw:2 controller -auto=name(Scry) reveal:2 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<2>*|reveal) bottomoflibrary optiontwoend afterrevealed transforms((,newability[draw:2 controller])) oneshot afterrevealedend revealend +aicode=activate transforms((,newability[draw:2 controller])) oneshot +auto=name(Scry 2 and draw) scry:2 scrycore delayed draw:2 controller scrycoreend scryend auto=alterenergy:2 controller text=Scry 2, then draw two cards. You get {E}{E} (two energy counters). mana={3}{U} @@ -46817,9 +46819,8 @@ type=Sorcery [/card] [card] name=Glimpse the Sun God -target=creature -auto=tap -auto=scry:1 scrycore delayed dontshow donothing scrycoreend scryend +aicode=activate target(creature|battlefield) tap +auto=scry:1 scrycore delayed dontshow transforms((,newability[target(creature|battlefield) tap])) oneshot scrycoreend scryend text=Tap X target creatures. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) mana={X}{W} type=Instant @@ -52272,7 +52273,7 @@ toughness=2 [/card] [card] name=Harmless Assault -auto=preventAllCombatDamage from(creature[attacking]) ueot +auto=preventAllCombatDamage from(creature[attacking]|battlefield) ueot text=Prevent all combat damage that would be dealt this turn. mana={2}{W}{W} type=Instant @@ -52415,9 +52416,8 @@ type=Sorcery [/card] [card] name=Harsh Scrutiny -target=opponent -aicode=activate reject notatarget(creature|targetedpersonshand) -auto=reveal:type:*:targetedpersonshand revealzone(targetedpersonshand) optionone name(choose discards) notatarget(<1>creature|reveal) transforms((,newability[moveto(ownerhand) all(other *|reveal)],newability[moveto(ownerhand) and!(reject)!])) ueot optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerhand) and!( all(*|reveal) moveto(ownerhand) )! optiontwoend revealend +aicode=activate reject notatarget(creature|opponenthand) +auto=reveal:type:*:opponenthand revealzone(opponenthand) optionone name(choose discards) notatarget(<1>creature|reveal) transforms((,newability[moveto(ownerhand) all(other *|reveal)],newability[moveto(ownerhand) and!(reject)!])) ueot optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerhand) and!( all(*|reveal) moveto(ownerhand) )! optiontwoend revealend auto=scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Target opponent reveals his or her hand. You choose a creature card from it. That player discards that card. Scry 1. mana={B} @@ -53355,7 +53355,7 @@ toughness=2 [card] name=Hedron Alignment auto=@each my upkeep:aslongas(Hedron Alignment|myhand) aslongas(Hedron Alignment|mygraveyard) aslongas(Hedron Alignment|myexile) aslongas(Hedron Alignment|mybattlefield) wingame controller -auto={1}{u}:name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto={1}{u}:name(Scry 1) scry:1 scrycore delayed dontshow scrycoreend scryend text=Hexproof -- At the beginning of your upkeep, you may reveal your hand. If you do, you win the game if you own a card named Hedron Alignment in exile, in your hand, in your graveyard, and on the battlefield. -- {1}{U}: Scry 1. mana={2}{U} type=Enchantment @@ -54568,7 +54568,7 @@ type=Instant [/card] [card] name=Hindervines -auto=preventAllCombatDamage from(creature[-counter{1/1.1}]) ueot +auto=preventAllCombatDamage from(creature[-counter{1/1.1}]|battlefield) ueot text=Prevent all combat damage that would be dealt this turn by creatures with no +1/+1 counters on them. mana={2}{G} type=Instant @@ -56164,7 +56164,7 @@ toughness=1 [/card] [card] name=Hunter's Ambush -auto=preventAllCombatDamage from(creature[-Green]) ueot +auto=preventAllCombatDamage from(creature[-Green]|battlefield) ueot text=Prevent all combat damage that would be dealt by nongreen creatures this turn. mana={2}{G} type=Instant @@ -58580,6 +58580,7 @@ type=Enchantment [/card] [card] name=Interpret the Signs +aicode=activate transforms((,newability[all(*[zpos=1]|mylibrary) transforms((,newability[draw:manacost controller])) oneshot])) oneshot auto=scry:3 scrycore delayed draw:revealedmana scrycoreend scryend text=Scry 3, then reveal the top card of your library. Draw cards equal to that card's converted mana cost. (To scry 3, look at the top three cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) mana={5}{U} @@ -60556,6 +60557,7 @@ toughness=1 [/card] [card] name=Judge Unworthy +aicode=activate transforms((,newability[all(*[zpos=1]|mylibrary) transforms((,newability[name(Damage attacking or blocking creature) target(creature[attacking;blocking]|battlefield) damage:manacost])) oneshot])) oneshot auto=scry:3 scrycore delayed name(Choose Target for damage) target(creature[attacking,blocking]) damage:revealedmana scrycoreend scryend text=Choose target attacking or blocking creature. Scry 3, then reveal the top card of your library. Judge Unworthy deals damage equal to that card's converted mana cost to that creature. (To scry 3, look at the top three cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) mana={1}{W} @@ -65682,7 +65684,7 @@ abilities=haste auto=@targeted(this) from(*|opponentbattlefield):sacrifice notatarget(land) auto=@targeted(this) from(*|opponenthand):sacrifice notatarget(land) auto=@targeted(this) from(*|mybattlefield):ability$!sacrifice notatarget(land)!$ controller -auto=@targeted(this) from(*|myhand):ability$!sacrifice notatarget(land)!$ conroller +auto=@targeted(this) from(*|myhand):ability$!sacrifice notatarget(land)!$ controller text=Haste -- Whenever Lava Runner becomes the target of a spell or ability, that spell or ability's controller sacrifices a land. mana={1}{R}{R} type=Creature @@ -67468,7 +67470,7 @@ auto=all(creature|battlefield) becomes(deadtemp) && all(creature|graveyard) move text=Living End is black. -- Suspend 3 - {2}{B}{B} (Rather than cast this card from your hand, pay {2}{B}{B} and exile it with three time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.) -- Each player exiles all creature cards from his or her graveyard, then sacrifices all creatures he or she controls, then puts all cards he or she exiled this way onto the battlefield. mana={0} color=black -restriction=turn:200 +restriction=never suspend(3)={2}{B}{B} type=Sorcery [/card] @@ -67641,7 +67643,8 @@ toughness=1 [/card] [card] name=Llanowar Empath -auto=scry:2 scrycore choice name(Choose creature) target(<1>creature|reveal) moveto(myhand) scrycoreend scryend +aicode=activate target(creature[zpos=1]|mylibrary) moveto(myhand) +auto=scry:2 scrycore delayed dontshow transforms((,newability[if type(creature[zpos=1]|mylibrary)~equalto~1 then all(creature[zpos=1]|mylibrary) moveto(myhand) else target(*[zpos=1]|mylibrary) moveto(myreveal) and!( placefromthetop(1) )!])) oneshot scrycoreend scryend text=When Llanowar Empath enters the battlefield, scry 2, then reveal the top card of your library. If it's a creature card, put it into your hand. (To scry 2, look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) mana={3}{G} type=Creature @@ -68286,7 +68289,7 @@ auto={T}{S}:Add{R}{R}{R} auto={T}{S}:Add{G}{G}{G} text=Suspend 3 - {0} (Rather than cast this card from your hand, pay {0} and exile it with three time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.) -- {T}, Sacrifice Lotus Bloom: Add three mana of any one color to your mana pool. type=Artifact -restriction=turn:200 +restriction=never mana={0} suspend(3)={0} [/card] @@ -77730,8 +77733,7 @@ toughness=2 [card] name=Mystic Speculation buyback={u}{2} -aicode=name(look) activate name(look) transforms((,newability[foreach(*[zpos<=3]|mylibrary) moverandom(*[zpos<=3]) from(mylibrary) to(mylibrary)])) ueot -auto=name(scry cards) reveal:3 optionone name(look) target(*|reveal) doNothing optiononeend optiontwo target(<3>*|reveal) moveto(ownerlibrary) optiontwoend revealend +auto=scry:3 scrycore delayed dontshow donothing scrycoreend scryend text=Buyback {2} (You may pay an additional {2} as you cast this spell. If you do, put this card into your hand as it resolves.) -- Scry 3. (To scry 3, look at the top three cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) mana={U} type=Sorcery @@ -79250,7 +79252,7 @@ name=New Benalia auto=tap(noevent) auto={t}:add{w} aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=New Benalia enters the battlefield tapped. -- When New Benalia enters the battlefield, scry 1. (To scry 1, look at the top card of your library, then you may put that card on the bottom of your library.) -- {T}: Add {W} to your mana pool. type=Land [/card] @@ -81076,7 +81078,7 @@ type=Legendary Enchantment [card] name=Oath of Jace auto=ability$!draw:3 _ notatarget(<2>*|myhand) reject!$ controller -auto=@each my upkeep:name(Look at My top cards) reveal:type:planeswalker:mybattlefield optionone name(Look) target(<1>*|reveal) doNothing optiononeend optiontwo target(<60>*|reveal) moveto(mylibrary) optiontwoend revealend +auto=@each my upkeep:name(Scry cards) scry:type:type:planeswalker:mybattlefield scrycore delayed dontshow donothing scrycoreend scryend text=When Oath of Jace enters the battlefield, draw three cards, then discard two cards. -- At the beginning of your upkeep, scry X, where X is the number of planeswalkers you control. mana={2}{U} type=Legendary Enchantment @@ -82454,7 +82456,7 @@ toughness=2 [card] name=Oracle's Insight target=creature -auto=teach(creature) {t}:scry:1 scrycore dontshow delayed draw:1 scrycoreend scryend +auto=teach(creature) {t}:scry:1 scrycore delayed draw:1 scrycoreend scryend text=Enchant creature -- Enchanted creature has "{T}: Scry 1, then draw a card." (To scry 1, look at the top card of your library, then you may put that card on the bottom of your library.) mana={3}{U} type=Enchantment @@ -87967,8 +87969,8 @@ type=Instant [/card] [card] name=Preordain -aicode=activate draw:1 -auto=name(Scry) reveal:2 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<2>*|reveal) bottomoflibrary optiontwoend afterrevealed transforms((,newability[draw:1 controller])) oneshot afterrevealedend revealend +aicode=activate transforms((,newability[draw:1 controller])) oneshot +auto=scry:2 scrycore delayed draw:1 controller scrycoreend scryend text=Scry 2, then draw a card. (To scry 2, look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) mana={U} type=Sorcery @@ -89750,7 +89752,8 @@ type=Instant [/card] [card] name=Putrid Cyclops -auto=scry:1 scrycore name(-x/-x) all(this) ueot -revealedmana/-revealedmana scrycoreend scryend +aicode=activate transforms((,newability[all(*[zpos=1]|mylibrary) transforms((,newability[name(Putrid cyclops gets -x/-x) target(Putrid Cyclops[fresh]|mybattlefield) -manacost/-manacost ueot])) oneshot])) oneshot +auto=scry:1 scrycore delayed transforms((,newability[name(Putrid cyclops gets -x/-x) -revealedmana/-revealedmana])) ueot scrycoreend scryend text=When Putrid Cyclops enters the battlefield, scry 1, then reveal the top card of your library. Putrid Cyclops gets -X/-X until end of turn, where X is that card's converted mana cost. (To scry 1, look at the top card of your library, then you may put that card on the bottom of your library.) mana={2}{B} type=Creature @@ -92441,7 +92444,7 @@ subtype=Arcane [card] name=Read the Bones aicode=activate transforms((,newability[draw:2 controller],newability[life:-2 controller])) oneshot -auto=name(Scry) reveal:2 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<2>*|reveal) bottomoflibrary optiontwoend afterrevealed transforms((,newability[draw:2 controller],newability[life:-2 controller])) oneshot afterrevealedend revealend +auto=scry:2 scrycore delayed draw:2 controller && life:2 controller scrycoreend scryend text=Scry 2, then draw two cards. You lose 2 life. (To scry 2, look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) mana={2}{B} type=Sorcery @@ -93851,7 +93854,7 @@ type=Instant [/card] [card] name=Repel the Abominable -auto=preventAllCombatDamage from(creature[-human]) ueot +auto=preventAllCombatDamage from(creature[-human]|battlefield) ueot text=Prevent all damage that would be dealt this turn by non-Human sources. mana={1}{W} type=Instant @@ -94251,7 +94254,7 @@ auto=if type(*|myhand)~morethan~type(*|opponenthand) then ability$! reject notat auto=if type(*|opponenthand)~morethan~type(*|myhand) then ability$! reject notatarget(*|myhand) !$ opponent color=white mana={0} -restriction=turn:200 +restriction=never suspend(6)={W} text=Restore Balance is White - Suspend 6 - {W} (Rather than cast this card from your hand, pay {W} and exile it with six time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.) -- Each player chooses a number of lands he or she controls equal to the number of lands controlled by the player who controls the fewest, then sacrifices the rest. Players sacrifice creatures and discard cards the same way. type=Sorcery @@ -94361,28 +94364,28 @@ type=Instant [/card] [card] name=Retreat to Coralhelm -auto=@movedTo(land|myBattlefield):name(choose one) transforms((,newability[choice ability$!reveal:1 optionone name(Scry Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend!$ controller],newability[choice name(untap creature) target(creature) untap],newability[choice name(tap creature) target(creature) tap])) ueot -text=Landfall -- Whenever a land enters the battlefield under your control, choose one -- --You may tap or untap target creature. --Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) +auto=@movedTo(land|myBattlefield):name(Choose one) transforms((,newability[choice name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend],newability[choice name(untap creature) target(creature) untap],newability[choice name(tap creature) target(creature) tap])) ueot +text=Landfall -- Whenever a land enters the battlefield under your control, choose one -- -- You may tap or untap target creature. -- Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) mana={2}{U} type=Enchantment [/card] [card] name=Retreat to Emeria -auto=@movedTo(land|myBattlefield):name(choose one) transforms((,newability[choice name(Kor Token) create(Kor Ally:Creature Kor Ally:1/1:white) controller],newability[choice name(1/1 ueot) all(creature|mybattlefield) 1/1 ueot])) oneshot +auto=@movedTo(land|myBattlefield):name(Choose one) transforms((,newability[choice name(Kor Token) create(Kor Ally:Creature Kor Ally:1/1:white) controller],newability[choice name(1/1 ueot) all(creature|mybattlefield) 1/1 ueot])) oneshot text=Landfall -- Whenever a land enters the battlefield under your control, choose one -- -- -- Put a 1/1 white Kor Ally creature token onto the battlefield. -- -- Creatures you control get +1/+1 until end of turn. mana={3}{W} type=Enchantment [/card] [card] name=Retreat to Hagra -auto=@movedTo(land|myBattlefield):name(choose one) transforms((,newability[choice 1/0 && deathtouch target(creature)],newability[choice life:-1 opponent && life:1 controller])) oneshot -text=Landfall -- Whenever a land enters the battlefield under your control, choose one -- --Target creature gets +1/+0 and gains deathtouch until end of turn. --Each opponent loses 1 life and you gain 1 life. +auto=@movedTo(land|myBattlefield):name(Choose one) transforms((,newability[choice name(Creature gains 1/0 and deachtouch) 1/0 && deathtouch target(creature)],newability[choice life:-1 opponent && life:1 controller])) oneshot +text=Landfall -- Whenever a land enters the battlefield under your control, choose one -- -- Target creature gets +1/+0 and gains deathtouch until end of turn. -- Each opponent loses 1 life and you gain 1 life. mana={2}{B} type=Enchantment [/card] [card] name=Retreat to Kazandu -auto=@movedTo(land|myBattlefield):transforms((,newability[if type(creature|battlefield)~morethan~0 then choice target(creature) counter(1/1)],newability[choice name(gain 2 life) life:2 controller])) oneshot +auto=@movedTo(land|myBattlefield):transforms((,newability[if type(creature|battlefield)~morethan~0 then choice name(Put Counter) name(Put Counter) target(creature) counter(1/1)],newability[choice name(gain 2 life) life:2 controller])) oneshot text=Landfall -- Whenever a land enters the battlefield under your control, choose one -- -- -- Put a +1/+1 counter on target creature. -- -- You gain 2 life. mana={2}{G} type=Enchantment @@ -94905,7 +94908,8 @@ subtype=Arcane [/card] [card] name=Riddle of Lightning -auto=scry:3 scrycore delayed choice name(Choose Target for damage) target(creature,player) damage:revealedmana scrycoreend scryend +aicode=activate transforms((,newability[all(*[zpos=1]|mylibrary) transforms((,newability[name(Damage creature or player) target(player^creature) damage:manacost])) oneshot])) oneshot +auto=scry:3 scrycore delayed target(player,creature) damage:revealedmana scrycoreend scryend text=Choose target creature or player. Scry 3, then reveal the top card of your library. Riddle of Lightning deals damage equal to that card's converted mana cost to that creature or player. (To scry 3, look at the top three cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) mana={3}{R}{R} type=Instant @@ -100604,9 +100608,9 @@ toughness=1 [/card] [card] name=Scrying Sheets -auto={t}:add{1} +auto={T}:add{C} aicode=activate target(*[snow;zpos=1]|mylibrary) moveto(myhand) -auto={1}{i}:name(look) reveal:1 optionone if type(*[snow]|reveal)~morethan~0 then target(*|reveal) moveto(myhand) optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend +auto={1}{i}{T}:name(Look top card) reveal:1 optionone if type(*[snow]|reveal)~morethan~0 then target(*|reveal) moveto(myhand) optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend text={T}: Add {1} to your mana pool. -- {1}{S}i}, {T}: Look at the top card of your library. If that card is snow, you may reveal it and put it into your hand. ({S}i} can be paid with one mana from a snow permanent.) type=Snow Land [/card] @@ -100818,9 +100822,8 @@ type=Land [/card] [card] name=Sea God's Revenge -target=creature|opponentbattlefield -auto=moveto(ownerhand) -auto=scry:1 scrycore delayed dontshow donothing scrycoreend scryend +aicode=activate transforms((,newability[target(creature|opponentbattlefield) moveto(ownerhand)])) oneshot +auto=scry:1 scrycore delayed target(creature|opponentbattlefield) moveto(ownerhand) scrycoreend scryend text=Return up to three target creatures your opponents control to their owners' hands. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) mana={5}{U} type=Sorcery @@ -101552,7 +101555,7 @@ subtype=Aura name=Seer's Lantern auto={t}:add{c} aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto={2}{t}:name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto={2}{t}:name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text={T}: Add {C} to your mana pool. ({C} represents colorless mana.) -- {2}, {T}: Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) mana={3} type=Artifact @@ -102047,7 +102050,7 @@ toughness=2 [card] name=Sensei Golden-Tail auto=bushido(1/1) -auto={1}{W}{T}:name(train samurai) target(creature) transforms((,newability[bushido(1/1)],newability[counter(0/0.1.Training)],newability[this(cantargetcard(creature) becomes(Samurai) )])) asSorcery forever +auto={1}{W}{T}:name(train samurai) target(creature) transforms((,newability[bushido(1/1)],newability[counter(0/0.1.Training)],newability[this(cantargetcard(creature)) becomes(Samurai)])) asSorcery forever text=Bushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) -- {1}{W}, {T}: Put a training counter on target creature. That creature gains bushido 1 and becomes a Samurai in addition to its other creature types. Activate this ability only any time you could cast a sorcery. mana={1}{W} type=Legendary Creature @@ -102601,7 +102604,7 @@ type=Artifact name=Serum Visions auto=draw:1 aicode=activate may bottomoflibrary all(*[zpos<=2]|mylibrary) -auto=name(Look) reveal:2 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<2>*|reveal) bottomoflibrary optiontwoend revealend +auto=name(Scry 2) scry:2 scrycore delayed dontshow donothing scrycoreend scryend text=Draw a card. -- Scry 2. (To scry 2, look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) mana={U} type=Sorcery @@ -103039,7 +103042,7 @@ toughness=3 [card] name=Shadows of the Past aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=@movedTo(creature|graveyard) from(battlefield):name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=@movedTo(creature|graveyard) from(battlefield):name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend auto={4}{B}:life:-2 opponent && life:2 controller restriction{type(creature|mygraveyard)~morethan~3} text=Whenever a creature dies, scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) -- {4}{B}: Each opponent loses 2 life and you gain 2 life. Activate this ability only if there are four or more creature cards in your graveyard. mana={1}{B} @@ -108263,7 +108266,7 @@ toughness=3 [/card] [card] name=Snag -auto=preventAllCombatDamage from(creature[-blocked]) ueot +auto=preventAllCombatDamage from(creature[-blocked]|battlefield) ueot text=You may discard a Forest card rather than pay Snag's mana cost. -- Prevent all combat damage that would be dealt by unblocked creatures this turn. other={D(forest|myhand)} name(Discard Forest to Cast) mana={3}{G} @@ -113943,7 +113946,8 @@ type=Enchantment [card] name=Stormchaser Chimera abilities=flying -auto={2}{u}{r}:scry:1 scrycore delayed +revealedmana/+0 ueot scrycoreend scryend +aicode=activate transforms((,newability[all(*[zpos=1]|mylibrary) transforms((,newability[name(Stormchaser chimera gets +x/0) target(Stormchaser Chimera|mybattlefield) manacost/0 ueot])) oneshot])) oneshot +auto={2}{u}{r}:scry:1 scrycore delayed transforms((,newability[name(Stormchaser chimera gets +x/0) revealedmana/0])) ueot scrycoreend scryend text=Flying -- {2}{U}{R}: Scry 1, then reveal the top card of your library. Stormchaser Chimera gets +X/+0 until end of turn, where X is that card's converted mana cost. (To scry 1, look at the top card of your library, then you may put that card on the bottom of your library.) mana={2}{U}{R} type=Creature @@ -114962,9 +114966,8 @@ type=Instant [/card] [card] name=Sudden Storm -target=creature -auto=freeze -auto=scry:1 scrycore delayed dontshow donothing scrycoreend scryend +aicode=activate transforms((,newability[target(creature|battlefield) freeze])) oneshot +auto=scry:1 scrycore delayed target(creature|battlefield) freeze scrycoreend scryend text=Tap up to two target creatures. Those creatures don't untap during their controllers' next untap steps. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) mana={3}{U} type=Instant @@ -117623,7 +117626,7 @@ type=Artifact [/card] [card] name=Tanglesap -auto=preventAllCombatDamage from(creature[-trample]) ueot +auto=preventAllCombatDamage from(creature[-trample]|battlefield) ueot text=Prevent all combat damage that would be dealt this turn by creatures without trample. mana={1}{G} type=Instant @@ -118461,7 +118464,7 @@ auto=tap(noevent) auto={t}:add{r} auto={t}:add{g} aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Temple of Abandon enters the battlefield tapped. -- When Temple of Abandon enters the battlefield, scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) -- {T}: Add {R} or {G} to your mana pool. type=Land [/card] @@ -118471,7 +118474,7 @@ auto=tap(noevent) auto={t}:add{u} auto={t}:add{b} aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Temple of Deceit enters the battlefield tapped. -- When Temple of Deceit enters the battlefield, scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) -- {T}: Add {U} or {B} to your mana pool. type=Land [/card] @@ -118481,7 +118484,7 @@ auto=tap(noevent) auto={t}:add{w} auto={t}:add{u} aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Temple of Enlightenment enters the battlefield tapped. -- When Temple of Enlightenment enters the battlefield, scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) -- {T}: Add {W} or {U} to your mana pool. type=Land [/card] @@ -118491,7 +118494,7 @@ auto=tap(noevent) auto={t}:add{u} auto={t}:add{r} aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Temple of Epiphany enters the battlefield tapped. -- When Temple of Epiphany enters the battlefield, scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) -- {T}: Add {U} or {R} to your mana pool. type=Land [/card] @@ -118501,7 +118504,7 @@ auto=tap(noevent) auto={t}:add{b} auto={t}:add{g} aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Temple of Malady enters the battlefield tapped. -- When Temple of Malady enters the battlefield, scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) -- {T}: Add {B} or {G} to your mana pool. type=Land [/card] @@ -118511,7 +118514,7 @@ auto=tap(noevent) auto={t}:add{b} auto={t}:add{r} aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Temple of Malice enters the battlefield tapped. -- When Temple of Malice enters the battlefield, scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) -- {T}: Add {B} or {R} to your mana pool. type=Land [/card] @@ -118521,7 +118524,7 @@ auto=tap(noevent) auto={t}:add{g} auto={t}:add{u} aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Temple of Mystery enters the battlefield tapped. -- When Temple of Mystery enters the battlefield, scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) -- {T}: Add {G} or {U} to your mana pool. type=Land [/card] @@ -118531,7 +118534,7 @@ auto=tap(noevent) auto={t}:add{g} auto={t}:add{w} aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Temple of Plenty enters the battlefield tapped. -- When Temple of Plenty enters the battlefield, scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) -- {T}: Add {G} or {W} to your mana pool. type=Land [/card] @@ -118541,7 +118544,7 @@ auto=tap(noevent) auto={t}:add{w} auto={t}:add{b} aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Temple of Silence enters the battlefield tapped. -- When Temple of Silence enters the battlefield, scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) -- {T}: Add {W} or {B} to your mana pool. type=Land [/card] @@ -118557,7 +118560,7 @@ auto=tap(noevent) auto={t}:add{r} auto={t}:add{w} aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Temple of Triumph enters the battlefield tapped. -- When Temple of Triumph enters the battlefield, scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) -- {T}: Add {R} or {W} to your mana pool. type=Land [/card] @@ -121846,7 +121849,7 @@ name=Titan's Strength target=creature auto=3/1 aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=name(scry cards) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Target creature gets +3/+1 until end of turn. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) mana={R} type=Instant @@ -124942,8 +124945,8 @@ toughness=5 [/card] [card] name=Ugin's Insight -aicode=activate draw:3 controller -auto=name(Scry) reveal:convertedcost:highest:*:mybattlefield optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(*|reveal) bottomoflibrary optiontwoend afterrevealed transforms((,newability[draw:3 controller])) oneshot afterrevealedend revealend +aicode=activate transforms((,newability[draw:3 controller])) oneshot +auto=name(Scry cards) scry:convertedcost:highest:*:mybattlefield scrycore delayed draw:3 controller scrycoreend scryend text=Scry X, where X is the highest converted mana cost among permanents you control, then draw three cards. mana={3}{U}{U} type=Sorcery @@ -127116,7 +127119,7 @@ name=Vanquish the Foul target=creature[power>=4] auto=destroy aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=name(scry cards) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Destroy target creature with power 4 or greater. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) mana={5}{W} type=Sorcery @@ -128919,7 +128922,7 @@ toughness=4 [/card] [card] name=Vine Snare -auto=preventAllCombatDamage from(creature[power<=4]) ueot +auto=preventAllCombatDamage from(creature[power<=4]|battlefield) ueot text=Prevent all combat damage that would be dealt this turn by creatures with power 4 or less. mana={2}{G} type=Instant @@ -129240,7 +129243,7 @@ toughness=3 [card] name=Viscera Seer aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto={S(creature|myBattlefield)}:reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto={S(creature|myBattlefield)}:name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Sacrifice a creature: Scry 1. (To scry 1, look at the top card of your library, then you may put that card on the bottom of your library.) mana={B} type=Creature @@ -130362,7 +130365,7 @@ name=Voyage's End target=creature auto=moveto(ownerhand) aicode=activate may bottomoflibrary all(*[zpos=1]|mylibrary) -auto=name(scry cards) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Return target creature to its owner's hand. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) mana={1}{U} type=Instant @@ -132112,7 +132115,7 @@ toughness=2 [/card] [card] name=Watchful Automaton -auto={2}{U}:scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto={2}{U}:name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text={2}{U}: Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) mana={3} type=Artifact Creature @@ -132986,7 +132989,7 @@ text=Wheel of Fate is red. -- Suspend 4 - {1}{R} (Rather than cast this card fro type=Sorcery color=red mana={0} -restriction=turn:200 +restriction=never suspend(4)={1}{r} [/card] [card] @@ -134159,7 +134162,7 @@ toughness=2 [card] name=Windrider Patrol abilities=flying -auto=@combatdamaged(player) from(this):name(scry) scry:2 scrycore delayed dontshow donothing scrycoreend scryend +auto=@combatdamaged(player) from(this):name(Scry 2) scry:2 scrycore delayed dontshow donothing scrycoreend scryend text=Flying -- Whenever Windrider Patrol deals combat damage to a player, scry 2. (Look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) mana={3}{U}{U} type=Creature @@ -134677,7 +134680,7 @@ type=Artifact [card] name=Witches' Eye auto={1}:equip -auto=teach(creature) {1}{t}:name(Scry) reveal:1 optionone name(Put On Top) target(*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend +auto=teach(creature) {1}{t}:name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Equipped creature has "{1}, {T}: Scry 1." (To scry 1, look at the top card of your library, then you may put that card on the bottom of your library.) -- Equip {1} mana={1} type=Artifact @@ -134752,8 +134755,7 @@ type=Instant [/card] [card] name=Withering Gaze -target=opponent -aicode=activate draw:type:*[forest;green]:targetedpersonshand +aicode=activate transforms((,newability[draw:type:*[forest;green]:opponenthand controller])) oneshot auto=Reveal:type:*:opponenthand revealzone(opponenthand) revealtype(*|opponenthand) optionone choice name(Get Bonus) foreach(forest|reveal) draw:1 && foreach(*[green]|reveal) draw:1 optiononeend optiontwo name(Put Back) target(*|reveal) transforms((,newability[all(*|reveal) moveto(ownerhand)])) ueot optiontwoend revealend text=Target opponent reveals his or her hand. You draw a card for each Forest and green card in it. mana={2}{U} @@ -135046,8 +135048,8 @@ subtype=Aura [/card] [card] name=Wolf-Skull Shaman -aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(creature[share!types!]|*) then token(Wolf,Creature Wolf,2/2,green))!)! -auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(creature[share!types!]|reveal)~morethan~0 then token(Wolf,Creature Wolf,2/2,green) optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend +aicode=activate if type(*[creature;zpos=1;share!types!]|mylibrary)~morethan~0 then token(Wolf,Creature Wolf,2/2,green) +auto=@each my upkeep:may name(Look top card) reveal:1 optionone if type(*[creature;share!types!]|reveal)~morethan~0 then token(Wolf,Creature Wolf,2/2,green) optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Wolf-Skull Shaman, you may reveal it. If you do, put a 2/2 green Wolf creature token onto the battlefield. mana={1}{G} type=Creature diff --git a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt index 6b929baf1..3345f3060 100644 --- a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt +++ b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt @@ -198,7 +198,7 @@ subtype=Angrath name=Angrath, Minotaur Pirate auto=counter(0/0,5,loyalty) auto={C(0/0,2,Loyalty)}:name(+2: Deals 1 damage to opponent and each creature he controls) damage:1 opponent && damage:1 all(creature|opponentBattlefield) -auto={C(0/0,2,Loyalty)}:name(+2: Deals 1 damage to planeswalker and each creature its conroller controls) target(planeswalker) damage:1 && damage:1 all(creature|targetcontrollerbattlefield) +auto={C(0/0,2,Loyalty)}:name(+2: Deals 1 damage to planeswalker and each creature its controller controls) target(planeswalker) damage:1 && damage:1 all(creature|targetcontrollerbattlefield) auto={C(0/0,-3,Loyalty)}:name(-3: Reanimate a Pirate) moveTo(myBattlefield) target(creature[Pirate]|myGraveyard) auto={C(0/0,-11,Loyalty)}:name(-11: Destroy all creatures and deal damage) all(creature|opponentBattlefield) dynamicability && destroy text=+2: Angrath, Minotaur Pirate deals 1 damage to target opponent or planeswalker and each creature that player or that planeswalker’s controller controls. -- −3: Return target Pirate card from your graveyard to the battlefield. -- −11: Destroy all creatures target opponent controls. Angrath, Minotaur Pirate deals damage to that player equal to their total power. @@ -545,7 +545,7 @@ subtype=Chandra name=Chandra, Pyromaster auto=counter(0/0,4,loyalty) auto={C(0/0,1,Loyalty)}:name(+1: Deals 1 damage to opponent and 1 to creature) damage:1 opponent && target(creature|opponentbattlefield) damage:1 && transforms((,newability[cantblock])) ueot -auto={C(0/0,1,Loyalty)}:name(+1: Deals 1 damage to controller and 1 to creature) damage:1 conroller && target(creature|mybattlefield) damage:1 && transforms((,newability[cantblock])) ueot +auto={C(0/0,1,Loyalty)}:name(+1: Deals 1 damage to controller and 1 to creature) damage:1 controller && target(creature|mybattlefield) damage:1 && transforms((,newability[cantblock])) ueot auto={C(0/0,0,Loyalty)}:name(+0: Exile the top and may cast it) moveto(exile) and!(transforms((,newability[canplayfromexile])) ueot)! all(*[zpos=1]|mylibrary) auto={C(0/0,-7,Loyalty)}:name(-7: Exile the top ten and may cast it) moveto(exile) all(*[zpos<=10]|mylibrary) && target(*[instant;sorcery]|myexile) clone && clone && clone text=+1: Chandra, Pyromaster deals 1 damage to target player and 1 damage to up to one target creature that player controls. That creature can't block this turn. -- 0: Exile the top card of your library. You may play it this turn. -- -7: Exile the top ten cards of your library. Choose an instant or sorcery card exiled this way and copy it three times. You may cast the copies without paying their mana costs. @@ -1076,7 +1076,7 @@ subtype=Huatli name=Jace, Arcane Strategist auto=counter(0/0,4,loyalty) auto=@drawof(player):transforms((,newability[@drawof(player) restriction{once}:counter(1/1,1) target(creature|myBattlefield)])) ueot -auto={C(0/0,1,Loyalty)}:name(+1: Draw a card) draw:1 conroller +auto={C(0/0,1,Loyalty)}:name(+1: Draw a card) draw:1 controller auto={C(0/0,-7,Loyalty)}:name(-7: Creatures you control can't be blocked) all(creature|myBattlefield) unblockable text=Whenever you draw your second card each turn, put a +1/+1 counter on target creature you control. -- +1: Draw a card. -- -7: Creatures you control can't be blocked this turn. mana={4}{U}{U} @@ -1199,8 +1199,8 @@ subtype=Jace [card] name=Jace, Unraveler of Secrets auto=counter(0/0,5,loyalty) -aicode=activate draw:1 controller -auto={C(0/0,1,Loyalty)}:name(+1: Scry and draw a card) scry:1 scrycore delayed dontshow donothing scrycoreend scryend && draw:1 controller +aicode=activate transforms((,newability[draw:1 controller])) oneshot +auto={C(0/0,1,Loyalty)}:name(+1: Scry and draw a card) scry:1 scrycore delayed draw:1 controller scrycoreend scryend auto={C(0/0,-2,Loyalty)}:name(-2: Return target creature) moveto(ownerhand) target(creature) auto={C(0/0,-8,Loyalty)}:name(-8: Emblem: "Whenever spell cast, counter it") emblem transforms((,newability[@movedto(*|opponentstack) restriction{thisturn(*|opponentstack)~morethan~0}:choice fizzle all(*|opponentstack)])) forever dontremove text=+1: Scry 1, then draw a card. -- -2: Return target creature to its owner's hand. -- -8: You get an emblem with "Whenever an opponent casts his or her first spell each turn, counter that spell." @@ -1355,7 +1355,7 @@ subtype=Karn name=Kasmina, Enigmatic Mentor auto=counter(0/0,5,loyalty) auto=@targeted(*[creature;planeswalker]|myBattlefield) from(*[instant;sorcery]|opponentzones):choice name(This spell costs 2 more) name(This spell costs 2 more) target(*[instant;sorcery]|opponentzones) transforms((,newability[pay[[{2}]] name(pay 2 mana) donothing?fizzle])) oneshot -auto={C(0/0,-2,Loyalty)}:name(-2: Create a 2/2 Wizard, draw and discard a card) token(Wizard,Creature Wizard,2/2,blue) && ability$!name(Draw a card) draw:1!$ controller && ability$!name(discard a card) notatarget(*|myhand) reject!$ conroller +auto={C(0/0,-2,Loyalty)}:name(-2: Create a 2/2 Wizard, draw and discard a card) token(Wizard,Creature Wizard,2/2,blue) && ability$!name(Draw a card) draw:1!$ controller && ability$!name(discard a card) notatarget(*|myhand) reject!$ controller text=Spells your opponents cast that target a creature or planeswalker you control cost {2} more to cast. -- −2: Create a 2/2 blue Wizard creature token. Draw a card, then discard a card. mana={3}{U} type=Legendary Planeswalker @@ -1385,7 +1385,7 @@ subtype=Kaya [card] name=Kaya, Orzhov Usurper auto=counter(0/0,3,loyalty) -auto={C(0/0,1,Loyalty)}:name(+1: Exile two single cards in graveyard) moveTo(exile) target(*|graveyard) && ability$!name(Gain life) if type(creature[fresh]|exile)~morethan~0 then life:2!$ conroller +auto={C(0/0,1,Loyalty)}:name(+1: Exile two single cards in graveyard) moveTo(exile) target(*|graveyard) && ability$!name(Gain life) if type(creature[fresh]|exile)~morethan~0 then life:2!$ controller auto={C(0/0,-1,Loyalty)}:name(-1: Exile nonland permanent wit mana cost 1 or less) moveTo(exile) target(*[-land;manacost<=1|battlefield]) auto={C(0/0,-5,Loyalty)}:name(-5: Deal damage equal to exile) damage:type:*:opponentExile opponent && life:type:*:opponentExile controller text=+1: Exile up to two target cards from a single graveyard. You gain 2 life if at least one creature card was exiled this way. -- −1: Exile target nonland permanent with converted mana cost 1 or less. -- −5: Kaya, Orzhov Usurper deals damage to target player equal to the number of cards that player owns in exile and you gain that much life. @@ -1565,7 +1565,7 @@ name=Liliana, the Necromancer auto=counter(0/0,4,Loyalty) auto={C(0/0,1,Loyalty)}:name(+1: Target player loses 2 life) target(player) life:-2 targetedplayer auto={C(0/0,-1,Loyalty)}:name(-1: Return target creature from graveyard) moveTo(myHand) target(creature|myGraveyard) -auto={C(0/0,-7,Loyalty)}:name(-7: Destroy up to two and reanimate also two) destroy target(creature) && ability$!name(Reanimate) moveTo(myBattlefield) target(creature|graveyard)!$ conroller +auto={C(0/0,-7,Loyalty)}:name(-7: Destroy up to two and reanimate also two) destroy target(creature) && ability$!name(Reanimate) moveTo(myBattlefield) target(creature|graveyard)!$ controller text=+1: Target player loses 2 life. -- −1: Return target creature card from your graveyard to your hand. -- −7: Destroy up to two target creatures. Put up to two creature cards from graveyards onto the battlefield under your control. mana={3}{B}{B} type=Legendary Planeswalker @@ -1574,7 +1574,7 @@ subtype=Liliana [card] name=Liliana, Untouched by Death auto=counter(0/0,4,loyalty) -auto={C(0/0,1,Loyalty)}:name(+1: Put the top three cards of your library...) ability$!name(Damage opponent) if type(zombie[zpos<=3]|myLibrary)~morethan~0 then life:-2 opponent!$ conroller && ability$!name(Gain life) if type(zombie[zpos<=3]|myLibrary)~morethan~0 then life:2 controller!$ conroller && ability$!name(Put in graveyard) deplete:3 controller!$ conroller +auto={C(0/0,1,Loyalty)}:name(+1: Put the top three cards of your library...) ability$!name(Damage opponent) if type(zombie[zpos<=3]|myLibrary)~morethan~0 then life:-2 opponent!$ controller && ability$!name(Gain life) if type(zombie[zpos<=3]|myLibrary)~morethan~0 then life:2 controller!$ controller && ability$!name(Put in graveyard) deplete:3 controller!$ controller auto={C(0/0,-2,Loyalty)}:name(-2: Target creature gets -X/-X until end...) target(creature) foreach(zombie) -1/-1 auto={C(0/0,-3,Loyalty)}:name(-3: Yoy may cast Zombie cards...) all(creature[zombie]|myGraveyard) CanPlayFromGraveyard text=+1: Put the top three cards of your library into your graveyard. If at least one of them is a Zombie card, each opponent loses 2 life and you gain 2 life. -- -2: Target creature gets -X/-X until end of turn, where X is the number of Zombies you control. -- -3: You may cast Zombie cards from your graveyard this turn. @@ -1610,7 +1610,7 @@ subtype=Liliana name=Lord Windgrace abilities=canbecommander auto=counter(0/0,5,Loyalty) -auto={C(0/0,2,Loyalty)}:name(+2: Discard and Draw) draw:1 controller && ability$!name(Choose one) choice name(Discard land) reject notatarget(*[land]|myhand) && draw:1 conroller _ choice name(Discard non-land) reject notatarget(*[-land]|myhand)!$ controller +auto={C(0/0,2,Loyalty)}:name(+2: Discard and Draw) draw:1 controller && ability$!name(Choose one) choice name(Discard land) reject notatarget(*[land]|myhand) && draw:1 controller _ choice name(Discard non-land) reject notatarget(*[-land]|myhand)!$ controller auto={C(0/0,-3,Loyalty)}:name(-3: Return up to two lands from graveyard) moveTo(myBattlefield) target(*[land]|myGraveyard) auto={C(0/0,-11,Loyalty)}:name(-11: Destroy up to six and create six 2/2 Cat) destroy target(*[-land]) && token(Cat,Creature Cat,2/2,green,forestwalk)*6 text=+2: Discard a card, then draw a card. If a land card is discarded this way, draw an additional card. -- −3: Return up to two target land cards from your graveyard to the battlefield. -- −11: Destroy up to six target nonland permanents, then create six 2/2 green Cat Warrior creature tokens with forestwalk. -- Lord Windgrace can be your commander. @@ -1656,7 +1656,7 @@ name=Mu Yanling, Sky Dancer auto=counter(0/0,2,loyalty) auto={C(0/0,2,Loyalty)}:name(+2: Target creature gets +2/+0 and Flying) target(creature) 2/0 && -flying ueot auto={C(0/0,-3,Loyalty)}:name(-3: Create an Creature Elemental Bird 4/4 blue with flying) create(Elemental Bird:Creature Elemental Bird:4/4:blue:flying) -auto={C(0/0,-8,Loyalty)}:name(-8: Emblem: All islands have: Draw a card) all(island|mybattlefield) transforms((,newability[{T}:draw:1 conroller])) forever dontremove +auto={C(0/0,-8,Loyalty)}:name(-8: Emblem: All islands have: Draw a card) all(island|mybattlefield) transforms((,newability[{T}:draw:1 controller])) forever dontremove text=+2: Until your next turn, up to one target creature gets -2/-0 and loses flying. -- -3: Create a 4/4 blue Elemental Bird creature token with flying. -- -8: You get an emblem with "Islands you control have ‘ {T}: Draw a card.'" mana={1}{U}{U} type=Legendary Planeswalker @@ -2010,7 +2010,7 @@ name=Ral, Izzet Viceroy auto=counter(0/0,4,loyalty) aicode=activate transforms((,newability[choice all(*[zpos=2]|mylibrary) moveto(myhand) and!(deplete:1)!],newability[choice all(*[zpos=1]|mylibrary) moveto(myhand) and!(deplete:1)!])) ueot auto={C(0/0,1,Loyalty)}:name(+1: Look the top two, put one in hand other graveyard) name(look) reveal:2 optionone name(Get a card) target(<1>*|reveal) moveto(myhand) optiononeend optiontwo all(*|reveal) moveto(mygraveyard) optiontwoend revealend -auto={C(0/0,-3,Loyalty)}:name(-3: Deals damage for each instant and sorcery) damage:type:*[instant;sorcery]:myExile target(creature) && ability$!name(Damage) damage:type:*[instant;sorcery]:myGraveyard targete(creature)!$ conroller +auto={C(0/0,-3,Loyalty)}:name(-3: Deals damage for each instant and sorcery) damage:type:*[instant;sorcery]:myExile target(creature) && ability$!name(Damage) damage:type:*[instant;sorcery]:myGraveyard targete(creature)!$ controller auto={C(0/0,-8,Loyalty)}:name(-8: Emblem: "Whenever cast spell, deals 4 damage, draw two cards") emblem transforms((,newability[@movedTo(*[instant;sorcery]|myStack):draw:2 controller && damage:4 target(player,creature,planeswalker)])) forever dontremove text=+1: Look at the top two cards of your library. Put one of them into your hand and the other into your graveyard. -- −3: Ral, Izzet Viceroy deals damage to target creature equal to the total number of instant and sorcery cards you own in exile and in your graveyard. -- −8: You get an emblem with “Whenever you cast an instant or sorcery spell, this emblem deals 4 damage to any target and you draw two cards.” mana={3}{U}{R} @@ -2112,7 +2112,7 @@ subtype=Samut name=Samut, Tyrant Smasher auto=counter(0/0,5,loyalty) auto=lord(other creature|myBattlefield) haste -auto={C(0/0,-1,Loyalty)}:name(-1: +2/+1, haste and scry 1) target(creature) 2/1 && haste ueot && _SCRY_(1) +auto={C(0/0,-1,Loyalty)}:name(-1: Creature gains +2/+1, haste and scry 1) target(creature) transforms((,newability[2/1],newability[haste])) ueot && _SCRY_(1) text=Creatures you control have haste. -- -1: Target creature gets +2/+1 and gains haste until end of turn. Scry 1. mana={2}{RG}{RG} type=Legendary Planeswalker diff --git a/projects/mtg/bin/Res/sets/primitives/unsupported.txt b/projects/mtg/bin/Res/sets/primitives/unsupported.txt index 6021a2491..b23bc8a81 100644 --- a/projects/mtg/bin/Res/sets/primitives/unsupported.txt +++ b/projects/mtg/bin/Res/sets/primitives/unsupported.txt @@ -3323,16 +3323,6 @@ type=Enchantment subtype=Aura [/card] [card] -name=Eligeth, Crossroads Augur -abilities=flying,partner -text=Flying -- If you would scry a number of cards, draw that many cards instead. -- Partner (You can have two commanders if both have partner.) -mana={4}{U}{U} -type=Legendary Creature -subtype=Sphinx -power=5 -toughness=6 -[/card] -[card] name=Elite Arcanist text=When Elite Arcanist enters the battlefield, you may exile an instant card from your hand. -- {X}, {T}: Copy the exiled card. You may cast the copy without paying its mana cost. X is the converted mana cost of the exiled card. mana={3}{U} @@ -8809,12 +8799,6 @@ mana={4} type=Artifact [/card] [card] -name=Peregrination -text=Search your library for up to two basic land cards, reveal those cards, and put one onto the battlefield tapped and the other into your hand. Shuffle your library, then scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) -mana={3}{G} -type=Sorcery -[/card] -[card] name=Perplex text=Counter target spell unless its controller discards his or her hand. -- Transmute {1}{U}{B} ({1}{U}{B}, Discard this card: Search your library for a card with the same converted mana cost as this card, reveal it, and put it into your hand. Then shuffle your library. Transmute only as a sorcery.) mana={1}{U}{B} diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index f51f08ef8..423d281e4 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -718,6 +718,8 @@ public: return 0; if (!tc->canTarget(e->card)) return 0; triggeredTurn = game->turn; + if(source) + source->scryedCards = e->card->scryedCards; return 1; } diff --git a/projects/mtg/include/MTGCardInstance.h b/projects/mtg/include/MTGCardInstance.h index 7e49b2115..b76da487e 100644 --- a/projects/mtg/include/MTGCardInstance.h +++ b/projects/mtg/include/MTGCardInstance.h @@ -117,6 +117,7 @@ public: int lastFlipResult; int dieSide; int lastRollResult; + int scryedCards; int stillInUse(); int didattacked; diff --git a/projects/mtg/include/MTGDefinitions.h b/projects/mtg/include/MTGDefinitions.h index 882c6443b..d686f9b5f 100644 --- a/projects/mtg/include/MTGDefinitions.h +++ b/projects/mtg/include/MTGDefinitions.h @@ -302,7 +302,8 @@ class Constants ANYTYPEOFMANAABILITY = 175, BOAST = 176, TWOBOAST = 177, - NB_BASIC_ABILITIES = 178, + REPLACESCRY = 178, + NB_BASIC_ABILITIES = 179, RARITY_S = 'S', //Special Rarity RARITY_M = 'M', //Mythics diff --git a/projects/mtg/src/AIPlayerBaka.cpp b/projects/mtg/src/AIPlayerBaka.cpp index 080b12c91..0b010ef10 100644 --- a/projects/mtg/src/AIPlayerBaka.cpp +++ b/projects/mtg/src/AIPlayerBaka.cpp @@ -652,16 +652,26 @@ int OrderedAIAction::getEfficiency() if(grA->source->getAICustomCode().size() && grA->source->alias != 185709)//Sphinx of Jwar Isle so the ai will ignore it { //efficiency = 45 + (owner->getRandomGenerator()->random() % 50); - AbilityFactory af(g); MTGAbility * parsedAICC = af.parseMagicLine(cReplaceString(grA->source->getAICustomCode(),"activate",""),0,NULL,grA->source); efficiency = getRevealedEfficiency(parsedAICC); SAFE_DELETE(parsedAICC); - } else // this is why the AI never chooses any card at all? reveal is used to get cards so it should be at better value efficiency = 60; } + else if (GenericScryAbility * grA = dynamic_cast(a)) + { + if(grA->source->getAICustomCode().size()) + { + AbilityFactory af(g); + MTGAbility * parsedAICC = af.parseMagicLine(cReplaceString(grA->source->getAICustomCode(),"activate",""),0,NULL,grA->source); + efficiency = getRevealedEfficiency(parsedAICC); + SAFE_DELETE(parsedAICC); + } + else // this is why the AI never chooses any card at all? scry is used to get cards so it should be at better value + efficiency = 60; + } //At this point the "basic" efficiency is computed, we further tweak it depending on general decisions, independent of theAbility type MayAbility * may = dynamic_cast(ability); diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index adedf5b9a..09ec97158 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -56,15 +56,15 @@ int GenericRevealAbility::resolve() { if(source->lastController->isAI() && source->getAICustomCode().size()) { - string abi = source->getAICustomCode(); - std::transform(abi.begin(), abi.end(), abi.begin(), ::tolower);//fix crash - AbilityFactory af(game); - MTGAbility * a3 = af.parseMagicLine(abi, this->GetId(), NULL, source); - a3->oneShot = 1; - a3->canBeInterrupted = false; - a3->resolve(); - SAFE_DELETE(a3); - return 1; + string abi = source->getAICustomCode(); + std::transform(abi.begin(), abi.end(), abi.begin(), ::tolower);//fix crash + AbilityFactory af(game); + MTGAbility * a3 = af.parseMagicLine(abi, this->GetId(), NULL, source); + a3->oneShot = 1; + a3->canBeInterrupted = false; + a3->resolve(); + SAFE_DELETE(a3); + return 1; } MTGAbility * ability = NEW MTGRevealingCards(game, this->GetId(), source, howMany); ability->addToGame(); @@ -580,7 +580,7 @@ MTGScryCards::MTGScryCards(GameObserver* observer, int _id, MTGCardInstance * ca delayed = coreAbility.find("delayed") != string::npos; dontRevealAfter = coreAbility.find("dontshow") != string::npos; if(dontRevealAfter) - revealTopAmount = 0; + revealTopAmount = 0; vectorsecond = parseBetween(coreAbility, "scrycore ", " scrycoreend"); if (second.size()) { @@ -757,12 +757,23 @@ bool MTGScryCards::CheckUserInput(JButton key) source->getObserver()->mLayers->stackLayer()->Remove(abilityFirst); game->removeObserver(abilityFirst); if (!this->source->controller()->isAI()) - game->Update(0); + game->Update(0); if (zone->cards.size()) { initDisplay(revealTopAmount); abilitySecond = contructAbility(abilityTwo); game->addObserver(abilitySecond); + if (revealTopAmount == 0 && dontRevealAfter && delayed) // Execute delayed action even if dontshow option is active. + { + MTGAbility * delayedA = contructAbility(delayedAbilityString); + if (delayedA->oneShot) + { + delayedA->resolve(); + SAFE_DELETE(delayedA); + } + else + delayedA->addToGame(); + } } } else if (tc->source) @@ -784,7 +795,7 @@ bool MTGScryCards::CheckUserInput(JButton key) source->getObserver()->mLayers->stackLayer()->Remove(abilityFirst); game->removeObserver(abilityFirst); if (!this->source->controller()->isAI()) - game->Update(1); + game->Update(1); if (zone->cards.size() || (revealDisplay && !zone->cards.size())) { @@ -792,19 +803,17 @@ bool MTGScryCards::CheckUserInput(JButton key) abilitySecond = contructAbility(abilityTwo); game->addObserver(abilitySecond); if(revealTopAmount == 0 && dontRevealAfter && delayed) + { + MTGAbility * delayedA = contructAbility(delayedAbilityString); + if (delayedA->oneShot) { - MTGAbility * delayedA = contructAbility(delayedAbilityString); - if (delayedA->oneShot) - { - delayedA->resolve(); - SAFE_DELETE(delayedA); - } - else - delayedA->addToGame(); - + delayedA->resolve(); + SAFE_DELETE(delayedA); } + else + delayedA->addToGame(); + } } - } if (!tc && abilitySecond && abilitySecond->testDestroy()) { @@ -833,7 +842,6 @@ bool MTGScryCards::CheckUserInput(JButton key) } else delayedA->addToGame(); - } } } @@ -890,8 +898,31 @@ GenericScryAbility::GenericScryAbility(GameObserver* observer, int id, MTGCardIn int GenericScryAbility::resolve() { - MTGAbility * ability = NEW MTGScryCards(game, this->GetId(), source, howMany); - ability->addToGame(); + bool replaceScry = false; + for(int i = 0; i < source->lastController->game->battlefield->nb_cards; i ++){ + if(source->lastController->game->battlefield->cards[i]->has(Constants::REPLACESCRY)) + replaceScry = true; + } + if(!replaceScry && source->lastController->isAI() && source->getAICustomCode().size()) + { + string abi = source->getAICustomCode(); + std::transform(abi.begin(), abi.end(), abi.begin(), ::tolower);//fix crash + AbilityFactory af(game); + MTGAbility * a3 = af.parseMagicLine(abi, this->GetId(), NULL, source); + a3->oneShot = 1; + a3->canBeInterrupted = false; + a3->resolve(); + SAFE_DELETE(a3); + } else if(!replaceScry) { + MTGAbility * ability = NEW MTGScryCards(game, this->GetId(), source, howMany); + ability->addToGame(); + } + string number = "0"; + vector amount = parseBetween(howMany, "", " "); + if (amount.size()) + number = amount[1]; + WParsedInt nbCardP(number, NULL, source); + source->scryedCards = nbCardP.getValue(); WEvent * e = NEW WEventCardScryed(source); game->receiveEvent(e); return 1; diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index 91d33ef02..83c45f1d1 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -852,10 +852,9 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe { vectorgetPaid = parseBetween(restriction[i].c_str(),"paid(",")"); string paid = getPaid[1]; - for (size_t j = 0; j < sizeof(kAlternateCostIds)/sizeof(kAlternateCostIds[0]); ++j) { - string keyword = kAlternateCostKeywords[j]; + string keyword = kAlternateCostKeywords[j]; if (paid.find(keyword) != string::npos) { if (!(card->alternateCostPaid[j] > 0 )) @@ -864,8 +863,10 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe } } } - } + check = restriction[i].find("never"); + if(check != string::npos) + return 0; } return 1; } diff --git a/projects/mtg/src/MTGCardInstance.cpp b/projects/mtg/src/MTGCardInstance.cpp index ff7d8589f..b16765a59 100644 --- a/projects/mtg/src/MTGCardInstance.cpp +++ b/projects/mtg/src/MTGCardInstance.cpp @@ -266,6 +266,7 @@ void MTGCardInstance::initMTGCI() lastFlipResult = -1; dieSide = 0; lastRollResult = 0; + scryedCards = 0; isAttacking = NULL; storedCard = NULL; storedSourceCard = NULL; diff --git a/projects/mtg/src/MTGDefinitions.cpp b/projects/mtg/src/MTGDefinitions.cpp index 3f2cc2709..764dd2f4f 100644 --- a/projects/mtg/src/MTGDefinitions.cpp +++ b/projects/mtg/src/MTGDefinitions.cpp @@ -208,7 +208,8 @@ const char* Constants::MTGBasicAbilities[] = { "foretell", //It has foretell cost "anytypeofmanaability", //It allows to spend mana as it were of any color to activate abilities. "boast", //It has boast ability - "twoboast" //It has boast twice ability (e.g. Birgi, God of Storytelling) + "twoboast", //It has boast twice ability (e.g. Birgi, God of Storytelling) + "replacescry" //It has scry replacement ability }; map Constants::MTGBasicAbilitiesMap; diff --git a/projects/mtg/src/WParsedInt.cpp b/projects/mtg/src/WParsedInt.cpp index 706edcfdc..8400d234d 100644 --- a/projects/mtg/src/WParsedInt.cpp +++ b/projects/mtg/src/WParsedInt.cpp @@ -1001,6 +1001,10 @@ void WParsedInt::init(string s, Spell * spell, MTGCardInstance * card) else intValue = card->revealedLast->getManaCost()->getConvertedCost(); } + else if (s == "scryedcards")//returns how many card have been scryed from current card + { + intValue = card->scryedCards; + } else if(!intValue)//found nothing, try parsing a atoi { intValue = atoi(s.c_str());