From 9da159a6078e3f081e07d095dddf0c3f355a7836 Mon Sep 17 00:00:00 2001 From: Vittorio Alfieri Date: Tue, 20 Apr 2021 23:34:30 +0200 Subject: [PATCH] Added C21, STA and STX (still in progress) sets, improved Android downloader, added/fixed primitives, added a keyword to get if a card has "X" in its cost, fixed a crash while targeting a spell on stack, added a new option "nolegend" to clone keyword in order to create a token without legendary type and rule, improved "hascnt" keyword with "anycnt" option to count all counters on a card, added a new keyword "hasstorecard" to get if a card has a stored card or not(e.g. fizzlers), added a new keyword "pgmanainstantsorcery" to count the mana value of all instants and sorceries in player graveyard, added a new keyword "currentphase" to get the current game phase. --- .../src/net/wagic/utils/ImgDownloader.java | 81 +- projects/mtg/bin/Res/sets/C21/_cards.dat | 1862 +++++++++++++++++ projects/mtg/bin/Res/sets/STA/_cards.dat | 322 +++ projects/mtg/bin/Res/sets/STX/_cards.dat | 1692 +++++++++++++++ .../bin/Res/sets/primitives/borderline.txt | 1556 +++++++++++--- .../bin/Res/sets/primitives/unsupported.txt | 31 + projects/mtg/include/CardDescriptor.h | 1 + projects/mtg/include/GameObserver.h | 1 + projects/mtg/src/ActionStack.cpp | 21 +- projects/mtg/src/AllAbilities.cpp | 5 + projects/mtg/src/CardDescriptor.cpp | 6 + projects/mtg/src/CardGui.cpp | 12 + projects/mtg/src/GameObserver.cpp | 15 +- projects/mtg/src/MTGAbility.cpp | 1 + projects/mtg/src/MTGCardInstance.cpp | 3 +- projects/mtg/src/MTGGameZones.cpp | 3 + projects/mtg/src/MTGRules.cpp | 4 +- projects/mtg/src/TargetChooser.cpp | 12 + projects/mtg/src/WParsedInt.cpp | 24 +- 19 files changed, 5338 insertions(+), 314 deletions(-) create mode 100644 projects/mtg/bin/Res/sets/C21/_cards.dat create mode 100644 projects/mtg/bin/Res/sets/STA/_cards.dat create mode 100644 projects/mtg/bin/Res/sets/STX/_cards.dat diff --git a/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java b/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java index 5d9d5961d..806186a6c 100644 --- a/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java +++ b/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java @@ -1758,6 +1758,72 @@ public class ImgDownloader { cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/c/b/cbcb0668-e88c-4462-b079-34f140c0277e.jpg?1614969101"; else if(id.equals("295986t")) cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/4/a/4a2144f2-d4be-419e-bfca-116cedfdf18b.jpg?1614968857"; + else if(id.equals("518429t")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/f/6/f62080da-a11b-4da3-bb8f-57f543bf076a.jpg?1618767682"; + else if(id.equals("513482")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/1/8/18a2bdc8-b705-4eb5-b3a5-ff2e2ab8f312.jpg?1617901976"; + else if(id.equals("513483")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/1/8/18a2bdc8-b705-4eb5-b3a5-ff2e2ab8f312.jpg?1617901976"; + else if(id.equals("513624")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/d/9/d9131fc3-018a-4975-8795-47be3956160d.jpg?1617452954"; + else if(id.equals("513625")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/d/9/d9131fc3-018a-4975-8795-47be3956160d.jpg?1617452954"; + else if(id.equals("513626")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/c/2/c204b7ca-0904-40fa-b20c-92400fae20b8.jpg?1617583842"; + else if(id.equals("513627")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/c/2/c204b7ca-0904-40fa-b20c-92400fae20b8.jpg?1617583842"; + else if(id.equals("513628")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/b/a/ba09360a-067e-48a5-bdc5-a19fd066a785.jpg?1617453022"; + else if(id.equals("513629")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/b/a/ba09360a-067e-48a5-bdc5-a19fd066a785.jpg?1617453022"; + else if(id.equals("513630")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/0/d/0dba25e3-2b4f-45d4-965f-3834bcb359ee.jpg?1617453074"; + else if(id.equals("513631")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/0/d/0dba25e3-2b4f-45d4-965f-3834bcb359ee.jpg?1617453074"; + else if(id.equals("513632")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/d/7/d7148d24-373e-4485-860b-c3429c2337f2.jpg?1618163722"; + else if(id.equals("513633")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/d/7/d7148d24-373e-4485-860b-c3429c2337f2.jpg?1618163722"; + else if(id.equals("513634")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/8/b/8b45dc40-6827-46a7-a9b7-802be698d053.jpg?1617453130"; + else if(id.equals("513635")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/8/b/8b45dc40-6827-46a7-a9b7-802be698d053.jpg?1617453130"; + else if(id.equals("513636")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/8/e/8e4e0f81-f92b-4a3a-bb29-adcc3de211b4.jpg?1617363020"; + else if(id.equals("513637")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/8/e/8e4e0f81-f92b-4a3a-bb29-adcc3de211b4.jpg?1617363020"; + else if(id.equals("513638")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/a/a/aaa1e6be-08cc-4ccc-b2de-3511613e4fd0.jpg?1617612926"; + else if(id.equals("513639")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/a/a/aaa1e6be-08cc-4ccc-b2de-3511613e4fd0.jpg?1617612926"; + else if(id.equals("513640")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/5/b/5bd9b5cf-f018-48af-a081-995ce8ecc539.jpg?1617453238"; + else if(id.equals("513641")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/5/b/5bd9b5cf-f018-48af-a081-995ce8ecc539.jpg?1617453238"; + else if(id.equals("513642")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/1/8/18c16872-3675-4a4d-962a-2e17ad6f3886.jpg?1618326108"; + else if(id.equals("513643")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/1/8/18c16872-3675-4a4d-962a-2e17ad6f3886.jpg?1618326108"; + else if(id.equals("513644")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/8/9/8982ff88-8595-4363-8cde-6e87fb57a2d8.jpg?1617400731"; + else if(id.equals("513645")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/8/9/8982ff88-8595-4363-8cde-6e87fb57a2d8.jpg?1617400731"; + else if(id.equals("513646")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/9/3/938cee8f-ac2c-49a5-9ff7-1367d0edfabe.jpg?1617453576"; + else if(id.equals("513647")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/9/3/938cee8f-ac2c-49a5-9ff7-1367d0edfabe.jpg?1617453576"; + else if(id.equals("513648")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/8/7/87463b68-3642-41c7-a11c-67d524759b60.jpg?1617453416"; + else if(id.equals("513649")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/8/7/87463b68-3642-41c7-a11c-67d524759b60.jpg?1617453416"; + else if(id.equals("513650")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/8/c/8cfd0887-0c83-4b33-a85e-8b8ec5bf758d.jpg?1617453475"; + else if(id.equals("513651")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/8/c/8cfd0887-0c83-4b33-a85e-8b8ec5bf758d.jpg?1617453475"; + else if(id.equals("513652")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/6/5/65008352-bc7e-40b2-a832-b46813e5dc4c.jpg?1617453527"; + else if(id.equals("513653")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/6/5/65008352-bc7e-40b2-a832-b46813e5dc4c.jpg?1617453527"; return cardurl; } @@ -2153,8 +2219,8 @@ public class ImgDownloader { tokenurl = "https://www.mtg.onl/static/8c7fed1a0b8edd97c0fb0ceab24a654f/4d406/PROXY_Goblin_Scout_R_1_1.jpg"; else if (id.equals("24624t")) tokenurl = "https://www.mtg.onl/static/6d717cba653ea9e3f6bd1419741671cb/4d406/PROXY_Minion_B_1_1.jpg"; - else if (id.equals("89051t")) - tokenurl = "https://www.mtg.onl/static/b7625a256e10bcec251a1a0abbf17bd4/4d406/PROXY_Horror_B_4_4.jpg"; + else if (id.equals("89051t") || id.equals("519129t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/a/0/a0b5e1f4-9206-40b6-9cf6-331f6a95d045.jpg?1618767339"; else if (id.equals("72858t")) tokenurl = "https://www.mtg.onl/static/348314ede9097dd8f6dd018a6502d125/4d406/PROXY_Pincher_2_2.jpg"; else if (id.equals("3113t")) @@ -2254,6 +2320,17 @@ public class ImgDownloader { tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/1/1/118d0655-5719-4512-8bc1-fe759669811b.jpg?1611206824"; else if(id.equals("295919t")) tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/1/1/118d0655-5719-4512-8bc1-fe759669811b.jpg?1611206824"; + else if(id.equals("518457t") || id.equals("518473t") || id.equals("518468t") || id.equals("518463t") || id.equals("518460t") || + id.equals("518422t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/9/1/910f48ab-b04e-4874-b31d-a86a7bc5af14.jpg?1617626097"; + else if(id.equals("518467t") || id.equals("518410t") || id.equals("518436t") || id.equals("518308t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/c/9/c9deae5c-80d4-4701-b425-91853b7ee03b.jpg?1617626050"; + else if(id.equals("518461t") || id.equals("518432t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/d/0/d0ddbe3e-4a66-494d-9304-7471232549bf.jpg?1617626099"; + else if(id.equals("518310t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/3/d/3d0b9b88-705e-4df0-8a93-3e240b81355b.jpg?1617626092"; + else if(id.equals("513663t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/1/a/1a2d027f-8996-4761-a776-47cd428f6779.jpg?1618766925"; return tokenurl; } diff --git a/projects/mtg/bin/Res/sets/C21/_cards.dat b/projects/mtg/bin/Res/sets/C21/_cards.dat new file mode 100644 index 000000000..a3f1397b9 --- /dev/null +++ b/projects/mtg/bin/Res/sets/C21/_cards.dat @@ -0,0 +1,1862 @@ +[meta] +author=Wagic Team +name=Commander 2021 +orderindex=COM-P.C21 +year=2021-04-23 +total=371 +[/meta] +[card] +primitive=Myr +id=-519288 +rarity=T +[/card] +[card] +primitive=Eldrazi +id=-519281 +rarity=T +[/card] +[card] +primitive=Saproling +id=-519276 +rarity=T +[/card] +[card] +primitive=Spirit +id=-519265 +rarity=T +[/card] +[card] +primitive=Elemental +id=-519246 +rarity=T +[/card] +[card] +primitive=Elephant +id=-519242 +rarity=T +[/card] +[card] +primitive=Beast +id=-519238 +rarity=T +[/card] +[card] +primitive=Elephant +id=-519231 +rarity=T +[/card] +[card] +primitive=Hydra +id=-519229 +rarity=T +[/card] +[card] +primitive=Insect +id=-519228 +rarity=T +[/card] +[card] +primitive=Insect +id=-519227 +rarity=T +[/card] +[card] +primitive=Wurm +id=-519225 +rarity=T +[/card] +[card] +primitive=Beast +id=-519223 +rarity=T +[/card] +[card] +primitive=Beast +id=-519221 +rarity=T +[/card] +[card] +primitive=Thopter +id=-519216 +rarity=T +[/card] +[card] +primitive=Thopter +id=-519212 +rarity=T +[/card] +[card] +primitive=Zombie +id=-519173 +rarity=T +[/card] +[card] +primitive=Drake +id=-519166 +rarity=T +[/card] +[card] +primitive=Kraken +id=-519162 +rarity=T +[/card] +[card] +primitive=Lizard +id=-519161 +rarity=T +[/card] +[card] +primitive=Construct +id=-519157 +rarity=T +[/card] +[card] +primitive=Boar +id=-519153 +rarity=T +[/card] +[card] +primitive=Horror +id=-519129 +rarity=T +[/card] +[card] +primitive=Eldrazi +id=-519117 +rarity=T +[/card] +[card] +primitive=Golem +id=-518475 +rarity=T +[/card] +[card] +primitive=Fractal +id=-518473 +rarity=T +[/card] +[card] +primitive=Fractal +id=-518468 +rarity=T +[/card] +[card] +primitive=Inkling +id=-518467 +rarity=T +[/card] +[card] +primitive=Beast +id=-518465 +rarity=T +[/card] +[card] +primitive=Fractal +id=-518463 +rarity=T +[/card] +[card] +primitive=Pest +id=-518461 +rarity=T +[/card] +[card] +primitive=Fractal +id=-518460 +rarity=T +[/card] +[card] +primitive=Fractal +id=-518457 +rarity=T +[/card] +[card] +primitive=Demon +id=-518441 +rarity=T +[/card] +[card] +primitive=Inkling +id=-518436 +rarity=T +[/card] +[card] +primitive=Pest +id=-518432 +rarity=T +[/card] +[card] +primitive=Kraken +id=-518429 +rarity=T +[/card] +[card] +primitive=Target +id=-518422 +rarity=T +[/card] +[card] +primitive=Construct +id=-518411 +rarity=T +[/card] +[card] +primitive=Inkling +id=-518410 +rarity=T +[/card] +[card] +primitive=Elemental +id=-518310 +rarity=T +[/card] +[card] +primitive=Inkling +id=-518308 +rarity=T +[/card] +[card] +primitive=Breena, the Demagogue +id=518307 +rarity=M +[/card] +[card] +primitive=Felisa, Fang of Silverquill +id=518308 +rarity=M +[/card] +[card] +primitive=Veyran, Voice of Duality +id=518309 +rarity=M +[/card] +[card] +primitive=Zaffai, Thunder Conductor +id=518310 +rarity=M +[/card] +[card] +primitive=Gyome, Master Chef +id=518311 +rarity=M +[/card] +[card] +primitive=Willowdusk, Essence Seer +id=518312 +rarity=M +[/card] +[card] +primitive=Alibou, Ancient Witness +id=518313 +rarity=M +[/card] +[card] +primitive=Osgir, the Reconstructor +id=518314 +rarity=M +[/card] +[card] +primitive=Adrix and Nev, Twincasters +id=518315 +rarity=M +[/card] +[card] +primitive=Esix, Fractal Bloom +id=518316 +rarity=M +[/card] +[card] +primitive=Angel of the Ruins +id=518407 +rarity=R +[/card] +[card] +primitive=Archaeomancer's Map +id=518408 +rarity=R +[/card] +[card] +primitive=Bronze Guardian +id=518409 +rarity=R +[/card] +[card] +primitive=Combat Calligrapher +id=518410 +rarity=R +[/card] +[card] +primitive=Digsite Engineer +id=518411 +rarity=R +[/card] +[card] +primitive=Excavation Technique +id=518412 +rarity=R +[/card] +[card] +primitive=Guardian Archon +id=518413 +rarity=R +[/card] +[card] +primitive=Losheel, Clockwork Scholar +id=518414 +rarity=R +[/card] +[card] +primitive=Monologue Tax +id=518415 +rarity=R +[/card] +[card] +primitive=Nils, Discipline Enforcer +id=518416 +rarity=R +[/card] +[card] +primitive=Promise of Loyalty +id=518417 +rarity=R +[/card] +[card] +primitive=Scholarship Sponsor +id=518418 +rarity=R +[/card] +[card] +primitive=Commander's Insight +id=518419 +rarity=R +[/card] +[card] +primitive=Curiosity Crafter +id=518420 +rarity=R +[/card] +[card] +primitive=Dazzling Sphinx +id=518421 +rarity=R +[/card] +[card] +primitive=Deekah, Fractal Theorist +id=518422 +rarity=R +[/card] +[card] +primitive=Inspiring Refrain +id=518423 +rarity=R +[/card] +[card] +primitive=Muse Vortex +id=518424 +rarity=R +[/card] +[card] +primitive=Octavia, Living Thesis +id=518425 +rarity=R +[/card] +[card] +primitive=Perplexing Test +id=518426 +rarity=R +[/card] +[card] +primitive=Replication Technique +id=518427 +rarity=R +[/card] +[card] +primitive=Sly Instigator +id=518428 +rarity=R +[/card] +[card] +primitive=Spawning Kraken +id=518429 +rarity=R +[/card] +[card] +primitive=Theoretical Duplication +id=518430 +rarity=R +[/card] +[card] +primitive=Author of Shadows +id=518431 +rarity=R +[/card] +[card] +primitive=Blight Mound +id=518432 +rarity=R +[/card] +[card] +primitive=Bold Plagiarist +id=518433 +rarity=R +[/card] +[card] +primitive=Cunning Rhetoric +id=518434 +rarity=R +[/card] +[card] +primitive=Essence Pulse +id=518435 +rarity=R +[/card] +[card] +primitive=Fain, the Broker +id=518436 +rarity=R +[/card] +[card] +primitive=Incarnation Technique +id=518437 +rarity=R +[/card] +[card] +primitive=Keen Duelist +id=518438 +rarity=R +[/card] +[card] +primitive=Marshland Bloodcaster +id=518439 +rarity=R +[/card] +[card] +primitive=Stinging Study +id=518440 +rarity=R +[/card] +[card] +primitive=Tivash, Gloom Summoner +id=518441 +rarity=R +[/card] +[card] +primitive=Veinwitch Coven +id=518442 +rarity=R +[/card] +[card] +primitive=Audacious Reshapers +id=518443 +rarity=R +[/card] +[card] +primitive=Battlemage's Bracers +id=518444 +rarity=R +[/card] +[card] +primitive=Creative Technique +id=518445 +rarity=R +[/card] +[card] +primitive=Cursed Mirror +id=518446 +rarity=R +[/card] +[card] +primitive=Fiery Encore +id=518447 +rarity=R +[/card] +[card] +primitive=Inferno Project +id=518448 +rarity=R +[/card] +[card] +primitive=Laelia, the Blade Reforged +id=518449 +rarity=R +[/card] +[card] +primitive=Radiant Performer +id=518450 +rarity=R +[/card] +[card] +primitive=Rionya, Fire Dancer +id=518451 +rarity=R +[/card] +[card] +primitive=Rousing Refrain +id=518452 +rarity=R +[/card] +[card] +primitive=Ruin Grinder +id=518453 +rarity=R +[/card] +[card] +primitive=Surge to Victory +id=518454 +rarity=R +[/card] +[card] +primitive=Blossoming Bogbeast +id=518455 +rarity=R +[/card] +[card] +primitive=Ezzaroot Channeler +id=518456 +rarity=R +[/card] +[card] +primitive=Fractal Harness +id=518457 +rarity=R +[/card] +[card] +primitive=Guardian Augmenter +id=518458 +rarity=R +[/card] +[card] +primitive=Healing Technique +id=518459 +rarity=R +[/card] +[card] +primitive=Paradox Zone +id=518460 +rarity=R +[/card] +[card] +primitive=Pest Infestation +id=518461 +rarity=R +[/card] +[card] +primitive=Ruxa, Patient Professor +id=518462 +rarity=R +[/card] +[card] +primitive=Sequence Engine +id=518463 +rarity=R +[/card] +[card] +primitive=Sproutback Trudge +id=518464 +rarity=R +[/card] +[card] +primitive=Trudge Garden +id=518465 +rarity=R +[/card] +[card] +primitive=Yedora, Grave Gardener +id=518466 +rarity=R +[/card] +[card] +primitive=Inkshield +id=518467 +rarity=R +[/card] +[card] +primitive=Oversimplify +id=518468 +rarity=R +[/card] +[card] +primitive=Reinterpret +id=518469 +rarity=R +[/card] +[card] +primitive=Revival Experiment +id=518470 +rarity=R +[/card] +[card] +primitive=Wake the Past +id=518471 +rarity=R +[/card] +[card] +primitive=Elementalist's Palette +id=518472 +rarity=R +[/card] +[card] +primitive=Geometric Nexus +id=518473 +rarity=R +[/card] +[card] +primitive=Tempting Contract +id=518474 +rarity=R +[/card] +[card] +primitive=Triplicate Titan +id=518475 +rarity=R +[/card] +[card] +primitive=Study Hall +id=518476 +rarity=C +[/card] +[card] +primitive=Witch's Clinic +id=518477 +rarity=R +[/card] +[card] +primitive=Desolation Twin +id=519117 +rarity=R +[/card] +[card] +primitive=Angel of Serenity +id=519118 +rarity=M +[/card] +[card] +primitive=Boreas Charger +id=519119 +rarity=R +[/card] +[card] +primitive=Citadel Siege +id=519120 +rarity=R +[/card] +[card] +primitive=Cleansing Nova +id=519121 +rarity=R +[/card] +[card] +primitive=Darksteel Mutation +id=519122 +rarity=U +[/card] +[card] +primitive=Dispatch +id=519123 +rarity=U +[/card] +[card] +primitive=Dispeller's Capsule +id=519124 +rarity=C +[/card] +[card] +primitive=Duelist's Heritage +id=519125 +rarity=R +[/card] +[card] +primitive=Elite Scaleguard +id=519126 +rarity=U +[/card] +[card] +primitive=Ghostly Prison +id=519127 +rarity=U +[/card] +[card] +primitive=Gideon, Champion of Justice +id=519128 +rarity=M +[/card] +[card] +primitive=Hunted Lammasu +id=519129 +rarity=R +[/card] +[card] +primitive=Knight of the White Orchid +id=519130 +rarity=R +[/card] +[card] +primitive=Martial Impetus +id=519131 +rarity=U +[/card] +[card] +primitive=Oblation +id=519132 +rarity=R +[/card] +[card] +primitive=Oreskos Explorer +id=519133 +rarity=U +[/card] +[card] +primitive=Orzhov Advokist +id=519134 +rarity=U +[/card] +[card] +primitive=Return to Dust +id=519135 +rarity=U +[/card] +[card] +primitive=Rout +id=519136 +rarity=R +[/card] +[card] +primitive=Sanctum Gargoyle +id=519137 +rarity=C +[/card] +[card] +primitive=Selfless Squire +id=519138 +rarity=R +[/card] +[card] +primitive=Soul Snare +id=519139 +rarity=U +[/card] +[card] +primitive=Stalking Leonin +id=519140 +rarity=R +[/card] +[card] +primitive=Sun Titan +id=519141 +rarity=M +[/card] +[card] +primitive=Sunscorch Regent +id=519142 +rarity=R +[/card] +[card] +primitive=Together Forever +id=519143 +rarity=R +[/card] +[card] +primitive=Tragic Arrogance +id=519144 +rarity=R +[/card] +[card] +primitive=Vow of Duty +id=519145 +rarity=U +[/card] +[card] +primitive=Windborn Muse +id=519146 +rarity=R +[/card] +[card] +primitive=Zetalpa, Primal Dawn +id=519147 +rarity=R +[/card] +[card] +primitive=Aether Gale +id=519148 +rarity=R +[/card] +[card] +primitive=Aetherspouts +id=519149 +rarity=R +[/card] +[card] +primitive=Brainstorm +id=519150 +rarity=C +[/card] +[card] +primitive=Champion of Wits +id=519151 +rarity=R +[/card] +[card] +primitive=Crafty Cutpurse +id=519152 +rarity=R +[/card] +[card] +primitive=Curse of the Swine +id=519153 +rarity=R +[/card] +[card] +primitive=Dig Through Time +id=519154 +rarity=R +[/card] +[card] +primitive=Diluvian Primordial +id=519155 +rarity=R +[/card] +[card] +primitive=Living Lore +id=519156 +rarity=U +[/card] +[card] +primitive=Metallurgic Summonings +id=519157 +rarity=M +[/card] +[card] +primitive=Mind's Desire +id=519158 +rarity=R +[/card] +[card] +primitive=Naru Meha, Master Wizard +id=519159 +rarity=M +[/card] +[card] +primitive=Ponder +id=519160 +rarity=C +[/card] +[card] +primitive=Rapid Hybridization +id=519161 +rarity=U +[/card] +[card] +primitive=Reef Worm +id=519162 +rarity=R +[/card] +[card] +primitive=Rite of Replication +id=519163 +rarity=R +[/card] +[card] +primitive=Serum Visions +id=519164 +rarity=U +[/card] +[card] +primitive=Swarm Intelligence +id=519165 +rarity=R +[/card] +[card] +primitive=Talrand, Sky Summoner +id=519166 +rarity=R +[/card] +[card] +primitive=Traumatic Visions +id=519167 +rarity=C +[/card] +[card] +primitive=Treasure Cruise +id=519168 +rarity=C +[/card] +[card] +primitive=Ambition's Cost +id=519169 +rarity=U +[/card] +[card] +primitive=Ancient Craving +id=519170 +rarity=U +[/card] +[card] +primitive=Bloodthirsty Aerialist +id=519171 +rarity=U +[/card] +[card] +primitive=Bloodtracker +id=519172 +rarity=R +[/card] +[card] +primitive=Curse of Disturbance +id=519173 +rarity=U +[/card] +[card] +primitive=Damnable Pact +id=519174 +rarity=R +[/card] +[card] +primitive=Deadly Tempest +id=519175 +rarity=R +[/card] +[card] +primitive=Deathbringer Regent +id=519176 +rarity=R +[/card] +[card] +primitive=Defiant Bloodlord +id=519177 +rarity=R +[/card] +[card] +primitive=Epicure of Blood +id=519178 +rarity=C +[/card] +[card] +primitive=Feed the Swarm +id=519179 +rarity=C +[/card] +[card] +primitive=Greed +id=519180 +rarity=R +[/card] +[card] +primitive=Infernal Offering +id=519181 +rarity=R +[/card] +[card] +primitive=Necropolis Regent +id=519182 +rarity=M +[/card] +[card] +primitive=Noxious Gearhulk +id=519183 +rarity=M +[/card] +[card] +primitive=Ob Nixilis Reignited +id=519184 +rarity=M +[/card] +[card] +primitive=Parasitic Impetus +id=519185 +rarity=U +[/card] +[card] +primitive=Reckless Spite +id=519186 +rarity=U +[/card] +[card] +primitive=Sangromancer +id=519187 +rarity=R +[/card] +[card] +primitive=Sanguine Bond +id=519188 +rarity=R +[/card] +[card] +primitive=Silversmote Ghoul +id=519189 +rarity=U +[/card] +[card] +primitive=Suffer the Past +id=519190 +rarity=U +[/card] +[card] +primitive=Taste of Death +id=519191 +rarity=R +[/card] +[card] +primitive=Vampire Nighthawk +id=519192 +rarity=U +[/card] +[card] +primitive=Apex of Power +id=519193 +rarity=M +[/card] +[card] +primitive=Blasphemous Act +id=519194 +rarity=R +[/card] +[card] +primitive=Brass's Bounty +id=519195 +rarity=R +[/card] +[card] +primitive=Chain Reaction +id=519196 +rarity=R +[/card] +[card] +primitive=Charmbreaker Devils +id=519197 +rarity=R +[/card] +[card] +primitive=Combustible Gearhulk +id=519198 +rarity=M +[/card] +[card] +primitive=Daretti, Scrap Savant +id=519199 +rarity=M +[/card] +[card] +primitive=Dualcaster Mage +id=519200 +rarity=R +[/card] +[card] +primitive=Erratic Cyclops +id=519201 +rarity=R +[/card] +[card] +primitive=Etali, Primal Storm +id=519202 +rarity=R +[/card] +[card] +primitive=Faithless Looting +id=519203 +rarity=C +[/card] +[card] +primitive=Feldon of the Third Path +id=519204 +rarity=M +[/card] +[card] +primitive=Fiery Fall +id=519205 +rarity=C +[/card] +[card] +primitive=Hellkite Igniter +id=519206 +rarity=R +[/card] +[card] +primitive=Hellkite Tyrant +id=519207 +rarity=M +[/card] +[card] +primitive=Hoard-Smelter Dragon +id=519208 +rarity=R +[/card] +[card] +primitive=Humble Defector +id=519209 +rarity=U +[/card] +[card] +primitive=Jaya Ballard +id=519210 +rarity=M +[/card] +[card] +primitive=Mana Geyser +id=519211 +rarity=C +[/card] +[card] +primitive=Pia Nalaar +id=519212 +rarity=R +[/card] +[card] +primitive=Quicksmith Genius +id=519213 +rarity=U +[/card] +[card] +primitive=Seething Song +id=519214 +rarity=C +[/card] +[card] +primitive=Sunbird's Invocation +id=519215 +rarity=R +[/card] +[card] +primitive=Thopter Engineer +id=519216 +rarity=U +[/card] +[card] +primitive=Volcanic Vision +id=519217 +rarity=R +[/card] +[card] +primitive=Wildfire Devils +id=519218 +rarity=R +[/card] +[card] +primitive=Ageless Entity +id=519219 +rarity=R +[/card] +[card] +primitive=Arashi, the Sky Asunder +id=519220 +rarity=R +[/card] +[card] +primitive=Beast Within +id=519221 +rarity=U +[/card] +[card] +primitive=Cultivate +id=519222 +rarity=U +[/card] +[card] +primitive=Ezuri's Predation +id=519223 +rarity=R +[/card] +[card] +primitive=Forgotten Ancient +id=519224 +rarity=R +[/card] +[card] +primitive=Garruk, Primal Hunter +id=519225 +rarity=M +[/card] +[card] +primitive=Gift of Paradise +id=519226 +rarity=C +[/card] +[card] +primitive=Hornet Nest +id=519227 +rarity=R +[/card] +[card] +primitive=Hornet Queen +id=519228 +rarity=R +[/card] +[card] +primitive=Hydra Broodmaster +id=519229 +rarity=R +[/card] +[card] +primitive=Incubation Druid +id=519230 +rarity=R +[/card] +[card] +primitive=Kazandu Tuskcaller +id=519231 +rarity=R +[/card] +[card] +primitive=Kodama's Reach +id=519232 +rarity=C +[/card] +[card] +primitive=Krosan Grip +id=519233 +rarity=U +[/card] +[card] +primitive=Managorger Hydra +id=519234 +rarity=R +[/card] +[card] +primitive=Nissa's Expedition +id=519235 +rarity=U +[/card] +[card] +primitive=Nissa's Renewal +id=519236 +rarity=R +[/card] +[card] +primitive=Pulse of Murasa +id=519237 +rarity=U +[/card] +[card] +primitive=Rampaging Baloths +id=519238 +rarity=R +[/card] +[card] +primitive=Rampant Growth +id=519239 +rarity=C +[/card] +[card] +primitive=Return of the Wildspeaker +id=519240 +rarity=R +[/card] +[card] +primitive=Shamanic Revelation +id=519241 +rarity=R +[/card] +[card] +primitive=Terastodon +id=519242 +rarity=R +[/card] +[card] +primitive=Verdant Sun's Avatar +id=519243 +rarity=R +[/card] +[card] +primitive=Biomass Mutation +id=519244 +rarity=R +[/card] +[card] +primitive=Boros Charm +id=519245 +rarity=U +[/card] +[card] +primitive=Call the Skybreaker +id=519246 +rarity=R +[/card] +[card] +primitive=Coiling Oracle +id=519247 +rarity=C +[/card] +[card] +primitive=Crackling Drake +id=519248 +rarity=U +[/card] +[card] +primitive=Deathbringer Liege +id=519249 +rarity=R +[/card] +[card] +primitive=Debtors' Knell +id=519250 +rarity=R +[/card] +[card] +primitive=Epic Experiment +id=519251 +rarity=M +[/card] +[card] +primitive=Gaze of Granite +id=519252 +rarity=R +[/card] +[card] +primitive=Gluttonous Troll +id=519253 +rarity=R +[/card] +[card] +primitive=Incubation // Incongruity +id=519254 +rarity=U +[/card] +[card] +primitive=Jor Kadeen, the Prevailer +id=519255 +rarity=R +[/card] +[card] +primitive=Kaseto, Orochi Archmage +id=519256 +rarity=M +[/card] +[card] +primitive=Leyline Prowler +id=519257 +rarity=U +[/card] +[card] +primitive=Magister of Worth +id=519258 +rarity=R +[/card] +[card] +primitive=Master Biomancer +id=519259 +rarity=M +[/card] +[card] +primitive=Moldervine Reclamation +id=519260 +rarity=U +[/card] +[card] +primitive=Plaxcaster Frogling +id=519261 +rarity=U +[/card] +[card] +primitive=Primal Empathy +id=519262 +rarity=U +[/card] +[card] +primitive=Sapling of Colfenor +id=519263 +rarity=R +[/card] +[card] +primitive=Spitting Image +id=519264 +rarity=R +[/card] +[card] +primitive=Teysa, Envoy of Ghosts +id=519265 +rarity=R +[/card] +[card] +primitive=Trygon Predator +id=519266 +rarity=U +[/card] +[card] +primitive=Utter End +id=519267 +rarity=R +[/card] +[card] +primitive=Alhammarret's Archive +id=519268 +rarity=M +[/card] +[card] +primitive=Arcane Signet +id=519269 +rarity=C +[/card] +[card] +primitive=Bloodthirsty Blade +id=519270 +rarity=U +[/card] +[card] +primitive=Boros Locket +id=519271 +rarity=C +[/card] +[card] +primitive=Bosh, Iron Golem +id=519272 +rarity=R +[/card] +[card] +primitive=Burnished Hart +id=519273 +rarity=U +[/card] +[card] +primitive=Commander's Sphere +id=519274 +rarity=C +[/card] +[card] +primitive=Coveted Jewel +id=519275 +rarity=R +[/card] +[card] +primitive=Druidic Satchel +id=519276 +rarity=R +[/card] +[card] +primitive=Duplicant +id=519277 +rarity=R +[/card] +[card] +primitive=Elixir of Immortality +id=519278 +rarity=U +[/card] +[card] +primitive=Hedron Archive +id=519279 +rarity=U +[/card] +[card] +primitive=Ichor Wellspring +id=519280 +rarity=C +[/card] +[card] +primitive=Idol of Oblivion +id=519281 +rarity=R +[/card] +[card] +primitive=Izzet Signet +id=519282 +rarity=C +[/card] +[card] +primitive=Key to the City +id=519283 +rarity=R +[/card] +[card] +primitive=Loxodon Warhammer +id=519284 +rarity=R +[/card] +[card] +primitive=Meteor Golem +id=519285 +rarity=U +[/card] +[card] +primitive=Mind Stone +id=519286 +rarity=U +[/card] +[card] +primitive=Mycosynth Wellspring +id=519287 +rarity=C +[/card] +[card] +primitive=Myr Battlesphere +id=519288 +rarity=R +[/card] +[card] +primitive=Orzhov Signet +id=519289 +rarity=U +[/card] +[card] +primitive=Paradise Plume +id=519290 +rarity=U +[/card] +[card] +primitive=Pendant of Prosperity +id=519291 +rarity=R +[/card] +[card] +primitive=Pilgrim's Eye +id=519292 +rarity=C +[/card] +[card] +primitive=Pristine Talisman +id=519293 +rarity=C +[/card] +[card] +primitive=Pyromancer's Goggles +id=519294 +rarity=M +[/card] +[card] +primitive=Scrap Trawler +id=519295 +rarity=R +[/card] +[card] +primitive=Sculpting Steel +id=519296 +rarity=R +[/card] +[card] +primitive=Simic Signet +id=519297 +rarity=C +[/card] +[card] +primitive=Sol Ring +id=519298 +rarity=U +[/card] +[card] +primitive=Solemn Simulacrum +id=519299 +rarity=R +[/card] +[card] +primitive=Spectral Searchlight +id=519300 +rarity=U +[/card] +[card] +primitive=Steel Hellkite +id=519301 +rarity=R +[/card] +[card] +primitive=Steel Overseer +id=519302 +rarity=R +[/card] +[card] +primitive=Sun Droplet +id=519303 +rarity=U +[/card] +[card] +primitive=Talisman of Creativity +id=519304 +rarity=U +[/card] +[card] +primitive=Talisman of Resilience +id=519305 +rarity=U +[/card] +[card] +primitive=Thousand-Year Elixir +id=519306 +rarity=R +[/card] +[card] +primitive=Unstable Obelisk +id=519307 +rarity=U +[/card] +[card] +primitive=Venser's Journal +id=519308 +rarity=R +[/card] +[card] +primitive=Victory Chimes +id=519309 +rarity=R +[/card] +[card] +primitive=Well of Lost Dreams +id=519310 +rarity=R +[/card] +[card] +primitive=Ancient Den +id=519311 +rarity=C +[/card] +[card] +primitive=Barren Moor +id=519312 +rarity=U +[/card] +[card] +primitive=Battlefield Forge +id=519313 +rarity=R +[/card] +[card] +primitive=Blighted Cataract +id=519314 +rarity=U +[/card] +[card] +primitive=Blighted Woodland +id=519315 +rarity=U +[/card] +[card] +primitive=Bojuka Bog +id=519316 +rarity=C +[/card] +[card] +primitive=Boros Garrison +id=519317 +rarity=U +[/card] +[card] +primitive=Caves of Koilos +id=519318 +rarity=R +[/card] +[card] +primitive=Command Tower +id=519319 +rarity=C +[/card] +[card] +primitive=Darksteel Citadel +id=519320 +rarity=U +[/card] +[card] +primitive=Desert of the Fervent +id=519321 +rarity=C +[/card] +[card] +primitive=Desert of the Mindful +id=519322 +rarity=C +[/card] +[card] +primitive=Exotic Orchard +id=519323 +rarity=R +[/card] +[card] +primitive=Forgotten Cave +id=519324 +rarity=C +[/card] +[card] +primitive=Gingerbread Cabin +id=519325 +rarity=C +[/card] +[card] +primitive=Golgari Rot Farm +id=519326 +rarity=U +[/card] +[card] +primitive=Great Furnace +id=519327 +rarity=C +[/card] +[card] +primitive=High Market +id=519328 +rarity=R +[/card] +[card] +primitive=Izzet Boilerworks +id=519329 +rarity=U +[/card] +[card] +primitive=Jungle Hollow +id=519330 +rarity=C +[/card] +[card] +primitive=Llanowar Reborn +id=519331 +rarity=U +[/card] +[card] +primitive=Llanowar Wastes +id=519332 +rarity=R +[/card] +[card] +primitive=Lonely Sandbar +id=519333 +rarity=C +[/card] +[card] +primitive=Lumbering Falls +id=519334 +rarity=R +[/card] +[card] +primitive=Mage-Ring Network +id=519335 +rarity=U +[/card] +[card] +primitive=Memorial to Genius +id=519336 +rarity=U +[/card] +[card] +primitive=Mikokoro, Center of the Sea +id=519337 +rarity=R +[/card] +[card] +primitive=Mosswort Bridge +id=519338 +rarity=R +[/card] +[card] +primitive=Myriad Landscape +id=519339 +rarity=U +[/card] +[card] +primitive=Novijen, Heart of Progress +id=519340 +rarity=U +[/card] +[card] +primitive=Opal Palace +id=519341 +rarity=C +[/card] +[card] +primitive=Oran-Rief, the Vastwood +id=519342 +rarity=R +[/card] +[card] +primitive=Orzhov Basilica +id=519343 +rarity=U +[/card] +[card] +primitive=Phyrexia's Core +id=519344 +rarity=U +[/card] +[card] +primitive=Radiant Fountain +id=519345 +rarity=C +[/card] +[card] +primitive=Reliquary Tower +id=519346 +rarity=U +[/card] +[card] +primitive=Rogue's Passage +id=519347 +rarity=U +[/card] +[card] +primitive=Sapseep Forest +id=519348 +rarity=U +[/card] +[card] +primitive=Scavenger Grounds +id=519349 +rarity=R +[/card] +[card] +primitive=Secluded Steppe +id=519350 +rarity=C +[/card] +[card] +primitive=Shivan Reef +id=519351 +rarity=R +[/card] +[card] +primitive=Simic Growth Chamber +id=519352 +rarity=U +[/card] +[card] +primitive=Slayers' Stronghold +id=519353 +rarity=R +[/card] +[card] +primitive=Sunhome, Fortress of the Legion +id=519354 +rarity=U +[/card] +[card] +primitive=Tainted Field +id=519355 +rarity=U +[/card] +[card] +primitive=Tainted Wood +id=519356 +rarity=U +[/card] +[card] +primitive=Temple of Epiphany +id=519357 +rarity=R +[/card] +[card] +primitive=Temple of Malady +id=519358 +rarity=R +[/card] +[card] +primitive=Temple of Mystery +id=519359 +rarity=R +[/card] +[card] +primitive=Temple of Silence +id=519360 +rarity=R +[/card] +[card] +primitive=Temple of the False God +id=519361 +rarity=U +[/card] +[card] +primitive=Temple of Triumph +id=519362 +rarity=R +[/card] +[card] +primitive=Tranquil Thicket +id=519363 +rarity=C +[/card] +[card] +primitive=Yavimaya Coast +id=519364 +rarity=R +[/card] diff --git a/projects/mtg/bin/Res/sets/STA/_cards.dat b/projects/mtg/bin/Res/sets/STA/_cards.dat new file mode 100644 index 000000000..52739b530 --- /dev/null +++ b/projects/mtg/bin/Res/sets/STA/_cards.dat @@ -0,0 +1,322 @@ +[meta] +author=Wagic Team +name=Strixhaven Mystical Archive +orderindex=EXP-ZZJ.STA +year=2021-04-23 +total=63 +[/meta] +[card] +primitive=Approach of the Second Sun +id=517551 +rarity=M +[/card] +[card] +primitive=Day of Judgment +id=517552 +rarity=M +[/card] +[card] +primitive=Defiant Strike +id=517553 +rarity=U +[/card] +[card] +primitive=Divine Gambit +id=517554 +rarity=U +[/card] +[card] +primitive=Ephemerate +id=517555 +rarity=R +[/card] +[card] +primitive=Gift of Estates +id=517556 +rarity=R +[/card] +[card] +primitive=Gods Willing +id=517557 +rarity=R +[/card] +[card] +primitive=Mana Tithe +id=517558 +rarity=R +[/card] +[card] +primitive=Revitalize +id=517559 +rarity=U +[/card] +[card] +primitive=Swords to Plowshares +id=517560 +rarity=R +[/card] +[card] +primitive=Teferi's Protection +id=517561 +rarity=M +[/card] +[card] +primitive=Blue Sun's Zenith +id=517562 +rarity=M +[/card] +[card] +primitive=Brainstorm +id=517563 +rarity=R +[/card] +[card] +primitive=Compulsive Research +id=517564 +rarity=R +[/card] +[card] +primitive=Counterspell +id=517565 +rarity=R +[/card] +[card] +primitive=Memory Lapse +id=517566 +rarity=R +[/card] +[card] +primitive=Mind's Desire +id=517567 +rarity=M +[/card] +[card] +primitive=Negate +id=517568 +rarity=U +[/card] +[card] +primitive=Opt +id=517569 +rarity=U +[/card] +[card] +primitive=Strategic Planning +id=517570 +rarity=U +[/card] +[card] +primitive=Tezzeret's Gambit +id=517571 +rarity=R +[/card] +[card] +primitive=Time Warp +id=517572 +rarity=M +[/card] +[card] +primitive=Whirlwind Denial +id=517573 +rarity=U +[/card] +[card] +primitive=Agonizing Remorse +id=517574 +rarity=U +[/card] +[card] +primitive=Crux of Fate +id=517575 +rarity=M +[/card] +[card] +primitive=Dark Ritual +id=517576 +rarity=R +[/card] +[card] +primitive=Demonic Tutor +id=517577 +rarity=M +[/card] +[card] +primitive=Doom Blade +id=517578 +rarity=R +[/card] +[card] +primitive=Duress +id=517579 +rarity=U +[/card] +[card] +primitive=Eliminate +id=517580 +rarity=U +[/card] +[card] +primitive=Inquisition of Kozilek +id=517581 +rarity=R +[/card] +[card] +primitive=Sign in Blood +id=517582 +rarity=R +[/card] +[card] +primitive=Tainted Pact +id=517583 +rarity=M +[/card] +[card] +primitive=Tendrils of Agony +id=517584 +rarity=R +[/card] +[card] +primitive=Village Rites +id=517585 +rarity=U +[/card] +[card] +primitive=Chaos Warp +id=517586 +rarity=M +[/card] +[card] +primitive=Claim the Firstborn +id=517587 +rarity=U +[/card] +[card] +primitive=Faithless Looting +id=517588 +rarity=R +[/card] +[card] +primitive=Grapeshot +id=517589 +rarity=R +[/card] +[card] +primitive=Increasing Vengeance +id=517590 +rarity=M +[/card] +[card] +primitive=Infuriate +id=517591 +rarity=U +[/card] +[card] +primitive=Lightning Bolt +id=517592 +rarity=R +[/card] +[card] +primitive=Mizzix's Mastery +id=517593 +rarity=M +[/card] +[card] +primitive=Shock +id=517594 +rarity=U +[/card] +[card] +primitive=Stone Rain +id=517595 +rarity=R +[/card] +[card] +primitive=Thrill of Possibility +id=517596 +rarity=U +[/card] +[card] +primitive=Urza's Rage +id=517597 +rarity=R +[/card] +[card] +primitive=Abundant Harvest +id=517598 +rarity=R +[/card] +[card] +primitive=Adventurous Impulse +id=517599 +rarity=U +[/card] +[card] +primitive=Channel +id=517600 +rarity=M +[/card] +[card] +primitive=Cultivate +id=517601 +rarity=U +[/card] +[card] +primitive=Harmonize +id=517602 +rarity=R +[/card] +[card] +primitive=Krosan Grip +id=517603 +rarity=R +[/card] +[card] +primitive=Natural Order +id=517604 +rarity=M +[/card] +[card] +primitive=Primal Command +id=517605 +rarity=M +[/card] +[card] +primitive=Regrowth +id=517606 +rarity=R +[/card] +[card] +primitive=Snakeskin Veil +id=517607 +rarity=U +[/card] +[card] +primitive=Weather the Storm +id=517608 +rarity=R +[/card] +[card] +primitive=Despark +id=517609 +rarity=R +[/card] +[card] +primitive=Electrolyze +id=517610 +rarity=R +[/card] +[card] +primitive=Growth Spiral +id=517611 +rarity=R +[/card] +[card] +primitive=Lightning Helix +id=517612 +rarity=R +[/card] +[card] +primitive=Putrefy +id=517613 +rarity=R +[/card] \ No newline at end of file diff --git a/projects/mtg/bin/Res/sets/STX/_cards.dat b/projects/mtg/bin/Res/sets/STX/_cards.dat new file mode 100644 index 000000000..0dad090b9 --- /dev/null +++ b/projects/mtg/bin/Res/sets/STX/_cards.dat @@ -0,0 +1,1692 @@ +[meta] +author=Wagic Team +name=Strixhaven: School of Mages +orderindex=EXP-ZZI.STX +year=2021-04-23 +total=337 +[/meta] +[card] +primitive=Pest +id=-513734 +rarity=T +[/card] +[card] +primitive=Spirit +id=-513728 +rarity=T +[/card] +[card] +primitive=Spirit +id=-513712 +rarity=T +[/card] +[card] +primitive=Pest +id=-513703 +rarity=T +[/card] +[card] +primitive=Fractal +id=-513697 +rarity=T +[/card] +[card] +primitive=Spirit +id=-513696 +rarity=T +[/card] +[card] +primitive=Elemental +id=-513695 +rarity=T +[/card] +[card] +primitive=Spirit +id=-513692 +rarity=T +[/card] +[card] +primitive=Spirit +id=-513691 +rarity=T +[/card] +[card] +primitive=Fractal +id=-513688 +rarity=T +[/card] +[card] +primitive=Inkling +id=-513687 +rarity=T +[/card] +[card] +primitive=Fractal +id=-513679 +rarity=T +[/card] +[card] +primitive=Elemental +id=-513675 +rarity=T +[/card] +[card] +primitive=Elemental +id=-513674 +rarity=T +[/card] +[card] +primitive=Elemental +id=-513673 +rarity=T +[/card] +[card] +primitive=Inkling +id=-513672 +rarity=T +[/card] +[card] +primitive=Treasure +id=-513663 +rarity=T +[/card] +[card] +primitive=Fractal +id=-513660 +rarity=T +[/card] +[card] +primitive=Inkling +id=-513659 +rarity=T +[/card] +[card] +primitive=Fractal +id=-513656 +rarity=T +[/card] +[card] +primitive=Pest +id=-513655 +rarity=T +[/card] +[card] +primitive=Pest +id=-513652 +rarity=T +[/card] +[card] +primitive=Pest +id=-513638 +rarity=T +[/card] +[card] +primitive=Fractal +id=-513634 +rarity=T +[/card] +[card] +primitive=Pest +id=-513617 +rarity=T +[/card] +[card] +primitive=Fractal +id=-513613 +rarity=T +[/card] +[card] +primitive=Pest +id=-513602 +rarity=T +[/card] +[card] +primitive=Spirit +id=-513586 +rarity=T +[/card] +[card] +primitive=Spirit +id=-513585 +rarity=T +[/card] +[card] +primitive=Pest +id=-513563 +rarity=T +[/card] +[card] +primitive=Pest +id=-513550 +rarity=T +[/card] +[card] +primitive=Fractal +id=-513529 +rarity=T +[/card] +[card] +primitive=Elemental +id=-513528 +rarity=T +[/card] +[card] +primitive=Elemental +id=-513525 +rarity=T +[/card] +[card] +primitive=Spirit +id=-513502 +rarity=T +[/card] +[card] +primitive=Elemental +id=-513481 +rarity=T +[/card] +[card] +primitive=Environmental Sciences +id=513477 +rarity=C +[/card] +[card] +primitive=Expanded Anatomy +id=513478 +rarity=C +[/card] +[card] +primitive=Introduction to Annihilation +id=513479 +rarity=C +[/card] +[card] +primitive=Introduction to Prophecy +id=513480 +rarity=C +[/card] +[card] +primitive=Mascot Exhibition +id=513481 +rarity=M +[/card] +[card] +primitive=Wandering Archaic +id=513482 +rarity=R +[/card] +[card] +primitive=Explore the Vastlands +id=513483 +rarity=R +[/card] +[card] +primitive=Academic Probation +id=513484 +rarity=R +[/card] +[card] +primitive=Ageless Guardian +id=513485 +rarity=C +[/card] +[card] +primitive=Beaming Defiance +id=513486 +rarity=C +[/card] +[card] +primitive=Clever Lumimancer +id=513487 +rarity=U +[/card] +[card] +primitive=Combat Professor +id=513488 +rarity=C +[/card] +[card] +primitive=Defend the Campus +id=513489 +rarity=C +[/card] +[card] +primitive=Detention Vortex +id=513490 +rarity=U +[/card] +[card] +primitive=Devastating Mastery +id=513491 +rarity=R +[/card] +[card] +primitive=Dueling Coach +id=513492 +rarity=U +[/card] +[card] +primitive=Eager First-Year +id=513493 +rarity=C +[/card] +[card] +primitive=Elite Spellbinder +id=513494 +rarity=R +[/card] +[card] +primitive=Expel +id=513495 +rarity=C +[/card] +[card] +primitive=Guiding Voice +id=513496 +rarity=C +[/card] +[card] +primitive=Leonin Lightscribe +id=513497 +rarity=R +[/card] +[card] +primitive=Mavinda, Students' Advocate +id=513498 +rarity=M +[/card] +[card] +primitive=Pilgrim of the Ages +id=513499 +rarity=C +[/card] +[card] +primitive=Pillardrop Rescuer +id=513500 +rarity=C +[/card] +[card] +primitive=Professor of Symbology +id=513501 +rarity=U +[/card] +[card] +primitive=Reduce to Memory +id=513502 +rarity=U +[/card] +[card] +primitive=Secret Rendezvous +id=513503 +rarity=U +[/card] +[card] +primitive=Semester's End +id=513504 +rarity=R +[/card] +[card] +primitive=Show of Confidence +id=513505 +rarity=U +[/card] +[card] +primitive=Sparring Regimen +id=513506 +rarity=R +[/card] +[card] +primitive=Star Pupil +id=513507 +rarity=C +[/card] +[card] +primitive=Stonebinder's Familiar +id=513508 +rarity=U +[/card] +[card] +primitive=Stonerise Spirit +id=513509 +rarity=C +[/card] +[card] +primitive=Strict Proctor +id=513510 +rarity=R +[/card] +[card] +primitive=Study Break +id=513511 +rarity=C +[/card] +[card] +primitive=Thunderous Orator +id=513512 +rarity=U +[/card] +[card] +primitive=Arcane Subtraction +id=513513 +rarity=C +[/card] +[card] +primitive=Archmage Emeritus +id=513514 +rarity=R +[/card] +[card] +primitive=Burrog Befuddler +id=513515 +rarity=C +[/card] +[card] +primitive=Bury in Books +id=513516 +rarity=C +[/card] +[card] +primitive=Curate +id=513517 +rarity=C +[/card] +[card] +primitive=Divide by Zero +id=513518 +rarity=U +[/card] +[card] +primitive=Dream Strix +id=513519 +rarity=R +[/card] +[card] +primitive=Frost Trickster +id=513520 +rarity=C +[/card] +[card] +primitive=Ingenious Mastery +id=513521 +rarity=R +[/card] +[card] +primitive=Kelpie Guide +id=513522 +rarity=U +[/card] +[card] +primitive=Mentor's Guidance +id=513523 +rarity=U +[/card] +[card] +primitive=Mercurial Transformation +id=513524 +rarity=U +[/card] +[card] +primitive=Multiple Choice +id=513525 +rarity=R +[/card] +[card] +primitive=Pop Quiz +id=513526 +rarity=C +[/card] +[card] +primitive=Reject +id=513527 +rarity=C +[/card] +[card] +primitive=Resculpt +id=513528 +rarity=C +[/card] +[card] +primitive=Serpentine Curve +id=513529 +rarity=C +[/card] +[card] +primitive=Snow Day +id=513530 +rarity=U +[/card] +[card] +primitive=Solve the Equation +id=513531 +rarity=U +[/card] +[card] +primitive=Soothsayer Adept +id=513532 +rarity=C +[/card] +[card] +primitive=Symmetry Sage +id=513533 +rarity=U +[/card] +[card] +primitive=Teachings of the Archaics +id=513534 +rarity=R +[/card] +[card] +primitive=Tempted by the Oriq +id=513535 +rarity=R +[/card] +[card] +primitive=Test of Talents +id=513536 +rarity=U +[/card] +[card] +primitive=Vortex Runner +id=513537 +rarity=C +[/card] +[card] +primitive=Waterfall Aerialist +id=513538 +rarity=C +[/card] +[card] +primitive=Wormhole Serpent +id=513539 +rarity=U +[/card] +[card] +primitive=Arrogant Poet +id=513540 +rarity=C +[/card] +[card] +primitive=Baleful Mastery +id=513541 +rarity=R +[/card] +[card] +primitive=Brackish Trudge +id=513542 +rarity=U +[/card] +[card] +primitive=Callous Bloodmage +id=513543 +rarity=R +[/card] +[card] +primitive=Confront the Past +id=513544 +rarity=R +[/card] +[card] +primitive=Crushing Disappointment +id=513545 +rarity=C +[/card] +[card] +primitive=Essence Infusion +id=513546 +rarity=C +[/card] +[card] +primitive=Eyetwitch +id=513547 +rarity=U +[/card] +[card] +primitive=Flunk +id=513548 +rarity=U +[/card] +[card] +primitive=Go Blank +id=513549 +rarity=U +[/card] +[card] +primitive=Hunt for Specimens +id=513550 +rarity=C +[/card] +[card] +primitive=Lash of Malice +id=513551 +rarity=C +[/card] +[card] +primitive=Leech Fanatic +id=513552 +rarity=C +[/card] +[card] +primitive=Mage Hunter +id=513553 +rarity=U +[/card] +[card] +primitive=Mage Hunters' Onslaught +id=513554 +rarity=C +[/card] +[card] +primitive=Necrotic Fumes +id=513555 +rarity=U +[/card] +[card] +primitive=Novice Dissector +id=513556 +rarity=C +[/card] +[card] +primitive=Oriq Loremage +id=513557 +rarity=R +[/card] +[card] +primitive=Plumb the Forbidden +id=513558 +rarity=U +[/card] +[card] +primitive=Poet's Quill +id=513559 +rarity=R +[/card] +[card] +primitive=Professor Onyx +id=513560 +rarity=M +[/card] +[card] +primitive=Professor's Warning +id=513561 +rarity=C +[/card] +[card] +primitive=Promising Duskmage +id=513562 +rarity=C +[/card] +[card] +primitive=Sedgemoor Witch +id=513563 +rarity=R +[/card] +[card] +primitive=Specter of the Fens +id=513564 +rarity=C +[/card] +[card] +primitive=Tenured Inkcaster +id=513565 +rarity=U +[/card] +[card] +primitive=Umbral Juke +id=513566 +rarity=U +[/card] +[card] +primitive=Unwilling Ingredient +id=513567 +rarity=C +[/card] +[card] +primitive=Academic Dispute +id=513568 +rarity=U +[/card] +[card] +primitive=Ardent Dustspeaker +id=513569 +rarity=U +[/card] +[card] +primitive=Blood Age General +id=513570 +rarity=C +[/card] +[card] +primitive=Conspiracy Theorist +id=513571 +rarity=R +[/card] +[card] +primitive=Crackle with Power +id=513572 +rarity=M +[/card] +[card] +primitive=Draconic Intervention +id=513573 +rarity=R +[/card] +[card] +primitive=Dragon's Approach +id=513574 +rarity=C +[/card] +[card] +primitive=Efreet Flamepainter +id=513575 +rarity=R +[/card] +[card] +primitive=Enthusiastic Study +id=513576 +rarity=C +[/card] +[card] +primitive=Explosive Welcome +id=513577 +rarity=U +[/card] +[card] +primitive=Fervent Mastery +id=513578 +rarity=R +[/card] +[card] +primitive=First Day of Class +id=513579 +rarity=C +[/card] +[card] +primitive=Fuming Effigy +id=513580 +rarity=C +[/card] +[card] +primitive=Grinning Ignus +id=513581 +rarity=U +[/card] +[card] +primitive=Hall Monitor +id=513582 +rarity=U +[/card] +[card] +primitive=Heated Debate +id=513583 +rarity=C +[/card] +[card] +primitive=Igneous Inspiration +id=513584 +rarity=U +[/card] +[card] +primitive=Illuminate History +id=513585 +rarity=R +[/card] +[card] +primitive=Illustrious Historian +id=513586 +rarity=C +[/card] +[card] +primitive=Mascot Interception +id=513587 +rarity=U +[/card] +[card] +primitive=Pigment Storm +id=513588 +rarity=C +[/card] +[card] +primitive=Pillardrop Warden +id=513589 +rarity=C +[/card] +[card] +primitive=Retriever Phoenix +id=513590 +rarity=R +[/card] +[card] +primitive=Start from Scratch +id=513591 +rarity=U +[/card] +[card] +primitive=Storm-Kiln Artist +id=513592 +rarity=U +[/card] +[card] +primitive=Sudden Breakthrough +id=513593 +rarity=C +[/card] +[card] +primitive=Tome Shredder +id=513594 +rarity=C +[/card] +[card] +primitive=Twinscroll Shaman +id=513595 +rarity=C +[/card] +[card] +primitive=Accomplished Alchemist +id=513596 +rarity=R +[/card] +[card] +primitive=Basic Conjuration +id=513597 +rarity=R +[/card] +[card] +primitive=Bayou Groff +id=513598 +rarity=C +[/card] +[card] +primitive=Big Play +id=513599 +rarity=C +[/card] +[card] +primitive=Bookwurm +id=513600 +rarity=U +[/card] +[card] +primitive=Charge Through +id=513601 +rarity=C +[/card] +[card] +primitive=Containment Breach +id=513602 +rarity=U +[/card] +[card] +primitive=Devouring Tendrils +id=513603 +rarity=U +[/card] +[card] +primitive=Dragonsguard Elite +id=513604 +rarity=R +[/card] +[card] +primitive=Ecological Appreciation +id=513605 +rarity=M +[/card] +[card] +primitive=Emergent Sequence +id=513606 +rarity=U +[/card] +[card] +primitive=Exponential Growth +id=513607 +rarity=R +[/card] +[card] +primitive=Field Trip +id=513608 +rarity=C +[/card] +[card] +primitive=Fortifying Draught +id=513609 +rarity=U +[/card] +[card] +primitive=Gnarled Professor +id=513610 +rarity=R +[/card] +[card] +primitive=Honor Troll +id=513611 +rarity=U +[/card] +[card] +primitive=Karok Wrangler +id=513612 +rarity=U +[/card] +[card] +primitive=Leyline Invocation +id=513613 +rarity=C +[/card] +[card] +primitive=Mage Duel +id=513614 +rarity=C +[/card] +[card] +primitive=Master Symmetrist +id=513615 +rarity=U +[/card] +[card] +primitive=Overgrown Arch +id=513616 +rarity=U +[/card] +[card] +primitive=Professor of Zoomancy +id=513617 +rarity=C +[/card] +[card] +primitive=Reckless Amplimancer +id=513618 +rarity=C +[/card] +[card] +primitive=Scurrid Colony +id=513619 +rarity=C +[/card] +[card] +primitive=Spined Karok +id=513620 +rarity=C +[/card] +[card] +primitive=Springmane Cervin +id=513621 +rarity=C +[/card] +[card] +primitive=Tangletrap +id=513622 +rarity=C +[/card] +[card] +primitive=Verdant Mastery +id=513623 +rarity=R +[/card] +[card] +primitive=Augmenter Pugilist +id=513624 +rarity=R +[/card] +[card] +primitive=Echoing Equation +id=513625 +rarity=R +[/card] +[card] +primitive=Blex, Vexing Pest +id=513626 +rarity=M +[/card] +[card] +primitive=Search for Blex +id=513627 +rarity=M +[/card] +[card] +primitive=Extus, Oriq Overlord +id=513628 +rarity=M +[/card] +[card] +primitive=Awaken the Blood Avatar +id=513629 +rarity=M +[/card] +[card] +primitive=Flamescroll Celebrant +id=513630 +rarity=R +[/card] +[card] +primitive=Revel in Silence +id=513631 +rarity=R +[/card] +[card] +primitive=Jadzi, Oracle of Arcavios +id=513632 +rarity=M +[/card] +[card] +primitive=Journey to the Oracle +id=513633 +rarity=M +[/card] +[card] +primitive=Kianne, Dean of Substance +id=513634 +rarity=R +[/card] +[card] +primitive=Imbraham, Dean of Theory +id=513635 +rarity=R +[/card] +[card] +primitive=Mila, Crafty Companion +id=513636 +rarity=M +[/card] +[card] +primitive=Lukka, Wayward Bonder +id=513637 +rarity=M +[/card] +[card] +primitive=Pestilent Cauldron +id=513638 +rarity=R +[/card] +[card] +primitive=Restorative Burst +id=513639 +rarity=R +[/card] +[card] +primitive=Plargg, Dean of Chaos +id=513640 +rarity=R +[/card] +[card] +primitive=Augusta, Dean of Order +id=513641 +rarity=R +[/card] +[card] +primitive=Rowan, Scholar of Sparks +id=513642 +rarity=M +[/card] +[card] +primitive=Will, Scholar of Frost +id=513643 +rarity=M +[/card] +[card] +primitive=Selfless Glyphweaver +id=513644 +rarity=R +[/card] +[card] +primitive=Deadly Vanity +id=513645 +rarity=R +[/card] +[card] +primitive=Shaile, Dean of Radiance +id=513646 +rarity=R +[/card] +[card] +primitive=Embrose, Dean of Shadow +id=513647 +rarity=R +[/card] +[card] +primitive=Torrent Sculptor +id=513648 +rarity=R +[/card] +[card] +primitive=Flamethrower Sonata +id=513649 +rarity=R +[/card] +[card] +primitive=Uvilda, Dean of Perfection +id=513650 +rarity=R +[/card] +[card] +primitive=Nassari, Dean of Expression +id=513651 +rarity=R +[/card] +[card] +primitive=Valentin, Dean of the Vein +id=513652 +rarity=R +[/card] +[card] +primitive=Lisette, Dean of the Root +id=513653 +rarity=R +[/card] +[card] +primitive=Aether Helix +id=513654 +rarity=U +[/card] +[card] +primitive=Beledros Witherbloom +id=513655 +rarity=M +[/card] +[card] +primitive=Biomathematician +id=513656 +rarity=C +[/card] +[card] +primitive=Blade Historian +id=513657 +rarity=R +[/card] +[card] +primitive=Blood Researcher +id=513658 +rarity=C +[/card] +[card] +primitive=Blot Out the Sky +id=513659 +rarity=M +[/card] +[card] +primitive=Body of Research +id=513660 +rarity=M +[/card] +[card] +primitive=Closing Statement +id=513661 +rarity=U +[/card] +[card] +primitive=Cram Session +id=513662 +rarity=C +[/card] +[card] +primitive=Creative Outburst +id=513663 +rarity=U +[/card] +[card] +primitive=Culling Ritual +id=513664 +rarity=R +[/card] +[card] +primitive=Culmination of Studies +id=513665 +rarity=R +[/card] +[card] +primitive=Daemogoth Titan +id=513666 +rarity=R +[/card] +[card] +primitive=Daemogoth Woe-Eater +id=513667 +rarity=U +[/card] +[card] +primitive=Deadly Brew +id=513668 +rarity=U +[/card] +[card] +primitive=Decisive Denial +id=513669 +rarity=U +[/card] +[card] +primitive=Dina, Soul Steeper +id=513670 +rarity=U +[/card] +[card] +primitive=Double Major +id=513671 +rarity=R +[/card] +[card] +primitive=Dramatic Finale +id=513672 +rarity=R +[/card] +[card] +primitive=Elemental Expressionist +id=513673 +rarity=R +[/card] +[card] +primitive=Elemental Masterpiece +id=513674 +rarity=C +[/card] +[card] +primitive=Elemental Summoning +id=513675 +rarity=C +[/card] +[card] +primitive=Eureka Moment +id=513676 +rarity=C +[/card] +[card] +primitive=Exhilarating Elocution +id=513677 +rarity=C +[/card] +[card] +primitive=Expressive Iteration +id=513678 +rarity=U +[/card] +[card] +primitive=Fractal Summoning +id=513679 +rarity=C +[/card] +[card] +primitive=Fracture +id=513680 +rarity=U +[/card] +[card] +primitive=Galazeth Prismari +id=513681 +rarity=M +[/card] +[card] +primitive=Golden Ratio +id=513682 +rarity=U +[/card] +[card] +primitive=Harness Infinity +id=513683 +rarity=M +[/card] +[card] +primitive=Hofri Ghostforge +id=513684 +rarity=M +[/card] +[card] +primitive=Humiliate +id=513685 +rarity=U +[/card] +[card] +primitive=Infuse with Vitality +id=513686 +rarity=C +[/card] +[card] +primitive=Inkling Summoning +id=513687 +rarity=C +[/card] +[card] +primitive=Kasmina, Enigma Sage +id=513688 +rarity=M +[/card] +[card] +primitive=Killian, Ink Duelist +id=513689 +rarity=U +[/card] +[card] +primitive=Lorehold Apprentice +id=513690 +rarity=U +[/card] +[card] +primitive=Lorehold Command +id=513691 +rarity=R +[/card] +[card] +primitive=Lorehold Excavation +id=513692 +rarity=U +[/card] +[card] +primitive=Lorehold Pledgemage +id=513693 +rarity=C +[/card] +[card] +primitive=Maelstrom Muse +id=513694 +rarity=U +[/card] +[card] +primitive=Magma Opus +id=513695 +rarity=M +[/card] +[card] +primitive=Make Your Mark +id=513696 +rarity=C +[/card] +[card] +primitive=Manifestation Sage +id=513697 +rarity=R +[/card] +[card] +primitive=Moldering Karok +id=513698 +rarity=C +[/card] +[card] +primitive=Mortality Spear +id=513699 +rarity=U +[/card] +[card] +primitive=Needlethorn Drake +id=513700 +rarity=C +[/card] +[card] +primitive=Oggyar Battle-Seer +id=513701 +rarity=C +[/card] +[card] +primitive=Owlin Shieldmage +id=513702 +rarity=C +[/card] +[card] +primitive=Pest Summoning +id=513703 +rarity=C +[/card] +[card] +primitive=Practical Research +id=513704 +rarity=U +[/card] +[card] +primitive=Prismari Apprentice +id=513705 +rarity=U +[/card] +[card] +primitive=Prismari Command +id=513706 +rarity=R +[/card] +[card] +primitive=Prismari Pledgemage +id=513707 +rarity=C +[/card] +[card] +primitive=Quandrix Apprentice +id=513708 +rarity=U +[/card] +[card] +primitive=Quandrix Command +id=513709 +rarity=R +[/card] +[card] +primitive=Quandrix Cultivator +id=513710 +rarity=U +[/card] +[card] +primitive=Quandrix Pledgemage +id=513711 +rarity=C +[/card] +[card] +primitive=Quintorius, Field Historian +id=513712 +rarity=U +[/card] +[card] +primitive=Radiant Scrollwielder +id=513713 +rarity=R +[/card] +[card] +primitive=Reconstruct History +id=513714 +rarity=U +[/card] +[card] +primitive=Relic Sloth +id=513715 +rarity=C +[/card] +[card] +primitive=Returned Pastcaller +id=513716 +rarity=U +[/card] +[card] +primitive=Rip Apart +id=513717 +rarity=U +[/card] +[card] +primitive=Rise of Extus +id=513718 +rarity=C +[/card] +[card] +primitive=Rootha, Mercurial Artist +id=513719 +rarity=U +[/card] +[card] +primitive=Rushed Rebirth +id=513720 +rarity=R +[/card] +[card] +primitive=Shadewing Laureate +id=513721 +rarity=U +[/card] +[card] +primitive=Shadrix Silverquill +id=513722 +rarity=M +[/card] +[card] +primitive=Silverquill Apprentice +id=513723 +rarity=U +[/card] +[card] +primitive=Silverquill Command +id=513724 +rarity=R +[/card] +[card] +primitive=Silverquill Pledgemage +id=513725 +rarity=C +[/card] +[card] +primitive=Silverquill Silencer +id=513726 +rarity=R +[/card] +[card] +primitive=Spectacle Mage +id=513727 +rarity=C +[/card] +[card] +primitive=Spirit Summoning +id=513728 +rarity=C +[/card] +[card] +primitive=Spiteful Squad +id=513729 +rarity=C +[/card] +[card] +primitive=Square Up +id=513730 +rarity=C +[/card] +[card] +primitive=Stonebound Mentor +id=513731 +rarity=C +[/card] +[card] +primitive=Tanazir Quandrix +id=513732 +rarity=M +[/card] +[card] +primitive=Teach by Example +id=513733 +rarity=C +[/card] +[card] +primitive=Tend the Pests +id=513734 +rarity=U +[/card] +[card] +primitive=Thrilling Discovery +id=513735 +rarity=C +[/card] +[card] +primitive=Vanishing Verse +id=513736 +rarity=R +[/card] +[card] +primitive=Velomachus Lorehold +id=513737 +rarity=M +[/card] +[card] +primitive=Venerable Warsinger +id=513738 +rarity=R +[/card] +[card] +primitive=Witherbloom Apprentice +id=513739 +rarity=U +[/card] +[card] +primitive=Witherbloom Command +id=513740 +rarity=R +[/card] +[card] +primitive=Witherbloom Pledgemage +id=513741 +rarity=C +[/card] +[card] +primitive=Zimone, Quandrix Prodigy +id=513742 +rarity=U +[/card] +[card] +primitive=Biblioplex Assistant +id=513743 +rarity=C +[/card] +[card] +primitive=Campus Guide +id=513744 +rarity=C +[/card] +[card] +primitive=Codie, Vociferous Codex +id=513745 +rarity=R +[/card] +[card] +primitive=Cogwork Archivist +id=513746 +rarity=C +[/card] +[card] +primitive=Excavated Wall +id=513747 +rarity=C +[/card] +[card] +primitive=Letter of Acceptance +id=513748 +rarity=C +[/card] +[card] +primitive=Reflective Golem +id=513749 +rarity=U +[/card] +[card] +primitive=Spell Satchel +id=513750 +rarity=U +[/card] +[card] +primitive=Strixhaven Stadium +id=513751 +rarity=R +[/card] +[card] +primitive=Team Pennant +id=513752 +rarity=U +[/card] +[card] +primitive=Zephyr Boots +id=513753 +rarity=U +[/card] +[card] +primitive=Access Tunnel +id=513754 +rarity=U +[/card] +[card] +primitive=Archway Commons +id=513755 +rarity=C +[/card] +[card] +primitive=The Biblioplex +id=513756 +rarity=R +[/card] +[card] +primitive=Frostboil Snarl +id=513757 +rarity=R +[/card] +[card] +primitive=Furycalm Snarl +id=513758 +rarity=R +[/card] +[card] +primitive=Hall of Oracles +id=513759 +rarity=R +[/card] +[card] +primitive=Lorehold Campus +id=513760 +rarity=C +[/card] +[card] +primitive=Necroblossom Snarl +id=513761 +rarity=R +[/card] +[card] +primitive=Prismari Campus +id=513762 +rarity=C +[/card] +[card] +primitive=Quandrix Campus +id=513763 +rarity=C +[/card] +[card] +primitive=Shineshadow Snarl +id=513764 +rarity=R +[/card] +[card] +primitive=Silverquill Campus +id=513765 +rarity=C +[/card] +[card] +primitive=Vineglimmer Snarl +id=513766 +rarity=R +[/card] +[card] +primitive=Witherbloom Campus +id=513767 +rarity=C +[/card] +[card] +primitive=Plains +id=516678 +rarity=C +[/card] +[card] +primitive=Plains +id=516679 +rarity=C +[/card] +[card] +primitive=Island +id=516680 +rarity=C +[/card] +[card] +primitive=Island +id=516681 +rarity=C +[/card] +[card] +primitive=Swamp +id=516682 +rarity=C +[/card] +[card] +primitive=Swamp +id=516683 +rarity=C +[/card] +[card] +primitive=Mountain +id=516684 +rarity=C +[/card] +[card] +primitive=Mountain +id=516685 +rarity=C +[/card] +[card] +primitive=Forest +id=516686 +rarity=C +[/card] +[card] +primitive=Forest +id=516687 +rarity=C +[/card] diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index 2e87784ba..61c7ae2fb 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -113,6 +113,15 @@ mana={3}{W} type=Instant [/card] [card] +name=Abundant Harvest +aicode=activate transforms((,newability[all(*[zpos=findfirsttypenonland]|mylibrary) moveto(myhand) and!( all(*[zpos<=findfirsttypenonland]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )!])) oneshot +auto=choice name(Reveal land) Reveal:1 revealzone(mylibrary) revealuntil(land|mylibrary) optionone choice name(Choose land) target(land|reveal) moveto(myhand) optiononeend optiontwo choice name(put on bottom) all(*|reveal) bottomoflibrary optiontwoend revealend +auto=choice name(Reveal non-land) Reveal:1 revealzone(mylibrary) revealuntil(*[-land]|mylibrary) optionone choice name(Choose non-land) target(*[-land]|reveal) moveto(myhand) optiononeend optiontwo choice name(put on bottom) all(*|reveal) bottomoflibrary optiontwoend revealend +text=Choose land or nonland. Reveal cards from the top of your library until you reveal a card of the chosen kind. Put that card into your hand and the rest on the bottom of your library in a random order. +mana={G} +type=Sorcery +[/card] +[card] name=Academy Drake abilities=flying kicker={4} @@ -331,6 +340,17 @@ power=4 toughness=4 [/card] [card] +name=Adrix and Nev, Twincasters +auto=@targeted(this|myBattlefield) from(*[instant;sorcery]|opponentzones):choice name(This spell costs 2 more) name(This spell costs 2 more) target(*[instant;sorcery]|opponentzones) transforms((,newability[pay[[{2}]] name(pay 2 mana) donothing?fizzle])) oneshot +auto=@tokencreated(*|myBattlefield):name(Double the token) all(trigger) clone options(notrigger) +text=Ward {2} (Whenever this creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {2}.) -- If one or more tokens would be created under your control, twice that many of those tokens are created instead. +mana={2}{G}{U} +type=Legendary Creature +subtype=Merfolk Wizard +power=2 +toughness=2 +[/card] +[card] name=Adventure Awaits auto=activate transforms((,newability[if type(creature[zpos<=5]|myLibrary)~morethan~0 then target(creature[zpos<=5]|myLibrary) moveTo(myHand) and!( all(other *[zpos<=5]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )! else all(*[zpos<=5]|mylibrary) moveto(myreveal) and!( bottomoflibrary and!( draw:1 controller)! )! ])) oneshot auto=if type(creature[zpos<=5]|myLibrary)~morethan~0 then name(Look 5 cards) reveal:5 optionone name(Get a creature) target(creature|reveal) transforms((,newability[choice name(Put in hand) moveTo(myHand)],newability[choice name(Put on bottom and draw) bottomoflibrary and!( draw:1 controller )!])) oneshot optiononeend optiontwo name(put on bottom) all(*|reveal) bottomoflibrary optiontwoend revealend @@ -527,6 +547,13 @@ power=3 toughness=3 [/card] [card] +name=Aetherspouts +auto=all(creature[attacking]|battlefield) transforms((,newability[choice name(Put on top) moveto(mylibrary)],newability[choice name(Put on bottom) bottomoflibrary])) oneshot +text=For each attacking creature, its owner puts it on the top or bottom of their library. +mana={3}{U}{U} +type=Instant +[/card] +[card] name=Aetherstorm Roc abilities=flying auto=alterenergy:1 controller @@ -951,6 +978,19 @@ power=3 toughness=3 [/card] [card] +name=Alibou, Ancient Witness +aicode=activate transforms((,newability[all(*[zpos<=type:artifact[tapped]:mybattlefield]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveto(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot +auto=lord(other creature[artifact]|mybattlefield) haste +auto=@combat(attacking) source(creature[artifact]|myBattlefield):name(Deals damage) damage:type:artifact[tapped]:mybattlefield target(player,creature,planeswalker) +auto=@combat(attacking) source(creature[artifact]|myBattlefield):name(Scry cards) scry:type:artifact[tapped]:mybattlefield scrycore delayed dontshow donothing scrycoreend scryend +text=Other artifact creatures you control have haste. -- Whenever one or more artifact creatures you control attack, Alibou, Ancient Witness deals X damage to any target and you scry X, where X is the number of tapped artifacts you control. +mana={3}{R}{W} +type=Legendary Artifact Creature +subtype=Golem +power=4 +toughness=5 +[/card] +[card] name=Alirios, Enraptured auto=tap(noevent) auto=aslongas(creature[Reflection]|mybattlefield) doesnotuntap @@ -1502,6 +1542,19 @@ power=3 toughness=4 [/card] [card] +name=Angel of the Ruins +abilities=flying +aicode=activate target(plains|mylibrary) moveto(myhand) +autohand={2}{cycle}:name(search plain) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(<1>plains|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>*|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend +auto=target(*[artifact;enchantment]|battlefield) moveto(exile) +text=Flying -- When Angel of the Ruins enters the battlefield, exile up to two target artifacts and/or enchantments. -- Plainscycling {2} ({2}, Discard this card: Search your library for a Plains card, reveal it, put it into your hand, then shuffle.) +mana={5}{W}{W} +type=Artifact Creature +subtype=Angel +power=5 +toughness=7 +[/card] +[card] name=Angel of Vitality abilities=flying auto=this(controllerlife > 24) 2/2 @@ -2210,6 +2263,15 @@ power=2 toughness=4 [/card] [card] +name=Archaeomancer's Map +aicode=activate moveTo(myhand) and!( shuffle )! target(plains[basic]|myLibrary) +auto=name(Search 2 plains) reveal:plibrarycount optionone name(choose card) target(plains[basic]|reveal) moveto(myhand) optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(mylibrary) and!( all(*|reveal) moveto(mylibrary) and!(shuffle)! )! optiontwoend revealend +auto=@movedTo(land|opponentbattlefield) restriction{compare(type:land:opponentbattlefield)~morethan~compare(type:land:mybattlefield)}:may name(Put land in play) target(land|myhand) moveto(mybattlefield) +text=When Archaeomancer's Map enters the battlefield, search your library for up to two basic Plains cards, reveal them, put them into your hand, then shuffle. -- Whenever a land enters the battlefield under an opponent's control, if that player controls more lands than you, you may put a land card from your hand onto the battlefield. +mana={2}{W} +type=Artifact +[/card] +[card] name=Archfiend of Despair abilities=flying,nolifegainopponent auto=@each endofturn:life:-oplifelost opponent @@ -3019,6 +3081,17 @@ power=2 toughness=3 [/card] [card] +name=Audacious Reshapers +aicode=activate transforms((,newability[damage:findfirsttypeartifact controller],newability[all(*[zpos=findfirsttypeartifact]|mylibrary) moveto(mybattlefield) and!( all(*[zpos<=findfirsttypeartifact]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )!])) oneshot +auto={T}{S(artifact|mybattlefield)}:name(Reveal cards) reveal:1 revealzone(mylibrary) revealuntil(artifact|mylibrary) optionone name(Get Artifact) target(artifact|reveal) moveto(mybattlefield) and!( damage:1 controller )! optiononeend optiontwo name(put on bottom) all(*|reveal) transforms((,newability[bottomoflibrary],newability[damage:1 controller])) oneshot optiontwoend revealend +text={T}, Sacrifice an artifact: Reveal cards from the top of your library until you reveal an artifact card. Put that card onto the battlefield and the rest on the bottom of your library in a random order. Audacious Reshapers deals damage to you equal to the number of cards revealed this way. +mana={2}{R} +type=Creature +subtype=Human Artificer +power=3 +toughness=3 +[/card] +[card] name=Audacious Thief auto=@combat(notblocked) source(this):draw:1 && life:-1 text=Whenever Audacious Thief attacks, you draw a card and you lose 1 life. @@ -3058,28 +3131,7 @@ type=Instant [card] name=Aurelia, Exemplar of Justice abilities=flying,mentor -auto=@combat(attacking) source(this) restriction{compare(p)~lessthan~1}:counter(1/1,1) target(other creature[attacking;power<=-1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~1}:counter(1/1,1) target(other creature[attacking;power<=0]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~2}:counter(1/1,1) target(other creature[attacking;power<=1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~3}:counter(1/1,1) target(other creature[attacking;power<=2]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~4}:counter(1/1,1) target(other creature[attacking;power<=3]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~5}:counter(1/1,1) target(other creature[attacking;power<=4]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~6}:counter(1/1,1) target(other creature[attacking;power<=5]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~7}:counter(1/1,1) target(other creature[attacking;power<=6]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~8}:counter(1/1,1) target(other creature[attacking;power<=7]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~9}:counter(1/1,1) target(other creature[attacking;power<=8]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~10}:counter(1/1,1) target(other creature[attacking;power<=9]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~11}:counter(1/1,1) target(other creature[attacking;power<=10]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~12}:counter(1/1,1) target(other creature[attacking;power<=11]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~13}:counter(1/1,1) target(other creature[attacking;power<=12]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~14}:counter(1/1,1) target(other creature[attacking;power<=13]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~15}:counter(1/1,1) target(other creature[attacking;power<=14]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~16}:counter(1/1,1) target(other creature[attacking;power<=15]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~17}:counter(1/1,1) target(other creature[attacking;power<=16]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~18}:counter(1/1,1) target(other creature[attacking;power<=17]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~19}:counter(1/1,1) target(other creature[attacking;power<=18]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~20}:counter(1/1,1) target(other creature[attacking;power<=19]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~morethan~20}:counter(1/1,1) target(other creature[attacking;power<=20]|myBattlefield) +auto=@combat(attacking) source(this):name(Choose attacking creature) transforms((,newability[target(other creature[attacking;power<=pminus1minusend]|myBattlefield) counter(1/1)])) oneshot auto=@each my combatbegins:ability$!name(Choose a creature) choice name(Choose non-red, non-white creature) target(creature[-red;-white]|myBattlefield) 2/0 ueot _ choice name(Choose red creature) target(creature[red]|myBattlefield) transforms((,newability[2/0 ueot],newability[trample ueot])) ueot _ name(Choose white creature) target(creature[white]|myBattlefield) transforms((,newability[2/0 ueot],newability[vigilance ueot])) ueot!$ controller text=Flying -- Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) -- At the beginning of combat on your turn, choose up to one target creature you control. Until end of turn, that creature gets +2/+0, gains trample if it's red, and gains vigilance if it's white. mana={2}{R}{W} @@ -3156,6 +3208,17 @@ power=6 toughness=6 [/card] [card] +name=Author of Shadows +auto=if type(*[-land]|opponentgraveyard)~morethan~0 then name(Choose non-land card) name(Choose non-land card) target(*[-land]|opponentgraveyard) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[all(*|opponentgraveyard) moveto(opponentexile)])) forever )! +auto=if type(*[-land]|opponentgraveyard)~equalto~0 then all(*|opponentgraveyard) moveto(opponentexile) +text=When Author of Shadows enters the battlefield, exile all cards from all opponents' graveyards. Choose a nonland card exiled this way. You may cast that card for as long as it remains exiled, and you may spend mana as though it were mana of any color to cast that spell. +mana={4}{B} +type=Creature +subtype=Shade Warlock +power=3 +toughness=3 +[/card] +[card] name=Autumn Willow abilities=opponentshroud,shroud auto={G}:-shroud @@ -3838,28 +3901,7 @@ type=Instant [card] name=Barging Sergeant abilities=haste,mentor -auto=@combat(attacking) source(this) restriction{compare(p)~lessthan~1}:counter(1/1,1) target(other creature[attacking;power<=-1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~1}:counter(1/1,1) target(other creature[attacking;power<=0]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~2}:counter(1/1,1) target(other creature[attacking;power<=1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~3}:counter(1/1,1) target(other creature[attacking;power<=2]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~4}:counter(1/1,1) target(other creature[attacking;power<=3]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~5}:counter(1/1,1) target(other creature[attacking;power<=4]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~6}:counter(1/1,1) target(other creature[attacking;power<=5]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~7}:counter(1/1,1) target(other creature[attacking;power<=6]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~8}:counter(1/1,1) target(other creature[attacking;power<=7]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~9}:counter(1/1,1) target(other creature[attacking;power<=8]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~10}:counter(1/1,1) target(other creature[attacking;power<=9]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~11}:counter(1/1,1) target(other creature[attacking;power<=10]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~12}:counter(1/1,1) target(other creature[attacking;power<=11]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~13}:counter(1/1,1) target(other creature[attacking;power<=12]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~14}:counter(1/1,1) target(other creature[attacking;power<=13]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~15}:counter(1/1,1) target(other creature[attacking;power<=14]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~16}:counter(1/1,1) target(other creature[attacking;power<=15]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~17}:counter(1/1,1) target(other creature[attacking;power<=16]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~18}:counter(1/1,1) target(other creature[attacking;power<=17]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~19}:counter(1/1,1) target(other creature[attacking;power<=18]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~20}:counter(1/1,1) target(other creature[attacking;power<=19]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~morethan~20}:counter(1/1,1) target(other creature[attacking;power<=20]|myBattlefield) +auto=@combat(attacking) source(this):name(Choose attacking creature) transforms((,newability[target(other creature[attacking;power<=pminus1minusend]|myBattlefield) counter(1/1)])) oneshot text=Haste -- Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) mana={4}{R} type=Creature @@ -4963,28 +5005,7 @@ type=Instant [card] name=Blade Instructor abilities=mentor -auto=@combat(attacking) source(this) restriction{compare(p)~lessthan~1}:counter(1/1,1) target(other creature[attacking;power<=-1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~1}:counter(1/1,1) target(other creature[attacking;power<=0]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~2}:counter(1/1,1) target(other creature[attacking;power<=1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~3}:counter(1/1,1) target(other creature[attacking;power<=2]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~4}:counter(1/1,1) target(other creature[attacking;power<=3]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~5}:counter(1/1,1) target(other creature[attacking;power<=4]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~6}:counter(1/1,1) target(other creature[attacking;power<=5]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~7}:counter(1/1,1) target(other creature[attacking;power<=6]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~8}:counter(1/1,1) target(other creature[attacking;power<=7]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~9}:counter(1/1,1) target(other creature[attacking;power<=8]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~10}:counter(1/1,1) target(other creature[attacking;power<=9]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~11}:counter(1/1,1) target(other creature[attacking;power<=10]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~12}:counter(1/1,1) target(other creature[attacking;power<=11]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~13}:counter(1/1,1) target(other creature[attacking;power<=12]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~14}:counter(1/1,1) target(other creature[attacking;power<=13]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~15}:counter(1/1,1) target(other creature[attacking;power<=14]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~16}:counter(1/1,1) target(other creature[attacking;power<=15]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~17}:counter(1/1,1) target(other creature[attacking;power<=16]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~18}:counter(1/1,1) target(other creature[attacking;power<=17]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~19}:counter(1/1,1) target(other creature[attacking;power<=18]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~20}:counter(1/1,1) target(other creature[attacking;power<=19]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~morethan~20}:counter(1/1,1) target(other creature[attacking;power<=20]|myBattlefield) +auto=@combat(attacking) source(this):name(Choose attacking creature) transforms((,newability[target(other creature[attacking;power<=pminus1minusend]|myBattlefield) counter(1/1)])) oneshot text=Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) mana={2}{W} type=Creature @@ -5206,6 +5227,14 @@ power=1 toughness=1 [/card] [card] +name=Blight Mound +auto=lord(pest[attacking]|mybattlefield) transforms((,newability[1/0],newability[menace])) +auto=@movedto(creature[-token]|graveyard) from(mybattlefield):token(Pest,Creature Pest,1/1,green,blue) and!( transforms((,newability[@movedto(this|mygraveyard) from(battlefield):life:1 controller])) forever )! +text=Attacking Pests you control get +1/+0 and have menace. -- Whenever a nontoken creature you control dies, create a 1/1 black and green Pest creature token with "When this creature dies, you gain 1 life." +mana={2}{B} +type=Enchantment +[/card] +[card] name=Blight-Breath Catoblepas auto=-manaB:mybattlefield/-manaB:mybattlefield target(creature|opponentBattlefield) ueot text=When Blight-Breath Catoblepas enters the battlefield, target creature an opponent controls gets -X/-X until end of turn, where X is your devotion to black. (Each {B} in the mana costs of permanents you control counts toward your devotion to black.) @@ -5709,10 +5738,19 @@ power=2 toughness=2 [/card] [card] +name=Blossoming Bogbeast +auto=@combat(attacking) source(this):life:2 controller && all(creature|mybattlefield) transforms((,newability[lifegain/lifegain],newability[trample])) ueot +text=Whenever Blossoming Bogbeast attacks, you gain 2 life. Then creatures you control gain trample and get +X/+X until end of turn, where X is the amount of life you gained this turn. +mana={4}{G} +type=Creature +subtype=Beast +power=3 +toughness=3 +[/card] +[card] name=Blow Your House Down target=creature -auto=cantblock -auto=destroy target(creature[wall]) +auto=transforms((,newability[cantblock],newability[if cantargetcard(*[wall]|*) then destroy])) ueot text=Up to three target creatures can't block this turn. Destroy any of them that are Walls. mana={2}{R} type=Sorcery @@ -5815,6 +5853,67 @@ mana={3}{B}{B}{B} type=Legendary Artifact [/card] [card] +name=Bold Plagiarist +abilities=flash +auto=@counteradded(1/1) from(creature|opponentbattlefield):counter(1/1) +auto=@counteradded(-1/-1) from(creature|opponentbattlefield):counter(-1/-1) +auto=@counteradded(0/0,1,Vigilance) from(creature|opponentbattlefield):counter(0/0,1,Vigilance) +auto=@counteradded(0/0,1,Reach) from(creature|opponentbattlefield):counter(0/0,1,Reach) +auto=@counteradded(0/0,1,Trample) from(creature|opponentbattlefield):counter(0/0,1,Trample) +auto=@counteradded(0/0,1,Flying) from(creature|opponentbattlefield):counter(0/0,1,Flying) +auto=@counteradded(0/0,1,Menace) from(creature|opponentbattlefield):counter(0/0,1,Menace) +auto=@counteradded(0/0,1,Double Strike) from(creature|opponentbattlefield):counter(0/0,1,Double Strike) +auto=@counteradded(0/0,1,First Strike) from(creature|opponentbattlefield):counter(0/0,1,First Strike) +auto=@counteradded(0/0,1,Deathtouch) from(creature|opponentbattlefield):counter(0/0,1,Deathtouch) +auto=@counteradded(0/0,1,Lifelink) from(creature|opponentbattlefield):counter(0/0,1,Lifelink) +auto=@counteradded(0/0,1,Hexproof) from(creature|opponentbattlefield):counter(0/0,1,Hexproof) +auto=@counteradded(0/0,1,Indestructible) from(creature|opponentbattlefield):counter(0/0,1,Indestructible) +auto=@counteradded(0/0,1,Lore) from(creature|opponentbattlefield):counter(0/0,1,Lore) +auto=@counteradded(0/0,1,Time) from(creature|opponentbattlefield):counter(0/0,1,Time) +auto=@counteradded(0/0,1,Fade) from(creature|opponentbattlefield):counter(0/0,1,Fade) +auto=@counteradded(0/0,1,Egg) from(creature|opponentbattlefield):counter(0/0,1,Egg) +auto=@counteradded(0/0,1,loyalty) from(creature|opponentbattlefield):counter(0/0,1,loyalty) +auto=@counteradded(0/0,1,Charge) from(creature|opponentbattlefield):counter(0/0,1,Charge) +auto=@counteradded(0/0,1,flood) from(creature|opponentbattlefield):counter(0/0,1,flood) +auto=@counteradded(0/0,1,Page) from(creature|opponentbattlefield):counter(0/0,1,Page) +auto=@counteradded(0/0,1,Ice) from(creature|opponentbattlefield):counter(0/0,1,Ice) +auto=@counteradded(0/0,1,Storage) from(creature|opponentbattlefield):counter(0/0,1,Storage) +auto=@counteradded(0/0,1,Fury) from(creature|opponentbattlefield):counter(0/0,1,Fury) +auto=@counteradded(0/0,1,Bounty) from(creature|opponentbattlefield):counter(0/0,1,Bounty) +auto=@counteradded(0/0,1,gold) from(creature|opponentbattlefield):counter(0/0,1,gold) +auto=@counteradded(0/0,1,Blood) from(creature|opponentbattlefield):counter(0/0,1,Blood) +auto=@counteradded(0/0,1,Aim) from(creature|opponentbattlefield):counter(0/0,1,Aim) +auto=@counteradded(0/0,1,Task) from(creature|opponentbattlefield):counter(0/0,1,Task) +auto=@counteradded(0/0,1,Level) from(creature|opponentbattlefield):counter(0/0,1,Level) +auto=@counteradded(0/0,1,doom) from(creature|opponentbattlefield):counter(0/0,1,doom) +auto=@counteradded(0/0,1,eyeball) from(creature|opponentbattlefield):counter(0/0,1,eyeball) +auto=@counteradded(0/0,1,brick) from(creature|opponentbattlefield):counter(0/0,1,brick) +auto=@counteradded(0/0,1,Magnet) from(creature|opponentbattlefield):counter(0/0,1,Magnet) +auto=@counteradded(0/0,1,hour) from(creature|opponentbattlefield):counter(0/0,1,hour) +auto=@counteradded(0/0,1,Incarnation) from(creature|opponentbattlefield):counter(0/0,1,Incarnation) +auto=@counteradded(0/0,1,Foreshadow) from(creature|opponentbattlefield):counter(0/0,1,Foreshadow) +auto=@counteradded(0/0,1,Growth) from(creature|opponentbattlefield):counter(0/0,1,Growth) +auto=@counteradded(0/0,1,Ki) from(creature|opponentbattlefield):counter(0/0,1,Ki) +auto=@counteradded(0/0,1,Soot) from(creature|opponentbattlefield):counter(0/0,1,Soot) +auto=@counteradded(0/0,1,Fungus) from(creature|opponentbattlefield):counter(0/0,1,Fungus) +auto=@counteradded(0/0,1,Prey) from(creature|opponentbattlefield):counter(0/0,1,Prey) +auto=@counteradded(0/0,1,knowledge) from(creature|opponentbattlefield):counter(0/0,1,knowledge) +auto=@counteradded(0/0,1,landmark) from(creature|opponentbattlefield):counter(0/0,1,landmark) +auto=@counteradded(0/0,1,Sleep) from(creature|opponentbattlefield):counter(0/0,1,Sleep) +auto=@counteradded(0/0,1,wish) from(creature|opponentbattlefield):counter(0/0,1,wish) +auto=@counteradded(0/0,1,Verse) from(creature|opponentbattlefield):counter(0/0,1,Verse) +auto=@counteradded(0/0,1,Slumber) from(creature|opponentbattlefield):counter(0/0,1,Slumber) +auto=@counteradded(0/0,1,Luck) from(creature|opponentbattlefield):counter(0/0,1,Luck) +auto=@counteradded(0/0,1,Coin) from(creature|opponentbattlefield):counter(0/0,1,Coin) +auto=@counteradded(0/0,1,Depletion) from(creature|opponentbattlefield):counter(0/0,1,Depletion) +text=Flash -- Whenever an opponent puts one or more counters on a creature they control, they put the same number and kind of counters on Bold Plagiarist. +mana={3}{B} +type=Creature +subtype=Vampire Rogue +power=2 +toughness=2 +[/card] +[card] name=Bolrac-Clan Crusher auto={T}{C(1/1,-1),creature|mybattlefield}:damage:2 target(player,creature,planeswalker) text={T}, Remove a +1/+1 counter from a creature you control: Bolrac-Clan Crusher deals 2 damage to any target. @@ -6173,28 +6272,7 @@ toughness=2 [card] name=Boros Challenger abilities=mentor -auto=@combat(attacking) source(this) restriction{compare(p)~lessthan~1}:counter(1/1,1) target(other creature[attacking;power<=-1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~1}:counter(1/1,1) target(other creature[attacking;power<=0]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~2}:counter(1/1,1) target(other creature[attacking;power<=1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~3}:counter(1/1,1) target(other creature[attacking;power<=2]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~4}:counter(1/1,1) target(other creature[attacking;power<=3]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~5}:counter(1/1,1) target(other creature[attacking;power<=4]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~6}:counter(1/1,1) target(other creature[attacking;power<=5]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~7}:counter(1/1,1) target(other creature[attacking;power<=6]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~8}:counter(1/1,1) target(other creature[attacking;power<=7]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~9}:counter(1/1,1) target(other creature[attacking;power<=8]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~10}:counter(1/1,1) target(other creature[attacking;power<=9]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~11}:counter(1/1,1) target(other creature[attacking;power<=10]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~12}:counter(1/1,1) target(other creature[attacking;power<=11]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~13}:counter(1/1,1) target(other creature[attacking;power<=12]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~14}:counter(1/1,1) target(other creature[attacking;power<=13]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~15}:counter(1/1,1) target(other creature[attacking;power<=14]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~16}:counter(1/1,1) target(other creature[attacking;power<=15]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~17}:counter(1/1,1) target(other creature[attacking;power<=16]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~18}:counter(1/1,1) target(other creature[attacking;power<=17]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~19}:counter(1/1,1) target(other creature[attacking;power<=18]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~20}:counter(1/1,1) target(other creature[attacking;power<=19]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~morethan~20}:counter(1/1,1) target(other creature[attacking;power<=20]|myBattlefield) +auto=@combat(attacking) source(this):name(Choose attacking creature) transforms((,newability[target(other creature[attacking;power<=pminus1minusend]|myBattlefield) counter(1/1)])) oneshot auto={2}{R}{W}:1/1 ueot text=Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) -- {2}{R}{W}: Boros Challenger gets +1/+1 until end of turn. mana={R}{W} @@ -6529,6 +6607,16 @@ power=3 toughness=3 [/card] [card] +name=Breena, the Demagogue +abilities=flying +text=Flying -- Whenever a player attacks one of your opponents, if that opponent has more life than another of your opponents, that attacking player draws a card and you put two +1/+1 counters on a creature you control. +mana={1}{W}{B} +type=Legendary Creature +subtype=Bird Warlock +power=1 +toughness=3 +[/card] +[card] name=Bretagard Stronghold auto=tap(noevent) auto={T}:add{G} @@ -6758,6 +6846,18 @@ power=6 toughness=6 [/card] [card] +name=Bronze Guardian +abilities=double strike +auto=foreach(artifact|mybattlefield) 1/0 +auto=@targeted(artifact|myBattlefield) from(*[instant;sorcery]|opponentzones):choice name(This spell costs 2 more) name(This spell costs 2 more) target(*[instant;sorcery]|opponentzones) transforms((,newability[pay[[{2}]] name(pay 2 mana) donothing?fizzle])) oneshot +text=Double strike -- Ward {2} (Whenever this creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {2}.) -- Other artifacts you control have ward {2}. -- Bronze Guardian's power is equal to the number of artifacts you control. +mana={4}{W} +type=Artifact Creature +subtype=Golem +power=* +toughness=5 +[/card] +[card] name=Bronze Horse abilities=trample auto=aslongas(creature|myBattlefield)~morethan~1 preventalldamage to(this) from(*|myStack,opponentStack) @@ -9778,6 +9878,19 @@ type=Artifact subtype=Equipment [/card] [card] +name=Combat Calligrapher +abilities=flying +auto=lord(inkling|opponentbattlefield) cantattack +auto=lord(inkling|opponentbattlefield) cantpwattack +auto=@each my blockers:token(Inkling,Creature Inkling,2/1,white,black,flying,battleready) +text=Flying -- Inklings can't attack you or planeswalkers you control. -- Whenever a player attacks one of your opponents, that attacking player creates a tapped 2/1 white and black Inkling creature token with flying that's attacking that opponent. +mana={3}{W} +type=Creature +subtype=Bird Cleric +power=3 +toughness=3 +[/card] +[card] name=Combat Celebrant auto=@exerted(this) restriction{once}:untap all(other creature|mybattlefield) && nextphasealter(add,combatphases,controller,after) oneshot auto=@combat(attacking) source(this):may exert @@ -9871,6 +9984,14 @@ mana={4}{R} type=Instant [/card] [card] +name=Commander's Insight +auto=choice name(target yourself) draw:X controller && draw:pnumofcommandcast controller +auto=choice name(target opponent) draw:X opponent && draw:onumofcommandcast opponent +text=Target player draws X cards plus an additional card for each time they've cast a commander from the command zone this game. +mana={X}{U}{U}{U} +type=Instant +[/card] +[card] name=Commander's Insignia auto=lord(creature|myBattlefield) pnumofcommandcast/pnumofcommandcast text=Creatures you control get +1/+1 for each time you've cast your commander from the command zone this game. @@ -10837,6 +10958,17 @@ text={T}: Add {C}. -- {4}: Put two +1/+1 counters on Crawling Barrens. Then you type=Land [/card] [card] +name=Creative Technique +other={4}{R} name(Demonstrate) +aicode=activate all(*[zpos=findfirsttypenonland]|mylibrary) moveto(exile) and!( transforms((,newability[zerocast],newability[canplayfromexile],newability[all(*[zpos<=findfirsttypenonland]|mylibrary) moveto(myreveal) and!( bottomoflibrary )!])) oneshot )! +auto=ifnot paid(alternative) then name(Reveal cards) name(Reveal cards) reveal:1 revealzone(mylibrary) revealuntil(*[-land]|mylibrary) optionone name(Get non-land card) target(*[creature;instant;sorcery;enchantment;artifact;planeswalker]|myreveal) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[zerocast])) ueot )! optiononeend optiontwo name(put on bottom) all(*|reveal) bottomoflibrary optiontwoend revealend +auto=if paid(alternative) then name(Reveal cards) name(Reveal cards) reveal:5 revealzone(mylibrary) revealuntil(*[-land]|mylibrary) optionone name(Get 2 non-land cards) target(<2>*[creature;instant;sorcery;enchantment;artifact;planeswalker]|myreveal) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[zerocast])) ueot )! optiononeend optiontwo name(put on bottom) all(*|reveal) bottomoflibrary optiontwoend revealend +auto=if paid(alternative) then ability$!name(Reveal cards) name(Reveal cards) reveal:1 revealzone(mylibrary) revealuntil(*[-land]|mylibrary) optionone name(Get non-land card) target(*[creature;instant;sorcery;enchantment;artifact;planeswalker]|myreveal) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[zerocast])) ueot )! optiononeend optiontwo name(put on bottom) all(*|reveal) bottomoflibrary optiontwoend revealend !$ opponent +text=Demonstrate (When you cast this spell, you may copy it. If you do, choose an opponent to also copy it.) -- Shuffle your library, then reveal cards from the top of it until you reveal a nonland card. Exile that card and put the rest on the bottom of your library in a random order. You may cast the exiled card without paying its mana cost. +mana={4}{R} +type=Sorcery +[/card] +[card] name=Creeping Chill auto=damage:3 opponent auto=life:3 @@ -11268,6 +11400,13 @@ power=2 toughness=2 [/card] [card] +name=Cunning Rhetoric +auto=@each blockers restriction{type(creature[attacking]|opponentbattlefield)~morethan~0}:name(Exile top card) all(*[zpos=1]|opponentlibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana])) forever )! +text=Whenever an opponent attacks you and/or one or more planeswalkers you control, exile the top card of that player's library. You may play that card for as long as it remains exiled, and you may spend mana as though it were mana of any color to cast it. +mana={2}{B} +type=Enchantment +[/card] +[card] name=Cunning Survivor auto=@discarded(*|myhand):1/0 ueot auto=@discarded(*|myhand):unblockable ueot @@ -11352,6 +11491,17 @@ power=1 toughness=3 [/card] [card] +name=Curiosity Crafter +abilities=flying,nomaxhand +auto=@combatdamaged(player) from(creature[token]|myBattlefield):draw:1 controller +text=Flying -- You have no maximum hand size. -- Whenever a creature token you control deals combat damage to a player, draw a card. +mana={3}{U} +type=Creature +subtype=Bird Wizard +power=3 +toughness=3 +[/card] +[card] name=Curse of Bloodletting target=player auto=@damaged(targetedplayer) from(*[instant;sorcery]|Stack,graveyard):damage:thatmuch all(trigger[to]) @@ -11430,6 +11580,14 @@ power=3 toughness=2 [/card] [card] +name=Cursed Mirror +auto={T}:add{R} +auto=if compare(currentphase)~lessthan~11 then name(Copy target creature) may name(Copy target creature) target(creature|mybattlefield) copy and!( all(this) transforms((,newability[haste],newability[phaseaction[endofturn once] flip(Cursed Mirror) undocpy])) forever )! +text={T}: Add {R}. -- As Cursed Mirror enters the battlefield, you may have it become a copy of any creature on the battlefield until end of turn, except it has haste. +mana={2}{R} +type=Artifact +[/card] +[card] name=Cursed Rack auto=hmodifer:-3 opponent text=As Cursed Rack enters the battlefield, choose an opponent. -- The chosen player's maximum hand size is four. @@ -11941,6 +12099,18 @@ mana={U} type=Instant [/card] [card] +name=Dazzling Sphinx +abilities=flying +auto=@combatdamagefoeof(player) from(this):name(Reveal cards) transforms((,newability[all(*[zpos=oppofindfirsttypenonpermanent]|opponentlibrary) moveto(myexile) and!( transforms((,newability[phaseaction[endofturn once checkex] moveto(opponentreveal) and!( bottomoflibrary )!],newability[canplayfromexile],newability[zerocast],newability[all(*[zpos<=oppofindfirsttypenonpermanent]|mylibrary) moveto(myreveal) and!( bottomoflibrary )!])) oneshot )!])) oneshot +auto=@combatdamageof(player) from(this):name(Reveal cards) transforms((,newability[all(*[zpos=findfirsttypenonpermanent]|mylibrary) moveto(myexile) and!( transforms((,newability[phaseaction[endofturn once checkex] bottomoflibrary],newability[canplayfromexile],newability[zerocast],newability[all(*[zpos<=findfirsttypenonpermanent]|mylibrary) moveto(myreveal) and!( bottomoflibrary )!])) oneshot )!])) oneshot +text=Flying -- Whenever Dazzling Sphinx deals combat damage to a player, that player exiles cards from the top of their library until they exile an instant or sorcery card. You may cast that card without paying its mana cost. Then that player puts the exiled cards that weren't cast this way on the bottom of their library in a random order. +mana={3}{U}{U} +type=Creature +subtype=Sphinx +power=4 +toughness=5 +[/card] +[card] name=Dead // Gone other={2}{R} name(Gone) target=creature @@ -12246,6 +12416,14 @@ mana={3}{U} type=Instant [/card] [card] +name=Decisive Denial +auto=if type(creature|mybattlefield)~morethan~0 then if type(creature|opponentbattlefield)~morethan~0 then choice name(Creatures fight) name(Creatures fight) name(Creatures fight) target(creature|mybattlefield) transforms((,newability[name(Choose opponent's creature) target(creature|opponentbattlefield) dynamicability])) ueot +auto=if type(*[-creature]|stack)~morethan~1 then choice name(Counter non-creature spell) name(Counter non-creature spell) target(*[-creature]|stack) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) forever +text=Choose one — -- • Target creature you control fights target creature you don't control. (Each deals damage equal to its power to the other.) -- • Counter target noncreature spell unless its controller pays 3 . +mana={G}{U} +type=Instant +[/card] +[card] name=Declare Dominance target=creature auto=+3/+3 @@ -12283,6 +12461,17 @@ mana={2}{U} type=Instant [/card] [card] +name=Deekah, Fractal Theorist +auto=@movedto(*[instant;sorcery]|mystack):name(Create Fractal) all(trigger[to]) transforms((,newability[token(Fractal^Creature Fractal^0/0^green^blue) and!( counter(1/1.manacost) )!])) oneshot +auto={3}{U}:name(Token gains unblockable) target(creature[token]|battlefield) transforms((,newability[unblockable])) ueot +text=Magecraft — Whenever you cast or copy an instant or sorcery spell, create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is that spell's mana value. -- {3}{U}: Target creature token can't be blocked this turn. +mana={4}{U} +type=Legendary Creature +subtype=Human Wizard +power=3 +toughness=3 +[/card] +[card] name=Deem Worthy abilities=cycling target=creature @@ -13141,6 +13330,16 @@ power=1 toughness=1 [/card] [card] +name=Digsite Engineer +auto=@movedto(artifact|mystack):pay({2}) token(Construct,Artifact Creature Construct,0/0) and!( transforms((,newability[foreach(artifact|mybattlefield) 1/1])) forever )! +text=Whenever you cast an artifact spell, you may pay 2 . If you do, create a 0/0 colorless Construct artifact creature token with "This creature gets +1/+1 for each artifact you control." +mana={2}{W} +type=Creature +subtype=Dwarf Artificer +power=3 +toughness=3 +[/card] +[card] name=Diligent Excavator auto=@movedTo(*[artifact;legendary;saga]|mystack):target(player) deplete:2 text=Whenever you cast a historic spell, target player puts the top two cards of their library into their graveyard. (Artifacts, legendaries, and Sagas are historic.) @@ -13191,6 +13390,17 @@ power=1 toughness=1 [/card] [card] +name=Dina, Soul Steeper +auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality]):life:-1 opponent +auto={1}{S(other creature[-Dina^ Soul Steeper]|mybattlefield)}:storedpower/0 ueot +text=Whenever you gain life, each opponent loses 1 life. -- {1}, Sacrifice another creature: Dina, Soul Steeper gets +X/+0 until end of turn, where X is the sacrificed creature's power. +mana={B}{G} +type=Legendary Creature +subtype=Dryad Druid +power=1 +toughness=3 +[/card] +[card] name=Dinosaur For abilities=haste type=Creature @@ -13754,6 +13964,14 @@ power=5 toughness=5 [/card] [card] +name=Double Major +target=creature|mybattlefield +auto=clone options(nolegend) +text=Copy target creature spell you control, except it isn't legendary if the spell is legendary. (A copy of a creature spell becomes a token.) +mana={G}{U} +type=Instant +[/card] +[card] name=Double Vision auto=@movedTo(*[instant;sorcery]|myStack) restriction{thisturn(*|myStack)~lessthan~1} turnlimited:all(trigger[to]) activate castcard(copied noevent) text=Whenever you cast your first instant or sorcery spell each turn, copy that spell. You may choose new targets for the copy. @@ -14032,6 +14250,14 @@ power=3 toughness=3 [/card] [card] +name=Dramatic Finale +auto=lord(creature[token]|mybattlefield) 1/1 +auto=@movedto(creature[-token]|graveyard) from(mybattlefield) turnlimited:name(Create Inkling) token(Inkling,Creature Inkling,2/1,white,black,flying) +text=Creature tokens you control get +1/+1. -- Whenever one or more nontoken creatures you control die, create a 2/1 white and black Inkling creature token with flying. This ability triggers only once each turn. +mana={WB}{WB}{WB}{WB} +type=Enchantment +[/card] +[card] name=Drana's Silencer auto=target(creature|opponentBattlefield) -calculateparty/-calculateparty ueot text=When Drana's Silencer enters the battlefield, target creature an opponent controls gets -X/-X until end of turn, where X is the number of creatures in your party. (Your party consists of up to one each of Cleric, Rogue, Warrior, and Wizard.) @@ -15137,6 +15363,14 @@ toughness=4 color=white [/card] [card] +name=Elemental Masterpiece +auto=token(Elemental,Creature Elemental,4/4,blue,red)*2 +autohand={UR}{UR}{D}:name(Create a treasure) token(Treasure Sur) +text=Create two 4/4 blue and red Elemental creature tokens. -- {UR}{UR}, Discard Elemental Masterpiece: Create a Treasure token. (It's an artifact with " {T}, Sacrifice this artifact: Add one mana of any color.") +mana={5}{U}{R} +type=Sorcery +[/card] +[card] name=Elemental Phoenix auto=@each my upkeep:moveto(mybattlefield) target(Rekindling Phoenix|mygraveyard) and!( transforms((,newability[haste])) ueot )! auto=@each my upkeep:sacrifice all(this) @@ -15148,6 +15382,14 @@ toughness=1 color=red [/card] [card] +name=Elemental Summoning +auto=token(Elemental,Creature Elemental,4/4,blue,red) +text=Create a 4/4 blue and red Elemental creature token. +mana={3}{UR}{UR} +type=Sorcery +subtype=Lesson +[/card] +[card] name=Elemental Uprising target=land|mybattlefield auto=transforms(Land Creature Elemental,4/4,haste) with(newability[@combat(attacking,blocking) source(this): all(creature|opponentbattlefield) mustblock ueot]) ueot @@ -15156,6 +15398,19 @@ mana={1}{G} type=Instant [/card] [card] +name=Elementalist's Palette +auto=@movedTo(*[hasx]|myStack):counter(0/0,2,Charge) +auto={T}:name(Add white mana) add{W} +auto={T}:name(Add green mana) add{G} +auto={T}:name(Add black mana) add{B} +auto={T}:name(Add blue mana) add{U} +auto={T}:name(Add red mana) add{R} +auto={T}:name(Add colorless mana) if type(*[hasx]|myrestrictedcastingzone)~morethan~0 then thisforeach(variable{hascntcharge}>0) add{C} +text=Whenever you cast a spell with {X} in its mana cost, put two charge counters on Elementalist's Palette. -- {T}: Add one mana of any color. -- {T}: Add Colorless for each charge counter on Elementalist's Palette. Spend this mana only on costs that contain {X}. +mana={3} +type=Artifact +[/card] +[card] name=Elenda, the Dusk Rose abilities=lifelink auto=@movedTo(other creature|graveyard) from(battlefield):counter(1/1) @@ -16235,6 +16490,14 @@ mana={U}{U} type=Instant [/card] [card] +name=Essence Infusion +target=creature +auto=transforms((,newability[counter(1/1.2)],newability[lifelink])) ueot +text=Put two +1/+1 counters on target creature. It gains lifelink until end of turn. +mana={1}{B} +type=Sorcery +[/card] +[card] name=Essence of the Wild auto=@movedto(creature|mybattlefield):all(trigger[to]) transforms((,newability[copy all(Essence of the Wild)])) forever text=Creatures you control enter the battlefield as a copy of Essence of the Wild. @@ -16245,6 +16508,13 @@ power=6 toughness=6 [/card] [card] +name=Essence Pulse +auto=life:2 controller && all(creature|battlefield) transforms((,newability[-lifegain/-lifegain])) ueot +text=You gain 2 life. Each creature gets -X/-X until end of turn, where X is the amount of life you gained this turn. +mana={3}{B} +type=Sorcery +[/card] +[card] name=Essence Symbiote auto=@mutated(creature|mybattlefield):all(trigger[to]) counter(1/1) auto=@mutated(creature|mybattlefield):life:2 controller @@ -16263,6 +16533,17 @@ mana={2}{U} type=Enchantment [/card] [card] +name=Esix, Fractal Bloom +abilities=flying +auto=@movedto(*[token]|mybattlefield) turnlimited:all(trigger[to] transforms((,newability[may name(Copy a creature) target(creature[-Esix^ Fractal Bloom]|battlefield) copy])) oneshot +text=Flying -- The first time you would create one or more tokens during each of your turns, you may instead choose a creature other than Esix, Fractal Bloom and create that many tokens that are copies of that creature. +mana={4}{G}{U} +type=Legendary Creature +subtype=Fractal +power=4 +toughness=4 +[/card] +[card] name=Etali, Primal Storm auto=@combat(attacking) source(this):Reveal:1 revealzone(mylibrary) revealuntil(*|mylibrary) optionone choice name(Cast Card) target(*|reveal) moveto(mylibrary) and!(may castcard(normal))! optiononeend optiontwo target(<1>*|reveal) bottomoflibrary and!(all(*|reveal) bottomoflibrary)! optiontwoend revealend auto=@combat(attacking) source(this):Reveal:1 revealzone(opponentlibrary) revealuntil(*|opponentlibrary) optionone choice name(Cast Card) target(*|reveal) moveto(opponentlibrary) and!(may castcard(normal))! optiononeend optiontwo target(<1>*|reveal) bottomoflibrary and!(all(*|reveal) bottomoflibrary)! optiontwoend revealend @@ -16377,6 +16658,13 @@ mana={2}{G}{G} type=Sorcery [/card] [card] +name=Eureka Moment +auto=draw:2 && transforms((,newability[may name(Put land in play) target(land|myhand) moveto(mybattlefield)])) forever +text=Draw two cards. You may put a land card from your hand onto the battlefield. +mana={2}{G}{U} +type=Instant +[/card] +[card] name=Eutropia the Twice-Favored auto=@movedTo(enchantment|myBattlefield):counter(1/1,1) target(creature) && flying target(creature) ueot text=Constellation — Whenever an enchantment enters the battlefield under your control, put a +1/+1 counter on target creature. That creature gains flying until end of turn. @@ -16523,6 +16811,16 @@ power=3 toughness=3 [/card] [card] +name=Excavation Technique +other={3}{W} name(Demonstrate) +auto=name(Destroy permanent) target(*|battlefield) transforms((,newability[destroy],newability[token(Treasure Sur)*2])) oneshot +auto=if paid(alternative) then ability$!name(Destroy permanent) name(Destroy permanent) target(*|battlefield) transforms((,newability[destroy],newability[token(Treasure Sur)*2])) oneshot!$ controller +auto=if paid(alternative) then ability$!name(Destroy permanent) name(Destroy permanent) target(*|battlefield) transforms((,newability[destroy],newability[token(Treasure Sur)*2])) oneshot!$ opponent +text=Demonstrate (When you cast this spell, you may copy it. If you do, choose an opponent to also copy it. Players may choose new targets for their copies.) -- Destroy target nonland permanent. Its controller creates two Treasure tokens. +mana={3}{W} +type=Sorcery +[/card] +[card] name=Excavator auto={T}{S(land[basic,island]|myBattlefield)}:target(creature) islandwalk ueot auto={T}{S(land[basic,mountain]|myBattlefield)}:target(creature) mountainwalk ueot @@ -16600,6 +16898,14 @@ power=4 toughness=4 [/card] [card] +name=Exhilarating Elocution +target=creature|mybattlefield +auto=name(Put two 1/1 counters) transforms((,newability[counter(1/1.2)],newability[name(Other creature gets +1/+1) target(other creature|mybattlefield) 1/1 ueot])) oneshot +text=Put two +1/+1 counters on target creature you control. Other creatures you control get +1/+1 until end of turn. +mana={2}{W}{B} +type=Sorcery +[/card] +[card] name=Exhumer Thrull auto=name(Return creature to hand) moveto(myhand) target(creature|mygraveyard) auto=@movedto(this|graveyard) from(mybattlefield):all(trigger[to]) transforms((,newability[moveto(myexile) and!( transforms((,newability[name(Haunt a creature) target(creature) counter(0/0.1.ExhumerHaunted)])) oneshot )!])) oneshot @@ -16853,6 +17159,19 @@ power=3 toughness=3 [/card] [card] +name=Ezzaroot Channeler +abilities=reach +auto=token(manareducer,manareducer,0/0,shroud,indestructible,treason) and!( transforms((,newability[thisforeach(variable{lifegain}>0) lord(creature|mycastingzone) changecost(colorless:-1) forcedalive])) forever )! +auto=@each untap:token(manareducer,manareducer,0/0,shroud,indestructible,treason) and!( transforms((,newability[thisforeach(variable{lifegain}>0) lord(creature|mycastingzone) changecost(colorless:-1) forcedalive])) forever )! +auto={T}:life:2 controller +text=Reach -- Creature spells you cast cost {X} less to cast, where X is the amount of life you gained this turn. -- {T}: You gain 2 life. +mana={5}{G} +type=Creature +subtype=Treefolk Druid +power=4 +toughness=6 +[/card] +[card] name=Fa'adiyah Seer auto={T}:reveal:1 optionone if type(land|reveal)~morethan~0 then target(<1>*|reveal) moveto(myHand) optiononeend optiontwo if type(land|reveal)~lessthan~1 then target(<1>*|reveal) moveto(myGraveyard) optiontwoend revealend text={T}: Draw a card and reveal it. If it isn't a land card, discard it. @@ -17006,6 +17325,19 @@ mana={1}{U} type=Instant [/card] [card] +name=Fain, the Broker +auto={T}{S(creature|mybattlefield)}:name(Put two 1/1 counters) target(creature|battlefield) counter(1/1,2) +auto={T}:name(Create a treasure) target(creature[counter{any}]|mybattlefield) transforms((,newability[removesinglecountertype(1)],newability[token(Treasure Sur)])) oneshot +auto={T}{S(artifact|mybattlefield)}:name(Create an inkling) token(Inkling,Creature Inkling,2/1,white,black,flying) +auto={3}{B}:name(Untap Fain, the Broker) untap all(this) +text={T}, Sacrifice a creature: Put two +1/+1 counters on target creature. -- {T}, Remove a counter from a creature you control: Create a Treasure token. -- {T}, Sacrifice an artifact: Create a 2/1 white and black Inkling creature token with flying. -- {3}{B}: Untap Fain, the Broker. +mana={2}{B} +type=Legendary Creature +subtype=Human Warlock +power=3 +toughness=3 +[/card] +[card] name=Fairgrounds Trumpeter auto=@counteradded(1/1) from(*|mybattlefield):counter(1/1) text=At the beginning of each end step, if a +1/+1 counter was placed on a permanent under your control this turn, put a +1/+1 counter on Fairgrounds Trumpeter. @@ -17464,6 +17796,37 @@ power=2 toughness=3 [/card] [card] +name=Felisa, Fang of Silverquill +abilities=flying,mentor +auto=@combat(attacking) source(this):name(Choose attacking creature) transforms((,newability[target(other creature[attacking;power<=pminus1minusend]|myBattlefield) counter(1/1)])) oneshot +auto=@movedto(creature[-token;counter{1/1.1}]|mygraveyard) from(myBattlefield):thisforeach(variable{1}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.2}]|mygraveyard) from(myBattlefield):thisforeach(variable{2}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.3}]|mygraveyard) from(myBattlefield):thisforeach(variable{3}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.4}]|mygraveyard) from(myBattlefield):thisforeach(variable{4}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.5}]|mygraveyard) from(myBattlefield):thisforeach(variable{5}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.6}]|mygraveyard) from(myBattlefield):thisforeach(variable{6}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.7}]|mygraveyard) from(myBattlefield):thisforeach(variable{7}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.8}]|mygraveyard) from(myBattlefield):thisforeach(variable{8}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.9}]|mygraveyard) from(myBattlefield):thisforeach(variable{9}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.10}]|mygraveyard) from(myBattlefield):thisforeach(variable{10}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.11}]|mygraveyard) from(myBattlefield):thisforeach(variable{11}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.12}]|mygraveyard) from(myBattlefield):thisforeach(variable{12}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.13}]|mygraveyard) from(myBattlefield):thisforeach(variable{13}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.14}]|mygraveyard) from(myBattlefield):thisforeach(variable{14}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.15}]|mygraveyard) from(myBattlefield):thisforeach(variable{15}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.16}]|mygraveyard) from(myBattlefield):thisforeach(variable{16}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.17}]|mygraveyard) from(myBattlefield):thisforeach(variable{17}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.18}]|mygraveyard) from(myBattlefield):thisforeach(variable{18}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.19}]|mygraveyard) from(myBattlefield):thisforeach(variable{19}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +auto=@movedto(creature[-token;counter{1/1.20}]|mygraveyard) from(myBattlefield):thisforeach(variable{20}) token(Inkling,Creature Inkling,2/1,white,black,flying) and!( tap(noevent) )! +text=Flying -- Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) -- Whenever a nontoken creature you control dies, if it had counters on it, create X tapped 2/1 white and black Inkling creature tokens with flying, where X is the number of counters it had on it. +mana={2}{W}{B} +type=Legendary Creature +subtype=Vampire Wizard +power=3 +toughness=2 +[/card] +[card] name=Fell Flagship auto=lord(pirate|mybattlefield) 1/0 auto=@combatdamaged(player) from(this):ability$!discard(*|myhand)!$ opponent @@ -17840,6 +18203,15 @@ mana={3}{R}{R}{R} type=Enchantment [/card] [card] +name=Fiery Encore +abilities=storm +auto=if type(*[-land]|myhand)~morethan~0 then choice name(Discard non-land card) name(Discard non-land card) target(*[-land]|myhand) transforms((,newability[damage:manacost target(*[creature;planeswalker]|battlefield)],newability[reject],newability[draw:1 controller])) oneshot +auto=if type(land|myhand)~morethan~0 then choice name(Discard a land) name(Discard a land) target(land|myhand) transforms((,newability[reject],newability[draw:1 controller])) oneshot +text=Discard a card, then draw a card. When you discard a nonland card this way, Fiery Encore deals damage equal to that card's mana value to target creature or planeswalker. -- Storm (When you cast this spell, copy it for each spell cast before it this turn.) +mana={4}{R} +type=Sorcery +[/card] +[card] name=Fiery Finish target=creature auto=damage:7 @@ -18707,6 +19079,14 @@ power=4 toughness=4 [/card] [card] +name=Flunk +target=creature +auto=transforms((,newability[-7minusphandcountminusend/-7minusphandcountminusend ueot])) ueot +text=Target creature gets -X/-X until end of turn, where X is 7 minus the number of cards in that creature's controller's hand. +mana={1}{B} +type=Instant +[/card] +[card] name=Flusterstorm abilities=storm target=instant,sorcery|stack @@ -19115,6 +19495,33 @@ type=Enchantment subtype=Aura [/card] [card] +name=Fractal Harness +auto={2}:equip +auto=token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.x) )! +auto=name(Attach to fractal) rehook target(fractal[token;fresh;counter{1/1}]|mybattlefield) +auto=transforms((,newability[@combat(attacking) source(this):thisforeach(counter{1/1.1}) counter(1/1) all(this)])) +text=When Fractal Harness enters the battlefield, create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it and attach Fractal Harness to it. -- Whenever equipped creature attacks, double the number of +1/+1 counters on it. -- Equip {2} +mana={X}{2}{G} +type=Artifact +subtype=Equipment +[/card] +[card] +name=Fractal Summoning +auto=token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.x) )! +text=Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it. +mana={X}{GU}{GU} +type=Sorcery +subtype=Lesson +[/card] +[card] +name=Fracture +target=artifact,enchantment,planeswalker +auto=destroy +text=Destroy target artifact, enchantment, or planeswalker. +mana={W}{B} +type=Instant +[/card] +[card] name=Fractured Identity target=*[-land] auto=moveto(exile) @@ -20144,6 +20551,33 @@ mana={2}{R} type=Sorcery [/card] [card] +name=Geometric Nexus +auto=@movedto(*[instant;sorcery;manacost=1]|stack):counter(0/0,1,Charge) +auto=@movedto(*[instant;sorcery;manacost=2]|stack):counter(0/0,2,Charge) +auto=@movedto(*[instant;sorcery;manacost=3]|stack):counter(0/0,3,Charge) +auto=@movedto(*[instant;sorcery;manacost=4]|stack):counter(0/0,4,Charge) +auto=@movedto(*[instant;sorcery;manacost=5]|stack):counter(0/0,5,Charge) +auto=@movedto(*[instant;sorcery;manacost=6]|stack):counter(0/0,6,Charge) +auto=@movedto(*[instant;sorcery;manacost=7]|stack):counter(0/0,7,Charge) +auto=@movedto(*[instant;sorcery;manacost=8]|stack):counter(0/0,8,Charge) +auto=@movedto(*[instant;sorcery;manacost=9]|stack):counter(0/0,9,Charge) +auto=@movedto(*[instant;sorcery;manacost=10]|stack):counter(0/0,10,Charge) +auto=@movedto(*[instant;sorcery;manacost=11]|stack):counter(0/0,11,Charge) +auto=@movedto(*[instant;sorcery;manacost=12]|stack):counter(0/0,12,Charge) +auto=@movedto(*[instant;sorcery;manacost=13]|stack):counter(0/0,13,Charge) +auto=@movedto(*[instant;sorcery;manacost=14]|stack):counter(0/0,14,Charge) +auto=@movedto(*[instant;sorcery;manacost=15]|stack):counter(0/0,15,Charge) +auto=@movedto(*[instant;sorcery;manacost=16]|stack):counter(0/0,16,Charge) +auto=@movedto(*[instant;sorcery;manacost=17]|stack):counter(0/0,17,Charge) +auto=@movedto(*[instant;sorcery;manacost=18]|stack):counter(0/0,18,Charge) +auto=@movedto(*[instant;sorcery;manacost=19]|stack):counter(0/0,19,Charge) +auto=@movedto(*[instant;sorcery;manacost>=20]|stack):counter(0/0,20,Charge) +auto={6}{T}:name(Remove all charge counters) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.hascntcharge) )! && removeallcounters(0/0,1,Charge) +text=Whenever a player casts an instant or sorcery spell, put a number of charge counters on Geometric Nexus equal to that spell's mana value. -- {6}, {T}, Remove all charge counters from Geometric Nexus: Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is the number of charge counters removed this way. +mana={2} +type=Artifact +[/card] +[card] name=Geosurge auto=this(variable{type:*[creature;artifact]:myrestrictedcastingzone}>0) {T}:add{R}{R}{R}{R}{R}{R}{R} text=Add {R}{R}{R}{R}{R}{R}{R} to your mana pool. Spend this mana only to cast artifact or creature spells. @@ -21238,6 +21672,14 @@ text=Gnottvold Slumbermound enters the battlefield tapped. -- {T}: Add {R}. -- { type=Land [/card] [card] +name=Go Blank +target=player +auto=ability$!name(Discard 2 cards) name(Discard 2 cards) target(<2>*|myhand) reject and!( all(*|mygraveyard) moveto(exile) )! !$ targetedplayer +text=Target player discards two cards. Then exile all cards from that player's graveyard. +mana={2}{B} +type=Sorcery +[/card] +[card] name=Go for Blood abilities=cycling target=creature|myBattlefield @@ -21290,28 +21732,7 @@ toughness=1 [card] name=Goblin Banneret abilities=mentor -auto=@combat(attacking) source(this) restriction{compare(p)~lessthan~1}:counter(1/1,1) target(other creature[attacking;power<=-1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~1}:counter(1/1,1) target(other creature[attacking;power<=0]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~2}:counter(1/1,1) target(other creature[attacking;power<=1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~3}:counter(1/1,1) target(other creature[attacking;power<=2]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~4}:counter(1/1,1) target(other creature[attacking;power<=3]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~5}:counter(1/1,1) target(other creature[attacking;power<=4]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~6}:counter(1/1,1) target(other creature[attacking;power<=5]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~7}:counter(1/1,1) target(other creature[attacking;power<=6]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~8}:counter(1/1,1) target(other creature[attacking;power<=7]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~9}:counter(1/1,1) target(other creature[attacking;power<=8]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~10}:counter(1/1,1) target(other creature[attacking;power<=9]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~11}:counter(1/1,1) target(other creature[attacking;power<=10]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~12}:counter(1/1,1) target(other creature[attacking;power<=11]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~13}:counter(1/1,1) target(other creature[attacking;power<=12]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~14}:counter(1/1,1) target(other creature[attacking;power<=13]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~15}:counter(1/1,1) target(other creature[attacking;power<=14]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~16}:counter(1/1,1) target(other creature[attacking;power<=15]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~17}:counter(1/1,1) target(other creature[attacking;power<=16]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~18}:counter(1/1,1) target(other creature[attacking;power<=17]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~19}:counter(1/1,1) target(other creature[attacking;power<=18]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~20}:counter(1/1,1) target(other creature[attacking;power<=19]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~morethan~20}:counter(1/1,1) target(other creature[attacking;power<=20]|myBattlefield) +auto=@combat(attacking) source(this):name(Choose attacking creature) transforms((,newability[target(other creature[attacking;power<=pminus1minusend]|myBattlefield) counter(1/1)])) oneshot auto={1}{R}:2/0 ueot text=Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) -- {1}{R}: Goblin Banneret gets +2/+0 until end of turn. mana={R} @@ -21767,6 +22188,33 @@ power=4 toughness=4 [/card] [card] +name=Golden Ratio +auto=if type(creature[power=0]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=1]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=2]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=3]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=4]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=5]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=6]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=7]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=8]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=9]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=10]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=11]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=12]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=13]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=14]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=15]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=16]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=17]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=18]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=19]|mybattlefield)~morethan~0 then draw:1 controller +auto=if type(creature[power=20]|mybattlefield)~morethan~0 then draw:1 controller +text=Draw a card for each different power among creatures you control. +mana={1}{G}{U} +type=Sorcery +[/card] +[card] name=Goldmane Griffin abilities=flying,vigilance auto=moveto(myhand) target(Ajani^ Inspiring Leader|mylibrary) @@ -22760,6 +23208,30 @@ power=3 toughness=3 [/card] [card] +name=Guardian Archon +abilities=flying +auto=name(Choose opponent) target(opponent) donothing +auto=this(cantargetcard(*[-effectactivated]) {0}:name(Gain protection) all(this) becomes(effectactivated) forever && target(*|mybattlefield) transforms((,newability[opponentshroud],newability[playershroud])) ueot +text=Flying -- As Guardian Archon enters the battlefield, secretly choose an opponent. -- Reveal the player you chose: You and target permanent you control each gain protection from the chosen player until end of turn. Activate only once. +mana={4}{W}{W} +type=Creature +subtype=Archon +power=5 +toughness=5 +[/card] +[card] +name=Guardian Augmenter +abilities=flash +auto=lord(creature[iscommander]|mybattlefield) 2/2 +auto=lord(*[iscommander]) opponentshroud +text=Flash -- Commander creatures you control get +2/+2. -- Commanders you control have hexproof. +mana={2}{G} +type=Creature +subtype=Troll Wizard +power=2 +toughness=2 +[/card] +[card] name=Guardian Gladewalker abilities=changeling auto=name(Put 1/1 counter) counter(1/1) target(creature) @@ -22941,6 +23413,37 @@ power=2 toughness=3 [/card] [card] +name=Gyome, Master Chef +abilities=trample +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~1}:token(-473141) +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~2}:token(-473141)*2 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~3}:token(-473141)*3 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~4}:token(-473141)*4 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~5}:token(-473141)*5 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~6}:token(-473141)*6 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~7}:token(-473141)*7 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~8}:token(-473141)*8 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~9}:token(-473141)*9 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~10}:token(-473141)*10 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~11}:token(-473141)*11 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~12}:token(-473141)*12 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~13}:token(-473141)*13 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~14}:token(-473141)*14 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~15}:token(-473141)*15 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~16}:token(-473141)*16 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~17}:token(-473141)*17 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~18}:token(-473141)*18 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~equalto~19}:token(-473141)*19 +auto=@each my end restriction{thisturn(creature[-token]|mybattlefield)~morethan~19}:token(-473141)*20 +auto={1}{S(food|mybattlefield)}:name(Creature gains indestructible) target(creature|battlefield) transforms((,newability[indestructible],newability[tap])) ueot +text=Trample -- At the beginning of your end step, create a number of Food tokens equal to the number of nontoken creatures you had enter the battlefield under your control this turn. -- {1}, Sacrifice a Food: Target creature gains indestructible until end of turn. Tap it. +mana={2}{B}{G} +type=Legendary Creature +subtype=Troll Warlock +power=5 +toughness=3 +[/card] +[card] name=Gyre Engineer auto={T}:Add{G}{U} text={T}: Add {G}{U}. @@ -23182,28 +23685,7 @@ toughness=4 [card] name=Hammer Dropper abilities=mentor -auto=@combat(attacking) source(this) restriction{compare(p)~lessthan~1}:counter(1/1,1) target(other creature[attacking;power<=-1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~1}:counter(1/1,1) target(other creature[attacking;power<=0]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~2}:counter(1/1,1) target(other creature[attacking;power<=1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~3}:counter(1/1,1) target(other creature[attacking;power<=2]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~4}:counter(1/1,1) target(other creature[attacking;power<=3]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~5}:counter(1/1,1) target(other creature[attacking;power<=4]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~6}:counter(1/1,1) target(other creature[attacking;power<=5]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~7}:counter(1/1,1) target(other creature[attacking;power<=6]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~8}:counter(1/1,1) target(other creature[attacking;power<=7]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~9}:counter(1/1,1) target(other creature[attacking;power<=8]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~10}:counter(1/1,1) target(other creature[attacking;power<=9]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~11}:counter(1/1,1) target(other creature[attacking;power<=10]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~12}:counter(1/1,1) target(other creature[attacking;power<=11]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~13}:counter(1/1,1) target(other creature[attacking;power<=12]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~14}:counter(1/1,1) target(other creature[attacking;power<=13]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~15}:counter(1/1,1) target(other creature[attacking;power<=14]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~16}:counter(1/1,1) target(other creature[attacking;power<=15]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~17}:counter(1/1,1) target(other creature[attacking;power<=16]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~18}:counter(1/1,1) target(other creature[attacking;power<=17]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~19}:counter(1/1,1) target(other creature[attacking;power<=18]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~20}:counter(1/1,1) target(other creature[attacking;power<=19]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~morethan~20}:counter(1/1,1) target(other creature[attacking;power<=20]|myBattlefield) +auto=@combat(attacking) source(this):name(Choose attacking creature) transforms((,newability[target(other creature[attacking;power<=pminus1minusend]|myBattlefield) counter(1/1)])) oneshot text=Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) mana={2}{R}{W} type=Creature @@ -23771,6 +24253,17 @@ mana={W} type=Instant [/card] [card] +name=Healing Technique +auto=exiledeath +other={3}{G} name(Demonstrate) +auto=name(Return card) target(*|mygraveyard) transforms((,newability[life:manacost controller],newability[moveto(myhand)])) oneshot +auto=if paid(alternative) then ability$!name(Return card) name(Return card) target(*|mygraveyard) transforms((,newability[life:manacost controller],newability[moveto(myhand)])) oneshot!$ controller +auto=if paid(alternative) then ability$!name(Return card) name(Return card) target(*|mygraveyard) transforms((,newability[life:manacost controller],newability[moveto(myhand)])) oneshot!$ opponent +text=Demonstrate (When you cast this spell, you may copy it. If you do, choose an opponent to also copy it. Players may choose new targets for their copies.) -- Return target card from your graveyard to your hand. You gain life equal to that card's mana value. Exile Healing Technique. +mana={3}{G} +type=Sorcery +[/card] +[card] name=Heart Wolf abilities=first strike auto={T}:restriction{during battle} name(Choose dwarf) name(Choose dwarf) target(creature[dwarf]|mybattlefield) transforms((,newability[2/0],newability[first strike],newability[@movedto(this|nonbattlezone) from(mybattlefield):sacrifice target(Heart Wolf[tapped]|mybattlefield)])) ueot @@ -25024,6 +25517,15 @@ power=1 toughness=3 [/card] [card] +name=Humiliate +auto=if type(*[-land]|opponenthand)~morethan~0 then name(Choose non-land card) name(Choose non-land card) target(*[-land]|opponenthand) reject +auto=if type(*[-land]|opponenthand)~equalto~0 then name(Reveal hand) name(Reveal hand) target(*|opponenthand) moveto(opponentreveal) and!( moveto(opponenthand) )! +auto=ability$!name(Put 1/1 counter) name(Put 1/1 counter) target(creature|mybattlefield) counter(1/1)!$ controller +text=Target opponent reveals their hand. You choose a nonland card from it. That player discards that card. Put a +1/+1 counter on a creature you control. +mana={W}{B} +type=Sorcery +[/card] +[card] name=Humility auto=lord(creature|battlefield) loseabilities forever auto=lord(creature|battlefield) transforms((,setpower=0,settoughness=1)) forever @@ -25116,6 +25618,16 @@ mana={G} type=Sorcery [/card] [card] +name=Hunt for Specimens +auto=token(Pest,Creature Pest,1/1,green,blue) and!( transforms((,newability[@movedto(this|mygraveyard) from(battlefield):life:1 controller])) forever )! +auto=if type(*[lesson]|mysideboard)~morethan~0 then choice name(Put lesson in hand) name(Put lesson in hand) target(*[lesson]|mysideboard) moveto(myhand) +auto=if type(*|myhand)~morethan~0 then choice name(Discard and draw) name(Discard and draw) target(*|myhand) reject and!(draw:1)! +auto=choice name(Don't learn) donothing +text=Create a 1/1 black and green Pest creature token with "When this creature dies, you gain 1 life." -- Learn. (You may reveal a Lesson card you own from outside the game and put it into your hand, or discard a card to draw a card.) +mana={1}{B} +type=Sorcery +[/card] +[card] name=Hunted Nightmare abilities=menace auto=notatarget(creature[-human]) transforms((,newability[counter(0/0,1,Deathtouch)],newability[this(counter{0/0.1.Deathtouch}>=1) deathtouch])) opponent @@ -25984,6 +26496,16 @@ power=4 toughness=5 [/card] [card] +name=Incarnation Technique +other={4}{B} name(Demonstrate) +auto=name(Mill cards and return creature) transforms((,newability[deplete:5 controller],newability[target(creature|mygraveyard) moveto(mybattlefield)])) oneshot +auto=if paid(alternative) then ability$!name(Mill cards and return creature) name(Mill cards and return creature) transforms((,newability[deplete:5 controller],newability[target(creature|mygraveyard) moveto(mybattlefield)])) oneshot!$ controller +auto=if paid(alternative) then ability$!name(Mill cards and return creature) name(Mill cards and return creature) transforms((,newability[deplete:5 controller],newability[target(creature|mygraveyard) moveto(mybattlefield)])) oneshot!$ opponent +text=Demonstrate (When you cast this spell, you may copy it. If you do, choose an opponent to also copy it.) -- Mill five cards, then return a creature card from your graveyard to the battlefield. +mana={4}{B} +type=Sorcery +[/card] +[card] name=Incendiary Command target=player auto=choice name(Choose 1 and 2) damage:4 && damage:2 all(creature|battlefield) @@ -26305,6 +26827,17 @@ mana={5}{R} type=Sorcery [/card] [card] +name=Inferno Project +abilities=trample +auto=counter(1/1,pgmanainstantsorcery) +text=Trample -- Inferno Project enters the battlefield with X +1/+1 counters on it, where X is the total mana value of instant and sorcery cards in your graveyard. +mana={6}{R} +type=Creature +subtype=Elemental +power=0 +toughness=0 +[/card] +[card] name=Inferno Titan auto={R}:1/0 ueot auto=thisforeach(variable{3}) ability$!name(Deal 1 damage) name(Deal 1 damage) target(player,creature,planeswalker) damage:1!$ controller @@ -26425,6 +26958,14 @@ power=3 toughness=1 [/card] [card] +name=Inkling Summoning +auto=token(Inkling,Creature Inkling,2/1,white,black,flying) +text=Create a 2/1 white and black Inkling creature token with flying. +mana={1}{WB}{WB} +type=Sorcery +subtype=Lesson +[/card] +[card] name=Inner Demon target=creature auto=teach(creature) +2/+2 @@ -26652,6 +27193,18 @@ power=1 toughness=4 [/card] [card] +name=Inspiring Refrain +abilities=exiledeath +other={2}{U} name(Suspend 3) +auto=ifnot paid(alternative) then draw:2 controller +auto=moveto(myexile) and!( counter(0/0,3,Time) )! +autoexile=@each my upkeep restriction{compare(hascnttime)~morethan~1}:counter(0/0,-1,Time) +autoexile=@each my upkeep restriction{compare(hascnttime)~equalto~1}:activate castcard(normal) +text=Draw two cards. Exile Inspiring Refrain with three time counters on it. -- Suspend 3 — {2}{U} (Rather than cast this card from your hand, you may pay {2}{U} and exile it with three time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.) +mana={4}{U}{U} +type=Sorcery +[/card] +[card] name=Inspiring Unicorn auto=@combat(attacking) source(this):all(creature|myBattlefield) 1/1 ueot text=Whenever Inspiring Unicorn attacks, creatures you control get +1/+1 until end of turn. @@ -28321,6 +28874,17 @@ power=1 toughness=1 [/card] [card] +name=Keen Duelist +auto=@each my upkeep:all(*[zpos=1]|mylibrary) moveto(myhand) and!( transforms((,newability[life:-manacost opponent])) oneshot )! +auto=@each my upkeep:all(*[zpos=1]|opponentlibrary) moveto(opponenthand) and!( transforms((,newability[life:-manacost opponent])) oneshot )! +text=At the beginning of your upkeep, you and target opponent each reveal the top card of your library. You each lose life equal to the mana value of the card revealed by the other player. You each put the card you revealed into your hand. +mana={1}{B} +type=Creature +subtype=Human Wizard +power=2 +toughness=2 +[/card] +[card] name=Keen Glidemaster auto={2}{U}:target(creature) flying ueot text={2}{U}: Target creature gains flying until end of turn. @@ -29446,7 +30010,7 @@ toughness=1 [card] name=Kraum, Ludevic's Opus abilities=flying,haste,partner -auto=@restriction=thisturn(*|stack)~equalto~2:draw:1 +auto=@movedto(*|opponentStack) restriction{thisturn(*|opponentStack)~equalto~1}:draw:1 controller text=Flying, haste -- Whenever an opponent casts their second spell each turn, draw a card. -- Partner (You can have two commanders if both have partner.) mana={3}{U}{R} type=Legendary Creature @@ -29829,6 +30393,18 @@ text={T}:Add {C}. -- {4},{T}: Remove target attacking or blocking creature from type=Land [/card] [card] +name=Laelia, the Blade Reforged +abilities=haste +auto=@combat(attacking) source(this):name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@movedto(*|myexile) from(mylibrary,mygraveyard):name(Put 1/1 counter) counter(1/1) +text=Haste -- Whenever Laelia, the Blade Reforged attacks, exile the top card of your library. You may play that card this turn. -- Whenever a spell or ability you control exiles one or more cards from your library and/or your graveyard, put a +1/+1 counter on Laelia. +mana={2}{R} +type=Legendary Creature +subtype=Spirit Warrior +power=2 +toughness=2 +[/card] +[card] name=Lagonna-Band Storyteller auto=may MoveTo(myLibrary) target(enchantment|myGraveyard) then life:storedmanacost text=When Lagonna-Band Storyteller enters the battlefield, you may put target enchantment card from your graveyard on top of your library. If you do, you gain life equal to its converted mana cost. @@ -29859,6 +30435,14 @@ power=2 toughness=2 [/card] [card] +name=Lash of Malice +target=creature +auto=2/-2 ueot +text=Target creature gets +2/-2 until end of turn. +mana={B} +type=Instant +[/card] +[card] name=Lash of Thorns target=creature auto=2/1 ueot @@ -30271,6 +30855,16 @@ power=2 toughness=4 [/card] [card] +name=Leech Fanatic +auto=this(variable{controllerturn}>0) lifelink +text=As long as it's your turn, Leech Fanatic has lifelink. +mana={1}{B} +type=Creature +subtype=Human Warlock +power=2 +toughness=2 +[/card] +[card] name=Leeches auto=choice name(Target opponent) thisforeach(variable{opponentpoisoncount}) damage:1 opponent && alterpoison:-1 opponent auto=choice name(Target controller) thisforeach(variable{mypoisoncount}) damage:1 controller && alterpoison:-1 controller @@ -30333,28 +30927,7 @@ toughness=2 [card] name=Legion Warboss abilities=mentor -auto=@combat(attacking) source(this) restriction{compare(p)~lessthan~1}:counter(1/1,1) target(other creature[attacking;power<=-1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~1}:counter(1/1,1) target(other creature[attacking;power<=0]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~2}:counter(1/1,1) target(other creature[attacking;power<=1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~3}:counter(1/1,1) target(other creature[attacking;power<=2]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~4}:counter(1/1,1) target(other creature[attacking;power<=3]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~5}:counter(1/1,1) target(other creature[attacking;power<=4]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~6}:counter(1/1,1) target(other creature[attacking;power<=5]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~7}:counter(1/1,1) target(other creature[attacking;power<=6]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~8}:counter(1/1,1) target(other creature[attacking;power<=7]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~9}:counter(1/1,1) target(other creature[attacking;power<=8]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~10}:counter(1/1,1) target(other creature[attacking;power<=9]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~11}:counter(1/1,1) target(other creature[attacking;power<=10]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~12}:counter(1/1,1) target(other creature[attacking;power<=11]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~13}:counter(1/1,1) target(other creature[attacking;power<=12]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~14}:counter(1/1,1) target(other creature[attacking;power<=13]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~15}:counter(1/1,1) target(other creature[attacking;power<=14]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~16}:counter(1/1,1) target(other creature[attacking;power<=15]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~17}:counter(1/1,1) target(other creature[attacking;power<=16]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~18}:counter(1/1,1) target(other creature[attacking;power<=17]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~19}:counter(1/1,1) target(other creature[attacking;power<=18]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~20}:counter(1/1,1) target(other creature[attacking;power<=19]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~morethan~20}:counter(1/1,1) target(other creature[attacking;power<=20]|myBattlefield) +auto=@combat(attacking) source(this):name(Choose attacking creature) transforms((,newability[target(other creature[attacking;power<=pminus1minusend]|myBattlefield) counter(1/1)])) oneshot auto=@each my combatbegins:create(goblin:creature goblin:1/1:red:haste ueot:mustattack ueot) text=Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) -- At the beginning of combat on your turn, create a 1/1 red Goblin creature token. That token gains haste until end of turn and attacks this combat if able. mana={2}{R} @@ -30688,28 +31261,7 @@ subtype=Aura [card] name=Light of the Legion abilities=flying,mentor -auto=@combat(attacking) source(this) restriction{compare(p)~lessthan~1}:counter(1/1,1) target(other creature[attacking;power<=-1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~1}:counter(1/1,1) target(other creature[attacking;power<=0]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~2}:counter(1/1,1) target(other creature[attacking;power<=1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~3}:counter(1/1,1) target(other creature[attacking;power<=2]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~4}:counter(1/1,1) target(other creature[attacking;power<=3]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~5}:counter(1/1,1) target(other creature[attacking;power<=4]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~6}:counter(1/1,1) target(other creature[attacking;power<=5]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~7}:counter(1/1,1) target(other creature[attacking;power<=6]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~8}:counter(1/1,1) target(other creature[attacking;power<=7]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~9}:counter(1/1,1) target(other creature[attacking;power<=8]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~10}:counter(1/1,1) target(other creature[attacking;power<=9]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~11}:counter(1/1,1) target(other creature[attacking;power<=10]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~12}:counter(1/1,1) target(other creature[attacking;power<=11]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~13}:counter(1/1,1) target(other creature[attacking;power<=12]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~14}:counter(1/1,1) target(other creature[attacking;power<=13]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~15}:counter(1/1,1) target(other creature[attacking;power<=14]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~16}:counter(1/1,1) target(other creature[attacking;power<=15]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~17}:counter(1/1,1) target(other creature[attacking;power<=16]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~18}:counter(1/1,1) target(other creature[attacking;power<=17]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~19}:counter(1/1,1) target(other creature[attacking;power<=18]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~20}:counter(1/1,1) target(other creature[attacking;power<=19]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~morethan~20}:counter(1/1,1) target(other creature[attacking;power<=20]|myBattlefield) +auto=@combat(attacking) source(this):name(Choose attacking creature) transforms((,newability[target(other creature[attacking;power<=pminus1minusend]|myBattlefield) counter(1/1)])) oneshot auto=@movedTo(this|graveyard) from(battlefield):counter(1/1)(creature[white]|myBattlefield) text=Flying -- Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) -- When Light of the Legion dies, put a +1/+1 counter on each white creature you control. mana={4}{W}{W} @@ -31069,7 +31621,7 @@ toughness=3 name=Littjara Kinseekers abilities=changeling aicode=activate transforms((,newability[all(*[zpos<=1]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveto(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot -auto=if compare(variable{sametypecreatures})~morethan~2 then counter(1/1) && scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto=if compare(sametypecreatures)~morethan~2 then counter(1/1) && scry:1 scrycore delayed dontshow donothing scrycoreend scryend text=Changeling (This card is every creature type.) -- When Littjara Kinseekers enters the battlefield, if you control three or more creatures that share a creature type, put a +1/+1 counter on Littjara Kinseekers, then scry 1. mana={3}{U} type=Creature @@ -31419,6 +31971,17 @@ power=2 toughness=2 [/card] [card] +name=Losheel, Clockwork Scholar +auto=preventAllCombatDamage to(artifact[attacking]|myBattlefield) +auto=@movedto(artifact[creature]|myBattlefield) restriction{type(artifact[fresh;creature]|mybattlefield)~equalto~1}:draw:1 controller +text=Prevent all combat damage that would be dealt to attacking artifact creatures you control. -- Whenever one or more artifact creatures enter the battlefield under your control, draw a card. This ability triggers only once each turn. +mana={2}{W} +type=Legendary Creature +subtype=Elephant Artificer +power=2 +toughness=4 +[/card] +[card] name=Lost Hours target=player aicode=activate placefromthetop(3) notatarget(*[-land]|targetedpersonshand) @@ -31876,6 +32439,25 @@ power=2 toughness=1 [/card] [card] +name=Mage Hunter +auto=@movedto(*[instant;sorcery]|opponentstack):life:-1 opponent +text=Whenever an opponent casts or copies an instant or sorcery spell, they lose 1 life. +mana={3}{B} +type=Creature +subtype=Horror +power=3 +toughness=4 +[/card] +[card] +name=Mage Hunters' Onslaught +target=creature,planeswalker +auto=destroy +auto=emblem transforms((,newability[lord(creature|battlefield) transforms((,newability[@combat(blocking) source(this):life:-1 controller])) ueot])) ueot +text=Destroy target creature or planeswalker. -- Whenever a creature blocks this turn, its controller loses 1 life. +mana={2}{B}{B} +type=Sorcery +[/card] +[card] name=Magma Hellion abilities=trample, haste text=Assist (Another player can pay up to {6} of this spell's cost.) -- Trample, haste @@ -32498,6 +33080,17 @@ mana={3}{R} type=Sorcery [/card] [card] +name=Marshland Bloodcaster +abilities=flying +auto={1}{B}{T}:name(Choose next spell) target(*|mycastingzone) transforms((,newability[{L:manacost}:name(Pay life and gain zerocast) zerocast])) ueot +text=Flying -- {1}{B}, {T}: Rather than pay the mana cost of the next spell you cast this turn, you may pay life equal to that spell's mana value. +mana={4}{B} +type=Creature +subtype=Vampire Warlock +power=3 +toughness=5 +[/card] +[card] name=Martial Impetus target=creature auto=mustattack @@ -33971,6 +34564,13 @@ power=3 toughness=3 [/card] [card] +name=Monologue Tax +auto=@movedto(*|opponentStack) restriction{thisturn(*|opponentStack)~equalto~1}:name(Create Treasure) token(Treasure Sur) +text=Whenever an opponent casts their second spell each turn, you create a Treasure token. +mana={2}{W} +type=Enchantment +[/card] +[card] name=Monomania target=player auto=ability$!name(discard cards) target(*|myhand) reject!$ targetedplayer @@ -34368,6 +34968,15 @@ power=1 toughness=3 [/card] [card] +name=Muse Vortex +aicode=activate transforms((,newability[target(*[instant;sorcery;zpos<=fullpaid;manacost<=fullpaid]|mylibrary) moveto(exile) and!( transforms((,newability[zerocast],newability[canplayfromexile],newability[phaseaction[endofturn once checkex] moveto(myhand)],newability[all(*[zpos<=fullpaid]|mylibrary) moveto(myreveal) and!( bottomoflibrary )!])) )!])) oneshot +auto=if type(*[instant;sorcery;zpos<=fullpaid;manacost<=fullpaid]|mylibrary)~morethan~0 then name(Reveal cards) name(Reveal cards) reveal:x revealzone(mylibrary) optionone name(Choose instant or sorcery) target(*[instant;sorcery;manacost<=fullpaid]|reveal) moveto(myexile) and!( transforms((,newability[phaseaction[endofturn once checkex] moveto(myhand)],newability[canplayfromexile],newability[zerocast])) ueot )! optiononeend optiontwo name(Put back) target(*|reveal) bottomoflibrary and!(all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto=if type(*[instant;sorcery;zpos<=fullpaid;manacost<=fullpaid]|mylibrary)~equalto~0 then name(Reveal cards) name(Reveal cards) all(*[zpos<=fullpaid]|mylibrary) bottomoflibrary +text=Exile the top X cards of your library. You may cast an instant or sorcery spell with mana value X or less from among them without paying its mana cost. Then put the exiled instant and sorcery cards that weren't cast this way into your hand and the rest on the bottom of your library in a random order. +mana={X}{U}{U} +type=Sorcery +[/card] +[card] name=Mutiny target=creature|opponentbattlefield auto=transforms((,newability[dynamicability target(other creature|myBattlefield)])) ueot @@ -34965,6 +35574,15 @@ power=4 toughness=5 [/card] [card] +name=Necrotic Fumes +target=creature,planeswalker +auto=moveto(exile) +text=As an additional cost to cast this spell, exile a creature you control. -- Exile target creature or planeswalker. +mana={1}{B}{B}{E(creature|mybattlefield)} +type=Sorcery +subtype=Lesson +[/card] +[card] name=Necrotic Hex auto=ability$!name(sacrifice six creatures) sacrifice notatarget(<6>creature|mybattlefield)!$ opponent auto=if type(creature|mybattlefield)~equalto~1 then target(creature|mybattlefield) sacrifice and!( thisforeach(variable{6}) token(Zombie,Creature Zombie,2/2,black) and!( tap(noevent) )! )! @@ -35602,6 +36220,18 @@ power=5 toughness=5 [/card] [card] +name=Nils, Discipline Enforcer +auto=@each my end:ability$!name(Put counter on your creature) may name(Put counter on your creature) target(creature|mybattlefield) counter(1/1)!$ controller +auto=@each my end:ability$!name(Put counter on opponent creature) may name(Put counter on opponent creature) target(creature|opponentbattlefield) counter(1/1)!$ controller +auto=lord(creature[counter{any}]|opponentbattlefield) transforms((,newability[thisforeach(variable{hascntanycnt}>0) attackcost:1])) +text=At the beginning of your end step, for each player, put a +1/+1 counter on up to one target creature that player controls. -- Each creature with one or more counters on it can't attack you or planeswalkers you control unless its controller pays {X}, where {X} is the number of counters on that creature. +mana={2}{W} +type=Legendary Creature +subtype=Human Cleric +power=2 +toughness=2 +[/card] +[card] name=Nim Deathmantle auto={4}:equip auto=teach(creature) 2/2 @@ -35915,6 +36545,16 @@ power=2 toughness=1 [/card] [card] +name=Novice Dissector +auto={1}{S(other creature[-Novice Dissector]|mybattlefield)}:name(Put 1/1 counter) target(creature) counter(1/1) asSorcery +text={1}, Sacrifice another creature: Put a +1/+1 counter on target creature. Activate only as a sorcery. +mana={3}{B} +type=Creature +subtype=Troll Warlock +power=3 +toughness=3 +[/card] +[card] name=Novice Knight abilities=defender auto=this(auras) canattack @@ -36351,6 +36991,19 @@ power=1 toughness=1 [/card] [card] +name=Octavia, Living Thesis +other={U}{U} +otherrestriction=type(*[instant;sorcery]|mygraveyard)~morethan~7 +restriction=type(*[instant;sorcery]|mygraveyard)~lessthan~8 +auto=@movedto(*[instant;sorcery]|mystack):name(Choose creature) target(creature|battlefield) becomes(,8/8) ueot +text=This spell costs {8} less to cast if you have eight or more instant and/or sorcery cards in your graveyard. -- Ward {8} -- Magecraft — Whenever you cast or copy an instant or sorcery spell, target creature has base power and toughness 8/8 until end of turn. +mana={8}{U}{U} +type=Legendary Creature +subtype=Elemental Octopus +power=8 +toughness=8 +[/card] +[card] name=Octoprophet aicode=activate transforms((,newability[all(*[zpos<=2]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveto(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot auto=scry:2 scrycore delayed dontshow donothing scrycoreend scryend @@ -37210,6 +37863,17 @@ mana={B} type=Sorcery [/card] [card] +name=Oriq Loremage +auto={T}:name(Search instant or sorcery) target(*[instant;sorcery]|mylibrary) moveto(mygraveyard) and!( shuffle )! && counter(1/1) all(this) +auto={T}:name(Search permanent) target(*[-instant;-sorcery]|mylibrary) moveto(mygraveyard) and!( shuffle )! +text={T}: Search your library for a card, put it into your graveyard, then shuffle. If it's an instant or sorcery card, put a +1/+1 counter on Oriq Loremage. +mana={2}{B}{B} +type=Creature +subtype=Human Warlock +power=3 +toughness=3 +[/card] +[card] name=Ormos, Archive Keeper abilities=flying auto={1}{U}{U}{D(*|myhand)}{D(*|myhand)}{D(*|myhand)}:draw:5 controller @@ -37325,6 +37989,38 @@ power=3 toughness=2 [/card] [card] +name=Osgir, the Reconstructor +abilities=vigilance +auto={1}{S(artifact|mybattlefield)}:name(Creature gets 2/0) target(creature|mybattlefield) 2/0 ueot +auto={0}{T}:name(X = 0) target(artifact[manacost=0]|graveyard) moveto(exile) && clone && clone assorcery +auto={1}{T}:name(X = 1) target(artifact[manacost=1]|graveyard) moveto(exile) && clone && clone assorcery +auto={2}{T}:name(X = 2) target(artifact[manacost=2]|graveyard) moveto(exile) && clone && clone assorcery +auto={3}{T}:name(X = 3) target(artifact[manacost=3]|graveyard) moveto(exile) && clone && clone assorcery +auto={4}{T}:name(X = 4) target(artifact[manacost=4]|graveyard) moveto(exile) && clone && clone assorcery +auto={5}{T}:name(X = 5) target(artifact[manacost=5]|graveyard) moveto(exile) && clone && clone assorcery +auto={6}{T}:name(X = 6) target(artifact[manacost=6]|graveyard) moveto(exile) && clone && clone assorcery +auto={7}{T}:name(X = 7) target(artifact[manacost=7]|graveyard) moveto(exile) && clone && clone assorcery +auto={8}{T}:name(X = 8) target(artifact[manacost=8]|graveyard) moveto(exile) && clone && clone assorcery +auto={9}{T}:name(X = 9) target(artifact[manacost=9]|graveyard) moveto(exile) && clone && clone assorcery +auto={10}{T}:name(X = 10) target(artifact[manacost=10]|graveyard) moveto(exile) && clone && clone assorcery +auto={11}{T}:name(X = 11) target(artifact[manacost=11]|graveyard) moveto(exile) && clone && clone assorcery +auto={12}{T}:name(X = 12) target(artifact[manacost=12]|graveyard) moveto(exile) && clone && clone assorcery +auto={13}{T}:name(X = 13) target(artifact[manacost=13]|graveyard) moveto(exile) && clone && clone assorcery +auto={14}{T}:name(X = 14) target(artifact[manacost=14]|graveyard) moveto(exile) && clone && clone assorcery +auto={15}{T}:name(X = 15) target(artifact[manacost=15]|graveyard) moveto(exile) && clone && clone assorcery +auto={16}{T}:name(X = 16) target(artifact[manacost=16]|graveyard) moveto(exile) && clone && clone assorcery +auto={17}{T}:name(X = 17) target(artifact[manacost=17]|graveyard) moveto(exile) && clone && clone assorcery +auto={18}{T}:name(X = 18) target(artifact[manacost=18]|graveyard) moveto(exile) && clone && clone assorcery +auto={19}{T}:name(X = 19) target(artifact[manacost=19]|graveyard) moveto(exile) && clone && clone assorcery +auto={20}{T}:name(X = 20) target(artifact[manacost>=20]|graveyard) moveto(exile) && clone && clone assorcery +text=Vigilance -- {1}, Sacrifice an artifact: Target creature you control gets +2/+0 until end of turn. -- {X}, {T}, Exile an artifact card with mana value X from your graveyard: Create two tokens that are copies of the exiled card. Activate only as a sorcery. +mana={2}{R}{W} +type=Legendary Creature +subtype=Giant Artificer +power=4 +toughness=4 +[/card] +[card] name=Otepec Huntmaster abilities=haste auto=lord(dinosaur|myhand) altercost(colorless,-1) @@ -37485,6 +38181,16 @@ mana={X}{W}{U} type=Instant [/card] [card] +name=Oversimplify +auto=count(type:creature:mybattlefield) && countb(type:creature:opponentbattlefield) +auto=all(creature|battlefield) moveto(exile) +auto=token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.countedamount) )! +auto=token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.countedbamount) )! opponent +text=Exile all creatures. Each player creates a 0/0 green and blue Fractal creature token and puts a number of +1/+1 counters on it equal to the total power of creatures they controlled that were exiled this way. +mana={3}{G}{U} +type=Sorcery +[/card] +[card] name=Overwhelmed Apprentice auto=deplete:2 opponent aicode=activate transforms((,newability[all(*[zpos<=2]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveto(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot @@ -37794,6 +38500,15 @@ type=Enchantment subtype=Aura [/card] [card] +name=Paradox Zone +auto=counter(0/0,1,Growth) +auto=@each my end:token(Fractal,Creature Fractal,0/0,green,blue) and!( thisforeach(counter{0/0,1,Growth}) counter(1/1) )! +auto=@each my end:thisforeach(counter{0/0,1,Growth}) counter(0/0,1,Growth) +text=Paradox Zone enters the battlefield with a growth counter on it. -- At the beginning of your end step, double the number of growth counters on Paradox Zone. Then create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is the number of growth counters on Paradox Zone. +mana={4}{G} +type=Enchantment +[/card] +[card] name=Parasitic Impetus target=creature auto=mustattack @@ -37855,28 +38570,7 @@ toughness=5 [card] name=Parhelion Patrol abilities=flying,vigilance,mentor -auto=@combat(attacking) source(this) restriction{compare(p)~lessthan~1}:counter(1/1,1) target(other creature[attacking;power<=-1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~1}:counter(1/1,1) target(other creature[attacking;power<=0]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~2}:counter(1/1,1) target(other creature[attacking;power<=1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~3}:counter(1/1,1) target(other creature[attacking;power<=2]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~4}:counter(1/1,1) target(other creature[attacking;power<=3]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~5}:counter(1/1,1) target(other creature[attacking;power<=4]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~6}:counter(1/1,1) target(other creature[attacking;power<=5]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~7}:counter(1/1,1) target(other creature[attacking;power<=6]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~8}:counter(1/1,1) target(other creature[attacking;power<=7]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~9}:counter(1/1,1) target(other creature[attacking;power<=8]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~10}:counter(1/1,1) target(other creature[attacking;power<=9]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~11}:counter(1/1,1) target(other creature[attacking;power<=10]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~12}:counter(1/1,1) target(other creature[attacking;power<=11]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~13}:counter(1/1,1) target(other creature[attacking;power<=12]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~14}:counter(1/1,1) target(other creature[attacking;power<=13]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~15}:counter(1/1,1) target(other creature[attacking;power<=14]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~16}:counter(1/1,1) target(other creature[attacking;power<=15]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~17}:counter(1/1,1) target(other creature[attacking;power<=16]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~18}:counter(1/1,1) target(other creature[attacking;power<=17]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~19}:counter(1/1,1) target(other creature[attacking;power<=18]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~20}:counter(1/1,1) target(other creature[attacking;power<=19]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~morethan~20}:counter(1/1,1) target(other creature[attacking;power<=20]|myBattlefield) +auto=@combat(attacking) source(this):name(Choose attacking creature) transforms((,newability[target(other creature[attacking;power<=pminus1minusend]|myBattlefield) counter(1/1)])) oneshot text=Flying, vigilance -- Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) mana={3}{W} type=Creature @@ -38236,6 +38930,14 @@ power=3 toughness=2 [/card] [card] +name=Perplexing Test +auto=choice name(Return all token creatures) all(creature[token]|battlefield) moveto(ownerhand) +auto=choice name(Return all non-token creatures) all(creature[-token]|battlefield) moveto(ownerhand) +text=Choose one — -- • Return all creature tokens to their owners' hands. -- • Return all nontoken creatures to their owners' hands. +mana={3}{U}{U} +type=Instant +[/card] +[card] name=Persistent Petitioners auto={1}{T}:target(player) deplete:1 auto={T(Advisor|myBattlefield)}{T(Advisor|myBattlefield)}{T(Advisor|myBattlefield)}{T(Advisor|myBattlefield)}:deplete:12 @@ -38247,6 +38949,14 @@ power=1 toughness=3 [/card] [card] +name=Pest Infestation +auto=target(*[artifact;enchantment]|battlefield) destroy +auto=thisforeach(X) token(Pest,Creature Pest,1/1,green,blue) and!( transforms((,newability[@movedto(this|mygraveyard) from(battlefield):life:1 controller])) forever )! +text=Destroy up to X target artifacts and/or enchantments. Create twice X 1/1 black and green Pest creature tokens with "When this creature dies, you gain 1 life." +mana={X}{X}{G} +type=Sorcery +[/card] +[card] name=Pestilent Haze name=choice name(Creatures gets -2/-2) all(creature|battlefield) -2/-2 ueot name=choice name(Remove Loyalty counter) counter(0/0,-2,Loyalty) all(planeswalker|battlefield) @@ -39568,6 +40278,14 @@ mana={1}{U} type=Instant [/card] [card] +name=Promise of Loyalty +auto=ability$!name(Put a vow counter) name(Put a vow counter) target(creature|mybattlefield) transforms((,newability[counter(0/0.1.vow)],newability[all(other creature|mybattlefield) sacrifice])) forever!$ controller +auto=ability$!name(Put a vow counter) name(Put a vow counter) target(creature|mybattlefield) transforms((,newability[counter(0/0.1.vow)],newability[this(counter{0/0.1.vow}>=1) cantattack],newability[this(counter{0/0.1.vow}>=1) cantpwattack],newability[all(other creature|mybattlefield) sacrifice])) forever!$ opponent +text=Each player puts a vow counter on a creature they control and sacrifices the rest. Each of those creatures can't attack you or planeswalkers you control for as long as it has a vow counter on it. +mana={4}{W} +type=Sorcery +[/card] +[card] name=Promise of Tomorrow auto=@movedTo(creature|graveyard) from(mybattlefield):all(trigger[to]) moveTo(exile) auto=@each my endofturn restriction{type(creature|myBattlefield)~lessthan~1}:sacrifice all(this) && moveTo(myBattlefield) all(creature|myExile) @@ -41638,6 +42356,15 @@ mana={1}{G}{G} type=Instant [/card] [card] +name=Reinterpret +target=*|stack +auto=fizzle +autograveyard=if compare(hasstorecard)~morethan~0 then name(Cast spell from hand) may name(Cast spell from hand) target(*[-land;manacost<=storedmanacost]|myhand) activate castcard(normal) +text=Counter target spell. You may cast a spell with an equal or lesser mana value from your hand without paying its mana cost. +mana={2}{U}{R} +type=Instant +[/card] +[card] name=Rejuvenating Springs auto=tap(noevent) auto={T}:add{G} @@ -41879,6 +42606,16 @@ mana={3} type=Snow Artifact [/card] [card] +name=Replication Technique +other={4}{U} name(Demonstrate) +auto=name(Copy permanent) target(*|mybattlefield) clone +auto=if paid(alternative) then ability$!name(Copy permanent) name(Copy permanent) target(*|mybattlefield) clone!$ controller +auto=if paid(alternative) then ability$!name(Copy permanent) name(Copy permanent) target(*|mybattlefield) clone!$ opponent +text=Demonstrate (When you cast this spell, you may copy it. If you do, choose an opponent to also copy it. Players may choose new targets for their copies.) -- Create a token that's a copy of target permanent you control. +mana={4}{U} +type=Sorcery +[/card] +[card] name=Reprobation target=creature auto=loseabilities @@ -42209,6 +42946,18 @@ mana={WB}{WB} type=Sorcery [/card] [card] +name=Revival Experiment +abilities=exiledeath +auto=if type(planeswalker|mygraveyard)~morethan~0 then ability$!name(Return planeswalker) may name(Return planeswalker) target(planeswalker|mygraveyard) moveto(mybattlefield) and!( life:-3 controller )! !$ controller +auto=if type(creature|mygraveyard)~morethan~0 then ability$!name(Return creature) may name(Return creature) target(creature|mygraveyard) moveto(mybattlefield) and!( life:-3 controller )! !$ controller +auto=if type(land|mygraveyard)~morethan~0 then ability$!name(Return land) may name(Return land) target(land|mygraveyard) moveto(mybattlefield) and!( life:-3 controller )! !$ controller +auto=if type(enchantment|mygraveyard)~morethan~0 then ability$!name(Return enchantment) may name(Return enchantment) target(enchantment|mygraveyard) moveto(mybattlefield) and!( life:-3 controller )! !$ controller +auto=if type(artifact|mygraveyard)~morethan~0 then ability$!name(Return artifact) may name(Return artifact) target(artifact|mygraveyard) moveto(mybattlefield) and!( life:-3 controller )! !$ controller +text=For each permanent type, return up to one card of that type from your graveyard to the battlefield. You lose 3 life for each card returned this way. Exile Revival Experiment. +mana={4}{B}{G} +type=Sorcery +[/card] +[card] name=Reyav, Master Smith auto=@combat(attacking) source(creature[enchanted]|myBattlefield):all(trigger[to]) transforms((,newability[double strike])) ueot auto=@combat(attacking) source(creature[geared]|myBattlefield):all(trigger[to]) transforms((,newability[double strike])) ueot @@ -42607,6 +43356,35 @@ mana={5} type=Artifact [/card] [card] +name=Rionya, Fire Dancer +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~1}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~2}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~3}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~4}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~5}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~6}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~7}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~8}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~9}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~10}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~11}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~12}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~13}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~14}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~15}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~16}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~17}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~18}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~equalto~19}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +auto=@each my combatbegins restriction{thisturn(*[instant;sorcery]|mystack)~morethan~19}:name(Copy creature) target(other creature|mybattlefield) transforms((,newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)],newability[clone with(treason^haste)])) oneshot +text=At the beginning of combat on your turn, create X tokens that are copies of another target creature you control, where X is one plus the number of instant and sorcery spells you've cast this turn. They gain haste. Exile them at the beginning of the next end step. +mana={3}{R}{R} +type=Legendary Creature +subtype=Human Wizard +power=3 +toughness=4 +[/card] +[card] name=Ripjaw Raptor auto=@damaged(this):draw:1 controller text=Enrage — Whenever Ripjaw Raptor is dealt damage, draw a card. @@ -43453,6 +44231,18 @@ type=Enchantment subtype=Aura [/card] [card] +name=Rousing Refrain +abilities=exiledeath +other={1}{R} name(Suspend 3) +auto=ifnot paid(alternative) then foreach(*|opponenthand) add{R} doesntempty +auto=moveto(myexile) and!( counter(0/0,3,Time) )! +autoexile=@each my upkeep restriction{compare(hascnttime)~morethan~1}:counter(0/0,-1,Time) +autoexile=@each my upkeep restriction{compare(hascnttime)~equalto~1}:activate castcard(normal) +text=Add {R} for each card in target opponent's hand. Until end of turn, you don't lose this mana as steps and phases end. Exile Rousing Refrain with three time counters on it. -- Suspend 3 — {1}{R} (Rather than cast this card from your hand, you may pay 1{R} and exile it with three time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.) +mana={3}{R}{R} +type=Sorcery +[/card] +[card] name=Rousing of Souls auto=reveal:1 revealzone(mylibrary) optionone if type(land|reveal)~lessthan~1 then token(Spirit,Creature Spirit,1/1,white,flying) optiononeend optiontwo target(<1>*|reveal) moveto(mylibrary) optiontwoend afterrevealed draw:1 controller afterrevealedend revealend auto=reveal:1 revealzone(opponentlibrary) optionone if type(land|reveal)~lessthan~1 then token(Spirit,Creature Spirit,1/1,white,flying) optiononeend optiontwo target(<1>*|reveal) moveto(opponentlibrary) optiontwoend afterrevealed draw:1 opponent afterrevealedend revealend @@ -43593,6 +44383,21 @@ power=0 toughness=3 [/card] [card] +name=Ruin Grinder +abilities=menace +aicode=activate moveTo(myhand) target(mountain|myLibrary) +autohand={2}{cycle}:name(search card) reveal:plibrarycount optionone name(choose card) target(mountain|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveto(myhand))! afterrevealedend revealend +auto=reject all(*|hand) +auto=draw:7 opponent +auto=draw:7 controller +text=Menace -- When Ruin Grinder dies, each player may discard their hand and draw seven cards. -- Mountaincycling {2} ({2}, Discard this card: Search your library for a Mountain card, reveal it, put it into your hand, then shuffle.) +mana={5}{R} +type=Artifact Creature +subtype=Construct +power=7 +toughness=4 +[/card] +[card] name=Ruin Raider auto=@each my endofturn:if raid then draw:1 && life:-manacost text=Raid — At the beginning of your end step, if you attacked with a creature this turn, reveal the top card of your library and put that card into your hand. You lose life equal to the card's converted mana cost. @@ -45136,6 +45941,17 @@ power=5 toughness=5 [/card] [card] +name=Scholarship Sponsor +auto=if compare(type:land:opponentbattlefield)~morethan~compare(type:land:mybattlefield) then ability$!name(Search lands) name(Search lands) target(land|mylibrary) moveto(mybattlefield) and!( tap(novent) )! !$ controller +auto=if compare(type:land:mybattlefield)~morethan~compare(type:land:opponentbattlefield) then ability$!name(Search lands) name(Search lands) target(land|mylibrary) moveto(mybattlefield) and!( tap(novent) )! !$ opponent +text=When Scholarship Sponsor enters the battlefield, each player who controls fewer lands than the player who controls the most lands searches their library for a number of basic land cards less than or equal to the difference, puts those cards onto the battlefield tapped, then shuffles. +mana={3}{W} +type=Creature +subtype=Human Advisor +power=3 +toughness=3 +[/card] +[card] name=Scion of the Swarm abilities=flying auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection]):counter(1/1,1) @@ -45996,6 +46812,33 @@ power=7 toughness=7 [/card] [card] +name=Sequence Engine +auto={0}{T}:name(X = 0) target(creature[manacost=0]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue)!$ controller assorcery +auto={1}{T}:name(X = 1) target(creature[manacost=1]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.1) )! !$ controller assorcery +auto={2}{T}:name(X = 2) target(creature[manacost=2]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.2) )! !$ controller assorcery +auto={3}{T}:name(X = 3) target(creature[manacost=3]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.3) )! !$ controller assorcery +auto={4}{T}:name(X = 4) target(creature[manacost=4]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.4) )! !$ controller assorcery +auto={5}{T}:name(X = 5) target(creature[manacost=5]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.5) )! !$ controller assorcery +auto={6}{T}:name(X = 6) target(creature[manacost=6]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.6) )! !$ controller assorcery +auto={7}{T}:name(X = 7) target(creature[manacost=7]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.7) )! !$ controller assorcery +auto={8}{T}:name(X = 8) target(creature[manacost=8]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.8) )! !$ controller assorcery +auto={9}{T}:name(X = 9) target(creature[manacost=9]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.9) )! !$ controller assorcery +auto={10}{T}:name(X = 10) target(creature[manacost=10]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.10) )! !$ controller assorcery +auto={11}{T}:name(X = 11) target(creature[manacost=11]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.11) )! !$ controller assorcery +auto={12}{T}:name(X = 12) target(creature[manacost=12]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.12) )! !$ controller assorcery +auto={13}{T}:name(X = 13) target(creature[manacost=13]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.13) )! !$ controller assorcery +auto={14}{T}:name(X = 14) target(creature[manacost=14]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.14) )! !$ controller assorcery +auto={15}{T}:name(X = 15) target(creature[manacost=15]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.15) )! !$ controller assorcery +auto={16}{T}:name(X = 16) target(creature[manacost=16]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.16) )! !$ controller assorcery +auto={17}{T}:name(X = 17) target(creature[manacost=17]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.17) )! !$ controller assorcery +auto={18}{T}:name(X = 18) target(creature[manacost=18]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.18) )! !$ controller assorcery +auto={19}{T}:name(X = 19) target(creature[manacost=19]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.19) )! !$ controller assorcery +auto={20}{T}:name(X = 20) target(creature[manacost>=20]|graveyard) moveto(exile) && ability$!name(Create Fractal) name(Create Fractal) token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.20) )! !$ controller assorcery +text={X}, {T}: Exile target creature card with mana value X from a graveyard. Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it. Activate only as a sorcery. +mana={2}{G} +type=Artifact +[/card] +[card] name=Seraph of the Scales abilities=flying auto={W}:vigilance @@ -48545,6 +49388,16 @@ power=0 toughness=0 [/card] [card] +name=Sly Instigator +auto={U}{T}:target(creature|opponentbattlefield) transforms((,newability[unblockable],newability[mustattack])) uynt +text={U}, {T}: Until your next turn, target creature an opponent controls can't be blocked. Goad that creature. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.) +mana={3}{U} +type=Creature +subtype=Human Wizard +power=2 +toughness=4 +[/card] +[card] name=Sly Spy (f) auto=@combatdamagefoeof(player) from(this):all(this) rolladie 6 winability life:-lastrollresult opponent winabilityend loseability life:-lastrollresult opponent loseabilityend rollend auto=@combatdamageof(player) from(this):all(this) rolladie 6 winability life:-lastrollresult controller winabilityend loseability life:-lastrollresult controller loseabilityend rollend @@ -49545,6 +50398,16 @@ power=4 toughness=4 [/card] [card] +name=Spawning Kraken +auto=@combatdamaged(player) from(*[kraken;leviathan;octopus;serpent]|myBattlefield):token(Kraken,Creature Kraken,9/9,blue) +text=Whenever a Kraken, Leviathan, Octopus, or Serpent you control deals combat damage to a player, create a 9/9 blue Kraken creature token. +mana={5}{U} +type=Creature +subtype=Kraken +power=6 +toughness=6 +[/card] +[card] name=Speaker of the Heavens abilities=vigilance,lifelink auto={T}:token(Angel Spe) restriction{compare(lifetotalminusstartinglifeminusend)~morethan~6} asSorcery @@ -49585,6 +50448,17 @@ text=Spectator Seating enters the battlefield tapped unless you have two or more type=Land [/card] [card] +name=Specter of the Fens +abilities=flying +auto={5}{B}:life:-2 opponent && life:2 controller +text=Flying -- {5}{B}: Target opponent loses 2 life and you gain 2 life. +mana={3}{B} +type=Creature +subtype=Specter +power=2 +toughness=3 +[/card] +[card] name=Spectral Deluge abilities=foretell autohand={2}:name(Pay 2 and exile face-down) name(Pay 2 and exile face-down) doforetell myturnonly @@ -50424,6 +51298,20 @@ mana={1}{G} type=Instant [/card] [card] +name=Sproutback Trudge +abilities=trample +autoexile=thisforeach(variable{lifegain}>0) changecost(colorless:-1) forcedalive +autograveyard=thisforeach(variable{lifegain}>0) changecost(colorless:-1) forcedalive +autohand=thisforeach(variable{lifegain}>0) changecost(colorless:-1) forcedalive +autograveyard=@each my secondmain restriction{compare(lifegain)~morethan~0}:name(Can play from graveyard) transforms((,newability[canplayfromgraveyard])) ueot +text=This spell costs {X} less to cast, where X is the amount of life you gained this turn. -- Trample -- At the beginning of your end step, if you gained life this turn, you may cast Sproutback Trudge from your graveyard. +mana={7}{G}{G} +type=Creature +subtype=Fungus Beast +power=9 +toughness=7 +[/card] +[card] name=Sprouting Renewal other={convoke} name(Convoke) auto=choice create(Elf Knight:creature Elf Knight:2/2:green,white:vigilance) @@ -50969,6 +51857,13 @@ mana={G} type=Instant [/card] [card] +name=Stinging Study +auto=name(Draw and lose life) target(*[iscommander]|mybattlefield,mycommandzone) transforms((,newability[draw:manacost controller],newability[life:-manacost controller])) oneshot +text=You draw X cards and you lose X life, where X is the mana value of a commander you own on the battlefield or in the command zone. +mana={4}{B} +type=Instant +[/card] +[card] name=Stir the Sands abilities=cycling auto=token(Zombie,creature Zombie,2/2,black)*3 @@ -51506,6 +52401,18 @@ mana={3}{G} type=Sorcery [/card] [card] +name=Study Hall +aicode=activate transforms((,newability[all(*[zpos<=pnumofcommandcast]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveTo(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot +auto={1}{T}:name(Add white mana) add{W} and!( transforms((,newability[@movedto(*[iscommander]|mybattlefield):scry:pnumofcommandcast scrycore delayed dontshow donothing scrycoreend scryend])) ueot )! +auto={1}{T}:name(Add black mana) add{B} and!( transforms((,newability[@movedto(*[iscommander]|mybattlefield):scry:pnumofcommandcast scrycore delayed dontshow donothing scrycoreend scryend])) ueot )! +auto={1}{T}:name(Add green mana) add{G} and!( transforms((,newability[@movedto(*[iscommander]|mybattlefield):scry:pnumofcommandcast scrycore delayed dontshow donothing scrycoreend scryend])) ueot )! +auto={1}{T}:name(Add red mana) add{R} and!( transforms((,newability[@movedto(*[iscommander]|mybattlefield):scry:pnumofcommandcast scrycore delayed dontshow donothing scrycoreend scryend])) ueot )! +auto={1}{T}:name(Add blue mana) add{U} and!( transforms((,newability[@movedto(*[iscommander]|mybattlefield):scry:pnumofcommandcast scrycore delayed dontshow donothing scrycoreend scryend])) ueot )! +auto={T}:add{C} +text={T}: Add {C}. -- {1}, {T}: Add one mana of any color. When you spend this mana to cast your commander, scry X, where X is the number of times it's been cast from the command zone this game. +type=Land +[/card] +[card] name=Stumpsquall auto=counter(1/1,X) text=When Stumpsquall Hydra enters the battlefield, distribute X +1/+1 counters among it and any number of commanders. @@ -51751,28 +52658,7 @@ toughness=10 [card] name=Sunhome Stalwart abilities=first strike,mentor -auto=@combat(attacking) source(this) restriction{compare(p)~lessthan~1}:counter(1/1,1) target(other creature[attacking;power<=-1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~1}:counter(1/1,1) target(other creature[attacking;power<=0]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~2}:counter(1/1,1) target(other creature[attacking;power<=1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~3}:counter(1/1,1) target(other creature[attacking;power<=2]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~4}:counter(1/1,1) target(other creature[attacking;power<=3]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~5}:counter(1/1,1) target(other creature[attacking;power<=4]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~6}:counter(1/1,1) target(other creature[attacking;power<=5]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~7}:counter(1/1,1) target(other creature[attacking;power<=6]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~8}:counter(1/1,1) target(other creature[attacking;power<=7]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~9}:counter(1/1,1) target(other creature[attacking;power<=8]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~10}:counter(1/1,1) target(other creature[attacking;power<=9]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~11}:counter(1/1,1) target(other creature[attacking;power<=10]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~12}:counter(1/1,1) target(other creature[attacking;power<=11]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~13}:counter(1/1,1) target(other creature[attacking;power<=12]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~14}:counter(1/1,1) target(other creature[attacking;power<=13]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~15}:counter(1/1,1) target(other creature[attacking;power<=14]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~16}:counter(1/1,1) target(other creature[attacking;power<=15]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~17}:counter(1/1,1) target(other creature[attacking;power<=16]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~18}:counter(1/1,1) target(other creature[attacking;power<=17]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~19}:counter(1/1,1) target(other creature[attacking;power<=18]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~20}:counter(1/1,1) target(other creature[attacking;power<=19]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~morethan~20}:counter(1/1,1) target(other creature[attacking;power<=20]|myBattlefield) +auto=@combat(attacking) source(this):name(Choose attacking creature) transforms((,newability[target(other creature[attacking;power<=pminus1minusend]|myBattlefield) counter(1/1)])) oneshot text=First strike -- Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) mana={1}{W} type=Creature @@ -51961,6 +52847,14 @@ power=0 toughness=5 [/card] [card] +name=Surge to Victory +target=*[instant;sorcery]|mygraveyard +auto=moveto(exile) and!( transforms((,newability[@combatdamaged(player) from(creature|mybattlefield):name(Copy exiled card) activate castcard(copied)],newability[all(creature|mybattlefield) manacost/0 ueot])) ueot )! +text=Exile target instant or sorcery card from your graveyard. Creatures you control get +X/+0 until end of turn, where X is that card's mana value. Whenever a creature you control deals combat damage to a player this turn, copy the exiled card. You may cast the copy without paying its mana cost. +mana={4}{R}{R} +type=Sorcery +[/card] +[card] name=Surgeon General Commander #The augment trigger is not supported ATM auto=@targeted(creature|myBattlefield) from(Aura|mycastingzone):draw:1 controller @@ -52678,28 +53572,7 @@ toughness=3 [card] name=Tajic, Legion's Edge abilities=haste,mentor -auto=@combat(attacking) source(this) restriction{compare(p)~lessthan~1}:counter(1/1,1) target(other creature[attacking;power<=-1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~1}:counter(1/1,1) target(other creature[attacking;power<=0]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~2}:counter(1/1,1) target(other creature[attacking;power<=1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~3}:counter(1/1,1) target(other creature[attacking;power<=2]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~4}:counter(1/1,1) target(other creature[attacking;power<=3]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~5}:counter(1/1,1) target(other creature[attacking;power<=4]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~6}:counter(1/1,1) target(other creature[attacking;power<=5]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~7}:counter(1/1,1) target(other creature[attacking;power<=6]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~8}:counter(1/1,1) target(other creature[attacking;power<=7]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~9}:counter(1/1,1) target(other creature[attacking;power<=8]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~10}:counter(1/1,1) target(other creature[attacking;power<=9]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~11}:counter(1/1,1) target(other creature[attacking;power<=10]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~12}:counter(1/1,1) target(other creature[attacking;power<=11]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~13}:counter(1/1,1) target(other creature[attacking;power<=12]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~14}:counter(1/1,1) target(other creature[attacking;power<=13]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~15}:counter(1/1,1) target(other creature[attacking;power<=14]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~16}:counter(1/1,1) target(other creature[attacking;power<=15]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~17}:counter(1/1,1) target(other creature[attacking;power<=16]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~18}:counter(1/1,1) target(other creature[attacking;power<=17]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~19}:counter(1/1,1) target(other creature[attacking;power<=18]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~20}:counter(1/1,1) target(other creature[attacking;power<=19]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~morethan~20}:counter(1/1,1) target(other creature[attacking;power<=20]|myBattlefield) +auto=@combat(attacking) source(this):name(Choose attacking creature) transforms((,newability[target(other creature[attacking;power<=pminus1minusend]|myBattlefield) counter(1/1)])) oneshot auto=lord(other creature|myBattlefield) preventAllNoncombatDamage auto={R}{W}:first strike ueot text=Haste -- Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) -- Prevent all noncombat damage that would be dealt to other creatures you control. -- {R}{W}: Tajic, Legion's Edge gains first strike until end of turn. @@ -53260,6 +54133,13 @@ mana={2}{U} type=Sorcery [/card] [card] +name=Tempting Contract +auto=@each my upkeep:if compare(genrand2)~equalto~0 then token(Treasure Sur) && token(Treasure Sur) opponent +text=At the beginning of your upkeep, each opponent may create a Treasure token. For each opponent who does, you create a Treasure token. +mana={4} +type=Artifact +[/card] +[card] name=Tempting Witch auto=token(-473141) auto={2}{T}{S(food|myBattlefield)}:life:-3 target(player) @@ -53345,6 +54225,17 @@ power=2 toughness=3 [/card] [card] +name=Tenured Inkcaster +auto=ability$!name(Put 1/1 counter) name(Put 1/1 counter) target(creature|battlefield) counter(1/1)!$ controller +auto=@combat(attacking) source(creature[counter{1/1}]|myBattlefield):life:-1 opponent && life:1 controller +text=When Tenured Inkcaster enters the battlefield, put a +1/+1 counter on target creature. -- Whenever a creature you control with a +1/+1 counter on it attacks, each opponent loses 1 life and you gain 1 life. +mana={4}{B} +type=Creature +subtype=Vampire Warlock +power=2 +toughness=2 +[/card] +[card] name=Tergrid's Lantern auto={T}:target(player) ability$!name(Choose one) choice name(Loose 3 life) life:-3 controller _ choice name(Discard a card) reject notatarget(*|myhand) _ choice name(Sacrifice non-land permanent) sacrifice notatarget(*[-land]|mybattlefield)!$ targetedplayer auto={3}{B}:untap all(this) @@ -54092,6 +54983,13 @@ mana={1}{B}{R} type=Enchantment [/card] [card] +name=Theoretical Duplication +auto=emblem transforms((,newability[@movedto(creature|opponentbattlefield):all(trigger[to]) clone])) ueot +text=Whenever a nontoken creature enters the battlefield under an opponent's control this turn, create a token that's a copy of that creature. +mana={2}{U} +type=Instant +[/card] +[card] name=Thicket Crasher abilities=trample auto=lord(creature[elemental]|mybattlefield) trample <1 @@ -55087,6 +55985,17 @@ power=4 toughness=5 [/card] [card] +name=Tivash, Gloom Summoner +abilities=lifelink +auto=@each my end restriction{compare(lifegain)~morethan~0}:pay({L:lifegain}) name(Pay life and create demon) token(Demon,Creature Demon,lifegain/lifegain,black,flying) +text=Lifelink -- At the beginning of your end step, if you gained life this turn, you may pay X life, where X is the amount of life you gained this turn. If you do, create an X/X black Demon creature token with flying. +mana={4}{B} +type=Legendary Creature +subtype=Human Warlock +power=4 +toughness=4 +[/card] +[card] name=Tocatli Honor Guard auto=@movedto(creature|battlefield):all(trigger) onlymanaability ueot text=Creatures entering the battlefield don't cause abilities to trigger. @@ -55865,6 +56774,19 @@ mana={3} type=Artifact [/card] [card] +name=Triplicate Titan +abilities=flying,vigilance,trample +auto=@movedto(this|graveyard) from(mybattlefield):token(Golem,Creature Artifact Golem,3/3,flying) +auto=@movedto(this|graveyard) from(mybattlefield):token(Golem,Creature Artifact Golem,3/3,vigilance) +auto=@movedto(this|graveyard) from(mybattlefield):token(Golem,Creature Artifact Golem,3/3,trample) +text=Flying, vigilance, trample -- When Triplicate Titan dies, create a 3/3 colorless Golem artifact creature token with flying, a 3/3 colorless Golem artifact creature token with vigilance, and a 3/3 colorless Golem artifact creature token with trample. +mana={9} +type=Artifact Creature +subtype=Golem +power=9 +toughness=9 +[/card] +[card] name=Triton Waverider auto=@movedTo(enchantment|myBattlefield):flying ueot text=Constellation -- Whenever an enchantment enters the battlefield under your control, Triton Waverider gains flying until end of turn. @@ -55958,6 +56880,13 @@ mana={3}{R} type=Enchantment [/card] [card] +name=Trudge Garden +auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection]):pay({2}) token(Fungus Beast,Creature Fungus Beast,4/4,trample,green) +text=Whenever you gain life, you may pay 2 . If you do, create a 4/4 green Fungus Beast creature token with trample. +mana={2}{G} +type=Enchantment +[/card] +[card] name=True Love's Kiss target=artifact,enchantment auto=moveto(exile) @@ -55980,28 +56909,7 @@ toughness=1 [card] name=Truefire Captain abilities=mentor -auto=@combat(attacking) source(this) restriction{compare(p)~lessthan~1}:counter(1/1,1) target(other creature[attacking;power<=-1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~1}:counter(1/1,1) target(other creature[attacking;power<=0]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~2}:counter(1/1,1) target(other creature[attacking;power<=1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~3}:counter(1/1,1) target(other creature[attacking;power<=2]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~4}:counter(1/1,1) target(other creature[attacking;power<=3]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~5}:counter(1/1,1) target(other creature[attacking;power<=4]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~6}:counter(1/1,1) target(other creature[attacking;power<=5]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~7}:counter(1/1,1) target(other creature[attacking;power<=6]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~8}:counter(1/1,1) target(other creature[attacking;power<=7]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~9}:counter(1/1,1) target(other creature[attacking;power<=8]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~10}:counter(1/1,1) target(other creature[attacking;power<=9]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~11}:counter(1/1,1) target(other creature[attacking;power<=10]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~12}:counter(1/1,1) target(other creature[attacking;power<=11]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~13}:counter(1/1,1) target(other creature[attacking;power<=12]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~14}:counter(1/1,1) target(other creature[attacking;power<=13]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~15}:counter(1/1,1) target(other creature[attacking;power<=14]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~16}:counter(1/1,1) target(other creature[attacking;power<=15]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~17}:counter(1/1,1) target(other creature[attacking;power<=16]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~18}:counter(1/1,1) target(other creature[attacking;power<=17]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~19}:counter(1/1,1) target(other creature[attacking;power<=18]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~20}:counter(1/1,1) target(other creature[attacking;power<=19]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~morethan~20}:counter(1/1,1) target(other creature[attacking;power<=20]|myBattlefield) +auto=@combat(attacking) source(this):name(Choose attacking creature) transforms((,newability[target(other creature[attacking;power<=pminus1minusend]|myBattlefield) counter(1/1)])) oneshot auto=@damaged(this):damage:thatmuch target(player) text=Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) -- Whenever Truefire Captain is dealt damage, it deals that much damage to target player. mana={R}{R}{W}{W} @@ -56623,6 +57531,14 @@ power=4 toughness=3 [/card] [card] +name=Umbral Juke +auto=choice name(Sacrifice planeswalker) target(player) ability$!name(Sacrifice creature or planeswalker) name(Sacrifice creature or planeswalker) notatarget(*[creature;planeswalker]|mybattlefield) sacrifice!$ targetedplayer +auto=choice name(Create inkling) token(Inkling,Creature Inkling,2/1,white,black,flying) +text=Choose one — -- • Target player sacrifices a creature or planeswalker. -- • Create a 2/1 white and black Inkling creature token with flying. +mana={2}{B} +type=Instant +[/card] +[card] name=Umezawa's Charm auto=choice target(creature) 2/2 ueot auto=choice target(creature) -1/-1 ueot @@ -57078,6 +57994,17 @@ power=3 toughness=2 [/card] [card] +name=Unwilling Ingredient +abilities=menace +autograveyard={2}{B}{E}:draw:1 controller && life:-1 controller +text=Menace (This creature can't be blocked except by two or more creatures.) -- {2}{B}, Exile Unwilling Ingredient from your graveyard: You draw a card and you lose 1 life. +mana={B} +type=Creature +subtype=Frog +power=1 +toughness=1 +[/card] +[card] name=Unwind target=*[-creature]|stack auto=fizzle @@ -57810,6 +58737,17 @@ power=2 toughness=2 [/card] [card] +name=Veinwitch Coven +abilities=menace +auto=@lifeof(player) from(*[-Alhammarret's Archive;-Angel of Vitality;-Boon Reflection]):pay({B}) target(creature|mygraveyard) moveto(myhand) +text=Menace -- Whenever you gain life, you may pay {B}. If you do, return target creature card from your graveyard to your hand. +mana={2}{B} +type=Creature +subtype=Vampire Warlock +power=3 +toughness=3 +[/card] +[card] name=Venarian Gold target=creature auto=counter(0/0,x,Sleep) @@ -58154,6 +59092,16 @@ power=2 toughness=2 [/card] [card] +name=Veyran, Voice of Duality +auto=@movedto(*[instant;sorcery]|mystack):1/1 ueot +text=Magecraft — Whenever you cast or copy an instant or sorcery spell, Veyran, Voice of Duality gets +1/+1 until end of turn. -- If you casting or copying an instant or sorcery spell causes a triggered ability of a permanent you control to trigger, that ability triggers an additional time. +mana={1}{U}{R} +type=Legendary Creature +subtype=Efreet Wizard +power=2 +toughness=2 +[/card] +[card] name=Vial Smasher the Fierce abilities=partner auto=@movedto(*[-land;manacost=1]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:ability$!name(Choose one) choice name(Damage opponent) damage:1 opponent _ choice name(Damage planeswalker) damage:1 target(planeswalker|opponentBattlefield)!$ controller @@ -59011,6 +59959,13 @@ power=2 toughness=3 [/card] [card] +name=Wake the Past +auto=all(artifact|mygraveyard) moveto(mybattlefield) and!( transforms((,newability[haste])) ueot )! +text=Return all artifact cards from your graveyard to the battlefield. They gain haste until end of turn. +mana={5}{R}{W} +type=Sorcery +[/card] +[card] name=Wakening Sun's Avatar auto=if casted(this) then destroy all(creature[-dinosaur]) text=When Wakening Sun's Avatar enters the battlefield, if you cast it from your hand, destroy all non-Dinosaur creatures. @@ -60056,6 +61011,16 @@ power=2 toughness=2 [/card] [card] +name=Willowdusk, Essence Seer +auto={1}{T}:if compare(lifegain)~morethan~compare(lifelost) then target(other creature|battlefield) counter(1/1.lifegain) else counter(1/1.lifelost) assorcery +text={1}, {T}: Choose another target creature. Put a number of +1/+1 counters on it equal to the amount of life you gained this turn or the amount of life you lost this turn, whichever is greater. Activate only as a sorcery. +mana={1}{B}{G} +type=Legendary Creature +subtype=Dryad Druid +power=3 +toughness=3 +[/card] +[card] name=Wilt abilities=cycling target=artifact,enchantment @@ -60359,6 +61324,13 @@ mana={B} type=Artifact [/card] [card] +name=Witch's Clinic +auto={T}:add{C} +auto={2}{T}:target(*[iscommander]|battlefield) transforms((,newability[lifelink])) ueot +text={T}: Add {C}. -- {2}, {T}: Target commander gains lifelink until end of turn. +type=Land +[/card] +[card] name=Witch's Cottage auto=aslongas(other land[swamp]|myBattlefield) tap(noevent) <3 oneshot auto=if this(untapped) may (creature|mygraveyard) moveTo(myLibrary) once @@ -60468,28 +61440,7 @@ toughness=2 [card] name=Wojek Bodyguard abilities=mentor -auto=@combat(attacking) source(this) restriction{compare(p)~lessthan~1}:counter(1/1,1) target(other creature[attacking;power<=-1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~1}:counter(1/1,1) target(other creature[attacking;power<=0]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~2}:counter(1/1,1) target(other creature[attacking;power<=1]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~3}:counter(1/1,1) target(other creature[attacking;power<=2]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~4}:counter(1/1,1) target(other creature[attacking;power<=3]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~5}:counter(1/1,1) target(other creature[attacking;power<=4]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~6}:counter(1/1,1) target(other creature[attacking;power<=5]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~7}:counter(1/1,1) target(other creature[attacking;power<=6]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~8}:counter(1/1,1) target(other creature[attacking;power<=7]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~9}:counter(1/1,1) target(other creature[attacking;power<=8]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~10}:counter(1/1,1) target(other creature[attacking;power<=9]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~11}:counter(1/1,1) target(other creature[attacking;power<=10]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~12}:counter(1/1,1) target(other creature[attacking;power<=11]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~13}:counter(1/1,1) target(other creature[attacking;power<=12]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~14}:counter(1/1,1) target(other creature[attacking;power<=13]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~15}:counter(1/1,1) target(other creature[attacking;power<=14]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~16}:counter(1/1,1) target(other creature[attacking;power<=15]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~17}:counter(1/1,1) target(other creature[attacking;power<=16]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~18}:counter(1/1,1) target(other creature[attacking;power<=17]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~19}:counter(1/1,1) target(other creature[attacking;power<=18]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~equalto~20}:counter(1/1,1) target(other creature[attacking;power<=19]|myBattlefield) -auto=@combat(attacking) source(this) restriction{compare(p)~morethan~20}:counter(1/1,1) target(other creature[attacking;power<=20]|myBattlefield) +auto=@combat(attacking) source(this):name(Choose attacking creature) transforms((,newability[target(other creature[attacking;power<=pminus1minusend]|myBattlefield) counter(1/1)])) oneshot auto=@combat(attacking) source(this) restriction{type(creature[attacking]|myBattlefield)~equalto~1}:all(this) removefromcombat && untap auto=@combat(blocking) source(this) restriction{type(creature[blocking]|myBattlefield)~equalto~1}:all(this) removefromcombat && untap text=Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) -- Wojek Bodyguard can't attack or block alone. @@ -60892,6 +61843,16 @@ power=2 toughness=4 [/card] [card] +name=Yedora, Grave Gardener +auto=@movedto(other creature[-token]|mygraveyard) from(mybattlefield):all(trigger[to]) flip(Forest) forcetype(land) +text=Whenever another nontoken creature you control dies, you may return it to the battlefield face down under its owner's control. It's a Forest land. (It has no other types or abilities.) +mana={4}{G} +type=Legendary Creature +subtype=Treefolk Druid +power=5 +toughness=5 +[/card] +[card] name=Yidaro, Wandering Monster abilities=trample,haste,cycling autohand=__CYCLING__({1}{R}) @@ -60998,6 +61959,21 @@ power=9 toughness=9 [/card] [card] +name=Zaffai, Thunder Conductor +aicode=activate transforms((,newability[all(*[zpos=1]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveTo(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot +auto=@movedto(*[instant;sorcery]|mystack):scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto=@movedto(instant[manacost>=5]|mystack):token(Elemental,Creature Elemental,4/4,blue,red) +auto=@movedto(sorcery[manacost>=5]|mystack):token(Elemental,Creature Elemental,4/4,blue,red) +auto=@movedto(instant[manacost>=10]|mystack):damage:10 opponent +auto=@movedto(sorcery[manacost>=10]|mystack):damage:10 opponent +text=Magecraft — Whenever you cast or copy an instant or sorcery spell, scry 1. If that spell's mana value is 5 or greater, create a 4/4 blue and red Elemental creature token. If that spell's mana value is 10 or greater, Zaffai, Thunder Conductor deals 10 damage to an opponent chosen at random. +mana={2}{U}{R} +type=Legendary Creature +subtype=Human Shaman +power=1 +toughness=4 +[/card] +[card] name=Zagoth Crystal abilities=cycling auto={T}:Add{B} diff --git a/projects/mtg/bin/Res/sets/primitives/unsupported.txt b/projects/mtg/bin/Res/sets/primitives/unsupported.txt index c3cdce7fb..1203fad07 100644 --- a/projects/mtg/bin/Res/sets/primitives/unsupported.txt +++ b/projects/mtg/bin/Res/sets/primitives/unsupported.txt @@ -764,6 +764,13 @@ power=1 toughness=1 [/card] [card] +name=Battlemage's Bracers +text=Equipped creature has haste. -- Whenever an ability of equipped creature is activated, if it isn't a mana ability, you may pay {1}. If you do, copy that ability. You may choose new targets for the copy. -- Equip {2} +mana={2}{R} +type=Artifact +subtype=Equipment +[/card] +[card] name=Bazaar of Wonders text=When Bazaar of Wonders enters the battlefield, exile all cards from all graveyards. -- Whenever a player casts a spell, counter it if a card with the same name is in a graveyard or a nontoken permanent with the same name is on the battlefield. mana={3}{U}{U} @@ -5673,6 +5680,12 @@ type=Artifact subtype=Contraption [/card] [card] +name=Inkshield +text=Prevent all combat damage that would be dealt to you this turn. For each 1 damage prevented this way, create a 2/1 white and black Inkling creature token with flying. +mana={3}{W}{B} +type=Instant +[/card] +[card] name=Ink-Treader Nephilim text=Whenever a player casts an instant or sorcery spell, if Ink-Treader Nephilim is the only target of that spell, copy the spell for each other creature that spell could target. Each copy targets a different one of those creatures. mana={R}{G}{W}{U} @@ -9274,6 +9287,15 @@ text=Play cards as written. Ignore all errata. -- {T}: Add {1} to your mana pool type=Legendary Land [/card] [card] +name=Radiant Performer +text=Flash -- When Radiant Performer enters the battlefield, if you cast it from your hand, choose target spell or ability that targets only a single permanent or player. Copy that spell or ability for each other permanent or player the spell or ability could target. Each copy targets a different one of those permanents and players. +mana={3}{R}{R} +type=Creature +subtype=Human Wizard +power=2 +toughness=2 +[/card] +[card] name=Radiate text=Choose target instant or sorcery spell that targets only a single permanent or player. Copy that spell for each other permanent or player the spell could target. Each copy targets a different one of those permanents and players. mana={3}{R}{R} @@ -9866,6 +9888,15 @@ mana={G} type=Instant [/card] [card] +name=Ruxa, Patient Professor +text=Whenever Ruxa, Patient Professor enters the battlefield or attacks, return target creature card with no abilities from your graveyard to your hand. -- Creatures you control with no abilities get +1/+1. -- You may have creatures you control with no abilities assign their combat damage as though they weren't blocked. +mana={2}{G}{G} +type=Legendary Creature +subtype=Bear Druid +power=4 +toughness=4 +[/card] +[card] name=S.N.E.A.K. Dispatcher text={2}{U}, {T}: Look at the top card of target player's library. If it has an Agents of S.N.E.A.K. watermark, you may reveal it and put it into your hand. Otherwise, put it on the top or bottom of its owner's library. mana={1}{U} diff --git a/projects/mtg/include/CardDescriptor.h b/projects/mtg/include/CardDescriptor.h index d7e36e421..05765306b 100644 --- a/projects/mtg/include/CardDescriptor.h +++ b/projects/mtg/include/CardDescriptor.h @@ -47,6 +47,7 @@ class CardDescriptor: public MTGCardInstance int zposition; int hasKickerCost; int hasFlashbackCost; + int hasXCost; int anyCounter; int init(); CardDescriptor(); diff --git a/projects/mtg/include/GameObserver.h b/projects/mtg/include/GameObserver.h index d2a477516..f566f9c50 100644 --- a/projects/mtg/include/GameObserver.h +++ b/projects/mtg/include/GameObserver.h @@ -136,6 +136,7 @@ class GameObserver{ int isInCommandZone(MTGCardInstance * card); int isInHand(MTGCardInstance * card); int isInLibrary(MTGCardInstance * card); + int isInStack(MTGCardInstance * card); virtual void Update(float dt); void Render(); void ButtonPressed(PlayGuiObject*); diff --git a/projects/mtg/src/ActionStack.cpp b/projects/mtg/src/ActionStack.cpp index de101d9cf..3668a2f73 100644 --- a/projects/mtg/src/ActionStack.cpp +++ b/projects/mtg/src/ActionStack.cpp @@ -262,20 +262,21 @@ void StackAbility::Render() Targetable * tt = ability->getActionTc()->getTargetsFrom()[i]; if(tt) { - if( ((Damageable *)(tt))->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE ) + MTGCardInstance* card = dynamic_cast(tt); + if(!card && dynamic_cast(tt)) card = dynamic_cast(tt)->source; //Fixed crash on targeting a spell on stack by correctly casting variable tt. + if(((Damageable *)(tt))->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE) { - //fill vector - myClones.push_back(((MTGCardInstance*)(tt))); - - if( source->has(Constants::HIDDENFACE) && !observer->isInLibrary(((MTGCardInstance *)(tt))) ) - mytargetQuads.push_back( ((Damageable *)(tt))->getIcon() ); - else if ( !source->has(Constants::HIDDENFACE) ) - mytargetQuads.push_back( ((Damageable *)(tt))->getIcon() ); + if(card) + myClones.push_back(card); //fill vector + if(source->has(Constants::HIDDENFACE) && card && !observer->isInLibrary(card)) + mytargetQuads.push_back(card->getIcon()); //Fixed crash on targeting a spell on stack by correctly casting variable tt. + else if (!source->has(Constants::HIDDENFACE) && card) + mytargetQuads.push_back(card->getIcon()); //Fixed crash on targeting a spell on stack by correctly casting variable tt. else fmLibrary++; } - //else // This was crashing the game when a permanent targeted a spell in the stack - //mytargetQuads.push_back( ((Damageable *)(tt))->getIcon() ); + else if(card) + mytargetQuads.push_back(card->getIcon()); //Fixed crash on targeting a spell on stack by correctly casting variable tt. } } } diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index 09ec97158..83e69fa08 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -3655,6 +3655,8 @@ int AAFizzler::resolve() } } stack->Fizzle(sTarget, fizzleMode); + if(!source->storedCard) + source->storedCard = sCard; // Store the fizzled card to retrive target information later (e.g. manacost for Reinterpret) return 1; } @@ -5243,6 +5245,9 @@ int AACloner::resolve() Spell * spell = NEW Spell(game, myClone); spell->source->isToken = 1; + if(spell->source->hasType(Subtypes::TYPE_LEGENDARY) && options.find("nolegend") != string::npos){ // check if the token has to be legendary or not. (e.g. Double Major) + spell->source->removeType(Subtypes::TYPE_LEGENDARY); + } spell->resolve(); spell->source->owner = targetPlayer; spell->source->lastController = targetPlayer; diff --git a/projects/mtg/src/CardDescriptor.cpp b/projects/mtg/src/CardDescriptor.cpp index 08fda91bf..996df4074 100644 --- a/projects/mtg/src/CardDescriptor.cpp +++ b/projects/mtg/src/CardDescriptor.cpp @@ -24,6 +24,7 @@ CardDescriptor::CardDescriptor() zposition = -1; hasKickerCost = 0; hasFlashbackCost = 0; + hasXCost = 0; compareName =""; nameComparisonMode = COMPARISON_NONE; colorComparisonMode = COMPARISON_NONE; @@ -275,6 +276,11 @@ MTGCardInstance * CardDescriptor::match(MTGCardInstance * card) match = NULL; } + if ((hasXCost == -1 && card->getManaCost()->hasX()) || (hasXCost == 1 && !card->getManaCost()->hasX())) + { + match = NULL; + } + if ((tapped == -1 && card->isTapped()) || (tapped == 1 && !card->isTapped())) { match = NULL; diff --git a/projects/mtg/src/CardGui.cpp b/projects/mtg/src/CardGui.cpp index 32009e076..fc7937585 100644 --- a/projects/mtg/src/CardGui.cpp +++ b/projects/mtg/src/CardGui.cpp @@ -1544,6 +1544,18 @@ bool CardGui::FilterCard(MTGCard * _card,string filter) cd.isToken = 1; } } + //Has x in cost + else if (attribute.find("hasx") != string::npos) + { + if (minus) + { + cd.hasXCost = -1; + } + else + { + cd.hasXCost = 1; + } + } //put in its zone this turn else if (attribute.find("fresh") != string::npos) { diff --git a/projects/mtg/src/GameObserver.cpp b/projects/mtg/src/GameObserver.cpp index f9c6038c5..6ed5e5d51 100644 --- a/projects/mtg/src/GameObserver.cpp +++ b/projects/mtg/src/GameObserver.cpp @@ -1684,7 +1684,6 @@ int GameObserver::isInPlay(MTGCardInstance * card) } int GameObserver::isInGrave(MTGCardInstance * card) { - for (int i = 0; i < 2; i++) { MTGGameZone * graveyard = players[i]->game->graveyard; @@ -1695,7 +1694,6 @@ int GameObserver::isInGrave(MTGCardInstance * card) } int GameObserver::isInExile(MTGCardInstance * card) { - for (int i = 0; i < 2; i++) { MTGGameZone * exile = players[i]->game->exile; @@ -1706,7 +1704,6 @@ int GameObserver::isInExile(MTGCardInstance * card) } int GameObserver::isInCommandZone(MTGCardInstance * card) { - for (int i = 0; i < 2; i++) { MTGGameZone * commandzone = players[i]->game->commandzone; @@ -1717,7 +1714,6 @@ int GameObserver::isInCommandZone(MTGCardInstance * card) } int GameObserver::isInHand(MTGCardInstance * card) { - for (int i = 0; i < 2; i++) { MTGGameZone * hand = players[i]->game->hand; @@ -1728,7 +1724,6 @@ int GameObserver::isInHand(MTGCardInstance * card) } int GameObserver::isInLibrary(MTGCardInstance * card) { - for (int i = 0; i < 2; i++) { MTGGameZone * library = players[i]->game->library; @@ -1737,6 +1732,16 @@ int GameObserver::isInLibrary(MTGCardInstance * card) } return 0; } +int GameObserver::isInStack(MTGCardInstance * card) +{ + for (int i = 0; i < 2; i++) + { + MTGGameZone * stack = players[i]->game->stack; + if (players[i]->game->isInZone(card, stack)) + return 1; + } + return 0; +} void GameObserver::cleanupPhase() { currentPlayer->cleanupPhase(); diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index 253fef325..007a9240f 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -3267,6 +3267,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG string with = ""; string types = ""; string options = ""; + replace(s.begin(), s.end(), '^', ','); // To allow the usage of ^ instead of , char (e.g. using clone keyword inside transforms) vector splitWith = parseBetween(s, "with(", ")"); if (splitWith.size()) { diff --git a/projects/mtg/src/MTGCardInstance.cpp b/projects/mtg/src/MTGCardInstance.cpp index b16765a59..0410c3274 100644 --- a/projects/mtg/src/MTGCardInstance.cpp +++ b/projects/mtg/src/MTGCardInstance.cpp @@ -957,7 +957,8 @@ int MTGCardInstance::countDuplicateCardNames() for(int x = 0; x < nb_cards; x++) { if(controller()->game->battlefield->cards[x]->name == this->name && !(controller()->game->battlefield->cards[x]->mutation && controller()->game->battlefield->cards[x]->parentCards.size() > 0)) // Don't count Mutated down card - count+=1; + if(!(this->hasType(Subtypes::TYPE_LEGENDARY) && !(controller()->game->battlefield->cards[x]->hasType(Subtypes::TYPE_LEGENDARY)))) // This fix issue when cloning a card with nolegend option (e.g. Double Major) + count+=1; } } return count; diff --git a/projects/mtg/src/MTGGameZones.cpp b/projects/mtg/src/MTGGameZones.cpp index afe3be08a..568f4710b 100644 --- a/projects/mtg/src/MTGGameZones.cpp +++ b/projects/mtg/src/MTGGameZones.cpp @@ -519,6 +519,9 @@ MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone if (!(copy = from->removeCard(card, doCopy))) return NULL; //ERROR + if(!card->hasType(Subtypes::TYPE_LEGENDARY) && copy->hasType(Subtypes::TYPE_LEGENDARY)) // This fix issue when cloning a card with nolegend option (e.g. Double Major) + copy->removeType(Subtypes::TYPE_LEGENDARY); + // Copy all the counters of the original card... (solving the bug on comparison cards with counter before zone changing events) if(card->counters && doCopy && !asCopy && !inplaytoinplay){ for (unsigned int i = 0; i < card->counters->counters.size(); i++){ diff --git a/projects/mtg/src/MTGRules.cpp b/projects/mtg/src/MTGRules.cpp index eb35ba979..d4b26023f 100644 --- a/projects/mtg/src/MTGRules.cpp +++ b/projects/mtg/src/MTGRules.cpp @@ -3601,7 +3601,7 @@ void MTGNewLegend::MoveLegend(MTGCardInstance * card) vectorselection; MTGCardInstance * myClone = NEW MTGCardInstance(card, card->controller()->game); TargetChooserFactory tfL(game); - tcL = tfL.createTargetChooser("*[-Mutated;share!name!]|mybattlefield",myClone); // The Mutated down cards cannot be considered as Legendary card anymore + tcL = tfL.createTargetChooser("*[-mutated;legendary;share!name!]|mybattlefield",myClone); // The Mutated down cards cannot be considered as Legendary card anymore tcL->targetter = NULL; tcL->maxtargets = 1; Legendrule = NEW AAMover(game, game->mLayers->actionLayer()->getMaxId(), myClone, NULL,"ownergraveyard","Put in Graveyard"); @@ -3718,7 +3718,7 @@ void MTGNewPlaneswalker::MovePW(MTGCardInstance * card) vectorselection; MTGCardInstance * myClone = NEW MTGCardInstance(card, card->controller()->game); TargetChooserFactory tfL(game); - tcP = tfL.createTargetChooser("*[share!name!]|mybattlefield",myClone); + tcP = tfL.createTargetChooser("*[-mutated;legendary;share!name!]|mybattlefield",myClone); // The Mutated down cards cannot be considered as Legendary card anymore tcP->targetter = NULL; tcP->maxtargets = 1; PWrule = NEW AAMover(game, game->mLayers->actionLayer()->getMaxId(), myClone, NULL,"ownergraveyard","Put in Graveyard"); diff --git a/projects/mtg/src/TargetChooser.cpp b/projects/mtg/src/TargetChooser.cpp index c8d709185..73c53208f 100644 --- a/projects/mtg/src/TargetChooser.cpp +++ b/projects/mtg/src/TargetChooser.cpp @@ -589,6 +589,18 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta cd->isToken = 1; } } + //Has x in cost + else if (attribute.find("hasx") != string::npos) + { + if (minus) + { + cd->hasXCost = -1; + } + else + { + cd->hasXCost = 1; + } + } //put in its zone this turn else if (attribute.find("fresh") != string::npos) { diff --git a/projects/mtg/src/WParsedInt.cpp b/projects/mtg/src/WParsedInt.cpp index 1dcc573b3..cec3b220b 100644 --- a/projects/mtg/src/WParsedInt.cpp +++ b/projects/mtg/src/WParsedInt.cpp @@ -588,9 +588,13 @@ void WParsedInt::init(string s, Spell * spell, MTGCardInstance * card) { intValue = (s == "pdrewcount")?target->controller()->drawCounter:target->controller()->opponent()->drawCounter; } - else if (s == "epicactivated" || s == "currentturn") + else if (s == "epicactivated" || s == "hasstorecard") { - intValue = (s == "epicactivated")?target->controller()->epic:target->getObserver()->turn; + intValue = (s == "epicactivated")?target->controller()->epic:(target->storedCard != 0); + } + else if (s == "currentphase" || s == "currentturn" ) + { + intValue = (s == "currentphase")?target->getObserver()->getCurrentGamePhase():target->getObserver()->turn; } else if (s == "canforetellcast") { @@ -603,14 +607,16 @@ void WParsedInt::init(string s, Spell * spell, MTGCardInstance * card) if(Constants::MTGBasicAbilities[i] == s.substr(10)) intValue = card->basicAbilities[i]; } - else if (s.find("hascnt") != string::npos) //Return the amount of specific counters on card + else if (s.find("hascnt") != string::npos) //Return the amount of specific counters on card (use "anycnt" to count all of them e.g. Nils, Discipline Enforcer) { intValue = 0; if (card->counters){ Counters * counters = card->counters; for(size_t i = 0; i < counters->counters.size(); ++i){ Counter * counter = counters->counters[i]; - if(counter->name == "" && (s.substr(6) == "11" || s.substr(6) == "-1-1")){ + if(s.substr(6) == "anycnt"){ + intValue += counter->nb; + } else if(counter->name == "" && (s.substr(6) == "11" || s.substr(6) == "-1-1")){ if((counter->power == 1 && counter->toughness == 1 && s.substr(6) == "11") || (counter->power == -1 && counter->toughness == -1 && s.substr(6) == "-1-1")){ intValue = counter->nb; break; @@ -843,6 +849,16 @@ void WParsedInt::init(string s, Spell * spell, MTGCardInstance * card) intValue += 1; } } + else if (s == "pgmanainstantsorcery")//Inferno Project + { + intValue = 0; + for (int j = card->controller()->game->graveyard->nb_cards - 1; j >= 0; --j) + { + if (card->controller()->game->graveyard->cards[j]->hasType(Subtypes::TYPE_INSTANT) + ||card->controller()->game->graveyard->cards[j]->hasType(Subtypes::TYPE_SORCERY)) + intValue += card->controller()->game->graveyard->cards[j]->myconvertedcost; + } + } else if (s == "gravecardtypes")//Tarmogoyf { intValue = 0;