From 751fda6521554215f73bcada0d0e9f2f48c31057 Mon Sep 17 00:00:00 2001 From: Vittorio Alfieri Date: Mon, 24 Jul 2023 19:08:20 +0200 Subject: [PATCH] Fixed some primitives from issue #1085, fixed some primitived from Discord channel, updated some AI decks, added new ability "canloyaltyasinst" to allow a planeswalker to activate loyalty abilities as instant (e.g. "The Wandering Emperor"), fixed a possible crash when a card change zone with different card types than its original version (e.g. morphed cards). --- projects/mtg/bin/Res/ai/baka/deck151.txt | 99 ++++- projects/mtg/bin/Res/ai/baka/deck155.txt | 98 ++++- .../bin/Res/sets/primitives/borderline.txt | 413 ++++++++++-------- projects/mtg/bin/Res/sets/primitives/mtg.txt | 16 +- .../bin/Res/sets/primitives/planeswalkers.txt | 15 +- projects/mtg/include/MTGDefinitions.h | 3 +- projects/mtg/src/MTGAbility.cpp | 6 +- projects/mtg/src/MTGDefinitions.cpp | 3 +- projects/mtg/src/MTGGameZones.cpp | 2 +- 9 files changed, 446 insertions(+), 209 deletions(-) diff --git a/projects/mtg/bin/Res/ai/baka/deck151.txt b/projects/mtg/bin/Res/ai/baka/deck151.txt index 6e728e708..30ce107d9 100644 --- a/projects/mtg/bin/Res/ai/baka/deck151.txt +++ b/projects/mtg/bin/Res/ai/baka/deck151.txt @@ -1 +1,98 @@ -#NAME:Arcades Commander 2023 #DESC:Original Deck by ashby4 (tappedout.net), #DESC:refined for Wagic by Bob #HINT:castpriority(commander,*) Akroma's Will (*) * 1 Arcane Signet (*) * 1 Assault Formation (*) * 1 Aura Shards (*) * 1 Axebane Guardian (*) * 1 Azorius Signet (*) * 1 Bant Panorama (*) * 1 Blossoming Sands (*) * 1 Bountiful Promenade (*) * 1 Branchloft Pathway (*) * 1 Brushland (*) * 1 Canopy Vista (*) * 1 Carven Caryatid (*) * 1 Colossus of Akros (*) * 1 Command Tower (*) * 1 Crashing Drawbridge (*) * 1 Dismantling Wave (*) * 1 Drift of Phantasms (*) * 1 Dusk // Dawn (*) * 1 Farseek (*) * 1 Fell the Mighty (*) * 1 Forest (*) * 4 Fortified Rampart (*) * 1 Fortified Village (*) * 1 Glacial Fortress (*) * 1 Glacial Wall (*) * 1 Hallowed Fountain (*) * 1 High Alert (*) * 1 Hinterland Harbor (*) * 1 Hover Barrier (*) * 1 Irrigated Farmland (*) * 1 Island (*) * 2 Jeskai Barricade (*) * 1 Jungle Barrier (*) * 1 Last March of the Ents (*) *1 Leyline of Vitality (*) * 1 Lightning Greaves (MPS) (*) * 1 Lumithread Field (*) * 1 Meekstone (*) * 1 Mirror Shield (*) * 1 Monastery Flock (*) * 1 Noetic Scales (*) * 1 Oathsworn Giant (*) * 1 Overgrown Battlement (*) * 1 Perimeter Captain (*) * 1 Plains (*) * 4 Port Town (*) * 1 Prairie Stream (*) * 1 Rejuvenating Springs (*) * 1 Sakura-Tribe Elder (*) * 1 Scattered Groves (*) * 1 Sea of Clouds (*) * 1 Seaside Citadel (*) * 1 Selesnya Signet (CMA) (*) * 1 Shield Sphere (*) * 1 Simic Signet (*) * 1 Slagwurm Armor (*) * 1 Slaughter the Strong (*) * 1 Sol Ring (*) * 1 Soulsworn Jury (DIS) (*) * 1 Spidersilk Armor (*) * 1 Stalwart Shield-Bearers (*) * 1 Sunpetal Grove (*) * 1 Sunscape Familiar (*) * 1 Swiftfoot Boots (*) * 1 Swords to Plowshares (*) * 1 Sylvan Caryatid (*) * 1 Temple Garden (*) * 1 Temple of Enlightenment (*) * 1 Temple of Mystery (*) * 1 Temple of Plenty (*) * 1 Tetsuko Umezawa, Fugitive (*) * 1 Teyo, the Shieldmage (*) * 1 Thallid Shell-Dweller (TSR) (*) * 1 Thornwood Falls (*) * 1 Tower Defense (*) * 1 Towering Titan (*) * 1 Tranquil Cove (*) * 1 Tree of Redemption (*) * 1 Treva's Ruins (*) * 1 Vine Trellis (*) * 1 Wall of Blossoms (*) * 1 Wall of Denial (*) * 1 Wall of Faith (*) * 1 Wall of Glare (*) * 1 Wall of Ice (*) * 1 Wall of Junk (*) * 1 Wall of Omens (*) * 1 Wall of Roots (*) * 1 Wall of Stolen Identity (*) * 1 Wall of Tanglecord (*) * 1 Wave of Reckoning (*) * 1 Yavimaya Coast (*) * 1 #CMD:Arcades, the Strategist (*) * 1 \ No newline at end of file +#NAME:Arcades Commander 2023 +#DESC:Original Deck by ashby4 (tappedout.net), +#DESC:refined for Wagic by Bob +#HINT:castpriority(commander,*) +Akroma's Will (*) * 1 +Arcane Signet (*) * 1 +Assault Formation (*) * 1 +Aura Shards (*) * 1 +Axebane Guardian (*) * 1 +Azorius Signet (*) * 1 +Bant Panorama (*) * 1 +Blossoming Sands (*) * 1 +Bountiful Promenade (*) * 1 +Branchloft Pathway (*) * 1 +Brushland (*) * 1 +Canopy Vista (*) * 1 +Carven Caryatid (*) * 1 +Colossus of Akros (*) * 1 +Command Tower (*) * 1 +Crashing Drawbridge (*) * 1 +Dismantling Wave (*) * 1 +Drift of Phantasms (*) * 1 +Dusk // Dawn (*) * 1 +Farseek (*) * 1 +Fell the Mighty (*) * 1 +Forest (*) * 4 +Fortified Rampart (*) * 1 +Fortified Village (*) * 1 +Glacial Fortress (*) * 1 +Glacial Wall (*) * 1 +Hallowed Fountain (*) * 1 +High Alert (*) * 1 +Hinterland Harbor (*) * 1 +Hover Barrier (*) * 1 +Irrigated Farmland (*) * 1 +Island (*) * 2 +Jeskai Barricade (*) * 1 +Jungle Barrier (*) * 1 +Last March of the Ents (*) *1 +Leyline of Vitality (*) * 1 +Lightning Greaves (MPS) (*) * 1 +Lumithread Field (*) * 1 +Meekstone (*) * 1 +Mirror Shield (*) * 1 +Monastery Flock (*) * 1 +Noetic Scales (*) * 1 +Oathsworn Giant (*) * 1 +Overgrown Battlement (*) * 1 +Perimeter Captain (*) * 1 +Plains (*) * 4 +Port Town (*) * 1 +Prairie Stream (*) * 1 +Rejuvenating Springs (*) * 1 +Sakura-Tribe Elder (*) * 1 +Scattered Groves (*) * 1 +Sea of Clouds (*) * 1 +Seaside Citadel (*) * 1 +Selesnya Signet (CMA) (*) * 1 +Shield Sphere (*) * 1 +Simic Signet (*) * 1 +Slagwurm Armor (*) * 1 +Slaughter the Strong (*) * 1 +Sol Ring (*) * 1 +Soulsworn Jury (DIS) (*) * 1 +Spidersilk Armor (*) * 1 +Stalwart Shield-Bearers (*) * 1 +Sunpetal Grove (*) * 1 +Sunscape Familiar (*) * 1 +Swiftfoot Boots (*) * 1 +Swords to Plowshares (*) * 1 +Sylvan Caryatid (*) * 1 +Temple Garden (*) * 1 +Temple of Enlightenment (*) * 1 +Temple of Mystery (*) * 1 +Temple of Plenty (*) * 1 +Tetsuko Umezawa, Fugitive (*) * 1 +Teyo, the Shieldmage (*) * 1 +Thallid Shell-Dweller (TSR) (*) * 1 +Thornwood Falls (*) * 1 +Tower Defense (*) * 1 +Towering Titan (*) * 1 +Tranquil Cove (*) * 1 +Tree of Redemption (*) * 1 +Treva's Ruins (*) * 1 +Vine Trellis (*) * 1 +Wall of Blossoms (*) * 1 +Wall of Denial (*) * 1 +Wall of Faith (*) * 1 +Wall of Glare (*) * 1 +Wall of Ice (*) * 1 +Wall of Junk (*) * 1 +Wall of Omens (*) * 1 +Wall of Roots (*) * 1 +Wall of Stolen Identity (*) * 1 +Wall of Tanglecord (*) * 1 +Wave of Reckoning (*) * 1 +Yavimaya Coast (*) * 1 +#CMD:Arcades, the Strategist (*) * 1 \ No newline at end of file diff --git a/projects/mtg/bin/Res/ai/baka/deck155.txt b/projects/mtg/bin/Res/ai/baka/deck155.txt index 95f98ec04..29395a5b6 100644 --- a/projects/mtg/bin/Res/ai/baka/deck155.txt +++ b/projects/mtg/bin/Res/ai/baka/deck155.txt @@ -1 +1,97 @@ -#NAME:Edgar Markov Commander 2023 #DESC:Original Deck Concept by DespairFaction (tappedout.net) #DESC:Designed for Wagic by Bob #HINT:castpriority(commander,creature,*) #HINT:alwaysattackwith(Edgar Markov) Ancient Tomb (*) * 1 Asylum Visitor (*) * 1 Badlands (*) * 1 Basri's Solidarity (*) * 1 Bishop's Soldier (*) * 1 Blackcleave Cliffs (*) * 1 Blade of the Bloodchief (*) * 1 Blood Artist (*) * 1 Blood Burglar (*) * 1 Blood Crypt (*) * 1 Bloodfell Caves (*) * 1 Bloodline Keeper (*) * 1 Bloodmad Vampire (*) * 1 Bold Impaler (*) * 1 Captivating Vampire (*) * 1 Cathars' Crusade (*) * 1 Child of Night (*) * 1 Clifftop Retreat (*) * 1 Coat of Arms (*) * 1 Command Tower (*) * 1 Concealed Courtyard (*) * 1 Cordial Vampire (*) * 1 Crescendo of War (*) * 1 Dark Ritual (*) * 1 Dragonskull Summit (*) * 1 Drana, Liberator of Malakir (*) * 1 Duskborne Skymarcher (*) * 1 Elenda, the Dusk Rose (*) * 1 Exquisite Blood (*) * 1 Falkenrath Exterminator (*) * 1 Falkenrath Noble (*) * 1 Falkenrath Perforator (*) * 1 Gift of Estates (*) * 1 Gifted Aetherborn (*) * 1 Godless Shrine (*) * 1 Guul Draz Vampire (*) * 1 Impact Tremors (*) * 1 Inspiring Vantage (*) * 1 Iroas, God of Victory (*) * 1 Isolated Chapel (*) * 1 Knight of the Ebon Legion (*) * 1 Land Tax (*) * 1 Legion Lieutenant (*) * 1 Legion's Landing (*) * 1 Malakir Cullblade (*) * 1 Markov Baron (*) * 1 Martyr of Dusk (*) * 1 Mountain (*) * 1 Necropolis Regent (*) * 1 Nomad Outpost (*) * 1 Nullpriest of Oblivion (*) * 1 Orcish Oriflamme (EMA) (*) * 1 Path of Ancestry (*) * 1 Path of Bravery (*) * 1 Plains (*) * 3 Plateau (*) * 1 Pulse Tracker (*) * 1 Purphoros, God of the Forge (*) * 1 Quag Vampires (*) * 1 Rising of the Day (*) * 1 Ruthless Cullblade (*) * 1 Sacred Foundry (*) * 1 Sanctum Seeker (*) * 1 Scoured Barrens (*) * 1 Scrubland (*) * 1 Shadow Alley Denizen (*) * 1 Skyblade of the Legion (*) * 1 Skymarcher Aspirant (*) * 1 Smoldering Marsh (*) * 1 Sol Ring (*) * 1 Stensia Masquerade (*) * 1 Stromkirk Captain (*) * 1 Stromkirk Noble (*) * 1 Swamp (ICE) (*) * 4 Swamp (MIR) (*) * 4 Swamp (M20) (*) * 2 Throne of the God-Pharaoh (*) * 1 Tithe (*) * 1 Unholy Officiant (*) * 1 Urborg, Tomb of Yawgmoth (*) * 1 Vampire Cutthroat (*) * 1 Vampire Interloper (*) * 1 Vampire Lacerator (*) * 1 Vampire Neonate (*) * 1 Vampire of the Dire Moon (*) * 1 Vampire Socialite (*) * 1 Vicious Conquistador (*) * 1 Vito, Thorn of the Dusk Rose (*) * 1 Voldaren Stinger (*) * 1 Whispersilk Cloak (*) * 1 Wing-Scarred Crag (*) * 1 #CMD:Edgar Markov (*) * 1 \ No newline at end of file +#NAME:Edgar Markov Commander 2023 +#DESC:Original Deck Concept by DespairFaction (tappedout.net) +#DESC:Designed for Wagic by Bob +#HINT:castpriority(commander,creature,*) +#HINT:alwaysattackwith(Edgar Markov) +Ancient Tomb (*) * 1 +Asylum Visitor (*) * 1 +Badlands (*) * 1 +Basri's Solidarity (*) * 1 +Bishop's Soldier (*) * 1 +Blackcleave Cliffs (*) * 1 +Blade of the Bloodchief (*) * 1 +Blood Artist (*) * 1 +Blood Burglar (*) * 1 +Blood Crypt (*) * 1 +Bloodfell Caves (*) * 1 +Bloodline Keeper (*) * 1 +Bloodmad Vampire (*) * 1 +Bold Impaler (*) * 1 +Captivating Vampire (*) * 1 +Cathars' Crusade (*) * 1 +Child of Night (*) * 1 +Clifftop Retreat (*) * 1 +Coat of Arms (*) * 1 +Command Tower (*) * 1 +Concealed Courtyard (*) * 1 +Cordial Vampire (*) * 1 +Crescendo of War (*) * 1 +Dark Ritual (*) * 1 +Dragonskull Summit (*) * 1 +Drana, Liberator of Malakir (*) * 1 +Duskborne Skymarcher (*) * 1 +Elenda, the Dusk Rose (*) * 1 +Exquisite Blood (*) * 1 +Falkenrath Exterminator (*) * 1 +Falkenrath Noble (*) * 1 +Falkenrath Perforator (*) * 1 +Gift of Estates (*) * 1 +Gifted Aetherborn (*) * 1 +Godless Shrine (*) * 1 +Guul Draz Vampire (*) * 1 +Impact Tremors (*) * 1 +Inspiring Vantage (*) * 1 +Iroas, God of Victory (*) * 1 +Isolated Chapel (*) * 1 +Knight of the Ebon Legion (*) * 1 +Land Tax (*) * 1 +Legion Lieutenant (*) * 1 +Legion's Landing (*) * 1 +Malakir Cullblade (*) * 1 +Markov Baron (*) * 1 +Martyr of Dusk (*) * 1 +Mountain (*) * 1 +Necropolis Regent (*) * 1 +Nomad Outpost (*) * 1 +Nullpriest of Oblivion (*) * 1 +Orcish Oriflamme (EMA) (*) * 1 +Path of Ancestry (*) * 1 +Path of Bravery (*) * 1 +Plains (*) * 3 +Plateau (*) * 1 +Pulse Tracker (*) * 1 +Purphoros, God of the Forge (*) * 1 +Quag Vampires (*) * 1 +Rising of the Day (*) * 1 +Ruthless Cullblade (*) * 1 +Sacred Foundry (*) * 1 +Sanctum Seeker (*) * 1 +Scoured Barrens (*) * 1 +Scrubland (*) * 1 +Shadow Alley Denizen (*) * 1 +Skyblade of the Legion (*) * 1 +Skymarcher Aspirant (*) * 1 +Smoldering Marsh (*) * 1 +Sol Ring (*) * 1 +Stensia Masquerade (*) * 1 +Stromkirk Captain (*) * 1 +Stromkirk Noble (*) * 1 +Swamp (ICE) (*) * 4 +Swamp (MIR) (*) * 4 +Swamp (M20) (*) * 2 +Throne of the God-Pharaoh (*) * 1 +Tithe (*) * 1 +Unholy Officiant (*) * 1 +Urborg, Tomb of Yawgmoth (*) * 1 +Vampire Cutthroat (*) * 1 +Vampire Interloper (*) * 1 +Vampire Lacerator (*) * 1 +Vampire Neonate (*) * 1 +Vampire of the Dire Moon (*) * 1 +Vampire Socialite (*) * 1 +Vicious Conquistador (*) * 1 +Vito, Thorn of the Dusk Rose (*) * 1 +Voldaren Stinger (*) * 1 +Whispersilk Cloak (*) * 1 +Wing-Scarred Crag (*) * 1 +#CMD:Edgar Markov (*) * 1 \ No newline at end of file diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index fcc9f57c0..acf05465d 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -1,7 +1,7 @@ grade=borderline #Bordeline Primitives Pack for Wagic the Homebrew. #Please keep these card alphabetized, and try to have the "name=" line at the top of each card -#I sorted this programmatically - Thanks to Vitty85 21-07-2023 +#I sorted this programmatically - Thanks to Vitty85 24-07-2023 [card] name=+2 Mace auto={3}:equip @@ -3751,9 +3751,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={5}{U} name(Mutate) -auto=transforms((,newability[@mutated(this):name(Tap X creatures) thisforeach(mutations) may target(creature) freeze])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):may name(Tap X creatures) target(creature|battlefield) freeze +auto=@mutated(mytgt):may name(Tap X creatures) target(creature|battlefield) freeze text=Mutate {5}{U} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Whenever this creature mutates, tap up to X target creatures, where X is the number of times this creature has mutated. Those creatures don't untap during their controller's next untap step. mana={5}{U}{U} type=Creature @@ -5504,10 +5505,10 @@ auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzon auto={9999}:equip other={5}{G} name(Mutate) aicode=activate transforms((,newability[target(*[zpos=findfirsttypepermanent]|mylibrary) moveto(myexile) and!( moveto(myBattlefield) and!( all(*[zpos<=findfirsttypepermanent]|mylibrary) moveto(myexile) )! )!])) oneshot -auto=transforms((,newability[@mutated(this):thisforeach(mutations) ability$!name(Reveal) reveal:1 revealuntil(*[-instant;-sorcery]|mylibrary) optionone name(Exile permanent and play) target(*[-sorcery;-instant]|myreveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(Exile all non permanents) target(*[sorcery;instant]|myreveal) moveto(myexile) and!( all(*[sorcery;instant]|myreveal) moveto(myexile) )! optiontwoend afterrevealed all(tobecast|myexile) moveTo(myBattlefield) afterrevealedend revealend!$ controller])) -auto=ifnot paid(alternative) then transforms((,newability[becomes(,,green)])) forever all(this) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) && mutateover target(other creature[-human]|mybattlefield) && transforms((,newability[becomes(,,green)])) forever -auto=if paid(alternative) then name(Mutate Under) this(mutations<1) name(Mutate Under) choice name(Mutate Under)&& mutateunder target(other creature[-human]|mybattlefield) +auto=@mutated(this):thisforeach(mutations) ability$!name(Reveal) reveal:1 revealuntil(*[-instant;-sorcery]|mylibrary) optionone name(Exile permanent and play) target(*[-sorcery;-instant]|myreveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(Exile all non permanents) target(*[sorcery;instant]|myreveal) moveto(myexile) and!( all(*[sorcery;instant]|myreveal) moveto(myexile) )! optiontwoend afterrevealed all(tobecast|myexile) moveTo(myBattlefield) afterrevealedend revealend!$ controller +auto=@mutated(mytgt):thisforeach(mutations) ability$!name(Reveal) reveal:1 revealuntil(*[-instant;-sorcery]|mylibrary) optionone name(Exile permanent and play) target(*[-sorcery;-instant]|myreveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(Exile all non permanents) target(*[sorcery;instant]|myreveal) moveto(myexile) and!( all(*[sorcery;instant]|myreveal) moveto(myexile) )! optiontwoend afterrevealed all(tobecast|myexile) moveTo(myBattlefield) afterrevealedend revealend!$ controller +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder text=Mutate {5}{G} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Whenever this creature mutates, exile cards from the top of your library until you exile X permanent cards, where X is the number of times this creature has mutated. Put those permanent cards onto the battlefield. mana={4}{G} type=Creature @@ -10937,9 +10938,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={2}{BG}{BG} name(Mutate) -auto=transforms((,newability[@mutated(this):moveto(myhand) target(*|mygraveyard)])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Return to hand) target(*[-instant&-sorcery]|mygraveyard) moveto(myhand) +auto=@mutated(mytgt):name(Return to hand) target(*[-instant&-sorcery]|mygraveyard) moveto(myhand) text=Mutate {2}{BG}{BG} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Whenever this creature mutates, return target permanent card from your graveyard to your hand. mana={2}{B}{G} type=Creature @@ -12350,10 +12352,9 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={2}{UB}{G}{G} name(Mutate) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Under) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) -autograveyard={2}{U}{G}{G}:if type(creature[-human]|mybattlefield)~morethan~0 then name(Mutate from graveyard) name(Mutate from graveyard) choice name(Mutate from graveyard) activate castcard(alternative) else add{2}{U}{G}{G} -autograveyard={2}{B}{G}{G}:if type(creature[-human]|mybattlefield)~morethan~0 then name(Mutate from graveyard) name(Mutate from graveyard) choice name(Mutate from graveyard) activate castcard(alternative) else add{2}{B}{G}{G} +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +autograveyard={2}{UB}{G}{G} restriction{can play creature,type(creature[-human]|mybattlefield)~morethan~0}:name(Mutate from graveyard) name(Mutate from graveyard) name(Mutate from graveyard) transforms((,newability[activate castcard(alternative)])) oneshot text=Mutate {2}{UB}{G}{G} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Trample -- You may cast Brokkos, Apex of Forever from your graveyard using its mutate ability. mana={2}{B}{G}{U} type=Legendary Creature @@ -14478,9 +14479,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={3}{B} name(Mutate) -auto=transforms((,newability[@mutated(this):ability$!name(discard) target(*|myhand) reject!$ opponent])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Discard a card) ability$!name(Discard a card) target(*|myhand) reject!$ opponent +auto=@mutated(mytgt):name(Discard a card) ability$!name(Discard a card) target(*|myhand) reject!$ opponent text=Mutate {3}{B} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Menace (This creature can't be blocked except by two or more creatures.) -- Whenever this creature mutates, each opponent discards a card. mana={4}{B} type=Creature @@ -16063,9 +16065,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={4}{B} name(Mutate) -auto=transforms((,newability[@mutated(this):ability$!sacrifice name(opponent sacrifices creature) notatarget(creature|mybattlefield)!$ opponent])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Opponent sacrifices creature) ability$!name(Sacrifice a creature) sacrifice notatarget(creature|mybattlefield)!$ opponent +auto=@mutated(mytgt):name(Oppponent sacrifices creature) ability$!name(Sacrifice a creature) sacrifice notatarget(creature|mybattlefield)!$ opponent text=Mutate {4}{B} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Whenever this creature mutates, each opponent sacrifices a creature. mana={5}{B} type=Creature @@ -17216,9 +17219,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={3}{R} name(Mutate) -auto=transforms((,newability[@mutated(this):may _DISCARD&DRAW_])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):may _DISCARD&DRAW_ +auto=@mutated(mytgt):may _DISCARD&DRAW_ text=Mutate {3}{R} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Reach -- Whenever this creature mutates, you may discard a card. If you do, draw a card. mana={4}{R} type=Creature @@ -20285,9 +20289,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={2}{W}{W} name(Mutate) -auto=transforms((,newability[@mutated(this):token(Cat Cub)*2])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Create cat) token(Cat Cub)*2 +auto=@mutated(mytgt):name(Create cat) token(Cat Cub)*2 text=Mutate {2}{W}{W} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Lifelink -- Whenever this creature mutates, create two 1/1 white Cat creature tokens with lifelink. mana={3}{W} type=Creature @@ -24165,9 +24170,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={2}{B}{B} name(Mutate) -auto=transforms((,newability[@mutated(this):target(*[creature;planeswalker]|opponentBattlefield) destroy])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Destroy creature or planeswalker) target(*[creature;planeswalker]|opponentBattlefield) destroy +auto=@mutated(mytgt):name(Destroy creature or planeswalker)target(*[creature;planeswalker]|opponentBattlefield) destroy text=Mutate {4}{B}{B} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Flash -- Flying -- Whenever this creature mutates, destroy target creature or planeswalker an opponent controls. mana={2}{B}{B} type=Creature @@ -26118,9 +26124,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={3}{U} name(Mutate) -auto=transforms((,newability[@mutated(this):draw:1 controller])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Draw a card) draw:1 controller +auto=@mutated(mytgt):name(Draw a card) draw:1 controller text=Mutate {3}{U} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Flying -- Whenever this creature mutates, draw a card. mana={4}{U} type=Creature @@ -29867,8 +29874,8 @@ type=Sorcery [/card] [card] name=Essence Symbiote -auto=@mutated(creature|mybattlefield):all(trigger[to]) counter(1/1) -auto=@mutated(creature|mybattlefield):life:2 +auto=@mutated(creature|mybattlefield):name(Put 1/1 counter) all(trigger[to]) name(Put 1/1 counter) counter(1/1) +auto=@mutated(creature|mybattlefield):name(Gain 2 life) life:2 controller text=Whenever a creature you control mutates, put a +1/+1 counter on that creature and you gain 2 life. mana={1}{G} type=Creature @@ -30265,9 +30272,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={3}{R} name(Mutate) -auto=transforms((,newability[@mutated(this):token(Feather Eve)])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Create feather eve) token(Feather Eve) +auto=@mutated(mytgt):name(Create feather eve) token(Feather Eve) text=Mutate {3}{R} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Flying -- Whenever this creature mutates, create a red artifact token named Feather with "{1}, Sacrifice Feather: Return target Phoenix card from your graveyard to the battlefield tapped." mana={2}{R}{R} type=Creature @@ -32698,7 +32706,9 @@ toughness=6 [/card] [card] name=Feather Eve -auto={1}{S}:target(*[Phoenix]|mygraveyard) moveto(myBattlefield) and!(tap(noevent))! +auto={1}{S}:name(Return a phoenix) target(*[phoenix]|mygraveyard) moveto(myBattlefield) and!( tap(noevent) )! +text={1}, Sacrifice Feather: Return target Phoenix card from your graveyard to the battlefield tapped. +color=red type=Artifact [/card] [card] @@ -37134,10 +37144,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={1}{G}{G} name(Mutate) -auto=transforms((,newability[@mutated(this):target(*[artifact;enchantment]|opponentBattlefield) destroy])) -auto=ifnot paid(alternative) then transforms((,newability[becomes(,,green)])) forever all(this) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) && transforms((,newability[becomes(,,green)])) forever -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Destroy artifact or enchantment) target(*[artifact;enchantment]|opponentBattlefield) destroy +auto=@mutated(mytgt):name(Destroy artifact or enchantment) target(*[artifact;enchantment]|opponentBattlefield) destroy text=Mutate {1}{G}{G} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Reach, trample -- Whenever this creature mutates, destroy target artifact or enchantment an opponent controls. mana={3}{G} type=Creature @@ -39118,9 +39128,9 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={3}{G} name(Mutate) -auto=transforms((,newability[@mutated(this):counter(1/1) && counter(1/1)])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover && transforms((,newability[counter(1/1.2)],newability[@mutated(this):name(Put 1/1 counters) counter(1/1.2)])) forever +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder && transforms((,newability[counter(1/1.2)],newability[@mutated(this):name(Put 1/1 counters) counter(1/1.2)])) forever +auto=ifnot paid(alternative) then transforms((,newability[@mutated(this):name(Put 1/1 counters) counter(1/1.2)])) forever text=Mutate {3}{G} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Reach -- Whenever this creature mutates, put two +1/+1 counters on it. mana={2}{G} type=Creature @@ -42801,8 +42811,8 @@ type=Land [card] name=Hall of Storm Giants auto=if compare(type:land:myBattlefield)~morethan~2 then tap(noevent) -auto={T}:Add{U} -auto={5}{U}:name(Becomes giant) transforms((,newability[becomes(Creature Giant^7/7^blue) ueot],newability[@targeted(this) from(*|opponentstack):choice name(This spell costs 3 more) name(This spell costs 3 more) target(*|opponentstack) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) oneshot])) ueot +auto={T}:add{U} +auto={5}{U}:name(Becomes giant) transforms((Creature Giant,setpower=7,settoughness=7,newability[becomes(^^blue) ueot],newability[@targeted(this) from(*|opponentzones):choice name(This spell costs 3 more) name(This spell costs 3 more) target(*|opponentstack) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) oneshot])) ueot text=If you control two or more other lands, Hall of Storm Giants enters the battlefield tapped. -- {T}: Add {U}. -- {5}{U}: Until end of turn, Hall of Storm Giants becomes a 7/7 blue Giant creature with ward {3}. it's still a land. (Whenever it becomes the target of a spell or ability an opponent controls, counter it unless that player pays {3}.) type=Land [/card] @@ -43000,13 +43010,27 @@ type=Sorcery [/card] [card] name=Hammer Jammer -auto={3}{G}:all(this) rolld6 6 winability counter(1/1,lastrollresult) winabilityend loseability counter(1/1,lastrollresult) loseabilityend rolld6end -auto=@dierolled(*|battlefield) result(1) from(controller):name(Get counter) name(Get counter) removeallcounters(1/1) && transforms((,newability[counter(1/1)])) all(this) -auto=@dierolled(*|battlefield) result(2) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.2)])) all(this) -auto=@dierolled(*|battlefield) result(3) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.3)])) all(this) -auto=@dierolled(*|battlefield) result(4) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.4)])) all(this) -auto=@dierolled(*|battlefield) result(5) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.5)])) all(this) -auto=@dierolled(*|battlefield) result(6) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.6)])) all(this) +auto=name(Roll a die) rolld6 6 winability counter(1/1,lastrollresult) winabilityend loseability counter(1/1,lastrollresult) loseabilityend rolld6end +auto=@dierolled(*|mybattlefield) result(1) from(controller):name(Get counter) name(Get counter) removeallcounters(1/1) && transforms((,newability[counter(1/1)])) all(this) +auto=@dierolled(*|mybattlefield) result(2) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.2)])) all(this) +auto=@dierolled(*|mybattlefield) result(3) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.3)])) all(this) +auto=@dierolled(*|mybattlefield) result(4) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.4)])) all(this) +auto=@dierolled(*|mybattlefield) result(5) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.5)])) all(this) +auto=@dierolled(*|mybattlefield) result(6) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.6)])) all(this) +auto=@dierolled(*|mybattlefield) result(7) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.7)])) all(this) +auto=@dierolled(*|mybattlefield) result(8) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.8)])) all(this) +auto=@dierolled(*|mybattlefield) result(9) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.9)])) all(this) +auto=@dierolled(*|mybattlefield) result(10) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.10)])) all(this) +auto=@dierolled(*|mybattlefield) result(11) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.11)])) all(this) +auto=@dierolled(*|mybattlefield) result(12) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.12)])) all(this) +auto=@dierolled(*|mybattlefield) result(13) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.13)])) all(this) +auto=@dierolled(*|mybattlefield) result(14) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.14)])) all(this) +auto=@dierolled(*|mybattlefield) result(15) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.15)])) all(this) +auto=@dierolled(*|mybattlefield) result(16) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.16)])) all(this) +auto=@dierolled(*|mybattlefield) result(17) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.17)])) all(this) +auto=@dierolled(*|mybattlefield) result(18) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.18)])) all(this) +auto=@dierolled(*|mybattlefield) result(19) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.19)])) all(this) +auto=@dierolled(*|mybattlefield) result(20) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.20)])) all(this) text=As Hammer Jammer enters the battlefield, roll a six-sided die. Hammer Jammer enters the battlefield with a number of +1/+1 counters on it equal to the result. -- Whenever you roll a die, remove all +1/+1 counters from Hammer Jammer, then put a number of +1/+1 counters on it equal to the result. mana={3}{R} type=Creature @@ -43312,7 +43336,7 @@ toughness=2 name=Harmonic Prodigy #MISSING: not possible to trigger twice any ability ATM abilities=prowess -auto=@movedTo(*[-creature]|mystack):1/1 ueot +auto=@movedTo(*[-creature]|mystack):name(Gains 1/1 ueot) 1/1 ueot text=Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.) -- If an ability of a Shaman or another Wizard you control triggers, that ability triggers an additional time. mana={1}{R} type=Creature @@ -43452,27 +43476,30 @@ toughness=1 [/card] [card] name=Harvest Pyre -target=creature -auto=if type(*|mygraveyard)~morethan~0 then choice name(Exile 1 card) ability$!moveTo(exile) notatarget(*|mygraveyard)!$ controller && damage:1 target(creature) -auto=if type(*|mygraveyard)~morethan~1 then choice name(Exile 2 cards) ability$!moveTo(exile) notatarget(<2>*|mygraveyard)!$ controller && damage:2 target(creature) -auto=if type(*|mygraveyard)~morethan~2 then choice name(Exile 3 cards) ability$!moveTo(exile) notatarget(<3>*|mygraveyard)!$ controller && damage:3 target(creature) -auto=if type(*|mygraveyard)~morethan~3 then choice name(Exile 4 cards) ability$!moveTo(exile) notatarget(<4>*|mygraveyard)!$ controller && damage:4 target(creature) -auto=if type(*|mygraveyard)~morethan~4 then choice name(Exile 5 cards) ability$!moveTo(exile) notatarget(<5>*|mygraveyard)!$ controller && damage:5 target(creature) -auto=if type(*|mygraveyard)~morethan~5 then choice name(Exile 6 cards) ability$!moveTo(exile) notatarget(<6>*|mygraveyard)!$ controller && damage:6 target(creature) -auto=if type(*|mygraveyard)~morethan~6 then choice name(Exile 7 cards) ability$!moveTo(exile) notatarget(<7>*|mygraveyard)!$ controller && damage:7 target(creature) -auto=if type(*|mygraveyard)~morethan~7 then choice name(Exile 8 cards) ability$!moveTo(exile) notatarget(<8>*|mygraveyard)!$ controller && damage:8 target(creature) -auto=if type(*|mygraveyard)~morethan~8 then choice name(Exile 9 cards) ability$!moveTo(exile) notatarget(<9>*|mygraveyard)!$ controller && damage:9 target(creature) -auto=if type(*|mygraveyard)~morethan~9 then choice name(Exile 10 cards) ability$!moveTo(exile) notatarget(<10>*|mygraveyard)!$ controller && damage:10 target(creature) -auto=if type(*|mygraveyard)~morethan~10 then choice name(Exile 11 cards) ability$!moveTo(exile) notatarget(<11>*|mygraveyard)!$ controller && damage:11 target(creature) -auto=if type(*|mygraveyard)~morethan~11 then choice name(Exile 12 cards) ability$!moveTo(exile) notatarget(<12>*|mygraveyard)!$ controller && damage:12 target(creature) -auto=if type(*|mygraveyard)~morethan~12 then choice name(Exile 13 cards) ability$!moveTo(exile) notatarget(<13>*|mygraveyard)!$ controller && damage:13 target(creature) -auto=if type(*|mygraveyard)~morethan~13 then choice name(Exile 14 cards) ability$!moveTo(exile) notatarget(<14>*|mygraveyard)!$ controller && damage:14 target(creature) -auto=if type(*|mygraveyard)~morethan~14 then choice name(Exile 15 cards) ability$!moveTo(exile) notatarget(<15>*|mygraveyard)!$ controller && damage:15 target(creature) -auto=if type(*|mygraveyard)~morethan~15 then choice name(Exile 16 cards) ability$!moveTo(exile) notatarget(<16>*|mygraveyard)!$ controller && damage:16 target(creature) -auto=if type(*|mygraveyard)~morethan~16 then choice name(Exile 17 cards) ability$!moveTo(exile) notatarget(<17>*|mygraveyard)!$ controller && damage:17 target(creature) -auto=if type(*|mygraveyard)~morethan~17 then choice name(Exile 18 cards) ability$!moveTo(exile) notatarget(<18>*|mygraveyard)!$ controller && damage:18 target(creature) -auto=if type(*|mygraveyard)~morethan~18 then choice name(Exile 19 cards) ability$!moveTo(exile) notatarget(<19>*|mygraveyard)!$ controller && damage:19 target(creature) -auto=if type(*|mygraveyard)~morethan~19 then choice name(Exile 20 cards) ability$!moveTo(exile) notatarget(<20>*|mygraveyard)!$ controller && damage:20 target(creature) +other={1}{R} name(Cast and exile cards) +otherrestriction=type(*|mygraveyard)~morethan~0,type(creature|battlefield)~morethan~0 +restriction=type(creature|battlefield)~morethan~0 +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~0 then choice name(Damage creature and exile 1 card) name(Damage creature and exile 1 card) name(Damage creature and exile 1 card) activate castcard(copied noevent costx!:1:! named!:Harvest Pyre:!) and!( ability$!name(Exile 1 card) target(*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~1 then choice name(Damage creature and exile 2 cards) name(Damage creature and exile 2 cards) name(Damage creature and exile 2 cards) activate castcard(copied noevent costx!:2:! named!:Harvest Pyre:!) and!( ability$!name(Exile 2 cards) target(<2>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~2 then choice name(Damage creature and exile 3 cards) name(Damage creature and exile 3 cards) name(Damage creature and exile 3 cards) activate castcard(copied noevent costx!:3:! named!:Harvest Pyre:!) and!( ability$!name(Exile 3 cards) target(<3>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~3 then choice name(Damage creature and exile 4 cards) name(Damage creature and exile 4 cards) name(Damage creature and exile 4 cards) activate castcard(copied noevent costx!:4:! named!:Harvest Pyre:!) and!( ability$!name(Exile 4 cards) target(<4>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~4 then choice name(Damage creature and exile 5 cards) name(Damage creature and exile 5 cards) name(Damage creature and exile 5 cards) activate castcard(copied noevent costx!:5:! named!:Harvest Pyre:!) and!( ability$!name(Exile 5 cards) target(<5>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~5 then choice name(Damage creature and exile 6 cards) name(Damage creature and exile 6 cards) name(Damage creature and exile 6 cards) activate castcard(copied noevent costx!:6:! named!:Harvest Pyre:!) and!( ability$!name(Exile 6 cards) target(<6>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~6 then choice name(Damage creature and exile 7 cards) name(Damage creature and exile 7 cards) name(Damage creature and exile 7 cards) activate castcard(copied noevent costx!:7:! named!:Harvest Pyre:!) and!( ability$!name(Exile 7 cards) target(<7>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~7 then choice name(Damage creature and exile 8 cards) name(Damage creature and exile 8 cards) name(Damage creature and exile 8 cards) activate castcard(copied noevent costx!:8:! named!:Harvest Pyre:!) and!( ability$!name(Exile 8 cards) target(<8>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~8 then choice name(Damage creature and exile 9 cards) name(Damage creature and exile 9 cards) name(Damage creature and exile 9 cards) activate castcard(copied noevent costx!:9:! named!:Harvest Pyre:!) and!( ability$!name(Exile 9 cards) target(<9>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~9 then choice name(Damage creature and exile 10 cards) name(Damage creature and exile 10 cards) name(Damage creature and exile 10 cards) activate castcard(copied noevent costx!:10:! named!:Harvest Pyre:!) and!( ability$!name(Exile 10 cards) target(<10>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~10 then choice name(Damage creature and exile 11 cards) name(Damage creature and exile 11 cards) name(Damage creature and exile 11 cards) activate castcard(copied noevent costx!:11:! named!:Harvest Pyre:!) and!( ability$!name(Exile 11 cards) target(<11>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~11 then choice name(Damage creature and exile 12 cards) name(Damage creature and exile 12 cards) name(Damage creature and exile 12 cards) activate castcard(copied noevent costx!:12:! named!:Harvest Pyre:!) and!( ability$!name(Exile 12 cards) target(<12>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~12 then choice name(Damage creature and exile 13 cards) name(Damage creature and exile 13 cards) name(Damage creature and exile 13 cards) activate castcard(copied noevent costx!:13:! named!:Harvest Pyre:!) and!( ability$!name(Exile 13 cards) target(<13>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~13 then choice name(Damage creature and exile 14 cards) name(Damage creature and exile 14 cards) name(Damage creature and exile 14 cards) activate castcard(copied noevent costx!:14:! named!:Harvest Pyre:!) and!( ability$!name(Exile 14 cards) target(<14>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~14 then choice name(Damage creature and exile 15 cards) name(Damage creature and exile 15 cards) name(Damage creature and exile 15 cards) activate castcard(copied noevent costx!:15:! named!:Harvest Pyre:!) and!( ability$!name(Exile 15 cards) target(<15>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~15 then choice name(Damage creature and exile 16 cards) name(Damage creature and exile 16 cards) name(Damage creature and exile 16 cards) activate castcard(copied noevent costx!:16:! named!:Harvest Pyre:!) and!( ability$!name(Exile 16 cards) target(<16>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~16 then choice name(Damage creature and exile 17 cards) name(Damage creature and exile 17 cards) name(Damage creature and exile 17 cards) activate castcard(copied noevent costx!:17:! named!:Harvest Pyre:!) and!( ability$!name(Exile 17 cards) target(<17>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~17 then choice name(Damage creature and exile 18 cards) name(Damage creature and exile 18 cards) name(Damage creature and exile 18 cards) activate castcard(copied noevent costx!:18:! named!:Harvest Pyre:!) and!( ability$!name(Exile 18 cards) target(<18>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~18 then choice name(Damage creature and exile 19 cards) name(Damage creature and exile 19 cards) name(Damage creature and exile 19 cards) activate castcard(copied noevent costx!:19:! named!:Harvest Pyre:!) and!( ability$!name(Exile 19 cards) target(<19>*|mygraveyard) moveto(myexile)!$ controller )! +auto=if paid(alternative) then if type(*|mygraveyard)~morethan~19 then choice name(Damage creature and exile 20 cards) name(Damage creature and exile 20 cards) name(Damage creature and exile 20 cards) activate castcard(copied noevent costx!:20:! named!:Harvest Pyre:!) and!( ability$!name(Exile 20 cards) target(<20>*|mygraveyard) moveto(myexile)!$ controller )! +auto=ifnot paid(alternative) then name(Damage creature) name(Damage creature) target(creature|battlefield) damage:fullpaid text=As an additional cost to cast Harvest Pyre, exile X cards from your graveyard. -- Harvest Pyre deals X damage to target creature. mana={1}{R} type=Instant @@ -43601,8 +43628,8 @@ toughness=4 [card] name=Hauken's Insight backside=Jacob Hauken, Inspector -auto=@each my upkeep:name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( counter(0/0,1,GlassExiled) )! -auto=lord(*[counter{0/0.1.GlassExiled}]|myexile) transforms((,newability[this(variable{controllerturn}>0) canplayfromexile],newability[this(variable{controllerturn}>0) zerocast])) +auto=@each my upkeep:name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( becomes(GlassExiled) forever )! +auto=this(variable{controllerturn}>0) {0}:name(Can cast exiled card) name(Can cast exiled card) target(GlassExiled|myexile) transforms((,newability[canplayfromexile ueot],newability[zerocast ueot])) ueot limit:1 text=At the beginning of your upkeep, exile the top card of your library face-down. You may look at that card for as long as it remains exiled. -- Once during each of your turns, you may play a land or cast a spell from the cards exiled by this permanent without paying its mana cost. // Jacob Hauken, Inspector color=blue type=Legendary Enchantment @@ -43812,8 +43839,7 @@ type=Legendary Artifact [/card] [card] name=Hazoret's Undying Fury -auto=moverandom(*[manacost<=5;-land]) from(mylibrary) to(mybattlefield) -auto=all(land|mybattlefield) frozen +auto=shuffle controller && all(*[zpos=4]|mylibrary) moveto(myexile) and!( transforms((tobehaz,newability[all(land|mybattlefield) frozen],newability[all(*[zpos<=4]|mylibrary) moveto(myexile) and!( becomes(tobehaz) ueot)!],newability[name(Cast exiled cards) target(tobehaz[-land&manacost<=5]|myexile) activate castcard(normal)])) ueot )! text=Shuffle your library, then exile the top four cards. You may cast any number of nonland cards with mana value 5 or less from among them without paying their mana costs. Lands you control don't untap during your next untap step. mana={4}{R}{R} type=Sorcery @@ -44476,8 +44502,7 @@ toughness=4 [/card] [card] name=Herald's Horn -auto=chooseatype transforms(([@each my upkeep:name(Reveal) reveal:1 optionone target(chosentype|reveal) transforms(([may moveTo(myhand)])) oneshot optiononeend optiontwo target(*|reveal) moveto(mylibrary) optiontwoend revealend])) chooseend -auto=lord(*[creature&chosentype]|mycastingzone) altercost(colorless,-1) +auto=chooseatype transforms((,newability[lord(creature[chosentype]|mycastingzone) changecost(colorless:-1)],newability[@each my upkeep restriction{type(creature[chosentype&zpos=1]|mylibrary)~equalto~0}:name(Look top card) all(*[zpos=1]|mylibrary) moveto(myhand) and!( name(Put back) target(*[fresh]|myhand) moveto(mylibrary) )!],newability[@each my upkeep restriction{type(creature[chosentype&zpos=1]|mylibrary)~morethan~0}:name(Look top card) all(*[zpos=1]|mylibrary) moveto(myhand) and!( transforms((,newability[choice name(Keep in hand) donothing],newability[choice name(Put back) moveto(mylibrary)])) oneshot )! ])) forever chooseend text=As Herald's Horn enters the battlefield, choose a creature type. -- Creature spells you cast of the chosen type cost {1} less to cast. -- At the beginning of your upkeep, look at the top card of your library. If it's a creature card of the chosen type, you may reveal it and put it into your hand. mana={3} type=Artifact @@ -44670,8 +44695,8 @@ type=Sorcery [card] name=Heron of Hope abilities=flying,lifefaker -auto=@lifeof(player) from(*[-lifefaker]|*):life:1 controller -auto={1}{W}:name(Gains lifelink) transforms((,newability[lifelink])) ueot +auto=@lifeof(player) from(*[-lifefaker]|*):name(Gain 1 life) life:1 controller +auto={1}{W}:name(Gains lifelink) transforms((,newability[lifelink],newability[@damaged(player) from(this):name(Gain 1 life) life:1 controller],newability[@damaged(*|battlefield) from(this):name(Gain 1 life) life:1 controller])) ueot text=Flying -- If you would gain life, you gain that much life plus 1 instead. -- {1}{W}: Heron of Hope gains lifelink until end of turn. mana={3}{W} type=Creature @@ -46474,9 +46499,9 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={2}{W} name(Mutate) -auto=transforms((,newability[@mutated(this):name(All creatures X/X ueot) thisforeach(mutations) all(other creature|myBattlefield) 1/1 ueot])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover && transforms((,newability[name(All creatures X/X ueot) thisforeach(mutations) all(other creature|myBattlefield) 1/1 ueot],newability[@mutated(this):name(All creatures X/X ueot) thisforeach(mutations) all(other creature|myBattlefield) 1/1 ueot])) forever +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder && transforms((,newability[name(All creatures X/X ueot) thisforeach(mutations) all(other creature|myBattlefield) 1/1 ueot],newability[@mutated(this):name(All creatures X/X ueot) thisforeach(mutations) all(other creature|myBattlefield) 1/1 ueot])) forever +auto=ifnot paid(alternative) then transforms((,newability[@mutated(this):name(All creatures X/X ueot) thisforeach(mutations) all(other creature|myBattlefield) 1/1 ueot])) forever text=Mutate {2}{W} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Whenever this creature mutates, other creatures you control get +X/+X until end of turn, where X is the number of times this creature has mutated. mana={3}{W} type=Creature @@ -47170,10 +47195,11 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={3}{RG}{U}{U} name(Mutate) -auto=transforms((,newability[@mutated(this):ability$!name(Reveal) reveal:1 revealzone(mylibrary) revealuntil(*[-land;-instant;-sorcery]|mylibrary) optionone name(May move non land permanent on battlefield) target(*[-land;-instant;-sorcery]|myreveal) moveto(mybattlefield) optiononeend optiontwo name(Move revealed cards to exile) all(*|myreveal) moveto(myexile) optiontwoend afterrevealed name(Move last exiled non land permanent to hand) moveto(myhand) target(*[fresh;-land;-instant;-sorcery]|myexile) afterrevealedend revealend!$ controller])) -auto=ifnot paid(alternative) then transforms((,newability[becomes(,,green,blue,red)])) forever all(this) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) && transforms((,newability[becomes(,,green,blue,red)])) forever -auto=if paid(alternative) then name(Mutate Under) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +aicode=activate transforms((,newability[target(*[zpos=findfirsttypepermanent]|mylibrary) moveto(myexile) and!( transforms((,newability[if cantargetcard(*[land]|*) then moveto(myexile) and!( all(*[zpos<=findfirsttypepermanent]|mylibrary) moveto(myexile) )!],newability[if cantargetcard(*[creature]|*) then moveto(mybattlefield) and!( all(*[zpos<=findfirsttypepermanent]|mylibrary) moveto(myexile) )!],newability[if cantargetcard(*[-land&-creature]|*) then moveto(myhand) and!( all(*[zpos<=findfirsttypepermanent]|mylibrary) moveto(myexile) )!])) oneshot )!])) oneshot +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Exile top cards) reveal:1 revealzone(mylibrary) revealuntil(*[-land&permanent]|mylibrary) optionone name(Choose nonland permanent) target(*[-land&permanent]|myreveal) moveto(myexile) and!( becomes(tobeill) ueot )! optiononeend optiontwo name(Exile revealed cards) all(*|myreveal) moveto(myexile) optiontwoend afterrevealed all(*[tobeill]|myexile) transforms((,newability[choice name(Put in play) moveto(mybattlefield)],newability[choice name(Put in hand) moveto(myhand)])) oneshot afterrevealedend revealend +auto=@mutated(mytgt):name(Exile top cards) reveal:1 revealzone(mylibrary) revealuntil(*[-land&permanent]|mylibrary) optionone name(Choose nonland permanent) target(*[-land&permanent]|myreveal) moveto(myexile) and!( becomes(tobeill) ueot )! optiononeend optiontwo name(Exile revealed cards) all(*|myreveal) moveto(myexile) optiontwoend afterrevealed all(*[tobeill]|myexile) transforms((,newability[choice name(Put in play) moveto(mybattlefield)],newability[choice name(Put in hand) moveto(myhand)])) oneshot afterrevealedend revealend text=Mutate {3}{RG}{U}{U} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Flying, trample -- Whenever this creature mutates, exile cards from the top of your library until you exile a nonland permanent card. Put that card onto the battlefield or into your hand. mana={2}{G}{U}{R} type=Legendary Creature @@ -48654,9 +48680,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={2}{B} name(Mutate) -auto=transforms((,newability[@mutated(this):name(Life and damage) thisforeach(mutations) life:1 controller && life:-1 opponent])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Gain life) lifeleech:-mutations opponent +auto=@mutated(mytgt):name(Gain life) lifeleech:-mutations opponent text=Mutate {2}{B} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Deathtouch -- Whenever this creature mutates, each opponent loses X life and you gain X life, where X is the number of times this creature has mutated. mana={3}{B} type=Creature @@ -57311,28 +57338,28 @@ toughness=1 [/card] [card] name=Lonis, Cryptozoologist -aicode=activate target(*[-land;zpos<=1]|opponentlibrary) moveto(myBattlefield) +aicode=activate transforms((,newability[target(*[-land&zpos<=1]|opponentlibrary) moveto(myBattlefield)])) oneshot auto=@movedTo(other creature[-token]|mybattlefield):name(Create clue) token(Clue) -auto={T}{S(clue[token]|myBattlefield)}:name(Sacrifice 1 clue) reveal:1 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 2 clues) reveal:2 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 3 clues) reveal:3 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 4 clues) reveal:4 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 5 clues) reveal:5 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 6 clues) reveal:6 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 7 clues) reveal:7 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 8 clues) reveal:8 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 9 clues) reveal:9 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 10 clues) reveal:10 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 11 clues) reveal:11 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 12 clues) reveal:12 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 13 clues) reveal:13 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 14 clues) reveal:14 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 15 clues) reveal:15 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 16 clues) reveal:16 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 17 clues) reveal:17 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 18 clues) reveal:18 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 19 clues) reveal:19 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend -auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 20 clues) reveal:20 revealzone(opponentlibrary) optionone target(*|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}:name(Sacrifice 1 clue) reveal:1 revealzone(opponentlibrary) optionone target(*[-land;manacost<=1]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 2 clues) reveal:2 revealzone(opponentlibrary) optionone target(*[-land;manacost<=2]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 3 clues) reveal:3 revealzone(opponentlibrary) optionone target(*[-land;manacost<=3]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 4 clues) reveal:4 revealzone(opponentlibrary) optionone target(*[-land;manacost<=4]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 5 clues) reveal:5 revealzone(opponentlibrary) optionone target(*[-land;manacost<=5]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 6 clues) reveal:6 revealzone(opponentlibrary) optionone target(*[-land;manacost<=6]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 7 clues) reveal:7 revealzone(opponentlibrary) optionone target(*[-land;manacost<=7]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 8 clues) reveal:8 revealzone(opponentlibrary) optionone target(*[-land;manacost<=8]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 9 clues) reveal:9 revealzone(opponentlibrary) optionone target(*[-land;manacost<=9]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 10 clues) reveal:10 revealzone(opponentlibrary) optionone target(*[-land;manacost<=10]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 11 clues) reveal:11 revealzone(opponentlibrary) optionone target(*[-land;manacost<=11]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 12 clues) reveal:12 revealzone(opponentlibrary) optionone target(*[-land;manacost<=12]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 13 clues) reveal:13 revealzone(opponentlibrary) optionone target(*[-land;manacost<=13]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 14 clues) reveal:14 revealzone(opponentlibrary) optionone target(*[-land;manacost<=14]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 15 clues) reveal:15 revealzone(opponentlibrary) optionone target(*[-land;manacost<=15]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 16 clues) reveal:16 revealzone(opponentlibrary) optionone target(*[-land;manacost<=16]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 17 clues) reveal:17 revealzone(opponentlibrary) optionone target(*[-land;manacost<=17]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 18 clues) reveal:18 revealzone(opponentlibrary) optionone target(*[-land;manacost<=18]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 19 clues) reveal:19 revealzone(opponentlibrary) optionone target(*[-land;manacost<=19]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={T}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}{S(clue[token]|myBattlefield)}:name(Sacrifice 20 clues) reveal:20 revealzone(opponentlibrary) optionone target(*[-land;manacost<=20]|reveal) moveto(myBattlefield) optiononeend optiontwo target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend text=Whenever another nontoken creature enters the battlefield under your control, investigate. -- {T}, Sacrifice X Clues: Target opponent reveals the top X cards of their library. You may put a nonland permanent card with mana value X or less from among them onto the battlefield under your control. That player puts the rest on the bottom of their library in a random order. mana={G}{U} type=Legendary Creature @@ -57495,9 +57522,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={UR}{UR} name(Mutate) -auto=transforms((,newability[@mutated(this):moveto(myhand) target(*[instant;sorcery]|mygraveyard)])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Return to hand) target(*[instant;sorcery]|mygraveyard) moveto(myhand) +auto=@mutated(mytgt):name(Return to hand) target(*[instant;sorcery]|mygraveyard) moveto(myhand) text=Mutate {UR}{UR} -- (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Whenever this creature mutates, return target instant or sorcery card from your graveyard to your hand. mana={1}{U}{R} type=Creature @@ -58763,9 +58791,10 @@ auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip -auto=transforms((,newability[@mutated(this):life:4 controller])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Gain 4 life) life:4 controller +auto=@mutated(this):name(Gain 4 life) life:4 controller text=Mutate {3}{W} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Vigilance -- Whenever this creature mutates, you gain 4 life. mana={4}{W} type=Creature @@ -61187,10 +61216,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={2}{G} name(Mutate) -auto=transforms((,newability[@mutated(this):name(Search basic land) target(land[basic]|mylibrary) moveto(myBattlefield) and!( tap(noevent) )!])) -auto=ifnot paid(alternative) then transforms((,newability[becomes(,,green)])) forever all(this) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) && transforms((,newability[becomes(,,green)])) forever -auto=if paid(alternative) then name(Mutate Under) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Search basic land) target(land[basic]|mylibrary) moveto(myBattlefield) and!( transforms((,newability[tap(noevent)],newability[shuffle])) oneshot )! +auto=@mutated(mytgt):name(Search basic land) target(land[basic]|mylibrary) moveto(myBattlefield) and!( transforms((,newability[tap(noevent)],newability[shuffle])) oneshot )! text=Mutate {2}{G} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Whenever this creature mutates, search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library. mana={3}{G} type=Creature @@ -61419,10 +61448,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={4}{B} name(Mutate) -auto=transforms((,newability[@mutated(this):ability$!name(Reveal) reveal:1 revealzone(opponentlibrary) optionone name(Exile opponent top card?) target(*|myreveal) moveto(opponentexile) optiononeend optiontwo name(Play exiled card) target(<1>*|myreveal) activate castcard(normal) optiontwoend revealend!$ controller])) -auto=ifnot paid(alternative) then transforms((,newability[becomes(,,black)])) forever all(this) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) && transforms((,newability[becomes(,,black)])) forever -auto=if paid(alternative) then name(Mutate Under) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Exile top card) all(*[zpos=1]|opponentlibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile forever])) forever )! +auto=@mutated(mytgt):name(Exile top card) all(*[zpos=1]|opponentlibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile forever])) forever )! text=Mutate {4}{B} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Flying -- Whenever this creature mutates, exile the top card of each opponent's library face down. You may look at and play those cards for as long as they remain exiled. mana={4}{B}{B} type=Creature @@ -64111,7 +64140,7 @@ toughness=5 [/card] [card] name=Mysterious Egg -auto=@mutated(this):counter(1/1) +auto=@mutated(this):name(Put 1/1 counter) counter(1/1) text=Whenever this creature mutates, put a +1/+1 counter on it. mana={1} type=Creature @@ -64989,9 +65018,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={2}{WB}{WB} name(Mutate) -auto=transforms((,newability[@mutated(this):target(creature[manacost<=3]|mygraveyard) moveTo(myBattlefield)])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Return creature) target(creature[manacost<=3]|mygraveyard) moveTo(myBattlefield) +auto=@mutated(mytgt):name(Return creature) target(creature[manacost<=3]|mygraveyard) moveTo(myBattlefield) text=Mutate {2}{WB}{WB} -- (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Whenever this creature mutates, return target creature card with mana value 3 or less from your graveyard to the battlefield. mana={1}{W}{B} type=Creature @@ -65392,9 +65422,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={4}{GW}{B}{B} name(Mutate) -auto=transforms((,newability[@mutated(this):target(creature[manacost<=10]|mygraveyard) moveTo(myBattlefield)])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Return creatures) target(creature[power<=10]|mygraveyard) moveTo(myBattlefield) +auto=@mutated(mytgt):name(Return creatures) target(creature[power<=10]|mygraveyard) moveTo(myBattlefield) text=Mutate {4}{GW}{B}{B} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Deathtouch, lifelink -- Whenever this creature mutates, return any number of target creature cards with total power 10 or less from your graveyard to the battlefield. mana={2}{W}{B}{G} type=Legendary Creature @@ -69108,9 +69139,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={1}{B}{G}{U} name(Mutate) -auto=transforms((,newability[@combatdamaged(player) from(this):moveto(myhand) target(creature[mutate]|mygraveyard)])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@combatdamaged(player) from(this):name(Return creature) target(creature[mutate]|mygraveyard) moveto(myhand) +auto=@combatdamaged(player) from(mytgt):name(Return creature) target(creature[mutate]|mygraveyard) moveto(myhand) text=Mutate {1}{B}{G}{U} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Trample -- Whenever this creature deals combat damage to a player, return target creature card with mutate from your graveyard to your hand. mana={3}{B}{G}{U} type=Legendary Creature @@ -69992,10 +70024,9 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={G}{U} name(Mutate) -auto=ifnot paid(alternative) then transforms((,newability[becomes(,,blue,green)])) forever all(this) -auto=transforms((,newability[name(Look top card) {1}{T}:ability$!name(Reveal) reveal:1 optionone if type(*[-land]|reveal)~morethan~0 then name(put card into your hand) name(put card into your hand) target(*|reveal) moveto(myhand) else name(May move to battlefield) target(*[land]|reveal) moveto(mybattlefield) optiononeend optiontwo name(Put land in hand) target(<1>*[land]|reveal) moveto(myhand) optiontwoend revealend!$ controller])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) && becomes(,,blue,green) forever -auto=if paid(alternative) then name(Mutate Under) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=transforms((,newability[{1}{T}:name(Look top card) all(*[zpos=1]|mylibrary) moveto(myhand) and!( transforms((,newability[if cantargetcard(*[land]|*) then choice name(Put in play) name(Put in play) moveto(mybattlefield)],newability[if cantargetcard(*[land]|*) then choice name(Don't in play) name(Don't in play) donothing])) forever )!])) text=Mutate {G}{U} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- {1}, {T}: Look at the top card of your library. If it's a land card, you may put it onto the battlefield. If you don't put the card onto the battlefield, put it into your hand. mana={2}{G}{U} type=Creature @@ -72271,7 +72302,7 @@ toughness=1 [/card] [card] name=Pollywog Symbiote -auto=lord(*[mutate]|myhand) altercost(colorless,-1) +auto=lord(creature[mutate]|mycastingzone) altercost(colorless,-1) auto=@movedTo(creature[mutate]|mystack):_LOOT_ text=Each creature spell you cast costs {1} less to cast if it has mutate. -- Whenever you cast a creature spell, if it has mutate, draw a card, then discard a card. mana={1}{U} @@ -72486,9 +72517,9 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={2}{R} name(Mutate) -auto=transforms((,newability[name(damage target) {T}:name(damage target) thisforeach(mutations) damage:1 target(*)])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover && transforms((,newability[{T}:name(Damage target) name(Damage target) damage:mutations target(anytarget)])) forever +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder && transforms((,newability[{T}:name(Damage target) name(Damage target) damage:mutations target(anytarget)])) forever +auto=ifnot paid(alternative) then transforms((,newability[{T}:name(Damage target) name(Damage target) damage:mutations target(anytarget)])) forever text=Mutate {2}{R} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- {T}: This creature deals X damage to any target, where X is the number of times this creature has mutated. mana={3}{R} type=Creature @@ -72636,9 +72667,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={3}{U} name(Mutate) -auto=transforms((,newability[@mutated(this):may target(creature|opponentbattlefield) moveTo(opponenthand)])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):may name(Return to hand) target(creature|opponentbattlefield) moveTo(opponenthand) +auto=@mutated(mytgt):may name(Return to hand) target(creature|opponentbattlefield) moveTo(opponenthand) text=Mutate {3}{U} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Flash -- Whenever this creature mutates, you may return target creature an opponent controls to its owner's hand. mana={4}{U} type=Creature @@ -77305,9 +77337,9 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={1}{RW}{RW} name(Mutate) -auto=transforms((,newability[@mutated(this):all(other creature|myBattlefield) 2/1 ueot])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover && transforms((,newability[name(All creatures gain 2/1) all(other creature|myBattlefield) 2/1 ueot],newability[@mutated(this):name(All creatures gain 2/1) all(other creature|myBattlefield) 2/1 ueot])) forever +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder && transforms((,newability[name(All creatures gain 2/1) all(other creature|myBattlefield) 2/1 ueot],newability[@mutated(this):name(All creatures gain 2/1) all(other creature|myBattlefield) 2/1 ueot])) forever +auto=ifnot paid(alternative) then transforms((,newability[@mutated(this):name(All creatures gain 2/1) all(other creature|myBattlefield) 2/1 ueot])) forever text=Mutate {1}{RW}{RW} -- (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Whenever this creature mutates, other creatures you control get +2/+1 until end of turn. mana={R}{W} type=Creature @@ -82950,9 +82982,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={3}{G} name(Mutate) -auto=transforms((,newability[@mutated(this):name(Destroy and create token) ability$!name(Choose one) choice name(Controller) target(*[-creature]|myBattlefield) destroy && token(Beast Saw) controller _ choice name(opponent) target(*[-creature]|opponentBattlefield) destroy && token(Beast Saw) opponent!$ controller])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Under) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Destroy and create token) target(*[-creature]|battlefield) destroy and!( transforms((,newability[token(Beast Saw) controller])) oneshot )! +auto=@mutated(mytgt):name(Destroy and create token) target(*[-creature]|battlefield) destroy and!( transforms((,newability[token(Beast Saw) controller])) oneshot )! text=Mutate {3}{G} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Trample -- Whenever this creature mutates, destroy target noncreature permanent. Its controller creates a 3/3 green Beast creature token. mana={4}{G}{G} type=Creature @@ -83961,9 +83994,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={1}{U} name(Mutate) -auto=transforms((,newability[@combatdamaged(player) from(this):draw:1 controller])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@combatdamaged(player) from(this):name(Draw a card) draw:1 controller +auto=@combatdamaged(player) from(mytgt):name(Draw a card) draw:1 controller text=Mutate {1}{U} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Flash -- Whenever this creature deals combat damage to a player, draw a card. mana={1}{U}{U} type=Creature @@ -89434,9 +89468,12 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={2}{BR}{W}{W} name(Mutate) -auto=transforms((,newability[@mutated(this):life:4 controller],newability[@mutated(this):damage:4 target(*[creature;planeswalker]|opponentBattlefield)])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Gain 4 life) life:4 controller +auto=@mutated(this):name(Damage creature or planeswalker) damage:4 target(*[creature;planeswalker]|opponentBattlefield) +auto=@mutated(mytgt):name(Gain 4 life) life:4 controller +auto=@mutated(mytgt):name(Damage creature or planeswalker) damage:4 target(*[creature;planeswalker]|opponentBattlefield) text=Mutate {2}{BR}{W}{W} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Double strike -- Whenever this creature mutates, it deals 4 damage to target creature or planeswalker an opponent controls and you gain 4 life. mana={1}{R}{W}{B} type=Legendary Creature @@ -90549,10 +90586,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={5}{U} name(Mutate) -auto=transforms((,newability[@mutated(this):target(artifact[-creature]|opponentbattlefield) moveTo(myBattlefield)])) -auto=ifnot paid(alternative) then transforms((,newability[becomes(,,blue)])) forever all(this) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) && transforms((,newability[becomes(,,blue)])) forever -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Steal noncreature artifact) target(artifact[-creature]|opponentbattlefield) moveTo(myBattlefield) +auto=@mutated(mytgt):name(Steal noncreature artifact) target(artifact[-creature]|opponentbattlefield) moveTo(myBattlefield) text=Mutate {5}{U} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Flying -- Whenever this creature mutates, gain control of target noncreature artifact. mana={4}{U} type=Creature @@ -94908,8 +94945,8 @@ toughness=5 [card] name=Surgeon General Commander #The augment trigger is not supported ATM -auto=@targeted(creature|myBattlefield) from(Aura|mycastingzone):draw:1 controller -auto=@mutated(creature|myBattlefield):draw:1 controller +auto=@targeted(creature|myBattlefield) from(Aura|mycastingzone):name(Draw a card) draw:1 controller +auto=@mutated(creature|myBattlefield):name(Draw a card) draw:1 controller auto={T}:add{W} auto={T}:add{U} auto={T}:add{B} @@ -99047,17 +99084,6 @@ power=10 toughness=10 [/card] [card] -name=The Wandering Emperor -abilities=flash -auto=counter(0/0,3,loyalty) -auto={C(0/0,+1,Loyalty)}:target(creature) counter(1/1) && first strike ueot -auto={C(0/0,-1,Loyalty)}:create(samurai:creature samurai:2/2:white:vigilance) -auto={C(0/0,-2,Loyalty)}:moveto(exile) target(creature[tapped ]) && life:2 -text=Flash -- As long as The Wandering Emperor entered the battlefield this turn, you may activate her loyalty abilities any time you could cast an instant. -- [+1]: Put a +1/+1 counter on up to one target creature. It gains first strike until end of turn. -- [-1]: Create a 2/2 white Samurai creature token with vigilance. -- [-2]: Exile target tapped creature. You gain 2 life. -mana={2}{W}{W} -type=Legendary Planeswalker -[/card] -[card] name=The Watcher in the Water auto=tap(noevent) auto=counter(0/0,9,Stun) @@ -102466,9 +102492,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={3}{GU}{GU} name(Mutate) -auto=transforms((,newability[@mutated(this):token(Beast Tru)])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):name(Create beast) token(Beast Tru) +auto=@mutated(mytgt):name(Create beast) token(Beast Tru) text=Mutate {3}{GU}{GU} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Whenever this creature mutates, create a 3/3 green Beast creature token. mana={1}{G}{U} type=Creature @@ -104602,9 +104629,10 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={1}{WU}{R}{R} name(Mutate) -auto=transforms((,newability[@mutated(this):may castcard(normal) target(*[-creature;manacost<=3]|mygraveyard)])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder +auto=@mutated(this):may name(Cast noncreature card) target(*[-creature&manacost<=3]|mygraveyard) activate castcard(normal) +auto=@mutated(mytgt):may name(Cast noncreature card) target(*[-creature&manacost<=3]|mygraveyard) activate castcard(normal) text=Mutate {1}{WU}{R}{R} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Flying, first strike -- Whenever this creature mutates, you may cast target noncreature card with mana value 3 or less from your graveyard without paying its mana cost. mana={U}{R}{W} type=Legendary Creature @@ -105426,7 +105454,8 @@ toughness=4 [card] name=Venerated Rotpriest abilities=poisontoxic -auto=@targeted(creature|mybattlefield) from(*|myCastingzone):alterpoison:1 target(opponent) +auto=@targeted(creature|mybattlefield) from(*|myCastingzone):name(Opponent gets a poison counter) alterpoison:1 opponent +auto=@targeted(creature|mybattlefield) from(*|opponentCastingzone):name(Opponent gets a poison counter) alterpoison:1 opponent text=Toxic 1 (Players dealt combat damage by this creature also get a poison counter.) -- Whenever a creature you control becomes the target of a spell, target opponent gets a poison counter. mana={G} type=Creature @@ -106756,7 +106785,7 @@ toughness=0 [/card] [card] name=Vizier of Remedies -auto=@counteradded(-1/-1) from(creature|myBattlefield):counter(-1/-1,-1) all(trigger[from]) limit:1 +auto=@totalcounteradded(-1/-1) from(creature|myBattlefield):name(That many minus one) all(trigger[from]) name(That many minus one) counter(-1/-1,-1) text=If one or more -1/-1 counters would be put on a creature you control, that many -1/-1 counters minus one are put on it instead. mana={1}{W} type=Creature @@ -107483,9 +107512,9 @@ auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone) auto={9999}:equip other={2}{W} name(Mutate) -auto=transforms((,newability[@mutated(this):counter(1/1)])) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) -auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Over) name(Mutate Over) target(other creature[-human]|mybattlefield) mutateover && transforms((,newability[counter(1/1)],newability[@mutated(this):name(Put 1/1 counter) counter(1/1)])) forever +auto=if paid(alternative) then if compare(mutations)~equalto~0 then choice name(Mutate Over) name(Mutate Under) name(Mutate Under) target(other creature[-human]|mybattlefield) mutateunder && transforms((,newability[counter(1/1)],newability[@mutated(this):name(Put 1/1 counter) counter(1/1)])) forever +auto=ifnot paid(alternative) then transforms((,newability[@mutated(this):name(Put 1/1 counter) counter(1/1)])) forever text=Mutate {2}{W} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- Flying -- Whenever this creature mutates, put a +1/+1 counter on it. mana={3}{W} type=Creature @@ -111292,7 +111321,7 @@ type=Artifact [/card] [card] name=Zagoth Mamba -auto=@mutated(this):target(creature|opponentBattlefield) -2/-2 ueot +auto=@mutated(this):name(Opponent creature gains -2/-2) target(creature|opponentBattlefield) -2/-2 ueot text=Whenever this creature mutates, target creature an opponent controls gets -2/-2 until end of turn. mana={B} type=Creature diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index e31d1a431..9e763e0f3 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -1,6 +1,6 @@ #Primitives Pack for Wagic the Homebrew. #Please keep these card alphabetized, and try to have the "name=" line at the top of each card -#I sorted this programmatically so the other comments are removed except for AUTO_DEFINE - Vitty85 21-07-2023 +#I sorted this programmatically so the other comments are removed except for AUTO_DEFINE - Vitty85 24-07-2023 [card] name=Abandon Reason target=creature @@ -29105,8 +29105,8 @@ toughness=2 [/card] [card] name=Devoted Druid -auto={T}:Add{G} -auto={C(-1/-1,1)}:untap +auto={T}:add{G} +auto={0}:name(Put counter and untap) transforms((,newability[counter(-1/-1)],newability[untap])) oneshot text={T}: Add {G} to your mana pool. -- Put a -1/-1 counter on Devoted Druid: Untap Devoted Druid. mana={1}{G} type=Creature @@ -55019,7 +55019,8 @@ toughness=3 [card] name=Hollow Specter abilities=flying -auto=@combatdamagefoeof(player) from(this):may pay({1}) name(Specter Pay 1) Reveal:1 revealzone(opponenthand) optionone choice name(choose Discards) target(<1>*|reveal) transforms((,newability[moveto(ownerhand) and!(reject)!])) oneshot optiononeend optiontwo name(Put Back) target(*|reveal) transforms((,newability[all(*|reveal) moveto(ownerhand)])) oneshot optiontwoend revealend +auto=@combatdamagefoeof(player) from(this) restriction{type(*|opponenthand)~morethan~0}:may name(Pay x and look) transforms((,newability[choice name(Pay 1 and look) ability$!name(Pay 1 and look) pay({1}) name(Pay 1 and look) target(*[zpos<=1]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~1 then choice name(Pay 2 and look) name(Pay 2 and look) ability$!name(Pay 2 and look) pay({2}) name(Pay 2 and look) target(*[zpos<=2]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~2 then choice name(Pay 3 and look) name(Pay 3 and look) name(Pay 3 and look) ability$!name(Pay 3 and look) pay({3}) name(Pay 3 and look) target(*[zpos<=3]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~3 then choice name(Pay 4 and look) name(Pay 4 and look) name(Pay 4 and look) ability$!name(Pay 4 and look) pay({4}) name(Pay 4 and look) target(*[zpos<=4]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~4 then choice name(Pay 5 and look) name(Pay 5 and look) name(Pay 5 and look) ability$!name(Pay 5 and look) pay({5}) name(Pay 5 and look) target(*[zpos<=5]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~5 then choice name(Pay 6 and look) name(Pay 6 and look) name(Pay 6 and look) ability$!name(Pay 6 and look) pay({6}) name(Pay 6 and look) target(*[zpos<=6]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~6 then choice name(Pay 7 and look) name(Pay 7 and look) name(Pay 7 and look) ability$!name(Pay 7 and look) pay({7}) name(Pay 7 and look) target(*[zpos<=7]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~7 then choice name(Pay 8 and look) name(Pay 8 and look) name(Pay 8 and look) ability$!name(Pay 8 and look) pay({8}) name(Pay 8 and look) target(*[zpos<=8]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~8 then choice name(Pay 9 and look) name(Pay 9 and look) name(Pay 9 and look) ability$!name(Pay 9 and look) pay({9}) name(Pay 9 and look) target(*[zpos<=9]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~9 then choice name(Pay 10 and look) name(Pay 10 and look) name(Pay 10 and look) ability$!name(Pay 10 and look) pay({10}) name(Pay 10 and look) target(*[zpos<=10]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~10 then choice name(Pay 11 and look) name(Pay 11 and look) name(Pay 11 and look) ability$!name(Pay 11 and look) pay({11}) name(Pay 11 and look) target(*[zpos<=11]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~11 then choice name(Pay 12 and look) name(Pay 12 and look) name(Pay 12 and look) ability$!name(Pay 12 and look) pay({12}) name(Pay 12 and look) target(*[zpos<=12]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~12 then choice name(Pay 13 and look) name(Pay 13 and look) name(Pay 13 and look) ability$!name(Pay 13 and look) pay({13}) name(Pay 13 and look) target(*[zpos<=13]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~13 then choice name(Pay 14 and look) name(Pay 14 and look) name(Pay 14 and look) ability$!name(Pay 14 and look) pay({14}) name(Pay 14 and look) target(*[zpos<=14]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~14 then choice name(Pay 15 and look) name(Pay 15 and look) name(Pay 15 and look) ability$!name(Pay 15 and look) pay({15}) name(Pay 15 and look) target(*[zpos<=15]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~15 then choice name(Pay 16 and look) name(Pay 16 and look) name(Pay 16 and look) ability$!name(Pay 16 and look) pay({16}) name(Pay 16 and look) target(*[zpos<=16]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~16 then choice name(Pay 17 and look) name(Pay 17 and look) name(Pay 17 and look) ability$!name(Pay 17 and look) pay({17}) name(Pay 17 and look) target(*[zpos<=17]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~17 then choice name(Pay 18 and look) name(Pay 18 and look) name(Pay 18 and look) ability$!name(Pay 18 and look) pay({18}) name(Pay 18 and look) target(*[zpos<=18]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~18 then choice name(Pay 19 and look) name(Pay 19 and look) name(Pay 19 and look) ability$!name(Pay 19 and look) pay({19}) name(Pay 19 and look) target(*[zpos<=19]|opponenthand) reject!$ controller],newability[if type(*|opponenthand)~morethan~19 then choice name(Pay 20 and look) name(Pay 20 and look) name(Pay 20 and look) ability$!name(Pay 20 and look) pay({20}) name(Pay 20 and look) target(*[zpos<=20]|opponenthand) reject!$ controller])) oneshot +auto=@combatdamageof(player) from(this) restriction{type(*|myhand)~morethan~0}:may name(Pay x and look) transforms((,newability[choice name(Pay 1 and look) ability$!name(Pay 1 and look) pay({1}) name(Pay 1 and look) target(*[zpos<=1]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~1 then choice name(Pay 2 and look) name(Pay 2 and look) ability$!name(Pay 2 and look) pay({2}) name(Pay 2 and look) target(*[zpos<=2]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~2 then choice name(Pay 3 and look) name(Pay 3 and look) name(Pay 3 and look) ability$!name(Pay 3 and look) pay({3}) name(Pay 3 and look) target(*[zpos<=3]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~3 then choice name(Pay 4 and look) name(Pay 4 and look) name(Pay 4 and look) ability$!name(Pay 4 and look) pay({4}) name(Pay 4 and look) target(*[zpos<=4]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~4 then choice name(Pay 5 and look) name(Pay 5 and look) name(Pay 5 and look) ability$!name(Pay 5 and look) pay({5}) name(Pay 5 and look) target(*[zpos<=5]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~5 then choice name(Pay 6 and look) name(Pay 6 and look) name(Pay 6 and look) ability$!name(Pay 6 and look) pay({6}) name(Pay 6 and look) target(*[zpos<=6]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~6 then choice name(Pay 7 and look) name(Pay 7 and look) name(Pay 7 and look) ability$!name(Pay 7 and look) pay({7}) name(Pay 7 and look) target(*[zpos<=7]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~7 then choice name(Pay 8 and look) name(Pay 8 and look) name(Pay 8 and look) ability$!name(Pay 8 and look) pay({8}) name(Pay 8 and look) target(*[zpos<=8]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~8 then choice name(Pay 9 and look) name(Pay 9 and look) name(Pay 9 and look) ability$!name(Pay 9 and look) pay({9}) name(Pay 9 and look) target(*[zpos<=9]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~9 then choice name(Pay 10 and look) name(Pay 10 and look) name(Pay 10 and look) ability$!name(Pay 10 and look) pay({10}) name(Pay 10 and look) target(*[zpos<=10]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~10 then choice name(Pay 11 and look) name(Pay 11 and look) name(Pay 11 and look) ability$!name(Pay 11 and look) pay({11}) name(Pay 11 and look) target(*[zpos<=11]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~11 then choice name(Pay 12 and look) name(Pay 12 and look) name(Pay 12 and look) ability$!name(Pay 12 and look) pay({12}) name(Pay 12 and look) target(*[zpos<=12]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~12 then choice name(Pay 13 and look) name(Pay 13 and look) name(Pay 13 and look) ability$!name(Pay 13 and look) pay({13}) name(Pay 13 and look) target(*[zpos<=13]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~13 then choice name(Pay 14 and look) name(Pay 14 and look) name(Pay 14 and look) ability$!name(Pay 14 and look) pay({14}) name(Pay 14 and look) target(*[zpos<=14]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~14 then choice name(Pay 15 and look) name(Pay 15 and look) name(Pay 15 and look) ability$!name(Pay 15 and look) pay({15}) name(Pay 15 and look) target(*[zpos<=15]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~15 then choice name(Pay 16 and look) name(Pay 16 and look) name(Pay 16 and look) ability$!name(Pay 16 and look) pay({16}) name(Pay 16 and look) target(*[zpos<=16]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~16 then choice name(Pay 17 and look) name(Pay 17 and look) name(Pay 17 and look) ability$!name(Pay 17 and look) pay({17}) name(Pay 17 and look) target(*[zpos<=17]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~17 then choice name(Pay 18 and look) name(Pay 18 and look) name(Pay 18 and look) ability$!name(Pay 18 and look) pay({18}) name(Pay 18 and look) target(*[zpos<=18]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~18 then choice name(Pay 19 and look) name(Pay 19 and look) name(Pay 19 and look) ability$!name(Pay 19 and look) pay({19}) name(Pay 19 and look) target(*[zpos<=19]|myhand) reject!$ controller],newability[if type(*|myhand)~morethan~19 then choice name(Pay 20 and look) name(Pay 20 and look) name(Pay 20 and look) ability$!name(Pay 20 and look) pay({20}) name(Pay 20 and look) target(*[zpos<=20]|myhand) reject!$ controller])) oneshot text=Flying -- Whenever Hollow Specter deals combat damage to a player, you may pay {X}. If you do, that player reveals X cards from his or her hand and you choose one of them. That player discards that card. mana={1}{B}{B} type=Creature @@ -55365,10 +55366,9 @@ toughness=2 [card] name=Hooded Hydra facedown={3} -autofacedown={3}{G}{G}:morph -autofaceup=counter(1/1,5) +autofacedown={3}{G}{G}:counter(1/1,5) && morph auto=counter(1/1,X) -auto=_DIES_thisforeach(counter{1/1.1}) token(Snake,Creature Snake,1/1,green) +auto=_DIES_name(Create snakes) thisforeach(counter{1/1.1}) token(Snake,Creature Snake,1/1,green) text=Hooded Hydra enters the battlefield with X +1/+1 counters on it. -- When Hooded Hydra dies, put a 1/1 green Snake creature token onto the battlefield for each +1/+1 counter on it. -- Morph {3}G}{G}: As Hooded Hydra is turned face up, put five +1/+1 counters on it. mana={X}{G}{G} type=Creature @@ -55812,7 +55812,7 @@ subtype=Aura name=Hot Soup auto={3}:equip auto=teach(creature) unblockable -auto=@damaged(mytgt):destroy all(mytgt) +auto=teach(creature) transforms((,newability[@damaged(this):name(Destroy equipped creature) destroy])) text=Equipped creature is unblockable. -- Whenever equipped creature is dealt damage, destroy it. -- Equip {3} ({3}: Attach to target creature you control. Equip only as a sorcery.) mana={1} type=Artifact diff --git a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt index ecf1bdb16..71d6fd28d 100644 --- a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt +++ b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt @@ -1,6 +1,6 @@ #Planeswalkers Primitives Pack for Wagic the Homebrew. #Please keep these card alphabetized, and try to have the "name=" line at the top of each card -#We sorted this in alphabetical order - Luruz & Vitty85 21-07-2023 +#We sorted this in alphabetical order - Luruz & Vitty85 24-07-2023 [card] name=Abian, Luvion Usurper auto=counter(0/0,5,loyalty) @@ -3345,6 +3345,19 @@ mana={3}{W} type=Legendary Planeswalker [/card] [card] +name=The Wandering Emperor +abilities=flash +auto=transforms((,newability[canloyaltyasinst])) ueot +auto=counter(0/0,3,loyalty) +auto={C(0/0,+1,Loyalty)}:name(+1: Don't put any counter) donothing +auto={C(0/0,+1,Loyalty)}:name(+1: Put +1/+1 counter) target(creature|battlefield) transforms((,newability[counter(1/1)],newability[first strike])) ueot +auto={C(0/0,-1,Loyalty)}:name(-1: Create Samurai) token(Samurai,Creature Samurai,2/2,white,vigilance) +auto={C(0/0,-2,Loyalty)}:name(-2: Exile creature) target(creature[tapped]|battlefield) moveto(exile) and!( life:2 controller )! +text=Flash -- As long as The Wandering Emperor entered the battlefield this turn, you may activate her loyalty abilities any time you could cast an instant. -- [+1]: Put a +1/+1 counter on up to one target creature. It gains first strike until end of turn. -- [-1]: Create a 2/2 white Samurai creature token with vigilance. -- [-2]: Exile target tapped creature. You gain 2 life. +mana={2}{W}{W} +type=Legendary Planeswalker +[/card] +[card] name=Tibalt, Cosmic Impostor backside=Valki, God of Lies auto=counter(0/0,5,Loyalty) diff --git a/projects/mtg/include/MTGDefinitions.h b/projects/mtg/include/MTGDefinitions.h index 0709a82ba..853f2662e 100644 --- a/projects/mtg/include/MTGDefinitions.h +++ b/projects/mtg/include/MTGDefinitions.h @@ -361,7 +361,8 @@ class Constants POISONNINETOXIC = 233, POISONTENTOXIC = 234, EQPASINST = 235, - NB_BASIC_ABILITIES = 236, + CANLOYALTYASINST = 236, + NB_BASIC_ABILITIES = 237, RARITY_S = 'S', //Special Rarity RARITY_M = 'M', //Mythics diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index d44ef7f61..6342eaeef 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -7285,11 +7285,11 @@ int ActivatedAbility::isReactingToClick(MTGCardInstance * card, ManaCost * mana) howMany += check->counters; } } - if(howMany > 1 && card->has(Constants::CANLOYALTYTWICE)) + if(howMany > 1) return 0; - if (player != game->currentPlayer) + if (player != game->currentPlayer && !card->has(Constants::CANLOYALTYASINST)) return 0; - if (!turnSide && (cPhase != MTG_PHASE_FIRSTMAIN && cPhase != MTG_PHASE_SECONDMAIN)) + if (!turnSide && !card->has(Constants::CANLOYALTYASINST) && (cPhase != MTG_PHASE_FIRSTMAIN && cPhase != MTG_PHASE_SECONDMAIN)) return 0; } if (source->has(Constants::NOACTIVATED) || (source->mutation && source->parentCards.size() > 0)) // Mutated Over/Under card doesn't have to react to click anymore diff --git a/projects/mtg/src/MTGDefinitions.cpp b/projects/mtg/src/MTGDefinitions.cpp index 646c6d7cf..7c48753e7 100644 --- a/projects/mtg/src/MTGDefinitions.cpp +++ b/projects/mtg/src/MTGDefinitions.cpp @@ -266,7 +266,8 @@ const char* Constants::MTGBasicAbilities[] = { "poisoneighttoxic", // Card has toxic 8 "poisonninetoxic", // Card has toxic 9 "poisontentoxic", // Card has toxic 10 - "eqpasinst" // Can equip as instant + "eqpasinst", // Can equip as instant + "canloyaltyasinst" // Can activate loyalty abilities as instant (e.g. "The Wandering Emperor"). }; map Constants::MTGBasicAbilitiesMap; diff --git a/projects/mtg/src/MTGGameZones.cpp b/projects/mtg/src/MTGGameZones.cpp index 46010a1a5..55c0b6233 100644 --- a/projects/mtg/src/MTGGameZones.cpp +++ b/projects/mtg/src/MTGGameZones.cpp @@ -580,7 +580,7 @@ MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone // This fix issue types problem when card change zone with different card types than its original version (e.g. double face cards or cards that gained new types before to change zone). std::vector realTypes; string realName = copy->name; - if(doCopy && !asCopy && !inplaytoinplay && !equal(copy->types.begin(), copy->types.end(), card->types.begin()) ){ + if(doCopy && !asCopy && !inplaytoinplay && !card->isMorphed && ((copy->types.size() != card->types.size()) || ((copy->types.size() == card->types.size()) && (!equal(copy->types.begin(), copy->types.end(), card->types.begin())))) ){ realTypes = copy->types; copy->types = card->types; copy->mPropertiesChangedSinceLastUpdate = false;