From 4e4108f547c36ef2ba773aa8532a3110ee68c2d6 Mon Sep 17 00:00:00 2001 From: Eduardo MG Date: Sat, 6 Jul 2024 17:36:58 -0600 Subject: [PATCH] Bug Fixes, code cleanup, macros substitutions for tokens Adding colorless to a token is redundant since by default is colorless. "may pay" is redundant when the cost is mana, it's necessary when the cost is life. Acolyte of Affliction Ajani, Strength Of The Pride Shouldn't Be Double Triggers Akiri, Fearless Voyager Arena Rector Arrogant Poet Artificer's Hex just falls off, removed Body Snatcher When You Have No Creatures In Hand Bump In The Night Cacophony Scamp Captain Eberhart Chandra, Hope's Beacon Deem Worthy Desecrate Reality Destructive Tampering Drake Haven Dredge The Mire Explosive Welcome Fungal Rebirth Giver of Runes Glissa's Scorn Gurgling Anointer Haunted Angel Hungry Flames Hypnotic Cloud Inniaz, the Gale Force Jukai Naturalist Lord Windgrace Nature's Cloak Nature's Spiral Rashmi, Eternities Crafter Rohgahh, Kher Keep Overlord So Shiny Sparktongue Dragon Sprouting Goblin missing a ) Temple Thief The Grey Havens The Mending of Dominaria was shuffling itself Tolarian Contempt, have to misspell "rejection" on the counter name Two-Handed Axe // Sweeping Cleave Urborg Panther Urza's Sylex Victory Chimes Vraska, Swarm's Eminence Warmonger --- .../mtg/bin/Res/sets/primitives/_macros.txt | 22 +- .../bin/Res/sets/primitives/borderline.txt | 365 ++++++++---------- projects/mtg/bin/Res/sets/primitives/mtg.txt | 104 +++-- .../bin/Res/sets/primitives/planeswalkers.txt | 12 +- projects/mtg/src/Rules.cpp | 6 +- 5 files changed, 234 insertions(+), 275 deletions(-) diff --git a/projects/mtg/bin/Res/sets/primitives/_macros.txt b/projects/mtg/bin/Res/sets/primitives/_macros.txt index 32f49644b..0b03021bb 100644 --- a/projects/mtg/bin/Res/sets/primitives/_macros.txt +++ b/projects/mtg/bin/Res/sets/primitives/_macros.txt @@ -76,12 +76,12 @@ #AUTO_DEFINE _AMASSSLIVER5_ if type(army|mybattlefield)~morethan~0 then name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Sliver,newability[counter(1/1.5)])) forever else name(Create Sliver Army) token(Sliver Army) and!( name(Put 1/1 counters) counter(1/1.5) notatarget(army|myBattlefield) )! # Scry, Evergreen -#AUTO_DEFINE _SCRY_($c) scry:$c scrycore delayed dontshow donothing scrycoreend scryend -#AUTO_DEFINE _SCRY1_ scry:1 scrycore delayed dontshow donothing scrycoreend scryend -#AUTO_DEFINE _SCRY2_ scry:2 scrycore delayed dontshow donothing scrycoreend scryend -#AUTO_DEFINE _SCRY3_ scry:3 scrycore delayed dontshow donothing scrycoreend scryend -#AUTO_DEFINE _SCRY4_ scry:4 scrycore delayed dontshow donothing scrycoreend scryend -#AUTO_DEFINE _SCRY5_ scry:5 scrycore delayed dontshow donothing scrycoreend scryend +#AUTO_DEFINE _SCRY_($c) scry:$c scrycore delayed dontshow donothing scrycoreend scryend controller +#AUTO_DEFINE _SCRY1_ scry:1 scrycore delayed dontshow donothing scrycoreend scryend controller +#AUTO_DEFINE _SCRY2_ scry:2 scrycore delayed dontshow donothing scrycoreend scryend controller +#AUTO_DEFINE _SCRY3_ scry:3 scrycore delayed dontshow donothing scrycoreend scryend controller +#AUTO_DEFINE _SCRY4_ scry:4 scrycore delayed dontshow donothing scrycoreend scryend controller +#AUTO_DEFINE _SCRY5_ scry:5 scrycore delayed dontshow donothing scrycoreend scryend controller # Fabricate #AUTO_DEFINE _FABRICATE_($c) transforms((,newability[choice counter(1/1.$c)],newability[choice create(Servo:Artifact Creature Servo:1/1)*$c])) ueot @@ -102,13 +102,13 @@ #AUTO_DEFINE _CHAMPION_($Word) aslongas(other $word|myBattlefield) choice notAtarget(other $word|myBattlefield) (blink)forsrc oneshot # Metalcraft, not implemented -#AUTO_DEFINE _METALCRAFT_ aslongas(artifact|mybattlefield) >2 +#AUTO_DEFINE _METALCRAFT_ if type(artifact|mybattlefield)~morethan~2 then # Echo, not implemented #AUTO_DEFINE _ECHO_($cost) $cost[{$c};next upkeep] sacrifice # Threshold, not implemented -#AUTO_DEFINE _THRESHOLD_ if type(*|mygraveyard)~morethan~6 +#AUTO_DEFINE _THRESHOLD_ if type(*|mygraveyard)~morethan~6 then # Splice onto Arcane, not implemented #AUTO_DEFINE _SPLICEARCANE_ movedTo(*[Arcane]|myStack):may castcard(copied noevent) target(*[Arcane]|myHand) @@ -128,9 +128,6 @@ # Monstrosity, not implemented #AUTO_DEFINE _MONSTROSITY_($cost,$c) name(Monstrosity) this(cantargetcard(*[-monstrous]) {$cost}:becomes(monstrous) forever && counter(1/1.$c) -# Outlast, not implemented -#AUTO_DEFINE _OUTLAST_($cost) {$cost}{$cost}:counter(1/1) all(this) asSorcery - # Investigate token, Shadows over Innistrad SOI #AUTO_DEFINE _INVESTIGATE_ token(Clue) @@ -167,9 +164,6 @@ #AUTO_DEFINE _SURVEIL3_ name(Surveil 3) reveal:psurveiloffsetplus3plusend optionone name(put in graveyard) target(*|reveal) moveto(ownergraveyard) optiononeend optiontwo name(put in library) target(*|reveal) moveto(ownerlibrary) optiontwoend afterrevealed surveil afterrevealedend revealend -# Undergrowth, not implemented -#AUTO_DEFINE _UNDERGROWTH_ foreach(creature|myGraveyard) - # Afterlife #AUTO_DEFINE _AFTERLIFETOKEN_ create(Spirit:Creature Spirit:1/1:white:black:flying) diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index 187ec5724..b2d6417d3 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -390,7 +390,7 @@ toughness=4 [/card] [card] name=Acolyte of Affliction -auto=deplete:2 controller && may moveto(ownerHand) target(*[-sorcery;-instant]|myGraveyard) oneshot +auto=deplete:2 controller && transforms((,newability[may name(Return a permanent) target(*[-instant;-sorcery]|mygraveyard) moveto(ownerHand)])) oneshot text=When Acolyte of Affliction enters the battlefield, put the top two cards of your library into your graveyard, then you may return a permanent card from your graveyard to your hand. mana={2}{B}{G} type=Creature @@ -1348,7 +1348,7 @@ toughness=4 [/card] [card] name=Akiri, Fearless Voyager -auto=@combat(attacking) source(creature[geared]|myBattlefield):draw:1 controller +auto=@combat(attacking) source(creature[geared]|myBattlefield) turnLimited:draw:1 controller auto={W}:name(Select target equipment and then unattach) name(Select target equipment and then unattach) target(equipment|myBattlefield) transforms((,newability[ueot teach(creature) {unattach} restriction{once}:indestructible],newability[teach(creature) tap(noevent)])) ueot text=Whenever you attack a player with one or more equipped creatures, draw a card. -- {W}: You may unattach an Equipment from a creature you control. If you do, tap that creature and it gains indestructible until end of turn. mana={1}{R}{W} @@ -2472,7 +2472,7 @@ toughness=8 [card] name=Ancient Stone Idol abilities=flash,trample,affinityattackingcreatures -auto=_DIES_create(construct artifact:creature construct artifact:6/12:colorless:trample) +auto=_DIES_create(construct artifact:creature construct artifact:6/12:trample) text=Flash -- This spell costs {1} less to cast for each attacking creature. -- Trample -- When Ancient Stone Idol dies, create a 6/12 colorless Construct artifact creature token with trample. mana={10} type=Artifact Creature @@ -4371,7 +4371,8 @@ toughness=1 [/card] [card] name=Arena Rector -auto=_DIES_may all(trigger[to]) moveto(exile) and! moveTo(myBattlefield) target(planeswalker|myLibrary)! +aicode=activate moveTo(myBattlefield) target(planeswalker|myLibrary) +auto=_DIES_may all(trigger[to]) moveto(exile) and!( name(search planeswalker) reveal:plibrarycount optionone name(choose card) target(planeswalker|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(activate castcard(putinplay))! afterrevealedend revealend )! text=When Arena Rector dies, you may exile it. If you do, search your library for a planeswalker card, put it onto the battlefield, then shuffle your library. mana={3}{W} type=Creature @@ -4752,7 +4753,7 @@ toughness=2 [/card] [card] name=Arrogant Poet -auto=_ATTACKING_pay({L:2}) name(Arrogant poet gains flying) flying ueot +auto=_ATTACKING_pay({L:2}) all(this) flying ueot text=Whenever Arrogant Poet attacks, you may pay 2 life. If you do, it gains flying until end of turn. mana={1}{B} type=Creature @@ -4928,7 +4929,7 @@ toughness=1 [card] name=Aryel, Knight of Windgrace abilities=vigilance -auto={2}{W}{T}:create(knight:creature knight:2/2:white:vigilance) +auto={2}{W}{T}:_KNIGHTTOKEN_ auto={B}{T}{T(knight|myBattlefield)}:name(creature with power 1) name destroy target(creature[power<=1]) auto={B}{T}{T(knight|myBattlefield)}{T(knight|myBattlefield)}:name(creature with power 2) destroy target(creature[power<=2]) auto={B}{T}{T(knight|myBattlefield)}{T(knight|myBattlefield)}{T(knight|myBattlefield)}:name(creature with power 3) destroy target(creature[power<=3]) @@ -5219,16 +5220,6 @@ mana={U} type=Instant [/card] [card] -name=Assassin Vra -abilities=deathtouch -auto=@damaged(planeswalker) from(this):all(trigger[to]) destroy -type=Creature -subtype=Assassin -power=1 -toughness=1 -color=black -[/card] -[card] name=Assassin's Ink target=creature,planeswalker anyzone=this(variable{type:artifact:mybattlefield}>0)while altercost(colorless,-1) @@ -7580,8 +7571,8 @@ name=Basri's Lieutenant abilities=vigilance auto=protection from(*[multicolor]) auto=counter(1/1) target(creature|myBattlefield) -auto=_DIES_this(counter{1/1.1}>=1) create(knight:creature knight:2/2:white:vigilance) -auto=@movedTo(other creature[counter{1/1}]|myGraveyard) from(mybattlefield):create(knight:creature knight:2/2:white:vigilance) +auto=_DIES_this(counter{1/1.1}>=1) _KNIGHTTOKEN_ +auto=@movedTo(other creature[counter{1/1}]|myGraveyard) from(mybattlefield):_KNIGHTTOKEN_ text=Vigilance, protection from multicolored -- When Basri's Lieutenant enters the battlefield, put a +1/+1 counter on target creature you control. -- Whenever Basri's Lieutenant or another creature you control dies, if it had a +1/+1 counter on it, create a 2/2 white Knight creature token with vigilance. mana={3}{W} type=Creature @@ -8891,8 +8882,8 @@ toughness=4 [/card] [card] name=Biogenic Ooze -auto=create(Ooze:creature Ooze:2/2:green:) -auto={1}{G}{G}{G}:create(Ooze:creature Ooze:2/2:green:) +auto=create(Ooze:creature Ooze:2/2:green) +auto={1}{G}{G}{G}:create(Ooze:creature Ooze:2/2:green) auto=@each my endofturn:all(Ooze|mybattlefield) counter(1/1) text=When Biogenic Ooze enters the battlefield, create a 2/2 green Ooze creature token. -- At the beginning of your end step, put a +1/+1 counter on each Ooze you control. -- {1}{G}{G}{G}: Create a 2/2 green Ooze creature token. mana={3}{G}{G} @@ -9535,7 +9526,7 @@ name=Blaring Recruiter abilities=partner partner=Blaring Captain auto=_PARTNER_ -auto={2}{W}:create(warrior:creature warrior:1/1:white:) +auto={2}{W}:create(warrior:creature warrior:1/1:white) text=Partner with Blaring Captain (When this creature enters the battlefield, target player may put Blaring Captain into their hand from their library, then shuffle.) -- {2}{W}: Create a 1/1 white Warrior creature token. mana={3}{W} type=Creature @@ -9684,7 +9675,7 @@ type=Instant [/card] [card] name=Bleeding Edge -auto=may -2/-2 target(creature) +auto=ability$! may target(creature) -2/-2 ueot !$ controller auto=_AMASSZOMBIE2_ text=Up to one target creature gets -2/-2 until end of turn. Amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) mana={1}{B}{B} @@ -11410,7 +11401,7 @@ toughness=1 [/card] [card] name=Boneclad Necromancer -auto=may moveTo(Exile) target(creature|graveyard) && create(zombie:creature zombie:2/2:black) +auto=may moveTo(Exile) target(creature|graveyard) && _ZOMBIETOKEN_ text=When Boneclad Necromancer enters the battlefield, you may exile target creature card from a graveyard. If you do, create a 2/2 black Zombie creature token. mana={3}{B}{B} type=Creature @@ -11503,7 +11494,7 @@ type=Sorcery [card] name=Boneyard Scourge abilities=flying -autograveyard=@movedto(creature[Dragon]|graveyard) from(myBattlefield):may pay({1}{B}):moveTo(myBattlefield) all(this) +autograveyard=@movedto(creature[Dragon]|graveyard) from(myBattlefield):pay({1}{B}):moveTo(myBattlefield) all(this) text=Flying -- Whenever a Dragon you control dies while Boneyard Scourge is in your graveyard, you may pay {1}{B}. If you do, return Boneyard Scourge from your graveyard to the battlefield. mana={2}{B}{B} type=Creature @@ -13734,7 +13725,7 @@ type=Sorcery name=Cabaretti Charm auto=choice damage:type:creature:myBattlefield target(creature,planeswalker) auto=choice all(creature|myBattlefield) 1/1 && all(creature|mybattlefield) trample -auto=choice create(citizen:creature citizen:1/1:green,white:)*2 +auto=choice create(citizen:creature citizen:1/1:green,white)*2 text=Choose one - -- - Cabaretti Charm deals damage equal to the number of creatures you control to target creature or planeswalker. -- - Creatures you control get +1/+1 and gain trample until end of turn. -- - Create two 1/1 green and white Citizen creature tokens. mana={R}{G}{W} type=Instant @@ -13773,7 +13764,6 @@ toughness=5 [/card] [card] name=Cacophony Scamp -auto={0}:name(Test) _PROLIFERATE_ auto=@combatdamaged(player) from(this):may name(Sacrifice and proliferate) sacrifice and!( _PROLIFERATE_ )! auto=_DIES_name(Damage any target) damage:power target(anytarget) text=Whenever Cacophony Scamp deals combat damage to a player, you may sacrifice it. If you do, proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) -- When Cacophony Scamp dies, it deals damage equal to its power to any target. @@ -14394,7 +14384,7 @@ mana={1}{W} type=Legendary Creature subtype=Human Soldier power=1 -toughness=1 +toughness=2 [/card] [card] name=Captain Lannery Storm @@ -15249,7 +15239,7 @@ toughness=5 [card] name=Cavalier of Thorns abilities=reach -auto=reveal:5 optionone name(Get land) target(land|reveal) moveto(ownerHand) optiononeend optiontwo name(put in grave) all(*|reveal) moveto(mygraveyard) optiontwoend revealend +auto=reveal:5 optionone name(Get land) target(land|reveal) moveto(myBattlefield) optiononeend optiontwo name(put in grave) all(*|reveal) moveto(mygraveyard) optiontwoend revealend auto=_DIES_may all(trigger[to]) moveto(exile) && moveto(mylibrary) target(*|mygraveyard) text=Reach -- When Cavalier of Thorns enters the battlefield, reveal the top five cards of your library. Put a land card from among them onto the battlefield and the rest into your graveyard. -- When Cavalier of Thorns dies, you may exile it. If you do, put another target card from your graveyard on top of your library. mana={2}{G}{G}{G} @@ -18265,7 +18255,7 @@ subtype=Trap name=Code of Constraint target=creature auto=-4/-0 -auto=_ADDENDUM_ freeze else +auto=_ADDENDUM_ freeze auto=draw:1 controller text=Target creature gets -4/-0 until end of turn. -- Draw a card. -- Addendum-If you cast this spell during your main phase, tap that creature and it doesn't untap during its controller's next untap step. mana={2}{U} @@ -20249,7 +20239,7 @@ toughness=2 [/card] [card] name=Courier's Briefcase -auto=create(citizen:creature citizen:1/1:green,white) +auto=create(citizen:creature citizen:1/1:green:white) auto={T}{S}:Add{W} auto={T}{S}:Add{U} auto={T}{S}:Add{B} @@ -20680,7 +20670,7 @@ type=Sorcery [/card] [card] name=Crashing Tide -auto=if type(creature[merfolk]|mybattlefield)~morethan~0 then asflash +auto=if type(*[merfolk]|mybattlefield)~morethan~0 then asflash target=creature auto=moveTo(ownerhand) auto=draw:1 controller @@ -22590,7 +22580,7 @@ toughness=1 [card] name=Darling of the Masses auto=lord(other citizen|myBattlefield) 1/0 -auto=_ATTACKING_create(citizen:creature citizen:1/1:green,white) +auto=_ATTACKING_create(citizen:creature citizen:1/1:green:white) text=Other Citizens you control get +1/+0. -- Whenever Darling of the Masses attacks, create a 1/1 green and white Citizen creature token. mana={2}{G}{W} type=Creature @@ -23390,7 +23380,7 @@ toughness=5 [/card] [card] name=Deathbloom Thallid -auto=_DIES_create(saproling:creature saproling:1/1:green:) +auto=_DIES__SAPROLINGTOKEN_ text=When Deathbloom Thallid dies, create a 1/1 green Saproling creature token. mana={2}{B} type=Creature @@ -23660,7 +23650,7 @@ name=Deem Worthy abilities=cycling target=creature auto=damage:7 -autohand=__CYCLING__({3}{R}) && damage:2 target(creature) +autohand=__CYCLING__({3}{R}) && ability$!may damage:2 target(creature)!$ controller text=Deem Worthy deals 7 damage to target creature. -- Cycling {3}{R} ({3}{R}, Discard this card: Draw a card.) -- When you cycle Deem Worthy, you may have it deal 2 damage to target creature. mana={4}{R} type=Instant @@ -24488,27 +24478,27 @@ type=Enchantment [/card] [card] name=Desecrate Reality -autostack=if type(*[colorless&manacost=0]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 0) name(Exile permanent with mana 0) name(Exile permanent with mana 0) name(Exile permanent with mana 0) target(*[colorless&manacost=0]|opponentbattlefield) moveto(exile) -autostack=if type(*[colorless&manacost=2]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 2) name(Exile permanent with mana 2) name(Exile permanent with mana 2) name(Exile permanent with mana 2) target(*[colorless&manacost=2]|opponentbattlefield) moveto(exile) -autostack=if type(*[colorless&manacost=4]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 4) name(Exile permanent with mana 4) name(Exile permanent with mana 4) name(Exile permanent with mana 4) target(*[colorless&manacost=4]|opponentbattlefield) moveto(exile) -autostack=if type(*[colorless&manacost=6]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 6) name(Exile permanent with mana 6) name(Exile permanent with mana 6) name(Exile permanent with mana 6) target(*[colorless&manacost=6]|opponentbattlefield) moveto(exile) -autostack=if type(*[colorless&manacost=8]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 8) name(Exile permanent with mana 8) name(Exile permanent with mana 8) name(Exile permanent with mana 8) target(*[colorless&manacost=8]|opponentbattlefield) moveto(exile) -autostack=if type(*[colorless&manacost=10]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 10) name(Exile permanent with mana 10) name(Exile permanent with mana 10) name(Exile permanent with mana 10) target(*[colorless&manacost=10]|opponentbattlefield) moveto(exile) -autostack=if type(*[colorless&manacost=12]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 12) name(Exile permanent with mana 12) name(Exile permanent with mana 12) name(Exile permanent with mana 12) target(*[colorless&manacost=12]|opponentbattlefield) moveto(exile) -autostack=if type(*[colorless&manacost=14]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 14) name(Exile permanent with mana 14) name(Exile permanent with mana 14) name(Exile permanent with mana 14) target(*[colorless&manacost=14]|opponentbattlefield) moveto(exile) -autostack=if type(*[colorless&manacost=16]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 16) name(Exile permanent with mana 16) name(Exile permanent with mana 16) name(Exile permanent with mana 16) target(*[colorless&manacost=16]|opponentbattlefield) moveto(exile) -autostack=if type(*[colorless&manacost=18]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 18) name(Exile permanent with mana 18) name(Exile permanent with mana 18) name(Exile permanent with mana 18) target(*[colorless&manacost=18]|opponentbattlefield) moveto(exile) -autostack=if type(*[colorless&manacost>=20]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 20) name(Exile permanent with mana 20) name(Exile permanent with mana 20) name(Exile permanent with mana 20) target(*[colorless&manacost>=20]|opponentbattlefield) moveto(exile) -auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&colorless&manacost=1]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 1) name(Return permanent with mana 1) name(Return permanent with mana 1) name(Return permanent with mana 1) target(*[permanent&colorless&manacost=1]|mygraveyard) moveto(mybattlefield) -auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&colorless&manacost=3]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 3) name(Return permanent with mana 3) name(Return permanent with mana 3) name(Return permanent with mana 3) target(*[permanent&colorless&manacost=3]|mygraveyard) moveto(mybattlefield) -auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&colorless&manacost=5]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 5) name(Return permanent with mana 5) name(Return permanent with mana 5) name(Return permanent with mana 5) target(*[permanent&colorless&manacost=5]|mygraveyard) moveto(mybattlefield) -auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&colorless&manacost=7]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 7) name(Return permanent with mana 7) name(Return permanent with mana 7) name(Return permanent with mana 7) target(*[permanent&colorless&manacost=7]|mygraveyard) moveto(mybattlefield) -auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&colorless&manacost=9]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 9) name(Return permanent with mana 9) name(Return permanent with mana 9) name(Return permanent with mana 9) target(*[permanent&colorless&manacost=9]|mygraveyard) moveto(mybattlefield) -auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&colorless&manacost=11]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 11) name(Return permanent with mana 11) name(Return permanent with mana 11) name(Return permanent with mana 11) target(*[permanent&colorless&manacost=11]|mygraveyard) moveto(mybattlefield) -auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&colorless&manacost=13]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 13) name(Return permanent with mana 13) name(Return permanent with mana 13) name(Return permanent with mana 13) target(*[permanent&colorless&manacost=13]|mygraveyard) moveto(mybattlefield) -auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&colorless&manacost=15]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 15) name(Return permanent with mana 15) name(Return permanent with mana 15) name(Return permanent with mana 15) target(*[permanent&colorless&manacost=15]|mygraveyard) moveto(mybattlefield) -auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&colorless&manacost=17]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 17) name(Return permanent with mana 17) name(Return permanent with mana 17) name(Return permanent with mana 17) target(*[permanent&colorless&manacost=17]|mygraveyard) moveto(mybattlefield) -auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&colorless&manacost>=19]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 19) name(Return permanent with mana 19) name(Return permanent with mana 19) name(Return permanent with mana 19) target(*[permanent&colorless&manacost>=19]|mygraveyard) moveto(mybattlefield) +autostack=if type(*[manacost=0]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 0) name(Exile permanent with mana 0) name(Exile permanent with mana 0) name(Exile permanent with mana 0) target(*[manacost=0]|opponentbattlefield) moveto(exile) +autostack=if type(*[manacost=2]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 2) name(Exile permanent with mana 2) name(Exile permanent with mana 2) name(Exile permanent with mana 2) target(*[manacost=2]|opponentbattlefield) moveto(exile) +autostack=if type(*[manacost=4]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 4) name(Exile permanent with mana 4) name(Exile permanent with mana 4) name(Exile permanent with mana 4) target(*[manacost=4]|opponentbattlefield) moveto(exile) +autostack=if type(*[manacost=6]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 6) name(Exile permanent with mana 6) name(Exile permanent with mana 6) name(Exile permanent with mana 6) target(*[manacost=6]|opponentbattlefield) moveto(exile) +autostack=if type(*[manacost=8]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 8) name(Exile permanent with mana 8) name(Exile permanent with mana 8) name(Exile permanent with mana 8) target(*[manacost=8]|opponentbattlefield) moveto(exile) +autostack=if type(*[manacost=10]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 10) name(Exile permanent with mana 10) name(Exile permanent with mana 10) name(Exile permanent with mana 10) target(*[manacost=10]|opponentbattlefield) moveto(exile) +autostack=if type(*[manacost=12]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 12) name(Exile permanent with mana 12) name(Exile permanent with mana 12) name(Exile permanent with mana 12) target(*[manacost=12]|opponentbattlefield) moveto(exile) +autostack=if type(*[manacost=14]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 14) name(Exile permanent with mana 14) name(Exile permanent with mana 14) name(Exile permanent with mana 14) target(*[manacost=14]|opponentbattlefield) moveto(exile) +autostack=if type(*[manacost=16]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 16) name(Exile permanent with mana 16) name(Exile permanent with mana 16) name(Exile permanent with mana 16) target(*[manacost=16]|opponentbattlefield) moveto(exile) +autostack=if type(*[manacost=18]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 18) name(Exile permanent with mana 18) name(Exile permanent with mana 18) name(Exile permanent with mana 18) target(*[manacost=18]|opponentbattlefield) moveto(exile) +autostack=if type(*[manacost>=20]|opponentbattlefield)~morethan~0 then choice name(Exile permanent with mana 20) name(Exile permanent with mana 20) name(Exile permanent with mana 20) name(Exile permanent with mana 20) target(*[manacost>=20]|opponentbattlefield) moveto(exile) +auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&manacost=1]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 1) name(Return permanent with mana 1) name(Return permanent with mana 1) name(Return permanent with mana 1) target(*[permanent&manacost=1]|mygraveyard) moveto(mybattlefield) +auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&manacost=3]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 3) name(Return permanent with mana 3) name(Return permanent with mana 3) name(Return permanent with mana 3) target(*[permanent&manacost=3]|mygraveyard) moveto(mybattlefield) +auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&manacost=5]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 5) name(Return permanent with mana 5) name(Return permanent with mana 5) name(Return permanent with mana 5) target(*[permanent&manacost=5]|mygraveyard) moveto(mybattlefield) +auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&manacost=7]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 7) name(Return permanent with mana 7) name(Return permanent with mana 7) name(Return permanent with mana 7) target(*[permanent&manacost=7]|mygraveyard) moveto(mybattlefield) +auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&manacost=9]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 9) name(Return permanent with mana 9) name(Return permanent with mana 9) name(Return permanent with mana 9) target(*[permanent&manacost=9]|mygraveyard) moveto(mybattlefield) +auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&manacost=11]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 11) name(Return permanent with mana 11) name(Return permanent with mana 11) name(Return permanent with mana 11) target(*[permanent&manacost=11]|mygraveyard) moveto(mybattlefield) +auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&manacost=13]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 13) name(Return permanent with mana 13) name(Return permanent with mana 13) name(Return permanent with mana 13) target(*[permanent&manacost=13]|mygraveyard) moveto(mybattlefield) +auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&manacost=15]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 15) name(Return permanent with mana 15) name(Return permanent with mana 15) name(Return permanent with mana 15) target(*[permanent&manacost=15]|mygraveyard) moveto(mybattlefield) +auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&manacost=17]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 17) name(Return permanent with mana 17) name(Return permanent with mana 17) name(Return permanent with mana 17) target(*[permanent&manacost=17]|mygraveyard) moveto(mybattlefield) +auto=if casted(this) then if spent({C}{C}{C}) then if type(*[permanent&manacost>=19]|mygraveyard)~morethan~0 then choice name(Return permanent with mana 19) name(Return permanent with mana 19) name(Return permanent with mana 19) name(Return permanent with mana 19) target(*[permanent&manacost>=19]|mygraveyard) moveto(mybattlefield) text=For each opponent, exile up to one target permanent that player controls with an even mana value. (Zero is even.) -- Adamant - If at least three colorless mana was spent to cast this spell, return a permanent card with an odd mana value from your graveyard to the battlefield. mana={7} type=Instant @@ -24759,7 +24749,7 @@ toughness=2 [/card] [card] name=Destructive Tampering -auto=choice name(Destroy target artifact) destroy target(artifact) +auto=choice name(Destroy target artifact) destroy target(artifact) restriction{type(artifact|battlefield)~morethan~0} auto=choice name(Creatures without flying can't block) lord(creature[-flying]) cantblock ueot text=Choose one -- Destroy target artifact. -- Creatures without flying can't block this turn. mana={2}{R} @@ -26961,17 +26951,8 @@ type=Artifact subtype=Equipment [/card] [card] -name=Drake Hav -abilities=flying -type=Creature -subtype=Drake -power=2 -toughness=2 -color=blue -[/card] -[card] name=Drake Haven -auto=@movedto(*|mygraveyard) from(myhand):may pay({1}) token(Drake,creature Drake,blue,2/2,flying) +auto=@movedto(*|mygraveyard) from(myhand):pay({1}) create(drake:creature drake:2/2:blue:flying) text=Whenever you cycle or discard a card, you may pay {1}. If you do, create a 2/2 blue Drake creature token with flying. mana={2}{U} type=Enchantment @@ -27587,8 +27568,7 @@ toughness=4 [/card] [card] name=Dredge the Mire -target=creature|opponentGraveyard -auto=moveTo(myBattlefield) +auto=ability$! notatarget(creature|myGraveyard) moveTo(opponentBattlefield) !$ opponent text=Each opponent chooses a creature card in their graveyard. Put those cards onto the battlefield under your control. mana={3}{B} type=Sorcery @@ -28688,7 +28668,7 @@ toughness=4 [card] name=Dwarven Mine auto=aslongas(other land[mountain]|myBattlefield) tap(noevent) <3 oneshot -auto=aslongas(other land[mountain]|myBattlefield) >2 create(Dwarf:creature Dwarf:1/1:red) once +auto=if type(other land[mountain]|myBattlefield)~morethan~2 then create(Dwarf:creature Dwarf:1/1:red) text={T}: Add {R}. -- Dwarven Mine enters the battlefield tapped unless you control three or more other Mountains. -- When Dwarven Mine enters the battlefield untapped, create a 1/1 red Dwarf creature token. type=Land subtype=Mountain @@ -30306,7 +30286,7 @@ type=Instant name=Emergency Weld target=creature,artifact|mygraveyard auto=moveTo(ownerHand) -auto=create(Soldier:artifact creature Soldier:1/1:colorless) +auto=create(Soldier:artifact creature Soldier:1/1) text=Return target artifact or creature card from your graveyard to your hand. Create a 1/1 colorless Soldier artifact creature token. mana={1}{B} type=Sorcery @@ -30412,7 +30392,7 @@ toughness=2 name=Emperor Mihail II abilities=showfromtoplibrary auto=aslongas(merfolk[zpos=1]|mylibrary) canplayfromlibrarytop >0 -auto=@movedTo(Merfolk|mystack):may pay({1}) && create(merfolk:creature merfolk:1/1:blue) +auto=@movedTo(Merfolk|mystack):pay({1}) && create(merfolk:creature merfolk:1/1:blue) text=You may look at the top card of your library any time. -- You may cast Merfolk spells from the top of your library. -- Whenever you cast a Merfolk spell, you may pay {1}. If you do, create a 1/1 blue Merfolk creature token. mana={1}{U}{U} type=Legendary Creature @@ -31005,7 +30985,7 @@ type=Instant [/card] [card] name=Entreat the Angels -autohand=restriction{miracle} pay[[{X}{W}{W}]] name(Miracle) activate name(Miracle) castcard(restricted) +autohand=restriction{miracle} pay({X}{W}{W}) name(Miracle) activate name(Miracle) castcard(restricted) auto=_ANGELTOKEN_*XX text=Put X 4/4 white Angel creature tokens with flying onto the battlefield. -- Miracle {X}{W}{W} (You may cast this card for its miracle cost when you draw it if it's the first card you drew this turn.) mana={X}{X}{W}{W}{W} @@ -31389,7 +31369,7 @@ toughness=4 [/card] [card] name=Escape Protocol -auto=@cycled(*|myHand):may pay({1}) target(creature,artifact|myBattlefield) moveto(exile) and!(moveto(mybattlefield))! +auto=@cycled(*|myHand):pay({1}) target(creature,artifact|myBattlefield) moveto(exile) and!(moveto(mybattlefield))! text=Whenever you cycle a card, you may pay 1. When you do, exile target artifact or creature you control, then return it to the battlefield under its owner's control. mana={1}{U} type=Enchantment @@ -32622,7 +32602,7 @@ toughness=4 [/card] [card] name=Exhibition Magician -auto=choice create(citizen:creature citizen:1/1:green,white) +auto=choice create(citizen:creature citizen:1/1:green:white) auto=choice token(Treasure) text=When Exhibition Magician enters the battlefield, choose one -- Create a 1/1 green and white Citizen creature token. -- Create a Treasure token. (It's an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") mana={2}{R} @@ -32903,7 +32883,7 @@ name=Explosive Welcome target=anytarget auto=damage:5 auto=target(anytarget) damage:3 -auto=add{R}{R}{R} +auto=add{R}{R}{R} controller text=Explosive Welcome deals 5 damage to any target and 3 damage to any other target. Add {R}{R}{R}. mana={7}{R} type=Instant @@ -34276,7 +34256,7 @@ toughness=3 [card] name=Fathom Fleet Captain abilities=menace -auto=@combat(attacking) source(this) restriction{type(pirate[-token]|mybattlefield)~morethan~0}:may pay({2}) token(Pirate,creature Pirate,2/2,black,menace) +auto=@combat(attacking) source(this) restriction{type(pirate[-token]|mybattlefield)~morethan~0}:pay({2}) token(Pirate,creature Pirate,2/2,black,menace) text=Menace -- Whenever Fathom Fleet Captain attacks, if you control another nontoken Pirate, you may pay {2}. If you do, create a 2/2 black Pirate creature token with menace. mana={1}{B} type=Creature @@ -34640,7 +34620,7 @@ toughness=2 [/card] [card] name=Felidar Retreat -auto=_LANDFALL_name(Choose one) ability$!name(Choose one) choice name(Create a 2/2 Cat) token(Cat Beast)!$ controller _ choice name(Put a +1/+1 counter and vigilance) all(creature|myBattlefield) counter(1/1) && all(creature|myBattlefield) vigilance ueot +auto=_LANDFALL_name(Choose one) name(Choose one) ability$! choice name(Create a 2/2 Cat) token(Cat Beast) _ choice name(Put a +1/+1 counter and vigilance) all(creature|myBattlefield) counter(1/1) && all(creature|myBattlefield) vigilance ueot !$ controller text=Landfall - Whenever a land enters the battlefield under your control, Choose one -- Create a 2/2 white Cat Beast creature token. -- Put a +1/+1 counter on each creature you control. Those creatures gain vigilance until end of turn. mana={3}{W} type=Enchantment @@ -35240,7 +35220,7 @@ type=Enchantment [card] name=Fiery Intervention auto=choice damage:5 target(creature) -auto=choice destroy target(artifact) +auto=choice destroy target(artifact) restriction{type(artifact|battlefield)~morethan~0} text=Choose one -- Fiery Intervention deals 5 damage to target creature. -- Destroy target artifact. mana={4}{R} type=Sorcery @@ -38025,14 +38005,14 @@ type=Sorcery name=Fungal Infection target=creature auto=-1/-1 -auto=create(Saproling:creature Saproling:1/1:green:) +auto=_SAPROLINGTOKEN_ text=Target creature gets -1/-1 until end of turn. Create a 1/1 green Saproling creature token. mana={B} type=Instant [/card] [card] name=Fungal Plots -auto={1}{G}{E(creature|mygraveyard)}:create(saproling:creature saproling:1/1:green:) +auto={1}{G}{E(creature|mygraveyard)}:_SAPROLINGTOKEN_ auto={S(saproling|myBattlefield)}{S(saproling|myBattlefield)}:life:2 && draw:1 text={1}{G}, Exile a creature card from your graveyard: Create a 1/1 green Saproling creature token. -- Sacrifice two Saprolings: You gain 2 life and draw a card. mana={1}{G} @@ -38048,9 +38028,9 @@ type=Land [/card] [card] name=Fungal Rebirth -target=*|myGraveyard +target=*[-instant;-sorcery]|myGraveyard auto=moveto(ownerHand) -auto=token(Saproling Fun)*2 restriction{morbid} +auto=if morbid then _SAPROLINGTOKEN_*2 text=Return target permanent card from your graveyard to your hand. If a creature died this turn, create two 1/1 green Saproling creature tokens. mana={2}{G} type=Instant @@ -38529,7 +38509,7 @@ type=Instant [card] name=Gallant Cavalry abilities=vigilance -auto=create(knight:creature knight:2/2:white:vigilance) +auto=_KNIGHTTOKEN_ text=Vigilance (Attacking doesn't cause this creature to tap.) -- When Gallant Cavalry enters the battlefield, create a 2/2 white Knight creature token with vigilance. mana={3}{W} type=Creature @@ -40320,7 +40300,7 @@ toughness=2 [card] name=Gingerbread Cabin auto=aslongas(other land[forest]|myBattlefield) tap(noevent) <3 oneshot -auto=aslongas(other land[forest]|myBattlefield) >2 token(Food) once +auto=if type(other land[forest]|myBattlefield)~morethan~2 then token(Food) text={T}: Add {G}. -- Gingerbread Cabin enters the battlefield tapped unless you control three or more other Forests. -- When Gingerbread Cabin enters the battlefield untapped, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") type=Land subtype=Forest @@ -40473,12 +40453,12 @@ type=Instant [/card] [card] name=Giver of Runes -auto={T}:name(protection from white) target(creature|myBattlefield) protection from white -auto={T}:name(protection from blue) target(creature|myBattlefield) protection from blue -auto={T}:name(protection from black) target(creature|myBattlefield) protection from black -auto={T}:name(protection from red) target(creature|myBattlefield) protection from red -auto={T}:name(protection from green) target(creature|myBattlefield) protection from green -auto={T}:name(protection from colorless)target(creature|myBattlefield) protection from colorless +auto={T}:name(protection from white) target(other creature|myBattlefield) protection from white +auto={T}:name(protection from blue) target(other creature|myBattlefield) protection from blue +auto={T}:name(protection from black) target(other creature|myBattlefield) protection from black +auto={T}:name(protection from red) target(other creature|myBattlefield) protection from red +auto={T}:name(protection from green) target(other creature|myBattlefield) protection from green +auto={T}:name(protection from colorless) target(other creature|myBattlefield) protection from colorless text={T}: Another target creature you control gains protection from colorless or from the color of your choice until end of turn. mana={W} type=Creature @@ -40805,7 +40785,7 @@ toughness=4 [card] name=Gleeful Demolition target=artifact -auto=if cantargetcard(artifact|opponentbattlefield) then destroy else destroy and!( create(phyrexian goblin:creature phyrexian goblin:1/1:red:)*3 )! +auto=if cantargetcard(artifact|opponentbattlefield) then destroy else destroy and!( create(phyrexian goblin:creature phyrexian goblin:1/1:red)*3 )! text=Destroy target artifact. If you controlled that artifact, create three 1/1 red Phyrexian Goblin creature tokens. mana={R} type=Sorcery @@ -41592,7 +41572,7 @@ toughness=4 [card] name=Go-Shintai of Shared Purpose abilities=vigilance -auto=@each my endofturn:pay[[{1}]] && create(spirit:creature spirit:1/1:colorless)*type:shrine:myBattlefield +auto=@each my endofturn:pay[[{1}]] && create(spirit:creature spirit:1/1)*type:shrine:myBattlefield text=Vigilance -- At the beginning of your end step, you may pay {1}. If you do, create a 1/1 colorless Spirit creature token for each Shrine you control. mana={3}{W} type=Legendary Enchantment Creature @@ -42991,7 +42971,7 @@ toughness=2 [/card] [card] name=Grand Crescendo -auto=create(Citizen:creature Citizen:1/1:green,white:)*X +auto=create(Citizen:creature Citizen:1/1:green:white)*X auto=all(creature|myBattlefield) indestructible text=Create X 1/1 green and white Citizen creature tokens. Creatures you control gain indestructible until end of turn. mana={X}{W}{W} @@ -44565,7 +44545,6 @@ toughness=4 [card] name=Gurgling Anointer abilities=flying -auto={0}:name(Draw test) draw:1 controller auto=_SECOND_DRAW_name(Put 1/1 counter) counter(1/1) auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~0}:name(Return creature) name(Return creature) target(other creature[manacost<=0]|mygraveyard) moveto(mybattlefield) auto=@movedto(this|graveyard) from(battlefield) restriction{compare(power)~equalto~1}:name(Return creature) name(Return creature) target(other creature[manacost<=1]|mygraveyard) moveto(mybattlefield) @@ -44630,7 +44609,7 @@ type=Sorcery [card] name=Gut, True Soul Zealot abilities=backgroundpartner -auto=@each my blockers:may notatarget(other creature,artifact|mybattlefield) sacrifice && create(skeleton:creature skeleton:4/1:black:menace,battleready) +auto=@each my blockers:may notatarget(other creature,artifact|mybattlefield) sacrifice && create(skeleton:creature skeleton:4/1:black:menace:battleready) text=Whenever you attack, you may sacrifice another creature or an artifact. If you do, create a 4/1 black Skeleton creature token with menace that's tapped and attacking. (It can't be blocked except by two or more creatures.) -- Choose a Background (You can have a Background as a second commander.) mana={2}{R} type=Legendary Creature @@ -45204,7 +45183,7 @@ toughness=1 [/card] [card] name=Halo Fountain -auto={W}{T}{Q(creature[tapped]|mybattlefield)}:create(citizen:creature citizen:1/1:green,white) +auto={W}{T}{Q(creature[tapped]|mybattlefield)}:create(citizen:creature citizen:1/1:green:white) auto={W}{W}{T}{Q(creature[tapped]|mybattlefield)}{Q(creature[tapped]|mybattlefield)}:draw:1 auto={W}{W}{W}{W}{W}{T}{Q(creature[tapped]|mybattlefield)}{Q(creature[tapped]|mybattlefield)}{Q(creature[tapped]|mybattlefield)}{Q(creature[tapped]|mybattlefield)}{Q(creature[tapped]|mybattlefield)}{Q(creature[tapped]|mybattlefield)}{Q(creature[tapped]|mybattlefield)}{Q(creature[tapped]|mybattlefield)}{Q(creature[tapped]|mybattlefield)}{Q(creature[tapped]|mybattlefield)}{Q(creature[tapped]|mybattlefield)}{Q(creature[tapped]|mybattlefield)}{Q(creature[tapped]|mybattlefield)}{Q(creature[tapped]|mybattlefield)}{Q(creature[tapped]|mybattlefield)}:wingame text={W}, {T}, Untap a tapped creature you control: Create a 1/1 green and white Citizen creature token. -- {W}{W}, {T}, Untap two tapped creatures you control: Draw a card. -- {W}{W}{W}{W}{W}, {T}, Untap fifteen tapped creatures you control: You win the game. @@ -45783,7 +45762,7 @@ toughness=3 [/card] [card] name=Harried Dronesmith -auto=@each my combatbegins:create(thopter artifact:creature thopter artifact:1/1:colorless:flying:haste:treason) +auto=@each my combatbegins:create(thopter artifact:creature thopter artifact:1/1:flying:haste:treason) text=At the beginning of combat on your turn, create a 1/1 colorless Thopter artifact creature token with flying. It gains haste until end of turn. Sacrifice it at the beginning of your next end step. mana={3}{R} type=Creature @@ -46939,7 +46918,7 @@ toughness=4 [/card] [card] name=Herd Migration -auto=create(Beast:creature Beast:3/3:green)*pbasiclandtypes +auto=_BEASTTOKEN_*pbasiclandtypes autohand={1}{G}{discard}:target(land[basic]|mylibrary) moveto(ownerHand) && life:3 text=Domain - Create a 3/3 green Beast creature token for each basic land type among lands you control. -- {1}{G}, Discard Herd Migration: Search your library for a basic land card, reveal it, put it into your hand, then shuffle. You gain 3 life. mana={6}{G} @@ -46971,7 +46950,7 @@ toughness=1 [/card] [card] name=Hero of Leina Tower -auto=@targeted(this) from(*|mycastingzone):may pay({x}) counter(1/1,x) +auto=@targeted(this) from(*|mycastingzone):pay({x}) counter(1/1,x) text=Heroic - Whenever you cast a spell that targets Hero of Leina Tower, you may pay {X}. If you do, put X +1/+1 counters on Hero of Leina Tower. mana={G} type=Creature @@ -47584,8 +47563,8 @@ subtype=Aura name=History of Benalia auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) -auto=create(knight:creature knight:2/2:white:vigilance) -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) create(knight:creature knight:2/2:white:vigilance) +auto=_KNIGHTTOKEN_ +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) _KNIGHTTOKEN_ auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) all(creature[Knight]|myBattlefield) +2/+1 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 - Create a 2/2 white Knight creature token with vigilance. -- III - Knights you control get +2/+1 until end of turn. @@ -48150,7 +48129,7 @@ toughness=2 [/card] [card] name=Hopeful Vigil -auto=create(knight:creature knight:2/2:white:vigilance) +auto=_KNIGHTTOKEN_ auto=_DIES__SCRY2_ auto={2}{W}:sacrifice(this) text=When Hopeful Vigil enters the battlefield, create a 2/2 white Knight creature token with vigilance. -- When Hopeful Vigil is put into a graveyard from the battlefield, scry 2. -- {2}{W}: Sacrifice Hopeful Vigil. @@ -48913,10 +48892,10 @@ toughness=4 [/card] [card] name=Hungry Flames -target=player -auto=damage:2 -auto=damage:3 target(creature) -text=Hungry Flames deals 3 damage to target creature and 2 damage to target player. +target=creature +auto=damage:3 +auto=damage:2 target(player,planeswalker) +text=Hungry Flames deals 3 damage to target creature and 2 damage to target player or planeswalker. mana={2}{R} type=Instant [/card] @@ -49547,7 +49526,7 @@ subtype=Plains Island [card] name=Idyllic Grange auto=aslongas(other land[plains]|myBattlefield) tap(noevent) <3 oneshot -auto=aslongas(other land[plains]|myBattlefield) >2 target(creature|myBattlefield) counter(1/1) once +auto=if type(other land[plains]|myBattlefield)~morethan~2 then target(creature|myBattlefield) counter(1/1) text={T}: Add {W}. -- Idyllic Grange enters the battlefield tapped unless you control three or more other Plains. -- When Idyllic Grange enters the battlefield untapped, put a +1/+1 counter on target creature you control. type=Land subtype=Plains @@ -51193,9 +51172,9 @@ subtype=Aura [card] name=Inniaz, the Gale Force abilities=flying -auto={2}{WU}:all(creature[attacking]) flying ueot && 1/1 ueot -auto=@each my blockers restriction{type(creature[attacking;flying]|myBattlefield)~morethan~2}:moveto(myBattlefield) target(*[-land]|opponentbattlefield) -auto=@each my blockers restriction{type(creature[attacking;flying]|myBattlefield)~morethan~2}:ability$!moveto(myBattlefield) notatarget(*[-land]|opponentbattlefield)!$ opponent +auto={2}{WU}:all(creature[attacking;flying]) 1/1 ueot +auto=@each my blockers restriction{type(creature[attacking;flying]|myBattlefield)~morethan~2}:moveto(myBattlefield) target(*[-land]|opponentBattlefield) +auto=@each my blockers restriction{type(creature[attacking;flying]|myBattlefield)~morethan~2}:moveto(opponentBattlefield) notatarget(*[-land]|myBattlefield) text=Flying -- {2}{W} or {U}: Attacking creatures with flying get +1/+1 until end of turn. ( {W} or {U} can be paid with either {W} or {U}.) -- Whenever three or more creatures you control with flying attack, each player gains control of a nonland permanent of your choice controlled by the player to their right. mana={3}{U}{U} type=Legendary Creature @@ -51687,7 +51666,7 @@ toughness=6 [card] name=Into the Fae Court auto=Draw:3 -auto=create(Faerie:creature Faerie:1/1:blue:flying,cloud)*3 +auto=create(Faerie:creature Faerie:1/1:blue:flying:cloud)*3 text=Draw three cards. Create a 1/1 blue Faerie creature token with flying and "This creature can block only creatures with flying." mana={3}{U}{U} type=Sorcery @@ -52792,7 +52771,7 @@ toughness=4 [card] name=Irregular Cohort abilities=changeling -auto=create(Shapeshifter:creature shapeshifter:2/2:colorless:changeling) +auto=create(Shapeshifter:creature shapeshifter:2/2:changeling) text=Changeling (This card is every creature type.) -- When Irregular Cohort enters the battlefield, create a 2/2 colorless Shapeshifter creature token with changeling. mana={2}{W}{W} type=Creature @@ -53051,7 +53030,7 @@ toughness=5 [/card] [card] name=Izoni, Thousand-Eyed -auto=foreach(creature|mygraveyard) create(insect:creature insect:1/1:black,green:) +auto=foreach(creature|mygraveyard) create(insect:creature insect:1/1:black:green) auto={B}{G}{S(other creature|mybattlefield)}:life:1 && draw:1 text=Undergrowth - When Izoni, Thousand-Eyed enters the battlefield, create a 1/1 black and green Insect creature token for each creature card in your graveyard. -- {B}{G}, Sacrifice another creature: You gain 1 life and draw a card. mana={2}{B}{B}{G}{G} @@ -53374,7 +53353,7 @@ toughness=3 name=Jan Jansen, Chaos Crafter abilities=haste auto={T}{S(artifact[creature]|myBattlefield)}:token(Treasure)*2 -auto={T}{S(artifact[-creature]|myBattlefield)}:create(construct:artifact creature construct:1/1:colorless:)*2 +auto={T}{S(artifact[-creature]|myBattlefield)}:create(construct:artifact creature construct:1/1)*2 text=Haste -- {T}, Sacrifice an artifact creature: Create two Treasure tokens. -- {T}, Sacrifice a noncreature artifact: Create two 1/1 colorless Construct artifact creature tokens. mana={R}{W}{B} type=Legendary Creature @@ -53548,7 +53527,7 @@ toughness=4 [card] name=Jenson Carthalion, Druid Exile auto=@movedTo(*[multicolor]|mystack):_SCRY1_ -auto=@movedTo(*[white&blue&black&red&green]|mystack):create(angel:creature angel:4/4:white:flying,vigilance) +auto=@movedTo(*[white&blue&black&red&green]|mystack):create(angel:creature angel:4/4:white:flying:vigilance) auto={5}{T}:Add{W}{U}{B}{R}{G} text=Whenever you cast a multicolored spell, scry 1. If that spell was all colors, create a 4/4 white Angel creature token with flying and vigilance. -- {5}, {T}: Add {W}{U}{B}{R}{G}. mana={G}{W} @@ -54067,7 +54046,7 @@ toughness=3 [/card] [card] name=Jubilant Mascot -auto=@each my combatbegins:may pay({3}{w}):target(other creature|battlefield) counter(1/1) +auto=@each my combatbegins:pay({3}{w}):target(other creature|battlefield) counter(1/1) text=At the beginning of combat on your turn, you may pay {3}{W}. If you do, support 2. (Put a +1/+1 counter on each of up to two other target creatures.) mana={2}{W} type=Creature @@ -54114,6 +54093,7 @@ subtype=Saga [/card] [card] name=Jukai Naturalist +abilities=lifelink auto=lord(Enchantment|mycastingzone) altercost(colorless,-1) text=Lifelink -- Enchantment spells you cast cost {1} less to cast. mana={G}{W} @@ -57506,7 +57486,7 @@ type=Artifact [/card] [card] name=Kyren Flamewright -auto={2}{R}{T}{D(*|myhand)}:name(Create elementals) token(Elemental,Creature Elemental,1/1,blue,red:)*2 && all(creature|myBattlefield) transforms((,newability[haste],newability[1/0])) ueot +auto={2}{R}{T}{D(*|myhand)}:name(Create elementals) token(Elemental,Creature Elemental,1/1,blue,red)*2 && all(creature|myBattlefield) transforms((,newability[haste],newability[1/0])) ueot text={2}{R}, {T}, Discard a card: Create two 1/1 blue and red Elemental creature tokens. Creatures you control get +1/+0 and gain haste until end of turn. color=red type=Creature @@ -58101,7 +58081,7 @@ toughness=4 name=Lavaspur Boots auto=teach(creature) 1/0 auto=teach(creature) haste -auto=teach(creature) _WARD_(1) +auto=teach(creature) @targeted(this) from(*|opponentzones):choice name(This spell costs 1 more) name(This spell costs 1 more) target(*|opponentzones) transforms((,newability[pay[[{1}]] name(pay 1 mana) donothing?fizzle])) oneshot auto={1}:equip text=Equipped creature gets +1/+0 and has haste and ward {1}. (Whenever it becomes the target of a spell or ability an opponent controls, counter it unless that player pays {1}.) -- Equip {1} mana={1} @@ -58277,7 +58257,7 @@ type=Instant [card] name=Leaf-Crowned Visionary auto=lord(other elf|myBattlefield) +1/+1 -auto=@movedTo(Elf|mystack):may pay({g}) draw:1 +auto=@movedTo(Elf|mystack):pay({g}) draw:1 text=Other Elves you control get +1/+1. -- Whenever you cast an Elf spell, you may pay {G}. If you do, draw a card. mana={G}{G} type=Creature @@ -59441,7 +59421,7 @@ type=Sorcery [card] name=Liliana's Devotee auto=lord(zombie|myBattlefield) 1/0 -auto=@each my endofturn restriction{morbid}:may pay({1}{B}) _ZOMBIETOKEN_ +auto=@each my endofturn restriction{morbid}:pay({1}{B}) _ZOMBIETOKEN_ text=Zombies you control get +1/+0. -- At the beginning of your end step, if a creature died this turn, you may pay {1}{B}. If you do, create a 2/2 black Zombie creature token. mana={2}{B} type=Creature @@ -59618,7 +59598,7 @@ toughness=3 [/card] [card] name=Lingering Phantom -autograveyard=_CASTHISTORIC_may pay({b}):moveto(ownerHand) all(this) +autograveyard=_CASTHISTORIC_ pay({b}):moveto(ownerHand) all(this) text=Whenever you cast a historic spell, you may pay {B}. If you do, return Lingering Phantom from your graveyard to your hand. (Artifacts, legendaries, and Sagas are historic.) mana={5}{B} type=Creature @@ -61278,7 +61258,7 @@ type=Artifact name=Luxurious Libation target=creature auto=X/X -auto=create(Citizen:creature Citizen:1/1:green,white) +auto=create(Citizen:creature Citizen:1/1:green:white) text=Target creature gets +X/+X until end of turn. Create a 1/1 green and white Citizen creature token. mana={X}{G} type=Instant @@ -63084,7 +63064,7 @@ type=Sorcery [/card] [card] name=Mass Production -auto=create(Soldier:artifact creature Soldier:1/1:colorless:)*4 +auto=create(Soldier:artifact creature Soldier:1/1)*4 text=Create four 1/1 colorless Soldier artifact creature tokens. mana={5}{W} type=Sorcery @@ -64245,7 +64225,7 @@ type=Legendary Land [card] name=Miara, Thorn of the Glade abilities=partner -auto=@movedTo(*[elf]|mygraveyard) from(mybattlefield):may pay({1}) name(draw card) draw:1 && life:-1 controller +auto=@movedTo(*[elf]|mygraveyard) from(mybattlefield):pay({1}) name(draw card) draw:1 && life:-1 controller text=Whenever Miara, Thorn of the Glade or another Elf you control dies, you may pay {1} and 1 life. If you do, draw a card. -- Partner (You can have two commanders if both have partner.) mana={1}{B} type=Legendary Creature @@ -65561,7 +65541,7 @@ type=Artifact [/card] [card] name=Mishra's Self-Replicator -auto=_CASTHISTORIC_may pay({1}) name(Pay 1 and clone) clone all(this) +auto=_CASTHISTORIC_ pay({1}) name(Pay 1 and clone) clone all(this) text=Whenever you cast a historic spell, you may pay {1}. If you do, create a token that's a copy of Mishra's Self-Replicator. (Artifacts, legendaries, and Sagas are historic.) mana={5} type=Artifact Creature @@ -66429,7 +66409,7 @@ toughness=3 [card] name=Moonblade Shinobi autohand={2}{U}{N}:ninjutsu -auto=@combatdamaged(player) from(this):create(Illusion:Creature Illusion:1/1:blue;flying) +auto=@combatdamaged(player) from(this):create(Illusion:Creature Illusion:1/1:blue:flying) text=Ninjutsu {2}{U} ({2}{U}, Return an unblocked attacker you control to hand: Put this card onto the battlefield from your hand tapped and attacking.) -- Whenever Moonblade Shinobi deals combat damage to a player, create a 1/1 blue Illusion creature token with flying. mana={3}{U} type=Creature @@ -67347,7 +67327,7 @@ toughness=3 name=Myojin of Blooming Dawn auto=if casted(this) then counter(0/0.1.Indestructible) auto=this(counter{0/0.1.Indestructible}) indestructible -auto={C(0/0,-1,Indestructible)}:foreach(*|myBattlefield) create(spirit:creature spirit:1/1:colorless) +auto={C(0/0,-1,Indestructible)}:foreach(*|myBattlefield) create(spirit:creature spirit:1/1) text=Myojin of Blooming Dawn enters the battlefield with an indestructible counter on it if you cast it from your hand. -- Remove an indestructible counter from Myojin of Blooming Dawn: Create a 1/1 colorless Spirit creature token for each permanent you control. mana={5}{W}{W}{W} type=Legendary Creature @@ -67637,7 +67617,7 @@ type=Instant [card] name=Mystic Sanctuary auto=aslongas(other land[island]|myBattlefield) tap(noevent) <3 oneshot -auto=aslongas(other land[island]|myBattlefield) >2 may moveTo(myLibrary) target(instant,sorcery|mygraveyard) once +auto=if type(other land[island]|myBattlefield)~morethan~2 then may moveTo(myLibrary) target(instant,sorcery|mygraveyard) text={T}: Add {U}. -- Mystic Sanctuary enters the battlefield tapped unless you control three or more other Islands. -- When Mystic Sanctuary enters the battlefield untapped, you may put target instant or sorcery card from your graveyard on top of your library. type=Land subtype=Island @@ -67774,7 +67754,7 @@ toughness=3 [/card] [card] name=Nadir Kraken -auto=@drawof(player):may pay({1}) counter(1/1) all(this) && create(Tentacle:creature Tentacle:1/1:blue) +auto=@drawof(player):pay({1}) counter(1/1) all(this) && create(Tentacle:creature Tentacle:1/1:blue) text=Whenever you draw a card, you may pay {1}. If you do, put a +1/+1 counter on Nadir Kraken and create a 1/1 blue Tentacle creature token. mana={1}{U}{U} type=Creature @@ -69614,8 +69594,8 @@ toughness=3 [/card] [card] name=Nimblewright Schematic -auto=create(construct artifact:creature construct artifact:1/1:colorless) -auto=_DIES_create(construct artifact:creature construct artifact:1/1:colorless) +auto=create(construct artifact:creature construct artifact:1/1) +auto=_DIES_create(construct artifact:creature construct artifact:1/1) text=When Nimblewright Schematic enters the battlefield or is put into a graveyard from the battlefield, create a 1/1 colorless Construct artifact creature token. mana={2} type=Artifact @@ -72092,7 +72072,7 @@ type=Sorcery [/card] [card] name=Open the Graves -auto=@movedto(creature[-token]|graveyard) from(mybattlefield):create(zombie:creature zombie:2/2:black:) +auto=@movedto(creature[-token]|graveyard) from(mybattlefield):create(zombie:creature zombie:2/2:black) text=Whenever a nontoken creature you control dies, create a 2/2 black Zombie creature token. mana={3}{B}{B} type=Enchantment @@ -73084,7 +73064,7 @@ toughness=4 [/card] [card] name=Overgrown Armasaur -auto=_ENRAGE_create(saproling:creature saproling:1/1:green:) +auto=_ENRAGE__SAPROLINGTOKEN_ text=Enrage - Whenever Overgrown Armasaur is dealt damage, create a 1/1 green Saproling creature token. mana={3}{G}{G} type=Creature @@ -73721,7 +73701,7 @@ toughness=3 [/card] [card] name=Papercraft Decoy -auto=@movedTo(this|nonbattlezone) from(battlefield):may pay({2}) draw:1 +auto=@movedTo(this|nonbattlezone) from(battlefield):pay({2}) draw:1 text=When Papercraft Decoy leaves the battlefield, you may pay {2}. If you do, draw a card. mana={2} type=Artifact Creature @@ -76026,7 +76006,7 @@ toughness=2 [card] name=Platoon Dispenser auto=@each my endofturn:if type(other creature|mybattlefield)~morethan~1 then draw:1 -auto={3}{W}:create(soldier:artifact creature soldier:1/1:colorless) +auto={3}{W}:create(soldier:artifact creature soldier:1/1) autograveyard={2}{W}{W}:_UNEARTH_ text=At the beginning of your end step, if you control two or more other creatures, draw a card. -- {3}{W}: Create a 1/1 colorless Soldier artifact creature token. -- Unearth {2}{W}{W} mana={5} @@ -77779,7 +77759,7 @@ toughness=1 [/card] [card] name=Prosperous Partnership -auto=create(citizen:creature citizen:1/1:green,white:)*2 +auto=create(citizen:creature citizen:1/1:green:white)*2 auto={T(creature[-tapped]|myBattlefield)}{T(creature[-tapped]|myBattlefield)}{T(creature[-tapped]|myBattlefield)}:token(Treasure) text=When Prosperous Partnership enters the battlefield, create two 1/1 green and white Citizen creature tokens. -- Tap three untapped creatures you control: Create a Treasure token. mana={1}{R}{W} @@ -78307,7 +78287,7 @@ type=Sorcery [card] name=Purgatory auto=@movedto(creature[-token]|mygraveyard) from(battlefield):name(Exile creature) all(trigger[to]) moveto(myexile) and!( counter(0/0.1.PurgatoryExile) )! -auto=@each my upkeep restriction{type(creature|myexile)~morethan~0}:may pay({4}) name(Return exiled creature) target(creature[counter{0/0.1.PurgatoryExile}]|myexile) moveto(myBattlefield) and!( life:-2 controller )! +auto=@each my upkeep restriction{type(creature|myexile)~morethan~0}:pay({4}) name(Return exiled creature) target(creature[counter{0/0.1.PurgatoryExile}]|myexile) moveto(myBattlefield) and!( life:-2 controller )! text=Whenever a nontoken creature is put into your graveyard from the battlefield, exile that card. -- At the beginning of your upkeep, you may pay {4} and 2 life. If you do, return a card exiled with Purgatory to the battlefield. mana={2}{W}{B} type=Enchantment @@ -79762,7 +79742,7 @@ type=Instant [/card] [card] name=Ral's Reinforcements -auto=create(elemental:creature elemental:1/1:blue:red:)*2 +auto=create(elemental:creature elemental:1/1:blue:red)*2 text=Create two 1/1 blue and red Elemental creature tokens. mana={1}{R} type=Sorcery @@ -81367,7 +81347,7 @@ type=Instant [card] name=Redtooth Vanguard abilities=trample -autograveyard=@movedTo(enchantment|myBattlefield):may pay({2}) moveto(ownerHand) +autograveyard=@movedTo(enchantment|myBattlefield):pay({2}) moveto(ownerHand) text=Trample -- Whenever an enchantment enters the battlefield under your control, you may pay {2}. If you do, return Redtooth Vanguard from your graveyard to your hand. mana={1}{G} type=Creature @@ -81595,7 +81575,7 @@ name=Regna, the Redeemer abilities=flying,partner partner=Krav, the Unredeemed auto=_PARTNER_ -auto=@each endofturn restriction{compare(lifegain)~morethan~0}:create(warrior:creature warrior:1/1:white:)*2 +auto=@each endofturn restriction{compare(lifegain)~morethan~0}:create(warrior:creature warrior:1/1:white)*2 text=Partner with Krav, the Unredeemed (When this creature enters the battlefield, target player may put Krav into their hand from their library, then shuffle.) -- Flying -- At the beginning of each end step, if your team gained life this turn, create two 1/1 white Warrior creature tokens. mana={5}{W} type=Legendary Creature @@ -82342,7 +82322,7 @@ toughness=3 [card] name=Resplendent Angel abilities=flying -auto=@each endofturn restriction{compare(lifegain)~morethan~5}:create(angel:creature angel:4/4:white:flying,vigilance) +auto=@each endofturn restriction{compare(lifegain)~morethan~5}:create(angel:creature angel:4/4:white:flying:vigilance) auto={3}{W}{W}{W}:2/2 && lifelink ueot text=Flying -- At the beginning of each end step, if you gained 5 or more life this turn, create a 4/4 white Angel creature token with flying and vigilance. -- {3}{W}{W}{W}: Until end of turn, Resplendent Angel gets +2/+2 and gains lifelink. mana={1}{W}{W} @@ -83758,8 +83738,8 @@ toughness=3 name=Rite of Belzenlok auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) -auto=create(cleric:creature cleric:0/1:black:)*2 -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) create(cleric:creature cleric:0/1:black:)*2 +auto=create(cleric:creature cleric:0/1:black)*2 +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) create(cleric:creature cleric:0/1:black)*2 auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) create(demon:creature demon:6/6:black:flying:trample) and!( transforms((,newability[@each my upkeep restriction{type(creature|myBattlefield)~morethan~1}:sacrifice notatarget(other creature|mybattlefield)],newability[@each my upkeep restriction{type(creature|myBattlefield)~lessthan~2}:damage:6 controller])) forever )! 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 - Create two 0/1 black Cleric creature tokens. -- III - Create a 6/6 black Demon creature token with flying, trample, and "At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you." @@ -84459,7 +84439,7 @@ type=Sorcery [card] name=Rohgahh, Kher Keep Overlord auto=lord(other kobold|myBattlefield) +2/+2 -auto=@movedTo(other Kobold|mystack) may pay({2}):create(dragon:creature dragon:4/4:red:flying) +auto=@movedTo(other Kobold|mystack):pay({2}) create(dragon:creature dragon:4/4:red:flying) auto=@movedTo(Dragon|mystack):token(Kobolds of Kher Keep,creature kobold,0/1,red) text=Other Kobolds you control get +2/+2. -- Whenever you cast a Kobold spell, you may pay {2}. If you do, create a 4/4 red Dragon creature token with flying. -- Whenever you cast a Dragon spell, create a 0/1 red Kobold creature token named Kobolds of Kher Keep. mana={3}{B}{R} @@ -85844,7 +85824,7 @@ toughness=1 [/card] [card] name=Ruthless Sniper -auto=@movedto(*|mygraveyard) from(myhand):may pay({1}) counter(-1/-1) target(creature) +auto=@movedto(*|mygraveyard) from(myhand):pay({1}) counter(-1/-1) target(creature) text=Whenever you cycle or discard a card, you may pay {1}. If you do, put a -1/-1 counter on target creature. mana={B} type=Creature @@ -86895,14 +86875,6 @@ mana={1}{G} type=Enchantment [/card] [card] -name=Saproling Fun -type=Creature -subtype=Saproling -power=1 -toughness=1 -color=green -[/card] -[card] name=Saproling Infestation auto=@movedTo(*[kicked>=1]|stack):token(Saproling,Creature Saproling,1/1,green) text=Whenever a player kicks a spell, you put a 1/1 green Saproling creature token onto the battlefield. @@ -87468,7 +87440,7 @@ toughness=1 [/card] [card] name=Savai Thundermane -auto=@cycled(*|myhand):may pay({2}) damage:2 target(creature) && life:2 controller +auto=@cycled(*|myhand):pay({2}) damage:2 target(creature) && life:2 controller text=Whenever you cycle a card, you may pay 2. When you do, Savai Thundermane deals 2 damage to target creature and you gain 2 life. mana={R}{W} type=Creature @@ -88802,7 +88774,7 @@ type=Enchantment [card] name=Searchlight Companion abilities=flying -auto=create(spirit:creature spirit:1/1:colorless) +auto=create(spirit:creature spirit:1/1) text=Flying -- When Searchlight Companion enters the battlefield, create a 1/1 colorless Spirit creature token. mana={3} type=Artifact Creature @@ -89439,7 +89411,7 @@ toughness=2 [card] name=Selvala, Explorer Returned auto={T}:reveal:1 revealzone(mylibrary) optionone if type(land|reveal)~lessthan~1 then transforms((,newability[add{G}],newability[life:1 controller])) ueot optiononeend optiontwo target(<1>*|reveal) moveto(mylibrary) optiontwoend afterrevealed draw:1 controller afterrevealedend revealend && reveal:1 revealzone(opponentlibrary) optionone if type(land|reveal)~lessthan~1 then transforms((,newability[add{G}],newability[life:1 controller])) ueot optiononeend optiontwo target(<1>*|reveal) moveto(opponentlibrary) optiontwoend afterrevealed draw:1 opponent afterrevealedend revealend -text=Parley-{T}: Each player reveals the top card of his or her library. For each nonland card revealed this way, add {G} and you gain 1 life. Then each player draws a card. +text=Parley-{T}: Each player reveals the top card of their library. For each nonland card revealed this way, add {G} and you gain 1 life. Then each player draws a card. mana={1}{G}{W} type=Legendary Creature subtype=Elf Scout @@ -90971,7 +90943,7 @@ toughness=3 name=Shifting Ceratops abilities=protection from blue auto=nofizzle -auto={G}:flying +auto={G}:reach auto={G}:trample auto={G}:haste text=This spell can't be countered. -- Protection from blue (This creature can't be blocked, targeted, dealt damage, enchanted, or equipped by anything blue.) -- {G}: Shifting Ceratops gains your choice of reach, trample, or haste until end of turn. @@ -92803,9 +92775,9 @@ toughness=3 [card] name=Skanos Dragonheart abilities=backgroundpartner -auto=@combat(attacking) source(this) restriction{compare(power:highest:*:mybattlefield)~morethan~compare(power:highest:*:mygraveyard)}:name(Gain X/X) transforms((,newability[power:highest:*:mybattlefield/power:highest:*:mybattlefield])) ueot -auto=@combat(attacking) source(this) restriction{compare(power:highest:*:mybattlefield)~equalto~compare(power:highest:*:mygraveyard)}:name(Gain X/X) transforms((,newability[power:highest:*:mybattlefield/power:highest:*:mybattlefield])) ueot -auto=@combat(attacking) source(this) restriction{compare(power:highest:*:mygraveyard)~morethan~compare(power:highest:*:mybattlefield)}:name(Gain X/X) transforms((,newability[highest:*:mygraveyard/highest:*:mygraveyard])) ueot +auto=@combat(attacking) source(this) restriction{compare(power:highest:other Dragon:mybattlefield)~morethan~compare(power:highest:other Dragon:mygraveyard)}:name(Gain X/X) transforms((,newability[power:highest:other Dragon:mybattlefield/power:highest:other Dragon:mybattlefield])) ueot +auto=@combat(attacking) source(this) restriction{compare(power:highest:other Dragon:mybattlefield)~equalto~compare(power:highest:other Dragon:mygraveyard)}:name(Gain X/X) transforms((,newability[power:highest:other Dragon:mybattlefield/power:highest:other Dragon:mybattlefield])) ueot +auto=@combat(attacking) source(this) restriction{compare(power:highest:*:mygraveyard)~morethan~compare(power:highest:other Dragon:mybattlefield)}:name(Gain X/X) transforms((,newability[highest:other Dragon:mygraveyard/highest:other Dragon:mygraveyard])) ueot text=Whenever Skanos Dragonheart attacks, it gets +X/+X until end of turn, where X is the greatest power among other Dragons you control and Dragon cards in your graveyard. -- Choose a Background (You can have a Background as a second commander.) mana={4}{G} type=Legendary Creature @@ -93634,7 +93606,7 @@ toughness=1 [card] name=Skyrider Patrol abilities=flying -auto=@each my combatbegins:may pay({g}{u}):target(other creature|myBattlefield) transforms((,newability[counter(1/1)],newability[flying])) ueot +auto=@each my combatbegins:pay({g}{u}):target(other creature|myBattlefield) transforms((,newability[counter(1/1)],newability[flying])) ueot text=Flying -- At the beginning of combat on your turn, you may pay {G}{U}. When you do, put a +1/+1 counter on another target creature you control, and that creature gains flying until end of turn. mana={2}{G}{U} type=Creature @@ -93937,7 +93909,7 @@ toughness=3 [card] name=Slimefoot, the Stowaway auto=@movedTo(saproling|graveyard) from(mybattlefield):damage:1 each opponent && life:1 -auto={4}:create(saproling:creature saproling:1/1:green:) +auto={4}:_SAPROLINGTOKEN_ text=Whenever a Saproling you control dies, Slimefoot, the Stowaway deals 1 damage to each opponent and you gain 1 life. -- {4}: Create a 1/1 green Saproling creature token. mana={1}{B}{G} type=Legendary Creature @@ -94724,7 +94696,7 @@ toughness=4 [/card] [card] name=Sokenzan Smelter -auto=@each my combatbegins:may name(Pay 1 and create construct) pay({1}) name(Pay 1 and create construct) token(Construct Artifact,Creature Artifact Construct,3/1,red,haste) +auto=@each my combatbegins:name(Pay 1 and create construct) pay({1}) name(Pay 1 and create construct) token(Construct Artifact,Creature Artifact Construct,3/1,red,haste) text=At the beginning of combat on your turn, you may pay {1} and sacrifice an artifact. If you do, create a 3/1 red Construct artifact creature token with haste. mana={1}{R} type=Creature @@ -95869,7 +95841,7 @@ toughness=5 [card] name=Sparktongue Dragon abilities=flying -auto=may pay({2}{r}):damage:3 target(anytarget) +auto=pay({2}{r}) damage:3 target(anytarget) text=Flying -- When Sparktongue Dragon enters the battlefield, you may pay {2}{R}. When you do, it deals 3 damage to any target. mana={3}{R}{R} type=Creature @@ -97064,7 +97036,7 @@ toughness=2 [/card] [card] name=Spore Swarm -auto=create(Saproling:creature Saproling:1/1:green:)*3 +auto=_SAPROLINGTOKEN_*3 text=Create three 1/1 green Saproling creature tokens. mana={3}{G} type=Instant @@ -97332,7 +97304,7 @@ toughness=7 [card] name=Sprouting Goblin kicker={G} -auto=if paid(kicker) then target(target(*[plains;island;swamp;mountain;forest]|mylibrary) moveto(ownerHand) +auto=if paid(kicker) then target(target(*[plains;island;swamp;mountain;forest])|mylibrary) moveto(ownerHand) auto={R}{T}{S(land|myBattlefield)}:draw:1 text=Kicker {G} (You may pay an additional {G} as you cast this spell.) -- When Sprouting Goblin enters the battlefield, if it was kicked, search your library for a land card with a basic land type, reveal it, put it into your hand, then shuffle. -- {R}, {T}, Sacrifice a land: Draw a card. mana={1}{R} @@ -97495,7 +97467,7 @@ color=green [card] name=Squirrel Sanctuary auto=token(Squirrel,Creature Squirrel,1/1,green) -auto=@movedto(graveyard) from(creature[-token]|myBattlefield):may pay({1}) name(Pay 1 and return to hand) moveTo(ownerhand) +auto=@movedto(graveyard) from(creature[-token]|myBattlefield):pay({1}) name(Pay 1 and return to hand) moveTo(ownerhand) text=When Squirrel Sanctuary enters the battlefield, create a 1/1 green Squirrel creature token. -- Whenever a nontoken creature you control dies, you may pay {1}. If you do, return Squirrel Sanctuary to its owner's hand. mana={G} type=Enchantment @@ -102667,7 +102639,7 @@ toughness=4 [card] name=Temple Thief auto=cantbeblockedby(creature[auras>=1]) -auto=cantbeblockedby(enchantment creature) +auto=cantbeblockedby(enchantment) text=Temple Thief can't be blocked by enchanted creatures or enchantment creatures. mana={1}{B} type=Creature @@ -103705,8 +103677,8 @@ toughness=4 name=The Circle of Loyalty anyzone=affinity(knight|myBattlefield) reduce({1}) auto=lord(creature|mybattlefield) 1/1 -auto=@movedto(*[legendary]|mystack):create(knight:creature knight:2/2:white:vigilance) -auto={3}{W}{T}:create(knight:creature knight:2/2:white:vigilance) +auto=@movedto(*[legendary]|mystack):_KNIGHTTOKEN_ +auto={3}{W}{T}:_KNIGHTTOKEN_ text=This spell costs {1} less to cast for each Knight you control. -- Creatures you control get +1/+1. -- Whenever you cast a legendary spell, create a 2/2 white Knight creature token with vigilance. -- {3}{W}, {T}: Create a 2/2 white Knight creature token with vigilance. mana={4}{W}{W} type=Legendary Artifact @@ -104012,11 +103984,11 @@ subtype=Saga name=The Grey Havens auto=_SCRY1_ auto={T}:add{C} -auto=aslongas(creature[legendary]|mygraveyard) {T}:name(Add white) name(Add white) add{W} -auto=aslongas(creature[legendary]|mygraveyard) {T}:name(Add blue) name(Add blue) add{U} -auto=aslongas(creature[legendary]|mygraveyard) {T}:name(Add black) name(Add black) add{B} -auto=aslongas(creature[legendary]|mygraveyard) {T}:name(Add red) name(Add red) add{R} -auto=aslongas(creature[legendary]|mygraveyard) {T}:name(Add green) name(Add green) add{G} +auto=aslongas(*[creature&legendary&white]|mygraveyard) {T}:name(Add white) name(Add white) add{W} +auto=aslongas(*[creature&legendary&blue]|mygraveyard) {T}:name(Add blue) name(Add blue) add{U} +auto=aslongas(*[creature&legendary&black]|mygraveyard) {T}:name(Add black) name(Add black) add{B} +auto=aslongas(*[creature&legendary&red]|mygraveyard) {T}:name(Add red) name(Add red) add{R} +auto=aslongas(*[creature&legendary&green]|mygraveyard) {T}:name(Add green) name(Add green) add{G} text=When The Grey Havens enters the battlefield, scry 1. -- {T}: Add {C}. -- {T}: Add one mana of any color among legendary creature cards in your graveyard. type=Legendary Land [/card] @@ -104854,7 +104826,7 @@ type=Enchantment [/card] [card] name=Thorn Lieutenant -auto=@targeted(this) from(*|opponentbattlefield,opponenthand,opponentstack,opponentgraveyard,opponentexile,opponentlibrary):create(elf warrior:creature elf warrior:1/1:green:) +auto=@targeted(this) from(*|opponentbattlefield,opponenthand,opponentstack,opponentgraveyard,opponentexile,opponentlibrary):create(elf warrior:creature elf warrior:1/1:green) auto={5}{G}:4/4 ueot text=Whenever Thorn Lieutenant becomes the target of a spell or ability an opponent controls, create a 1/1 green Elf Warrior creature token. -- {5}{G}: Thorn Lieutenant gets +4/+4 until end of turn. mana={1}{G} @@ -105861,7 +105833,7 @@ toughness=1 name=Tilonalli's Summoner auto=_ASCEND_ auto=@movedTo(*|myBattlefield) restriction{type(City's Blessing|mybattlefield)~equalto~0}:_ASCEND_ -auto=_ATTACKING_may pay({X}{R}) name(Create X elemental tokens) token(Elemental,Creature Elemental Tilonalli,1/1,red,battleready)*x +auto=_ATTACKING_ pay({X}{R}) name(Create X elemental tokens) token(Elemental,Creature Elemental Tilonalli,1/1,red,battleready)*x auto=@each my endstep restriction{type(City's Blessing|mybattlefield)~equalto~0}:name(Exile Elementals) moveto(exile) all(Tilonalli[token;fresh]|myBattlefield) text=Ascend (If you control ten or more permanents, you get the city's blessing for the rest of the game.) -- Whenever Tilonalli's Summoner attacks, you may pay {X}{R}. If you do, create X 1/1 red Elemental creature tokens that are tapped and attacking. At the beginning of the next end step, exile those tokens unless you have the city's blessing. mana={1}{R} @@ -106509,8 +106481,8 @@ subtype=Arcane [/card] [card] name=Tolarian Contempt -auto=name(Put rejection counter) all(creature|opponentbattlefield) counter(0/0,1,Rejection) -auto=@each my endofturn:may name(Choose opponent creature) target(creature[counter{0/0.1.Rejection}]|opponentbattlefield) transforms((,newability[choice name(Put on top) moveto(mylibrary)],newability[choice name(Put on bottom) bottomoflibrary])) oneshot +auto=name(Put rejection counter) all(creature|opponentbattlefield) counter(0/0,1,Rejction) +auto=@each my endofturn:may name(Choose opponent creature) target(creature[counter{0/0.1.Rejction}]|opponentbattlefield) transforms((,newability[choice name(Put on top) moveto(mylibrary)],newability[choice name(Put on bottom) bottomoflibrary])) oneshot text=When Tolarian Contempt enters the battlefield, put a rejection counter on each creature your opponents control. -- At the beginning of your end step, for each opponent, choose up to one target creature they control with a rejection counter on it. That creature's owner puts it on the top or bottom of their library. mana={3}{U}{U} type=Enchantment @@ -108519,7 +108491,7 @@ toughness=4 [/card] [card] name=Turntimber Sower -auto=@movedto(land|mygraveyard):create(plant:creature plant:0/1:green:) +auto=@movedto(land|mygraveyard):create(plant:creature plant:0/1:green) auto={G}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:target(land|mygraveyard) moveto(ownerhand) text=Whenever one or more land cards are put into your graveyard from anywhere, create a 0/1 green Plant creature token. -- {G}, Sacrifice three creatures: Return target land card from your graveyard to your hand. mana={2}{G} @@ -108790,7 +108762,7 @@ otherrestriction=type(creature|mybattlefield)~morethan~0 other={1}{R} name(Adventure) auto=if paid(alternative) then name(Creature gains double strike) name(Creature gains double strike) target(creature|myBattlefield) transforms((,newability[double strike])) ueot auto=if paid(alternative) then _ADVENTURE_ -auto=transforms((,newability[_ATTACKING_name(Double power) power/0 ueot])) +auto=@combat(attacking) source(mytgt):dynamicability auto={1}{R}:equip text=Whenever equipped creature attacks, double its power until end of turn. -- Equip {1}{R} // Target creature you control gains double strike until end of turn. (Then exile this card. You may cast the artifact later from exile.) mana={2}{R} @@ -109307,7 +109279,7 @@ name=Unconventional Tactics target=creature auto=+3/+3 auto=flying -autograveyard=@movedto(zombie|mybattlefield):may pay({W}) moveto(ownerHand) +autograveyard=@movedto(zombie|mybattlefield):pay({W}) moveto(ownerHand) text=Target creature gets +3/+3 and gains flying until end of turn. -- Whenever a Zombie enters the battlefield under your control, you may pay {W}. If you do, return Unconventional Tactics from your graveyard to your hand. mana={2}{W} type=Sorcery @@ -110201,8 +110173,8 @@ subtype=Aura [/card] [card] name=Urborg Panther -auto={B}{S}:destroy target(creature[blocking]) -auto={S(*[Feral Shadow]|mybattlefield)}{S(*[Breathstealer]|mybattlefield)}{S(*[Urborg Panther]|mybattlefield)}:name(search card) reveal:plibrarycount optionone name(choose card) target(*[Spirit of the Night]|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveTo(myBattlefield))! afterrevealedend revealend +auto=@combat(attacking) source(this):transforms((,newability[{B}{S}:destroy target(creature[blocking])])) ueot +auto={S(Feral Shadow|mybattlefield)}{S(Breathstealer|mybattlefield)}{S(Urborg Panther|mybattlefield)}:name(search card) reveal:plibrarycount optionone name(choose card) target(Spirit of the Night|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveTo(myBattlefield))! afterrevealedend revealend text={B}, Sacrifice Urborg Panther: Destroy target creature blocking Urborg Panther. -- Sacrifice a creature named Feral Shadow, a creature named Breathstealer, and Urborg Panther: Search your library for a card named Spirit of the Night and put that card onto the battlefield. Then shuffle your library. mana={2}{B} type=Creature @@ -110364,7 +110336,7 @@ type=Instant [/card] [card] name=Urza's Miter -auto=@movedTo(artifact|mygraveyard) from(mybattlefield):may pay({3}) draw:1 +auto=@movedTo(artifact|mygraveyard) from(mybattlefield):pay({3}) draw:1 text=Whenever an artifact you control is put into a graveyard from the battlefield, if it wasn't sacrificed, you may pay {3}. If you do, draw a card. mana={3} type=Artifact @@ -110427,7 +110399,7 @@ toughness=4 [card] name=Urza's Sylex auto={2}{W}{W}{T}:name(Exile and destroy) all(this) moveto(exile) and!( transforms((,newability[all(*[-land]|mybattlefield) destroy],newability[all(*[-land]|opponentbattlefield) destroy],newability[ability$!if type(land|mybattlefield)~morethan~6 then name(Choose lands to destroy) name(Choose lands to destroy) name(Choose lands to destroy) target(land|mybattlefield) destroy!$ controller],newability[ability$!if type(land|mybattlefield)~morethan~6 then name(Choose lands to destroy) name(Choose lands to destroy) name(Choose lands to destroy) target(land|mybattlefield) destroy!$ opponent])) oneshot )! asSorcery -auto=@movedto(this|exile) from(myBattlefield):may name(Search planeswalker) pay({2}) name(Search planeswalker) target(planeswalker|mylibrary) moveto(ownerHand) and!( shuffle )! +auto=@movedto(exile) from(myBattlefield):name(Search planeswalker) pay({2}) name(Search planeswalker) target(planeswalker|mylibrary) moveto(ownerHand) and!( shuffle )! text={2}{W}{W}, {T}, Exile Urza's Sylex: Each player chooses six lands they control. Destroy all other permanents. Activate only as a sorcery. -- When Urza's Sylex is put into exile from the battlefield, you may pay {2}. If you do, search your library for a planeswalker card, reveal it, put it into your hand, then shuffle. mana={3} type=Legendary Artifact @@ -110789,7 +110761,7 @@ type=Sorcery [card] name=Valorous Steed abilities=vigilance -auto=create(knight:creature knight:2/2:white:vigilance) +auto=_KNIGHTTOKEN_ text=Vigilance (Attacking doesn't cause this creature to tap.) -- When Valorous Steed enters the battlefield, create a 2/2 white Knight creature token with vigilance. mana={4}{W} type=Creature @@ -112209,7 +112181,8 @@ type=Sorcery [card] name=Victory Chimes auto=@each opponent upkeep:untap -auto={T}:target(player) add{c} +auto={T}:Add{C} +auto={T}:name(Opponent adds c) name(Opponent adds c) Add{C} opponent text=Untap Victory Chimes during each other player's untap step. -- {T}: A player of your choice adds {C}. mana={3} type=Artifact @@ -112235,7 +112208,7 @@ type=Instant [/card] [card] name=Vigil for the Lost -auto=@movedTo(creature|graveyard) from(mybattlefield):may pay({x}) name(Pay X) life:X controller +auto=@movedTo(creature|graveyard) from(mybattlefield):pay({x}) name(Pay X) life:X controller text=Whenever a creature you control dies, you may pay {X}. If you do, you gain X life. mana={3}{W} type=Enchantment @@ -112781,7 +112754,7 @@ type=Legendary Artifact [/card] [card] name=Vivien's Crocodile -auto=aslongas(vivien planeswalker|mybattlefield) 1/1 +auto=aslongas(*[vivien]|mybattlefield) 1/1 text=Vivien's Crocodile gets +1/+1 as long as you control a Vivien planeswalker. mana={2}{G} type=Creature @@ -114312,8 +114285,8 @@ type=Sorcery [/card] [card] name=Warmonger -auto={2}:damage:2 all(creature[-flying]) && damage:2 all(player) -auto=foreach(land[-tapped]|opponentBattlefield) transforms((,newability[ability$!name(Pay 2) pay[[{2}]] name(Pay 2) damage:2 all(creature[-flying]) && damage:2 all(player)?donothing!$ opponent])) forever +auto={2}:damage:2 all(creature[-flying]) && damage:1 all(player) +auto=foreach(land[-tapped]|opponentBattlefield) transforms((,newability[ability$!name(Pay 2) pay[[{2}]] name(Pay 2) damage:1 all(creature[-flying]) && damage:1 all(player)?donothing!$ opponent])) forever text={2}: Warmonger deals 1 damage to each creature without flying and each player. Any player may activate this ability. mana={3}{R} type=Creature @@ -114966,7 +114939,7 @@ toughness=3 [/card] [card] name=Well of Knowledge -auto=@each my draw:may pay[[{2}]] draw:1 controller +auto=@each my draw:pay[[{2}]] draw:1 controller auto=@each opponent draw:ability$!name(pay 2) pay[[{2}]] name(pay 2 mana) draw:1?donothing!$ opponent text={2}: Draw a card. Any player may activate this ability but only during their draw step. mana={3} @@ -115414,7 +115387,7 @@ toughness=3 [card] name=Wildborn Preserver abilities=flash,reach -auto=@movedTo(other creature[-human]|myBattlefield):name(Pay X and put X counter) may pay({x}) name(Pay X and put X counter) name(Pay X and put X counter) counter(1/1,X) all(this) +auto=@movedTo(other creature[-human]|myBattlefield):name(Pay X and put X counter) pay({x}) name(Pay X and put X counter) name(Pay X and put X counter) counter(1/1,X) all(this) text=Flash -- Reach -- Whenever another non-Human creature enters the battlefield under your control, you may pay {X}. When you do, put X +1/+1 counters on Wildborn Preserver. mana={1}{G} type=Creature @@ -116081,7 +116054,7 @@ type=Land [card] name=Witch's Cottage auto=aslongas(other land[swamp]|myBattlefield) tap(noevent) <3 oneshot -auto=aslongas(other land[swamp]|myBattlefield) >2 may moveTo(myLibrary) target(creature|mygraveyard) once +auto=if type(other land[swamp]|myBattlefield)~morethan~2 then may moveTo(myLibrary) target(creature|mygraveyard) text={T}: Add {B} -- Witch's Cottage enters the battlefield tapped unless you control three or more other Swamps. -- When Witch's Cottage enters the battlefield untapped, you may put target creature card from your graveyard on top of your library. type=Land subtype=Swamp @@ -117506,7 +117479,7 @@ type=Instant [card] name=You're Confronted by Robbers auto=choice name(Stall for Time) tap target(creature) -auto=choice name(Call for Aid) create(soldier:creature soldier:1/1:white:)*3 +auto=choice name(Call for Aid) create(soldier:creature soldier:1/1:white)*3 text=Choose one - -- - Stall for Time - Tap up to three target creatures. -- - Call for Aid - Create three 1/1 white Soldier creature tokens. mana={3}{W} type=Instant diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index edd9c6f46..2cd8d9b93 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -6171,15 +6171,6 @@ mana={2}{U} type=Instant [/card] [card] -name=Artificer's Hex -target=equipment -auto=@each my upkeep:transforms((,newability[destroy all(parents)])) ueot -text=Enchant Equipment. -- At the beginning of your upkeep, if enchanted Equipment is attached to a creature, destroy that creature. -mana={B} -type=Enchantment -subtype=Aura -[/card] -[card] name=Artificer's Intuition aicode=activate target(artifact[manacost<=1]|mylibrary) moveto(ownerHand) auto={U}{D(artifact|myhand)}:name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(<1>artifact[manacost<=1]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(ownerHand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>*|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend @@ -13019,8 +13010,8 @@ toughness=5 [/card] [card] name=Body Snatcher +auto=choice restriction{type(creature|myhand)~morethan~0} reject notatarget(creature|myhand) auto=choice moveTo(exile) -auto=choice reject notatarget(creature|myhand) auto=@movedTo(mygraveyard) from(this|battlefield):moveTo(myBattlefield) target(creature|mygraveyard) autograveyard=moveTo(exile) text=When Body Snatcher enters the battlefield, you may discard a creature card. If you don't, exile Body Snatcher. -- When Body Snatcher dies, exile Body Snatcher and return target creature card from your graveyard to the battlefield. @@ -15689,7 +15680,8 @@ type=Enchantment [/card] [card] name=Bump in the Night -auto=life:-3 opponent +target=opponent +auto=life:-3 flashback={5}{R} text=Target opponent loses 3 life. -- Flashback {5}{R} mana={B} @@ -35194,7 +35186,7 @@ toughness=1 [/card] [card] name=Elvish Scrapper -auto={G}{T}{S}:destroy target(other artifact) +auto={G}{T}{S}:destroy target(artifact) text={G}, {T}, Sacrifice Elvish Scrapper: Destroy target artifact. mana={G} type=Creature @@ -47099,7 +47091,7 @@ toughness=3 name=Glissa's Scorn target=artifact auto=destroy -auto=life:-3 targetController +auto=life:-1 targetController text=Destroy target artifact. Its controller loses 1 life. mana={1}{G} type=Instant @@ -52749,7 +52741,7 @@ toughness=5 [card] name=Haunted Angel abilities=flying -autograveyard=token(Angel,Creature Angel,3/3,flying black) opponent && moveto(exile) +auto=_DIES_token(Angel,Creature Angel,3/3,flying,black) opponent && moveto(exile) text=Flying -- When Haunted Angel dies, exile Haunted Angel and each other player puts a 3/3 black Angel creature token with flying onto the battlefield. mana={2}{W} type=Creature @@ -53337,7 +53329,7 @@ toughness=2 name=Heart-Piercer Bow auto={1}:equip auto=@combat(attacking) source(mytgt):damage:1 target(creature|opponentbattlefield) -text=Whenever equipped creature attacks, Heart-Piercer Bow deals 1 damage to target creature defending player controls. +text=Whenever equipped creature attacks, Heart-Piercer Bow deals 1 damage to target creature defending player controls. -- Equip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.) mana={2} type=Artifact subtype=Equipment @@ -56690,8 +56682,8 @@ subtype=Aura [card] name=Hypnotic Cloud target=player -auto=ability$!name(discard) target(*|myhand) reject!$ targetedplayer -auto=if paid(kicker) then ability$!name(discard) target(<2>*|myhand) reject!$ targetedplayer +auto=ifnot paid(kicker) then ability$!name(discard) target(*|myhand) reject!$ targetedplayer +auto=if paid(kicker) then ability$!name(discard) target(<3>*|myhand) reject!$ targetedplayer kicker={4} text=Kicker {4} (You may pay an additional {4} as you cast this spell.) -- Target player discards a card. If Hypnotic Cloud was kicked, that player discards three cards instead. mana={1}{B} @@ -69580,7 +69572,7 @@ toughness=2 [/card] [card] name=Mage Slayer -auto=@combat(attacking) source(mytgt) :dynamicability +auto=@combat(attacking) source(mytgt):dynamicability auto={3}:equip text=Whenever equipped creature attacks, it deals damage equal to its power to defending player. -- Equip {3} mana={1}{R}{G} @@ -73600,7 +73592,7 @@ toughness=3 [/card] [card] name=Midnight Guard -auto=@movedTo(other creature|mybattlefield):untap +auto=@movedTo(other creature|battlefield):untap text=Whenever another creature enters the battlefield, untap Midnight Guard. mana={2}{W} type=Creature @@ -73618,7 +73610,7 @@ type=Instant [card] name=Midnight Ritual target=creature|mygraveyard -auto=moveTo(exile) and!( create(Zombie:Creature Zombie:2/2:black) )! +auto=moveTo(exile) and!( _ZOMBIETOKEN_ )! text=Exile X target creature cards from your graveyard. For each creature card exiled this way, put a 2/2 black Zombie creature token onto the battlefield. mana={X}{2}{B} type=Sorcery @@ -78535,8 +78527,8 @@ type=Instant [/card] [card] name=Nature's Cloak -auto=lord(creature|myBattlefield) forestwalk -text=Green creatures you control gain forestwalk until end of turn. +auto=all(creature[green]|myBattlefield) forestwalk +text=Green creatures you control gain forestwalk until end of turn. (They can't be blocked as long as defending player controls a Forest.) mana={2}{G} type=Sorcery [/card] @@ -78572,9 +78564,9 @@ type=Sorcery [/card] [card] name=Nature's Spiral -target=artifact,creature,enchantment,land|myGraveyard +target=*[-instant;-sorcery]|myGraveyard auto=moveto(ownerHand) -text=Return target permanent card from your graveyard to your hand. (A permanent card is an artifact, creature, enchantment, land, or planeswalker card.) +text=Return target permanent card from your graveyard to your hand. mana={1}{G} type=Sorcery [/card] @@ -80718,7 +80710,7 @@ toughness=2 [card] name=Noosegraf Mob auto=counter(1/1,5) -auto=@movedto(*|stack):this(counter{1/1.1}>0) transforms((,newability[counter(1/1.-1) all(this) ],newability[create(Zombie:Creature Zombie:2/2:black) controller])) forever +auto=@movedto(*|stack):this(counter{1/1.1}>0) transforms((,newability[counter(1/1.-1) all(this) ],newability[_ZOMBIETOKEN_ controller])) forever text=Noosegraf Mob enters the battlefield with five +1/+1 counters on it. -- Whenever a player casts a spell, remove a +1/+1 counter from Noosegraf Mob. If you do, put a 2/2 black Zombie creature token onto the battlefield. mana={4}{B}{B} type=Creature @@ -81396,7 +81388,7 @@ type=Enchantment [card] name=Oath of Liliana auto=ability$!name(sacrifice) notatarget(creature|mybattlefield) sacrifice !$ opponent -auto=@each endofturn:if type(planeswalker[fresh]|mybattlefield)~morethan~0 then create(Zombie:Creature Zombie:2/2:black) +auto=@each endofturn:if type(planeswalker[fresh]|mybattlefield)~morethan~0 then _ZOMBIETOKEN_ text=When Oath of Liliana enters the battlefield, each opponent sacrifices a creature. -- At the beginning of each end step, if a planeswalker entered the battlefield under your control this turn, put a 2/2 black Zombie creature token onto the battlefield. mana={2}{B} type=Legendary Enchantment @@ -84395,7 +84387,7 @@ toughness=2 name=Paragon of Gathering Mists auto=lord(other creature[blue]|myBattlefield) 1/1 auto={U}{T}:target(other creature[blue]|myBattlefield):flying ueot -text=Other blue creatures you control get +1/+1. -- {G}{T}: Another target blue creature you control gains flying until end of turn. +text=Other blue creatures you control get +1/+1. -- {U}{T}: Another target blue creature you control gains flying until end of turn. mana={3}{U} type=Creature subtype=Human Wizard @@ -84416,8 +84408,8 @@ toughness=2 [card] name=Paragon of Open Graves auto=lord(other creature[black]|myBattlefield) 1/1 -auto={1}{B}{T}:target(other creature[black]|myBattlefield):deathtouch ueot -text=Other black creatures you control get +1/+1. -- {1}{B}{T}: Another target black creature you control gains deathtouch until end of turn. +auto={2}{B}{T}:target(other creature[black]|myBattlefield):deathtouch ueot +text=Other black creatures you control get +1/+1. -- {2}{B}{T}: Another target black creature you control gains deathtouch until end of turn. mana={3}{B} type=Creature subtype=Skeleton Warrior @@ -88252,7 +88244,7 @@ subtype=Aura name=Preeminent Captain abilities=First Strike auto=_ATTACKING_target(creature[soldier]|myhand) readytofight -text=Whenever Preeminent Captain attacks, you may put a Soldier creature card from your hand onto the battlefield tapped and attacking. +text=First strike (This creature deals combat damage before creatures without first strike.) -- Whenever Preeminent Captain attacks, you may put a Soldier creature card from your hand onto the battlefield tapped and attacking. mana={2}{W} type=Creature subtype=Kithkin Soldier @@ -92053,27 +92045,27 @@ toughness=3 [/card] [card] name=Rashmi, Eternities Crafter -auto=@movedto(*[-land;manacost=1]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<1]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=2]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<2]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=3]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<3]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=4]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<4]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=5]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<5]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=6]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<6]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=7]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<7]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=8]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<8]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=9]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<9]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=10]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<10]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=11]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<11]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=12]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<12]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=13]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<13]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=14]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<14]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=15]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<15]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=16]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<16]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=17]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<17]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=18]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<18]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=19]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<19]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=20]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<20]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend -auto=@movedto(*[-land;manacost=21]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<21]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=1]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=0]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=2]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=1]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=3]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=2]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=4]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=3]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=5]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=4]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=6]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=5]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=7]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=6]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=8]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=7]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=9]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=8]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=10]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=9]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=11]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=10]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=12]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=11]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=13]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=12]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=14]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=13]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=15]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=14]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=16]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=15]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=17]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=16]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=18]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=17]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=19]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=18]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=20]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=19]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend +auto=@movedto(*[-land;manacost=21]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=20]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend text=Whenever you cast your first spell each turn, reveal the top card of your library. If it's a nonland card with mana value less than that spell's, you may cast it without paying its mana cost. If you don't cast the revealed card, put it into your hand. mana={2}{G}{U} type=Legendary Creature @@ -92126,7 +92118,7 @@ auto=this(counter{0/0.13.Charge}=) {T}{S}:destroy all(*[-land;manacost=13]) auto=this(counter{0/0.14.Charge}=) {T}{S}:destroy all(*[-land;manacost=14]) auto=this(counter{0/0.15.Charge}=) {T}{S}:destroy all(*[-land;manacost=15]) auto=this(counter{0/0.16.Charge}=) {T}{S}:destroy all(*[-land;manacost=16]) -text={T}: Put a charge counter on Grindclock. -- {T}: Sacrifice Ratchet Bomb: Destroy each nonland permanent with mana value equal to the number of charge counters on Ratchet Bomb. +text={T}: Put a charge counter on Ratchet Bomb. -- {T}: Sacrifice Ratchet Bomb: Destroy each nonland permanent with mana value equal to the number of charge counters on Ratchet Bomb. mana={2} type=Artifact [/card] @@ -94475,7 +94467,7 @@ type=Enchantment name=Restless Apparition abilities=persist auto={WB}{WB}{WB}:3/3 -text={W/B}{W/B}{W/B}: Restless Apparition gets +3/+3 until end of turn. -- Persist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner’s control with a -1/-1 counter on it.) +text={W/B}{W/B}{W/B}: Restless Apparition gets +3/+3 until end of turn. -- Persist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.) mana={WB}{WB}{WB} type=Creature subtype=Spirit @@ -109738,7 +109730,7 @@ name=Soul of New Phyrexia abilities=trample auto={5}:all(*|mybattlefield) indestructible ueot autograveyard={5}{E}:all(*|mybattlefield) indestructible ueot -text=Trample. -- {5}:Permanents you control gain indestructible until end of turn. -- {5}:Permanents you control gain indestructible until end of turn. +text=Trample. -- {5}:Permanents you control gain indestructible until end of turn. -- {5}, Exile Soul of New Phyrexia from your graveyard: Permanents you control gain indestructible until end of turn. mana={6} type=Artifact Creature subtype=Phyrexian Avatar @@ -125868,7 +125860,7 @@ type=Instant [/card] [card] name=Underhanded Designs -auto=@movedTo(artifact|myBattlefield):may pay[[{1}]] && life:-1 opponent && life:1 controller +auto=@movedTo(artifact|myBattlefield):pay[[{1}]] && life:-1 opponent && life:1 controller auto={1}{B}{S}:destroy target(creature) restriction{type(artifact|mybattlefield)~morethan~1} text=Whenever an artifact enters the battlefield under your control, you may pay {1}. If you do, each opponent loses 1 life and you gain 1 life. -- {1}{B}, Sacrifice Underhanded Designs: Destroy target creature. Activate this ability only if you control two or more artifacts. mana={1}{B} @@ -132058,7 +132050,7 @@ type=Instant name=Warlord's Axe auto={4}:equip auto=teach(creature) 3/1 -text=Equipped creature gets +3/+1. +text=Equipped creature gets +3/+1. -- Equip {4} ({4}: Attach to target creature you control. Equip only as a sorcery.) mana={3} type=Artifact subtype=Equipment diff --git a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt index d31834bc9..8578969f2 100644 --- a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt +++ b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt @@ -107,7 +107,7 @@ subtype=Ajani [card] name=Ajani, Strength of the Pride auto=counter(0/0,5,loyalty) -auto={C(0/0,1,Loyalty)}:name(+1: Gain life equal to planeswalkers and creatures) life:type:creature:myBattlefield controller && life:type:planeswalker:myBattlefield controller +auto={C(0/0,1,Loyalty)}:name(+1: Gain life equal to planeswalkers and creatures) life:type:*[creature;planeswalker]:myBattlefield controller auto={C(0/0,-2,Loyalty)}:name(-2: Create Ajani's Pridemate) token(Ajani's Pridemate) auto={C(0/0,0,Loyalty)}:name(-0: Exile Ajani and creatures opponent) if compare(lifetotalminusstartinglifeminusend)~morethan~14 then moveto(exile) all(this) && moveto(exile) all(*[creature;artifact]|opponentbattlefield) text=+1: You gain life equal to the number of creatures you control plus the number of planeswalkers you control. -- -2: Create a 2/2 white Cat Soldier creature token named Ajani's Pridemate with "Whenever you gain life, put a +1/+1 counter on Ajani's Pridemate." -- 0: If you have at least 15 life more than your starting life total, exile Ajani, Strength of the Pride and each artifact and creature your opponents control. @@ -562,7 +562,7 @@ subtype=Chandra name=Chandra, Hope's Beacon auto=counter(0/0,5,loyalty) auto=@movedTo(*[instant;sorcery]|mystack) turnlimited:name(Copy spell) name(Copy spell) all(trigger[to]) transforms((,newability[name(Copy spell) activate castcard(copied noevent)])) oneshot -auto={C(0/0,+2,Loyalty)}:name(+2: Add 2 mana) thisforeach(variable{2}) ability$!name(Choose one) choice name(Add white) add{W} _ choice name(Add blue) add{U} _ choice name(Add red) add{R} _ choice name(Add green) add{G} _ choice name(Add black) add{B}!$ controller +auto={C(0/0,+2,Loyalty)}:name(+2: Add 2 mana) thisforeach(variable{2}) ability$!name(Choose one) choice name(Add white) add{W} _ choice name(Add blue) add{U} _ choice name(Add red) add{B} _ choice name(Add green) add{R} _ choice name(Add black) add{G}!$ controller auto={C(0/0,+1,Loyalty)}:name(+1: Exile top 5 cards) all(*[zpos<=5]|mylibrary) moveto(myexile) and!( if cantargetcard(*[instant;sorcery]|*) then transforms((,newability[canplayfromexile])) ueot )! auto={C(0/0,-1,Loyalty)}:name(-1: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:1!$ controller auto={C(0/0,-1,Loyalty)}:name(-1: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:1!$ controller @@ -1113,7 +1113,7 @@ name=Garruk, Unleashed auto=counter(0/0,4,loyalty) auto={C(0/0,1,Loyalty)}:name(+1: Target creature gets +3/+3 and trample) target(creature) 3/3 ueot && trample ueot auto={C(0/0,-2,Loyalty)}:name(-2: Create a Beast 3/3) _BEASTTOKEN_ && transforms((,newability[if type(creature|opponentbattlefield)~morethan~type(creature|mybattlefield) then counter(0/0,1,Loyalty) all(this)])) oneshot -auto={C(0/0,-7,Loyalty)}:name(-7: Emblem: "Search a creature") emblem transforms((,newability[@each my endofturn:may moveTo(myBattlefield) target(creature|myLibrary) && shuffle])) forever dontremove +auto={C(0/0,-7,Loyalty)}:name(-7: Emblem: "Search a creature") emblem transforms((,newability[@each my endofturn:may target(creature|myLibrary) moveTo(myBattlefield) && shuffle])) forever dontremove text=+1: Up to one target creature gets +3/+3 and gains trample until end of turn. -- −2: Create a 3/3 green Beast creature token. Then if an opponent controls more creatures than you, put a loyalty counter on Garruk, Unleashed. -- −7: You get an emblem with "At the beginning of your end step, you may search your library for a creature card, put it onto the battlefield, then shuffle your library." mana={2}{G}{G} type=Legendary Planeswalker @@ -2117,7 +2117,7 @@ subtype=Lolth name=Lord Windgrace abilities=canbecommander auto=counter(0/0,5,Loyalty) -auto={C(0/0,2,Loyalty)}:name(+2: Discard land and draw) target(land|myhand) reject and!( draw:2 controller )! +auto={C(0/0,2,Loyalty)}:restriction{type(land|myhand)~morethan~0} name(+2: Discard land and draw) target(land|myhand) reject and!( draw:2 controller )! auto={C(0/0,2,Loyalty)}:name(+2: Discard non-land and draw) target(*[-land]|myhand) reject and!( draw:1 controller )! auto={C(0/0,-3,Loyalty)}:name(-3: Return up to two lands from graveyard) target(*[land]|myGraveyard) moveTo(myBattlefield) auto={C(0/0,-11,Loyalty)}:name(-11: Destroy and create cats) thisforeach(variable{6}) ability$!name(Choose one) choice name(Destroy and create cat) target(*[-land]|battlefield) destroy && token(Cat,Creature Cat,2/2,green,forestwalk) _ choice name(Just create cat) token(Cat,Creature Cat,2/2,green,forestwalk)!$ controller @@ -3762,8 +3762,8 @@ subtype=Vraska [card] name=Vraska, Swarm's Eminence auto=counter(0/0,5,loyalty) -auto=@combatdamaged(player,planeswalker) from(creature[deathtouch]|myBattlefield):all(trigger[to]) counter(1/1) -auto={C(0/0,-2,Loyalty)}:name(-2: Create a 1/1 Assassin) token(Assassin Vra) +auto=@combatdamaged(player,planeswalker) from(*[deathtouch]|myBattlefield):all(trigger[from]) counter(1/1) +auto={C(0/0,-2,Loyalty)}:name(-2: Create a 1/1 Assassin) create(Assassin:Creature Assassin:1/1:black:deathtouch) and!( transforms((,newability[@damaged(planeswalker) from(this):all(trigger[to]) destroy])) forever )! text=Whenever a creature you control with deathtouch deals damage to a player or planeswalker, put a +1/+1 counter on that creature. -- -2: Create a 1/1 black Assassin creature token with deathtouch and "Whenever this creature deals damage to a planeswalker, destroy that planeswalker." mana={2}{BG}{BG} type=Legendary Planeswalker diff --git a/projects/mtg/src/Rules.cpp b/projects/mtg/src/Rules.cpp index 3135ca719..c2a82395b 100644 --- a/projects/mtg/src/Rules.cpp +++ b/projects/mtg/src/Rules.cpp @@ -434,6 +434,7 @@ Player * Rules::loadPlayerRandomCommander(GameObserver* observer, int isAI) cmdTempDeck->addRandomCards(1, 0, 0, -1, "legendary"); myCommandZone = NEW DeckDataWrapper(cmdTempDeck); commander = myCommandZone->getCard(0, true); + delete myCommandZone; // Clean up to avoid memory leaks } stringstream cid; @@ -452,11 +453,10 @@ Player * Rules::loadPlayerRandomCommander(GameObserver* observer, int isAI) if(colors.data()[0] != 0) { colors.insert(colors.begin(),0); } - // Add basic lands - int numLands = 40; + // Add lands + int numLands = colors.size() > 1 ? 40 / (colors.size() - 1) : 40; if(colors.size() > 1) { - numLands /= colors.size() - 1; for (unsigned int i = 1; i < colors.size(); i++) { tempDeck->addRandomCards(numLands, 0, 0, -1, lands[colors.data()[i]].c_str());