From 31ab9edc8130636661b094275260554bb4dc4022 Mon Sep 17 00:00:00 2001 From: Vittorio Alfieri Date: Sat, 17 Jul 2021 02:33:08 +0200 Subject: [PATCH] Added HTR18, HT19, AFR and AFC sets, added/fixed old primitives, improved Android dowloader, fixed it lang file, fixed IMA rarities, fixed order index of some old sets, added all features from D&D such as Dungeon Cards and Dice (d20,d10, adn so on). --- .../src/net/wagic/utils/ImgDownloader.java | 70 +- projects/mtg/bin/Res/lang/it.txt | 19 +- projects/mtg/bin/Res/sets/AFC/_cards.dat | 1472 ++++++ projects/mtg/bin/Res/sets/AFR/_cards.dat | 1567 ++++++ projects/mtg/bin/Res/sets/ANB/_cards.dat | 2 +- projects/mtg/bin/Res/sets/HA1/_cards.dat | 2 +- projects/mtg/bin/Res/sets/HA2/_cards.dat | 2 +- projects/mtg/bin/Res/sets/HA3/_cards.dat | 2 +- projects/mtg/bin/Res/sets/HA4/_cards.dat | 2 +- projects/mtg/bin/Res/sets/HA5/_cards.dat | 2 +- projects/mtg/bin/Res/sets/HTR18/_cards.dat | 42 + projects/mtg/bin/Res/sets/HTR19/_cards.dat | 42 + projects/mtg/bin/Res/sets/IMA/_cards.dat | 2544 ++++----- projects/mtg/bin/Res/sets/PLIST/_cards.dat | 2 +- projects/mtg/bin/Res/sets/STA/_cards.dat | 2 +- projects/mtg/bin/Res/sets/STX/_cards.dat | 2 +- projects/mtg/bin/Res/sets/ZNE/_cards.dat | 2 +- .../mtg/bin/Res/sets/primitives/_macros.txt | 5 +- .../bin/Res/sets/primitives/borderline.txt | 4582 ++++++++++++++++- projects/mtg/bin/Res/sets/primitives/mtg.txt | 163 +- .../bin/Res/sets/primitives/planeswalkers.txt | 98 +- .../bin/Res/sets/primitives/unsupported.txt | 23 +- projects/mtg/include/AllAbilities.h | 54 +- projects/mtg/include/GameStateDeckViewer.h | 10 +- projects/mtg/include/MTGCardInstance.h | 1 + projects/mtg/include/MTGDeck.h | 2 + projects/mtg/include/MTGDefinitions.h | 8 +- projects/mtg/include/MTGGameZones.h | 1 + projects/mtg/include/Player.h | 1 + projects/mtg/include/WEvent.h | 8 + projects/mtg/src/ActionStack.cpp | 9 +- projects/mtg/src/AllAbilities.cpp | 71 +- projects/mtg/src/GameStateDeckViewer.cpp | 186 +- projects/mtg/src/GameStateDuel.cpp | 6 +- projects/mtg/src/MTGAbility.cpp | 190 +- projects/mtg/src/MTGCardInstance.cpp | 15 +- projects/mtg/src/MTGDeck.cpp | 87 +- projects/mtg/src/MTGDefinitions.cpp | 8 +- projects/mtg/src/MTGGameZones.cpp | 31 +- projects/mtg/src/Player.cpp | 1 + projects/mtg/src/Rules.cpp | 1 + projects/mtg/src/WEvent.cpp | 11 + projects/mtg/src/WParsedInt.cpp | 85 +- 43 files changed, 9693 insertions(+), 1740 deletions(-) create mode 100644 projects/mtg/bin/Res/sets/AFC/_cards.dat create mode 100644 projects/mtg/bin/Res/sets/AFR/_cards.dat create mode 100644 projects/mtg/bin/Res/sets/HTR18/_cards.dat create mode 100644 projects/mtg/bin/Res/sets/HTR19/_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 a79d03af9..5271633e8 100644 --- a/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java +++ b/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java @@ -1828,6 +1828,20 @@ public class ImgDownloader { cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/9/1/910f48ab-b04e-4874-b31d-a86a7bc5af14.jpg?1617626097"; else if(id.equals("296380t")) cardurl = "https://deckmaster.info/images/cards/KLD/-3287-hr.jpg"; + else if(id.equals("530447")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/6/f/6f509dbe-6ec7-4438-ab36-e20be46c9922.jpg?1626139695"; + else if(id.equals("530448")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/5/9/59b11ff8-f118-4978-87dd-509dc0c8c932.jpg?1626297774"; + else if(id.equals("530449")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/7/0/70b284bd-7a8f-4b60-8238-f746bdc5b236.jpg?1626297777"; + else if(id.equals("530448t")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/1/4/1425e965-7eea-419c-a7ec-c8169fa9edbf.jpg?1626139812"; + else if(id.equals("530447t")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/f/a/fa6fdb57-82f3-4695-b1fa-1f301ea4ef83.jpg?1626139846"; + else if(id.equals("527514t")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/c/4/c49e8e79-8673-41c2-a1ad-273c37e27aca.jpg?1625767076"; + else if(id.equals("527507t")) + cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/6/b/6b2c8f52-1580-42d5-8434-c4c70e31e31b.jpg?1626139372"; return cardurl; } @@ -2338,7 +2352,40 @@ public class ImgDownloader { tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/1/a/1a2d027f-8996-4761-a776-47cd428f6779.jpg?1618766925"; else if(id.equals("522245t")) tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/3/7/37e32ba6-108a-421f-9dad-3d03f7ebe239.jpg?1623113548"; - + else if(id.equals("296413t")) + tokenurl = "https://i.pinimg.com/564x/af/cc/4c/afcc4c87d67c9651838fed09217c7eed.jpg"; + else if(id.equals("296410t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/9/4/94057dc6-e589-4a29-9bda-90f5bece96c4.jpg?1572489125"; + else if(id.equals("527539t") || id.equals("527477t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/a/3/a3a684b7-27e0-4d9e-a064-9e03c6e50c89.jpg?1626139418"; + else if(id.equals("527351t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/c/e/ce3c0bd9-8a37-4164-9937-f35d1c210fe8.jpg?1626139016"; + else if(id.equals("527378t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/8/6/86881c5f-df5e-4f50-b554-e4c49d5316f9.jpg?1625676073"; + else if(id.equals("532511t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/a/3/a378702b-d074-4402-b423-2ca8f44fce7c.jpg?1572370699"; + else if(id.equals("532519t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/6/2/62cafc0a-cd02-4265-aa1f-b8a6cb7cc8db.jpg?1592710150"; + else if(id.equals("532527t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/8/e/8e3b2942-d1a4-4d27-9d64-65712497ab2e.jpg?1561897504"; + else if(id.equals("532560t") || id.equals("532659t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/9/5/95483574-95b7-42a3-b700-616189163b0a.jpg?1598312392"; + else if(id.equals("531918t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/0/7/076f934b-a244-45f1-bcb3-7c5e882e9911.jpg?1594733476"; + else if(id.equals("532539t") || id.equals("531948t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/4/4/44a4ef4a-a026-424e-88ff-e2bb77aaf05d.jpg?1625974889"; + else if(id.equals("532482t") || id.equals("532493t") || id.equals("532491t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/e/4/e43a205e-43ea-4b3e-92ab-c2ee2172a50a.jpg?1572489150"; + else if(id.equals("532599t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/9/c/9c8fe0d7-5c40-45fe-b3d8-47852380845e.jpg?1562542392"; + else if(id.equals("531833t")) + tokenurl = "https://i.pinimg.com/564x/04/dc/04/04dc041251acb96f97327d67e9c8fe23.jpg"; + else if(id.equals("532489t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/6/0/60842b1a-6ae7-4b3b-a23f-0d94a3d89884.jpg?1562639827"; + else if(id.equals("531921t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/2/3/2300635e-7771-4676-a5a5-29a9d8f49f1a.jpg?1604194799"; + else if(id.equals("531928t") || id.equals("531933t")) + tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/0/b/0b08d210-01cb-46c5-9150-4dfb47f50ae7.jpg?1626139197"; return tokenurl; } @@ -2359,7 +2406,7 @@ public class ImgDownloader { id.equals("293198") || id.equals("479634") || id.equals("479702") || id.equals("489837") || id.equals("489861") || id.equals("491359") || id.equals("294872") || id.equals("295110") || id.equals("294842") || id.equals("295067") || id.equals("491767") || id.equals("295386") || id.equals("295229") || id.equals("295387") || id.equals("295206") || id.equals("295706") || id.equals("497549") || id.equals("497666") || - id.equals("503860") || id.equals("522280") || id.equals("522111")) + id.equals("503860") || id.equals("522280") || id.equals("522111") || id.equals("527288") || id.equals("531927")) return false; return true; } @@ -2714,7 +2761,8 @@ public class ImgDownloader { rarity = ""; if(id != null && (id.equals("209162") || id.equals("209163") || id.equals("401721") || id.equals("401722") || id.equals("491633"))) rarity = "t"; - if(id != null && (id.equals("1750411") || id.equals("5176911") || id.equals("44680711") || id.equals("29530711") || id.equals("45108910"))) + if(id != null && (id.equals("1750411") || id.equals("5176911") || id.equals("44680711") || id.equals("29530711") || id.equals("45108910") + || id.equals("530447") || id.equals("530448") || id.equals("530449"))) rarity = ""; int c = lines.indexOf("[/card]", lastIndex); if (c > 0) @@ -2733,6 +2781,10 @@ public class ImgDownloader { mappa.put("513543t", "Pest"); if(id.equals("513634")) mappa.put("513634t", "Fractal"); + if(id.equals("530447")) + mappa.put("530447t", "Skeleton"); + if(id.equals("530448")) + mappa.put("530448t", "Goblin"); if (id.equals("114921")) { mappa.put("11492111t", "Citizen"); mappa.put("11492112t", "Camarid"); @@ -2958,7 +3010,8 @@ public class ImgDownloader { || scryset.equals("PAL05") || scryset.equals("PAL06") || scryset.equals("PAL99") || scryset.equals("PARL") || scryset.equals("HA1") || scryset.equals("SLD") || scryset.equals("MB1") || scryset.equals("HA2") || scryset.equals("HA3") || scryset.equals("SS3") || scryset.equals("AKR") || scryset.equals("ANB") || scryset.equals("PLIST") || scryset.equals("KLR") || scryset.equals("CC1") - || scryset.equals("ATH") || scryset.equals("HA4") || scryset.equals("TSR") || scryset.equals("HA5") || scryset.equals("H1R")){ + || scryset.equals("ATH") || scryset.equals("HA4") || scryset.equals("TSR") || scryset.equals("HA5") || scryset.equals("H1R") + || scryset.equals("HTR18") || scryset.equals("HTR19")){ try { doc = Jsoup.connect(imageurl + scryset.toLowerCase()).get(); Elements outlinks = doc.select("body a"); @@ -3149,7 +3202,8 @@ public class ImgDownloader { && !scryset.equals("PAL05") && !scryset.equals("PAL06") && !scryset.equals("PAL99") && !scryset.equals("PARL") && !scryset.equals("HA1") && !scryset.equals("SLD") && !scryset.equals("MB1") && !scryset.equals("HA2") && !scryset.equals("HA3") && !scryset.equals("SS3") && !scryset.equals("AKR") && !scryset.equals("ANB") && !scryset.equals("PLIST") && !scryset.equals("KLR") && !scryset.equals("CC1") - && !scryset.equals("ATH") && !scryset.equals("HA4") && !scryset.equals("TSR") && !scryset.equals("HA5") && !scryset.equals("H1R")){ + && !scryset.equals("ATH") && !scryset.equals("HA4") && !scryset.equals("TSR") && !scryset.equals("HA5") && !scryset.equals("H1R") + && !scryset.equals("HTR18") && !scryset.equals("HTR19")){ try { doc = Jsoup.connect(imageurl + scryset.toLowerCase()).get(); Elements outlinks = doc.select("body a"); @@ -3264,7 +3318,8 @@ public class ImgDownloader { && !scryset.equals("PAL05") && !scryset.equals("PAL06") && !scryset.equals("PAL99") && !scryset.equals("PARL") && !scryset.equals("HA1") && !scryset.equals("SLD") && !scryset.equals("MB1") && !scryset.equals("HA2") && !scryset.equals("HA3") && !scryset.equals("SS3") && !scryset.equals("AKR") && !scryset.equals("ANB") && !scryset.equals("PLIST") && !scryset.equals("KLR") && !scryset.equals("CC1") - && !scryset.equals("ATH") && !scryset.equals("HA4") && !scryset.equals("TSR") && !scryset.equals("HA5") && !scryset.equals("H1R")){ + && !scryset.equals("ATH") && !scryset.equals("HA4") && !scryset.equals("TSR") && !scryset.equals("HA5") && !scryset.equals("H1R") + && !scryset.equals("HTR18") && !scryset.equals("HTR19")){ try { doc = Jsoup.connect(imageurl + scryset.toLowerCase()).get(); } catch (Exception e) { @@ -3431,7 +3486,8 @@ public class ImgDownloader { || scryset.equals("PAL06") || scryset.equals("PAL99") || scryset.equals("PARL") || scryset.equals("HA1") || scryset.equals("SLD") || scryset.equals("MB1") || scryset.equals("HA2") || scryset.equals("HA3") || scryset.equals("SS3") || scryset.equals("AKR") || scryset.equals("ANB") || scryset.equals("PLIST") || scryset.equals("KLR") || scryset.equals("CC1") || scryset.equals("ATH") - || scryset.equals("HA4") || scryset.equals("TSR") || scryset.equals("HA5") || scryset.equals("H1R")){ + || scryset.equals("HA4") || scryset.equals("TSR") || scryset.equals("HA5") || scryset.equals("H1R") || scryset.equals("HTR18") + || scryset.equals("HTR19")){ Elements metadata = doc.select("head meta"); if(metadata != null) { for (int j = 0; j < metadata.size(); j++){ diff --git a/projects/mtg/bin/Res/lang/it.txt b/projects/mtg/bin/Res/lang/it.txt index 4c61578a1..087c189c1 100644 --- a/projects/mtg/bin/Res/lang/it.txt +++ b/projects/mtg/bin/Res/lang/it.txt @@ -438,17 +438,28 @@ Switch decks without saving=Cambia mazzo senza salvare Switch Decks=Cambia mazzo --UNLOCK CARDS--=-SBLOCCA CARTE- -#Vista de la coleccion +#Vista collezione Click on the card image=Clicca sull'immagine to add card to deck.=per aggiungere la carta al mazzo. Your Deck: =Il tuo mazzo: -Sideboard: =La panchina: -Remove Card=Rimuovi la carta +Sideboard: =Panchina: +Commanders: =Comandanti: +Dungeons: =Dungeon: +Remove Card=Togli dal mazzo Add/Remove Cards=Aggiungi / Rimuovi carte Add to Deck=Aggiungi al mazzo Add to Sideboard=Aggiungi alla panchina +Add to Dungeons=Aggiungi ai dungeon +Choose as Commander=Scegli come comandante +Remove from Sideboard=Togli dalla panchina +Remove as Commander=Rimuovi come comandante +Remove from Dungeons=Togli dai dungeon +View SB=Vedi PA +View CMD=Vedi CMZ +View DNG=Vedi DNG +View Coll.=Vedi Coll. -#Ediciones: +#Edizioni: -Beginners- Portal Second Age=Portale, la seconda era diff --git a/projects/mtg/bin/Res/sets/AFC/_cards.dat b/projects/mtg/bin/Res/sets/AFC/_cards.dat new file mode 100644 index 000000000..c1e75289d --- /dev/null +++ b/projects/mtg/bin/Res/sets/AFC/_cards.dat @@ -0,0 +1,1472 @@ +[meta] +author=Wagic Team +name=Forgotten Realms Commander +orderindex=COM-R.AFC +year=2021-07-23 +total=293 +[/meta] +[card] +primitive=Saproling +id=-532659 +rarity=T +[/card] +[card] +primitive=Angel +id=-532599 +rarity=T +[/card] +[card] +primitive=Saproling +id=-532560 +rarity=T +[/card] +[card] +primitive=Beast +id=-532539 +rarity=T +[/card] +[card] +primitive=Dragon +id=-532527 +rarity=T +[/card] +[card] +primitive=Thopter +id=-532519 +rarity=T +[/card] +[card] +primitive=Dragon +id=-532511 +rarity=T +[/card] +[card] +primitive=Rat +id=-532493 +rarity=T +[/card] +[card] +primitive=Rat +id=-532491 +rarity=T +[/card] +[card] +primitive=Servo +id=-532489 +rarity=T +[/card] +[card] +primitive=Rat +id=-532482 +rarity=T +[/card] +[card] +primitive=Beast +id=-531948 +rarity=T +[/card] +[card] +primitive=Zombie +id=-531933 +rarity=T +[/card] +[card] +primitive=Zombie +id=-531928 +rarity=T +[/card] +[card] +primitive=Illusion +id=-531921 +rarity=T +[/card] +[card] +primitive=Storvald Effect +id=-531873 +rarity=T +[/card] +[card] +primitive=Dragon Spirit +id=-531833 +rarity=T +[/card] +[card] +primitive=Galea, Kindler of Hope +id=531830 +rarity=M +[/card] +[card] +primitive=Prosper, Tome-Bound +id=531831 +rarity=M +[/card] +[card] +primitive=Sefris of the Hidden Ways +id=531832 +rarity=M +[/card] +[card] +primitive=Vrondiss, Rage of Ancients +id=531833 +rarity=M +[/card] +[card] +primitive=Karazikar, the Eye Tyrant +id=531870 +rarity=M +[/card] +[card] +primitive=Klauth, Unrivaled Ancient +id=531871 +rarity=M +[/card] +[card] +primitive=Nihiloor +id=531872 +rarity=M +[/card] +[card] +primitive=Storvald, Frost Giant Jarl +id=531873 +rarity=M +[/card] +[card] +primitive=Fey Steed +id=531910 +rarity=R +[/card] +[card] +primitive=Holy Avenger +id=531911 +rarity=R +[/card] +[card] +primitive=Immovable Rod +id=531912 +rarity=R +[/card] +[card] +primitive=Mantle of the Ancients +id=531913 +rarity=R +[/card] +[card] +primitive=Radiant Solar +id=531914 +rarity=R +[/card] +[card] +primitive=Revivify +id=531915 +rarity=R +[/card] +[card] +primitive=Robe of Stars +id=531916 +rarity=R +[/card] +[card] +primitive=Thorough Investigation +id=531917 +rarity=R +[/card] +[card] +primitive=Valiant Endeavor +id=531918 +rarity=R +[/card] +[card] +primitive=Knight +id=-531918 +rarity=T +[/card] +[card] +primitive=Arcane Endeavor +id=531919 +rarity=R +[/card] +[card] +primitive=Diviner's Portent +id=531920 +rarity=R +[/card] +[card] +primitive=Minn, Wily Illusionist +id=531921 +rarity=R +[/card] +[card] +primitive=Netherese Puzzle-Ward +id=531922 +rarity=R +[/card] +[card] +primitive=Phantom Steed +id=531923 +rarity=R +[/card] +[card] +primitive=Rod of Absorption +id=531924 +rarity=R +[/card] +[card] +primitive=Winged Boots +id=531925 +rarity=R +[/card] +[card] +primitive=Bag of Devouring +id=531926 +rarity=R +[/card] +[card] +primitive=Danse Macabre +id=531927 +rarity=R +[/card] +[card] +primitive=Death Tyrant +id=531928 +rarity=R +[/card] +[card] +primitive=Grave Endeavor +id=531929 +rarity=R +[/card] +[card] +primitive=Grim Hireling +id=531930 +rarity=R +[/card] +[card] +primitive=Hellish Rebuke +id=531931 +rarity=R +[/card] +[card] +primitive=Lorcan, Warlock Collector +id=531932 +rarity=R +[/card] +[card] +primitive=Wand of Orcus +id=531933 +rarity=R +[/card] +[card] +primitive=Berserker's Frenzy +id=531934 +rarity=R +[/card] +[card] +primitive=Chaos Dragon +id=531935 +rarity=R +[/card] +[card] +primitive=Fiendlash +id=531936 +rarity=R +[/card] +[card] +primitive=Maddening Hex +id=531937 +rarity=R +[/card] +[card] +primitive=Reckless Endeavor +id=531938 +rarity=R +[/card] +[card] +primitive=Share the Spoils +id=531939 +rarity=R +[/card] +[card] +primitive=Vengeful Ancestor +id=531940 +rarity=R +[/card] +[card] +primitive=Wild-Magic Sorcerer +id=531941 +rarity=R +[/card] +[card] +primitive=Bag of Tricks +id=531942 +rarity=R +[/card] +[card] +primitive=Belt of Giant Strength +id=531943 +rarity=R +[/card] +[card] +primitive=Druid of Purification +id=531944 +rarity=R +[/card] +[card] +primitive=Indomitable Might +id=531945 +rarity=R +[/card] +[card] +primitive=Neverwinter Hydra +id=531946 +rarity=R +[/card] +[card] +primitive=Song of Inspiration +id=531947 +rarity=R +[/card] +[card] +primitive=Wild Endeavor +id=531948 +rarity=R +[/card] +[card] +primitive=Catti-brie of Mithral Hall +id=531949 +rarity=R +[/card] +[card] +primitive=Dragonborn Champion +id=531950 +rarity=R +[/card] +[card] +primitive=Extract Brain +id=531951 +rarity=R +[/card] +[card] +primitive=Fevered Suspicion +id=531952 +rarity=R +[/card] +[card] +primitive=Hurl Through Hell +id=531953 +rarity=R +[/card] +[card] +primitive=Klauth's Will +id=531954 +rarity=R +[/card] +[card] +primitive=Midnight Pathlighter +id=531955 +rarity=R +[/card] +[card] +primitive=Ride the Avalanche +id=531956 +rarity=R +[/card] +[card] +primitive=Wulfgar of Icewind Dale +id=531957 +rarity=R +[/card] +[card] +primitive=Bucknard's Everfull Purse +id=531958 +rarity=U +[/card] +[card] +primitive=Clay Golem +id=531959 +rarity=U +[/card] +[card] +primitive=Component Pouch +id=531960 +rarity=U +[/card] +[card] +primitive=Ebony Fly +id=531961 +rarity=U +[/card] +[card] +primitive=Sword of Hours +id=531962 +rarity=U +[/card] +[card] +primitive=Underdark Rift +id=531963 +rarity=U +[/card] +[card] +primitive=Angel of Finality +id=532450 +rarity=R +[/card] +[card] +primitive=Angelic Gift +id=532451 +rarity=C +[/card] +[card] +primitive=Cataclysmic Gearhulk +id=532452 +rarity=M +[/card] +[card] +primitive=Eternal Dragon +id=532453 +rarity=R +[/card] +[card] +primitive=Gryff's Boon +id=532454 +rarity=U +[/card] +[card] +primitive=Karmic Guide +id=532455 +rarity=R +[/card] +[card] +primitive=Puresteel Paladin +id=532456 +rarity=R +[/card] +[card] +primitive=Realm-Cloaked Giant // Cast Off +id=532457 +rarity=M +[/card] +[card] +primitive=Ronom Unicorn +id=532458 +rarity=C +[/card] +[card] +primitive=Sram, Senior Edificer +id=532459 +rarity=R +[/card] +[card] +primitive=Sun Titan +id=532460 +rarity=M +[/card] +[card] +primitive=Sunblast Angel +id=532461 +rarity=R +[/card] +[card] +primitive=Swords to Plowshares +id=532462 +rarity=U +[/card] +[card] +primitive=Valorous Stance +id=532463 +rarity=U +[/card] +[card] +primitive=Wall of Omens +id=532464 +rarity=U +[/card] +[card] +primitive=Winds of Rath +id=532465 +rarity=R +[/card] +[card] +primitive=Brainstorm +id=532466 +rarity=C +[/card] +[card] +primitive=Champion of Wits +id=532467 +rarity=R +[/card] +[card] +primitive=Curator of Mysteries +id=532468 +rarity=R +[/card] +[card] +primitive=Curse of Verbosity +id=532469 +rarity=U +[/card] +[card] +primitive=Eel Umbra +id=532470 +rarity=C +[/card] +[card] +primitive=Forbidden Alchemy +id=532471 +rarity=U +[/card] +[card] +primitive=Imprisoned in the Moon +id=532472 +rarity=R +[/card] +[card] +primitive=Merfolk Looter +id=532473 +rarity=U +[/card] +[card] +primitive=Mulldrifter +id=532474 +rarity=U +[/card] +[card] +primitive=Murder of Crows +id=532475 +rarity=U +[/card] +[card] +primitive=Phantasmal Image +id=532476 +rarity=R +[/card] +[card] +primitive=Prognostic Sphinx +id=532477 +rarity=R +[/card] +[card] +primitive=Propaganda +id=532478 +rarity=U +[/card] +[card] +primitive=Psychic Impetus +id=532479 +rarity=U +[/card] +[card] +primitive=Riverwise Augur +id=532480 +rarity=U +[/card] +[card] +primitive=Serum Visions +id=532481 +rarity=U +[/card] +[card] +primitive=Chittering Witch +id=532482 +rarity=R +[/card] +[card] +primitive=Consuming Vapors +id=532483 +rarity=R +[/card] +[card] +primitive=Dead Man's Chest +id=532484 +rarity=R +[/card] +[card] +primitive=Doomed Necromancer +id=532485 +rarity=R +[/card] +[card] +primitive=Fiend of the Shadows +id=532486 +rarity=R +[/card] +[card] +primitive=Gonti, Lord of Luxury +id=532487 +rarity=R +[/card] +[card] +primitive=Hex +id=532488 +rarity=R +[/card] +[card] +primitive=Marionette Master +id=532489 +rarity=R +[/card] +[card] +primitive=Necromantic Selection +id=532490 +rarity=R +[/card] +[card] +primitive=Ogre Slumlord +id=532491 +rarity=R +[/card] +[card] +primitive=Phthisis +id=532492 +rarity=U +[/card] +[card] +primitive=Piper of the Swarm +id=532493 +rarity=R +[/card] +[card] +primitive=Plaguecrafter +id=532494 +rarity=U +[/card] +[card] +primitive=Pontiff of Blight +id=532495 +rarity=R +[/card] +[card] +primitive=Reassembling Skeleton +id=532496 +rarity=U +[/card] +[card] +primitive=Shriekmaw +id=532497 +rarity=U +[/card] +[card] +primitive=Unburial Rites +id=532498 +rarity=U +[/card] +[card] +primitive=Victimize +id=532499 +rarity=U +[/card] +[card] +primitive=Anger +id=532500 +rarity=U +[/card] +[card] +primitive=Apex of Power +id=532501 +rarity=M +[/card] +[card] +primitive=Bogardan Hellkite +id=532502 +rarity=M +[/card] +[card] +primitive=Chain Reaction +id=532503 +rarity=R +[/card] +[card] +primitive=Chaos Warp +id=532504 +rarity=R +[/card] +[card] +primitive=Commune with Lava +id=532505 +rarity=R +[/card] +[card] +primitive=Dark-Dweller Oracle +id=532506 +rarity=R +[/card] +[card] +primitive=Demanding Dragon +id=532507 +rarity=R +[/card] +[card] +primitive=Dire Fleet Daredevil +id=532508 +rarity=R +[/card] +[card] +primitive=Disrupt Decorum +id=532509 +rarity=R +[/card] +[card] +primitive=Dragonlord's Servant +id=532510 +rarity=U +[/card] +[card] +primitive=Dragonmaster Outcast +id=532511 +rarity=M +[/card] +[card] +primitive=Dream Pillager +id=532512 +rarity=R +[/card] +[card] +primitive=Etali, Primal Storm +id=532513 +rarity=R +[/card] +[card] +primitive=Gratuitous Violence +id=532514 +rarity=R +[/card] +[card] +primitive=Hoard-Smelter Dragon +id=532515 +rarity=R +[/card] +[card] +primitive=Ignite the Future +id=532516 +rarity=R +[/card] +[card] +primitive=Izzet Chemister +id=532517 +rarity=R +[/card] +[card] +primitive=Light Up the Stage +id=532518 +rarity=U +[/card] +[card] +primitive=Loyal Apprentice +id=532519 +rarity=U +[/card] +[card] +primitive=Magmaquake +id=532520 +rarity=R +[/card] +[card] +primitive=Opportunistic Dragon +id=532521 +rarity=R +[/card] +[card] +primitive=Outpost Siege +id=532522 +rarity=R +[/card] +[card] +primitive=Rile +id=532523 +rarity=C +[/card] +[card] +primitive=Scourge of Valkas +id=532524 +rarity=M +[/card] +[card] +primitive=Shiny Impetus +id=532525 +rarity=U +[/card] +[card] +primitive=Shivan Hellkite +id=532526 +rarity=R +[/card] +[card] +primitive=Skyline Despot +id=532527 +rarity=R +[/card] +[card] +primitive=Skyship Stalker +id=532528 +rarity=R +[/card] +[card] +primitive=Spit Flame +id=532529 +rarity=R +[/card] +[card] +primitive=Taurean Mauler +id=532530 +rarity=R +[/card] +[card] +primitive=Tectonic Giant +id=532531 +rarity=R +[/card] +[card] +primitive=Terror of Mount Velus +id=532532 +rarity=R +[/card] +[card] +primitive=Throes of Chaos +id=532533 +rarity=U +[/card] +[card] +primitive=Thunderbreak Regent +id=532534 +rarity=R +[/card] +[card] +primitive=Vandalblast +id=532535 +rarity=U +[/card] +[card] +primitive=Warstorm Surge +id=532536 +rarity=R +[/card] +[card] +primitive=Abundant Growth +id=532537 +rarity=C +[/card] +[card] +primitive=Acidic Slime +id=532538 +rarity=U +[/card] +[card] +primitive=Beast Within +id=532539 +rarity=U +[/card] +[card] +primitive=Chameleon Colossus +id=532540 +rarity=R +[/card] +[card] +primitive=Colossal Majesty +id=532541 +rarity=U +[/card] +[card] +primitive=Cultivate +id=532542 +rarity=U +[/card] +[card] +primitive=Decree of Savagery +id=532543 +rarity=R +[/card] +[card] +primitive=Explore +id=532544 +rarity=C +[/card] +[card] +primitive=Fertile Ground +id=532545 +rarity=C +[/card] +[card] +primitive=Garruk's Uprising +id=532546 +rarity=U +[/card] +[card] +primitive=Greater Good +id=532547 +rarity=R +[/card] +[card] +primitive=Heroic Intervention +id=532548 +rarity=R +[/card] +[card] +primitive=Kenrith's Transformation +id=532549 +rarity=U +[/card] +[card] +primitive=Kindred Summons +id=532550 +rarity=R +[/card] +[card] +primitive=Nature's Lore +id=532551 +rarity=C +[/card] +[card] +primitive=Paradise Druid +id=532552 +rarity=U +[/card] +[card] +primitive=Rampant Growth +id=532553 +rarity=C +[/card] +[card] +primitive=Rancor +id=532554 +rarity=U +[/card] +[card] +primitive=Return of the Wildspeaker +id=532555 +rarity=R +[/card] +[card] +primitive=Return to Nature +id=532556 +rarity=C +[/card] +[card] +primitive=Rishkar's Expertise +id=532557 +rarity=R +[/card] +[card] +primitive=Shamanic Revelation +id=532558 +rarity=R +[/card] +[card] +primitive=Utopia Sprawl +id=532559 +rarity=C +[/card] +[card] +primitive=Verdant Embrace +id=532560 +rarity=R +[/card] +[card] +primitive=Wild Growth +id=532561 +rarity=C +[/card] +[card] +primitive=Ashen Rider +id=532562 +rarity=M +[/card] +[card] +primitive=Atarka, World Render +id=532563 +rarity=R +[/card] +[card] +primitive=Baleful Strix +id=532564 +rarity=R +[/card] +[card] +primitive=Bant Charm +id=532565 +rarity=U +[/card] +[card] +primitive=Bedevil +id=532566 +rarity=R +[/card] +[card] +primitive=Behemoth Sledge +id=532567 +rarity=U +[/card] +[card] +primitive=Bituminous Blast +id=532568 +rarity=U +[/card] +[card] +primitive=Cloudblazer +id=532569 +rarity=U +[/card] +[card] +primitive=Cold-Eyed Selkie +id=532570 +rarity=R +[/card] +[card] +primitive=Despark +id=532571 +rarity=U +[/card] +[card] +primitive=Fleecemane Lion +id=532572 +rarity=R +[/card] +[card] +primitive=Hostage Taker +id=532573 +rarity=R +[/card] +[card] +primitive=Knight of Autumn +id=532574 +rarity=R +[/card] +[card] +primitive=Necrotic Sliver +id=532575 +rarity=U +[/card] +[card] +primitive=Obsessive Stitcher +id=532576 +rarity=U +[/card] +[card] +primitive=Rakdos Charm +id=532577 +rarity=U +[/card] +[card] +primitive=Savage Ventmaw +id=532578 +rarity=U +[/card] +[card] +primitive=Shielding Plax +id=532579 +rarity=C +[/card] +[card] +primitive=Terminate +id=532580 +rarity=U +[/card] +[card] +primitive=Theater of Horrors +id=532581 +rarity=R +[/card] +[card] +primitive=Utter End +id=532582 +rarity=R +[/card] +[card] +primitive=Vanish into Memory +id=532583 +rarity=U +[/card] +[card] +primitive=Arcane Signet +id=532584 +rarity=C +[/card] +[card] +primitive=Argentum Armor +id=532585 +rarity=R +[/card] +[card] +primitive=Basilisk Collar +id=532586 +rarity=R +[/card] +[card] +primitive=Burnished Hart +id=532587 +rarity=U +[/card] +[card] +primitive=Chaos Wand +id=532588 +rarity=R +[/card] +[card] +primitive=Colossus Hammer +id=532589 +rarity=U +[/card] +[card] +primitive=Commander's Sphere +id=532590 +rarity=C +[/card] +[card] +primitive=Dragon's Hoard +id=532591 +rarity=R +[/card] +[card] +primitive=Explorer's Scope +id=532592 +rarity=C +[/card] +[card] +primitive=Fellwar Stone +id=532593 +rarity=U +[/card] +[card] +primitive=Gruul Signet +id=532594 +rarity=C +[/card] +[card] +primitive=Heirloom Blade +id=532595 +rarity=U +[/card] +[card] +primitive=Masterwork of Ingenuity +id=532596 +rarity=R +[/card] +[card] +primitive=Meteor Golem +id=532597 +rarity=U +[/card] +[card] +primitive=Mind Stone +id=532598 +rarity=U +[/card] +[card] +primitive=Moonsilver Spear +id=532599 +rarity=R +[/card] +[card] +primitive=Orazca Relic +id=532600 +rarity=C +[/card] +[card] +primitive=Rakdos Signet +id=532601 +rarity=C +[/card] +[card] +primitive=Sol Ring +id=532602 +rarity=U +[/card] +[card] +primitive=Solemn Simulacrum +id=532603 +rarity=R +[/card] +[card] +primitive=Swiftfoot Boots +id=532604 +rarity=U +[/card] +[card] +primitive=Sword of the Animist +id=532605 +rarity=R +[/card] +[card] +primitive=Talisman of Indulgence +id=532606 +rarity=U +[/card] +[card] +primitive=Unstable Obelisk +id=532607 +rarity=U +[/card] +[card] +primitive=Viridian Longbow +id=532608 +rarity=C +[/card] +[card] +primitive=Wayfarer's Bauble +id=532609 +rarity=C +[/card] +[card] +primitive=Arcane Sanctum +id=532610 +rarity=U +[/card] +[card] +primitive=Azorius Chancery +id=532611 +rarity=U +[/card] +[card] +primitive=Bant Panorama +id=532612 +rarity=C +[/card] +[card] +primitive=Bojuka Bog +id=532613 +rarity=C +[/card] +[card] +primitive=Canopy Vista +id=532614 +rarity=R +[/card] +[card] +primitive=Choked Estuary +id=532615 +rarity=R +[/card] +[card] +primitive=Cinder Glade +id=532616 +rarity=R +[/card] +[card] +primitive=Command Tower +id=532617 +rarity=C +[/card] +[card] +primitive=Crucible of the Spirit Dragon +id=532618 +rarity=R +[/card] +[card] +primitive=Darkwater Catacombs +id=532619 +rarity=R +[/card] +[card] +primitive=Desert +id=532620 +rarity=U +[/card] +[card] +primitive=Dimir Aqueduct +id=532621 +rarity=U +[/card] +[card] +primitive=Esper Panorama +id=532622 +rarity=C +[/card] +[card] +primitive=Exotic Orchard +id=532623 +rarity=R +[/card] +[card] +primitive=Flood Plain +id=532624 +rarity=U +[/card] +[card] +primitive=Foreboding Ruins +id=532625 +rarity=R +[/card] +[card] +primitive=Fortified Village +id=532626 +rarity=R +[/card] +[card] +primitive=Game Trail +id=532627 +rarity=R +[/card] +[card] +primitive=Geier Reach Sanitarium +id=532628 +rarity=R +[/card] +[card] +primitive=Grasslands +id=532629 +rarity=U +[/card] +[card] +primitive=Gruul Turf +id=532630 +rarity=U +[/card] +[card] +primitive=Halimar Depths +id=532631 +rarity=C +[/card] +[card] +primitive=Haven of the Spirit Dragon +id=532632 +rarity=R +[/card] +[card] +primitive=High Market +id=532633 +rarity=R +[/card] +[card] +primitive=Lumbering Falls +id=532634 +rarity=R +[/card] +[card] +primitive=Mishra's Factory +id=532635 +rarity=U +[/card] +[card] +primitive=Mortuary Mire +id=532636 +rarity=C +[/card] +[card] +primitive=Mossfire Valley +id=532637 +rarity=R +[/card] +[card] +primitive=Mosswort Bridge +id=532638 +rarity=R +[/card] +[card] +primitive=Nimbus Maze +id=532639 +rarity=R +[/card] +[card] +primitive=Orzhov Basilica +id=532640 +rarity=U +[/card] +[card] +primitive=Path of Ancestry +id=532641 +rarity=C +[/card] +[card] +primitive=Port Town +id=532642 +rarity=R +[/card] +[card] +primitive=Prairie Stream +id=532643 +rarity=R +[/card] +[card] +primitive=Rakdos Carnarium +id=532644 +rarity=U +[/card] +[card] +primitive=Seaside Citadel +id=532645 +rarity=U +[/card] +[card] +primitive=Shadowblood Ridge +id=532646 +rarity=R +[/card] +[card] +primitive=Simic Growth Chamber +id=532647 +rarity=U +[/card] +[card] +primitive=Skycloud Expanse +id=532648 +rarity=R +[/card] +[card] +primitive=Smoldering Marsh +id=532649 +rarity=R +[/card] +[card] +primitive=Spinerock Knoll +id=532650 +rarity=R +[/card] +[card] +primitive=Sungrass Prairie +id=532651 +rarity=R +[/card] +[card] +primitive=Sunken Hollow +id=532652 +rarity=R +[/card] +[card] +primitive=Tainted Peak +id=532653 +rarity=U +[/card] +[card] +primitive=Terramorphic Expanse +id=532654 +rarity=C +[/card] +[card] +primitive=Thriving Grove +id=532655 +rarity=C +[/card] +[card] +primitive=Thriving Heath +id=532656 +rarity=C +[/card] +[card] +primitive=Thriving Isle +id=532657 +rarity=C +[/card] +[card] +primitive=Thriving Moor +id=532658 +rarity=C +[/card] +[card] +primitive=Vitu-Ghazi, the City-Tree +id=532659 +rarity=U +[/card] +[card] +primitive=Zhalfirin Void +id=532660 +rarity=U +[/card] +[card] +primitive=Dragonspeaker Shaman +id=534560 +rarity=U +[/card] +[card] +primitive=Lightning Greaves +id=534561 +rarity=U +[/card] diff --git a/projects/mtg/bin/Res/sets/AFR/_cards.dat b/projects/mtg/bin/Res/sets/AFR/_cards.dat new file mode 100644 index 000000000..c9cf6525c --- /dev/null +++ b/projects/mtg/bin/Res/sets/AFR/_cards.dat @@ -0,0 +1,1567 @@ +[meta] +author=Wagic Team +name=Adventures in the Forgotten Realms +orderindex=EXP-ZZI.AFR +year=2021-07-23 +total=312 +[/meta] +[card] +primitive=Annihilation Rooms +id=-530449 +rarity=T +[/card] +[card] +primitive=Goblin Los +id=-530448 +rarity=T +[/card] +[card] +primitive=Skeleton Mad +id=-530447 +rarity=T +[/card] +[card] +primitive=Goblin +id=-527541 +rarity=T +[/card] +[card] +primitive=Treasure +id=-527539 +rarity=T +[/card] +[card] +primitive=Skeleton +id=-527519 +rarity=T +[/card] +[card] +primitive=Boo +id=-527514 +rarity=T +[/card] +[card] +primitive=Guenhwyvar +id=-527507 +rarity=T +[/card] +[card] +primitive=Wolf +id=-527496 +rarity=T +[/card] +[card] +primitive=Wolf +id=-527489 +rarity=T +[/card] +[card] +primitive=Treasure +id=-527477 +rarity=T +[/card] +[card] +primitive=Wolf +id=-527469 +rarity=T +[/card] +[card] +primitive=Devil +id=-527459 +rarity=T +[/card] +[card] +primitive=Goblin +id=-527457 +rarity=T +[/card] +[card] +primitive=Goblin +id=-527449 +rarity=T +[/card] +[card] +primitive=Goblin +id=-527432 +rarity=T +[/card] +[card] +primitive=Goblin +id=-527419 +rarity=T +[/card] +[card] +primitive=Zombie +id=-527414 +rarity=T +[/card] +[card] +primitive=Spider +id=-527399 +rarity=T +[/card] +[card] +primitive=Spider +id=-527385 +rarity=T +[/card] +[card] +primitive=Skeleton +id=-527382 +rarity=T +[/card] +[card] +primitive=Vecna +id=-527378 +rarity=T +[/card] +[card] +primitive=Zombie +id=-527374 +rarity=T +[/card] +[card] +primitive=Dog Mor +id=-527351 +rarity=T +[/card] +[card] +primitive=Dragon +id=-527345 +rarity=T +[/card] +[card] +primitive=Icingdeath, Frost Tongue +id=-527307 +rarity=T +[/card] +[card] +primitive=Dancing Sword Construct +id=-527295 +rarity=T +[/card] +[card] +primitive=Angel +id=-527291 +rarity=T +[/card] +[card] +primitive=+2 Mace +id=527288 +rarity=C +[/card] +[card] +primitive=Arborea Pegasus +id=527289 +rarity=C +[/card] +[card] +primitive=Blink Dog +id=527290 +rarity=U +[/card] +[card] +primitive=The Book of Exalted Deeds +id=527291 +rarity=M +[/card] +[card] +primitive=Celestial Unicorn +id=527292 +rarity=C +[/card] +[card] +primitive=Cleric Class +id=527293 +rarity=U +[/card] +[card] +primitive=Cloister Gargoyle +id=527294 +rarity=U +[/card] +[card] +primitive=Dancing Sword +id=527295 +rarity=R +[/card] +[card] +primitive=Dawnbringer Cleric +id=527296 +rarity=C +[/card] +[card] +primitive=Delver's Torch +id=527297 +rarity=C +[/card] +[card] +primitive=Devoted Paladin +id=527298 +rarity=C +[/card] +[card] +primitive=Divine Smite +id=527299 +rarity=U +[/card] +[card] +primitive=Dragon's Disciple +id=527300 +rarity=U +[/card] +[card] +primitive=Dwarfhold Champion +id=527301 +rarity=C +[/card] +[card] +primitive=Flumph +id=527302 +rarity=R +[/card] +[card] +primitive=Gloom Stalker +id=527303 +rarity=C +[/card] +[card] +primitive=Grand Master of Flowers +id=527304 +rarity=M +[/card] +[card] +primitive=Guardian of Faith +id=527305 +rarity=R +[/card] +[card] +primitive=Half-Elf Monk +id=527306 +rarity=C +[/card] +[card] +primitive=Icingdeath, Frost Tyrant +id=527307 +rarity=M +[/card] +[card] +primitive=Ingenious Smith +id=527308 +rarity=U +[/card] +[card] +primitive=Keen-Eared Sentry +id=527309 +rarity=U +[/card] +[card] +primitive=Loyal Warhound +id=527310 +rarity=R +[/card] +[card] +primitive=Minimus Containment +id=527311 +rarity=C +[/card] +[card] +primitive=Monk of the Open Hand +id=527312 +rarity=U +[/card] +[card] +primitive=Moon-Blessed Cleric +id=527313 +rarity=U +[/card] +[card] +primitive=Nadaar, Selfless Paladin +id=527314 +rarity=R +[/card] +[card] +primitive=Oswald Fiddlebender +id=527315 +rarity=R +[/card] +[card] +primitive=Paladin Class +id=527316 +rarity=R +[/card] +[card] +primitive=Paladin's Shield +id=527317 +rarity=C +[/card] +[card] +primitive=Planar Ally +id=527318 +rarity=C +[/card] +[card] +primitive=Plate Armor +id=527319 +rarity=U +[/card] +[card] +primitive=Portable Hole +id=527320 +rarity=U +[/card] +[card] +primitive=Potion of Healing +id=527321 +rarity=C +[/card] +[card] +primitive=Priest of Ancient Lore +id=527322 +rarity=C +[/card] +[card] +primitive=Rally Maneuver +id=527323 +rarity=U +[/card] +[card] +primitive=Ranger's Hawk +id=527324 +rarity=C +[/card] +[card] +primitive=Steadfast Paladin +id=527325 +rarity=C +[/card] +[card] +primitive=Teleportation Circle +id=527326 +rarity=R +[/card] +[card] +primitive=Veteran Dungeoneer +id=527327 +rarity=C +[/card] +[card] +primitive=White Dragon +id=527328 +rarity=U +[/card] +[card] +primitive=You Hear Something on Watch +id=527329 +rarity=C +[/card] +[card] +primitive=You're Ambushed on the Road +id=527330 +rarity=C +[/card] +[card] +primitive=Aberrant Mind Sorcerer +id=527331 +rarity=U +[/card] +[card] +primitive=Air-Cult Elemental +id=527332 +rarity=C +[/card] +[card] +primitive=Arcane Investigator +id=527333 +rarity=C +[/card] +[card] +primitive=Bar the Gate +id=527334 +rarity=C +[/card] +[card] +primitive=The Blackstaff of Waterdeep +id=527335 +rarity=R +[/card] +[card] +primitive=Blue Dragon +id=527336 +rarity=U +[/card] +[card] +primitive=Charmed Sleep +id=527337 +rarity=C +[/card] +[card] +primitive=Clever Conjurer +id=527338 +rarity=C +[/card] +[card] +primitive=Contact Other Plane +id=527339 +rarity=C +[/card] +[card] +primitive=Demilich +id=527340 +rarity=M +[/card] +[card] +primitive=Displacer Beast +id=527341 +rarity=U +[/card] +[card] +primitive=Djinni Windseer +id=527342 +rarity=C +[/card] +[card] +primitive=Dragon Turtle +id=527343 +rarity=R +[/card] +[card] +primitive=Eccentric Apprentice +id=527344 +rarity=U +[/card] +[card] +primitive=Feywild Trickster +id=527345 +rarity=U +[/card] +[card] +primitive=Fly +id=527346 +rarity=U +[/card] +[card] +primitive=Grazilaxx, Illithid Scholar +id=527347 +rarity=R +[/card] +[card] +primitive=Guild Thief +id=527348 +rarity=U +[/card] +[card] +primitive=Iymrith, Desert Doom +id=527349 +rarity=M +[/card] +[card] +primitive=Mind Flayer +id=527350 +rarity=R +[/card] +[card] +primitive=Mordenkainen +id=527351 +rarity=M +[/card] +[card] +primitive=Mordenkainen's Polymorph +id=527352 +rarity=C +[/card] +[card] +primitive=Pixie Guide +id=527353 +rarity=C +[/card] +[card] +primitive=Power of Persuasion +id=527354 +rarity=U +[/card] +[card] +primitive=Ray of Frost +id=527355 +rarity=U +[/card] +[card] +primitive=Rimeshield Frost Giant +id=527356 +rarity=C +[/card] +[card] +primitive=Scion of Stygia +id=527357 +rarity=C +[/card] +[card] +primitive=Secret Door +id=527358 +rarity=C +[/card] +[card] +primitive=Shocking Grasp +id=527359 +rarity=C +[/card] +[card] +primitive=Shortcut Seeker +id=527360 +rarity=C +[/card] +[card] +primitive=Silver Raven +id=527361 +rarity=C +[/card] +[card] +primitive=Soulknife Spy +id=527362 +rarity=C +[/card] +[card] +primitive=Split the Party +id=527363 +rarity=U +[/card] +[card] +primitive=Sudden Insight +id=527364 +rarity=U +[/card] +[card] +primitive=Tasha's Hideous Laughter +id=527365 +rarity=R +[/card] +[card] +primitive=Trickster's Talisman +id=527366 +rarity=U +[/card] +[card] +primitive=True Polymorph +id=527367 +rarity=R +[/card] +[card] +primitive=Wizard Class +id=527368 +rarity=U +[/card] +[card] +primitive=Wizard's Spellbook +id=527369 +rarity=R +[/card] +[card] +primitive=You Come to a River +id=527370 +rarity=C +[/card] +[card] +primitive=You Find the Villains' Lair +id=527371 +rarity=C +[/card] +[card] +primitive=You See a Guard Approach +id=527372 +rarity=C +[/card] +[card] +primitive=Yuan-Ti Malison +id=527373 +rarity=R +[/card] +[card] +primitive=Acererak the Archlich +id=527374 +rarity=M +[/card] +[card] +primitive=Asmodeus the Archfiend +id=527375 +rarity=R +[/card] +[card] +primitive=Baleful Beholder +id=527376 +rarity=C +[/card] +[card] +primitive=Black Dragon +id=527377 +rarity=U +[/card] +[card] +primitive=The Book of Vile Darkness +id=527378 +rarity=M +[/card] +[card] +primitive=Check for Traps +id=527379 +rarity=U +[/card] +[card] +primitive=Clattering Skeletons +id=527380 +rarity=C +[/card] +[card] +primitive=Deadly Dispute +id=527381 +rarity=C +[/card] +[card] +primitive=Death-Priest of Myrkul +id=527382 +rarity=U +[/card] +[card] +primitive=Demogorgon's Clutches +id=527383 +rarity=U +[/card] +[card] +primitive=Devour Intellect +id=527384 +rarity=C +[/card] +[card] +primitive=Drider +id=527385 +rarity=U +[/card] +[card] +primitive=Dungeon Crawler +id=527386 +rarity=U +[/card] +[card] +primitive=Ebondeath, Dracolich +id=527387 +rarity=M +[/card] +[card] +primitive=Eyes of the Beholder +id=527388 +rarity=C +[/card] +[card] +primitive=Fates' Reversal +id=527389 +rarity=C +[/card] +[card] +primitive=Feign Death +id=527390 +rarity=C +[/card] +[card] +primitive=Forsworn Paladin +id=527391 +rarity=R +[/card] +[card] +primitive=Gelatinous Cube +id=527392 +rarity=R +[/card] +[card] +primitive=Grim Bounty +id=527393 +rarity=C +[/card] +[card] +primitive=Grim Wanderer +id=527394 +rarity=U +[/card] +[card] +primitive=Herald of Hadar +id=527395 +rarity=C +[/card] +[card] +primitive=Hired Hexblade +id=527396 +rarity=C +[/card] +[card] +primitive=Hoard Robber +id=527397 +rarity=C +[/card] +[card] +primitive=Lightfoot Rogue +id=527398 +rarity=U +[/card] +[card] +primitive=Lolth, Spider Queen +id=527399 +rarity=M +[/card] +[card] +primitive=Manticore +id=527400 +rarity=C +[/card] +[card] +primitive=Power Word Kill +id=527401 +rarity=U +[/card] +[card] +primitive=Precipitous Drop +id=527402 +rarity=C +[/card] +[card] +primitive=Ray of Enfeeblement +id=527403 +rarity=U +[/card] +[card] +primitive=Reaper's Talisman +id=527404 +rarity=U +[/card] +[card] +primitive=Sepulcher Ghoul +id=527405 +rarity=C +[/card] +[card] +primitive=Shambling Ghast +id=527406 +rarity=C +[/card] +[card] +primitive=Skullport Merchant +id=527407 +rarity=U +[/card] +[card] +primitive=Sphere of Annihilation +id=527408 +rarity=R +[/card] +[card] +primitive=Thieves' Tools +id=527409 +rarity=C +[/card] +[card] +primitive=Vampire Spawn +id=527410 +rarity=C +[/card] +[card] +primitive=Vorpal Sword +id=527411 +rarity=R +[/card] +[card] +primitive=Warlock Class +id=527412 +rarity=U +[/card] +[card] +primitive=Westgate Regent +id=527413 +rarity=R +[/card] +[card] +primitive=Wight +id=527414 +rarity=R +[/card] +[card] +primitive=Yuan-Ti Fang-Blade +id=527415 +rarity=C +[/card] +[card] +primitive=Zombie Ogre +id=527416 +rarity=C +[/card] +[card] +primitive=Armory Veteran +id=527417 +rarity=C +[/card] +[card] +primitive=Barbarian Class +id=527418 +rarity=U +[/card] +[card] +primitive=Battle Cry Goblin +id=527419 +rarity=U +[/card] +[card] +primitive=Boots of Speed +id=527420 +rarity=C +[/card] +[card] +primitive=Brazen Dwarf +id=527421 +rarity=C +[/card] +[card] +primitive=Burning Hands +id=527422 +rarity=U +[/card] +[card] +primitive=Chaos Channeler +id=527423 +rarity=U +[/card] +[card] +primitive=Critical Hit +id=527424 +rarity=U +[/card] +[card] +primitive=Delina, Wild Mage +id=527425 +rarity=R +[/card] +[card] +primitive=Dragon's Fire +id=527426 +rarity=C +[/card] +[card] +primitive=Dueling Rapier +id=527427 +rarity=C +[/card] +[card] +primitive=Earth-Cult Elemental +id=527428 +rarity=C +[/card] +[card] +primitive=Farideh's Fireball +id=527429 +rarity=C +[/card] +[card] +primitive=Flameskull +id=527430 +rarity=M +[/card] +[card] +primitive=Goblin Javelineer +id=527431 +rarity=C +[/card] +[card] +primitive=Goblin Morningstar +id=527432 +rarity=U +[/card] +[card] +primitive=Hoarding Ogre +id=527433 +rarity=C +[/card] +[card] +primitive=Hobgoblin Bandit Lord +id=527434 +rarity=R +[/card] +[card] +primitive=Hobgoblin Captain +id=527435 +rarity=C +[/card] +[card] +primitive=Hulking Bugbear +id=527436 +rarity=U +[/card] +[card] +primitive=Improvised Weaponry +id=527437 +rarity=C +[/card] +[card] +primitive=Inferno of the Star Mounts +id=527438 +rarity=M +[/card] +[card] +primitive=Jaded Sell-Sword +id=527439 +rarity=C +[/card] +[card] +primitive=Kick in the Door +id=527440 +rarity=C +[/card] +[card] +primitive=Magic Missile +id=527441 +rarity=U +[/card] +[card] +primitive=Meteor Swarm +id=527442 +rarity=R +[/card] +[card] +primitive=Minion of the Mighty +id=527443 +rarity=R +[/card] +[card] +primitive=Orb of Dragonkind +id=527444 +rarity=R +[/card] +[card] +primitive=Plundering Barbarian +id=527445 +rarity=C +[/card] +[card] +primitive=Price of Loyalty +id=527446 +rarity=C +[/card] +[card] +primitive=Red Dragon +id=527447 +rarity=U +[/card] +[card] +primitive=Rust Monster +id=527448 +rarity=U +[/card] +[card] +primitive=Swarming Goblins +id=527449 +rarity=C +[/card] +[card] +primitive=Tiger-Tribe Hunter +id=527450 +rarity=U +[/card] +[card] +primitive=Unexpected Windfall +id=527451 +rarity=C +[/card] +[card] +primitive=Valor Singer +id=527452 +rarity=C +[/card] +[card] +primitive=Wish +id=527453 +rarity=R +[/card] +[card] +primitive=Xorn +id=527454 +rarity=R +[/card] +[card] +primitive=You Come to the Gnoll Camp +id=527455 +rarity=C +[/card] +[card] +primitive=You Find Some Prisoners +id=527456 +rarity=U +[/card] +[card] +primitive=You See a Pair of Goblins +id=527457 +rarity=U +[/card] +[card] +primitive=Zalto, Fire Giant Duke +id=527458 +rarity=R +[/card] +[card] +primitive=Zariel, Archduke of Avernus +id=527459 +rarity=M +[/card] +[card] +primitive=Bulette +id=527460 +rarity=C +[/card] +[card] +primitive=Bull's Strength +id=527461 +rarity=C +[/card] +[card] +primitive=Choose Your Weapon +id=527462 +rarity=U +[/card] +[card] +primitive=Circle of Dreams Druid +id=527463 +rarity=R +[/card] +[card] +primitive=Circle of the Moon Druid +id=527464 +rarity=C +[/card] +[card] +primitive=Compelled Duel +id=527465 +rarity=C +[/card] +[card] +primitive=Dire Wolf Prowler +id=527466 +rarity=C +[/card] +[card] +primitive=Druid Class +id=527467 +rarity=U +[/card] +[card] +primitive=Ellywick Tumblestrum +id=527468 +rarity=M +[/card] +[card] +primitive=Elturgard Ranger +id=527469 +rarity=C +[/card] +[card] +primitive=Find the Path +id=527470 +rarity=C +[/card] +[card] +primitive=Froghemoth +id=527471 +rarity=R +[/card] +[card] +primitive=Gnoll Hunter +id=527472 +rarity=C +[/card] +[card] +primitive=Green Dragon +id=527473 +rarity=U +[/card] +[card] +primitive=Hill Giant Herdgorger +id=527474 +rarity=C +[/card] +[card] +primitive=Hunter's Mark +id=527475 +rarity=U +[/card] +[card] +primitive=Inspiring Bard +id=527476 +rarity=C +[/card] +[card] +primitive=Instrument of the Bards +id=527477 +rarity=R +[/card] +[card] +primitive=Intrepid Outlander +id=527478 +rarity=U +[/card] +[card] +primitive=Loathsome Troll +id=527479 +rarity=U +[/card] +[card] +primitive=Long Rest +id=527480 +rarity=R +[/card] +[card] +primitive=Lurking Roper +id=527481 +rarity=U +[/card] +[card] +primitive=Neverwinter Dryad +id=527482 +rarity=C +[/card] +[card] +primitive=Ochre Jelly +id=527483 +rarity=R +[/card] +[card] +primitive=Old Gnawbone +id=527484 +rarity=M +[/card] +[card] +primitive=Owlbear +id=527485 +rarity=C +[/card] +[card] +primitive=Plummet +id=527486 +rarity=C +[/card] +[card] +primitive=Prosperous Innkeeper +id=527487 +rarity=U +[/card] +[card] +primitive=Purple Worm +id=527488 +rarity=U +[/card] +[card] +primitive=Ranger Class +id=527489 +rarity=R +[/card] +[card] +primitive=Ranger's Longbow +id=527490 +rarity=C +[/card] +[card] +primitive=Scaled Herbalist +id=527491 +rarity=C +[/card] +[card] +primitive=Spoils of the Hunt +id=527492 +rarity=C +[/card] +[card] +primitive=Sylvan Shepherd +id=527493 +rarity=C +[/card] +[card] +primitive=The Tarrasque +id=527494 +rarity=M +[/card] +[card] +primitive=Underdark Basilisk +id=527495 +rarity=C +[/card] +[card] +primitive=Varis, Silverymoon Ranger +id=527496 +rarity=R +[/card] +[card] +primitive=Wandering Troubadour +id=527497 +rarity=U +[/card] +[card] +primitive=Werewolf Pack Leader +id=527498 +rarity=R +[/card] +[card] +primitive=Wild Shape +id=527499 +rarity=U +[/card] +[card] +primitive=You Find a Cursed Idol +id=527500 +rarity=C +[/card] +[card] +primitive=You Happen On a Glade +id=527501 +rarity=U +[/card] +[card] +primitive=You Meet in a Tavern +id=527502 +rarity=U +[/card] +[card] +primitive=Adult Gold Dragon +id=527503 +rarity=R +[/card] +[card] +primitive=Bard Class +id=527504 +rarity=R +[/card] +[card] +primitive=Barrowin of Clan Undurr +id=527505 +rarity=U +[/card] +[card] +primitive=Bruenor Battlehammer +id=527506 +rarity=U +[/card] +[card] +primitive=Drizzt Do'Urden +id=527507 +rarity=R +[/card] +[card] +primitive=Farideh, Devil's Chosen +id=527508 +rarity=U +[/card] +[card] +primitive=Fighter Class +id=527509 +rarity=R +[/card] +[card] +primitive=Gretchen Titchwillow +id=527510 +rarity=U +[/card] +[card] +primitive=Hama Pashar, Ruin Seeker +id=527511 +rarity=U +[/card] +[card] +primitive=Kalain, Reclusive Painter +id=527512 +rarity=U +[/card] +[card] +primitive=Krydle of Baldur's Gate +id=527513 +rarity=U +[/card] +[card] +primitive=Minsc, Beloved Ranger +id=527514 +rarity=M +[/card] +[card] +primitive=Monk Class +id=527515 +rarity=R +[/card] +[card] +primitive=Orcus, Prince of Undeath +id=527516 +rarity=R +[/card] +[card] +primitive=Rogue Class +id=527517 +rarity=R +[/card] +[card] +primitive=Shessra, Death's Whisper +id=527518 +rarity=U +[/card] +[card] +primitive=Skeletal Swarming +id=527519 +rarity=R +[/card] +[card] +primitive=Sorcerer Class +id=527520 +rarity=R +[/card] +[card] +primitive=Targ Nar, Demon-Fang Gnoll +id=527521 +rarity=U +[/card] +[card] +primitive=Tiamat +id=527522 +rarity=M +[/card] +[card] +primitive=Trelasarra, Moon Dancer +id=527523 +rarity=U +[/card] +[card] +primitive=Triumphant Adventurer +id=527524 +rarity=R +[/card] +[card] +primitive=Volo, Guide to Monsters +id=527525 +rarity=R +[/card] +[card] +primitive=Xanathar, Guild Kingpin +id=527526 +rarity=M +[/card] +[card] +primitive=Bag of Holding +id=527527 +rarity=U +[/card] +[card] +primitive=The Deck of Many Things +id=527528 +rarity=M +[/card] +[card] +primitive=Dungeon Map +id=527529 +rarity=U +[/card] +[card] +primitive=Eye of Vecna +id=527530 +rarity=R +[/card] +[card] +primitive=Fifty Feet of Rope +id=527531 +rarity=U +[/card] +[card] +primitive=Greataxe +id=527532 +rarity=C +[/card] +[card] +primitive=Hand of Vecna +id=527533 +rarity=R +[/card] +[card] +primitive=Iron Golem +id=527534 +rarity=U +[/card] +[card] +primitive=Leather Armor +id=527535 +rarity=C +[/card] +[card] +primitive=Mimic +id=527536 +rarity=C +[/card] +[card] +primitive=Spare Dagger +id=527537 +rarity=C +[/card] +[card] +primitive=Spiked Pit Trap +id=527538 +rarity=C +[/card] +[card] +primitive=Treasure Chest +id=527539 +rarity=R +[/card] +[card] +primitive=Cave of the Frost Dragon +id=527540 +rarity=R +[/card] +[card] +primitive=Den of the Bugbear +id=527541 +rarity=R +[/card] +[card] +primitive=Dungeon Descent +id=527542 +rarity=R +[/card] +[card] +primitive=Evolving Wilds +id=527543 +rarity=C +[/card] +[card] +primitive=Hall of Storm Giants +id=527544 +rarity=R +[/card] +[card] +primitive=Hive of the Eye Tyrant +id=527545 +rarity=R +[/card] +[card] +primitive=Lair of the Hydra +id=527546 +rarity=R +[/card] +[card] +primitive=Temple of the Dragon Queen +id=527547 +rarity=U +[/card] +[card] +primitive=Treasure Vault +id=527548 +rarity=R +[/card] +[card] +primitive=Plains +id=530155 +rarity=L +[/card] +[card] +primitive=Plains +id=530156 +rarity=L +[/card] +[card] +primitive=Plains +id=530157 +rarity=L +[/card] +[card] +primitive=Plains +id=530158 +rarity=L +[/card] +[card] +primitive=Island +id=530159 +rarity=L +[/card] +[card] +primitive=Island +id=530160 +rarity=L +[/card] +[card] +primitive=Island +id=530161 +rarity=L +[/card] +[card] +primitive=Island +id=530162 +rarity=L +[/card] +[card] +primitive=Swamp +id=530163 +rarity=L +[/card] +[card] +primitive=Swamp +id=530164 +rarity=L +[/card] +[card] +primitive=Swamp +id=530165 +rarity=L +[/card] +[card] +primitive=Swamp +id=530166 +rarity=L +[/card] +[card] +primitive=Mountain +id=530167 +rarity=L +[/card] +[card] +primitive=Mountain +id=530168 +rarity=L +[/card] +[card] +primitive=Mountain +id=530169 +rarity=L +[/card] +[card] +primitive=Mountain +id=530170 +rarity=L +[/card] +[card] +primitive=Forest +id=530171 +rarity=L +[/card] +[card] +primitive=Forest +id=530172 +rarity=L +[/card] +[card] +primitive=Forest +id=530173 +rarity=L +[/card] +[card] +primitive=Forest +id=530174 +rarity=L +[/card] +[card] +primitive=Dungeon of the Mad Mage +id=530447 +rarity=T +[/card] +[card] +primitive=Lost Mine of Phandelver +id=530448 +rarity=T +[/card] +[card] +primitive=Tomb of Annihilation +id=530449 +rarity=T +[/card] \ No newline at end of file diff --git a/projects/mtg/bin/Res/sets/ANB/_cards.dat b/projects/mtg/bin/Res/sets/ANB/_cards.dat index 03987bf08..07fbecb0e 100644 --- a/projects/mtg/bin/Res/sets/ANB/_cards.dat +++ b/projects/mtg/bin/Res/sets/ANB/_cards.dat @@ -1,7 +1,7 @@ [meta] author=Wagic Team name=Arena Beginner Set -orderindex=PRO-Z8.ANB +orderindex=PRO-ZA.ANB year=2020-08-13 total=121 [/meta] diff --git a/projects/mtg/bin/Res/sets/HA1/_cards.dat b/projects/mtg/bin/Res/sets/HA1/_cards.dat index 5d4115f44..9dfe19ca3 100644 --- a/projects/mtg/bin/Res/sets/HA1/_cards.dat +++ b/projects/mtg/bin/Res/sets/HA1/_cards.dat @@ -1,7 +1,7 @@ [meta] author=Wagic Team name=Historic Anthology 1 -orderindex=PRO-Z5.HA1 +orderindex=PRO-Z6.HA1 year=2019-11-21 total=22 [/meta] diff --git a/projects/mtg/bin/Res/sets/HA2/_cards.dat b/projects/mtg/bin/Res/sets/HA2/_cards.dat index b5a1dd39c..ea549f359 100644 --- a/projects/mtg/bin/Res/sets/HA2/_cards.dat +++ b/projects/mtg/bin/Res/sets/HA2/_cards.dat @@ -1,7 +1,7 @@ [meta] author=Wagic Team name=Historic Anthology 2 -orderindex=PRO-Z6.HA2 +orderindex=PRO-Z7.HA2 year=2020-03-12 total=28 [/meta] diff --git a/projects/mtg/bin/Res/sets/HA3/_cards.dat b/projects/mtg/bin/Res/sets/HA3/_cards.dat index 232a0b29d..7f26f55d9 100644 --- a/projects/mtg/bin/Res/sets/HA3/_cards.dat +++ b/projects/mtg/bin/Res/sets/HA3/_cards.dat @@ -1,7 +1,7 @@ [meta] author=Wagic Team name=Historic Anthology 3 -orderindex=PRO-Z7.HA3 +orderindex=PRO-Z8.HA3 year=2020-05-21 total=31 [/meta] diff --git a/projects/mtg/bin/Res/sets/HA4/_cards.dat b/projects/mtg/bin/Res/sets/HA4/_cards.dat index db7431c7b..f4c941bed 100644 --- a/projects/mtg/bin/Res/sets/HA4/_cards.dat +++ b/projects/mtg/bin/Res/sets/HA4/_cards.dat @@ -1,7 +1,7 @@ [meta] author=Wagic Team name=Historic Anthology 4 -orderindex=PRO-ZA.HA4 +orderindex=PRO-ZD.HA4 year=2021-03-11 total=30 [/meta] diff --git a/projects/mtg/bin/Res/sets/HA5/_cards.dat b/projects/mtg/bin/Res/sets/HA5/_cards.dat index 302ff56b4..8907cb4f4 100644 --- a/projects/mtg/bin/Res/sets/HA5/_cards.dat +++ b/projects/mtg/bin/Res/sets/HA5/_cards.dat @@ -1,7 +1,7 @@ [meta] author=Wagic Team name=Historic Anthology 5 -orderindex=PRO-ZB.HA5 +orderindex=PRO-ZE.HA5 year=2021-05-27 total=26 [/meta] diff --git a/projects/mtg/bin/Res/sets/HTR18/_cards.dat b/projects/mtg/bin/Res/sets/HTR18/_cards.dat new file mode 100644 index 000000000..ba802a61a --- /dev/null +++ b/projects/mtg/bin/Res/sets/HTR18/_cards.dat @@ -0,0 +1,42 @@ +[meta] +author=Wagic Team +name=Heroes of the Realm 2018 +orderindex=PRO-Z5.HTR18 +year=2019-08-01 +total=6 +[/meta] +[card] +primitive=Human Wizard +id=-296413 +rarity=T +[/card] +[card] +primitive=Human +id=-296410 +rarity=T +[/card] +[card] +primitive=Kharis & the Beholder +id=296410 +rarity=M +[/card] +[card] +primitive=Kharis & the Beholder +id=296410 +rarity=M +[/card] +[card] +primitive=Optimus Prime, Inspiring Leader +id=296411 +rarity=M +[/card] +[card] +primitive=Sol, Advocate Eternal +id=296412 +rarity=M +[/card] +[card] +primitive=The Legend of Arena +id=296413 +rarity=M +[/card] diff --git a/projects/mtg/bin/Res/sets/HTR19/_cards.dat b/projects/mtg/bin/Res/sets/HTR19/_cards.dat new file mode 100644 index 000000000..7c89ec022 --- /dev/null +++ b/projects/mtg/bin/Res/sets/HTR19/_cards.dat @@ -0,0 +1,42 @@ +[meta] +author=Wagic Team +name=Heroes of the Realm 2019 +orderindex=PRO-Z9.HTR19 +year=2020-08-01 +total=7 +[/meta] +[card] +primitive=Collectigull // Only the Best +id=296414 +rarity=M +[/card] +[card] +primitive=Keeper of the Secret Lair +id=296415 +rarity=M +[/card] +[card] +primitive=War of the Spark +id=296416 +rarity=M +[/card] +[card] +primitive=Champions of Archery // Join the Group +id=296417 +rarity=M +[/card] +[card] +primitive=Myntasha, Honored One +id=296418 +rarity=M +[/card] +[card] +primitive=The Cinematic Phoenix +id=296419 +rarity=M +[/card] +[card] +primitive=Fabled Path of Searo Point +id=296420 +rarity=M +[/card] diff --git a/projects/mtg/bin/Res/sets/IMA/_cards.dat b/projects/mtg/bin/Res/sets/IMA/_cards.dat index ecfd1b3bd..ae24cb3d0 100644 --- a/projects/mtg/bin/Res/sets/IMA/_cards.dat +++ b/projects/mtg/bin/Res/sets/IMA/_cards.dat @@ -1,1252 +1,1292 @@ -[meta] -author=Wagic Team -name=Iconic Masters -orderindex=REP-A.IMA -year=2017-11-17 -total=249 -[/meta] -[card] -primitive=Scion of Ugin -id=438567 -rarity=M -[/card] -[card] -primitive=Abzan Battle Priest -id=438568 -rarity=M -[/card] -[card] -primitive=Abzan Falconer -id=438569 -rarity=M -[/card] -[card] -primitive=Ainok Bond-Kin -id=438570 -rarity=M -[/card] -[card] -primitive=Ajani's Pridemate -id=438571 -rarity=M -[/card] -[card] -primitive=Angel of Mercy -id=438572 -rarity=M -[/card] -[card] -primitive=Angelic Accord -id=438573 -rarity=M -[/card] -[card] -primitive=Archangel of Thune -id=438574 -rarity=M -[/card] -[card] -primitive=Auriok Champion -id=438575 -rarity=M -[/card] -[card] -primitive=Austere Command -id=438576 -rarity=M -[/card] -[card] -primitive=Avacyn, Angel of Hope -id=438577 -rarity=M -[/card] -[card] -primitive=Benevolent Ancestor -id=438578 -rarity=M -[/card] -[card] -primitive=Blinding Mage -id=438579 -rarity=M -[/card] -[card] -primitive=Burrenton Forge-Tender -id=438580 -rarity=M -[/card] -[card] -primitive=Disenchant -id=438581 -rarity=M -[/card] -[card] -primitive=Doomed Traveler -id=438582 -rarity=M -[/card] -[card] -primitive=Dragon Bell Monk -id=438583 -rarity=M -[/card] -[card] -primitive=Elesh Norn, Grand Cenobite -id=438584 -rarity=M -[/card] -[card] -primitive=Emerge Unscathed -id=438585 -rarity=M -[/card] -[card] -primitive=Emeria Angel -id=438586 -rarity=M -[/card] -[card] -primitive=Great Teacher's Decree -id=438587 -rarity=M -[/card] -[card] -primitive=Guard Duty -id=438588 -rarity=M -[/card] -[card] -primitive=Guided Strike -id=438589 -rarity=M -[/card] -[card] -primitive=Infantry Veteran -id=438590 -rarity=M -[/card] -[card] -primitive=Iona's Judgment -id=438591 -rarity=M -[/card] -[card] -primitive=Path of Bravery -id=438592 -rarity=M -[/card] -[card] -primitive=Pentarch Ward -id=438593 -rarity=M -[/card] -[card] -primitive=Restoration Angel -id=438594 -rarity=M -[/card] -[card] -primitive=Seeker of the Way -id=438595 -rarity=M -[/card] -[card] -primitive=Serra Angel -id=438596 -rarity=M -[/card] -[card] -primitive=Serra Ascendant -id=438597 -rarity=M -[/card] -[card] -primitive=Stalwart Aven -id=438598 -rarity=M -[/card] -[card] -primitive=Student of Ojutai -id=438599 -rarity=M -[/card] -[card] -primitive=Survival Cache -id=438600 -rarity=M -[/card] -[card] -primitive=Sustainer of the Realm -id=438601 -rarity=M -[/card] -[card] -primitive=Swords to Plowshares -id=438602 -rarity=M -[/card] -[card] -primitive=Topan Freeblade -id=438603 -rarity=M -[/card] -[card] -primitive=Wing Shards -id=438604 -rarity=M -[/card] -[card] -primitive=Yosei, the Morning Star -id=438605 -rarity=M -[/card] -[card] -primitive=Aetherize -id=438606 -rarity=M -[/card] -[card] -primitive=Amass the Components -id=438607 -rarity=M -[/card] -[card] -primitive=Ancestral Vision -id=438608 -rarity=M -[/card] -[card] -primitive=Bewilder -id=438609 -rarity=M -[/card] -[card] -primitive=Cephalid Broker -id=438610 -rarity=M -[/card] -[card] -primitive=Claustrophobia -id=438611 -rarity=M -[/card] -[card] -primitive=Condescend -id=438612 -rarity=M -[/card] -[card] -primitive=Consecrated Sphinx -id=438613 -rarity=M -[/card] -[card] -primitive=Cryptic Command -id=438614 -rarity=M -[/card] -[card] -primitive=Day of the Dragons -id=438615 -rarity=M -[/card] -[card] -primitive=Diminish -id=438616 -rarity=M -[/card] -[card] -primitive=Dissolve -id=438617 -rarity=M -[/card] -[card] -primitive=Distortion Strike -id=438618 -rarity=M -[/card] -[card] -primitive=Doorkeeper -id=438619 -rarity=M -[/card] -[card] -primitive=Elusive Spellfist -id=438620 -rarity=M -[/card] -[card] -primitive=Flusterstorm -id=438621 -rarity=M -[/card] -[card] -primitive=Fog Bank -id=438622 -rarity=M -[/card] -[card] -primitive=Frost Lynx -id=438623 -rarity=M -[/card] -[card] -primitive=Illusory Ambusher -id=438624 -rarity=M -[/card] -[card] -primitive=Illusory Angel -id=438625 -rarity=M -[/card] -[card] -primitive=Jace's Phantasm -id=438626 -rarity=M -[/card] -[card] -primitive=Jhessian Thief -id=438627 -rarity=M -[/card] -[card] -primitive=Jin-Gitaxias, Core Augur -id=438628 -rarity=M -[/card] -[card] -primitive=Keiga, the Tide Star -id=438629 -rarity=M -[/card] -[card] -primitive=Mahamoti Djinn -id=438630 -rarity=M -[/card] -[card] -primitive=Mana Drain -id=438631 -rarity=M -[/card] -[card] -primitive=Mana Leak -id=438632 -rarity=M -[/card] -[card] -primitive=Mnemonic Wall -id=438633 -rarity=M -[/card] -[card] -primitive=Ojutai's Breath -id=438634 -rarity=M -[/card] -[card] -primitive=Phantom Monster -id=438635 -rarity=M -[/card] -[card] -primitive=Repeal -id=438636 -rarity=M -[/card] -[card] -primitive=Riverwheel Aerialists -id=438637 -rarity=M -[/card] -[card] -primitive=Shriekgeist -id=438638 -rarity=M -[/card] -[card] -primitive=Skywise Teachings -id=438639 -rarity=M -[/card] -[card] -primitive=Sphinx of Uthuun -id=438640 -rarity=M -[/card] -[card] -primitive=Teferi, Mage of Zhalfir -id=438641 -rarity=M -[/card] -[card] -primitive=Thought Scour -id=438642 -rarity=M -[/card] -[card] -primitive=Windfall -id=438643 -rarity=M -[/card] -[card] -primitive=Abyssal Persecutor -id=438644 -rarity=M -[/card] -[card] -primitive=Bala Ged Scorpion -id=438645 -rarity=M -[/card] -[card] -primitive=Balustrade Spy -id=438646 -rarity=M -[/card] -[card] -primitive=Bladewing's Thrall -id=438647 -rarity=M -[/card] -[card] -primitive=Bloodghast -id=438648 -rarity=M -[/card] -[card] -primitive=Bogbrew Witch -id=438649 -rarity=M -[/card] -[card] -primitive=Butcher's Glee -id=438650 -rarity=M -[/card] -[card] -primitive=Child of Night -id=438651 -rarity=M -[/card] -[card] -primitive=Dead Reveler -id=438652 -rarity=M -[/card] -[card] -primitive=Doom Blade -id=438653 -rarity=M -[/card] -[card] -primitive=Duress -id=438654 -rarity=M -[/card] -[card] -primitive=Eternal Thirst -id=438655 -rarity=M -[/card] -[card] -primitive=Festering Newt -id=438656 -rarity=M -[/card] -[card] -primitive=Foul-Tongue Invocation -id=438657 -rarity=M -[/card] -[card] -primitive=Grisly Spectacle -id=438658 -rarity=M -[/card] -[card] -primitive=Haunting Hymn -id=438659 -rarity=M -[/card] -[card] -primitive=Indulgent Tormentor -id=438660 -rarity=M -[/card] -[card] -primitive=Kokusho, the Evening Star -id=438661 -rarity=M -[/card] -[card] -primitive=Lord of the Pit -id=438662 -rarity=M -[/card] -[card] -primitive=Mer-Ek Nightblade -id=438663 -rarity=M -[/card] -[card] -primitive=Necropotence -id=438664 -rarity=M -[/card] -[card] -primitive=Night of Souls' Betrayal -id=438665 -rarity=M -[/card] -[card] -primitive=Noxious Dragon -id=438666 -rarity=M -[/card] -[card] -primitive=Ob Nixilis, the Fallen -id=438667 -rarity=M -[/card] -[card] -primitive=Phyrexian Rager -id=438668 -rarity=M -[/card] -[card] -primitive=Rakdos Drake -id=438669 -rarity=M -[/card] -[card] -primitive=Reave Soul -id=438670 -rarity=M -[/card] -[card] -primitive=Rotfeaster Maggot -id=438671 -rarity=M -[/card] -[card] -primitive=Rune-Scarred Demon -id=438672 -rarity=M -[/card] -[card] -primitive=Sanguine Bond -id=438673 -rarity=M -[/card] -[card] -primitive=Sheoldred, Whispering One -id=438674 -rarity=M -[/card] -[card] -primitive=Tavern Swindler -id=438675 -rarity=M -[/card] -[card] -primitive=Thoughtseize -id=438676 -rarity=M -[/card] -[card] -primitive=Thrill-Kill Assassin -id=438677 -rarity=M -[/card] -[card] -primitive=Ulcerate -id=438678 -rarity=M -[/card] -[card] -primitive=Virulent Swipe -id=438679 -rarity=M -[/card] -[card] -primitive=Wight of Precinct Six -id=438680 -rarity=M -[/card] -[card] -primitive=Wrench Mind -id=438681 -rarity=M -[/card] -[card] -primitive=Anger of the Gods -id=438682 -rarity=M -[/card] -[card] -primitive=Battle-Rattle Shaman -id=438683 -rarity=M -[/card] -[card] -primitive=Bogardan Hellkite -id=438684 -rarity=M -[/card] -[card] -primitive=Borderland Marauder -id=438685 -rarity=M -[/card] -[card] -primitive=Charmbreaker Devils -id=438686 -rarity=M -[/card] -[card] -primitive=Coordinated Assault -id=438687 -rarity=M -[/card] -[card] -primitive=Crucible of Fire -id=438688 -rarity=M -[/card] -[card] -primitive=Draconic Roar -id=438689 -rarity=M -[/card] -[card] -primitive=Dragon Egg -id=438690 -rarity=M -[/card] -[card] -primitive=Dragon Tempest -id=438691 -rarity=M -[/card] -[card] -primitive=Dragonlord's Servant -id=438692 -rarity=M -[/card] -[card] -primitive=Earth Elemental -id=438693 -rarity=M -[/card] -[card] -primitive=Fireball -id=438694 -rarity=M -[/card] -[card] -primitive=Furnace Whelp -id=438695 -rarity=M -[/card] -[card] -primitive=Fury Charm -id=438696 -rarity=M -[/card] -[card] -primitive=Guttersnipe -id=438697 -rarity=M -[/card] -[card] -primitive=Hammerhand -id=438698 -rarity=M -[/card] -[card] -primitive=Heat Ray -id=438699 -rarity=M -[/card] -[card] -primitive=Hoarding Dragon -id=438700 -rarity=M -[/card] -[card] -primitive=Keldon Halberdier -id=438701 -rarity=M -[/card] -[card] -primitive=Kiki-Jiki, Mirror Breaker -id=438702 -rarity=M -[/card] -[card] -primitive=Kiln Fiend -id=438703 -rarity=M -[/card] -[card] -primitive=Magus of the Moon -id=438704 -rarity=M -[/card] -[card] -primitive=Mark of Mutiny -id=438705 -rarity=M -[/card] -[card] -primitive=Monastery Swiftspear -id=438706 -rarity=M -[/card] -[card] -primitive=Pillar of Flame -id=438707 -rarity=M -[/card] -[card] -primitive=Prodigal Pyromancer -id=438708 -rarity=M -[/card] -[card] -primitive=Rift Bolt -id=438709 -rarity=M -[/card] -[card] -primitive=Ryusei, the Falling Star -id=438710 -rarity=M -[/card] -[card] -primitive=Scourge of Valkas -id=438711 -rarity=M -[/card] -[card] -primitive=Splatter Thug -id=438712 -rarity=M -[/card] -[card] -primitive=Staggershock -id=438713 -rarity=M -[/card] -[card] -primitive=Surreal Memoir -id=438714 -rarity=M -[/card] -[card] -primitive=Thundermaw Hellkite -id=438715 -rarity=M -[/card] -[card] -primitive=Tormenting Voice -id=438716 -rarity=M -[/card] -[card] -primitive=Trumpet Blast -id=438717 -rarity=M -[/card] -[card] -primitive=Urabrask the Hidden -id=438718 -rarity=M -[/card] -[card] -primitive=Vent Sentinel -id=438719 -rarity=M -[/card] -[card] -primitive=Aerial Predation -id=438720 -rarity=M -[/card] -[card] -primitive=Assault Formation -id=438721 -rarity=M -[/card] -[card] -primitive=Carven Caryatid -id=438722 -rarity=M -[/card] -[card] -primitive=Channel -id=438723 -rarity=M -[/card] -[card] -primitive=Crowned Ceratok -id=438724 -rarity=M -[/card] -[card] -primitive=Curse of Predation -id=438725 -rarity=M -[/card] -[card] -primitive=Durkwood Baloth -id=438726 -rarity=M -[/card] -[card] -primitive=Duskdale Wurm -id=438727 -rarity=M -[/card] -[card] -primitive=Enlarge -id=438728 -rarity=M -[/card] -[card] -primitive=Genesis Hydra -id=438729 -rarity=M -[/card] -[card] -primitive=Genesis Wave -id=438730 -rarity=M -[/card] -[card] -primitive=Greater Basilisk -id=438731 -rarity=M -[/card] -[card] -primitive=Heroes' Bane -id=438732 -rarity=M -[/card] -[card] -primitive=Hunt the Weak -id=438733 -rarity=M -[/card] -[card] -primitive=Hunting Pack -id=438734 -rarity=M -[/card] -[card] -primitive=Inspiring Call -id=438735 -rarity=M -[/card] -[card] -primitive=Ivy Elemental -id=438736 -rarity=M -[/card] -[card] -primitive=Jaddi Offshoot -id=438737 -rarity=M -[/card] -[card] -primitive=Jugan, the Rising Star -id=438738 -rarity=M -[/card] -[card] -primitive=Lead the Stampede -id=438739 -rarity=M -[/card] -[card] -primitive=Lotus Cobra -id=438740 -rarity=M -[/card] -[card] -primitive=Lure -id=438741 -rarity=M -[/card] -[card] -primitive=Nantuko Shaman -id=438742 -rarity=M -[/card] -[card] -primitive=Nature's Claim -id=438743 -rarity=M -[/card] -[card] -primitive=Netcaster Spider -id=438744 -rarity=M -[/card] -[card] -primitive=Obstinate Baloth -id=438745 -rarity=M -[/card] -[card] -primitive=Overgrown Battlement -id=438746 -rarity=M -[/card] -[card] -primitive=Phantom Tiger -id=438747 -rarity=M -[/card] -[card] -primitive=Prey's Vengeance -id=438748 -rarity=M -[/card] -[card] -primitive=Primeval Titan -id=438749 -rarity=M -[/card] -[card] -primitive=Rampaging Baloths -id=438750 -rarity=M -[/card] -[card] -primitive=Search for Tomorrow -id=438751 -rarity=M -[/card] -[card] -primitive=Sultai Flayer -id=438752 -rarity=M -[/card] -[card] -primitive=Timberland Guide -id=438753 -rarity=M -[/card] -[card] -primitive=Undercity Troll -id=438754 -rarity=M -[/card] -[card] -primitive=Vorinclex, Voice of Hunger -id=438755 -rarity=M -[/card] -[card] -primitive=Wall of Roots -id=438756 -rarity=M -[/card] -[card] -primitive=Wildsize -id=438757 -rarity=M -[/card] -[card] -primitive=Azorius Charm -id=438758 -rarity=M -[/card] -[card] -primitive=Bladewing the Risen -id=438759 -rarity=M -[/card] -[card] -primitive=Blizzard Specter -id=438760 -rarity=M -[/card] -[card] -primitive=Blood Baron of Vizkopa -id=438761 -rarity=M -[/card] -[card] -primitive=Chronicler of Heroes -id=438762 -rarity=M -[/card] -[card] -primitive=Corpsejack Menace -id=438763 -rarity=M -[/card] -[card] -primitive=Electrolyze -id=438764 -rarity=M -[/card] -[card] -primitive=Firemane Angel -id=438765 -rarity=M -[/card] -[card] -primitive=Glimpse the Unthinkable -id=438766 -rarity=M -[/card] -[card] -primitive=Hypersonic Dragon -id=438767 -rarity=M -[/card] -[card] -primitive=Jungle Barrier -id=438768 -rarity=M -[/card] -[card] -primitive=Knight of the Reliquary -id=438769 -rarity=M -[/card] -[card] -primitive=Lightning Helix -id=438770 -rarity=M -[/card] -[card] -primitive=Malfegor -id=438771 -rarity=M -[/card] -[card] -primitive=Rosheen Meanderer -id=438772 -rarity=M -[/card] -[card] -primitive=Savageborn Hydra -id=438773 -rarity=M -[/card] -[card] -primitive=Simic Sky Swallower -id=438774 -rarity=M -[/card] -[card] -primitive=Spiritmonger -id=438775 -rarity=M -[/card] -[card] -primitive=Supreme Verdict -id=438776 -rarity=M -[/card] -[card] -primitive=Vizkopa Guildmage -id=438777 -rarity=M -[/card] -[card] -primitive=Aether Vial -id=438778 -rarity=M -[/card] -[card] -primitive=Bubbling Cauldron -id=438779 -rarity=M -[/card] -[card] -primitive=Darksteel Axe -id=438780 -rarity=M -[/card] -[card] -primitive=Dragonloft Idol -id=438781 -rarity=M -[/card] -[card] -primitive=Guardian Idol -id=438782 -rarity=M -[/card] -[card] -primitive=Kolaghan Monument -id=438783 -rarity=M -[/card] -[card] -primitive=Manakin -id=438784 -rarity=M -[/card] -[card] -primitive=Mind Stone -id=438785 -rarity=M -[/card] -[card] -primitive=Mindcrank -id=438786 -rarity=M -[/card] -[card] -primitive=Mishra's Bauble -id=438787 -rarity=M -[/card] -[card] -primitive=Moonglove Extract -id=438788 -rarity=M -[/card] -[card] -primitive=Oblivion Stone -id=438789 -rarity=M -[/card] -[card] -primitive=Palladium Myr -id=438790 -rarity=M -[/card] -[card] -primitive=Pristine Talisman -id=438791 -rarity=M -[/card] -[card] -primitive=Runed Servitor -id=438792 -rarity=M -[/card] -[card] -primitive=Sandstone Oracle -id=438793 -rarity=M -[/card] -[card] -primitive=Serum Powder -id=438794 -rarity=M -[/card] -[card] -primitive=Star Compass -id=438795 -rarity=M -[/card] -[card] -primitive=Thran Dynamo -id=438796 -rarity=M -[/card] -[card] -primitive=Trepanation Blade -id=438797 -rarity=M -[/card] -[card] -primitive=Azorius Chancery -id=438798 -rarity=M -[/card] -[card] -primitive=Boros Garrison -id=438799 -rarity=M -[/card] -[card] -primitive=Dimir Aqueduct -id=438800 -rarity=M -[/card] -[card] -primitive=Evolving Wilds -id=438801 -rarity=M -[/card] -[card] -primitive=Golgari Rot Farm -id=438802 -rarity=M -[/card] -[card] -primitive=Graven Cairns -id=438803 -rarity=M -[/card] -[card] -primitive=Grove of the Burnwillows -id=438804 -rarity=M -[/card] -[card] -primitive=Gruul Turf -id=438805 -rarity=M -[/card] -[card] -primitive=Horizon Canopy -id=438806 -rarity=M -[/card] -[card] -primitive=Izzet Boilerworks -id=438807 -rarity=M -[/card] -[card] -primitive=Nimbus Maze -id=438808 -rarity=M -[/card] -[card] -primitive=Orzhov Basilica -id=438809 -rarity=M -[/card] -[card] -primitive=Radiant Fountain -id=438810 -rarity=M -[/card] -[card] -primitive=Rakdos Carnarium -id=438811 -rarity=M -[/card] -[card] -primitive=River of Tears -id=438812 -rarity=M -[/card] -[card] -primitive=Selesnya Sanctuary -id=438813 -rarity=M -[/card] -[card] -primitive=Shimmering Grotto -id=438814 -rarity=M -[/card] -[card] -primitive=Simic Growth Chamber -id=438815 -rarity=M -[/card] +[meta] +author=Wagic Team +name=Iconic Masters +orderindex=REP-A.IMA +year=2017-11-17 +total=257 +[/meta] +[card] +primitive=Beast +id=-438750 +rarity=T +[/card] +[card] +primitive=Beast +id=-438734 +rarity=T +[/card] +[card] +primitive=Dragon +id=-438690 +rarity=T +[/card] +[card] +primitive=Monk +id=-438639 +rarity=T +[/card] +[card] +primitive=Dragon +id=-438615 +rarity=T +[/card] +[card] +primitive=Bird +id=-438586 +rarity=T +[/card] +[card] +primitive=Spirit +id=-438582 +rarity=T +[/card] +[card] +primitive=Angel +id=-438573 +rarity=T +[/card] +[card] +primitive=Scion of Ugin +id=438567 +rarity=C +[/card] +[card] +primitive=Abzan Battle Priest +id=438568 +rarity=U +[/card] +[card] +primitive=Abzan Falconer +id=438569 +rarity=U +[/card] +[card] +primitive=Ainok Bond-Kin +id=438570 +rarity=C +[/card] +[card] +primitive=Ajani's Pridemate +id=438571 +rarity=U +[/card] +[card] +primitive=Angel of Mercy +id=438572 +rarity=C +[/card] +[card] +primitive=Angelic Accord +id=438573 +rarity=U +[/card] +[card] +primitive=Archangel of Thune +id=438574 +rarity=M +[/card] +[card] +primitive=Auriok Champion +id=438575 +rarity=R +[/card] +[card] +primitive=Austere Command +id=438576 +rarity=R +[/card] +[card] +primitive=Avacyn, Angel of Hope +id=438577 +rarity=M +[/card] +[card] +primitive=Benevolent Ancestor +id=438578 +rarity=C +[/card] +[card] +primitive=Blinding Mage +id=438579 +rarity=C +[/card] +[card] +primitive=Burrenton Forge-Tender +id=438580 +rarity=U +[/card] +[card] +primitive=Disenchant +id=438581 +rarity=C +[/card] +[card] +primitive=Doomed Traveler +id=438582 +rarity=C +[/card] +[card] +primitive=Dragon Bell Monk +id=438583 +rarity=C +[/card] +[card] +primitive=Elesh Norn, Grand Cenobite +id=438584 +rarity=M +[/card] +[card] +primitive=Emerge Unscathed +id=438585 +rarity=C +[/card] +[card] +primitive=Emeria Angel +id=438586 +rarity=R +[/card] +[card] +primitive=Great Teacher's Decree +id=438587 +rarity=U +[/card] +[card] +primitive=Guard Duty +id=438588 +rarity=C +[/card] +[card] +primitive=Guided Strike +id=438589 +rarity=C +[/card] +[card] +primitive=Infantry Veteran +id=438590 +rarity=C +[/card] +[card] +primitive=Iona's Judgment +id=438591 +rarity=C +[/card] +[card] +primitive=Path of Bravery +id=438592 +rarity=R +[/card] +[card] +primitive=Pentarch Ward +id=438593 +rarity=C +[/card] +[card] +primitive=Restoration Angel +id=438594 +rarity=R +[/card] +[card] +primitive=Seeker of the Way +id=438595 +rarity=C +[/card] +[card] +primitive=Serra Angel +id=438596 +rarity=U +[/card] +[card] +primitive=Serra Ascendant +id=438597 +rarity=R +[/card] +[card] +primitive=Stalwart Aven +id=438598 +rarity=C +[/card] +[card] +primitive=Student of Ojutai +id=438599 +rarity=C +[/card] +[card] +primitive=Survival Cache +id=438600 +rarity=C +[/card] +[card] +primitive=Sustainer of the Realm +id=438601 +rarity=C +[/card] +[card] +primitive=Swords to Plowshares +id=438602 +rarity=U +[/card] +[card] +primitive=Topan Freeblade +id=438603 +rarity=U +[/card] +[card] +primitive=Wing Shards +id=438604 +rarity=U +[/card] +[card] +primitive=Yosei, the Morning Star +id=438605 +rarity=R +[/card] +[card] +primitive=Aetherize +id=438606 +rarity=U +[/card] +[card] +primitive=Amass the Components +id=438607 +rarity=C +[/card] +[card] +primitive=Ancestral Vision +id=438608 +rarity=R +[/card] +[card] +primitive=Bewilder +id=438609 +rarity=C +[/card] +[card] +primitive=Cephalid Broker +id=438610 +rarity=U +[/card] +[card] +primitive=Claustrophobia +id=438611 +rarity=C +[/card] +[card] +primitive=Condescend +id=438612 +rarity=U +[/card] +[card] +primitive=Consecrated Sphinx +id=438613 +rarity=M +[/card] +[card] +primitive=Cryptic Command +id=438614 +rarity=R +[/card] +[card] +primitive=Day of the Dragons +id=438615 +rarity=R +[/card] +[card] +primitive=Diminish +id=438616 +rarity=C +[/card] +[card] +primitive=Dissolve +id=438617 +rarity=C +[/card] +[card] +primitive=Distortion Strike +id=438618 +rarity=U +[/card] +[card] +primitive=Doorkeeper +id=438619 +rarity=C +[/card] +[card] +primitive=Elusive Spellfist +id=438620 +rarity=C +[/card] +[card] +primitive=Flusterstorm +id=438621 +rarity=R +[/card] +[card] +primitive=Fog Bank +id=438622 +rarity=U +[/card] +[card] +primitive=Frost Lynx +id=438623 +rarity=C +[/card] +[card] +primitive=Illusory Ambusher +id=438624 +rarity=U +[/card] +[card] +primitive=Illusory Angel +id=438625 +rarity=U +[/card] +[card] +primitive=Jace's Phantasm +id=438626 +rarity=C +[/card] +[card] +primitive=Jhessian Thief +id=438627 +rarity=C +[/card] +[card] +primitive=Jin-Gitaxias, Core Augur +id=438628 +rarity=M +[/card] +[card] +primitive=Keiga, the Tide Star +id=438629 +rarity=R +[/card] +[card] +primitive=Mahamoti Djinn +id=438630 +rarity=U +[/card] +[card] +primitive=Mana Drain +id=438631 +rarity=M +[/card] +[card] +primitive=Mana Leak +id=438632 +rarity=C +[/card] +[card] +primitive=Mnemonic Wall +id=438633 +rarity=C +[/card] +[card] +primitive=Ojutai's Breath +id=438634 +rarity=C +[/card] +[card] +primitive=Phantom Monster +id=438635 +rarity=C +[/card] +[card] +primitive=Repeal +id=438636 +rarity=C +[/card] +[card] +primitive=Riverwheel Aerialists +id=438637 +rarity=C +[/card] +[card] +primitive=Shriekgeist +id=438638 +rarity=C +[/card] +[card] +primitive=Skywise Teachings +id=438639 +rarity=U +[/card] +[card] +primitive=Sphinx of Uthuun +id=438640 +rarity=R +[/card] +[card] +primitive=Teferi, Mage of Zhalfir +id=438641 +rarity=R +[/card] +[card] +primitive=Thought Scour +id=438642 +rarity=C +[/card] +[card] +primitive=Windfall +id=438643 +rarity=U +[/card] +[card] +primitive=Abyssal Persecutor +id=438644 +rarity=R +[/card] +[card] +primitive=Bala Ged Scorpion +id=438645 +rarity=C +[/card] +[card] +primitive=Balustrade Spy +id=438646 +rarity=C +[/card] +[card] +primitive=Bladewing's Thrall +id=438647 +rarity=U +[/card] +[card] +primitive=Bloodghast +id=438648 +rarity=R +[/card] +[card] +primitive=Bogbrew Witch +id=438649 +rarity=U +[/card] +[card] +primitive=Butcher's Glee +id=438650 +rarity=C +[/card] +[card] +primitive=Child of Night +id=438651 +rarity=C +[/card] +[card] +primitive=Dead Reveler +id=438652 +rarity=C +[/card] +[card] +primitive=Doom Blade +id=438653 +rarity=U +[/card] +[card] +primitive=Duress +id=438654 +rarity=C +[/card] +[card] +primitive=Eternal Thirst +id=438655 +rarity=C +[/card] +[card] +primitive=Festering Newt +id=438656 +rarity=C +[/card] +[card] +primitive=Foul-Tongue Invocation +id=438657 +rarity=C +[/card] +[card] +primitive=Grisly Spectacle +id=438658 +rarity=C +[/card] +[card] +primitive=Haunting Hymn +id=438659 +rarity=U +[/card] +[card] +primitive=Indulgent Tormentor +id=438660 +rarity=U +[/card] +[card] +primitive=Kokusho, the Evening Star +id=438661 +rarity=R +[/card] +[card] +primitive=Lord of the Pit +id=438662 +rarity=R +[/card] +[card] +primitive=Mer-Ek Nightblade +id=438663 +rarity=U +[/card] +[card] +primitive=Necropotence +id=438664 +rarity=M +[/card] +[card] +primitive=Night of Souls' Betrayal +id=438665 +rarity=R +[/card] +[card] +primitive=Noxious Dragon +id=438666 +rarity=U +[/card] +[card] +primitive=Ob Nixilis, the Fallen +id=438667 +rarity=M +[/card] +[card] +primitive=Phyrexian Rager +id=438668 +rarity=C +[/card] +[card] +primitive=Rakdos Drake +id=438669 +rarity=C +[/card] +[card] +primitive=Reave Soul +id=438670 +rarity=C +[/card] +[card] +primitive=Rotfeaster Maggot +id=438671 +rarity=C +[/card] +[card] +primitive=Rune-Scarred Demon +id=438672 +rarity=R +[/card] +[card] +primitive=Sanguine Bond +id=438673 +rarity=U +[/card] +[card] +primitive=Sheoldred, Whispering One +id=438674 +rarity=M +[/card] +[card] +primitive=Tavern Swindler +id=438675 +rarity=U +[/card] +[card] +primitive=Thoughtseize +id=438676 +rarity=R +[/card] +[card] +primitive=Thrill-Kill Assassin +id=438677 +rarity=C +[/card] +[card] +primitive=Ulcerate +id=438678 +rarity=U +[/card] +[card] +primitive=Virulent Swipe +id=438679 +rarity=C +[/card] +[card] +primitive=Wight of Precinct Six +id=438680 +rarity=C +[/card] +[card] +primitive=Wrench Mind +id=438681 +rarity=C +[/card] +[card] +primitive=Anger of the Gods +id=438682 +rarity=R +[/card] +[card] +primitive=Battle-Rattle Shaman +id=438683 +rarity=C +[/card] +[card] +primitive=Bogardan Hellkite +id=438684 +rarity=R +[/card] +[card] +primitive=Borderland Marauder +id=438685 +rarity=C +[/card] +[card] +primitive=Charmbreaker Devils +id=438686 +rarity=R +[/card] +[card] +primitive=Coordinated Assault +id=438687 +rarity=U +[/card] +[card] +primitive=Crucible of Fire +id=438688 +rarity=R +[/card] +[card] +primitive=Draconic Roar +id=438689 +rarity=C +[/card] +[card] +primitive=Dragon Egg +id=438690 +rarity=C +[/card] +[card] +primitive=Dragon Tempest +id=438691 +rarity=U +[/card] +[card] +primitive=Dragonlord's Servant +id=438692 +rarity=C +[/card] +[card] +primitive=Earth Elemental +id=438693 +rarity=C +[/card] +[card] +primitive=Fireball +id=438694 +rarity=U +[/card] +[card] +primitive=Furnace Whelp +id=438695 +rarity=C +[/card] +[card] +primitive=Fury Charm +id=438696 +rarity=C +[/card] +[card] +primitive=Guttersnipe +id=438697 +rarity=U +[/card] +[card] +primitive=Hammerhand +id=438698 +rarity=C +[/card] +[card] +primitive=Heat Ray +id=438699 +rarity=C +[/card] +[card] +primitive=Hoarding Dragon +id=438700 +rarity=U +[/card] +[card] +primitive=Keldon Halberdier +id=438701 +rarity=C +[/card] +[card] +primitive=Kiki-Jiki, Mirror Breaker +id=438702 +rarity=M +[/card] +[card] +primitive=Kiln Fiend +id=438703 +rarity=C +[/card] +[card] +primitive=Magus of the Moon +id=438704 +rarity=R +[/card] +[card] +primitive=Mark of Mutiny +id=438705 +rarity=C +[/card] +[card] +primitive=Monastery Swiftspear +id=438706 +rarity=U +[/card] +[card] +primitive=Pillar of Flame +id=438707 +rarity=C +[/card] +[card] +primitive=Prodigal Pyromancer +id=438708 +rarity=U +[/card] +[card] +primitive=Rift Bolt +id=438709 +rarity=U +[/card] +[card] +primitive=Ryusei, the Falling Star +id=438710 +rarity=R +[/card] +[card] +primitive=Scourge of Valkas +id=438711 +rarity=R +[/card] +[card] +primitive=Splatter Thug +id=438712 +rarity=C +[/card] +[card] +primitive=Staggershock +id=438713 +rarity=U +[/card] +[card] +primitive=Surreal Memoir +id=438714 +rarity=U +[/card] +[card] +primitive=Thundermaw Hellkite +id=438715 +rarity=M +[/card] +[card] +primitive=Tormenting Voice +id=438716 +rarity=C +[/card] +[card] +primitive=Trumpet Blast +id=438717 +rarity=C +[/card] +[card] +primitive=Urabrask the Hidden +id=438718 +rarity=M +[/card] +[card] +primitive=Vent Sentinel +id=438719 +rarity=C +[/card] +[card] +primitive=Aerial Predation +id=438720 +rarity=C +[/card] +[card] +primitive=Assault Formation +id=438721 +rarity=U +[/card] +[card] +primitive=Carven Caryatid +id=438722 +rarity=U +[/card] +[card] +primitive=Channel +id=438723 +rarity=M +[/card] +[card] +primitive=Crowned Ceratok +id=438724 +rarity=C +[/card] +[card] +primitive=Curse of Predation +id=438725 +rarity=R +[/card] +[card] +primitive=Durkwood Baloth +id=438726 +rarity=C +[/card] +[card] +primitive=Duskdale Wurm +id=438727 +rarity=C +[/card] +[card] +primitive=Enlarge +id=438728 +rarity=U +[/card] +[card] +primitive=Genesis Hydra +id=438729 +rarity=R +[/card] +[card] +primitive=Genesis Wave +id=438730 +rarity=R +[/card] +[card] +primitive=Greater Basilisk +id=438731 +rarity=C +[/card] +[card] +primitive=Heroes' Bane +id=438732 +rarity=U +[/card] +[card] +primitive=Hunt the Weak +id=438733 +rarity=C +[/card] +[card] +primitive=Hunting Pack +id=438734 +rarity=U +[/card] +[card] +primitive=Inspiring Call +id=438735 +rarity=U +[/card] +[card] +primitive=Ivy Elemental +id=438736 +rarity=C +[/card] +[card] +primitive=Jaddi Offshoot +id=438737 +rarity=C +[/card] +[card] +primitive=Jugan, the Rising Star +id=438738 +rarity=R +[/card] +[card] +primitive=Lead the Stampede +id=438739 +rarity=C +[/card] +[card] +primitive=Lotus Cobra +id=438740 +rarity=R +[/card] +[card] +primitive=Lure +id=438741 +rarity=U +[/card] +[card] +primitive=Nantuko Shaman +id=438742 +rarity=C +[/card] +[card] +primitive=Nature's Claim +id=438743 +rarity=C +[/card] +[card] +primitive=Netcaster Spider +id=438744 +rarity=C +[/card] +[card] +primitive=Obstinate Baloth +id=438745 +rarity=R +[/card] +[card] +primitive=Overgrown Battlement +id=438746 +rarity=U +[/card] +[card] +primitive=Phantom Tiger +id=438747 +rarity=C +[/card] +[card] +primitive=Prey's Vengeance +id=438748 +rarity=C +[/card] +[card] +primitive=Primeval Titan +id=438749 +rarity=M +[/card] +[card] +primitive=Rampaging Baloths +id=438750 +rarity=R +[/card] +[card] +primitive=Search for Tomorrow +id=438751 +rarity=C +[/card] +[card] +primitive=Sultai Flayer +id=438752 +rarity=U +[/card] +[card] +primitive=Timberland Guide +id=438753 +rarity=C +[/card] +[card] +primitive=Undercity Troll +id=438754 +rarity=U +[/card] +[card] +primitive=Vorinclex, Voice of Hunger +id=438755 +rarity=M +[/card] +[card] +primitive=Wall of Roots +id=438756 +rarity=C +[/card] +[card] +primitive=Wildsize +id=438757 +rarity=C +[/card] +[card] +primitive=Azorius Charm +id=438758 +rarity=U +[/card] +[card] +primitive=Bladewing the Risen +id=438759 +rarity=U +[/card] +[card] +primitive=Blizzard Specter +id=438760 +rarity=U +[/card] +[card] +primitive=Blood Baron of Vizkopa +id=438761 +rarity=R +[/card] +[card] +primitive=Chronicler of Heroes +id=438762 +rarity=U +[/card] +[card] +primitive=Corpsejack Menace +id=438763 +rarity=U +[/card] +[card] +primitive=Electrolyze +id=438764 +rarity=U +[/card] +[card] +primitive=Firemane Angel +id=438765 +rarity=R +[/card] +[card] +primitive=Glimpse the Unthinkable +id=438766 +rarity=R +[/card] +[card] +primitive=Hypersonic Dragon +id=438767 +rarity=R +[/card] +[card] +primitive=Jungle Barrier +id=438768 +rarity=U +[/card] +[card] +primitive=Knight of the Reliquary +id=438769 +rarity=R +[/card] +[card] +primitive=Lightning Helix +id=438770 +rarity=U +[/card] +[card] +primitive=Malfegor +id=438771 +rarity=R +[/card] +[card] +primitive=Rosheen Meanderer +id=438772 +rarity=U +[/card] +[card] +primitive=Savageborn Hydra +id=438773 +rarity=R +[/card] +[card] +primitive=Simic Sky Swallower +id=438774 +rarity=R +[/card] +[card] +primitive=Spiritmonger +id=438775 +rarity=R +[/card] +[card] +primitive=Supreme Verdict +id=438776 +rarity=R +[/card] +[card] +primitive=Vizkopa Guildmage +id=438777 +rarity=U +[/card] +[card] +primitive=Aether Vial +id=438778 +rarity=R +[/card] +[card] +primitive=Bubbling Cauldron +id=438779 +rarity=U +[/card] +[card] +primitive=Darksteel Axe +id=438780 +rarity=C +[/card] +[card] +primitive=Dragonloft Idol +id=438781 +rarity=U +[/card] +[card] +primitive=Guardian Idol +id=438782 +rarity=C +[/card] +[card] +primitive=Kolaghan Monument +id=438783 +rarity=U +[/card] +[card] +primitive=Manakin +id=438784 +rarity=C +[/card] +[card] +primitive=Mind Stone +id=438785 +rarity=C +[/card] +[card] +primitive=Mindcrank +id=438786 +rarity=U +[/card] +[card] +primitive=Mishra's Bauble +id=438787 +rarity=U +[/card] +[card] +primitive=Moonglove Extract +id=438788 +rarity=C +[/card] +[card] +primitive=Oblivion Stone +id=438789 +rarity=R +[/card] +[card] +primitive=Palladium Myr +id=438790 +rarity=U +[/card] +[card] +primitive=Pristine Talisman +id=438791 +rarity=U +[/card] +[card] +primitive=Runed Servitor +id=438792 +rarity=C +[/card] +[card] +primitive=Sandstone Oracle +id=438793 +rarity=U +[/card] +[card] +primitive=Serum Powder +id=438794 +rarity=R +[/card] +[card] +primitive=Star Compass +id=438795 +rarity=C +[/card] +[card] +primitive=Thran Dynamo +id=438796 +rarity=U +[/card] +[card] +primitive=Trepanation Blade +id=438797 +rarity=U +[/card] +[card] +primitive=Azorius Chancery +id=438798 +rarity=U +[/card] +[card] +primitive=Boros Garrison +id=438799 +rarity=U +[/card] +[card] +primitive=Dimir Aqueduct +id=438800 +rarity=U +[/card] +[card] +primitive=Evolving Wilds +id=438801 +rarity=C +[/card] +[card] +primitive=Golgari Rot Farm +id=438802 +rarity=U +[/card] +[card] +primitive=Graven Cairns +id=438803 +rarity=R +[/card] +[card] +primitive=Grove of the Burnwillows +id=438804 +rarity=R +[/card] +[card] +primitive=Gruul Turf +id=438805 +rarity=U +[/card] +[card] +primitive=Horizon Canopy +id=438806 +rarity=R +[/card] +[card] +primitive=Izzet Boilerworks +id=438807 +rarity=U +[/card] +[card] +primitive=Nimbus Maze +id=438808 +rarity=R +[/card] +[card] +primitive=Orzhov Basilica +id=438809 +rarity=U +[/card] +[card] +primitive=Radiant Fountain +id=438810 +rarity=C +[/card] +[card] +primitive=Rakdos Carnarium +id=438811 +rarity=U +[/card] +[card] +primitive=River of Tears +id=438812 +rarity=R +[/card] +[card] +primitive=Selesnya Sanctuary +id=438813 +rarity=U +[/card] +[card] +primitive=Shimmering Grotto +id=438814 +rarity=C +[/card] +[card] +primitive=Simic Growth Chamber +id=438815 +rarity=U +[/card] diff --git a/projects/mtg/bin/Res/sets/PLIST/_cards.dat b/projects/mtg/bin/Res/sets/PLIST/_cards.dat index 34c6cb64c..428c63b6a 100644 --- a/projects/mtg/bin/Res/sets/PLIST/_cards.dat +++ b/projects/mtg/bin/Res/sets/PLIST/_cards.dat @@ -1,7 +1,7 @@ [meta] author=Wagic Team name=The List -orderindex=PRO-ZA.PLIST +orderindex=PRO-ZC.PLIST year=2020-09-26 total=336 [/meta] diff --git a/projects/mtg/bin/Res/sets/STA/_cards.dat b/projects/mtg/bin/Res/sets/STA/_cards.dat index 52739b530..0fcc27cf3 100644 --- a/projects/mtg/bin/Res/sets/STA/_cards.dat +++ b/projects/mtg/bin/Res/sets/STA/_cards.dat @@ -1,7 +1,7 @@ [meta] author=Wagic Team name=Strixhaven Mystical Archive -orderindex=EXP-ZZJ.STA +orderindex=EXP-K.STA year=2021-04-23 total=63 [/meta] diff --git a/projects/mtg/bin/Res/sets/STX/_cards.dat b/projects/mtg/bin/Res/sets/STX/_cards.dat index 3f06124d5..cb8093235 100644 --- a/projects/mtg/bin/Res/sets/STX/_cards.dat +++ b/projects/mtg/bin/Res/sets/STX/_cards.dat @@ -1,7 +1,7 @@ [meta] author=Wagic Team name=Strixhaven: School of Mages -orderindex=EXP-ZZI.STX +orderindex=REP-J.STX year=2021-04-23 total=340 [/meta] diff --git a/projects/mtg/bin/Res/sets/ZNE/_cards.dat b/projects/mtg/bin/Res/sets/ZNE/_cards.dat index f9f1d5448..0ecd0acad 100644 --- a/projects/mtg/bin/Res/sets/ZNE/_cards.dat +++ b/projects/mtg/bin/Res/sets/ZNE/_cards.dat @@ -1,7 +1,7 @@ [meta] author=Wagic Team name=Zendikar Rising Expeditions -orderindex=PRO-Z9.ZNE +orderindex=PRO-ZB.ZNE year=2020-09-25 total=30 [/meta] diff --git a/projects/mtg/bin/Res/sets/primitives/_macros.txt b/projects/mtg/bin/Res/sets/primitives/_macros.txt index bfc2ceb9c..2f28f0c11 100644 --- a/projects/mtg/bin/Res/sets/primitives/_macros.txt +++ b/projects/mtg/bin/Res/sets/primitives/_macros.txt @@ -61,10 +61,11 @@ $AUTO_DEFINE _CLASH_ Put here a code if compare the casting cost based on Errati #AUTO_DEFINE _METALCRAFT_ aslongas(artifact|mybattlefield) >2 # Proliferate -#AUTO_DEFINE _PROLIFERATE_ name(Proliferate) notAtarget(*) propagate +#AUTO_DEFINE _PROLIFERATE_ name(Proliferate) notatarget(*) duplicatecounters(single) # Proliferate, still need to target players since the old code doesn't work (*[artifact;creature;...;players]) just let you target creature and player -#AUTO_DEFINE _OLDPROLIFERATE_ name(proliferate) notatarget(*) proliferate +#AUTO_DEFINE _OLDPROLIFERATE_ name(Proliferate) notAtarget(*) propagate +#AUTO_DEFINE _OLDOLDPROLIFERATE_ name(proliferate) notatarget(*) proliferate # Populate #AUTO_DEFINE _POPULATE_ name(Populate) clone notAtarget(creature[token]|myBattlefield) diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index f91fd4f80..e76f8652b 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -1,7 +1,16 @@ grade=borderline #Bordeline Primitives Pack for Wagic the Homebrew. #Please keep these card alphabetized, and try to have the "name=" line at the top of each card -#I sorted this programatically - Vitty85 16-06-2021 +#I sorted this programatically - Vitty85 16-07-2021 +[card] +name=+2 Mace +auto={3}:equip +auto=teach(creature) 2/2 +text=Equipped creature gets +2/+2. -- Equip {3} ({3}: Attach to target creature you control. Equip only as a sorcery.) +mana={1}{W} +type=Artifact +subtype=Equipment +[/card] [card] name=AEther Rift auto=@each my upkeep restriction{compare(phandcount)~equalto~1}:all(*|myhand) moveto(mygraveyard) and!( counter(0/0,1,RiftEffect) )! @@ -36,6 +45,16 @@ mana={X}{1}{B} type=Sorcery [/card] [card] +name=Aberrant Mind Sorcerer +auto=target(*[instant;sorcery]|mygraveyard) name(Choose instant or sorcery and roll a d20) rolld20 20 winability moveto(myhand) winabilityend loseability if compare(lastrollresult)~lessthan~10 then may name(Put on top) moveTo(mylibrary) else moveto(myhand) loseabilityend rolld20end +text=Psionic Spells — When Aberrant Mind Sorcerer enters the battlefield, choose target instant or sorcery card in your graveyard, then roll a d20. -- 1-9 | You may put that card on top of your library. -- 10-20 | Return that card to your hand. +mana={4}{U} +type=Creature +subtype=Human Elf Shaman +power=3 +toughness=4 +[/card] +[card] name=Abiding Grace auto=@each my endofturn:transforms((,newability[if type(creature[manacost=1]|myGraveyard)~equalto~0 then name(Gain 1 life) name(Gain 1 life) life:1 controller],newability[if type(creature[manacost=1]|myGraveyard)~morethan~0 then choice name(Gain 1 life) name(Gain 1 life) life:1 controller],newability[if type(creature[manacost=1]|myGraveyard)~morethan~0 then choice name(Return creature) name(Return creature) target(creature[manacost=1]|myGraveyard) moveto(myBattlefield)])) oneshot text=At the beginning of your end step, choose one — -- • You gain 1 life. -- • Return target creature card with mana value 1 from your graveyard to the battlefield. @@ -82,6 +101,18 @@ mana={1}{R} type=Instant [/card] [card] +name=Absolver Thrull +auto=name(Destroy enchantment) target(enchantment|battlefield) destroy +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.ThrullHaunted)])) oneshot )!])) oneshot +autoexile=@movedto(creature[counter{0/0.1.ThrullHaunted}]|graveyard) from(battlefield) once:name(Destroy enchantment) target(enchantment|battlefield) destroy +text=Haunt (When this creature dies, exile it haunting target creature.) -- When Absolver Thrull enters the battlefield or the creature it haunts dies, destroy target enchantment. +mana={3}{W} +type=Creature +subtype=Thrull Cleric +power=2 +toughness=3 +[/card] +[card] name=Absorb Identity target=creature auto=moveto(ownerhand) and!( transforms((,newability[counter(0/0.1.AbsorbEffect)],newability[phaseaction[endofturn once] counter(0/0.-1.AbsorbEffect)])) forever )! @@ -195,7 +226,7 @@ type=Land [/card] [card] name=Acclaimed Contender -auto=activate transforms((,newability[if type(knight|mybattlefield)~morethan~1 then target(*[aura;knight;equipment;legendary artifact;zpos<=5]|myLibrary) moveTo(myHand) and!( all(other *[zpos<=5]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )!])) oneshot +aicode=activate transforms((,newability[if type(knight|mybattlefield)~morethan~1 then target(*[aura;knight;equipment;legendary artifact;zpos<=5]|myLibrary) moveTo(myHand) and!( all(other *[zpos<=5]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )!])) oneshot auto=if type(knight|mybattlefield)~morethan~1 then name(Look 5 cards) reveal:5 optionone name(Get a card) target(*[aura;knight;equipment;legendary artifact]|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend text=When Acclaimed Contender enters the battlefield, if you control another Knight, look at the top five cards of your library. You may reveal a Knight, Aura, Equipment, or legendary artifact card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. mana={2}{W} @@ -234,6 +265,19 @@ power=3 toughness=3 [/card] [card] +name=Acererak the Archlich +auto=if type(Tomb of Annihilation[dungeoncompleted]|myzones)~equalto~0 then if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +auto=if type(Tomb of Annihilation[dungeoncompleted]|myzones)~equalto~0 then name(Return to hand) moveTo(ownerhand) +auto=@combat(attacking) source(this) restriction{type(creature|opponentbattlefield)~morethan~0}:ability$!name(Choose one) choice name(Sacrifice a creature) notatarget(creature|mybattlefield) sacrifice _ choice name(Opponent create Zombie) token(Zombie) opponent!$ opponent +auto=@combat(attacking) source(this) restriction{type(creature|opponentbattlefield)~equalto~0}:name(Create zombie) token(Zombie) controller +text=When Acererak the Archlich enters the battlefield, if you have not completed the dungeon Tomb of Annihilation, return Acererak the Archlich to its owner’s hand and venture into the dungeon. -- Whenever Acererak the Archlich attacks, for each opponent, you create a 2/2 black Zombie creature token unless that player sacrifices a creature. +mana={2}{B} +type=Legendary Creature +subtype=Zombie Wizard +power=5 +toughness=5 +[/card] +[card] name=Acolyte of Affliction auto=deplete:2 controller && may moveTo(myHand) target(*[-sorcery;-instant]|myGraveyard) oneshot text=When Acolyte of Affliction enters the battlefield, put the top two cards of your library into your graveyard, then you may return a permanent card from your graveyard to your hand. @@ -282,7 +326,7 @@ type=Instant [/card] [card] name=Adanto Vanguard -auto=@combat(attacking) source(this):2/0 +auto=this(attacking) 2/0 auto={L:4}:indestructible ueot text=As long as Adanto Vanguard is attacking, it gets +2/+0. -- Pay 4 life: Adanto Vanguard gains indestructible until end of turn. (Damage and effects that say "destroy" don't destroy it.) mana={1}{W} @@ -376,7 +420,7 @@ type=Instant [/card] [card] name=Adorable Kitten -auto=rolladie 6 winability life:lastrollresult controller winabilityend loseability life:lastrollresult controller loseabilityend rollend +auto=rolld6 6 winability life:lastrollresult controller winabilityend loseability life:lastrollresult controller loseabilityend rolld6end text=When this creature enters the battlefield, roll a six-sided die. You gain life equal to the result. mana={W} type=Host Creature @@ -408,7 +452,7 @@ 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=@targeted(this) from(*|opponentzones):choice name(This spell costs 2 more) name(This spell costs 2 more) target(*|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} @@ -418,8 +462,18 @@ power=2 toughness=2 [/card] [card] +name=Adult Gold Dragon +abilities=flying,lifelink,haste +text=Flying, lifelink, haste +mana={3}{R}{W} +type=Creature +subtype=Dragon +power=4 +toughness=3 +[/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 +aicode=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 auto=if type(creature[zpos<=5]|myLibrary)~equalto~0 then name(Look 5 cards) reveal:5 optionone name(Put on bottom) target(*|reveal) bottomoflibrary and!( draw:1 controller )! optiononeend optiontwo name(put on bottom) all(*|reveal) bottomoflibrary optiontwoend revealend text=Look at the top five cards of your library. You may reveal a creature card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. If you didn't put a card into your hand this way, draw a card. @@ -428,7 +482,7 @@ type=Sorcery [/card] [card] name=Adventurous Impulse -auto=activate transforms((,newability[target(*[creature;land;zpos<=3]|myLibrary) moveTo(myHand) and!( all(other *[zpos<=3]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )!])) oneshot +aicode=activate transforms((,newability[target(*[creature;land;zpos<=3]|myLibrary) moveTo(myHand) and!( all(other *[zpos<=3]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )!])) oneshot auto=name(Look top 3 cards) reveal:3 optionone name(Get creature or land) target(*[creature;land]|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend text=Look at the top three cards of your library. You may reveal a creature or land card from among them and put it into your hand. Put the rest on the bottom of your library in any order. mana={G} @@ -828,6 +882,17 @@ mana={1}{B} type=Sorcery [/card] [card] +name=Air-Cult Elemental +abilities=flying +auto=may name(Return creature) target(other creature|battlefield) moveto(ownerhand) +text=Flying -- Whirlwind — When Air-Cult Elemental enters the battlefield, return up to one other target creature to its owner’s hand. +mana={4}{U}{U} +type=Creature +subtype=Elemental +power=2 +toughness=5 +[/card] +[card] name=Ajani's Aid auto=moveto(myhand) target(Ajani^ Valiant Protector|mylibrary) auto=moveto(myhand) target(Ajani^ Valiant Protector|mygraveyard) @@ -1667,7 +1732,7 @@ toughness=4 name=Angel of Vitality abilities=flying,lifefaker auto=this(controllerlife > 24) 2/2 -auto=@lifeof(player) from(*[-lifefaker]):life:1 controller +auto=@lifeof(player) from(*[-lifefaker]|*):life:1 controller text=Flying -- If you would gain life, you gain that much life plus 1 instead. -- Angel of Vitality gets +2/+2 as long as you have 25 or more life. mana={2}{W} type=Creature @@ -1929,6 +1994,26 @@ power=3 toughness=3 [/card] [card] +name=Annihilation Rooms +abilities=doublefacedeath +other={0} name(Sandfall Cell) +kicker={0} name(Veils of Fear) +auto=count(type:*[twodngtrg]:myBattlefield) +auto=ifnot paid(kicker) then ifnot paid(alternative) then all(Tomb of Annihilation|mycommandzone) counter(0/0,1,Oubliette) notrg +auto=ifnot paid(kicker) then ifnot paid(alternative) then thisforeach(variable{countedamountplus1plusend}) ability$!name(Discard a card) name(Discard a card) notatarget(*|myhand) reject!$ controller +auto=ifnot paid(kicker) then ifnot paid(alternative) then thisforeach(variable{countedamountplus1plusend}) ability$!name(Sacrifice an artifact) name(Sacrifice an artifact) target(artifact|mybattlefield) sacrifice!$ controller +auto=ifnot paid(kicker) then ifnot paid(alternative) then thisforeach(variable{countedamountplus1plusend}) ability$!name(Sacrifice a creature) name(Sacrifice a creature) target(creature|mybattlefield) sacrifice!$ controller +auto=ifnot paid(kicker) then ifnot paid(alternative) then thisforeach(variable{countedamountplus1plusend}) ability$!name(Sacrifice a land) name(Sacrifice a land) target(land|mybattlefield) sacrifice!$ controller +auto=ifnot paid(kicker) then if paid(alternative) then ability$!name(Sacrifice an artifact) name(Sacrifice an artifact) target(artifact|mybattlefield) sacrifice!$ controller +auto=ifnot paid(kicker) then if paid(alternative) then ability$!name(Sacrifice a creature) name(Sacrifice a creature) target(creature|mybattlefield) sacrifice!$ controller +auto=ifnot paid(kicker) then if paid(alternative) then ability$!name(Sacrifice a land) name(Sacrifice a land) target(land|mybattlefield) sacrifice!$ controller +auto=if paid(kicker) then if type(*|opponenthand)~equalto~0 then thisforeach(variable{countedamountplus1plusend}) ability$!name(Loose 2 life) name(Loose 2 life) life:-2 controller!$ opponent +auto=if paid(kicker) then if type(*|opponenthand)~morethan~0 then thisforeach(variable{countedamountplus1plusend}) ability$!name(Loose life or discard) choice name(Loose 2 life) life:-2 controller _ choice name(Discard a card) notatarget(*|myhand) reject!$ opponent +auto=if paid(kicker) then if type(*|myhand)~equalto~0 then thisforeach(variable{countedamountplus1plusend}) ability$!name(Loose 2 life) name(Loose 2 life) life:-2 controller!$ controller +auto=if paid(kicker) then if type(*|myhand)~morethan~0 then thisforeach(variable{countedamountplus1plusend}) ability$!name(Loose life or discard) choice name(Loose 2 life) life:-2 controller _ choice name(Discard a card) notatarget(*|myhand) reject!$ controller +type=Instant +[/card] +[card] name=Annoyed Altisaur abilities=reach,trample autostack=if casted(this) then activate choice cascade:plibrarycount @@ -2230,6 +2315,17 @@ mana={G} type=Instant [/card] [card] +name=Arborea Pegasus +abilities=flying +auto=name(Put 1/1 counter) target(creature|battlefield) transforms((,newability[counter(1/1)],newability[flying])) ueot +text=Flying -- When Arborea Pegasus enters the battlefield, target creature gets +1/+1 and gains flying until end of turn. +mana={3}{W} +type=Creature +subtype=Pegasus +power=2 +toughness=3 +[/card] +[card] name=Arboreal Grazer abilities=reach auto=may moveTo(myBattlefield) and!(tap(noevent))! target(land|myhand) @@ -2302,6 +2398,22 @@ mana={3} type=Artifact [/card] [card] +name=Arcane Endeavor +auto=all(*[zpos=9]|mylibrary) transforms((,newability[@dierolled(this|mylibrary) result(1) from(controller) once:may name(Cast instant or sorcery) target(*[instant;sorcery;manacost<=1]|myhand) activate castcard(normal)])) oneshot +auto=all(*[zpos=9]|mylibrary) transforms((,newability[@dierolled(this|mylibrary) result(2) from(controller) once:may name(Cast instant or sorcery) target(*[instant;sorcery;manacost<=2]|myhand) activate castcard(normal)])) oneshot +auto=all(*[zpos=9]|mylibrary) transforms((,newability[@dierolled(this|mylibrary) result(3) from(controller) once:may name(Cast instant or sorcery) target(*[instant;sorcery;manacost<=3]|myhand) activate castcard(normal)])) oneshot +auto=all(*[zpos=9]|mylibrary) transforms((,newability[@dierolled(this|mylibrary) result(4) from(controller) once:may name(Cast instant or sorcery) target(*[instant;sorcery;manacost<=4]|myhand) activate castcard(normal)])) oneshot +auto=all(*[zpos=9]|mylibrary) transforms((,newability[@dierolled(this|mylibrary) result(5) from(controller) once:may name(Cast instant or sorcery) target(*[instant;sorcery;manacost<=5]|myhand) activate castcard(normal)])) oneshot +auto=all(*[zpos=9]|mylibrary) transforms((,newability[@dierolled(this|mylibrary) result(6) from(controller) once:may name(Cast instant or sorcery) target(*[instant;sorcery;manacost<=6]|myhand) activate castcard(normal)])) oneshot +auto=all(*[zpos=9]|mylibrary) transforms((,newability[@dierolled(this|mylibrary) result(7) from(controller) once:may name(Cast instant or sorcery) target(*[instant;sorcery;manacost<=7]|myhand) activate castcard(normal)])) oneshot +auto=all(*[zpos=9]|mylibrary) transforms((,newability[@dierolled(this|mylibrary) result(8) from(controller) once:may name(Cast instant or sorcery) target(*[instant;sorcery;manacost<=8]|myhand) activate castcard(normal)])) oneshot +auto=all(*[zpos=9]|mylibrary) transforms((,newability[name(Roll a d8) rolld8 8 winability donothing winabilityend rolld8end])) oneshot +auto=name(Roll a d8) rolld8 8 winability draw:lastrollresult controller winabilityend loseability draw:lastrollresult controller loseabilityend rolld8end +text=Roll two d8 and choose one result. Draw cards equal to that result. Then you may cast an instant or sorcery spell with mana value less than or equal to the other result from your hand without paying its mana cost. +mana={5}{U}{U} +type=Sorcery +[/card] +[card] name=Arcane Flight target=creature auto=teach(creature) +1/+1 @@ -2312,6 +2424,38 @@ type=Enchantment subtype=Aura [/card] [card] +name=Arcane Investigator +aicode=activate target(*[zpos<=3]|mylibrary) moveto(myhand) and!( transforms((,newability[all(*[zpos<=3]|mylibrary) moveto(myreveal) and!( bottomoflibrary )!])) oneshot )! +auto={5}{U}:name(Roll a d20) rolld20 20 winability donothing winabilityend rolld20end +auto=@dierolled(this) from(controller):all(this) sacrifice +auto=@dierolled(this) result(1) from(controller):name(Draw 1 card) draw:1 controller +auto=@dierolled(this) result(2) from(controller):name(Draw 1 card) draw:1 controller +auto=@dierolled(this) result(3) from(controller):name(Draw 1 card) draw:1 controller +auto=@dierolled(this) result(4) from(controller):name(Draw 1 card) draw:1 controller +auto=@dierolled(this) result(5) from(controller):name(Draw 1 card) draw:1 controller +auto=@dierolled(this) result(6) from(controller):name(Draw 1 card) draw:1 controller +auto=@dierolled(this) result(7) from(controller):name(Draw 1 card) draw:1 controller +auto=@dierolled(this) result(8) from(controller):name(Draw 1 card) draw:1 controller +auto=@dierolled(this) result(9) from(controller):name(Draw 1 card) draw:1 controller +auto=@dierolled(this) result(10) from(controller):name(Look top 3) reveal:3 optionone name(Get a card) target(*|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend +auto=@dierolled(this) result(11) from(controller):name(Look top 3) reveal:3 optionone name(Get a card) target(*|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend +auto=@dierolled(this) result(12) from(controller):name(Look top 3) reveal:3 optionone name(Get a card) target(*|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend +auto=@dierolled(this) result(13) from(controller):name(Look top 3) reveal:3 optionone name(Get a card) target(*|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend +auto=@dierolled(this) result(14) from(controller):name(Look top 3) reveal:3 optionone name(Get a card) target(*|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend +auto=@dierolled(this) result(15) from(controller):name(Look top 3) reveal:3 optionone name(Get a card) target(*|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend +auto=@dierolled(this) result(16) from(controller):name(Look top 3) reveal:3 optionone name(Get a card) target(*|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend +auto=@dierolled(this) result(17) from(controller):name(Look top 3) reveal:3 optionone name(Get a card) target(*|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend +auto=@dierolled(this) result(18) from(controller):name(Look top 3) reveal:3 optionone name(Get a card) target(*|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend +auto=@dierolled(this) result(19) from(controller):name(Look top 3) reveal:3 optionone name(Get a card) target(*|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend +auto=@dierolled(this) result(20) from(controller):name(Look top 3) reveal:3 optionone name(Get a card) target(*|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend +text=Search the Room — {5}{U}: Roll a d20. -- 1-9 | Draw a card. -- 10-20 | Look at the top three cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order. +mana={1}{U} +type=Creature +subtype=Elf Wizard +power=2 +toughness=1 +[/card] +[card] name=Arcane Lighthouse auto={T}:add{1} auto={1}{T}: all(creature|opponentbattlefield) -opponentshroud ueot && all(creature|opponentbattlefield) -shroud ueot @@ -2966,6 +3110,16 @@ power=0 toughness=5 [/card] [card] +name=Armory Veteran +auto=this(gear > 0) menace +text=As long as Armory Veteran is equipped, it has menace. (It can’t be blocked except by two or more creatures.) +mana={1}{R} +type=Creature +subtype=Orc Warrior +power=2 +toughness=2 +[/card] +[card] name=Arni Brokenbrow abilities=boast,haste auto={1} restriction{didattack,compare(hascntbstreduce)~equalto~0,type(creature[-Arni Brokenbrow]|mybattlefield)~morethan~0}:doboast && transforms((,setpower=power:highest:*[-Arni Brokenbrow]:mybattlefieldplus1plusend)) ueot limit:hasabilitytwoboastplus1plusend @@ -3196,6 +3350,18 @@ power=3 toughness=5 [/card] [card] +name=Asmodeus the Archfiend +auto=replacedraw transforms((,newability[all(*[zpos=1]|mylibrary) moveto(myexile) and!( counter(0/0.1.AsmodeusExiled) )!])) oneshot +auto={B}{B}{B}:name(Draw 7 cards) all(*[zpos<=7]|mylibrary) moveto(myexile) and!( counter(0/0.1.AsmodeusExiled) )! +auto={B}:name(Return exiled cards) all(*[counter{0/0.1.AsmodeusExiled}]|myexile) transforms((,newability[moveto(ownerhand)],newability[life:-1 controller])) oneshot +text=Binding Contract — If you would draw a card, exile the top card of your library face down instead. -- {B}{B}{B}: Draw seven cards. -- {B}: Return all cards exiled with Asmodeus the Archfiend to their owner’s hand and you lose that much life. +mana={4}{B}{B} +type=Legendary Creature +subtype=Devil God +power=6 +toughness=6 +[/card] +[card] name=Asmoranomardicadaistinaculdacar other={BR} name(Cast Asmoranomardicadaistinaculdacar) otherrestriction=compare(hascntdscrd)~morethan~0 @@ -4003,7 +4169,7 @@ toughness=2 [/card] [card] name=Azra Oddsmaker -auto=@each my combatbegins:may ability$!name(discard) reject notatarget(*|myhand)!$:target(creature) transforms((,newability[@combatdamaged(player) from(this):draw:2 controller])) ueot +auto=@each my combatbegins:may name(Discard a card) target(*|myhand) reject and!( transforms((,newability[name(Choose a creature) target(creature) transforms((,newability[@combatdamaged(player) from(this):draw:2 controller])) ueot])) oneshot )! text=At the beginning of combat on your turn, you may discard a card. If you do, choose a creature. Whenever that creature deals combat damage to a player this turn, you draw two cards. mana={1}{B}{R} type=Creature @@ -4037,7 +4203,7 @@ toughness=3 name=Back for More target=creature|myGraveyard auto=moveTo(myBattlefield) -auto=transforms((,newablility[target(creature|opponentBattlefield) dynamicability])) ueot +auto=transforms((,newability[target(creature|opponentBattlefield) dynamicability])) ueot text=Return target creature card from your graveyard to the battlefield. When you do, it fights up to one target creature you don't control. (Each deals damage equal to its power to the other.) mana={4}{B}{G} type=Instant @@ -4072,6 +4238,17 @@ mana={1}{W} type=Enchantment [/card] [card] +name=Bag of Devouring +auto=@sacrificed(other artifact[-token]|mybattlefield):name(Exile artifact) transforms((,newability[name(Exile artifact) all(*[zpos=type:*:mygraveyard]|mygraveyard) moveto(ownerexile) and!( counter(0/0.1.BagExiled) )!])) oneshot +auto=@sacrificed(creature[-token;-artifact]|mybattlefield):name(Exile creature) transforms((,newability[name(Exile creature) all(*[zpos=type:*:mygraveyard]|mygraveyard) moveto(ownerexile) and!( counter(0/0.1.BagExiled) )!])) oneshot +auto={2}{T}:name(Draw a card) target(other *[artifact;creature]|mybattlefield) sacrifice and!( transforms((,newability[moveto(ownerexile) and!( counter(0/0.1.BagExiled) )!],newability[draw:1 controller])) oneshot +auto={3}{T}:name(Sacrifice and roll d10) sacrifice and!( transforms((,newability[name(Roll a d10) rolld10 10 winability donothing winabilityend rolld10end])) oneshot )! +autograveyard=@dierolled(this|mygraveyard) from(controller) once:transforms((,newability[name(Return exiled cards) target(*[counter{0/0.1.BagExiled}]|exile) moveto(ownerhand) and!( all(*[counter{0/0.1.BagExiled}]|myexile) removeallcounters(0/0.1.BagExiled) )!])) oneshot +text=Whenever you sacrifice another nontoken artifact or creature, exile it. -- {2}, {T}, Sacrifice another artifact or creature: Draw a card. -- {3}, {T}, Sacrifice Bag of Devouring: Roll a d10. Return up to X cards from among cards exiled with Bag of Devouring to their owners’ hands, where X is the result. +mana={B} +type=Artifact +[/card] +[card] name=Bag of Holding auto=@discarded(*|myhand):name(Move to exile) transforms((,newability[all(*[zpos=type:*:mygraveyard]|mygraveyard) moveto(myexile) and!( counter(0/0.1.BagExiled) )!])) oneshot auto={2}{T}:name(Draw and discard) draw:1 controller && transforms((,newability[name(Discard a card) reject notatarget(*|myhand)])) oneshot @@ -4081,6 +4258,15 @@ mana={1} type=Artifact [/card] [card] +name=Bag of Tricks +aicode=activate target(creature[manacost=lastrollresult]|mylibrary) moveto(mybattlefield) and!( shuffle )! +auto={4}{G}{T}:name(Roll a d8) rolld8 8 winability donothing winabilityend rolld8end +auto=@dierolled(this) from(controller):name(Look top card) reveal:1 revealzone(mylibrary) revealuntil(creature[manacost=lastrollresult]|mylibrary) optionone target(creature[manacost=lastrollresult]|myreveal) moveto(mybattlefield) optiononeend optiontwo all(*|myreveal) bottomoflibrary optiontwoend revealend +text={4}{G}, {T}: Roll a d8. Reveal cards from the top of your library until you reveal a creature card with mana value equal to the result. Put that card onto the battlefield and the rest on the bottom of your library in a random order. +mana={1}{G} +type=Artifact +[/card] +[card] name=Baird, Steward of Argive abilities=vigilance auto=lord(creature|opponentbattlefield) transforms((,newability[attackcost:1])) @@ -4140,6 +4326,17 @@ power=4 toughness=3 [/card] [card] +name=Baleful Beholder +auto=if type(enchantment|opponentbattlefield)~morethan~0 then choice name(Opponent sacrifices enchantment) name(Opponent sacrifices enchantment) ability$!name(Sacrifice enchantment) name(Sacrifice enchantment) notatarget(enchantment|mybattlefield) sacrifice!$ opponent +auto=choice name(Your creatures gain menace) all(creature|myBattlefield) transforms((,newability[menace])) ueot +text=When Baleful Beholder enters the battlefield, choose one — -- • Antimagic Cone — Each opponent sacrifices an enchantment. -- • Fear Ray — Creatures you control gain menace until end of turn. (A creature with menance can’t be blocked except by two or more creatures.) +mana={4}{B}{B} +type=Creature +subtype=Beholder +power=6 +toughness=5 +[/card] +[card] name=Baleful Mastery target=creature,planeswalker other={1}{B} name(Cast for less) @@ -4249,6 +4446,15 @@ power=4 toughness=4 [/card] [card] +name=Bar the Gate +target=*[creature;planeswalker]|stack +auto=fizzle +auto=if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=Counter target creature or planeswalker spell. Venture into the dungeon. (Enter the first room or advance to the next room.) +mana={2}{U} +type=Instant +[/card] +[card] name=Barbarian Bully auto={0} restriction{compare(opponentlifetotal)~lessthan~5}:name(Discard a random card) discard:1 && all(this) 2/2 ueot auto={0} restriction{compare(opponentlifetotal)~morethan~4}:name(Discard a random card) transforms((,newability[discard:1 controller],newability[if compare(genrand2)~equalto~0 then 2/2 ueot else damage:4 opponent])) oneshot @@ -4260,6 +4466,20 @@ power=2 toughness=2 [/card] [card] +name=Barbarian Class +#Ignore the lowest roll is not available ATM. +auto=counter(0/0,1,Level) +auto=@dierolled(*[-Barbarian Class]|battlefield) from(controller):name(Roll again) rolld20 20 winability donothing winabilityend loseability donothing loseabilityend rolld20end +auto=this(variable{hascntlevel}=1) {1}{R}:name(Level 2) counter(0/0,1,Level) asSorcery +auto=@dierolled(*|battlefield) from(controller) restriction{compare(hascntlevel)~morethan~1}:name(Creature gets 2/0) target(creature|myBattlefield) transforms((,newability[2/0],newability[menace])) ueot +auto=this(variable{hascntlevel}=2) {2}{B}:name(Level 3) counter(0/0,1,Level) asSorcery +auto=this(variable{hascntlevel}>=3) lord(creature|myBattlefield) haste +text=(Gain the next level as a sorcery to add its ability.) -- If you would roll one or more dice, instead roll that many dice plus one and ignore the lowest roll. -- {1}{R}: Level 2 -- Whenever you roll one or more dice, target creature you control gets +2/+0 and gains menace until end of turn. -- {2}{R}: Level 3 -- Creatures you control have haste. +mana={R} +type=Enchantment +subtype=Class +[/card] +[card] name=Barbed Lightning target=player other={4}{R} name(Entwine) @@ -4300,6 +4520,20 @@ power=4 toughness=3 [/card] [card] +name=Bard Class +auto=counter(0/0,1,Level) +auto=@movedto(creature[legendary]|mybattlefield):name(Get 1/1 counter) all(trigger[to]) counter(1/1) +auto=this(variable{hascntlevel}=1) {R}{G}:name(Level 2) counter(0/0,1,Level) asSorcery +auto=this(variable{hascntlevel}>=2) lord(*[legendary]|mycastingzone) altercost(red, -1) +auto=this(variable{hascntlevel}>=2) lord(*[legendary]|mycastingzone) altercost(green, -1) +auto=this(variable{hascntlevel}=2) {3}{R}{G}:name(Level 3) counter(0/0,1,Level) asSorcery +auto=@movedto(creature[legendary]|mybattlefield) from(mystack) restriction{compare(hascntlevel)~morethan~2}:name(Exile top 2) all(*[zpos<=2]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +text=(Gain the next level as a sorcery to add its ability.) -- Legendary creatures you control enter the battlefield with an additional +1/+1 counter on them. -- {R}{G}: Level 2 -- Legendary spells you cast cost {R}{G} less to cast. This effect reduces only the amount of colored mana you pay. -- {3}{R}{G}: Level 3 -- Whenever you cast a legendary spell, exile the top two cards of your library. You may play them this turn. +mana={R}{G} +type=Enchantment +subtype=Class +[/card] +[card] name=Barge In auto=target(creature[attacking]) 2/2 ueot auto=all(creature[-human,attacking]) trample ueot @@ -4417,6 +4651,17 @@ power=3 toughness=4 [/card] [card] +name=Barrowin of Clan Undurr +auto=if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +auto=@combat(attacking) source(this) restriction{compare(pdungeoncompleted)~morethan~0}:may name(Return creature) target(creature[manacost<=3]|mygraveyard) moveto(myBattlefield) +text=When Barrowin of Clan Undurr enters the battlefield, venture into the dungeon. (Enter the first room or advance to the next room.) -- Whenever Barrowin of Clan Undurr attacks, return up to one creature card with mana value 3 or less from your graveyard to the battlefield if you’ve completed a dungeon. +mana={2}{W}{B} +type=Legendary Creature +subtype=Dwarf Cleric +power=3 +toughness=3 +[/card] +[card] name=Bartered Cow auto=@movedTo(this|graveyard) from(battlefield):token(-473141) auto=@movedTo(this|mygraveyard) from(myHand):token(-473141) @@ -4580,6 +4825,17 @@ power=2 toughness=2 [/card] [card] +name=Battle Cry Goblin +auto={1}{R}:name(Goblins get 1/0 and haste) all(goblin|mybattlefield) transforms((,newability[1/0],newability[haste])) ueot +auto=@combat(attacking) source(this) restriction{compare(pwrtotatt)~morethan~5}:name(Create goblin) token(Goblin,Creature Goblin,1/1,red,battleready) +text={1}{R}: Goblins you control get +1/+0 and gain haste until end of turn. -- Pack tactics — Whenever Battle Cry Goblin attacks, if you attacked with creatures with total power 6 or greater this combat, create a 1/1 red Goblin creature token that’s tapped and attacking. +mana={1}{R} +type=Creature +subtype=Goblin +power=2 +toughness=2 +[/card] +[card] name=Battle Mammoth abilities=foretell,trample autohand={2}:name(Pay 2 and exile face-down) name(Pay 2 and exile face-down) doforetell myturnonly @@ -4982,7 +5238,7 @@ name=Belfry Spirit abilities=flying auto=token(Bat,Creature Bat,1/1,black,flying)*2 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.BelfryHaunted)])) oneshot )!])) oneshot -autoexile=@movedto(creature[counter{0/0.1.BelfryHaunted}]|graveyard) from(battlefield):token(Bat,Creature Bat,1/1,black,flying)*2 +autoexile=@movedto(creature[counter{0/0.1.BelfryHaunted}]|graveyard) from(battlefield) once:token(Bat,Creature Bat,1/1,black,flying)*2 text=Flying -- Haunt (When this creature dies, exile it haunting target creature.) -- When Belfry Spirit enters the battlefield or the creature it haunts dies, put two 1/1 black Bat creature tokens with flying onto the battlefield. mana={3}{W}{W} type=Creature @@ -5043,6 +5299,26 @@ power=1 toughness=1 [/card] [card] +name=Belt of Giant Strength +auto={9999}:equip +auto={0}:name(equip creature with power 10 or more) rehook target(creature[power>=10]|mybattlefield) +auto={1}:name(equip creature with power 9) rehook target(creature[power=9]|mybattlefield) +auto={2}:name(equip creature with power 8) rehook target(creature[power=8]|mybattlefield) +auto={3}:name(equip creature with power 7) rehook target(creature[power=7]|mybattlefield) +auto={4}:name(equip creature with power 6) rehook target(creature[power=6]|mybattlefield) +auto={5}:name(equip creature with power 5) rehook target(creature[power=5]|mybattlefield) +auto={6}:name(equip creature with power 4) rehook target(creature[power=4]|mybattlefield) +auto={7}:name(equip creature with power 3) rehook target(creature[power=3]|mybattlefield) +auto={8}:name(equip creature with power 2) rehook target(creature[power=2]|mybattlefield) +auto={9}:name(equip creature with power 1) rehook target(creature[power=1]|mybattlefield) +auto={10}:name(equip creature with power 0) rehook target(creature[power=0]|mybattlefield) +auto=teach(creature) transforms((,setpower=10,settoughness=10)) +text=Equipped creature has base power and toughness 10/10. -- Equip {10}. This ability costs {X} less to activate where X is the power of the creature it targets. +mana={1}{G} +type=Artifact +subtype=Equipment +[/card] +[card] name=Benalish Honor Guard auto=foreach(creature[legendary]|myBattlefield) 1/0 text=Benalish Honor Guard gets +1/+0 for each legendary creature you control. @@ -5086,7 +5362,7 @@ name=Benediction of Moons abilities=exiledeath auto=life:2 controller auto=name(Haunt a creature) target(creature) counter(0/0.1.MoonsHaunted) -autoexile=@movedto(creature[counter{0/0.1.MoonsHaunted}]|graveyard) from(battlefield):life:2 controller +autoexile=@movedto(creature[counter{0/0.1.MoonsHaunted}]|graveyard) from(battlefield) once:life:2 controller text=You gain 1 life for each player. -- Haunt (When this spell card is put into a graveyard after resolving, exile it haunting target creature.) -- When the creature Benediction of Moons haunts dies, you gain 1 life for each player. mana={W} type=Sorcery @@ -5153,6 +5429,15 @@ power=4 toughness=4 [/card] [card] +name=Berserker's Frenzy +restriction=compare(currentphase)~lessthan~8 +auto=all(*[zpos=1]|mylibrary) transforms((,newability[@dierolled(this|mylibrary) from(controller) once:name(Choose blocker creatures) target(creature|battlefield) transforms((,newability[mustblock])) ueot],newability[name(Roll a d20) rolld20 20 winability donothing winabilityend rolld20end])) oneshot +auto=name(Roll a d20) rolld20 20 winability donothing winabilityend rolld20end +text=Cast this spell only before combat or during combat before blockers are declared. -- Roll two d20 and ignore the lower roll. -- 1-14 | Choose any number of creatures. They block this turn if able. -- 15-20 | You choose which creatures block this turn and how those creatures block. +mana={2}{R} +type=Instant +[/card] +[card] name=Beskir Shieldmate auto=@movedto(this|graveyard) from(mybattlefield):token(Warrior,Creature Human Warrior,1/1,white) text=When Beskir Shieldmate dies, create a 1/1 white Human Warrior creature token. @@ -5210,7 +5495,7 @@ toughness=1 [/card] [card] name=Big Boa Constrictor -auto=rolladie 6 winability life:-lastrollresult opponent winabilityend loseability life:-lastrollresult opponent loseabilityend rollend +auto=rolld6 6 winability life:-lastrollresult opponent winabilityend loseability life:-lastrollresult opponent loseabilityend rolld6end text=When this creature enters the battlefield, roll a six-sided die. Target opponent loses life equal to the result. mana={3}{B} type=Host Creature @@ -5460,6 +5745,17 @@ power=4 toughness=4 [/card] [card] +name=Black Dragon +abilities=flying +auto=name(Creature gets -3/-3) target(creature|opponentbattlefield) -3/-3 ueot +text=Flying -- Acid Breath — When Black Dragon enters the battlefield, target creature an opponent controls gets -3/-3 until end of turn. +mana={5}{B}{B} +type=Creature +subtype=Dragon +power=4 +toughness=4 +[/card] +[card] name=Blackblade Reforged auto=teach(creature) type:land:mybattlefield/type:land:mybattlefield nonstatic auto={3}:equip target(creature[legendary]|mybattlefield) @@ -5587,7 +5883,7 @@ toughness=2 [card] name=Blaring Captain abilities=partner -auto=may moveto(myhand) notatarget(blaring recruiter|mylibrary) +auto=may name(Put partner in hand) moveto(myhand) target(blaring recruiter|mylibrary) auto=@combat(attacking) source(this):all(warrior[attacking]) 1/1 text=Partner with Blaring Recruiter (When this creature enters the battlefield, target player may put Blaring Recruiter into their hand from their library, then shuffle.) -- Whenever Blaring Captain attacks, attacking Warriors get +1/+1 until end of turn. mana={3}{B} @@ -5599,7 +5895,7 @@ toughness=2 [card] name=Blaring Recruiter abilities=partner -auto=may moveto(myhand) notatarget(blaring captain|mylibrary) +auto=may name(Put partner in hand) moveto(myhand) target(blaring captain|mylibrary) auto={2}{W}:create(warrior:creature warrior:1/1:white:) text=Partner with Blaring Captain (When this creature enters the battlefield, target player may put Blaring Captain into their hand from their library, then shuffle.) -- {2}{W}: Create a 1/1 white Warrior creature token. mana={3}{W} @@ -5897,6 +6193,17 @@ mana={2}{W} type=Sorcery [/card] [card] +name=Blink Dog +abilities=double strike +auto={3}{W}:name(Teleport) phaseout +text=Double strike -- Teleport — {3}{W}: Blink Dog phases out. (Treat it and anything attached to it as though they don’t exist until your next turn.) +mana={2}{W} +type=Creature +subtype=Dog +power=1 +toughness=1 +[/card] +[card] name=Blink of an Eye kicker={1}{U} target=*[-land] @@ -6047,7 +6354,7 @@ type=Sorcery [card] name=Blood Researcher abilities=menace -auto=@lifeof(player) from(*[-lifefaker]):counter(1/1) +auto=@lifeof(player) from(*[-lifefaker]|*):counter(1/1) text=Menace (This creature can't be blocked except by two or more creatures.) -- Whenever you gain life, put a +1/+1 counter on Blood Researcher. mana={1}{B}{G} type=Creature @@ -6282,7 +6589,7 @@ type=Artifact [card] name=Bloodthirsty Aerialist abilities=flying -auto=@lifeof(player) from(*[-lifefaker]):counter(1/1,1) +auto=@lifeof(player) from(*[-lifefaker]|*):counter(1/1,1) text=Flying -- Whenever you gain life, put a +1/+1 counter on Bloodthirsty Aerialist. mana={1}{B}{B} type=Creature @@ -6316,7 +6623,7 @@ toughness=2 [/card] [card] name=Bloom Hulk -auto=_PROLIFERATE_ +auto=name(Proliferate) NotATarget(*) duplicatecounters(single) text=When Bloom Hulk enters the battlefield, proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) mana={3}{G} type=Creature @@ -6372,6 +6679,21 @@ mana={2}{R} type=Sorcery [/card] [card] +name=Blue Dragon +abilities=flying +auto=if type(creature|opponentbattlefield)~equalto~1 then name(Creature gets -3/0) name(Creature gets -3/0) target(creature|opponentbattlefield) transforms((,newability[-3/0])) uynt +auto=if type(creature|opponentbattlefield)~morethan~1 then name(Creature gets -3/0) name(Creature gets -3/0) target(creature|opponentbattlefield) transforms((,newability[-3/0],newability[counter(0/0.1.DragonEffect)],newability[counter(0/0.1.DragonEffect3)])) uynt +auto=@counteradded(0/0.1.DragonEffect3) from(creature|opponentbattlefield) once:if cantargetcard(*[fresh]|*) then may name(Creature gets -2/0) name(Creature gets -2/0) target(creature[-counter{0/0.1.DragonEffect}]|opponentbattlefield) transforms((,newability[-2/0],newability[counter(0/0.1.DragonEffect)],newability[counter(0/0.1.DragonEffect2)])) uynt +auto=@counteradded(0/0.1.DragonEffect2) from(creature|opponentbattlefield) once:if cantargetcard(*[fresh]|*) then may name(Creature gets -1/0) name(Creature gets -1/0) target(creature[-counter{0/0.1.DragonEffect}]|opponentbattlefield) transforms((,newability[-1/0],newability[all(creature|mybattlefield) removeallcounters(0/0.1.DragonEffect)],newability[all(creature|mybattlefield) removeallcounters(0/0.1.DragonEffect3)],newability[all(creature|mybattlefield) removeallcounters(0/0.1.DragonEffect2)])) uynt +auto=@each endofturn:if cantargetcard(*[fresh]|*) then all(creature[counter{0/0.1.DragonEffect}]|opponentbattlefield) transforms((,newability[removeallcounters(0/0.1.DragonEffect)],newability[removeallcounters(0/0.1.DragonEffect3)],newability[removeallcounters(0/0.1.DragonEffect2)])) forever +text=Flying -- Lightning Breath — When Blue Dragon enters the battlefield, until your next turn, target creature an opponent controls gets -3/-0, up to one other target creature gets -2/-0, and up to one other target creature gets -1/-0. +mana={5}{U}{U} +type=Creature +subtype=Dragon +power=5 +toughness=5 +[/card] +[card] name=Blur of Blades target=creature auto=(-1/-1,1) @@ -6468,9 +6790,9 @@ toughness=5 [/card] [card] name=Bolas's Citadel -abilities=showfromtoplibrary -auto={0}:name(play from top) reveal:1 optionone name(Reveal) target(*|reveal) transforms((,newability[life:-manacost controller])) forever optiononeend optiontwo name(Claim your card) choice all(*|reveal) moveto(mybattlefield) optiontwoend revealend -auto={T}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}:life:-10 opponent +abilities=showfromtoplibrary,canplaylandlibrarytop +auto=this(variable{type:*[-land;zpos=1]:mylibrary}>0) {0}:name(Pay life and play from top) name(Pay life and play from top) all(*[-land;zpos=1]|mylibrary) transforms((,newability[activate castcard(normal)],newability[life:-manacost controller])) forever +auto=this(variable{type:*[-land]:mybattlefield}>9) {T}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}{S(*[-land]|myBattlefield)}:name(Sacrifice 10 permanent) name(Sacrifice 10 permanent) life:-10 opponent text=You may look at the top card of your library any time. -- You may play the top card of your library. If you cast a spell this way, pay life equal to its converted mana cost rather than pay its mana cost. -- {T}, Sacrifice ten nonland permanents: Each opponent loses 10 life. mana={3}{B}{B}{B} type=Legendary Artifact @@ -6896,6 +7218,16 @@ power=2 toughness=1 [/card] [card] +name=Boots of Speed +auto={1}:equip +auto=teach(creature) 1/0 +auto=teach(creature) haste +text=Equipped creature gets +1/+0 and has haste. -- Equip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.) +mana={R} +type=Artifact +subtype=Equipment +[/card] +[card] name=Boreal Elemental abilities=flying auto=@targeted(this) 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 @@ -7078,7 +7410,7 @@ type=Enchantment [/card] [card] name=Box of Free-Range Goblins -auto=rolladie 6 winability token(Goblin,Creature Goblin,1/1,red)*lastrollresult winabilityend loseability token(Goblin,Creature Goblin,1/1,red)*lastrollresult loseabilityend rollend +auto=rolld6 6 winability token(Goblin,Creature Goblin,1/1,red)*lastrollresult winabilityend loseability token(Goblin,Creature Goblin,1/1,red)*lastrollresult loseabilityend rolld6end text=Roll a six-sided die. Create a number of 1/1 red Goblin creature tokens equal to the result. mana={4}{R}{R} type=Sorcery @@ -7104,8 +7436,7 @@ type=Artifact [card] name=Brallin, Skyshark Rider abilities=hiddenface,partner -aicode=activate moveTo(myhand) target(Shabraz^ the Skyshark|mylibrary) -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Shabraz^ the Skyshark|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Shabraz^ the Skyshark|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend +auto=may name(Put partner in hand) moveTo(myhand) target(Shabraz^ the Skyshark|mylibrary) auto=@discarded(*|myHand):all(this) counter(1/1,1) && damage:1 opponent auto={R}:target(creature[Shark]) trample ueot text=Partner with Shabraz, the Skyshark (When this creature enters the battlefield, target player may put Shabraz into their hand from their library, then shuffle.) -- Whenever you discard a card, put a +1/+1 counter on Brallin, Skyshark Rider and it deals 1 damage to each opponent. -- {R}: Target Shark gains trample until end of turn. @@ -7235,6 +7566,16 @@ power=2 toughness=2 [/card] [card] +name=Brazen Dwarf +auto=@dierolled(*|mybattlefield) from(controller):name(Deal damage) damage:1 opponent +text=Whenever you roll one or more dice, Brazen Dwarf deals 1 damage to each opponent. +mana={1}{R} +type=Creature +subtype=Dwarf Shaman +power=1 +toughness=3 +[/card] +[card] name=Brazen Freebooter auto=token(Treasure Sur) text=When Brazen Freebooter enters the battlefield, create a Treasure token. (It's an artifact with " {T}, Sacrifice this artifact: Add one mana of any color.") @@ -7575,7 +7916,7 @@ toughness=6 name=Bronze Guardian abilities=double strike anyzone=type:artifact:myBattlefield/5 cdaactive -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 +auto=@targeted(this) from(*|opponentzones):choice name(This spell costs 2 more) name(This spell costs 2 more) target(*|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 @@ -7631,6 +7972,17 @@ power=4 toughness=4 [/card] [card] +name=Bruenor Battlehammer +auto=lord(creature[equipped]|myBattlefield) transforms((,newability[thisforeach(gear) 2/0])) +auto={0}:name(Pay 0 for first equip) target(artifact[equipment]|myBattlefield) transforms((,newability[name(Equip to a creature) rehook target(creature|myBattlefield)])) oneshot limit:1 +text=Each creature you control gets +2/+0 for each Equipment attached to it. -- You may pay {0} rather than pay the equip cost of the first equip ability you activate each turn. +mana={2}{R}{W} +type=Legendary Creature +subtype=Dwarf Warrior +power=5 +toughness=3 +[/card] +[card] name=Bruse Tarl, Boorish Herder abilities=partner auto=target(creature|mybattlefield) double strike && lifelink ueot @@ -7696,6 +8048,32 @@ mana={1}{R} type=Instant [/card] [card] +name=Bucknard's Everfull Purse +auto={1}{T}:name(Roll a d4) rolld4 4 winability token(Treasure Sur)*lastrollresult winabilityend loseability token(Treasure Sur)*lastrollresult loseabilityend rolld4end +auto=@dierolled(this):moveto(opponentbattlefield) +text={1}, {T}: Roll a d4 and create a number of Treasure tokens equal to the result. The player to your right gains control of Bucknard’s Everfull Purse. +mana={2} +type=Artifact +[/card] +[card] +name=Bulette +auto=auto=@each my endofturn restriction{morbid}:name(Put 1/1 counter) counter(1/1) +text=At the beginning of your end step, if a creature died this turn, put a +1/+1 counter on Bulette. +mana={3}{G} +type=Creature +subtype=Beast +power=3 +toughness=3 +[/card] +[card] +name=Bull's Strength +target=creature +auto=transforms((,newability[2/2],newability[trample])) ueot +text=Target creature gets +2/+2 and gains trample until end of turn. Untap it. +mana={1}{G} +type=Instant +[/card] +[card] name=Bull-Rush Bruiser auto=@combat(attacking) source(this) aslongas(other warrior|myBattlefield):first strike ueot text=Whenever Bull-Rush Bruiser attacks, if your team controls another Warrior, Bull-Rush Bruiser gains first strike until end of turn. @@ -7764,6 +8142,17 @@ mana={2}{R} type=Instant [/card] [card] +name=Burning Hands +restriction=type(*[creature;planeswalker]|battlefield)~morethan~0 +auto=if type(creature[green]|opponentbattlefield)~morethan~0 then choice name(Damage green creature) name(Damage green creature) target(creature[green]|battlefield) damage:6 +auto=if type(planeswalker[green]|opponentbattlefield)~morethan~0 then choice name(Damage green planeswalker) name(Damage green planeswalker) target(planeswalker[green]|battlefield) damage:6 +auto=if type(creature[-green]|opponentbattlefield)~morethan~0 then choice name(Damage non-green creature) name(Damage non-green creature) target(creature[-green]|battlefield) damage:2 +auto=if type(planeswalker[-green]|opponentbattlefield)~morethan~0 then choice name(Damage non-green planeswalker) name(Damage non-green planeswalker) target(planeswalker[-green]|battlefield) damage:2 +text=Burning Hands deals 2 damage to target creature or planeswalker. If that permanent is green, Burning Hands deals 6 damage instead. +mana={1}{R} +type=Instant +[/card] +[card] name=Burning Prophet 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(*[-creature]|mystack):1/0 ueot @@ -8472,7 +8861,7 @@ toughness=1 [card] name=Carth the Lion abilities=hiddenface -auto=activate transforms((,newability[if type(planeswalker[zpos<=7]|myLibrary)~morethan~0 then target(planeswalker[zpos<=7]|myLibrary) moveTo(myHand) and!( all(other *[zpos<=7]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )! else all(*[zpos<=7]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! ])) oneshot +aicode=activate transforms((,newability[if type(planeswalker[zpos<=7]|myLibrary)~morethan~0 then target(planeswalker[zpos<=7]|myLibrary) moveTo(myHand) and!( all(other *[zpos<=7]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )! else all(*[zpos<=7]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! ])) oneshot auto=name(Look top 7 cards) reveal:7 optionone name(Get a planeswalker) target(planeswalker|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend auto=@movedto(planeswalker|graveyard) from(myBattlefield):name(Look top 7 cards) reveal:7 optionone name(Get a planeswalker) target(planeswalker|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend auto=lord(planeswalker|myBattlefield) transforms((,newability[@countermod(0/0.1.Loyalty) from(this) restriction{myturnonly} turnlimited:counter(0/0.1.loyalty)])) @@ -8595,7 +8984,7 @@ type=Instant [card] name=Cast Out abilities=flash,cycling -auto=blink(*[-land]|opponentbattlefield) forsrc +auto=(blink)forsrc target(*[-land]|opponentbattlefield) autohand=__CYCLING__({W}) text=Flash -- When Cast Out enters the battlefield, exile target nonland permanent an opponent controls until Cast Out leaves the battlefield. -- Cycling {W} ({W}, Discard this card: Draw a card.) mana={3}{W} @@ -8805,6 +9194,18 @@ power=0 toughness=3 [/card] [card] +name=Catti-brie of Mithral Hall +abilities=first strike,reach +auto=@combat(attacking) source(this):name(Add 1/1 counters) thisforeach(gear) counter(1/1) +auto=this(variable{hascnt11}>0) {1}:name(Remove all 1/1 counters) damage:hascnt11 target(creature[attacking;blocking]|opponentbattlefield) && all(this) removeallcounters(1/1) +text=First strike, reach -- Whenever Catti-brie of Mithral Hall attacks, put a +1/+1 counter on it for each Equipment attached to it. -- {1}, Remove all +1/+1 counters from Catti-brie: It deals X damage to target attacking or blocking creature an opponent controls, where X is the number of counters removed this way. +mana={G}{W} +type=Legendary Creature +subtype=Human Archer +power=2 +toughness=2 +[/card] +[card] name=Cauldron Familiar auto=life:1 auto=life:-1 opponent @@ -8918,6 +9319,14 @@ text={T}: Add {1}. -- {1}, {T}: Add one mana of any color. -- {4}, {T}, Sacrific type=Land [/card] [card] +name=Cave of the Frost Dragon +auto=if compare(type:land:myBattlefield)~morethan~2 then tap(noevent) +auto={T}:Add{W} +auto={4}{W}:name(Becomes dragon) becomes(Creature Dragon,3/4,white,flying) ueot +text=If you control two or more other lands, Cave of the Frost Dragon enters the battlefield tapped. -- {T}: Add {W}. -- {4}{W}: Cave of the Frost Dragon becomes a 3/4 white Dragon creature with flying until end of turn. It’s still a land. +type=Land +[/card] +[card] name=Cavern Whisperer abilities=menace,mutate otherrestriction=type(creature[-human]|mybattlefield)~morethan~0 @@ -8962,8 +9371,7 @@ type=World Enchantment [card] name=Cazur, Ruthless Stalker abilities=hiddenface,partner -aicode=activate moveTo(myhand) target(Ukkima^ Stalking Shadow|mylibrary) -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Ukkima^ Stalking Shadow|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Ukkima^ Stalking Shadow|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend +auto=may name(Put partner in hand) moveTo(myhand) target(Ukkima^ Stalking Shadow|mylibrary) auto=@combatdamaged(player) from(creature|myBattlefield):all(trigger[from]) counter(1/1) text=Partner with Ukkima, Stalking Shadow (When this creature enters the battlefield, target player may put Ukkima into their hand from their library, then shuffle.) -- Whenever a creature you control deals combat damage to a player, put a +1/+1 counter on that creature. mana={3}{G} @@ -8994,6 +9402,16 @@ power=3 toughness=2 [/card] [card] +name=Celestial Unicorn +auto=@lifeof(player) from(*[-lifefaker]|*):counter(1/1) +text=Whenever you gain life, put a +1/+1 counter on Celestial Unicorn. +mana={2}{W} +type=Creature +subtype=Unicorn +power=3 +toughness=2 +[/card] +[card] name=Cenn's Tactician auto={w}{T}:counter(1/1,1) target(creature[soldier]) text={W}, {T}: Put a +1/+1 counter on target Soldier creature. -- Each creature you control with a +1/+1 counter on it can block an additional creature. @@ -9141,7 +9559,7 @@ toughness=4 [card] name=Chakram Retriever abilities=partner -auto=may moveto(myhand) notatarget(chakram slinger|mylibrary) +auto=may name(Put partner in hand) moveto(myhand) target(chakram slinger|mylibrary) auto=@movedTo(*|mystack) restriction{myturnonly}:untap target(creature) text=Partner with Chakram Slinger (When this creature enters the battlefield, target player may put Chakram Slinger into their hand from their library, then shuffle.) -- Whenever you cast a spell during your turn, untap target creature. mana={4}{U} @@ -9153,7 +9571,7 @@ toughness=4 [card] name=Chakram Slinger abilities=partner -auto=may moveto(myhand) notatarget(chakram retriever|mylibrary) +auto=may name(Put partner in hand) moveto(myhand) target(chakram retriever|mylibrary) auto={R}{T}:damage:2 target(player) text=Partner with Chakram Retriever (When this creature enters the battlefield, target player may put Chakram Retriever into their hand from their library, then shuffle.) -- {R}, {T}: Chakram Slinger deals 2 damage to target player or planeswalker. mana={4}{R} @@ -9270,6 +9688,20 @@ power=1 toughness=1 [/card] [card] +name=Champions of Archery // Join the Group +abilities=reach,adventure +other={2}{R} name(Adventure) +autostack=if paid(alternative) then name(Move to Command Zone) name(Move to Command Zone) target(creature[legendary]|myHand) moveTo(mycommandzone) and!( transforms((,newability[iscommander])) forever )! +autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=lord(*[iscommander]|myBattlefield) type:*[iscommander]:myBattlefield/0 +text=Reach -- Commanders you control get +X/+0, where X is the number of Commanders you control. // You may put a legendary creature card from your hand into the command zone. It’s also your commander. +mana={3}{R} +type=Legendary Creature +subtype=Human Archer +power=1 +toughness=4 +[/card] +[card] name=Chance for Glory auto=lord(other creature|myBattlefield) indestructible forever auto=turns:+1 controller @@ -9467,6 +9899,47 @@ mana={6}{W}{W} type=Instant [/card] [card] +name=Chaos Channeler +auto=@combat(attacking) source(this):name(Roll a d20) rolld20 20 winability donothing winabilityend rolld20end +auto=@dierolled(this) result(1) from(controller):name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(2) from(controller):name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(3) from(controller):name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(4) from(controller):name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(5) from(controller):name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(6) from(controller):name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(7) from(controller):name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(8) from(controller):name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(9) from(controller):name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(10) from(controller):name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(11) from(controller):name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(12) from(controller):name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(13) from(controller):name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(14) from(controller):name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(15) from(controller):name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(16) from(controller):name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(17) from(controller):name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(18) from(controller):name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(19) from(controller):name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +auto=@dierolled(this) result(20) from(controller):name(Exile top 3 cards) all(*[zpos<=3]|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile])) ueot )! +text=Wild Magic Surge — Whenever Chaos Channeler attacks, roll a d20. -- 1-9 | Exile the top card of your library. You may play it this turn. -- 10-19 | Exile the top two cards of your library. You may play them this turn. -- 20 | Exile the top three cards of your library. You may play them this turn. +mana={2}{R}{R} +type=Creature +subtype=Human Shaman +power=4 +toughness=3 +[/card] +[card] +name=Chaos Dragon +abilities=flying,haste,mustattack +auto=@each my combatbegins:name(Roll a d20) rolld20 20 winability donothing winabilityend loseability if compare(lastrollresult)~lessthan~11 then transforms((,newability[cantattack],newability[cantpwattack])) ueot loseabilityend rolld20end +text=Flying, haste -- Chaos Dragon attacks each combat if able. -- At the beginning of combat on your turn, each player rolls a d20. If one or more opponents had the highest result, Chaos Dragon can’t attack those players or planeswalkers they control this combat. +mana={1}{R}{R} +type=Creature +subtype=Dragon +power=4 +toughness=4 +[/card] +[card] name=Chaos Harlequin auto={R}:reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[2/0 ueot],newability[target(<1>*|reveal) moveto(exile)])) optiononeend optiontwo if type(land|reveal)~morethan~0 then transforms((,newability[-4/0 ueot],newability[target(<1>*|reveal) moveto(exile)])) optiontwoend revealend text={R}: Exile the top card of your library. If that card is a land card, Chaos Harlequin gets -4/-0 until end of turn. Otherwise, Chaos Harlequin gets +2/+0 until end of turn. @@ -9606,9 +10079,9 @@ toughness=1 [card] name=Charmed Sleep target=creature -auto=tap(mytgt) auto=teach(creature) doesnotuntap -text=Enchant creature -- When Charmed Sleep enters the battlefield, tap enchanted creature. -- Enchanted creature doesn't untap during its controller's untap step. +auto=tap +text=Enchant creature -- When Charmed Sleep enters the battlefield, tap enchanted creature. -- Enchanted creature doesn’t untap during its controller’s untap step. mana={1}{U}{U} type=Enchantment subtype=Aura @@ -9698,6 +10171,14 @@ mana={1}{G} type=Sorcery [/card] [card] +name=Check for Traps +auto=if type(*[-land]|opponenthand)~morethan~0 then name(Choose non-land card) name(Choose non-land card) target(*[-land]|opponenthand) moveto(exile) and!( transforms((,newability[if cantargetcard(*[-instant;-flash]|*) then life:-1 opponent],newability[if cantargetcard(*[flash]|*) then life:-1 controller],newability[if cantargetcard(*[instant]|*) then life:-1 controller])) oneshot )! +auto=if type(*[-land]|opponenthand)~equalto~0 then name(Reveal hand) name(Reveal hand) target(*|opponenthand) moveto(opponentreveal) and!( moveto(opponenthand) )! +text=Target opponent reveals their hand. You choose a nonland card from it. Exile that card. If an instant or a card with flash is exiled this way, they lose 1 life. Otherwise, you lose 1 life. +mana={1}{B} +type=Sorcery +[/card] +[card] name=Checkpoint Officer auto={1}{W}{T}:tap target(creature) text={1}{W}, {T}: Tap target creature. @@ -9760,7 +10241,7 @@ toughness=3 [/card] [card] name=Chicken Egg -auto=@each my upkeep:rolladie 6 winability donothing winabilityend rollend +auto=@each my upkeep:rolld6 6 winability donothing winabilityend rolld6end auto=@dierolled(this) result(6) from(controller):all(this) sacrifice && token(Giant Chicken,Creature Giant Chicken,4/4,red) myupkeeponly text=During your upkeep, roll a six-sided die. On a 6, sacrifice Chicken Egg and put a Giant Chicken token into play. Treat this token as a 4/4 red creature that counts as a Chicken. mana={1}{R} @@ -9770,7 +10251,7 @@ subtype=Egg [card] name=Chicken a la King auto=@dierolled(*|battlefield) result(6) from(controller):all(chicken|battlefield) counter(1/1) -auto={T(*[chicken]|mybattlefield)}:rolladie 6 winability donothing winabilityend rollend +auto={T(*[chicken]|mybattlefield)}:rolld6 6 winability donothing winabilityend rolld6end text=Whenever a 6 is rolled on a six-sided die, put a +1/+1 counter on each Chicken in play. (You may roll dice only when a card instructs you to.) -- Tap a Chicken you control: Roll a six-sided die. mana={1}{U}{U} type=Summon @@ -9779,7 +10260,7 @@ subtype=Chicken [card] name=Chicken à la King auto=@dierolled(*|battlefield) result(6) from(controller):all(chicken|battlefield) counter(1/1) -auto={T(*[chicken]|mybattlefield)}:rolladie 6 winability donothing winabilityend rollend +auto={T(*[chicken]|mybattlefield)}:rolld6 6 winability donothing winabilityend rolld6end text=Whenever a 6 is rolled on a six-sided die, put a +1/+1 counter on each Bird. (You may roll dice only when instructed to.) -- Tap an untapped Bird you control: Roll a six-sided die. (Like now.) mana={1}{U}{U} type=Creature @@ -9934,6 +10415,14 @@ mana={X}{G} type=Instant [/card] [card] +name=Choose Your Weapon +auto=choice name(Double power and toughness) target(creature|battlefield) transforms((,newability[power/toughness])) ueot +auto=choice name(Deal 5 damage) target(creature[flying]|battlefield) damage:5 +text=Choose one — -- • Two-Weapon Fighting — Double target creature’s power and toughness until end of turn. -- • Archery — This spell deals 5 damage to target creature with flying. +mana={2}{G} +type=Instant +[/card] +[card] name=Chord of Calling other={convoke} name(Convoke) aicode=activate target(creature[manacost<=x]|mylibrary) moveto(myhand) @@ -10078,6 +10567,16 @@ mana={1}{W}{B} type=Enchantment [/card] [card] +name=Circle of Dreams Druid +auto={T}:name(Add green mana) foreach(creature|myBattlefield) add{G} +text={T}: Add {G} for each creature you control. +mana={G}{G}{G} +type=Creature +subtype=Elf Druid +power=2 +toughness=1 +[/card] +[card] name=Circle of Protection: Artifacts auto={2}:name(prevent damage) notatarget(artifact|battlefield,stack,hand,graveyard) preventalldamage from(mytgt) ueot text={2}: The next time an artifact source of your choice would deal damage to you this turn, prevent that damage. @@ -10085,6 +10584,17 @@ mana={1}{W} type=Enchantment [/card] [card] +name=Circle of the Moon Druid +auto=this(variable{controllerturn}) transforms((removecreaturesubtypes)) +auto=this(variable{controllerturn}) transforms((Bear,setpower=4,settoughness=2)) +text=Bear Form — As long as it’s your turn, Circle of the Moon Druid is a Bear with base power and toughness 4/2. (It loses all other creature types.) +mana={2}{G} +type=Creature +subtype=Human Elf Druid +power=2 +toughness=4 +[/card] +[card] name=Circling Vultures abilities=flying,flash other={D} name(Discard) @@ -10176,7 +10686,7 @@ type=Sorcery [/card] [card] name=Clam-I-Am -auto=@dierolled(*|battlefield) result(3) from(controller):all(this) rolladie 6 winability donothing winabilityend loseability donothing loseabilityend rollend +auto=@dierolled(*|battlefield) result(3) from(controller):all(this) rolld6 6 winability donothing winabilityend loseability donothing loseabilityend rolld6end text=Whenever you roll a 3 on a six-sided die, you may reroll that die. mana={2}{U} type=Summon @@ -10258,6 +10768,26 @@ power=1 toughness=1 [/card] [card] +name=Clattering Skeletons +auto=@movedto(this|graveyard) from(battlefield) restriction{compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0}:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=When Clattering Skeletons dies, venture into the dungeon. (Enter the first room or advance to the next room.) +mana={3}{B} +type=Creature +subtype=Skeleton +power=4 +toughness=3 +[/card] +[card] +name=Clay Golem +auto=this(cantargetcard(*[-monstrous]) {6}:becomes(monstrous) forever && transforms((,newability[name(Roll a d8) rolld8 8 winability counter(1/1.lastrollresult) winabilityend loseability counter(1/1.lastrollresult) loseabilityend rolld8end],newability[name(Destroy permanent) destroy target(*|battlefield)])) forever +text={6}, Roll a d8: Monstrosity X, where X is the result. (If this creature isn’t monstrous, put X +1/+1 counters on it and it becomes monstrous.) -- Berserk — When Clay Golem becomes monstrous, destroy target permanent. +mana={4} +type=Artifact Creature +subtype=Golem +power=4 +toughness=4 +[/card] +[card] name=Cleansing auto=all(land|battlefield) transforms((,newability[pay[[{1}]] name(pay 1 mana) donothing?destroy])) forever text=For each land, destroy that land unless any player pays 1 life. @@ -10363,6 +10893,20 @@ power=2 toughness=1 [/card] [card] +name=Cleric Class +abilities=lifefaker +auto=counter(0/0,1,Level) +auto=@lifeof(player) from(*[-lifefaker]|*):life:1 controller +auto=this(variable{hascntlevel}=1) {3}{W}:name(Level 2) counter(0/0,1,Level) asSorcery +auto=@lifeof(player) from(*[-lifefaker]|*) restriction{compare(hascntlevel)~morethan~1}:name(Put 1/1 counter) target(creature|mybattlefield) counter(1/1) +auto=this(variable{hascntlevel}=2) {4}{W}:name(Level 3) counter(0/0,1,Level) asSorcery +auto=@counteradded(0/0,1,Level) from(this) restriction{compare(hascntlevel)~equalto~3}:name(Return creature) target(creature|mygraveyard) moveto(mybattlefield) and!( transforms((,newability[life:toughness controller])) oneshot )! +text=(Gain the next level as a sorcery to add its ability.) -- If you would gain life, you gain that much plus 1 life instead. -- {3}{W}: Level 2 -- Whenever you gain life, put a +1/+1 counter on target creature you control. -- {4}{W}: Level 3 -- When this Class becomes level 3, return target creature card from your graveyard to the battlefield. You gain life equal to its toughness. +mana={W} +type=Enchantment +subtype=Class +[/card] +[card] name=Cleric of Chill Depths auto=@combat(blocking) source(this) from(creature):all(trigger[from]) frozen text=Whenever Cleric of Chill Depths blocks a creature, that creature doesn't untap during its controller's next untap step. @@ -10384,6 +10928,16 @@ power=2 toughness=2 [/card] [card] +name=Clever Conjurer +auto={T}:name(Untap permanent) target(*[-Clever Conjurer]|mybattlefield) untap asSorcery +text=Mage Hand — {T}: Untap target permanent not named Clever Conjurer. Activate only as a sorcery. +mana={2}{U} +type=Creature +subtype=Gnome Wizard +power=2 +toughness=3 +[/card] +[card] name=Clever Lumimancer auto=@movedto(*[instant;sorcery]|mystack):2/2 ueot text=Magecraft — Whenever you cast or copy an instant or sorcery spell, Clever Lumimancer gets +2/+2 until end of turn. @@ -10395,7 +10949,7 @@ toughness=1 [/card] [card] name=Cliffhaven Kitesail -auto=rehook target(creature|myBattlefield) +auto=aslongas(parents) name(Attach to creature) rehook target(creature|myBattlefield) <1 auto=teach(creature) flying auto={2}:equip text=When Cliffhaven Kitesail enters the battlefield, attach it to target creature you control. -- Equipped creature has flying. -- Equip {2} ({2}: Attach to target creature you control. Equip only as a sorcery) @@ -10446,6 +11000,18 @@ power=2 toughness=3 [/card] [card] +name=Cloister Gargoyle +auto=if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +auto=this(variable{pdungeoncompleted}>0) 3/0 +auto=this(variable{pdungeoncompleted}>0) flying +text=When Cloister Gargoyle enters the battlefield, venture into the dungeon. (Enter the first room or advance to the next room.) -- As long as you’ve completed a dungeon, Cloister Gargoyle gets +3/+0 and has flying. +mana={2}{W} +type=Artifact Creature +subtype=Gargoyle +power=0 +toughness=4 +[/card] +[card] name=Clone Shell aicode=activate target(*[zpos<=4]|mylibrary) moveTo(myExile) auto=name(look) reveal:4 optionone name(put in exile) target(*|reveal) transforms((,newability[moveTo(ownerExile) and!( counter(0/0.1.ClnImp) )!])) forever optiononeend optiontwo name(put on bottom) all(*|reveal) bottomoflibrary optiontwoend revealend @@ -10705,16 +11271,31 @@ mana={2}{U}{R} type=Sorcery [/card] [card] +name=Collectigull // Only the Best +abilities=flying,adventure +other={1}{W} name(Adventure) +autostack=if paid(alternative) then name(Return to hand) name(Return to hand) target(*[-land]|myGraveyard) moveTo(ownerHand) +autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever +auto=protection from(*) +auto=@combat(attacking) source(this):draw:1 controller +text=Flying, protection from common -- Whenever Collectigull attacks, reveal the top card of your library. If it’s a Booster Fun card, you may put it into your hand. // Return target Booster Fun card from your graveyard to your hand. +mana={2}{W} +type=Creature +subtype=Bird +power=1 +toughness=1 +[/card] +[card] name=Collective Brutality -target=opponent other={1}{B}{D(*|myhand)} name(Escalate) -aicode=activate reject notatarget(*[instant;sorcery]|targetedpersonshand) -auto=if paid(alternative) then reveal:type:*:targetedpersonshand revealzone(targetedpersonshand) optionone name(choose discards) notatarget(<1>*[instant;sorcery]|reveal) transforms((,newability[moveto(ownerhand) all(other *|reveal)],newability[moveto(ownerhand) and!(reject)!])) ueot optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerhand) and!( all(*|reveal) moveto(ownerhand) )! optiontwoend revealend -auto=if paid(alternative) then target(creature) -2/-2 ueot -auto=if paid(alternative) then life:-2 opponent && life:2 controller -auto=ifnot paid(alternative) then choice name(Target opponent reveals and discard...) reveal:type:*:targetedpersonshand revealzone(targetedpersonshand) optionone name(choose discards) notatarget(<1>*[instant;sorcery]|reveal) transforms((,newability[moveto(ownerhand) all(other *|reveal)],newability[moveto(ownerhand) and!(reject)!])) ueot optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerhand) and!( all(*|reveal) moveto(ownerhand) )! optiontwoend revealend -auto=ifnot paid(alternative) then choice name(Target creature gets -2/-2...) target(creature) -2/-2 ueot -auto=ifnot paid(alternative) then choice name(Target opponent loses 2 and you gain...) life:-2 opponent && life:2 controller +aicode=activate target(*[instant;sorcery]|opponenthand) reject +auto=if paid(alternative) then if type(*|myhand)~morethan~0 then if type(creature|battlefield)~morethan~0 then choice name(Discard 1 more and choose all) name(Discard 1 more and choose all) name(Discard 1 more and choose all) name(Discard 1 more and choose all) target(*|myhand) reject and!( transforms((,newability[life:-2 opponent],newability[life:2 controller],newability[reveal:type:*:opponenthand revealzone(opponenthand) optionone name(choose discards) target(*[instant;sorcery]|reveal) reject optiononeend optiontwo name(put back) target(*|reveal) moveto(ownerhand) and!( all(*|reveal) moveto(ownerhand) )! optiontwoend afterrevealed choice name(Creature gets -2/-2) target(creature) -2/-2 ueot afterrevealedend revealend])) oneshot )! +auto=if paid(alternative) then if type(creature|battlefield)~morethan~0 then choice name(Opponent reveals and creature gets -2/-2) name(Opponent reveals and creature gets -2/-2) name(Opponent reveals and creature gets -2/-2) reveal:type:*:opponenthand revealzone(opponenthand) optionone name(choose discards) target(*[instant;sorcery]|reveal) reject optiononeend optiontwo name(put back) target(*|reveal) moveto(ownerhand) and!( all(*|reveal) moveto(ownerhand) )! optiontwoend afterrevealed choice name(Creature gets -2/-2) target(creature) -2/-2 ueot afterrevealedend revealend +auto=if paid(alternative) then choice name(Opponent reveals and looses 2 life) name(Opponent reveals and looses 2 life) life:-2 opponent && life:2 controller && reveal:type:*:opponenthand revealzone(opponenthand) optionone name(choose discards) target(*[instant;sorcery]|reveal) reject optiononeend optiontwo name(put back) target(*|reveal) moveto(ownerhand) and!( all(*|reveal) moveto(ownerhand) )! optiontwoend revealend +auto=if paid(alternative) then if type(creature|battlefield)~morethan~0 then choice name(Opponent looses life and creature gets -2/-2) name(Opponent looses life and creature gets -2/-2) name(Opponent looses life and creature gets -2/-2) target(creature) -2/-2 ueot && life:-2 opponent && life:2 controller +auto=ifnot paid(alternative) then choice name(Opponent reveals and discard) name(Opponent reveals and discard) reveal:type:*:opponenthand revealzone(opponenthand) optionone name(choose discards) target(*[instant;sorcery]|reveal) reject optiononeend optiontwo name(put back) target(*|reveal) moveto(ownerhand) and!( all(*|reveal) moveto(ownerhand) )! optiontwoend revealend +auto=ifnot paid(alternative) then if type(creature|battlefield)~morethan~0 then choice name(Creature gets -2/-2) name(Creature gets -2/-2) name(Creature gets -2/-2) target(creature) -2/-2 ueot +auto=ifnot paid(alternative) then choice name(Opponent loses 2 and you gain) name(Opponent loses 2 and you gain) life:-2 opponent && life:2 controller text=Escalate Discard a card. (Pay this cost for each mode chosen beyond the first.) Choose one or more — -- • Target opponent reveals their hand. You choose an instant or sorcery card from it. That player discards that card. -- • Target creature gets -2/-2 until end of turn. -- • Target opponent loses 2 life and you gain 2 life. mana={1}{B} type=Sorcery @@ -11113,6 +11694,14 @@ power=2 toughness=2 [/card] [card] +name=Compelled Duel +target=creature +auto=transforms((,newability[3/3],newability[@combat(attacking) source(this):all(creature|opponentbattlefield) mustblock ueot])) ueot +text=Target creature gets +3/+3 until end of turn and must be blocked this turn if able. +mana={1}{G} +type=Sorcery +[/card] +[card] name=Compelling Argument abilities=cycling target=player @@ -11134,6 +11723,14 @@ mana={2}{U} type=Instant [/card] [card] +name=Component Pouch +auto={T}:name(Roll a d20) rolld20 20 winability counter(0/0.2.component) winabilityend loseability if compare(lastrollresult)~lessthan~10 then counter(0/0.1.component) else counter(0/0.2.component) loseabilityend rolld20end +auto={T}{C(0/0.-1.component)}:name(Add 2 mana) thisforeach(variable{2}) ability$!name(Choose one) choice name(Add white) add{W} _ choice name(Add blue) add{U} _ choice name(Add red) add{R} _ choice name(Add green) add{G} _ choice name(Add black) add{B}!$ controller +text={T}, Remove a component counter from Component Pouch: Add two mana of different colors. -- {T}: Roll a d20. -- 1-9 | Put a component counter on Component Pouch. -- 10-20 | Put two component counters on Component Pouch. +mana={3} +type=Artifact +[/card] +[card] name=Compound Fracture target=creature auto=-1/-1 ueot @@ -11520,6 +12117,14 @@ type=Enchantment subtype=Aura [/card] [card] +name=Contact Other Plane +aicode=activate transforms((,newability[draw:2 controller])) oneshot +auto=name(Roll a d20) rolld20 20 winability scry:3 scrycore delayed draw:3 controller scrycoreend scryend winabilityend loseability if compare(lastrollresult)~lessthan~10 then draw:2 controller else scry:2 scrycore delayed draw:2 controller scrycoreend scryend loseabilityend rolld20end +text=Roll a d20. -- 1-9 | Draw two cards. -- 10-19 | Scry 2, then draw two cards. -- 20 | Scry 3, then draw three cards. +mana={3}{U} +type=Instant +[/card] +[card] name=Containment Breach auto=if type(*[artifact;enchantment;manacost<=2]|battlefield)~morethan~0 then choice name(Destroy artifact or enchantment with manacost 2 or less) name(Destroy artifact or enchantment with manacost 2 or less) target(*[artifact;enchantment;manacost<=2]|battlefield) destroy && token(Pest,Creature Pest,1/1,green,blue) and!( transforms((,newability[@movedto(this|mygraveyard) from(battlefield):life:1 controller])) forever )! auto=if type(*[artifact;enchantment;manacost>=3]|battlefield)~morethan~0 then choice name(Destroy artifact or enchantment with manacost 3 or more) name(Destroy artifact or enchantment with manacost 3 or more) target(*[artifact;enchantment;manacost>=3]|battlefield) destroy @@ -11549,7 +12154,7 @@ type=Enchantment [/card] [card] name=Contentious Plan -auto=_PROLIFERATE_ +auto=name(Proliferate) NotATarget(*) duplicatecounters(single) auto=draw:1 text=Proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) -- Draw a card. mana={1}{U} @@ -11776,7 +12381,7 @@ type=Instant name=Courage in Crisis target=creature auto=counter(1/1) -auto=_PROLIFERATE_ +auto=name(Proliferate) NotATarget(*) duplicatecounters(single) text=Put a +1/+1 counter on target creature, then proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) mana={2}{G} type=Sorcery @@ -11931,10 +12536,28 @@ type=Land [/card] [card] name=Cragganwick Cremator -other={2}{R}{R}{D(*[creature]|myhand)} name(Discard a creature) -auto=if paid(alternative) then damage:storedpower target(player,planeswalker) +auto=if compare(type:*:myhand)~equalto~1 then all(*|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~2 then all(*[zpos=genrand2plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~3 then all(*[zpos=genrand3plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~4 then all(*[zpos=genrand4plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~5 then all(*[zpos=genrand5plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~6 then all(*[zpos=genrand6plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~7 then all(*[zpos=genrand7plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~8 then all(*[zpos=genrand8plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~9 then all(*[zpos=genrand9plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~10 then all(*[zpos=genrand10plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~11 then all(*[zpos=genrand11plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~12 then all(*[zpos=genrand12plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~13 then all(*[zpos=genrand13plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~14 then all(*[zpos=genrand14plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~15 then all(*[zpos=genrand15plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~16 then all(*[zpos=genrand16plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~17 then all(*[zpos=genrand17plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~18 then all(*[zpos=genrand18plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~equalto~19 then all(*[zpos=genrand19plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! +auto=if compare(type:*:myhand)~morethan~19 then all(*[zpos=genrand20plus1plusend]|myhand) reject and!( transforms((,newability[if cantargetcard(*[creature]|*) then damage:power target(player^planeswalker)])) oneshot )! text=When Cragganwick Cremator enters the battlefield, discard a card at random. If you discard a creature card this way, Cragganwick Cremator deals damage equal to that card’s power to target player or planeswalker. -mana={2}{R}{R}{D(*[-creature]|myhand)} +mana={2}{R}{R} type=Creature subtype=Giant Shaman power=5 @@ -12154,6 +12777,15 @@ mana={2}{B}{B} type=Sorcery [/card] [card] +name=Critical Hit +target=creature +auto=transforms((,newability[double strike])) ueot +autograveyard=@dierolled(*|mybattlefield) result(20) from(controller):name(Return to hand) moveto(myhand) +text=Target creature gains double strike until end of turn. -- When you roll a natural 20, return Critical Hit from your graveyard to your hand. (A natural 20 is a roll that displays 20 on the die.) +mana={1}{R} +type=Instant +[/card] +[card] name=Crocodile of the Crossing abilities=haste auto=counter(-1/-1,1) target(creature|mybattlefield) @@ -12256,7 +12888,8 @@ type=Instant [card] name=Cruel Reality target=player -auto=if type(creature,planeswalker|opponentbattlefield)~morethan~0 ability$!name(sacrifice) notatarget(creature,planeswalker|myBattlefield) sacrifice!$ opponent else life:-5 opponent +auto=auto=@each targetedplayer upkeep restriction{type(*[creature;planeswalker]|targetedpersonsbattlefield)~equalto~0}:life:-5 targetedplayer +auto=auto=@each targetedplayer upkeep restriction{type(*[creature;planeswalker]|targetedpersonsbattlefield)~morethan~0}:name(Sacrifice of lose life) ability$!name(Sacrifice of lose life) choice name(Sacrifice) notatarget(*[creature;planeswalker]|myBattlefield) sacrifice _ choice name(Lose life) life:-5 controller!$ targetedplayer text=Enchant player -- At the beginning of enchanted player's upkeep, that player sacrifices a creature or planeswalker. If the player can't, he or she loses 5 life. mana={5}{B}{B} type=Enchantment @@ -12362,10 +12995,12 @@ type=Land [/card] [card] name=Cryptic Command -auto=choice name(Counter and...) fizzle target(*|stack) && all(this) transforms((,newability[choice name(Return Permanent) moveTo(ownerhand) target(*[-instant;-sorcery])],newability[choice name(Tap all Creatures) tap(noevent) all(creature|opponentbattlefield)],newability[choice name(Draw) draw:1 controller])) -auto=choice name(Return Permanent and...) moveTo(ownerhand) target(*[-instant;-sorcery]) && all(this) transforms((,newability[choice name(Counter) fizzle target(*|stack)],newability[choice name(Tap all Creatures) tap(noevent) all(creature|opponentbattlefield)],newability[choice name(Draw) draw:1 controller])) -auto=choice name(Tap all Creatures and...) tap(noevent) all(creature|opponentbattlefield) && all(this) transforms((,newability[choice name(Counter) fizzle target(*|stack)],newability[choice name(Return Permanent) moveTo(ownerhand) target(*[-instant;-sorcery])],newability[choice name(Draw) draw:1 controller])) -auto=choice name(Draw and...) draw:1 controller && all(this) transforms((,newability[choice name(Counter) fizzle target(*|stack)],newability[choice name(Return Permanent) moveTo(ownerhand) target(*[-instant;-sorcery])],newability[choice name(Tap all Creatures) tap(noevent) all(creature|opponentbattlefield)])) +auto=if type(*|stack)~morethan~0 then if type(*|battlefield)~morethan~0 then choice name(Counter spell and return permanent) name(Counter spell and return permanent) name(Counter spell and return permanent) target(*|stack) transforms((,newability[fizzle])) forever && ability$!name(Return permanent) name(Return permanent) target(*|battlefield) moveto(ownerHand)!$ controller +auto=if type(*|stack)~morethan~0 then choice name(Counter spell and tap creatures) name(Counter spell and tap creatures) target(*|stack) transforms((,newability[fizzle])) forever && all(creature|opponentBattlefield) tap +auto=if type(*|stack)~morethan~0 then choice name(Counter spell and draw) name(Counter spell and draw) target(*|stack) transforms((,newability[fizzle])) forever && draw:1 controller +auto=if type(*|battlefield)~morethan~0 then choice name(Return permanent and tap creatures) name(Return permanent and tap creatures) target(*|battlefield) moveto(ownerHand) && all(creature|opponentBattlefield) tap +auto=if type(*|battlefield)~morethan~0 then choice name(Return permanent and draw) name(Return permanent and draw) target(*|battlefield) moveto(ownerHand) && draw:1 controller +auto=choice name(Tap creatures and draw) draw:1 controller && all(creature|opponentBattlefield) tap text=Choose two — Counter target spell; or return target permanent to its owner's hand; or tap all creatures your opponents control; or draw a card. mana={1}{U}{U}{U} type=Instant @@ -12907,6 +13542,27 @@ mana={X}{W}{U} type=Sorcery [/card] [card] +name=Dancing Sword +auto={1}:equip +auto=teach(creature) 2/1 +auto=@movedto(graveyard) from(mytgt|battlefield):may name(Becomes construct) all(this) flip(Dancing Sword Construct) +text=Equipped creature gets +2/+1. -- When equipped creature dies, you may have Dancing Sword become a 2/1 Construct artifact creature with flying and ward {1}. If you do, it isn’t an Equipment. -- Equip {1} +mana={1}{W} +type=Artifact +subtype=Equipment +[/card] +[card] +name=Dancing Sword Construct +abilities=flying +auto=@targeted(this) from(*|opponentzones):choice name(This spell costs 1 more) name(This spell costs 1 more) target(*|opponentzones) transforms((,newability[pay[[{1}]] name(pay 1 mana) donothing?fizzle])) oneshot +text=Flying -- Ward {1} +mana={1}{W} +type=Artifact Creature +subtype=Construct +power=2 +toughness=1 +[/card] +[card] name=Danitha Capashen, Paragon abilities=first strike, vigilance, lifelink auto=lord(aura|mycastingzone) altercost(colorless,-1) @@ -12919,6 +13575,14 @@ power=2 toughness=2 [/card] [card] +name=Danse Macabre +auto=name(Sacrifice a creature) target(creature[-token]|mybattlefield) sacrifice and!( transforms((,newability[phaseaction[endofturn once] removeallcounters(0/0.1.DanseEffect)],newability[counter(0/0.1.DanseEffect)],newability[@dierolled(this|mygraveyard) from(controller) once:if compare(lastrollresultplustoughnessplusend)~lessthan~15 then target(creature[counter{0/0.1.DanseEffect}]|graveyard) moveto(mybattlefield) else target(creature[counter{0/0.1.DanseEffect}]|graveyard) moveto(mybattlefield)],newability[name(Roll a d20) rolld20 20 winability donothing winabilityend rolld20end])) ueot )! +auto=ability$!name(Sacrifice creature) name(Sacrifice creature) notatarget(creature[-token]|mybattlefield) sacrifice and!( transforms((,newability[phaseaction[endofturn once] removeallcounters(0/0.1.DanseEffect)],newability[counter(0/0.1.DanseEffect)])) ueot )! !$ opponent +text=Each player sacrifices a nontoken creature. Roll a d20 and add the toughness of the creature you sacrificed this way. -- 1-14 | Return a creature card put into a graveyard this way to the battlefield under your control. -- 15+ | Return up to two creature cards put into a graveyard this way to the battlefield under your control +mana={3}{B}{B} +type=Sorcery +[/card] +[card] name=Dargo, the Shipwrecker abilities=trample,partner other={2}{R}{S(*[artifact;creature]|mybattlefield)}{S(*[artifact;creature]|mybattlefield)} name(Sacrifice 2 permanents) @@ -13168,7 +13832,7 @@ toughness=3 [/card] [card] name=Dawn of Hope -auto=@lifeof(player) from(*[-lifefaker]):pay({2}) draw:1 +auto=@lifeof(player) from(*[-lifefaker]|*):pay({2}) draw:1 auto={3}{W}:create(soldier:creature soldier:1/1:white:lifelink) text=Whenever you gain life, you may pay {2}. If you do, draw a card. -- {3}{W}: Create a 1/1 white Soldier creature token with lifelink. mana={1}{W} @@ -13185,6 +13849,18 @@ mana={2}{W}{W} type=Sorcery [/card] [card] +name=Dawnbringer Cleric +auto=choice name(Gain 2 life) life:2 controller +auto=choice name(Destroy enchantment) target(enchantment|battlefield) destroy +auto=choice name(Exile card) target(*|graveyard) moveto(exile) +text=When Dawnbringer Cleric enters the battlefield, choose one — -- • Cure Wounds — You gain 2 life. -- • Dispel Magic — Destroy target enchantment. -- • Gentle Repose — Exile target card from a graveyard. +mana={1}{W} +type=Creature +subtype=Human Cleric +power=1 +toughness=4 +[/card] +[card] name=Dawnglade Regent auto=becomesmonarch controller auto=lord(*|myBattlefield) transforms((,newability[this(variable{pmonarch}>0) opponentshroud])) @@ -13449,6 +14125,14 @@ mana={B}{G} type=Sorcery [/card] [card] +name=Deadly Dispute +auto=draw:2 controller +auto=token(Treasure Sur) +text=As an additional cost to cast this spell, sacrifice an artifact or creature. -- Draw two cards and create a Treasure token. (It’s an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") +mana={1}{B}{S(*[creature;artifact]|myBattlefield)} +type=Instant +[/card] +[card] name=Deadly Rollick target=creature auto=moveTo(exile) @@ -13494,6 +14178,19 @@ mana={W} type=Enchantment [/card] [card] +name=Death Tyrant +abilities=menace +auto=lord(creature[attacking]|mybattlefield) transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Create zombie) token(Zombie Lil)])) +auto=lord(creature[blocking]|opponentbattlefield) transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Create zombie) token(Zombie Lil) opponent])) +autograveyard={5}{B}:name(Return to battlefield) moveto(mybattlefield) and!( tap(novent) )! +text=Menace -- Negative Energy Cone — Whenever an attacking creature you control or a blocking creature an opponent controls dies, create a 2/2 black Zombie creature token. -- {5}{B}: Return Death Tyrant from your graveyard to the battlefield tapped. +mana={4}{B} +type=Creature +subtype=Beholder Skeleton +power=4 +toughness=6 +[/card] +[card] name=Death's Oasis auto=@movedto(creature[-token;manacost=1]|mygraveyard) from(mybattlefield):transforms((,newability[deplete:2 controller],newability[name(Return creature with cost < 1) moveto(myhand) target(creature[manacost<=0]|mygraveyard)])) forever auto=@movedto(creature[-token;manacost=2]|mygraveyard) from(mybattlefield):transforms((,newability[deplete:2 controller],newability[name(Return creature with cost < 2) moveto(myhand) target(creature[manacost<=1]|mygraveyard)])) forever @@ -13522,6 +14219,17 @@ mana={W}{B}{G} type=Enchantment [/card] [card] +name=Death-Priest of Myrkul +auto=lord(*[zombie;vampire;skeleton]|myBattlefield) 1/1 +auto=@each my endofturn restriction{morbid}:pay({1}) name(Pay 1 and create skeleton) token(Skeleton,Creature Skeleton,1/1,black) +text=Skeletons, Vampires, and Zombies you control get +1/+1. -- At the beginning of your end step, if a creature died this turn, you may pay {1}. If you do, create a 1/1 black Skeleton creature token. +mana={2}{B}{B} +type=Creature +subtype=Tiefling Cleric +power=2 +toughness=2 +[/card] +[card] name=Deathbloom Thallid auto=@movedTo(this|graveyard) from(battlefield):create(saproling:creature saproling:1/1:green:) text=When Deathbloom Thallid dies, create a 1/1 green Saproling creature token. @@ -13663,7 +14371,8 @@ toughness=3 [/card] [card] name=Decoy Gambit -auto=transforms((,newability[pay[[{Draw:1 controller}]] name(Draw a card) donothing?moveTo(ownerHand) target(creature)])) oneshot +target=creature|opponentbattlefield +auto=name(Draw or return) transforms((,newability[choice name(Opponent draw a card) draw:1 opponent],newability[choice name(Return to hand) moveTo(ownerhand)])) oneshot text=For each opponent, choose up to one target creature that player controls, then return that creature to its owner’s hand unless its controller has you draw a card. mana={2}{U} type=Instant @@ -13793,8 +14502,8 @@ type=Instant [/card] [card] name=Defense Grid -auto=restriction{during my turn}: lord(*|nonbattlezone) altercost(colorless,+3) opponent -auto=restriction{during opponent turn}: lord(*|nonbattlezone) altercost(colorless,+3) controller +auto=this(variable{controllerturn}>0) lord(*|opponentzones) altercost(colorless,+3) +auto=this(variable{opponentturn}>0) lord(*|myzones) altercost(colorless,+3) text=Each spell costs {3} more to cast except during its controller's turn. mana={2} type=Artifact @@ -13861,6 +14570,37 @@ power=2 toughness=1 [/card] [card] +name=Delina, Wild Mage +auto=@combat(attacking) source(this):name(Roll a d20) rolld20 20 winability donothing winabilityend rolld20end +auto=@combat(attacking) source(this):name(Choose your creature) target(creature|mybattlefield) counter(0/0.1.DelinaEffect) +auto=@dierolled(this) result(1) from(controller):all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) transforms((,newability[removeallcounters(0/0.1.DelinaEffect)],newability[clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(2) from(controller):all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) transforms((,newability[removeallcounters(0/0.1.DelinaEffect)],newability[clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(3) from(controller):all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) transforms((,newability[removeallcounters(0/0.1.DelinaEffect)],newability[clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(4) from(controller):all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) transforms((,newability[removeallcounters(0/0.1.DelinaEffect)],newability[clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(5) from(controller):all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) transforms((,newability[removeallcounters(0/0.1.DelinaEffect)],newability[clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(6) from(controller):all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) transforms((,newability[removeallcounters(0/0.1.DelinaEffect)],newability[clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(7) from(controller):all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) transforms((,newability[removeallcounters(0/0.1.DelinaEffect)],newability[clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(8) from(controller):all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) transforms((,newability[removeallcounters(0/0.1.DelinaEffect)],newability[clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(9) from(controller):all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) transforms((,newability[removeallcounters(0/0.1.DelinaEffect)],newability[clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(10) from(controller):all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) transforms((,newability[removeallcounters(0/0.1.DelinaEffect)],newability[clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(11) from(controller):all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) transforms((,newability[removeallcounters(0/0.1.DelinaEffect)],newability[clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(12) from(controller):all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) transforms((,newability[removeallcounters(0/0.1.DelinaEffect)],newability[clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(13) from(controller):all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) transforms((,newability[removeallcounters(0/0.1.DelinaEffect)],newability[clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(14) from(controller):all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) transforms((,newability[removeallcounters(0/0.1.DelinaEffect)],newability[clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(15) from(controller):name(may roll d20 again) transforms((,newability[choice name name(Roll d20 again) rolld20 20 winability donothing winabilityend rolld20end],newability[choice name name(Stop rolling d20) all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) removeallcounters(0/0.1.DelinaEffect)],newability[name(Copy creature) all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(16) from(controller):name(may roll d20 again) transforms((,newability[choice name name(Roll d20 again) rolld20 20 winability donothing winabilityend rolld20end],newability[choice name name(Stop rolling d20) all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) removeallcounters(0/0.1.DelinaEffect)],newability[name(Copy creature) all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(17) from(controller):name(may roll d20 again) transforms((,newability[choice name name(Roll d20 again) rolld20 20 winability donothing winabilityend rolld20end],newability[choice name name(Stop rolling d20) all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) removeallcounters(0/0.1.DelinaEffect)],newability[name(Copy creature) all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(18) from(controller):name(may roll d20 again) transforms((,newability[choice name name(Roll d20 again) rolld20 20 winability donothing winabilityend rolld20end],newability[choice name name(Stop rolling d20) all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) removeallcounters(0/0.1.DelinaEffect)],newability[name(Copy creature) all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(19) from(controller):name(may roll d20 again) transforms((,newability[choice name name(Roll d20 again) rolld20 20 winability donothing winabilityend rolld20end],newability[choice name name(Stop rolling d20) all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) removeallcounters(0/0.1.DelinaEffect)],newability[name(Copy creature) all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) clone with(treason^battleready) options(nolegend)])) oneshot +auto=@dierolled(this) result(20) from(controller):name(may roll d20 again) transforms((,newability[choice name name(Roll d20 again) rolld20 20 winability donothing winabilityend rolld20end],newability[choice name name(Stop rolling d20) all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) removeallcounters(0/0.1.DelinaEffect)],newability[name(Copy creature) all(creature[counter{0/0.1.DelinaEffect}]|mybattlefield) clone with(treason^battleready) options(nolegend)])) oneshot +text=Whenever Delina, Wild Mage attacks, choose target creature you control, then roll a d20. -- 1-14 | Create a tapped and attacking token that’s a copy of that creature except it’s not legendary and it has "Exile this creature at end of combat." -- 15-20 | Create one of those tokens. You may roll again. +mana={3}{R} +type=Legendary Creature +subtype=Elf Shaman +power=3 +toughness=2 +[/card] +[card] name=Deliver Unto Evil auto=moveto(exile) all(this) auto=if type(planeswalker[bolas]|mybattlefield)~morethan~0 then target(*|mygraveyard) moveto(myhand) @@ -13870,6 +14610,16 @@ mana={2}{B} type=Sorcery [/card] [card] +name=Delver's Torch +auto={3}:equip +auto=teach(creature) 1/1 +auto=@combat(attacking) source(mytgt) restriction{compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0}:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=Equipped creature gets +1/+1. -- Whenever equipped creature attacks, venture into the dungeon. (Enter the first room or advance to the next room.) -- Equip {3} ({3}: Attach to target creature you control. Equip only as a sorcery.) +mana={1}{W} +type=Artifact +subtype=Equipment +[/card] +[card] name=Demanding Dragon abilities=flying auto=damage:5 target(opponent) @@ -13881,6 +14631,36 @@ power=5 toughness=5 [/card] [card] +name=Demilich +other={U}{U}{U} name(Cast Demilich) +otherrestriction=thisturn(*[instant;sorcery]|mystack)~equalto~1 +restriction=thisturn(*[instant;sorcery]|mystack)~equalto~0 +autohand={U}{U} restriction{thisturn(*[instant;sorcery]|mystack)~equalto~2}:name(Cast Demilich) name(Cast Demilich) activate castcard(normal) +autohand={U} restriction{thisturn(*[instant;sorcery]|mystack)~equalto~3}:name(Cast Demilich) name(Cast Demilich) activate castcard(normal) +autohand={0} restriction{thisturn(*[instant;sorcery]|mystack)~morethan~3}:name(Cast Demilich) name(Cast Demilich) activate castcard(normal) +autograveyard={U}{U}{U}{U} restriction{type(*[instant;sorcery]|mygraveyard)~morethan~3,thisturn(*[instant;sorcery]|mystack)~equalto~0}:name(Cast Demilich) name(Cast Demilich) transforms((,newability[activate castcard(normal)],newability[name(Exile 4 cards) target(<4>*[instant;sorcery]|mygraveyard) moveto(myexile)])) oneshot +autograveyard={U}{U}{U} restriction{type(*[instant;sorcery]|mygraveyard)~morethan~3,thisturn(*[instant;sorcery]|mystack)~equalto~1}:name(Cast Demilich) name(Cast Demilich) transforms((,newability[activate castcard(normal)],newability[name(Exile 4 cards) target(<4>*[instant;sorcery]|mygraveyard) moveto(myexile)])) oneshot +autograveyard={U}{U} restriction{type(*[instant;sorcery]|mygraveyard)~morethan~3,thisturn(*[instant;sorcery]|mystack)~equalto~2}:name(Cast Demilich) name(Cast Demilich) transforms((,newability[activate castcard(normal)],newability[name(Exile 4 cards) target(<4>*[instant;sorcery]|mygraveyard) moveto(myexile)])) oneshot +autograveyard={U} restriction{type(*[instant;sorcery]|mygraveyard)~morethan~3,thisturn(*[instant;sorcery]|mystack)~equalto~3}:name(Cast Demilich) name(Cast Demilich) transforms((,newability[activate castcard(normal)],newability[name(Exile 4 cards) target(<4>*[instant;sorcery]|mygraveyard) moveto(myexile)])) oneshot +autograveyard={0} restriction{type(*[instant;sorcery]|mygraveyard)~morethan~3,thisturn(*[instant;sorcery]|mystack)~morethan~3}:name(Cast Demilich) name(Cast Demilich) transforms((,newability[activate castcard(normal)],newability[name(Exile 4 cards) target(<4>*[instant;sorcery]|mygraveyard) moveto(myexile)])) oneshot +auto=@combat(attacking) source(this):may name(Exile instant or sorcery) target(*[instant;sorcery]|mygraveyard) moveTo(exile) and!( transforms((,newability[may name(Copy and cast) activate castcard(copied)])) oneshot )! +text=This spell costs {U} less to cast for each instant and sorcery you’ve cast this turn. -- Whenever Demilich attacks, exile up to one target instant or sorcery card from your graveyard. Copy it. You may cast the copy. -- You may cast Demilich from your graveyard by exiling four instants and/or sorcery cards from your graveyard in addition to paying its other costs. +mana={U}{U}{U}{U} +type=Creature +subtype=Skeleton Wizard +power=4 +toughness=3 +[/card] +[card] +name=Demogorgon's Clutches +auto=deplete:2 opponent +auto=life:-2 opponent +auto=ability$!name(Discard 2 cards) name(Discard 2 cards) notatarget(<2>*|myhand) reject!$ opponent +text=Target opponent discards two cards, mills two cards, and loses 2 life. (To mill a card, a player puts the top card of their library into their graveyard.) +mana={2}{B} +type=Sorcery +[/card] +[card] name=Demon Arc abilities=flyng type=Creature @@ -14014,6 +14794,14 @@ type=Enchantment subtype=Aura [/card] [card] +name=Den of the Bugbear +auto=if compare(type:land:myBattlefield)~morethan~2 then tap(noevent) +auto={T}:Add{R} +auto={3}{R}:name(Becomes goblin) transforms((,newability[becomes(Creature Goblin^3/2^red) ueot],newability[@combat(attacking) source(this):name(Create goblin) token(Goblin^Creature Goblin^1/1^red^battleready)])) ueot +text=If you control two or more other lands, Den of the Bugbear enters the battlefield tapped. -- {T}: Add {R}. -- {3}{R}: Until end of turn, Den of the Bugbear becomes a 3/2 red Goblin creature with "Whenever this creature attacks, create a 1/1 red Goblin creature token that’s tapped and attacking." It’s still a land. +type=Land +[/card] +[card] name=Deny the Divine target=creature,enchantment|stack auto=fizzleto(exile) @@ -14416,6 +15204,16 @@ power=3 toughness=2 [/card] [card] +name=Devoted Paladin +auto=all(creature|mybattlefield) transforms((,newability[1/1],newability[vigilance])) ueot +text=Beacon of Hope — When Devoted Paladin enters the battlefield, creatures you control get +1/+1 and gain vigilance until end of turn. +mana={4}{W} +type=Creature +subtype=Orc Knight +power=4 +toughness=4 +[/card] +[card] name=Devotee of Strength auto={4}{G}:2/2 target(creature) text={4}{G}: Target creature gets +2/+2 until end of turn. @@ -14426,6 +15224,17 @@ power=3 toughness=2 [/card] [card] +name=Devour Intellect +other={S(treasure[-tapped]|mybattlefield)} name(Pay with treasure) +otherrestriction=type(treasure[-tapped]|mybattlefield)~morethan~0 +auto=if paid(alternative) then if type(*[-land]|opponenthand)~morethan~0 then name(Discard non-land card) name(Discard non-land card) name(Discard a non-land card) reject target(*[-land]|opponenthand) +auto=if paid(alternative) then if type(*[-land]|opponenthand)~equalto~0 then name(Reveal hand) name(Reveal hand) name(Reveal hand) target(*|opponenthand) moveto(opponentreveal) and!( moveto(opponenthand) )! +auto=ifnot paid(alternative) then ability$!name(Discard a card) name(Discard a card) notatarget(*|myhand) reject!$ opponent +text=Target opponent discards a card. If mana from a Treasure was spent to cast this spell, instead that player reveals their hand, you choose a nonland card from it, then that player discards a card. +mana={B} +type=Sorcery +[/card] +[card] name=Devourer of Memory auto=@movedTo(*|myGraveyard) from(myLibrary):1/1 && unblockable ueot auto={1}{U}{B}:deplete:1 controller @@ -14688,7 +15497,7 @@ toughness=1 [/card] [card] name=Dina, Soul Steeper -auto=@lifeof(player) from(*[-lifefaker]):life:-1 opponent +auto=@lifeof(player) from(*[-lifefaker]|*):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} @@ -14778,7 +15587,7 @@ toughness=2 [/card] [card] name=Dire Fleet Neckbreaker -auto=lord(creature[pirate;attacking]|myBattlefield) +2/+0 +auto=lord(pirate[attacking]|myBattlefield) +2/+0 text=Attacking Pirates you control get +2/+0. mana={2}{B}{R} type=Creature @@ -14829,6 +15638,16 @@ mana={W}{B} type=Instant [/card] [card] +name=Dire Wolf Prowler +auto={1}{G}:name(Gets 2/2 and haste) transforms((newability[2/2],newability[haste])) ueot limit:1 +text={1}{G}: Dire Wolf Prowler gets +2/+2 and gains haste until end of turn. Activate only once each turn. +mana={2}{G} +type=Creature +subtype=Wolf +power=2 +toughness=2 +[/card] +[card] name=Direct Current target=player,creature,planeswalker auto=damage:2 @@ -14957,6 +15776,17 @@ power=2 toughness=2 [/card] [card] +name=Displacer Beast +auto=if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +auto={3}{U}:name(Return to hand) moveto(ownerhand) +text=When Displacer Beast enters the battlefield, venture into the dungeon. (Enter the first room or advance to the next room.) -- Displacement — {3}{U}: Return Displacer Beast to its owner’s hand. +mana={2}{U} +type=Creature +subtype=Cat Beast +power=3 +toughness=2 +[/card] +[card] name=Display of Dominance auto=choice name(Destroy) destroy target(*[blue;black;-creature]) auto=choice name(Protection) lord(*|mybattlefield) cantbetargetof(*[blue;black]|opponentstack) @@ -15070,6 +15900,17 @@ mana={W}{W} type=Sorcery [/card] [card] +name=Divine Smite +restriction=type(*[creature;planeswalker]|opponentbattlefield)~morethan~0 +auto=if type(creature[black]|opponentbattlefield)~morethan~0 then choice name(Exile black creature) name(Exile black creature) target(creature[black]|opponentbattlefield) moveto(exile) +auto=if type(planeswalker[black]|opponentbattlefield)~morethan~0 then choice name(Exile black planeswalker) name(Exile black planeswalker) target(planeswalker[black]|opponentbattlefield) moveto(exile) +auto=if type(creature[-black]|opponentbattlefield)~morethan~0 then choice name(Phase out non-black creature) name(Phase out non-black creature) target(creature[-black]|opponentbattlefield) phaseout +auto=if type(planeswalker[-black]|opponentbattlefield)~morethan~0 then choice name(Phase out non-black planeswalker) name(Phase out non-black planeswalker) target(planeswalker[-black]|opponentbattlefield) phaseout +text=Target creature or planeswalker an opponent controls phases out. If that permanent is black, exile it instead. (If it phases out, treat it and anything attached to it as though they don’t exist until its controller’s next turn.) +mana={1}{W} +type=Instant +[/card] +[card] name=Divine Visitation auto=@movedto(creature[token]|mybattlefield):all(trigger) destroy && token(Angel,Creature Angel,4/4,white,flying,vigilance) text=If one or more creature tokens would be created under your control, that many 4/4 white Angel creature tokens with flying and vigilance are created instead. @@ -15084,6 +15925,14 @@ mana={4} type=Artifact [/card] [card] +name=Diviner's Portent +aicode=activate transforms((,newability[draw:x controller])) oneshot +auto=name(Roll a d20) rolld20 20 winability scry:x scrycore delayed draw:x controller scrycoreend scryend winabilityend loseability if compare(lastrollresultplustype:*:myhandplusend)~lessthan~15 then draw:x controller else name(Scry and draw) scry:x scrycore delayed draw:x controller scrycoreend scryend loseabilityend rolld20end +text=Roll a d20 and add the number of cards in your hand. -- 1-14 | Draw X cards. -- 15+ | Scry X, then draw X cards. +mana={X}{U}{U}{U} +type=Instant +[/card] +[card] name=Djeru's Renunciation abilities=cycling target=creature @@ -15107,7 +15956,7 @@ type=Instant [card] name=Djeru, With Eyes Open abilities=vigilance -auto=activate target(planeswalker|mylibrary) moveto(myhand) +auto=target(planeswalker|mylibrary) moveto(myhand) auto=@damaged(planeswalker):counter(0/0,1,Loyalty) all(trigger[to]) text=Vigilance -- When Djeru, With Eyes Open enters the battlefield, you may search your library for a planeswalker card, reveal it, put it into your hand, then shuffle your library. -- If a source would deal damage to a planeswalker you control, prevent 1 of that damage. mana={3}{W}{W} @@ -15133,6 +15982,38 @@ power=2 toughness=7 [/card] [card] +name=Djinni Windseer +abilities=flying +aicode=activate transforms((,newability[all(*[zpos<=1]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveto(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot +auto=transforms((,newability[name(Roll a d20) rolld20 20 winability donothing winabilityend rolld20end])) oneshot +auto=@dierolled(this) result(1) from(controller):name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(2) from(controller):name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(3) from(controller):name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(4) from(controller):name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(5) from(controller):name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(6) from(controller):name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(7) from(controller):name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(8) from(controller):name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(9) from(controller):name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(10) from(controller):name(Scry 2) scry:2 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(11) from(controller):name(Scry 2) scry:2 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(12) from(controller):name(Scry 2) scry:2 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(13) from(controller):name(Scry 2) scry:2 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(14) from(controller):name(Scry 2) scry:2 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(15) from(controller):name(Scry 2) scry:2 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(16) from(controller):name(Scry 2) scry:2 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(17) from(controller):name(Scry 2) scry:2 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(18) from(controller):name(Scry 2) scry:2 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(19) from(controller):name(Scry 2) scry:2 scrycore delayed dontshow donothing scrycoreend scryend +auto=@dierolled(this) result(20) from(controller):name(Scry 3) scry:3 scrycore delayed dontshow donothing scrycoreend scryend +text=Flying -- When Djinni Windseeker enters the battlefield, roll a d20. -- 1-9 | Scry 1. -- 10-19 | Scry 2. -- 20 | Scry 3. +mana={3}{U} +type=Creature +subtype=Djinn +power=3 +toughness=3 +[/card] +[card] name=Dockside Extortionist auto=foreach(type:*[artifact,enchantment]:opponentbattlefield) token(435451) text=When Dockside Extortionist enters the battlefield, create X Treasure tokens, where X is the number of artifacts and enchantments your opponents control. (Treasure tokens are artifacts with " {T}, Sacrifice this artifact: Add one mana of any color.") @@ -15143,6 +16024,16 @@ power=1 toughness=2 [/card] [card] +name=Dog Mor +anyzone=twicetype:*:myhand/twicetype:*:myhand cdaactive +text=This creature’s power and toughness are each equal to twice the number of cards in your hand. +type=Creature +subtype=Dog Illusion +power=* +toughness=* +color=blue +[/card] +[card] name=Dog Rin type=Creature subtype=Dog @@ -15450,6 +16341,18 @@ type=Legendary Artifact subtype=Equipment [/card] [card] +name=Dragon Turtle +abilities=flash +auto=freeze +auto=name(Drag Below) target(creature|opponentbattlefield) freeze +text=Flash -- Drag Below — When Dragon Turtle enters the battlefield, tap it and up to one target creature an opponent controls. They don’t untap during their controllers’ next untap steps. +mana={1}{U}{U} +type=Creature +subtype=Dragon Turtle +power=3 +toughness=5 +[/card] +[card] name=Dragon's Approach auto=damage:3 opponent auto=if type(Dragon's Approach|mygraveyard)~morethan~3 then may name(Search Dragon and exile 5 Dragon's Approach) target(dragon|mylibrary) moveto(mybattlefield) and!( transforms((,newability[shuffle],newability[target(<5>*[Dragon's Approach]|mygraveyard) moveto(myexile)])) oneshot )! @@ -15458,6 +16361,18 @@ mana={2}{R} type=Sorcery [/card] [card] +name=Dragon's Disciple +auto=@targeted(*[dragon]|myBattlefield) from(*[|opponentzones):choice name(This spell costs 1 more) name(This spell costs 1 more) target(*|opponentzones) transforms((,newability[pay[[{1}]] name(pay 1 mana) donothing?fizzle])) oneshot +auto=if type(*[dragon]|mybattlefield)~morethan~0 then counter(1/1) +auto=if type(*[dragon]|mybattlefield)~equalto~0 then if type(*[dragon]|myhand)~morethan~0 then may name(Reveal a dragon) counter(1/1) +text=As Dragon’s Disciple enters the battlefield, you may reveal a Dragon card from your hand. If you do, or if you control a Dragon, Dragon’s Disciple enters the battlefield with a +1/+1 counter on it. -- Dragons you control have ward {1}. (Whenever a Dragon you control becomes the target of a spell or ability an opponent controls, counter it unless that player pays {1}.) +mana={1}{W} +type=Creature +subtype=Human Monk +power=1 +toughness=3 +[/card] +[card] name=Dragon's Eye Savants aicode=name(look) activate name(look) target(*|opponenthand) donothing facedown={3} @@ -15471,6 +16386,56 @@ power=0 toughness=6 [/card] [card] +name=Dragon's Fire +target=creature,planeswalker +auto=choice name(Don't choose or reveal any dragon) damage:3 +auto=if type(dragon[power=0]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 0) name(Choose dragon with power 0) damage:0 +auto=if type(dragon[power=1]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 1) name(Choose dragon with power 1) damage:1 +auto=if type(dragon[power=2]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 2) name(Choose dragon with power 2) damage:2 +auto=if type(dragon[power=3]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 3) name(Choose dragon with power 3) damage:3 +auto=if type(dragon[power=4]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 4) name(Choose dragon with power 4) damage:4 +auto=if type(dragon[power=5]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 5) name(Choose dragon with power 5) damage:5 +auto=if type(dragon[power=6]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 6) name(Choose dragon with power 6) damage:6 +auto=if type(dragon[power=7]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 7) name(Choose dragon with power 7) damage:7 +auto=if type(dragon[power=8]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 8) name(Choose dragon with power 8) damage:8 +auto=if type(dragon[power=9]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 9) name(Choose dragon with power 9) damage:9 +auto=if type(dragon[power=10]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 10) name(Choose dragon with power 10) damage:10 +auto=if type(dragon[power=11]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 11) name(Choose dragon with power 11) damage:11 +auto=if type(dragon[power=12]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 12) name(Choose dragon with power 12) damage:12 +auto=if type(dragon[power=13]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 13) name(Choose dragon with power 13) damage:13 +auto=if type(dragon[power=14]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 14) name(Choose dragon with power 14) damage:14 +auto=if type(dragon[power=15]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 15) name(Choose dragon with power 15) damage:15 +auto=if type(dragon[power=16]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 16) name(Choose dragon with power 16) damage:16 +auto=if type(dragon[power=17]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 17) name(Choose dragon with power 17) damage:17 +auto=if type(dragon[power=18]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 18) name(Choose dragon with power 18) damage:18 +auto=if type(dragon[power=19]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 19) name(Choose dragon with power 19) damage:19 +auto=if type(dragon[power>=20]|mybattlefield)~morethan~0 then choice name(Choose dragon with power 20) name(Choose dragon with power 20) damage:20 +auto=if type(dragon[power=0]|myhand)~morethan~0 then choice name(Reveal dragon with power 0) name(Reveal dragon with power 0) damage:0 +auto=if type(dragon[power=1]|myhand)~morethan~0 then choice name(Reveal dragon with power 1) name(Reveal dragon with power 1) damage:1 +auto=if type(dragon[power=2]|myhand)~morethan~0 then choice name(Reveal dragon with power 2) name(Reveal dragon with power 2) damage:2 +auto=if type(dragon[power=3]|myhand)~morethan~0 then choice name(Reveal dragon with power 3) name(Reveal dragon with power 3) damage:3 +auto=if type(dragon[power=4]|myhand)~morethan~0 then choice name(Reveal dragon with power 4) name(Reveal dragon with power 4) damage:4 +auto=if type(dragon[power=5]|myhand)~morethan~0 then choice name(Reveal dragon with power 5) name(Reveal dragon with power 5) damage:5 +auto=if type(dragon[power=6]|myhand)~morethan~0 then choice name(Reveal dragon with power 6) name(Reveal dragon with power 6) damage:6 +auto=if type(dragon[power=7]|myhand)~morethan~0 then choice name(Reveal dragon with power 7) name(Reveal dragon with power 7) damage:7 +auto=if type(dragon[power=8]|myhand)~morethan~0 then choice name(Reveal dragon with power 8) name(Reveal dragon with power 8) damage:8 +auto=if type(dragon[power=9]|myhand)~morethan~0 then choice name(Reveal dragon with power 9) name(Reveal dragon with power 9) damage:9 +auto=if type(dragon[power=10]|myhand)~morethan~0 then choice name(Reveal dragon with power 10) name(Reveal dragon with power 10) damage:10 +auto=if type(dragon[power=11]|myhand)~morethan~0 then choice name(Reveal dragon with power 11) name(Reveal dragon with power 11) damage:11 +auto=if type(dragon[power=12]|myhand)~morethan~0 then choice name(Reveal dragon with power 12) name(Reveal dragon with power 12) damage:12 +auto=if type(dragon[power=13]|myhand)~morethan~0 then choice name(Reveal dragon with power 13) name(Reveal dragon with power 13) damage:13 +auto=if type(dragon[power=14]|myhand)~morethan~0 then choice name(Reveal dragon with power 14) name(Reveal dragon with power 14) damage:14 +auto=if type(dragon[power=15]|myhand)~morethan~0 then choice name(Reveal dragon with power 15) name(Reveal dragon with power 15) damage:15 +auto=if type(dragon[power=16]|myhand)~morethan~0 then choice name(Reveal dragon with power 16) name(Reveal dragon with power 16) damage:16 +auto=if type(dragon[power=17]|myhand)~morethan~0 then choice name(Reveal dragon with power 17) name(Reveal dragon with power 17) damage:17 +auto=if type(dragon[power=18]|myhand)~morethan~0 then choice name(Reveal dragon with power 18) name(Reveal dragon with power 18) damage:18 +auto=if type(dragon[power=19]|myhand)~morethan~0 then choice name(Reveal dragon with power 19) name(Reveal dragon with power 19) damage:19 +auto=if type(dragon[power>=20]|myhand)~morethan~0 then choice name(Reveal dragon with power 20) name(Reveal dragon with power 20) damage:20 +text=As an additional cost to cast this spell, you may reveal a Dragon card from your hand or choose a Dragon you control. -- Dragon’s Fire deals 3 damage to target creature or planeswalker. If you revealed a Dragon card or chose a Dragon as you cast this spell, Dragon’s Fire deals damage equal to the power of that card or creature instead. +mana={1}{R} +type=Instant +[/card] +[card] name=Dragon's Hoard auto=@movedTo(*[Dragon]|myBattlefield):counter(0/0,1,gold) auto={T}{C(0/0,-1,gold)}:draw:1 @@ -15506,6 +16471,17 @@ power=1 toughness=1 [/card] [card] +name=Dragonborn Champion +abilities=trample +auto=@damaged(player) from(*|myzones) restriction{compare(thatmuch)~morethan~4}:name(Draw card) draw:1 controller +text=Trample -- Whenever a source you control deals 5 or more damage to a player, draw a card. +mana={2}{R}{G} +type=Creature +subtype=Dragon Warrior +power=5 +toughness=3 +[/card] +[card] name=Dragonkin Berserker abilities=boast,first strike auto={4}{R} restriction{didattack,compare(hascntbstreduce)~equalto~0}:doboast && token(Dragon,Creature Dragon,5/5,red,flying) limit:hasabilitytwoboastplus1plusend @@ -16058,9 +17034,20 @@ power=2 toughness=2 [/card] [card] +name=Drider +abilities=reach +auto=@combatdamaged(player) from(this):name(Create spider) token(Spider,Creature Spider,2/1,black,menace,flying) +text=Reach -- Whenever Drider deals combat damage to a player, create a 2/1 black Spider creature token with menace and reach. +mana={4}{B} +type=Creature +subtype=Elf Spider +power=4 +toughness=3 +[/card] +[card] name=Drill Bit target=player -auto=activate reject notatarget(*[-land]|targetedpersonshand) +auto=name(Choose and discard) target(*[-land]|targetedpersonshand) reject text=Spectacle {B} (You may cast this spell for its spectacle cost rather than its mana cost if an opponent lost life this turn.) -- Target player reveals their hand. You choose a nonland card from it. That player discards that card. other={B} name(Spectacle) otherrestriction=compare(oplifelost)~morethan~0 @@ -16077,6 +17064,37 @@ mana={1}{G} type=Sorcery [/card] [card] +name=Drizzt Do'Urden +abilities=double strike +auto=token(Guenhwyvar,Legendary Creature Cat,4/1,green,trample) +auto=@movedto(creature[power=1]|graveyard) from(battlefield) restriction{compare(power)~lessthan~1}:name(Put 1/1 counter) counter(1/1,1) +auto=@movedto(creature[power=2]|graveyard) from(battlefield) restriction{compare(power)~lessthan~2}:name(Put 1/1 counter) counter(1/1,2minuspowerminusend) +auto=@movedto(creature[power=3]|graveyard) from(battlefield) restriction{compare(power)~lessthan~3}:name(Put 1/1 counter) counter(1/1,3minuspowerminusend) +auto=@movedto(creature[power=4]|graveyard) from(battlefield) restriction{compare(power)~lessthan~4}:name(Put 1/1 counter) counter(1/1,4minuspowerminusend) +auto=@movedto(creature[power=5]|graveyard) from(battlefield) restriction{compare(power)~lessthan~5}:name(Put 1/1 counter) counter(1/1,5minuspowerminusend) +auto=@movedto(creature[power=6]|graveyard) from(battlefield) restriction{compare(power)~lessthan~6}:name(Put 1/1 counter) counter(1/1,6minuspowerminusend) +auto=@movedto(creature[power=7]|graveyard) from(battlefield) restriction{compare(power)~lessthan~7}:name(Put 1/1 counter) counter(1/1,7minuspowerminusend) +auto=@movedto(creature[power=8]|graveyard) from(battlefield) restriction{compare(power)~lessthan~8}:name(Put 1/1 counter) counter(1/1,8minuspowerminusend) +auto=@movedto(creature[power=9]|graveyard) from(battlefield) restriction{compare(power)~lessthan~9}:name(Put 1/1 counter) counter(1/1,9minuspowerminusend) +auto=@movedto(creature[power=10]|graveyard) from(battlefield) restriction{compare(power)~lessthan~10}:name(Put 1/1 counter) counter(1/1,10minuspowerminusend) +auto=@movedto(creature[power=11]|graveyard) from(battlefield) restriction{compare(power)~lessthan~11}:name(Put 1/1 counter) counter(1/1,11minuspowerminusend) +auto=@movedto(creature[power=12]|graveyard) from(battlefield) restriction{compare(power)~lessthan~12}:name(Put 1/1 counter) counter(1/1,12minuspowerminusend) +auto=@movedto(creature[power=13]|graveyard) from(battlefield) restriction{compare(power)~lessthan~13}:name(Put 1/1 counter) counter(1/1,13minuspowerminusend) +auto=@movedto(creature[power=14]|graveyard) from(battlefield) restriction{compare(power)~lessthan~14}:name(Put 1/1 counter) counter(1/1,14minuspowerminusend) +auto=@movedto(creature[power=15]|graveyard) from(battlefield) restriction{compare(power)~lessthan~15}:name(Put 1/1 counter) counter(1/1,15minuspowerminusend) +auto=@movedto(creature[power=16]|graveyard) from(battlefield) restriction{compare(power)~lessthan~16}:name(Put 1/1 counter) counter(1/1,16minuspowerminusend) +auto=@movedto(creature[power=17]|graveyard) from(battlefield) restriction{compare(power)~lessthan~17}:name(Put 1/1 counter) counter(1/1,17minuspowerminusend) +auto=@movedto(creature[power=18]|graveyard) from(battlefield) restriction{compare(power)~lessthan~18}:name(Put 1/1 counter) counter(1/1,18minuspowerminusend) +auto=@movedto(creature[power=19]|graveyard) from(battlefield) restriction{compare(power)~lessthan~19}:name(Put 1/1 counter) counter(1/1,19minuspowerminusend) +auto=@movedto(creature[power>=20]|graveyard) from(battlefield) restriction{compare(power)~lessthan~20}:name(Put 1/1 counter) counter(1/1,20minuspowerminusend) +text=Double strike -- When Drizzt Do'Urden enters the battlefield, create Guenhwyvar, a legendary 4/1 green Cat creature token with trample. -- Whenever a creature dies, if it had power greater than Drizzt’s power, put a number of +1/+1 counters on Drizzt equal to the difference. +mana={3}{G}{W} +type=Legendary Creature +subtype=Elf Ranger +power=3 +toughness=3 +[/card] +[card] name=Drossforge Bridge abilities=indestructible auto=tap(noevent) @@ -16145,6 +17163,19 @@ power=2 toughness=1 [/card] [card] +name=Druid Class +auto=counter(0/0,1,Level) +auto=_LANDFALL_life:1 controller +auto=this(variable{hascntlevel}=1) {2}{G}:name(Level 2) counter(0/0,1,Level) asSorcery +auto=this(variable{hascntlevel}>=2) maxPlay(land)+1 +auto=this(variable{hascntlevel}=2) {4}{G}:name(Level 3) counter(0/0,1,Level) asSorcery +auto=@counteradded(0/0.1.Level) restriction{compare(hascntlevel)~equalto~3}:name(Land become creature) target(land|mybattlefield) transforms((Creature,newability[haste],newability[type:land:myBattlefield/type:land:myBattlefield cdaactive])) forever +text=(Gain the next level as a sorcery to add its ability.) -- Whenever a land enters the battlefield under your control, you gain 1 life. -- {2}{G}: Level 2 -- You may play an additional land on each of your turns. -- {4}{G}: Level 3 -- When this Class becomes level 3, target land you control becomes a creature with haste and "This creature’s power and toughness are each equal to the number of lands you control." It’s still a land. +mana={1}{G} +type=Enchantment +subtype=Class +[/card] +[card] name=Druid of Horns auto=@targeted(this) from(Aura|mycastingzone):create(beast:creature beast:3/3:green:) text=Whenever you cast an Aura spell that targets Druid of Horns, create a 3/3 green Beast creature token. @@ -16155,6 +17186,17 @@ power=2 toughness=3 [/card] [card] +name=Druid of Purification +auto=may name(Destroy artifact or enchantment) target(*[artifact;enchantment]|opponentbattlefield) destroy +auto=ability$!name(Destroy artifact or enchantment) name(Destroy artifact or enchantment) may target(*[artifact;enchantment]|mybattlefield) destroy!$ opponent +text=When Druid of Purification enters the battlefield, starting with you, each player may choose an artifact or enchantment you don’t control. Destroy each permanent chosen this way. +mana={3}{G} +type=Creature +subtype=Human Druid +power=2 +toughness=3 +[/card] +[card] name=Druid of the Sacred Beaker auto={T}:foreach(Crossbreed Labs watermark|myBattlefield) add{G} text={T}: Add {G} for each Crossbreed Labs watermark among permanents you control. @@ -16218,6 +17260,17 @@ power=2 toughness=2 [/card] [card] +name=Dueling Rapier +abilities=flash +auto=aslongas(parents) rehook target(creature|mybattlefield) <1 +auto={4}:equip +auto=teach(creature) 2/0 +text=Flash -- When Dueling Rapier enters the battlefield, attach it to target creature you control. -- Equipped creature gets +2/+0. -- Equip {4} ({4}: Attach to target creature you control. Equip only as a sorcery.) +mana={R} +type=Artifact +subtype=Equipment +[/card] +[card] name=Dulcet Sirens facedown={3} autofacedown={U}:morph @@ -16256,6 +17309,49 @@ type=Land subtype=Desert [/card] [card] +name=Dungeon Crawler +auto=tap(noevent) +autograveyard=@dungeoncompleted(*[dungeon]|mysideboard) from(controller):may name(Return to hand) name(Return to hand) moveto(myhand) +text=Dungeon Crawler enters the battlefield tapped. -- Whenever you complete a dungeon, you may return Dungeon Crawler from your graveyard to your hand. +mana={B} +type=Creature +subtype=Zombie +power=2 +toughness=1 +[/card] +[card] +name=Dungeon Descent +auto=tap(noevent) +auto={T}:Add{C} +auto={4}{T}{T(creature[-tapped;legendary]|myBattlefield)}:name(Venture into the dungeon) if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot asSorcery +text=Dungeon Descent enters the battlefield tapped. -- {T}: Add {C}. -- {4}, {T}, Tap an untapped legendary creature you control: Venture into the dungeon. Activate only as a sorcery. (Enter the first room or advance to the next room.) +type=Land +[/card] +[card] +name=Dungeon Map +auto={T}:add{C} +auto={3}{T}:if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot asSorcery +text={T}: Add {C}. -- {3}, {T}: Venture into the dungeon. Activate only as a sorcery. (Enter the first room or advance to the next room.) +mana={3} +type=Artifact +[/card] +[card] +name=Dungeon of the Mad Mage +restriction=never +aicode=activate target(*[zpos<=3]|mylibrary) moveto(myhand) and!( transforms((,newability[zerocast],newability[draw:2 controller])) forever )! +autocommandzone=transforms((,newability[shroud],newability[indestructible])) forever +autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~1}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Yawning Portal) name(Yawning Portal) life:1 controller!$ controller +autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~2}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Dungeon Level) name(Dungeon Level) scry:1 scrycore delayed dontshow donothing scrycoreend scryend!$ controller +autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~3}:ability$!name(Goblin Bazaar or Twisted Caverns) all(Dungeon of the Mad Mage|mycommandzone) transforms((,newability[choice name(Goblin Bazaar) token(Treasure Sur)*type:*[twodngtrg]:mybattlefieldplus1plusend],newability[if type(creature|battlefield)~morethan~0 then choice name(Twisted Caverns) name(Twisted Caverns) target(creature|battlefield) transforms((,newability[cantattack],newability[cantpwattack])) uynt])) oneshot!$ controller +autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~4}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Lost Level) name(Lost Level) scry:2 scrycore delayed dontshow donothing scrycoreend scryend!$ controller +autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~5}:ability$!name(Runestone Caverns or Muiral's Graveyard) transforms((,newability[choice name(Muiral's Graveyard) token(Skeleton Mad)*twicetype:*[twodngtrg]:mybattlefieldplus1plusend],newability[choice name(Runestone Caverns) all(*[zpos<=twicecardcountabiltwodngtrgplus1plusend]|mylibrary) moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) oneshot!$ controller +autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~6}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Deep Mines) name(Deep Mines) scry:3 scrycore delayed dontshow donothing scrycoreend scryend!$ controller +autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~7}:choice name(Dungeon completed) all(Dungeon of the Mad Mage|mycommandzone) completedungeon:1 controller +autocommandzone=@counteradded(0/0,1,Explore) from(Dungeon of the Mad Mage|mycommandzone) restriction{compare(hascntexplore)~equalto~7}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Mad Wizard’s Lair) name(Mad Wizard’s Lair) reveal:3 optionone name(Choose a card) target(*|reveal) moveto(myhand) and!( transforms((,newability[zerocast])) forever )! optiononeend optiontwo all(*|reveal) moveto(myhand) optiontwoend revealend!$ controller +text=Yawning Portal - You gain 1 life. -- Dungeon Level - Scry 1. -- Goblin Bazaar - Create a Treasure token. -- Twisted Caverns - Target creature can’t attack until your next turn. -- Lost Level - Scry 2. -- Runestone Caverns - Exile the top two cards of your library. You may play them. -- Muiral’s Graveyard - Create two 1/1 black Skeleton creature tokens. -- Deep Mines - Scry 3. -- Mad Wizard’s Lair - Draw three cards and reveal them. You may cast one of them without paying its mana cost. +type=Dungeon +[/card] +[card] name=Duplicant auto=if type(creature[-token]|battlefield)~morethan~0 then may name(Exile non-token creature) name(Exile non-token creature) imprint target(creature[-token]) && all(this) becomes(evicttypes,evictpw/evictth) forever text=Imprint — When Duplicant enters the battlefield, you may exile target nontoken creature. -- As long as the exiled card is a creature card, Duplicant has that card's power, toughness, and creature types. It's still a Shapeshifter. @@ -16390,6 +17486,16 @@ power=2 toughness=5 [/card] [card] +name=Dwarfhold Champion +auto=this(gear > 0) 0/2 +text=As long as Dwarfhold Champion is equipped, it gets +0/+2. +mana={1}{W} +type=Creature +subtype=Dwarf Warrior +power=3 +toughness=1 +[/card] +[card] name=Dwarven Catapult auto=thisforeach(X) ability$!name(Choose a creature) damage:1 target(creature|opponentBattlefield)!$ controller text=Dwarven Catapult deals X damage divided evenly, rounded down, among all creatures target opponent controls. @@ -16508,6 +17614,27 @@ power=2 toughness=2 [/card] [card] +name=Earth-Cult Elemental +auto=transforms((,newability[name(Roll a d20) rolld20 20 winability donothing winabilityend rolld20end])) oneshot +auto=@dierolled(this) from(controller):name(Opponent sacrifice a permanent) ability$!name(Sacrifice a permanent) name(Sacrifice a permanent) notatarget(*|mybattlefield) sacrifice!$ opponent +auto=@dierolled(this) result(1) from(controller):name(Sacrifice Permanent) target(*|mybattlefield) sacrifice +auto=@dierolled(this) result(2) from(controller):name(Sacrifice Permanent) target(*|mybattlefield) sacrifice +auto=@dierolled(this) result(3) from(controller):name(Sacrifice Permanent) target(*|mybattlefield) sacrifice +auto=@dierolled(this) result(4) from(controller):name(Sacrifice Permanent) target(*|mybattlefield) sacrifice +auto=@dierolled(this) result(5) from(controller):name(Sacrifice Permanent) target(*|mybattlefield) sacrifice +auto=@dierolled(this) result(6) from(controller):name(Sacrifice Permanent) target(*|mybattlefield) sacrifice +auto=@dierolled(this) result(7) from(controller):name(Sacrifice Permanent) target(*|mybattlefield) sacrifice +auto=@dierolled(this) result(8) from(controller):name(Sacrifice Permanent) target(*|mybattlefield) sacrifice +auto=@dierolled(this) result(9) from(controller):name(Sacrifice Permanent) target(*|mybattlefield) sacrifice +auto=@dierolled(this) result(20) from(controller):name(Opponent sacrifice another permanent) ability$!name(Sacrifice a permanent) name(Sacrifice a permanent) notatarget(*|mybattlefield) sacrifice!$ opponent +text=Siege Monster — When Earth-Cult Elemental enters the battlefield, roll a d20. -- 1-9 | Each player sacrifices a permanent. -- 10-19 | Each opponent sacrifices a permanent. -- 20 | Each opponent sacrifices two permanents. +mana={4}{R}{R} +type=Creature +subtype=Elemental +power=6 +toughness=6 +[/card] +[card] name=Earth-Origin Yak auto=choice all(creature|mybattlefield) 1/1 ueot text=When Earth-Origin Yak enters the battlefield, creatures you control get +1/+1 until end of turn. @@ -16519,9 +17646,8 @@ toughness=4 [/card] [card] name=Earthshaker Giant -abilities=Trample -auto=all(other creature|myBattlefield) 3/3 -auto=all(other creature|myBattlefield) trample +abilities=trample +auto=name(Creatures get 3/3) all(other creature|myBattlefield) transforms((,newability[3/3],newability[trample])) ueot text=Trample -- When Earthshaker Giant enters the battlefield, other creatures you control get +3/+3 and gain trample until end of turn. mana={4}{G}{G} type=Creature @@ -16572,6 +17698,46 @@ mana={3}{B} type=Instant [/card] [card] +name=Ebondeath, Dracolich +abilities=flash,flying +auto=tap(noevent) +autograveyard={2}{B}{B} restriction{thisturn(creature[-Ebondeath^ Dracolich;fresh]|mygraveyard)~morethan~0}:name(Cast from graveyard) activate castcard(normal) +text=Flash -- Flying -- Ebondeath, Dracolich enters the battlefield tapped. -- You may cast Ebondeath, Dracolich from your graveyard if a creature not named Ebondeath, Dracolich died this turn. +mana={2}{B}{B} +type=Legendary Creature +subtype=Zombie Dragon +power=5 +toughness=2 +[/card] +[card] +name=Ebony Fly +auto=tap(noevent) +auto={T}:add{C} +auto={4}:name(Roll a d6) rolld6 6 winability donothing winabilityend rolld6end +auto=@dierolled(this) result(1) from(controller):may name(Becomes 1/1 insect) becomes(Creature Insect,1/1,flying) ueot +auto=@dierolled(this) result(2) from(controller):may name(Becomes 2/2 insect) becomes(Creature Insect,2/2,flying) ueot +auto=@dierolled(this) result(3) from(controller):may name(Becomes 3/3 insect) becomes(Creature Insect,3/3,flying) ueot +auto=@dierolled(this) result(4) from(controller):may name(Becomes 4/4 insect) becomes(Creature Insect,4/4,flying) ueot +auto=@dierolled(this) result(5) from(controller):may name(Becomes 5/5 insect) becomes(Creature Insect,5/5,flying) ueot +auto=@dierolled(this) result(6) from(controller):may name(Becomes 6/6 insect) becomes(Creature Insect,6/6,flying) ueot +auto=@combat(attacking) source(this):name(Another creature gains flying) target(other creature[attacking]|battlefield) transforms((,newability[flying])) ueot +text=Ebony Fly enters the battlefield tapped. -- {T}: Add {C}. -- {4}: Roll a d6. Until end of turn, you may have Ebony Fly become an X/X Insect artifact creature with flying, where X is the result. -- Whenever Ebony Fly attacks, another target attacking creature gains flying until end of turn. +mana={2} +type=Artifact +[/card] +[card] +name=Eccentric Apprentice +abilities=flying +auto=if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +auto=@each my combatbegins restriction{compare(pdungeoncompleted)~morethan~0}:may name(Creature becomes bird) target(creature|battlefield) transforms((Bird,setpower=1,settoughness=1,newability[flying])) ueot +text=Flying -- When Eccentric Apprentice enters the battlefield, venture into the dungeon. (Enter the first room or advance to the next room.) -- At the beginning of combat on your turn, if you’ve completed a dungeon, up to one target creature becomes a Bird with base power and toughness 1/1 and flying until end of turn. +mana={2}{U} +type=Creature +subtype=Tiefling Wizard +power=3 +toughness=5 +[/card] +[card] name=Echo Storm auto=thisforeach(variable{pnumofcommandcastplus1plusend}) ability$!name(Copy an artifact) name(Copy an artifact) clone target(artifact)!$ controller text=When you cast this spell, copy it for each time you've cast your commander from the command zone this game. You may choose new targets for the copies. -- Create a token that's a copy of target artifact. @@ -16637,7 +17803,7 @@ toughness=4 [/card] [card] name=Edgewall Innkeeper -auto=@movedTo(creature[adventure]|myBattlefield):draw:1 controller +auto=@movedTo(creature[adventure]|myStack):all(trigger[to]) transforms((,newability[ifnot paid(alternative) then draw:1 controller])) oneshot text=Whenever you cast a creature spell that has an Adventure, draw a card. (It doesn't need to have gone on the adventure first.) mana={G} type=Creature @@ -17048,9 +18214,10 @@ type=Artifact [/card] [card] name=Elsha of the Infinite -abilities=prowess +abilities=prowess,showfromtoplibrary +auto=this(variable{type:*[-land;-creature;zpos=1]:mylibrary}>0) lord(*[zpos=1]|mylibrary) flash +auto=this(variable{type:*[-land;-creature;zpos=1]:mylibrary}>0) canplayfromlibrarytop auto=@movedTo(*[-creature]|mystack):1/1 ueot -abilities=showfromtoplibrary,canplayartifactlibrarytop,canplayinstantsorcerylibrarytop text=Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.) -- You may look at the top card of your library any time. -- You may cast the top card of your library if it's a noncreature, nonland card, and you may cast it as though it had flash. mana={2}{U}{R}{W} type=Legendary Creature @@ -17094,6 +18261,17 @@ type=Enchantment subtype=Saga [/card] [card] +name=Elturgard Ranger +abilities=reach +auto=name(Create wolf) token(Wolf,Creature Wolf,2/2,green) +text=Reach -- When Elturgard Ranger enters the battlefield, create a 2/2 green Wolf creature token. +mana={4}{G} +type=Creature +subtype=Human Elf Ranger +power=4 +toughness=1 +[/card] +[card] name=Elven Ambush auto=token(Warrior,Creature Elf Warrior,1/1,green)*type:elf:mybattlefield text=Create a 1/1 green Elf Warrior creature token for each Elf you control. @@ -17147,8 +18325,8 @@ toughness=3 [card] name=Elvish Impersonators auto=all(this) transforms((Creature Summon Elves,setpower=1,settoughness=1)) forever -auto=all(this) rolladie 6 winability lastrollresultminus1minusend/0 winabilityend loseability lastrollresultminus1minusend/0 loseabilityend rollend -auto=all(this) rolladie 6 winability 0/lastrollresultminus1minusend winabilityend loseability 0/lastrollresultminus1minusend loseabilityend rollend +auto=all(this) rolld6 6 winability lastrollresultminus1minusend/0 winabilityend loseability lastrollresultminus1minusend/0 loseabilityend rolld6end +auto=all(this) rolld6 6 winability 0/lastrollresultminus1minusend winabilityend loseability 0/lastrollresultminus1minusend loseabilityend rolld6end text=When you play Elvish Impersonators, roll two six-sided dice one after the other. Elvish Impersonators comes into play with power equal to the first die roll and toughness equal to the second. mana={3}{G} type=Summon @@ -17199,7 +18377,7 @@ type=Artifact name=Embercleave abilities=flash anyzone=foreach(creature[attacking]|battlefield) changecost(colorless:-1) forcedalive -auto=aslongas(parents) rehook target(creature|mybattlefield) <1 +auto=aslongas(parents) name(Attach to creature) rehook target(creature|myBattlefield) <1 auto=teach(creature) double strike auto=teach(creature) trample auto=teach(creature) 1/1 @@ -17853,7 +19031,7 @@ type=Sorcery [/card] [card] name=Epicure of Blood -auto=@lifeof(player) from(*[-lifefaker]):life:-1 opponent +auto=@lifeof(player) from(*[-lifefaker]|*):life:-1 opponent text=Whenever you gain life, each opponent loses 1 life. mana={4}{B} type=Creature @@ -18369,7 +19547,7 @@ type=Sorcery [/card] [card] name=Evolution Sage -auto=@movedTo(land|myBattlefield):_PROLIFERATE_ +auto=@movedTo(land|myBattlefield):name(Proliferate) NotATarget(*) duplicatecounters(single) text=Whenever a land enters the battlefield under your control, proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) mana={2}{G} type=Creature @@ -18531,7 +19709,7 @@ type=Sorcery 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 -autoexile=@movedto(creature[counter{0/0.1.ExhumerHaunted}]|graveyard) from(battlefield):name(Return creature to hand) moveto(myhand) target(creature|mygraveyard) +autoexile=@movedto(creature[counter{0/0.1.ExhumerHaunted}]|graveyard) from(battlefield) once:name(Return creature to hand) moveto(myhand) target(creature|mygraveyard) text=Haunt (When this creature dies, exile it haunting target creature.) -- When Exhumer Thrull enters the battlefield or the creature it haunts dies, return target creature card from your graveyard to your hand. mana={5}{B} type=Creature @@ -18641,8 +19819,7 @@ type=Instant [/card] [card] name=Experimental Frenzy -abilities=showfromtoplibrary -auto=canplayfromlibrarytop +abilities=showfromtoplibrary,canplayfromlibrarytop auto=lord(*|myhand) altercost(colorless, 99) auto=maxPlay(land)-99 auto={3}{R}:destroy all(this) @@ -18779,6 +19956,14 @@ power=4 toughness=2 [/card] [card] +name=Extract Brain +aicode=activate target(*[zpos<=fullpaid]|opponenthand) activate castcard(normal) +auto=name(Look opponent hand) reveal:x revealzone(opponenthand) optionone name(Cast card) target(*|reveal) activate castcard(normal) optiononeend optiontwo name(Put back) all(*|reveal) moveto(ownerhand) optiontwoend revealend +text=Target opponent chooses X cards from their hand. Look at those cards. You may cast a spell from among them without paying its mana cost. +mana={X}{U}{B} +type=Sorcery +[/card] +[card] name=Extus, Oriq Overlord abilities=double strike other={6}{B}{R} name(Awaken the Blood Avatar) @@ -18830,6 +20015,14 @@ power=1 toughness=1 [/card] [card] +name=Eye of Vecna +auto=draw:1 controller && life:-2 controller +auto=@each my upkeep:name(Pay 2 to draw) pay[[{2}]] name(Pay 2) draw:1 controller && life:-2 controller +text=When Eye of Vecna enters the battlefield, you draw a card and you lose 2 life. -- At the beginning of your upkeep, you may pay {2}. If you do, you draw a card and you lose 2 life. +mana={2} +type=Legendary Artifact +[/card] +[card] name=Eyeblight Cullers auto=@movedTo(this|graveyard) from(battlefield):token(Elf Warrior,Creature Elf Warrior,1/1,green)*3 auto=@movedTo(this|graveyard) from(battlefield):deplete:3 controller @@ -18861,6 +20054,14 @@ mana={2}{U} type=Enchantment [/card] [card] +name=Eyes of the Beholder +target=creature +auto=-11/-11 ueot +text=Target creature gets -11/-11 until end of turn. +mana={4}{B}{B} +type=Instant +[/card] +[card] name=Eyetwitch abilities=flying auto=@movedto(this|graveyard) from(mybattlefield):name(Learn) transforms((,newability[if type(*[lesson]|mysideboard)~morethan~0 then choice name(Put lesson in hand) name(Put lesson in hand) target(*[lesson]|mysideboard) moveto(myhand)],newability[if type(*|myhand)~morethan~0 then choice name(Discard and draw) name(Discard and draw) target(*|myhand) reject and!(draw:1)!],newability[if type(Retriever Phoenix|mygraveyard)~morethan~0 then choice name(Return a Retriever Phoenix) name(Return a Retriever Phoenix) target(Retriever Phoenix|mygraveyard) moveto(myBattlefield)],newability[choice name(Don't learn) donothing])) oneshot @@ -18920,6 +20121,13 @@ text={T}, Sacrifice Fabled Passage: Search your library for a basic land card, p type=Land [/card] [card] +name=Fabled Path of Searo Point +auto={W}{U}{B}{R}{G}{T}:all(creature|myBattlefield) transforms((,newability[this(variable{type:land:opponentbattlefield}>0) unblockable])) ueot +text={W}{U}{B}{R}{G}, {T}: Creatures you control gain landwalk until end of turn. +type=Legendary Land +subtype=Mountain +[/card] +[card] name=Faceless Haven auto={T}:add{C} auto={i}{i}{i}:transforms((Creature,setpower=4,settoughness=3,newability[vigilance],newability[changeling])) ueot @@ -19197,7 +20405,7 @@ toughness=2 [card] name=Famished Paladin auto=doesnotuntap -auto=@lifeof(player) from(*[-lifefaker]):untap(this) +auto=@lifeof(player) from(*[-lifefaker]|*):untap(this) text=Famished Paladin doesn't untap during your untap step. -- Whenever you gain life, untap Famished Paladin. mana={1}{W} type=Creature @@ -19272,6 +20480,37 @@ power=1 toughness=1 [/card] [card] +name=Farideh's Fireball +target=creature,planeswalker +auto=damage:5 +auto=damage:2 opponent +auto=name(Roll a d20) rolld20 20 winability donothing winabilityend loseability if compare(srclastrollresult)~lessthan~10 then damage:2 controller loseabilityend rolld20end +text=Farideh’s Fireball deals 5 damage to target creature or planeswalker. Roll a d20. -- 1-9 | Farideh’s Fireball deals 2 damage to each player. -- 10-20 | Farideh’s Fireball deals 2 damage to each opponent. +mana={3}{R}{R} +type=Instant +[/card] +[card] +name=Farideh, Devil's Chosen +auto=@dierolled(*|mybattlefield) from(controller):name(Gains flying and menace) transforms((,newability[flying],newability[menace])) ueot +auto=@dierolled(*|mybattlefield) result(10) from(controller):name(Draw a card) draw:1 controller +auto=@dierolled(*|mybattlefield) result(11) from(controller):name(Draw a card) draw:1 controller +auto=@dierolled(*|mybattlefield) result(12) from(controller):name(Draw a card) draw:1 controller +auto=@dierolled(*|mybattlefield) result(13) from(controller):name(Draw a card) draw:1 controller +auto=@dierolled(*|mybattlefield) result(14) from(controller):name(Draw a card) draw:1 controller +auto=@dierolled(*|mybattlefield) result(15) from(controller):name(Draw a card) draw:1 controller +auto=@dierolled(*|mybattlefield) result(16) from(controller):name(Draw a card) draw:1 controller +auto=@dierolled(*|mybattlefield) result(17) from(controller):name(Draw a card) draw:1 controller +auto=@dierolled(*|mybattlefield) result(18) from(controller):name(Draw a card) draw:1 controller +auto=@dierolled(*|mybattlefield) result(19) from(controller):name(Draw a card) draw:1 controller +auto=@dierolled(*|mybattlefield) result(20) from(controller):name(Draw a card) draw:1 controller +text=Dark One’s Own Luck — Whenever you roll one or more dice, Farideh, Devil’s Chosen gains flying and menace until end of turn. If any of those results was 10 or higher, draw a card. +mana={2}{U}{R} +type=Legendary Creature +subtype=Tiefling Warlock +power=3 +toughness=3 +[/card] +[card] name=Farm // Market target=creature[attacking;blocking] auto=destroy @@ -19323,6 +20562,14 @@ mana={2}{R} type=Instant [/card] [card] +name=Fates' Reversal +auto=may name(Return creature to hand) target(creature|mygraveyard) moveTo(myhand) +auto=if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=Return up to one target creature card from your graveyard to your hand. Venture into the dungeon. (Enter the first room or advance to the next room.) +mana={1}{B} +type=Sorcery +[/card] +[card] name=Fathom Fleet Boarder auto=aslongas(pirate|myBattlefield)~lessthan~1 life:-1 text=When Fathom Fleet Boarder enters the battlefield, you lose 2 life unless you control another Pirate. @@ -19534,8 +20781,16 @@ mana={1}{B} type=Sorcery [/card] [card] +name=Feign Death +target=creature +auto=transforms((,newability[inplaytapdeath],newability[counterdeath])) ueot +text=Until end of turn, target creature gains "When this creature dies, return it to the battlefield tapped under it owner’s control with a +1/+1 counter on it." +mana={B} +type=Instant +[/card] +[card] name=Feisty Stegosaurus -auto=name(Choose creature and roll a die) name(Choose creature and roll a die) target(creature|opponentBattlefield) rolladie 6 winability damage:lastrollresult winabilityend loseability damage:lastrollresult loseabilityend rollend +auto=name(Choose creature and roll a die) name(Choose creature and roll a die) target(creature|opponentBattlefield) rolld6 6 winability damage:lastrollresult winabilityend loseability damage:lastrollresult loseabilityend rolld6end text=When this creature enters the battlefield, roll a six-sided die. This creature deals damage equal to the result to target creature an opponent controls. mana={4}{R} type=Host Creature @@ -19854,6 +21109,37 @@ type=Land subtype=Island Swamp [/card] [card] +name=Fevered Suspicion +auto=if rebound then ability$!moveto(exile) all(Fevered Suspicion|mystack)!$ controller +autoexile=@rebounded:may activate castcard(normal) +auto=name(Exile cards) all(*[zpos<=oppofindfirsttypenonland]|opponentlibrary) moveto(exile) and!( counter(0/0.1.FeveredExiled) )! +auto=token(FeveredEffect,FeveredEffect,0/0,shroud,indestructible) and!( transforms((,newability[{0}:name(Cast exiled card) target(*[-land;counter{0/0.1.FeveredExiled}]|opponentexile) activate castcard(normal)])) forever )! +text=Each opponent exiles cards from the top of their library until they exile a nonland card. You may cast any number of spells from among those nonland cards without paying their mana costs. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) +mana={6}{B}{R} +type=Sorcery +[/card] +[card] +name=Fey Steed +auto=@combat(attacking) source(this):name(Creature gains indestructible) target(other creature[attacking]|mybattlefield) transforms((,newability[indestructible])) ueot +auto=@targeted(*[creature;planeswalker]|mybattlefield) from(*|opponentzones):may name(Draw a card) draw:1 controller +text=Whenever Fey Steed attacks, another target attacking creature you control gains indestructible until end of turn. -- Whenever a creature or planeswalker you control becomes the target of a spell or ability an opponent controls, you may draw a card. +mana={2}{W}{W} +type=Creature +subtype=Elk +power=4 +toughness=4 +[/card] +[card] +name=Feywild Trickster +auto=@dierolled(*|mybattlefield) from(controller):name(Create Faerie) token(Faerie Dragon,Creature Faerie Dragon,1/1,blue,flying) +text=Whenever you roll one or more dice, create a 1/1 blue Faerie Dragon creature token with flying. +mana={2}{U} +type=Creature +subtype=Gnome Warlock +power=2 +toughness=2 +[/card] +[card] name=Fibrous Entangler abilities=vigilance auto=@combat(attacking) source(this):all(creature|opponentbattlefield) mustblock ueot @@ -19892,8 +21178,8 @@ type=Land name=Field of the Dead auto=tap(noevent) auto={T}:add{C} -auto=aslongas(land|myBattlefield) create(zombie:creature zombie:2/2:black) >7 -auto=aslongas(land|myBattlefield) @movedTo(land|myBattlefield):create(zombie:creature zombie:2/2:black) >7 +auto=if type(land|myBattlefield)~morethan~6 then name(Create zombie) token(Zombie,Creature Zombie,2/2,black) +auto=@movedTo(other land|myBattlefield) restriction{type(land|myBattlefield)~morethan~6}:name(Create zombie) token(Zombie,Creature Zombie,2/2,black) text=Field of the Dead enters the battlefield tapped. -- {T}: Add {1}. -- Whenever Field of the Dead or another land enters the battlefield under your control, if you control seven or more lands with different names, create a 2/2 black Zombie creature token. type=Land [/card] @@ -19939,6 +21225,17 @@ power=5 toughness=5 [/card] [card] +name=Fiendlash +auto={2}{R}:equip +auto=@damaged(mytgt):name(Deal damage) target(player,planeswalker) damage:power +auto=teach(creature) 2/0 +auto=teach(creature) reach +text=Equipped creature gets +2/+0 and has reach. -- Whenever equipped creature is dealt damage, it deals damage equal to its power to target player or planeswalker. -- Equip {2}{R} +mana={1}{R} +type=Artifact +subtype=Equipment +[/card] +[card] name=Fierce Guardianship target=*[-creature]|stack auto=fizzle @@ -20039,6 +21336,15 @@ mana={R}{G}{W} type=Sorcery [/card] [card] +name=Fifty Feet of Rope +auto={T}:name(Wall can't block) target(*[wall]|battlefield) transforms((,newability[cantblock])) ueot +auto={3}{T}:name(Creature doesn’t untap) target(creature|battlefield) transforms((,newability[doesnotuntap])) uynt +auto={4}{T}:name(Venture into the dungeon) if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot asSorcery +text=Climb Over — {T}: Target Wall can’t block this turn. -- Tie Up — {3}, {T}: Target creature doesn’t untap during its controller’s next untap step. -- Rappel Down — {4}, {T}: Venture into the dungeon. Activate only as a sorcery. (Enter the first room or advance to the next room.) +mana={1} +type=Artifact +[/card] +[card] name=Fight as One target=creature|mybattlefield other={W} name(Both) @@ -20059,6 +21365,19 @@ mana={2}{R} type=Sorcery [/card] [card] +name=Fighter Class +auto=counter(0/0,1,Level) +auto=name(Search equipment) target(artifact[equipment]|mylibrary) moveTo(myhand) and!( shuffle )! +auto=this(variable{hascntlevel}=1) {1}{R}{W}:name(Level 2) counter(0/0,1,Level) asSorcery +auto=this(variable{hascntlevel}>=2) lord(artifact[equipment]|myBattlefield) transforms((,newability[{0}:name(Add 2 mana for equip) add{C}{C}])) +auto=this(variable{hascntlevel}=2) {3}{R}{W}:name(Level 3) counter(0/0,1,Level) asSorcery +auto=@combat(attacking) source(creature|mybattlefield) restriction{compare(hascntlevel)~morethan~2}:may name(Creature has to block) target(creature|opponentbattlefield) transforms((,newability[mustblock])) ueot +text=(Gain the next level as a sorcery to add its ability.) -- When Fighter Class enters the battlefield, search your library for an Equipment card, reveal it, put it into your hand, then shuffle. -- {1}{R}{W}: Level 2 -- Equip abilities you activate cost {2} less to activate. -- {3}{R}{W}: Level 3 -- Whenever a creature you control attacks, up to one target creature blocks it this combat if able. +mana={R}{W} +type=Enchantment +subtype=Class +[/card] +[card] name=Filigree Attendant abilities=flying anyzone=type:artifact:myBattlefield/3 cdaactive @@ -20176,6 +21495,16 @@ mana={BG}{BG} type=Sorcery [/card] [card] +name=Find the Path +target=land +auto=if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +auto=teach(land) transforms((,newability[{T}:name(Add 2 green mana) add{G}{G}])) +text=Enchant land -- When Find the Path enters the battlefield, venture into the dungeon. (Enter the first room or advance to the next room.) -- Enchanted land has "{T}: Add {G}{G}." +mana={2}{G} +type=Enchantment +subtype=Aura +[/card] +[card] name=Finishing Blow target=creature,planeswalker auto=destroy @@ -20767,6 +22096,19 @@ mana={3}{R} type=Sorcery [/card] [card] +name=Flameskull +abilities=cantblock,flying +auto=@movedto(this|graveyard) from(battlefield):name(Rejuvenation) transforms((,newability[all(creature[-token;fresh:zpos=type:*:mygraveyard]|mygraveyard) moveto(exile) and!( transforms((,newability[phaseaction[my endofturn once next checkex] removeallcounters(0/0.1.FlameskullExiled)],newability[this(counter{0/0.1.FlameskullExiled}>0) canplayfromexile],newability[counter(0/0.1.FlameskullExiled)],newability[all(*[zpos=1]|mylibrary) moveTo(myexile) and!( transforms((,newability[counter(0/0.1.FlameskullExiled)],newability[this(counter{0/0.1.FlameskullExiled}>0) canplayfromexile],newability[@each untap restriction{compare(hascntflameskullexiled)~equalto~0}:-canplayfromexile],newability[@each untap restriction{compare(hascntflameskullexiled)~morethan~0}:canplayfromexile],newability[phaseaction[my endofturn once next checkex] removeallcounters(0/0.1.FlameskullExiled)],newability[@movedto(this|mystack) from(myexile) restriction{compare(hascntflameskullexiled)~morethan~0}:all(*[counter{0/0.1.FlameskullExiled}]|myexile) removeallcounters(0/0.1.FlameskullExiled)],newability[@movedto(this|mybattlefield) from(myexile) restriction{compare(hascntflameskullexiled)~morethan~0}:all(*[counter{0/0.1.FlameskullExiled}]|myexile) removeallcounters(0/0.1.FlameskullExiled)])) forever )!])) forever )!])) forever +autoexile=@movedto(*[counter{0/0.1.FlameskullExiled}]|mystack) from(myexile) restriction{compare(hascntflameskullexiled)~morethan~0}:all(*[counter{0/0.1.FlameskullExiled}]|myexile) transforms((,newability[removeallcounters(0/0.1.FlameskullExiled)],newability[-canplayfromexile])) oneshot +autoexile=@movedto(land[counter{0/0.1.FlameskullExiled}]|mybattlefield) from(myexile) restriction{compare(hascntflameskullexiled)~morethan~0}:all(*[counter{0/0.1.FlameskullExiled}]|myexile) transforms((,newability[removeallcounters(0/0.1.FlameskullExiled)],newability[-canplayfromexile])) oneshot +text=Flying -- Flameskull can’t block. -- Rejuvenation — When Flameskull dies, exile it. If you do, exile the top card of your library. Until the end of your next turn, you may play one of those cards. (If you cast Flameskull this way, you can’t play the other card, and vice versa.) +mana={1}{R}{R} +type=Creature +subtype=Skeleton +power=3 +toughness=1 +[/card] +[card] name=Flamespeaker Adept auto=@scryed(*|mybattlefield,mystack):all(this) transforms((,newability[2/0],newability[first strike])) ueot text=Whenever you scry, Flamespeaker Adept gets +2/+0 and gains first strike until end of turn. @@ -20966,6 +22308,17 @@ power=4 toughness=4 [/card] [card] +name=Flumph +abilities=defender,flying +auto=@damaged(this):name(Draw a card) draw:1 controller && draw:1 opponent +text=Defender, flying -- Whenever Flumph is dealt damage, you and target opponent each draw a card. +mana={1}{W} +type=Creature +subtype=Jellyfish +power=0 +toughness=4 +[/card] +[card] name=Flunk target=creature auto=transforms((,newability[-7minusphandcountminusend/-7minusphandcountminusend ueot])) ueot @@ -20995,7 +22348,7 @@ toughness=2 [/card] [card] name=Flux Channeler -auto=@movedTo(*[-creature]|mystack):_PROLIFERATE_ +auto=@movedTo(*[-creature]|mystack):name(Proliferate) NotATarget() duplicatecounters(single) text=Whenever you cast a noncreature spell, proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) mana={2}{U} type=Creature @@ -21004,6 +22357,16 @@ power=2 toughness=2 [/card] [card] +name=Fly +target=creature +auto=teach(creature) flying +auto=@combatdamaged(player) from(mytgt) restriction{compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0}:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=Enchant creature -- Enchanted creature has flying and "Whenever this creature deals combat damage to a player, venture into the dungeon." (Enter the first room or advance to the next room.) +mana={U} +type=Enchantment +subtype=Aura +[/card] +[card] name=Flycatcher Giraffid auto=this(counter{0/0.1.Vigilance}>=1) vigilance auto=this(counter{0/0.1.Reach}>=1) reach @@ -21319,6 +22682,19 @@ text=Colorless creatures you control get +2/+2. -- Whenever you tap a permanent type=Legendary Artifact [/card] [card] +name=Forsworn Paladin +abilities=menace +auto={1}{B}{L:1}{T}:name(Create treasure) token(Treasure Sur) +auto={2}{B}:name(Pay without treasure) target(creature) 2/0 ueot +auto={2}{S(treasure[-tapped]|mybattlefield)}:name(Pay with treasure) target(creature) transforms((,newability[2/0],newability[deathtouch])) ueot +text=Menace -- {1}{B}, {T}, Pay 1 life: Create a Treasure token. -- {2}{B}: Target creature get +2/+0 until end of turn. If mana from a Treasure was spent to activate this ability, that creature also gains deathtouch until end of turn. +mana={B} +type=Creature +subtype=Human Knight +power=1 +toughness=1 +[/card] +[card] name=Fortifying Draught auto=life:2 controller auto=target(creature) lifegain/lifegain ueot @@ -21632,6 +23008,17 @@ power=3 toughness=2 [/card] [card] +name=Froghemoth +abilities=trample,haste +auto=@combatdamaged(player) from(this):name(Exile cards) transforms((,newability[name(Exile cards) target(*|opponentgraveyard) moveto(exile) and!( all(this) counter(1/1) && if cantargetcard(*[-creature]|*) then life:1 controller )!])) oneshot +text=Trample, haste -- Whenever Froghemoth deals combat damage to a player, exile up to that many target cards from their graveyard. Put a +1/+1 counter on Froghemoth for each creature exiled this way. You gain 1 life for each noncreature card exiled this way. +mana={3}{G}{G} +type=Creature +subtype=Frog Horror +power=4 +toughness=4 +[/card] +[card] name=Frogify target=creature auto=teach(creature) loseabilities @@ -22064,6 +23451,17 @@ power=3 toughness=2 [/card] [card] +name=Galea, Kindler of Hope +abilities=vigilance,showfromtoplibrary,canplayauraequiplibrarytop +auto=@movedto(*[equipment]|mystack) from(mylibrary):transforms((,newability[@movedto(*[equipment]|mybattlefield) once:all(trigger[to]) transforms((,newability[name(Attach to creature) rehook target(creature|mybattlefield)])) forever])) ueot +text=Vigilance -- You may look at the top card of your library any time. -- You may cast Aura and Equipment spells from the top of your library. When you cast an Equipment spell this way, it gains "When this Equipment enters the battlefield, attach it to target creature you control." +mana={1}{G}{U}{W} +type=Legendary Creature +subtype=Elf Knight +power=4 +toughness=4 +[/card] +[card] name=Galecaster Colossus auto={T(wizard|myBattlefield)}:target(*[-land]|opponentBattlefield) moveTo(ownerHand) text=Tap an untapped Wizard you control: Return target nonland permanent you don't control to its owner's hand. @@ -22161,7 +23559,7 @@ toughness=3 [card] name=Garbage Elemental (c) auto=@combat(attacking) source(this):all(other creature[attacking]) 1/0 ueot -auto=all(this) rolladie winability token(Goblin,Creature Goblin,1/1,red)*lastrollresultminuslastrollchoiceminusend winabilityend loseability token(Goblin,Creature Goblin,1/1,red)*lastrollresultminuslastrollchoiceminusend loseabilityend rollend +auto=all(this) rolld6 winability token(Goblin,Creature Goblin,1/1,red)*lastrollresultminuslastrollchoiceminusend winabilityend loseability token(Goblin,Creature Goblin,1/1,red)*lastrollresultminuslastrollchoiceminusend loseabilityend rolld6end text=Battle cry (Whenever this creature attacks, each other attacking creature gets +1/+0 until end of turn.) -- When Garbage Elemental enters the battlefield, roll two six-sided dice. Create a number of 1/1 red Goblin creature tokens equal to the difference between those results. mana={4}{R} type=Creature @@ -22172,8 +23570,8 @@ toughness=2 [card] name=Garbage Elemental (d) autostack=if casted(this) then cascade:plibrarycount -auto=choice name(Damage opponent) all(this) rolladie 6 winability damage:lastrollresult opponent winabilityend loseability damage:lastrollresult opponent loseabilityend rollend -auto=if type(planeswalker|battlefield)~morethan~0 then choice name(Damage planeswalker) target(planeswalker) rolladie 6 winability damage:lastrollresult winabilityend loseability damage:lastrollresult loseabilityend rollend +auto=choice name(Damage opponent) all(this) rolld6 6 winability damage:lastrollresult opponent winabilityend loseability damage:lastrollresult opponent loseabilityend rolld6end +auto=if type(planeswalker|battlefield)~morethan~0 then choice name(Damage planeswalker) target(planeswalker) rolld6 6 winability damage:lastrollresult winabilityend loseability damage:lastrollresult loseabilityend rolld6end text=Cascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom of your library in a random order.) -- When Garbage Elemental enters the battlefield, roll a six-sided die. Garbage Elemental deals damage equal to the result to target opponent or planeswalker. mana={4}{R} type=Creature @@ -22208,7 +23606,7 @@ toughness=4 [/card] [card] name=Garenbrig Squire -auto=@movedTo(creature[adventure]|myBattlefield):1/1 ueot +auto=@movedTo(creature[adventure]|myStack):all(trigger[to]) transforms((,newability[ifnot paid(alternative) then all(Garenbrig Squire|myBattlefield) 1/1 ueot])) ueot text=Whenever you cast a creature spell that has an Adventure, Garenbrig Squire gets +1/+1 until end of turn. (It doesn't need to have gone on the adventure first.) mana={1}{G} type=Creature @@ -22461,6 +23859,38 @@ power=1 toughness=2 [/card] [card] +name=Gelatinous Cube +auto=name(Engulf) target(creature[-ooze]|opponentbattlefield) imprint +auto=this(variable{hasevict}>0) transforms((,newability[@movedto(this|nonbattlezone) from(battlefield):name(Return exiled creature) target(creature[evictname]|opponentexile) moveTo(ownerbattlefield)] +auto=this(variable{hasevict}>0) this(variable{evictmc}=0) {B}:name(X=0) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=1) {1}{B}:name(X=1) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=2) {2}{B}:name(X=2) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=3) {3}{B}:name(X=3) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=4) {4}{B}:name(X=4) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=5) {5}{B}:name(X=5) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=6) {6}{B}:name(X=6) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=7) {7}{B}:name(X=7) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=8) {8}{B}:name(X=8) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=9) {9}{B}:name(X=9) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=10) {10}{B}:name(X=10) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=11) {11}{B}:name(X=11) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=12) {12}{B}:name(X=12) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=13) {13}{B}:name(X=13) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=14) {14}{B}:name(X=14) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=15) {15}{B}:name(X=15) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=16) {16}{B}:name(X=16) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=17) {17}{B}:name(X=17) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=18) {18}{B}:name(X=18) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}=19) {19}{B}:name(X=19) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +auto=this(variable{hasevict}>0) this(variable{evictmc}>=20) {20}{B}:name(X=20) target(creature[evictname]|opponentexile) moveto(ownergraveyard) +text=Engulf — When Gelatinous Cube enters the battlefield, exile target non-Ooze creature an opponent controls until Gelatinous Cube leaves the battlefield. -- Dissolve — {X}{B}: Put target creature card with mana value X exiled with Gelatinous Cube into its owner’s graveyard. +mana={2}{B}{B} +type=Creature +subtype=Ooze +power=4 +toughness=3 +[/card] +[card] name=Gem of Becoming auto={3}{T}{S}:name(search lands) ability$!name(Island) moveto(myhand) notatarget(*[island]|mylibrary)!$ controller && ability$!name(Swamp) moveto(myhand) notatarget(*[swamp]|mylibrary)!$ controller && ability$!name(Mountain) moveto(myhand) notatarget(*[mountain]|mylibrary)!$ controller text={3}, {T}, Sacrifice Gem of Becoming: Search your library for an Island card, a Swamp card, and a Mountain card. Reveal those cards and put them into your hand. Then shuffle your library. @@ -22977,7 +24407,7 @@ type=Sorcery [/card] [card] name=Gideon's Company -auto=@lifeof(player) from(*[-lifefaker]):counter(1/1,2) +auto=@lifeof(player) from(*[-lifefaker]|*):counter(1/1,2) auto={3}{W}:counter(0/0,1,Loyalty) target(planeswalker[gideon]) text=Whenever you gain life, put two +1/+1 counters on Gideon's Company. -- {3}{W}: Put a loyalty counter on target Gideon planeswalker. mana={3}{W} @@ -23198,6 +24628,7 @@ toughness=1 [/card] [card] name=Gingerbread Cabin +auto={T}:add{G} auto=aslongas(other land[forest]|myBattlefield) tap(noevent) <3 oneshot auto=if this(untapped) token(-473141) once text={T}: Add {G}. -- Gingerbread Cabin enters the battlefield tapped unless you control three or more other Forests. -- When Gingerbread Cabin enters the battlefield untapped, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") @@ -23599,6 +25030,16 @@ power=8 toughness=6 [/card] [card] +name=Gloom Stalker +auto=this(variable{pdungeoncompleted}>0) double strike +text=As long as you’ve completed a dungeon, Gloom Stalker has double strike. +mana={2}{W} +type=Creature +subtype=Dwarf Ranger +power=2 +toughness=3 +[/card] +[card] name=Glorifier of Dusk auto={L:2}:flying ueot auto={L:2}:vigilance ueot @@ -23806,6 +25247,16 @@ power=1 toughness=1 [/card] [card] +name=Gnoll Hunter +auto=@combat(attacking) source(this) restriction{compare(pwrtotatt)~morethan~5}:name(Put 1/1 counter) counter(1/1) +text=Pack tactics — Whenever Gnoll Hunter attacks, if you attacked with creatures with total power 6 or greater this combat, put a +1/+1 counter on Gnoll Hunter. +mana={1}{G} +type=Creature +subtype=Gnoll +power=2 +toughness=2 +[/card] +[card] name=Gnome-Made Engine auto=token(Gnome,Artifact Creature Gnome,1/1) text=When this creature enters the battlefield, create a 1/1 colorless Gnome artifact creature token. @@ -23948,9 +25399,9 @@ toughness=1 [/card] [card] name=Goblin Bowling Team -auto=@damaged(creature) from(this):all(trigger[to]) rolladie 6 winability damage:lastrollresult winabilityend loseability damage:lastrollresult loseabilityend rollend -auto=@damageof(player) from(this):all(this) rolladie 6 winability damage:lastrollresult controller winabilityend loseability damage:lastrollresult controller loseabilityend rollend -auto=@damagefoeof(player) from(this):all(this) rolladie 6 winability damage:lastrollresult opponent winabilityend loseability damage:lastrollresult opponent loseabilityend rollend +auto=@damaged(creature) from(this):all(trigger[to]) rolld6 6 winability damage:lastrollresult winabilityend loseability damage:lastrollresult loseabilityend rolld6end +auto=@damageof(player) from(this):all(this) rolld6 6 winability damage:lastrollresult controller winabilityend loseability damage:lastrollresult controller loseabilityend rolld6end +auto=@damagefoeof(player) from(this):all(this) rolld6 6 winability damage:lastrollresult opponent winabilityend loseability damage:lastrollresult opponent loseabilityend rolld6end text=Whenever Goblin Bowling Team damages any creature or player, roll a six-sided die. Goblin Bowling Team deals to that creature or player additional damage equal to the die roll. mana={3}{R} type=Summon @@ -24082,6 +25533,17 @@ power=1 toughness=1 [/card] [card] +name=Goblin Javelineer +abilities=haste +auto=@combat(blocked) source(this):name(Damage blocking creature) damage:1 target(creature[blocking]|opponentbattlefield) +text=Haste -- Whenever Goblin Javelineer becomes blocked, it deals 1 damage to target creature blocking it. +mana={R} +type=Creature +subtype=Goblin Warrior +power=1 +toughness=1 +[/card] +[card] name=Goblin Locksmith auto=@combat(attacking) source(this):all(creature[defender]) cantblock text=Whenever Goblin Locksmith attacks, creatures with defender can't block this turn. @@ -24092,6 +25554,45 @@ power=2 toughness=1 [/card] [card] +name=Goblin Los +type=Creature +subtype=Goblin +power=1 +toughness=1 +color=red +[/card] +[card] +name=Goblin Morningstar +auto={1}{R}:equip +auto=teach(creature) 1/0 +auto=teach(creature) trample +auto=aslongas(parents) transforms((,newability[name(Roll a d20) rolld20 20 winability donothing winabilityend rolld20end])) oneshot <1 +auto=@dierolled(this) result(1) from(controller):name(Create goblin) token(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(2) from(controller):name(Create goblin) token(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(3) from(controller):name(Create goblin) token(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(4) from(controller):name(Create goblin) token(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(5) from(controller):name(Create goblin) token(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(6) from(controller):name(Create goblin) token(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(7) from(controller):name(Create goblin) token(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(8) from(controller):name(Create goblin) token(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(9) from(controller):name(Create goblin) token(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(10) from(controller):name(Create goblin and attach) livingweapontoken(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(11) from(controller):name(Create goblin and attach) livingweapontoken(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(12) from(controller):name(Create goblin and attach) livingweapontoken(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(13) from(controller):name(Create goblin and attach) livingweapontoken(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(14) from(controller):name(Create goblin and attach) livingweapontoken(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(15) from(controller):name(Create goblin and attach) livingweapontoken(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(16) from(controller):name(Create goblin and attach) livingweapontoken(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(17) from(controller):name(Create goblin and attach) livingweapontoken(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(18) from(controller):name(Create goblin and attach) livingweapontoken(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(19) from(controller):name(Create goblin and attach) livingweapontoken(Goblin,Creature Goblin,1/1,red) +auto=@dierolled(this) result(20) from(controller):name(Create goblin and attach) livingweapontoken(Goblin,Creature Goblin,1/1,red) +text=Equipped creature gets +1/+0 and has trample. -- Equip {1}{R} -- When Goblin Morningstar enters the battlefield, roll a d20. -- 1-9 | Create a 1/1 red Goblin creature token. -- 10-20 | Create a 1/1 red Goblin creature token, then attach Goblin Morningstar to it. +mana={1}{R} +type=Artifact +subtype=Equipment +[/card] +[card] name=Goblin Motivator auto={T}:target(creature) haste ueot text={T}: Target creature gains haste until end of turn. (It can attack and {T} this turn.) @@ -24142,7 +25643,7 @@ toughness=2 [card] name=Goblin Test Pilot abilities=flying -auto={T}:all(this) rolladie 6 winability counter(0/0,1,GoblinEffect) winabilityend loseability counter(0/0,1,GoblinEffect) loseabilityend rollend +auto={T}:all(this) rolld6 6 winability counter(0/0,1,GoblinEffect) winabilityend loseability counter(0/0,1,GoblinEffect) loseabilityend rolld6end auto=@dierolled(this) result(1) from(controller):this(counter{0/0.1.GoblinEffect}=1) name(Damage 2 to opponent) name(Damage 2 to opponent) damage:2 opponent && counter(0/0,-1,GoblinEffect) all(this) auto=@dierolled(this) result(2) from(controller):this(counter{0/0.1.GoblinEffect}=1) name(Damage 2 to yourself) name(Damage 2 to yourself) damage:2 controller && counter(0/0,-1,GoblinEffect) all(this) auto=@dierolled(this) result(3) from(controller) restriction{type(creature|myBattlefield)~lessthan~2}:this(counter{0/0.1.GoblinEffect}=1) name(Damage 2 to yourself) name(Damage 2 to yourself) damage:2 controller && counter(0/0,-1,GoblinEffect) all(this) @@ -24629,7 +26130,7 @@ toughness=3 [card] name=Gorm the Great abilities=vigilance,menace,partner -auto=may moveto(myhand) notatarget(Virtus the Veiled|mylibrary) and!(shuffle)! +auto=may name(Put partner in hand) moveto(myhand) target(Virtus the Veiled|mylibrary) and!(shuffle)! auto=@combat(attacking) source(this):all(creature|opponentbattlefield) mustblock ueot text=Partner with Virtus the Veiled (When this creature enters the battlefield, target player may put Virtus into their hand from their library, then shuffle.) -- Vigilance -- Gorm the Great must be blocked if able, and Gorm must be blocked by two or more creatures if able. mana={3}{G} @@ -24838,7 +26339,7 @@ toughness=3 [card] name=Grateful Apparition abilities=flying -auto=@combatdamaged(player,planeswalker) from(this):_PROLIFERATE_ +auto=@combatdamaged(player,planeswalker) from(this):name(Proliferate) NotATarget(*) duplicatecounters(single) text=Flying -- Whenever Grateful Apparition deals combat damage to a player or planeswalker, proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) mana={1}{W} type=Creature @@ -24864,9 +26365,17 @@ mana={1}{B} type=Instant [/card] [card] +name=Grave Endeavor +auto=all(*[zpos=1]|mylibrary) transforms((,newability[@dierolled(this|mylibrary) from(controller) once:name(Return a creature) target(creature|mygraveyard) moveto(mybattlefield) and!( counter(1/1.lastrollresult) )!],newability[name(Roll a d10) rolld10 10 winability donothing winabilityend rolld10end])) oneshot +auto=all(*[zpos=2]|mylibrary) transforms((,newability[@dierolled(this|mylibrary) from(controller) once:life:lastrollresult controller && life:-lastrollresult opponent],newability[name(Roll a d10) rolld10 10 winability donothing winabilityend rolld10end])) oneshot +text=Roll two d10 and choose one result. Return a creature card from your graveyard to the battlefield with a number of +1/+1 counters on it equal to that result. Then each opponent loses X life and you gain X life, where X is the other result. +mana={5}{B}{B} +type=Instant +[/card] +[card] name=Gravebreaker Lamia abilities=lifelink,hiddenface -auto=activate moveTo(mygraveyard) target(*|mylibrary) +auto=moveTo(mygraveyard) target(*|mylibrary) auto=lord(*|myGraveyard) changecost(colorless:-1) text=Lifelink -- When Gravebreaker Lamia enters the battlefield, search your library for a card, put it into your graveyard, then shuffle your library. -- Spells you cast from your graveyard cost {1} less to cast. mana={4}{B} @@ -24961,6 +26470,17 @@ power=3 toughness=4 [/card] [card] +name=Grazilaxx, Illithid Scholar +auto=@combat(blocked,turnlimited) source(creature|myBattlefield):may name(Return to hand) all(trigger[to]) moveto(ownerhand) +auto=@each combatdamage restriction{opponentdamagedbycombat}:name(Draw card) draw:1 controller +text=Whenever a creature you control becomes blocked, you may return it to its owner’s hand. -- Whenever one or more creatures you control deal combat damage to a player, draw a card. +mana={1}{U}{U} +type=Legendary Creature +subtype=Horror +power=3 +toughness=2 +[/card] +[card] name=Grazing Whiptail abilities=reach text=Reach @@ -24979,6 +26499,15 @@ text=Great Hall of Starnheim enters the battlefield tapped. -- {T}: Add {B}. -- type=Land [/card] [card] +name=Greataxe +auto={5}:equip +auto=teach(creature) 4/0 +text=Equipped creature gets +4/+0. -- Equip {5} ({5}: Attach to target creature you control. Equip only as a sorcery.) +mana={1} +type=Artifact +subtype=Equipment +[/card] +[card] name=Greater Gargadon suspend(10)={R} autoexile={S(*[creature;artifact;land]|mybattlefield)}:counter(0/0,-1,Time) @@ -25002,6 +26531,17 @@ power=7 toughness=7 [/card] [card] +name=Green Dragon +abilities=flying +auto=emblem transforms((,newability[@damaged(creature|opponentbattlefield):name(Poison Breath) all(trigger[to]) destroy])) ueot +text=Flying -- Poison Breath — When Green Dragon enters the battlefield, until end of turn, whenever a creature an opponent controls is dealt damage, destroy it. +mana={4}{G}{G} +type=Creature +subtype=Dragon +power=4 +toughness=4 +[/card] +[card] name=Greenwood Sentinel abilities=vigilance text=Vigilance (Attacking doesn't cause this creature to tap.) @@ -25067,6 +26607,16 @@ power=2 toughness=2 [/card] [card] +name=Gretchen Titchwillow +auto={2}{G}{U}:name(Draw and put land) draw:1 && transforms((,newability[may name(Put land in play) target(land|myhand) moveto(myBattlefield)])) oneshot +text={2}{G}{U}: Draw a card. You may put a land card from your hand onto the battlefield. +mana={G}{U} +type=Legendary Creature +subtype=Halfling Druid +power=0 +toughness=4 +[/card] +[card] name=Greven, Predator Captain abilities=menace auto=life:lifelost/0 @@ -25109,6 +26659,15 @@ toughness=2 color=white [/card] [card] +name=Grim Bounty +target=creature,planeswalker +auto=destroy +auto=name(Create treasure) token(Treasure Sur) +text=Destroy target creature or planeswalker. Create a Treasure token. (It’s an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") +mana={2}{B}{B} +type=Sorcery +[/card] +[card] name=Grim Captain's Call auto=moveto(myhand) target(pirate|mygraveyard) auto=moveto(myhand) target(vampire|mygraveyard) @@ -25138,6 +26697,43 @@ power=3 toughness=2 [/card] [card] +name=Grim Hireling +auto=@each combatdamage restriction{opponentdamagedbycombat}:name(Create Treasures) token(Treasure Sur)*2 +auto=this(variable{type:treasure:mybattlefield}>=1) {B}{S(treasure|mybattlefield)}:name(Sacrifice 1 treasure) target(creature) -1/-1 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=2) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 2 treasures) target(creature) -2/-2 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=3) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 3 treasures) target(creature) -3/-3 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=4) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 4 treasures) target(creature) -4/-4 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=5) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 5 treasures) target(creature) -5/-5 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=6) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 6 treasures) target(creature) -6/-6 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=7) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 7 treasures) target(creature) -7/-7 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=8) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 8 treasures) target(creature) -8/-8 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=9) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 9 treasures) target(creature) -9/-9 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=10) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 10 treasures) target(creature) -10/-10 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=11) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 11 treasures) target(creature) -11/-11 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=12) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 12 treasures) target(creature) -12/-12 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=13) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 13 treasures) target(creature) -13/-13 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=14) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 14 treasures) target(creature) -14/-14 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=15) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 15 treasures) target(creature) -15/-15 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=16) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 16 treasures) target(creature) -16/-16 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=17) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 17 treasures) target(creature) -17/-17 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=18) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 18 treasures) target(creature) -18/-18 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=19) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 19 treasures) target(creature) -19/-19 ueot asSorcery +auto=this(variable{type:treasure:mybattlefield}>=20) {B}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}{S(treasure|mybattlefield)}:name(Sacrifice 20 treasures) target(creature) -20/-20 ueot asSorcery +text=Whenever one or more creatures you control deal combat damage to a player, create two Treasure tokens. -- {B}, Sacrifice X Treasures: Target creature gets -X/-X until end of turn. Activate only as a sorcery. +mana={3}{B} +type=Creature +subtype=Tiefling Rogue +power=3 +toughness=2 +[/card +[card] +name=Hellish Rebuke +auto=all(*|opponentbattlefield) transforms((,newability[@damagefoeof(player) from(this):sacrifice and!( life:-2 controller )!])) ueot +text=Until end of turn, permanents your opponents control gain "When this permanent deals damage to the player who cast Hellish Rebuke, sacrifice this permanent. You lose 2 life." +mana={2}{B} +type=Instant +[/card] +[card] name=Grim Initiate abilities=first strike auto=_DIES_if type(army|mybattlefield)~morethan~0 then counter(1/1) notATarget(army|myBattlefield) else create(Zombie Army:creature Zombie Army:0/0:black) and!(counter(1/1) notATarget(army|myBattlefield))! @@ -25169,6 +26765,17 @@ power=6 toughness=6 [/card] [card] +name=Grim Wanderer +abilities=flash +restriction=morbid +text=Flash -- Tragic Backstory — Cast this spell only if a creature died this turn. +mana={1}{B} +type=Creature +subtype=Goblin Warlock +power=5 +toughness=3 +[/card] +[card] name=Grimclimb Pathway auto={T}:add{B} text={T}: Add {B}. // Brightclimb Pathway @@ -25300,7 +26907,7 @@ type=Instant [/card] [card] name=Ground Pounder -auto={3}{G}:all(this) rolladie 6 winability lastrollresult/lastrollresult ueot winabilityend loseability lastrollresult/lastrollresult ueot loseabilityend rollend +auto={3}{G}:all(this) rolld6 6 winability lastrollresult/lastrollresult ueot winabilityend loseability lastrollresult/lastrollresult ueot loseabilityend rolld6end auto=@dierolled(*|battlefield) result(5) from(controller):name(Gains trample) name(Gains trample) all(this) transforms((,newability[trample])) ueot auto=@dierolled(*|battlefield) result(6) from(controller):name(Gains trample) name(Gains trample) all(this) transforms((,newability[trample])) ueot text={3}{G}: Roll a six-sided die. Ground Pounder gets +X/+X until end of turn, where X is the result. -- Whenever you roll a 5 or higher on a die, Ground Pounder gains trample until end of turn. @@ -25346,7 +26953,7 @@ type=Instant [/card] [card] name=Growth Spurt -auto=target(creature) rolladie 6 winability lastrollresult/lastrollresult ueot winabilityend loseability lastrollresult/lastrollresult ueot loseabilityend rollend +auto=target(creature) rolld6 6 winability lastrollresult/lastrollresult ueot winabilityend loseability lastrollresult/lastrollresult ueot loseabilityend rolld6end text=Roll a six-sided die. Target creature gets +X/+X until end of turn, where X is equal to the die roll. mana={1}{G} type=Instant @@ -25511,6 +27118,17 @@ power=3 toughness=4 [/card] [card] +name=Guardian of Faith +abilities=vigilance,flash +auto=may name(Phase out any creature) target(other creature|myBattlefield) phaseout +text=Flash -- Vigilance -- When Guardian of Faith enters the battlefield, any number of other target creatures you control phase out. (Treat them and anything attached to them as though they don’t exist until their controller’s next turn.) +mana={1}{W}{W} +type=Creature +subtype=Spirit Knight +power=3 +toughness=2 +[/card] +[card] name=Guardian of the Gateless abilities=flying auto=@combat(blocking) source(this):1/1 ueot @@ -25579,6 +27197,17 @@ mana={2}{U} type=Enchantment [/card] [card] +name=Guild Thief +auto=@combatdamaged(player) from(this):name(Counter 1/1) counter(1/1) +auto={3}{U}:name(Cunning Action) transforms((,newability[unblockable])) ueot +text=Whenever Guild Thief deals combat damage to a player, put a +1/+1 counter on it. -- Cunning Action — {3}{U}: Guild Thief can’t be blocked this turn. +mana={1}{U} +type=Creature +subtype=Orc Rogue +power=1 +toughness=1 +[/card] +[card] name=Guildless Commons auto=tap(noevent) auto=moveto(ownerhand) target(land|mybattlefield) @@ -25600,7 +27229,7 @@ type=Land [card] name=Guildpact Informant abilities=flying -auto=@combatdamaged(player,planeswalker) from(this):_PROLIFERATE_ +auto=@combatdamaged(player,planeswalker) from(this):name(Proliferate) NotATarget(*) duplicatecounters(single) text=Flying -- Whenever Guildpact Informant deals combat damage to a player or planeswalker, proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) mana={2}{U} type=Creature @@ -25864,8 +27493,7 @@ toughness=4 [card] name=Haldan, Avid Arcanist abilities=hiddenface,canplayfromexile,partner -aicode=activate moveTo(myhand) target(Pako^ Arcane Retriever|mylibrary) -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Pako^ Arcane Retriever|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Pako^ Arcane Retriever|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend +auto=may name(Put partner in hand) moveTo(myhand) target(Pako^ Arcane Retriever|mylibrary) auto=lord(*[-creature]|mycastingzone) transforms((,newability[anytypeofmana])) text=Partner with Pako, Arcane Retriever (When this creature enters the battlefield, target player may put Pako into their hand from their library, then shuffle.) -- You may play noncreature cards from exile with fetch counters on them if you exiled them, and you may spend mana as though it were mana of any color to cast those spells. mana={2}{U} @@ -25875,6 +27503,17 @@ power=1 toughness=4 [/card] [card] +name=Half-Elf Monk +abilities=vigilance +auto={1}{W}{T}:name(Stunning Strike) target(creature|battlefield) tap +text=Vigilance -- Stunning Strike — {1}{W}, {T}: Tap target creature. +mana={3}{W} +type=Creature +subtype=Human Elf Monk +power=1 +toughness=4 +[/card] +[card] name=Halimar Tidecaller auto=lord(creature[land]|myBattlefield) flying auto=may moveTo(myhand) target(*[awaken]|mygraveyard) @@ -25916,6 +27555,14 @@ text={T}: Add {C}. -- {1}, {T}: Add one mana of any color. -- {T}: Put a +1/+1 c type=Land [/card] [card] +name=Hall of Storm Giants +auto=if compare(type:land:myBattlefield)~morethan~2 then tap(noevent) +auto={T}:Add{U} +auto={5}{U}:name(Becomes giant) transforms((,newability[becomes(Creature Giant^7/7^blue) ueot],newability[@targeted(this) from(*|opponentzones):choice name(This spell costs 3 more) name(This spell costs 3 more) target(*|opponentzones) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) oneshot])) ueot +text=If you control two or more other lands, Hall of Storm Giants enters the battlefield tapped. -- {T}: Add {U}. -- {5}{U}: Until end of turn, Hall of Storm Giants becomes a 7/7 blue Giant creature with ward {3}. It’s still a land. (Whenever it becomes the target of a spell or ability an opponent controls, counter it unless that player pays {3}.) +type=Land +[/card] +[card] name=Hall of the Bandit Lord auto={T}{L:3}:add{1} && target(creature[fresh]|mybattlefield) haste text=Hall of the Bandit Lord enters the battlefield tapped. -- {T}, Pay 3 life: Add {1} to your mana pool. If that mana is spent on a creature spell, it gains haste. @@ -25934,7 +27581,7 @@ toughness=3 [/card] [card] name=Hallowed Priest -auto=@lifeof(player) from(*[-lifefaker]):counter(1/1,1) +auto=@lifeof(player) from(*[-lifefaker]|*):counter(1/1,1) text=Whenever you gain life, put a +1/+1 counter on Hallowed Priest mana={1}{W} type=Creature @@ -25970,6 +27617,16 @@ power=4 toughness=4 [/card] [card] +name=Hama Pashar, Ruin Seeker +abilities=twodngtrg +text=Room abilities of dungeons your own trigger an additional time. +mana={1}{W}{U} +type=Legendary Creature +subtype=Human Wizard +power=2 +toughness=3 +[/card] +[card] name=Hammer Dropper abilities=mentor auto=@combat(attacking) source(this):name(Choose attacking creature) transforms((,newability[target(other creature[attacking;power<=pminus1minusend]|myBattlefield) counter(1/1)])) oneshot @@ -25983,14 +27640,14 @@ toughness=2 [card] name=Hammer Helper target=creature -auto=moveto(mybattlefield) and!(transforms((,newability[phaseaction[endofturn sourceinplay] moveTo(previousbattlefield)],newability[all(this) rolladie 6 winability lastrollresult/0 ueot winabilityend loseability lastrollresult/0 ueot loseabilityend rollend],newability[untap],haste)) ueot)! +auto=moveto(mybattlefield) and!(transforms((,newability[phaseaction[endofturn sourceinplay] moveTo(previousbattlefield)],newability[all(this) rolld6 6 winability lastrollresult/0 ueot winabilityend loseability lastrollresult/0 ueot loseabilityend rolld6end],newability[untap],haste)) ueot)! text=Gain control of target creature until end of turn. Untap that creature and roll a six-sided die. Until end of turn, it gains haste and gets +X/+0, where X is the result. mana={3}{R} type=Sorcery [/card] [card] name=Hammer Jammer -auto={3}{G}:all(this) rolladie 6 winability counter(1/1,lastrollresult) winabilityend loseability counter(1/1,lastrollresult) loseabilityend rollend +auto={3}{G}:all(this) rolld6 6 winability counter(1/1,lastrollresult) winabilityend loseability counter(1/1,lastrollresult) loseabilityend rolld6end auto=@dierolled(*|battlefield) result(1) from(controller):name(Get counter) name(Get counter) removeallcounters(1/1) && transforms((,newability[counter(1/1.1)])) all(this) auto=@dierolled(*|battlefield) result(2) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.2)])) all(this) auto=@dierolled(*|battlefield) result(3) from(controller):name(Get counters) name(Get counters) removeallcounters(1/1) && transforms((,newability[counter(1/1.3)])) all(this) @@ -26036,6 +27693,16 @@ power=5 toughness=5 [/card] [card] +name=Hand of Vecna +auto={2}:equip +auto={0}:name(Pay life and equip) target(creature|myBattlefield) rehook && life:-phandcount controller asSorcery +auto=teach(creature) transforms((,newability[@each my combatbegins restriction{compare(phandcount)~morethan~0}:name(Choose one) transforms((,newability[choice name(Equipped creature gets X/X) phandcount/phandcount ueot],newability[if type(Vecna|myBattlefield)~morethan~0 then choice name(Vecna gets X/X) name(Vecna gets X/X) all(Vecna|mybattlefield) phandcount/phandcount ueot])) oneshot])) +text=At the beginning of combat on your turn, equipped creature or a creature you control named Vecna gets +X/+X until end of turn, where X is the number of cards in your hand. -- Equip—Pay 1 life for each card in your hand. -- Equip {2} +mana={3} +type=Legendary Artifact +subtype=Equipment +[/card] +[card] name=Hand to Hand auto=while(restriction{combatbeginsonly}) maxCast(*[instant])0 opponent auto=while(restriction{attackersonly}) maxCast(*[instant])0 opponent @@ -26149,8 +27816,8 @@ toughness=2 [card] name=Hard Cover target=creature -auto=0/2 -auto=teach(creature) {T}:draw:1 && transforms((,newability[target(*|myhand) reject])) forever +auto=teach(creature) 0/2 +auto=teach(creature) transforms((,newability[{T}:draw:1 && transforms((,newability[target(*|myhand) reject])) oneshot])) text=Enchant creature -- Enchanted creature gets +0/+2 and has "{T}: Draw a card, then discard a card." mana={U} type=Enchantment @@ -26802,7 +28469,7 @@ name=Heliod, Sun-Crowned abilities=indestructible auto=this(variable{type:manaw}<5) transforms((removetypes,newability[becomes(Legendary Enchantment God)])) auto=this(variable{type:manaw}>4) transforms((Legendary Enchantment Creature)) -auto=@lifeof(player) from(*[-lifefaker]):counter(1/1,1) target(creature,enchantment|myBattlefield) +auto=@lifeof(player) from(*[-lifefaker]|*):counter(1/1,1) target(creature,enchantment|myBattlefield) auto={1}{W}:lifelink target(other creature) ueot text=Indestructible -- As long as your devotion to white is less than five, Heliod isn’t a creature. -- Whenever you gain life, put a +1/+1 counter on target creature or enchantment you control. -- {1}{W}: Another target creature gains lifelink until end of turn. mana={2}{W} @@ -26931,6 +28598,28 @@ power=4 toughness=3 [/card] [card] +name=Herald of Hadar +auto={5}{B}:name(Roll a d20) rolld20 20 winability token(Treasure Sur) winabilityend rolld20end +auto=@dierolled(this) from(controller):life:-2 opponent +auto=@dierolled(this) result(10) from(controller):life:2 controller +auto=@dierolled(this) result(11) from(controller):life:2 controller +auto=@dierolled(this) result(12) from(controller):life:2 controller +auto=@dierolled(this) result(13) from(controller):life:2 controller +auto=@dierolled(this) result(14) from(controller):life:2 controller +auto=@dierolled(this) result(15) from(controller):life:2 controller +auto=@dierolled(this) result(16) from(controller):life:2 controller +auto=@dierolled(this) result(17) from(controller):life:2 controller +auto=@dierolled(this) result(18) from(controller):life:2 controller +auto=@dierolled(this) result(19) from(controller):life:2 controller +auto=@dierolled(this) result(20) from(controller):life:2 controller +text=Circle of Death — {5}{B}: Roll a d20. -- 1-9 | Each opponent loses 2 life. -- 10-19 | Each opponent loses 2 life and you gain 2 life. -- 20 | Each opponent loses 2 life and you gain 2 life. Create two Treasure tokens. (It’s an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") +mana={4}{B} +type=Creature +subtype=Human Warlock +power=4 +toughness=4 +[/card] +[card] name=Herald of Secret Streams auto=lord(creature[counter{1/1}]|mybattlefield) unblockable text=Creatures you control with +1/+1 counters on them can't be blocked. @@ -27226,6 +28915,16 @@ type=Snow Land subtype=Mountain Forest [/card] [card] +name=Hill Giant Herdgorger +auto=life:3 controller +text=When Hill Giant Herdgorger enters the battlefield, you gain 3 life. +mana={4}{G}{G} +type=Creature +subtype=Giant +power=7 +toughness=6 +[/card] +[card] name=Hinder target=*|stack auto=choice name(Put on top) fizzleto(librarytop) @@ -27284,6 +28983,19 @@ power=3 toughness=2 [/card] [card] +name=Hired Hexblade +other={1}{S(treasure[-tapped]|mybattlefield)} name(Pay with treasure) +otherrestriction=type(treasure[-tapped]|mybattlefield)~morethan~0 +auto=if paid(alternative) then draw:1 controller +auto=if paid(alternative) then life:-1 controller +text=When Hired Hexblade enters the battlefield, if mana from a Treasure was spent to cast it, you draw a card and you lose 1 life. +mana={1}{B} +type=Creature +subtype=Elf Warlock +power=2 +toughness=2 +[/card] +[card] name=Hired Poisoner abilities=deathtouch text=Deathtouch @@ -27345,6 +29057,34 @@ mana={5}{U} type=Enchantment [/card] [card] +name=Hive of the Eye Tyrant +auto=if compare(type:land:myBattlefield)~morethan~2 then tap(noevent) +auto={T}:Add{B} +auto={3}{B}:name(Becomes beholder) transforms((,newability[becomes(Creature Beholder^3/3^black^menace) ueot],newability[@combat(attacking) source(this):name(Exile card) target(creature|opponentgraveyard) moveto(exile)])) ueot +text=If you control two or more other lands, Hive of the Eye Tyrant enters the battlefield tapped. -- {T}: Add {B}. -- {3}{B}: Until end of turn, Hive of the Eye Tyrant becomes a 3/3 black Beholder creature with menace and "Whenever this creature attacks, exile target card from defending player’s graveyard." It’s still a land. +type=Land +[/card] +[card] +name=Hoard Robber +auto=@combatdamaged(player) from(this):name(Create treasure) token(Treasure Sur) +text=Whenever Hoard Robber deals combat damage to a player, create a Treasure token. (It’s an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") +mana={1}{B} +type=Creature +subtype=Tiefling Rogue +power=1 +toughness=3 +[/card] +[card] +name=Hoarding Ogre +auto=@combat(attacking) source(this):name(Roll a d20) rolld20 20 winability token(Treasure Sur)*3 winabilityend loseability if compare(lastrollresult)~lessthan~10 then token(Treasure Sur) else token(Treasure Sur)*2 loseabilityend rolld20end +text=Whenever Hoarding Ogre attacks, roll a d20. -- 1-9 | Create a Treasure token. (It’s an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") -- 10-19 | Create two Treasure tokens. -- 20 | Create three Treasure tokens. +mana={3}{R} +type=Creature +subtype=Ogre +power=3 +toughness=3 +[/card] +[card] name=Hobblefiend abilities=trample auto={1}{S(other creature|myBattlefield}:counter(1/1,1) all(this) @@ -27356,6 +29096,46 @@ power=2 toughness=1 [/card] [card] +name=Hobgoblin Bandit Lord +auto=lord(other *[goblin]|myBattlefield) 1/1 +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~1}:name(Deals 1 damage) damage:1 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~2}:name(Deals 2 damage) damage:2 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~3}:name(Deals 3 damage) damage:3 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~4}:name(Deals 4 damage) damage:4 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~5}:name(Deals 5 damage) damage:5 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~6}:name(Deals 6 damage) damage:6 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~7}:name(Deals 7 damage) damage:7 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~8}:name(Deals 8 damage) damage:8 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~9}:name(Deals 9 damage) damage:9 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~10}:name(Deals 10 damage) damage:10 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~11}:name(Deals 11 damage) damage:11 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~12}:name(Deals 12 damage) damage:12 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~13}:name(Deals 13 damage) damage:13 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~14}:name(Deals 14 damage) damage:14 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~15}:name(Deals 15 damage) damage:15 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~16}:name(Deals 16 damage) damage:16 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~17}:name(Deals 17 damage) damage:17 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~18}:name(Deals 18 damage) damage:18 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~equalto~19}:name(Deals 19 damage) damage:19 target(player,creature,planeswalker) +auto={R}{T} restriction{thisturn(goblin|mybattlefield)~morethan~19}:name(Deals 20 damage) damage:20 target(player,creature,planeswalker) +text=Other Goblins you control get +1/+1. -- {R}, {T}: Hobgoblin Bandit Lord deals damage equal to the number of Goblins that entered the battlefield under your control this turn to any target. +mana={1}{R}{R} +type=Creature +subtype=Goblin Rogue +power=2 +toughness=3 +[/card] +[card] +name=Hobgoblin Captain +auto=@combat(attacking) source(this) restriction{compare(pwrtotatt)~morethan~5}:name(Gains first strike) transforms((,newability[first strike])) ueot +text=Pack tactics — Whenever Hobgoblin Captain attacks, if you attacked with creatures with total power 6 or greater this combat, Hobgoblin Captain gains first strike until end of turn. +mana={1}{R} +type=Creature +subtype=Goblin Barbarian +power=3 +toughness=1 +[/card] +[card] name=Hofri Ghostforge auto=lord(spirit) transforms((,newability[1/1],newability[trample],newability[haste])) auto=@movedto(creature[-token]|graveyard) from(mybattlefield):name(Exile and copy) transforms((,newability[all(creature[-token;fresh:zpos=type:*:mygraveyard]|mygraveyard) moveto(exile) and!( clone and!( transforms((Spirit,newability[@movedto(this|graveyard) from(mybattlefield):name(Return exiled creature) target(creature[!share!name!]|myexile) moveto(mygraveyard)])) forever )! )!])) forever @@ -27400,6 +29180,16 @@ power=2 toughness=2 [/card] [card] +name=Holy Avenger +auto={2}{W}:equip +auto=teach(creature) double strike +auto=@combat(attacking) source(mytgt):may name(Attach an aura) target(aura|myhand) moveTo(mybattlefield) +text=Equipped creature has double strike. -- Whenever equipped creature deals combat damage, you may put an Aura card from your hand onto the battlefield attached to it. -- Equip {2}{W} +mana={2}{W} +type=Artifact +subtype=Equipment +[/card] +[card] name=Homarid Explorer auto=target(player) deplete:4 text=When Homarid Explorer enters the battlefield, target player puts the top four cards of their library into their graveyard. @@ -27432,7 +29222,7 @@ toughness=6 name=Honor Troll abilities=vigilance,lifefaker auto=this(controllerlife > 24) 2/1 -auto=@lifeof(player) from(*[-lifefaker]):life:1 controller +auto=@lifeof(player) from(*[-lifefaker]|*):life:1 controller text=Vigilance -- If you would gain life, you gain that much life plus 1 instead. -- Honor Troll gets +2/+1 as long as you have 25 or more life. mana={2}{G} type=Creature @@ -27762,7 +29552,7 @@ toughness=3 [card] name=Huatli's Raptor abilities=vigilance -auto=_PROLIFERATE_ +auto=name(Proliferate) NotATarget(*) duplicatecounters(single) text=Vigilance -- When Huatli's Raptor enters the battlefield, proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) mana={G}{W} type=Creature @@ -27798,6 +29588,16 @@ mana={2}{U} type=Sorcery [/card] [card] +name=Hulking Bugbear +abilities=haste +text=Haste +mana={1}{R}{R} +type=Creature +subtype=Goblin +power=3 +toughness=3 +[/card] +[card] name=Hull Breach auto=choice destroy target(artifact) auto=choice destroy target(enchantment) @@ -28049,6 +29849,18 @@ mana={3}{G} type=Sorcery [/card] [card] +name=Hunter's Mark +abilities=nofizzle +target=creature|myBattlefield +other={G} name(Target blue permanent) +otherrestriction=type(*[creature;planeswalker;blue]|opponentbattlefield)~morethan~0 +auto=if paid(alternative) then transforms((,newability[1/1],newability[name(Damage blue creature or planeswalker) damage:power target(*[creature;planeswalker;blue]|opponentbattlefield)])) ueot +auto=ifnot paid(alternative) then transforms((,newability[1/1],newability[name(Damage creature or planeswalker) damage:power target(*[creature;planeswalker]|opponentbattlefield)])) ueot +text=This spell costs {3} less to cast if it targets a blue permanent you don’t control. -- This spell can’t be countered. -- Target creature you control gets +1/+1 until end of turn. Then it deals damage equal to its power to target creature or planeswalker you don’t control. +mana={3}{G} +type=Instant +[/card] +[card] name=Huntmaster Liger abilities=mutate otherrestriction=type(creature[-human]|mybattlefield)~morethan~0 @@ -28070,6 +29882,14 @@ power=3 toughness=4 [/card] [card] +name=Hurl Through Hell +target=creature +auto=moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[phaseaction[my endofturn next once checkex] moveTo(ownerexile)])) forever )! +text=Exile target creature. Until the end of your next turn, you may cast that card and you may spend mana as though it were mana of any color to cast that spell. +mana={2}{B}{R} +type=Instant +[/card] +[card] name=Hushbringer abilities=flying,lifelink auto=@movedto(creature|battlefield):all(trigger) onlymanaability @@ -28094,7 +29914,7 @@ subtype=Aura [card] name=Hydradoodle abilities=reach,trample -auto=thisforeach(variable{halfpaid}) all(this) rolladie 6 winability counter(1/1,lastrollresult) winabilityend loseability counter(1/1,lastrollresult) loseabilityend rollend +auto=thisforeach(variable{halfpaid}) all(this) rolld6 6 winability counter(1/1,lastrollresult) winabilityend loseability counter(1/1,lastrollresult) loseabilityend rolld6end text=As Hydradoodle enters the battlefield, roll X six-sided dice. Hydradoodle enters the battlefield with a number of +1/+1 counters on it equal to the total of those results. -- Reach, trample mana={X}{X}{G}{G} type=Creature @@ -28284,6 +30104,27 @@ type=Enchantment subtype=Aura [/card] [card] +name=Icingdeath, Frost Tongue +auto={2}:equip +auto=teach(creature) 2/0 +auto=@combat(attacking) source(mytgt):name(Tap opponent's creature) target(creature|opponentbattlefield) tap +text=Equipped creature gets +2/+0 -- Whenever equipped creature attacks, tap target creature defending player controls -- Equip {2} +type=Legendary Artifact +subtype=Equipment +color=white +[/card] +[card] +name=Icingdeath, Frost Tyrant +abilities=vigilance,flying +auto=@movedto(this|graveyard) from(battlefield):name(Icingdeath, Frost Tongue) activate castcard(copied named!:icingdeath, frost tongue:!) +text=Flying, vigilance -- When Icingdeath, Frost Tyrant dies, create Icingdeath, Frost Tongue, a legendary white Equipment artifact token with "Equipped creature gets +2/+0", "Whenever equipped creature attacks, tap target creature defending player controls" and equip {2}. +mana={2}{W}{W} +type=Legendary Creature +subtype=Dragon +power=4 +toughness=3 +[/card] +[card] name=Icon of Ancestry aicode=activate target(creature[zpos<=3]|mylibrary) moveto(myhand) auto={3}{T}:name(look) reveal:3 optionone name(Get Creature) target(creature|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend @@ -28320,6 +30161,7 @@ type=Artifact [/card] [card] name=Idyllic Grange +auto={T}:add{W} auto=aslongas(other land[plain]|myBattlefield) tap(noevent) <3 oneshot auto=if this(untapped) target(creature|myBattlefield) counter(1/1) once text={T}: Add {W}. -- Idyllic Grange enters the battlefield tapped unless you control three or more other Plains. -- When Idyllic Grange enters the battlefield untapped, put a +1/+1 counter on target creature you control. @@ -28752,6 +30594,16 @@ power=5 toughness=3 [/card] [card] +name=Immovable Rod +abilities=doesnotuntap +auto=@each my untap:if cantargetcard(*[tapped]|*) then may name(Untap Immovable Rod) name(Untap Immovable Rod) untap +auto=@untapped(this) restriction{compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0}:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +auto={3}{W}{T}:name(Permanent loses abilities) target(other *|battlefield) grant transforms((,newability[loseabilities],newability[cantattack],newability[cantpwattack],newability[cantblock])) grantend +text=You may choose not to untap Immovable Rod during your untap step. -- Whenever Immovable Rod becomes untapped, venture into the dungeon. -- {3}{W}, {T}: For as long as Immovable Rod remains tapped, another target permanent loses all abilities and can’t attack or block. +mana={W} +type=Artifact +[/card] +[card] name=Imoti, Celebrant of Bounty autostack=if casted(this) then cascade:plibrarycount text=Cascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom of your library in a random order.) -- Spells you cast with converted mana cost 6 or greater have cascade. @@ -28874,7 +30726,7 @@ toughness=1 [/card] [card] name=Impetuous Protege -auto=may name(Put partner on your hand) name(Put partner on your hand) moveto(myhand) target(*[Proud Mentor]|mylibrary) +auto=may name(Put partner on your hand) moveto(myhand) target(Proud Mentor|mylibrary) auto=@combat(attacking) source(this):all(this) power:highest:creature[tapped]:opponentbattlefield/0 ueot text=Partner with Proud Mentor (When this creature enters the battlefield, target player may put Proud Mentor into their hand from their library, then shuffle.) -- Whenever Impetuous Protege attacks, it gets +X/+0 until end of turn, where X is the greatest power among tapped creatures your opponents control. mana={2}{R} @@ -28923,6 +30775,15 @@ mana={U}{R} type=Enchantment [/card] [card] +name=Improvised Weaponry +target=player,creature,planeswalker +auto=damage:2 +auto=name(Create treasure) token(Treasure Sur) +text=Improvised Weaponry deals 2 damage to any target. Create a Treasure token. (It’s an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") +mana={2}{R} +type=Sorcery +[/card] +[card] name=Impulsive Pilferer auto=@movedTo(this|graveyard) from(battlefield):token(Treasure Sur) autograveyard={3}{R}:name(Activate Encore) name(Activate Encore) moveto(exile) and!(clone with(unearth,haste,mustattack))! asSorcery @@ -29115,6 +30976,17 @@ mana={X}{R}{R}{R} type=Sorcery [/card] [card] +name=Indomitable Might +abilities=flash +target=creature +auto=teach(creature) 3/3 +auto=teach(creature) transforms((,newability[@combat(blocked) source(this) turnlimited:may name(assign combat damage to defending player) damage:power opponent && fog from(this)])) +text=Flash -- Enchant creature -- Enchanted creature gets +3/+3. -- Enchanted creature’s controller may have it assign combat damage as though it weren’t blocked. +mana={3}{G} +type=Enchantment +subtype=Aura +[/card] +[card] name=Induce Despair auto=if type(creature[manacost=1]|myHand)~morethan~0 then choice name(Reveal creature with 1 mana cost) target(creature) -1/-1 ueot auto=if type(creature[manacost=2]|myHand)~morethan~0 then choice name(Reveal creature with 2 mana cost) target(creature) -2/-2 ueot @@ -29347,6 +31219,19 @@ type=Instant subtype=Trap [/card] [card] +name=Inferno of the Star Mounts +abilities=flying,haste,nofizzle +auto=this(power<=18) {R}:1/0 ueot +auto=this(power=19) {R}:transforms((,newability[damage:20 target(player^creature^planeswalker)],newability[1/0])) ueot +auto=this(power>=20) {R}:1/0 ueot +text=This spell can’t be countered. -- Flying, haste -- {R}: Inferno of the Star Mounts gets +1/+0 until end of turn. When its power becomes 20 this way, it deals 20 damage to any target. +mana={4}{R}{R} +type=Legendary Creature +subtype=Dragon +power=6 +toughness=6 +[/card] +[card] name=Infinite Hourglass auto=@each my upkeep:counter(0/0,1,Time) all(this) auto={3}:counter(0/0,-1,Time) myupkeeponly @@ -29421,6 +31306,18 @@ mana={X}{2}{U} type=Sorcery [/card] [card] +name=Ingenious Smith +aicode=activate target(artifact[zpos<=4]|mylibrary) moveto(myhand) and!( transforms((,newability[all(*[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )!])) oneshot )! +auto=name(look) reveal:4 optionone name(Get an artifact) target(artifact|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary)! optiontwoend revealend +auto=@movedto(artifact|myBattlefield) turnlimited:name(Put 1/1 counter) counter(1/1) +text=When Ingenious Smith enters the battlefield, look at the top four cards of your library. You may reveal an artifact card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. -- Whenever one or more artifacts enter the battlefield under your control, put a +1/+1 counter on Ingenious Smith. This ability triggers only once each turn. +mana={1}{W} +type=Creature +subtype=Human Artificer +power=1 +toughness=1 +[/card] +[card] name=Ingenuity Engine autostack=if casted(this) then cascade:plibrarycount auto={1}{T}{S(artifact|mybattlefield)}:moveto(ownerhand) target(artifact|mybattlefield) @@ -29430,7 +31327,7 @@ type=Artifact [/card] [card] name=Inhumaniac -auto=@each my upkeep:rolladie 6 winability donothing winabilityend rollend +auto=@each my upkeep:rolld6 6 winability donothing winabilityend rolld6end auto=@dierolled(this) result(1) from(controller):all(this) removeallcounters(1/1) myupkeeponly auto=@dierolled(this) result(3) from(controller):all(this) counter(1/1,1) myupkeeponly auto=@dierolled(this) result(4) from(controller):all(this) counter(1/1,1) myupkeeponly @@ -29680,6 +31577,17 @@ mana={U}{U}{R}{R}{R}{W}{W} type=Sorcery [/card] [card] +name=Inspiring Bard +auto=choice name(Creature gets 2/2) target(creature) transforms((,newability[2/2])) ueot +auto=choice name(Gain 3 life) life:3 controller +text=When Inspiring Bard enters the battlefield, choose one — -- • Bardic Inspiration — Target creature gets +2/+2 until end of turn. -- • Song of Rest — You gain 3 life. +mana={3}{G} +type=Creature +subtype=Elf Bard +power=3 +toughness=3 +[/card] +[card] name=Inspiring Cleric auto=life:4 controller text=When Inspiring Cleric enters the battlefield, you gain 4 life. @@ -29740,6 +31648,14 @@ type=Enchantment subtype=Aura [/card] [card] +name=Instrument of the Bards +auto=@each my upkeep:may name(Put harmony counter) counter(0/0,1,Harmony) +auto={3}{G}{T}:name(Search creature) transforms((,newability[target(creature[manacost<=hascntharmony]|mylibrary) moveTo(myhand) and!( if cantargetcard(*[legendary]|*) then token(Treasure Sur) )!])) oneshot +text=At the beginning of your upkeep, you may put a harmony counter on Instrument of the Bards. -- {3}{G}, {T}: Search your library for a creature card with mana value equal to the number of harmony counters on Instrument of the Bards, reveal it, and put it into your hand. If that card is legendary, create a Treasure token. Then shuffle. +mana={G} +type=Legendary Artifact +[/card] +[card] name=Insubordination auto=teach(creature) transforms((,newability[@each my endofturn:while(restriction{didntattack}) damage:2 controller])) forever text=Enchant creature -- At the beginning of the end step of enchanted creature's controller, Insubordination deals 2 damage to that player unless that creature attacked this turn. @@ -29837,6 +31753,17 @@ mana={3}{G} type=Enchantment [/card] [card] +name=Intrepid Outlander +abilities=reach +auto=@combat(attacking) source(this) restriction{compare(pwrtotatt)~morethan~5,compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0}:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=Reach -- Pack tactics — Whenever Intrepid Outlander attacks, if you attacked with creatures with total power 6 or greater this combat, venture into the dungeon. (Enter the first room or advance to the next room.) +mana={1}{G} +type=Creature +subtype=Orc Ranger +power=2 +toughness=3 +[/card] +[card] name=Introduction to Annihilation target=*[-land]|battlefield auto=moveto(exile) and!( transforms((,newability[draw:1 controller])) oneshot )! @@ -30027,6 +31954,16 @@ power=1 toughness=1 [/card] [card] +name=Iron Golem +abilities=vigilance,mustattack,mustblock +text=Vigilance -- Iron Golem attacks or blocks each combat if able. +mana={4} +type=Artifact Creature +subtype=Golem +power=5 +toughness=3 +[/card] +[card] name=Iron Verdict target=creature[tapped]|battlefield abilities=foretell @@ -30237,6 +32174,20 @@ mana={2}{U} type=Instant [/card] [card] +name=Iymrith, Desert Doom +abilities=flying +auto=this(variable{tapped}<1) transforms((,newability[@targeted(this) from(*|opponentzones):choice name(This spell costs 4 more) name(This spell costs 4 more) target(*|opponentzones) transforms((,newability[pay[[{4}]] name(pay 4 mana) donothing?fizzle])) oneshot])) +auto=@combatdamaged(player) from(this) restriction{type(*|myhand)~equalto~0}:name(Draw 3 cards) draw:3 controller +auto=@combatdamaged(player) from(this) restriction{type(*|myhand)~equalto~1}:name(Draw 2 cards) draw:2 controller +auto=@combatdamaged(player) from(this) restriction{type(*|myhand)~morethan~1}:name(Draw 1 card) draw:1 controller +text=Flying -- Iymrith, Desert Doom has ward {4} as long as it’s untapped. -- Whenever Iymrith deals combat damage to a player, draw a card. Then if you have fewer than three cards in hand, draw cards equal to the difference. +mana={3}{U}{U} +type=Legendary Creature +subtype=Dragon +power=5 +toughness=5 +[/card] +[card] name=Izoni, Thousand-Eyed auto=foreach(creature|mygraveyard) create(insect:creature insect:1/1:black,green:) auto={B}{G}{S(other creature|mybattlefield)}:life:1 && draw:1 @@ -30358,7 +32309,7 @@ toughness=2 [/card] [card] name=Jack-in-the-Mox -auto={T}:all(this) rolladie 6 winability counter(0/0,1,JackEffect) winabilityend loseability counter(0/0,1,JackEffect) loseabilityend rollend +auto={T}:all(this) rolld6 6 winability counter(0/0,1,JackEffect) winabilityend loseability counter(0/0,1,JackEffect) loseabilityend rolld6end auto=@dierolled(this) result(1) from(controller):this(counter{0/0.1.JackEffect}=1) name(Sacrifice Jack-in-the-Mox) name(Sacrifice Jack-in-the-Mox) sacrifice && counter(0/0,-1,JackEffect) all(this) auto=@dierolled(this) result(2) from(controller):this(counter{0/0.1.JackEffect}=1) name(Add white mana) name(Add white mana) add{W} && counter(0/0,-1,JackEffect) all(this) auto=@dierolled(this) result(3) from(controller):this(counter{0/0.1.JackEffect}=1) name(Add blue mana) name(Add blue mana) add{U} && counter(0/0,-1,JackEffect) all(this) @@ -30434,6 +32385,18 @@ mana={1}{U} type=Instant [/card] [card] +name=Jaded Sell-Sword +other={3}{S(treasure[-tapped]|mybattlefield)} name(Pay with treasure) +otherrestriction=type(treasure[-tapped]|mybattlefield)~morethan~0 +auto=if paid(alternative) then transforms((,newability[first strike],newability[haste])) ueot +text=When Jaded Sell-Sword enters the battlefield, if mana from a Treasure was spent to cast it, it gains first strike and haste until end of turn. +mana={3}{R} +type=Creature +subtype=Dragon Warrior +power=4 +toughness=3 +[/card] +[card] name=Jadelight Ranger aicode=activate transforms((,newability[explores],newability[if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand)])) oneshot auto=name(Explores) reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend afterrevealed explores afterrevealedend revealend @@ -30868,9 +32831,9 @@ toughness=2 name=Jumbo Imp abilities=flying auto=transforms((Creature Summon Imp,setpower=0,settoughness=0)) forever -auto=all(this) rolladie 6 winability counter(1/1,lastrollresult) winabilityend loseability counter(1/1,lastrollresult) loseabilityend rollend -auto=@each my upkeep:all(this) rolladie 6 winability counter(1/1,lastrollresult) winabilityend loseability counter(1/1,lastrollresult) loseabilityend rollend -auto=@each my endofturn:all(this) rolladie 6 winability counter(1/1,-lastrollresult) winabilityend loseability counter(1/1,-lastrollresult) loseabilityend rollend +auto=all(this) rolld6 6 winability counter(1/1,lastrollresult) winabilityend loseability counter(1/1,lastrollresult) loseabilityend rolld6end +auto=@each my upkeep:all(this) rolld6 6 winability counter(1/1,lastrollresult) winabilityend loseability counter(1/1,lastrollresult) loseabilityend rolld6end +auto=@each my endofturn:all(this) rolld6 6 winability counter(1/1,-lastrollresult) winabilityend loseability counter(1/1,-lastrollresult) loseabilityend rolld6end text=Flying -- When you play Jumbo Imp, roll a six-sided die. Jumbo Imp comes into play with a number of +1/+1 counters on it equal to the die roll. -- During your upkeep, roll a six-sided die and put on Jumbo Imp a number of +1/+1 counters equal to the die roll. -- At the end of your turn, roll a six-sided die and remove from Jumbo Imp a number of +1/+1 counters equal to the die roll. mana={2}{B} type=Summon @@ -31079,6 +33042,19 @@ power=2 toughness=2 [/card] [card] +name=Kalain, Reclusive Painter +auto=token(Treasure Sur) +auto=@sacrificed(*[treasure]|mybattlefield) restriction{type(creature|myrestrictedcastingzone)~morethan~0}:may name(Treasure sacrificed for next creature) counter(0/0.1.TreasToken) +auto=@movedto(other creature|mybattlefield) restriction{compare(hascnttreastoken)~morethan~0}:name(Put 1/1 counter) all(trigger[to]) counter(1/1.hascnttreastoken) && all(this) removeallcounters(0/0.1.TreasToken) +auto=@each end restriction{compare(hascnttreastoken)~morethan~0}:removeallcounters(0/0.1.TreasToken) +text=When Kalain, Reclusive Painter enters the battlefield, create a Treasure token. (It's an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") -- Other creatures you control enter the battlefield with an additional +1/+1 counter on them for each mana from a Treasure spent to cast them. +mana={B}{R} +type=Legendary Creature +subtype=Human Elf Bard +power=1 +toughness=2 +[/card] +[card] name=Kalamax, the Stormsire auto=@movedto(instant|mystack) sourcetap restriction{thisturn(instant|mystack)~lessthan~2}:castcard(copied noevent) auto=@copied target(instant|Stak):all(trigger[this]) counter(1/1) @@ -31226,6 +33202,16 @@ mana={W} type=Instant [/card] [card] +name=Karazikar, the Eye Tyrant +auto=@each my blockers:name(Tap opponent creature) target(creature|opponentbattlefield) transforms((,newability[tap(noevent)],newability[mustattack])) uynt +text=Whenever you attack a player, tap target creature that player controls and goad it. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.) -- Whenever an opponent attacks another one of your opponents, you and the attacking player each draw a card and lose 1 life. +mana={3}{B}{R} +type=Legendary Creature +subtype=Beholder +power=5 +toughness=5 +[/card] +[card] name=Kardur's Vicious Return auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) @@ -31307,7 +33293,7 @@ toughness=3 [card] name=Karn's Bastion auto={T}:Add{C} -auto={4}{T}:_PROLIFERATE_ +auto={4}{T}:name(Proliferate) NotATarget(*) duplicatecounters(single) text={T}: Add {C}. -- {4}, {T}: Proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) type=Land [/card] @@ -31523,6 +33509,17 @@ power=2 toughness=1 [/card] [card] +name=Keen-Eared Sentry +abilities=playershroud +auto=@counteradded(0/0,1,Explore) from(*[dungeon]|opponentcommandzone):transforms((,newability[nodngopp])) ueot +text=You have hexproof. (You can’t be the target of spells or abilities your opponents control.) -- Your opponents can’t venture into the dungeon more than once each turn. +mana={1}{W} +type=Creature +subtype=Human Soldier +power=2 +toughness=1 +[/card] +[card] name=Keensight Mentor auto=newability[counter(0/0,1,Vigilance) && (vigilance)forever target(creature[-human]|myBattlefield)] auto={1}{W}{T}:counter(1/1,1) all(creature[vigilance]|myBattlefield) @@ -31576,6 +33573,18 @@ power=3 toughness=4 [/card] [card] +name=Keeper of the Secret Lair +abilities=flash +auto=lord(*[-land]|mycastingzone) flash +auto=lord(*|mycastingzone) altercost(colorless, -1) +text=Flash -- You may cast Secret Lair spells as though they had flash. -- Secret Lair spells you cast cost {1} less to cast. +mana={1}{U} +type=Legendary Creature +subtype=Merfolk Rogue +power=2 +toughness=1 +[/card] +[card] name=Kefnet the Mindful abilities=flying, indestructible auto=aslongas(*|myhand) cantattack <7 @@ -31829,6 +33838,39 @@ text=Khalni Territory enters the battlefield tapped. -- {T}: Add {G}. // {2}{G} type=Land [/card] [card] +name=Kharis & the Beholder +abilities=flying +auto=token(Human,Creature Human,1/1,white) +auto=@each my upkeep:name(Roll a d20) rolld20 20 winability donothing winabilityend rolld20end +auto=@each my upkeep:token(Human,Creature Human,1/1,white) +auto=@dierolled(this) result(1) from(controller) restriction{type(creature|myBattlefield)~morethan~9}:name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(2) from(controller) restriction{type(creature|myBattlefield)~morethan~8}:name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(3) from(controller) restriction{type(creature|myBattlefield)~morethan~7}:name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(4) from(controller) restriction{type(creature|myBattlefield)~morethan~6}:name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(5) from(controller) restriction{type(creature|myBattlefield)~morethan~5}:name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(6) from(controller) restriction{type(creature|myBattlefield)~morethan~4}:name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(7) from(controller) restriction{type(creature|myBattlefield)~morethan~3}:name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(8) from(controller) restriction{type(creature|myBattlefield)~morethan~2}:name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(9) from(controller) restriction{type(creature|myBattlefield)~morethan~1}:name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(10) from(controller) restriction{type(creature|myBattlefield)~morethan~0}:name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(11) from(controller):name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(12) from(controller):name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(13) from(controller):name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(14) from(controller):name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(15) from(controller):name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(16) from(controller):name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(17) from(controller):name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(18) from(controller):name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(19) from(controller):name(Creatures gain 1/1 counter) all(creature|myBattlefield) counter(1/1) +auto=@dierolled(this) result(20) from(controller):name(Clone all creatures) all(creature[-legendary]|mybattlefield) clone +text=Flying -- When Kharis & The Beholder enters the battlefield and at the beginning of your upkeep, create a 1/1 white Human creature token and make a charisma check. (Roll a d20.) -- • If the result plus the number of creatures you control is greater than 11, put a +1/+1 counter on each creature you control. -- • If the result is a natural 20, for each nonlegendary creature you control, create a token that’s a copy of that creature. +mana={1}{G}{G}{W}{W} +type=Legendary Creature +subtype=Dragon Eye Wizard +power=1 +toughness=20 +[/card] +[card] name=Khenra Charioteer abilities=trample auto=lord(other creature|mybattlefield) trample @@ -31887,7 +33929,7 @@ toughness=3 [card] name=Khorvath Brightflame abilities=flying,haste,partner -auto=may moveto(myhand) notatarget(sylvia brightspear|mylibrary) +auto=may name(Put partner in hand) moveto(myhand) target(sylvia brightspear|mylibrary) auto=lord(knight|myBattlefield) flying auto=lord(knight|myBattlefield) haste text=Partner with Sylvia Brightspear (When this creature enters the battlefield, target player may put Sylvia into their hand from their library, then shuffle.) -- Flying, haste -- Knights your team controls have flying and haste. @@ -31913,7 +33955,7 @@ restriction=compare(isflipped)~equalto~0 anyzone={0}:doubleside(Imbraham, Dean of Theory) autostack=if paid(alternative) then name(Imbraham, Dean of Theory) name(Imbraham, Dean of Theory) flip(Imbraham, Dean of Theory) forcetype(Legendary Creature) auto=this(variable{isflipped}<1) {T}:all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[this(cantargetcard(*[land]|*) moveto(myhand)],newability[this(cantargetcard(*[-land]|*) counter(0/0.1.study)])) oneshot )! -auto=this(variable{isflipped}<1) {4}{G}:token(Fractal,Creature Fractal,0/0,green,blue) and!( transforms((,newability[if type(*[-land;red;counter{0/0.1.study}]|myexile)~morethan~0 then counter(1/1)],newability[if type(*[-land;black;counter{0/0.1.black}]|myexile)~morethan~0 then counter(1/1)],newability[if type(*[-land;green;counter{0/0.1.study}]|myexile)~morethan~0 then counter(1/1)],newability[if type(*[-land;white;counter{0/0.1.study}]|myexile)~morethan~0 then counter(1/1)],newability[if type(*[-land;blue;counter{0/0.1.blue}]|myexile)~morethan~0 then counter(1/1)])) oneshot )! +auto=this(variable{isflipped}<1) {4}{G}:token(Fractal,Creature Fractal,0/0,green,blue) and!( transforms((,newability[if type(*[-land;red;counter{0/0.1.study}]|myexile)~morethan~0 then counter(1/1)],newability[if type(*[-land;black;counter{0/0.1.study}]|myexile)~morethan~0 then counter(1/1)],newability[if type(*[-land;green;counter{0/0.1.study}]|myexile)~morethan~0 then counter(1/1)],newability[if type(*[-land;white;counter{0/0.1.study}]|myexile)~morethan~0 then counter(1/1)],newability[if type(*[-land;blue;counter{0/0.1.study}]|myexile)~morethan~0 then counter(1/1)])) oneshot )! text={T}: Exile the top card of your library. If it's a land card, put it into your hand. Otherwise, put a study counter on it. -- {4}{G}: Create a 0/0 green and blue Fractal creature token. Put a +1/+1 counter on it for each different mana value among nonland cards you own in exile with study counters on them. // {2}{U}{U} name(Imbraham, Dean of Theory) mana={2}{G} type=Legendary Creature @@ -31922,6 +33964,16 @@ power=2 toughness=2 [/card] [card] +name=Kick in the Door +target=creature +auto=counter(1/1) +auto=transforms((,newability[haste],newability[cantbeblockedby(creature[wall])])) ueot +auto=if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=Put a +1/+1 counter on target creature. That creature gains haste until end of turn and can’t be blocked by Walls this turn. Venture into the dungeon. (Enter the first room or advance to the next room.) +mana={R} +type=Sorcery +[/card] +[card] name=Kill Switch auto={2}{T}:all(other artifact|battlefield) transforms((,newability[tap(noevent)],newability[@each my untap:if type(Kill Switch[tapped]|battlefield)~morethan~0 then tap(noevent)])) forever text={2}, {T}: Tap all other artifacts. They don't untap during their controllers' untap steps for as long as Kill Switch remains tapped. @@ -32086,7 +34138,7 @@ subtype=Saga [/card] [card] name=Kiora's Dambreaker -auto=_PROLIFERATE_ +auto=name(Proliferate) NotATarget(*) duplicatecounters(single) text=When Kiora's Dambreaker enters the battlefield, proliferate. (Choose any number of permanents and/or players, then give each a counter of each kind already there.) mana={5}{U} type=Creature @@ -32208,6 +34260,29 @@ power=1 toughness=1 [/card] [card] +name=Klauth's Will +other={X}{R}{R}{G} name(Cast with commander) +otherrestriction=type(*[iscommander]|mybattlefield)~morethan~0 +restriction=type(*[iscommander]|mybattlefield)~equalto~0 +auto=if type(creature[flying]|battlefield)~morethan~0 then choice name(Damage all flying creature) name(Damage all flying creature) all(creature[flying]|battlefield) damage:fullpaid +auto=if type(*[artifact;enchantment]|battlefield)~morethan~0 then choice name(Destroy artifacts or enchantments) name(Destroy artifacts or enchantments) target(*[artifact;enchantment]|battlefield) destroy +auto=if paid(alternative) then if type(creature[flying]|battlefield)~morethan~0 then if type(*[artifact;enchantment]|battlefield)~morethan~0 then choice name(Choose both) name(Choose both) name(Choose both) name(Choose both) all(creature[flying]|battlefield) damage:fullpaid && target(*[artifact;enchantment]|battlefield) destroy +text=Choose one. If you control a commander as you cast this spell, you may choose both. -- • Breathe Flame — Klauth’s Will deals X damage to each creature without flying. -- • Smash Relics — Destroy up to X target artifacts and/or enchantments. +mana={X}{R}{R}{G} +type=Instant +[/card] +[card] +name=Klauth, Unrivaled Ancient +abilities=flying,haste +auto=@combat(attacking) source(this) restriction{type(*[-land]|myrestrictedcastingzone)~morethan~0}:name(Add mana) thisforeach(variable{pwrtotatt}>0) ability$!name(Choose one) choice name(Add white) add{W} doesntempty _ choice name(Add blue) add{U} doesntempty _ choice name(Add red) add{R} doesntempty _ choice name(Add green) add{G} doesntempty _ choice name(Add black) add{B} doesntempty!$ controller +text=Flying, haste -- Whenever Klauth, Unrivaled Ancient attacks, add X mana in any combination of colors, where X is the total power of attacking creatures. Spend this mana only to cast spells. Until end of turn, you don’t lose this mana as steps and phases end. +mana={5}{R}{G} +type=Legendary Creature +subtype=Dragon +power=4 +toughness=4 +[/card] +[card] name=Klothys's Design auto=all(creature|myBattlefield) type:manaG:mybattlefield/type:manaG:mybattlefield ueot text=Creatures you control get +X/+X until end of turn, where X is your devotion to green. (Each {G} in the mana costs of permanents you control counts toward your devotion to green.) @@ -32712,7 +34787,7 @@ toughness=4 [/card] [card] name=Krav, the Unredeemed -auto=may name(Put partner on your hand) name(Put partner on your hand) moveto(myhand) target(Regna^ the Redeemer|mylibrary) +auto=may name(Put partner on your hand) moveto(myhand) target(Regna^ the Redeemer|mylibrary) auto={B}{S(creature|myBattlefield)}:name(Sacrifice 1 creature and target yourself) name(Sacrifice 1 creature and target yourself) all(this) counter(1/1,1) && life:1 controller && draw:1 controller auto={B}{S(creature|myBattlefield)}:name(Sacrifice 1 creature and target opponent) name(Sacrifice 1 creature and target opponent) all(this) counter(1/1,1) && life:1 opponent && draw:1 opponent auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 2 creatures and target yourself) name(Sacrifice 2 creatures and target yourself) all(this) counter(1/1,2) && life:2 controller && draw:2 controller @@ -32742,7 +34817,7 @@ toughness=3 [/card] [card] name=Krazy Kow -auto=@each my upkeep:all(this) rolladie 6 winability donothing winabilityend rollend +auto=@each my upkeep:all(this) rolld6 6 winability donothing winabilityend rolld6end auto=@dierolled(this) result(1) from(controller):name(Sacrifice and damage) name(Sacrifice and damage) sacrifice all(this) && damage:3 opponent && damage:3 controller && damage:3 all(creature|battlefield) text=During your upkeep, roll a six-sided die. On a 1, sacrifice Krazy Kow and it deals 3 damage to each creature and player. mana={3}{R} @@ -32895,6 +34970,17 @@ power=4 toughness=7 [/card] [card] +name=Krydle of Baldur's Gate +auto=@combatdamaged(player) from(this):name(Gain life and scry) life:-1 opponent && deplete:1 opponent && life:1 controller && scry:1 scrycore delayed dontshow donothing scrycoreend scryend +auto=@each my blockers:name(Pay 2 for unblockable) pay({2}) name(Pay 2 for unblockable) target(creature|myBattlefield) transforms((,newability[unblockable])) ueot +text=Whenever Krydle of Baldur’s Gate deals combat damage to a player, that player loses 1 life and mills a card, then you gain 1 life and scry 1. -- Whenever you attack, you may pay {2}. If you do, target creature can’t be blocked this turn. +mana={U}{B} +type=Legendary Creature +subtype=Human Elf Rogue +power=1 +toughness=3 +[/card] +[card] name=Kuldotha Flamefiend other={4}{R}{R}{S(*[artifact]|mybattlefield)} name(Sacrifice artifact) auto=if paid(alternative) then thisforeach(variable{4}) ability$!name(Deal 1 damage) name(Deal 1 damage) target(player,creature,planeswalker) damage:1!$ controller @@ -33107,6 +35193,33 @@ power=3 toughness=4 [/card] [card] +name=Lair of the Hydra +auto=if compare(type:land:myBattlefield)~morethan~2 then tap(noevent) +auto={T}:Add{G} +auto={1}{G}:name(Becomes a 1/1 hydra) becomes(Creature Hydra,1/1,green) ueot +auto={2}{G}:name(Becomes a 2/2 hydra) becomes(Creature Hydra,2/2,green) ueot +auto={3}{G}:name(Becomes a 3/3 hydra) becomes(Creature Hydra,3/3,green) ueot +auto={4}{G}:name(Becomes a 4/4 hydra) becomes(Creature Hydra,4/4,green) ueot +auto={5}{G}:name(Becomes a 5/5 hydra) becomes(Creature Hydra,5/5,green) ueot +auto={6}{G}:name(Becomes a 6/6 hydra) becomes(Creature Hydra,6/6,green) ueot +auto={7}{G}:name(Becomes a 7/7 hydra) becomes(Creature Hydra,7/7,green) ueot +auto={8}{G}:name(Becomes a 8/8 hydra) becomes(Creature Hydra,8/8,green) ueot +auto={9}{G}:name(Becomes a 9/9 hydra) becomes(Creature Hydra,9/9,green) ueot +auto={10}{G}:name(Becomes a 10/10 hydra) becomes(Creature Hydra,10/10,green) ueot +auto={11}{G}:name(Becomes a 11/11 hydra) becomes(Creature Hydra,11/11,green) ueot +auto={12}{G}:name(Becomes a 12/12 hydra) becomes(Creature Hydra,12/12,green) ueot +auto={13}{G}:name(Becomes a 13/13 hydra) becomes(Creature Hydra,13/13,green) ueot +auto={14}{G}:name(Becomes a 14/14 hydra) becomes(Creature Hydra,14/14,green) ueot +auto={15}{G}:name(Becomes a 15/15 hydra) becomes(Creature Hydra,15/15,green) ueot +auto={16}{G}:name(Becomes a 16/16 hydra) becomes(Creature Hydra,16/16,green) ueot +auto={17}{G}:name(Becomes a 17/17 hydra) becomes(Creature Hydra,17/17,green) ueot +auto={18}{G}:name(Becomes a 18/18 hydra) becomes(Creature Hydra,18/18,green) ueot +auto={19}{G}:name(Becomes a 19/19 hydra) becomes(Creature Hydra,19/19,green) ueot +auto={20}{G}:name(Becomes a 20/20 hydra) becomes(Creature Hydra,10/10,green) ueot +text=If you control two or more other lands, Lair of the Hydra enters the battlefield tapped. -- {T}: Add {G}. -- {X}{G}: Until end of turn, Lair of the Hydra becomes an X/X green Hydra creature. It’s still a land. X can’t be 0. +type=Land +[/card] +[card] name=Lampad of Death's Vigil auto={1}{S(creature|mybattlefield)}:life:-1 opponent && life:1 controller text={1}, Sacrifice a creature: Each opponent loses 1 life and you gain 1 life. @@ -33411,7 +35524,7 @@ type=Sorcery name=Lay Claim abilities=cycling target=artifact,creature,enchantment,land,planeswalker -auto=moveto(mybattlefield) +alias=1194 autohand=__CYCLING__({2}) text=Enchant permanent -- You control enchanted permanent. -- Cycling {2} ({2}, Discard this card: Draw a card.) mana={5}{U}{U} @@ -33548,6 +35661,17 @@ power=3 toughness=1 [/card] [card] +name=Leather Armor +auto={9999}:equip +auto={0}:name(equip) rehook target(creature|mybattlefield) limit:1 +auto=teach(creature) 0/1 +auto=@targeted(mytgt) from(*|opponentzones):choice name(This spell costs 1 more) name(This spell costs 1 more) target(*|opponentzones) transforms((,newability[pay[[{1}]] name(pay 1 mana) donothing?fizzle])) oneshot +text=Equipped creature gets +0/+1 and has ward {1}. (Whenever equipped creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {1}.) -- Equip {0}. Activate only once each turn. +mana={1} +type=Artifact +subtype=Equipment +[/card] +[card] name=Leave // Chance target=*|mybattlefield auto=moveto(myhand) @@ -33817,8 +35941,8 @@ type=Artifact [card] name=Ley Weaver abilities=partner -auto=may moveto(myhand) notatarget(lore weaver|mylibrary) -auto={T}:untap <2>target(land) +auto=may name(Put partner in hand) moveto(myhand) target(lore weaver|mylibrary) +auto={T}:name(Untap 2 lands) untap target(<2>land) text=Partner with Lore Weaver (When this creature enters the battlefield, target player may put Lore Weaver into their hand from their library, then shuffle.) -- {T}: Untap two target lands. mana={3}{G} type=Creature @@ -34043,6 +36167,27 @@ power=5 toughness=5 [/card] [card] +name=Lightfoot Rogue +auto=@combat(attacking) source(this):name(Roll a d20) rolld20 20 winability transforms((,newability[3/0],newability[first strike])) ueot winabilityend rolld20end +auto=@dierolled(this) from(controller):name(Gains deathtouch) transforms((,newability[deathtouch])) ueot +auto=@dierolled(this) result(10) from(controller):name(Gains 1/0) transforms((,newability[1/0])) ueot +auto=@dierolled(this) result(11) from(controller):name(Gains 1/0) transforms((,newability[1/0])) ueot +auto=@dierolled(this) result(12) from(controller):name(Gains 1/0) transforms((,newability[1/0])) ueot +auto=@dierolled(this) result(13) from(controller):name(Gains 1/0) transforms((,newability[1/0])) ueot +auto=@dierolled(this) result(14) from(controller):name(Gains 1/0) transforms((,newability[1/0])) ueot +auto=@dierolled(this) result(15) from(controller):name(Gains 1/0) transforms((,newability[1/0])) ueot +auto=@dierolled(this) result(16) from(controller):name(Gains 1/0) transforms((,newability[1/0])) ueot +auto=@dierolled(this) result(17) from(controller):name(Gains 1/0) transforms((,newability[1/0])) ueot +auto=@dierolled(this) result(18) from(controller):name(Gains 1/0) transforms((,newability[1/0])) ueot +auto=@dierolled(this) result(19) from(controller):name(Gains 1/0) transforms((,newability[1/0])) ueot +text=Sneak Attack — Whenever Lightfoot Rogue attacks, roll a d20. -- 1-9 | Lightfoot Rogue gains deathtouch until end of turn. -- 10-19 | It gets +1/+0 and gains deathtouch until end of turn. -- 20 | It gets +3/+0 and gains first strike and deathtouch until end of turn. +mana={1}{B} +type=Creature +subtype=Halfling Rogue +power=2 +toughness=1 +[/card] +[card] name=Lightning Mare abilities=nofizzle auto=cantbeblockedby(creature[blue]) @@ -34292,8 +36437,8 @@ type=Enchantment [/card] [card] name=Lim-Dul the Necromancer -auto={1}{B}:target(creature[zombie]) regenerate -auto=@movedTo(creature|graveyard) from(opponentbattlefield):pay({1}{B}) all(trigger[from]) moveto(mybattlefield) and!( transforms((Zombie)) forever )! +auto={1}{B}:name(Regenerate zombie) target(zombie|battlefield) regenerate +auto=@movedTo(creature|graveyard) from(opponentbattlefield):name(Pay and take creature) pay({1}{B}) name(Pay and take creature) transforms((,newability[all(*[zpos=type:*:opponentGraveyard]|opponentGraveyard) moveto(mybattlefield) and!( if cantargetcard(*[creature]|*) then becomes(Zombie) forever )!])) forever text=Whenever a creature an opponent controls dies, you may pay {1}{B}. If you do, return that card to the battlefield under your control. If it's a creature, it's a Zombie in addition to its other creature types. -- {1}{B}: Regenerate target Zombie. mana={5}{B}{B} type=Legendary Creature @@ -34378,7 +36523,7 @@ type=Artifact [/card] [card] name=Lisette, Dean of the Root -auto=@lifeof(player) from(*[-lifefaker]):pay({1}) name(Put 1/1 counter) all(creature|mybattlefield) tansforms((,newability[counter(1/1)],newability[trample])) ueot +auto=@lifeof(player) from(*[-lifefaker]|*):pay({1}) name(Put 1/1 counter) all(creature|mybattlefield) tansforms((,newability[counter(1/1)],newability[trample])) ueot text=Whenever you gain life, you may pay 1 . If you do, put a +1/+1 counter on each creature you control and those creatures gain trample until end of turn. // {B} Valentin, Dean of the Vein mana={2}{G}{G} type=Legendary Creature @@ -34618,9 +36763,20 @@ power=5 toughness=4 [/card] [card] +name=Loathsome Troll +autograveyard={3}{G}:name(Roll a d20) rolld20 20 winability donothing winabilityend loseability if compare(lastrollresult)~lessthan~10 then moveto(mylibrary) else moveto(myhand) loseabilityend rolld20end +autograveyard=@dierolled(this|mygraveyard) result(20) from(controller):name(Return to battlefield) moveto(myBattlefield) and!( tap(noevent) )! +text={3}{G}: Roll a d20. Activate only if Loathsome Troll is in your graveyard. -- 1-9 | Put Loathsome Troll on top of your library. -- 10-19 | Return Loathsome Troll to your hand. -- 20 | Return Loathsome Troll to the battlefield tapped. +mana={3}{G}{G} +type=Creature +subtype=Troll +power=6 +toughness=2 +[/card] +[card] name=Lobe Lobber auto={2}:equip -auto=teach(creature) transforms((,newability[{T} restriction{type(planeswalker|battlefield)~morethan~0}:name(Damage planeswalker) name(Damage planeswalker) target(planeswalker) damage:1 && all(this) rolladie 5 winability untap winabilityend loseability if compare(lastrollresult)~equalto~6 then untap loseabilityend rollend],newability[{T}:name(Damage opponent) name(Damage opponent) damage:1 opponent && all(this) rolladie 5 winability untap winabilityend loseability if compare(lastrollresult)~equalto~6 then untap loseabilityend rollend],newability[{T}:name(Damage controller) name(Damage controller) damage:1 controller && all(this) rolladie 5 winability untap winabilityend loseability if compare(lastrollresult)~equalto~6 then untap loseabilityend rollend])) +auto=teach(creature) transforms((,newability[{T} restriction{type(planeswalker|battlefield)~morethan~0}:name(Damage planeswalker) name(Damage planeswalker) target(planeswalker) damage:1 && all(this) rolld6 5 winability untap winabilityend loseability if compare(lastrollresult)~equalto~6 then untap loseabilityend rolld6end],newability[{T}:name(Damage opponent) name(Damage opponent) damage:1 opponent && all(this) rolld6 5 winability untap winabilityend loseability if compare(lastrollresult)~equalto~6 then untap loseabilityend rolld6end],newability[{T}:name(Damage controller) name(Damage controller) damage:1 controller && all(this) rolld6 5 winability untap winabilityend loseability if compare(lastrollresult)~equalto~6 then untap loseabilityend rolld6end])) text=Equipped creature has " {T}: This creature deals 1 damage to target player or planeswalker. Roll a six-sided die. On a 5 or higher, untap it." -- Equip {2} mana={2} type=Artifact @@ -34704,6 +36860,19 @@ power=3 toughness=3 [/card] [card] +name=Long Rest +abilities=exiledeath +target=*|mygraveyard +other={X}{G}{G}{G} name(Cast Long Rest) +otherrestriction=type(*|mygraveyard)~morethan~7 +restriction=type(*|mygraveyard)~lessthan~8 +auto=moveto(myhand) +auto=if paid(alternative) then if compare(fullpaid)~morethan~7 then name(Return cards) lifeset:startinglife controller +text=Return X target cards with different mana values from your graveyard to your hand. If eight or more cards were returned to your hand this way, your life total becomes equal to your starting life total. Exile Long Rest. +mana={X}{G}{G}{G} +type=Sorcery +[/card] +[card] name=Long-Term Plans auto=name(search card) reveal:plibrarycount optionone name(choose card) target(*|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) placefromthetop(3) afterrevealedend revealend text=Search your library for a card, shuffle your library, then put that card third from the top. @@ -34769,6 +36938,38 @@ power=1 toughness=7 [/card] [card] +name=Lorcan, Warlock Collector +abilities=flying +auto=lord(warlock|mybattlefield) exiledeath +auto=@movedto(creature[manacost=0]|opponentgraveyard):transforms((,newability[may name(Pay 0 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=1]|opponentgraveyard):transforms((,newability[name(Pay 1 and put on your battlefield) pay({L:1}) name(Pay 1 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=2]|opponentgraveyard):transforms((,newability[name(Pay 2 and put on your battlefield) pay({L:2}) name(Pay 2 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=3]|opponentgraveyard):transforms((,newability[name(Pay 3 and put on your battlefield) pay({L:3}) name(Pay 3 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=4]|opponentgraveyard):transforms((,newability[name(Pay 4 and put on your battlefield) pay({L:4}) name(Pay 4 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=5]|opponentgraveyard):transforms((,newability[name(Pay 5 and put on your battlefield) pay({L:5}) name(Pay 5 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=6]|opponentgraveyard):transforms((,newability[name(Pay 6 and put on your battlefield) pay({L:6}) name(Pay 6 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=7]|opponentgraveyard):transforms((,newability[name(Pay 7 and put on your battlefield) pay({L:7}) name(Pay 7 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=8]|opponentgraveyard):transforms((,newability[name(Pay 8 and put on your battlefield) pay({L:8}) name(Pay 8 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=9]|opponentgraveyard):transforms((,newability[name(Pay 9 and put on your battlefield) pay({L:9}) name(Pay 9 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=10]|opponentgraveyard):transforms((,newability[name(Pay 10 and put on your battlefield) pay({L:10}) name(Pay 10 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=11]|opponentgraveyard):transforms((,newability[name(Pay 11 and put on your battlefield) pay({L:11}) name(Pay 11 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=12]|opponentgraveyard):transforms((,newability[name(Pay 12 and put on your battlefield) pay({L:12}) name(Pay 12 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=13]|opponentgraveyard):transforms((,newability[name(Pay 13 and put on your battlefield) pay({L:13}) name(Pay 13 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=14]|opponentgraveyard):transforms((,newability[name(Pay 14 and put on your battlefield) pay({L:14}) name(Pay 14 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=15]|opponentgraveyard):transforms((,newability[name(Pay 15 and put on your battlefield) pay({L:15}) name(Pay 15 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=16]|opponentgraveyard):transforms((,newability[name(Pay 16 and put on your battlefield) pay({L:16}) name(Pay 16 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=17]|opponentgraveyard):transforms((,newability[name(Pay 17 and put on your battlefield) pay({L:17}) name(Pay 17 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=18]|opponentgraveyard):transforms((,newability[name(Pay 18 and put on your battlefield) pay({L:18}) name(Pay 18 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost=19]|opponentgraveyard):transforms((,newability[name(Pay 19 and put on your battlefield) pay({L:19}) name(Pay 19 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +auto=@movedto(creature[manacost>=20]|opponentgraveyard):transforms((,newability[name(Pay 20 and put on your battlefield) pay({L:20}) name(Pay 20 and put on your battlefield) all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(mybattlefield)])) oneshot +text=Flying -- Whenever a creature card is put into an opponent’s graveyard from anywhere, you may pay life equal to its mana value. If you do, put it onto the battlefield under your control. It’s a Warlock in addition to its other types. -- If a Warlock you control would die, exile it instead. +mana={5}{B}{B} +type=Legendary Creature +subtype=Devil +power=6 +toughness=6 +[/card] +[card] name=Lord of the Accursed auto=lord(other zombie|mybattlefield) 1/1 auto={1}{B}{T}:all(zombie|mybattlefield) menace ueot @@ -34803,7 +37004,7 @@ toughness=3 [card] name=Lore Weaver abilities=partner -auto=may moveto(myhand) notatarget(ley weaver|mylibrary) +auto=may name(Put partner in hand) moveto(myhand) target(ley weaver|mylibrary) auto={5}{U}{U}:draw:2 target(player) text=Partner with Ley Weaver (When this creature enters the battlefield, target player may put Ley Weaver into their hand from their library, then shuffle.) -- {5}{U}{U}: Target player draws two cards. mana={3}{U} @@ -34906,6 +37107,19 @@ power=2 toughness=3 [/card] [card] +name=Lost Mine of Phandelver +restriction=never +autocommandzone=transforms((,newability[shroud],newability[indestructible])) forever +autocommandzone=@counteradded(0/0,1,Explore) from(Lost Mine of Phandelver|mycommandzone) restriction{compare(hascntexplore)~equalto~1}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Cave Entrance) name(Cave Entrance) scry:1 scrycore delayed dontshow donothing scrycoreend scryend!$ controller +autocommandzone=@counteradded(0/0,1,Explore) from(Lost Mine of Phandelver|mycommandzone) restriction{compare(hascntexplore)~equalto~2}:ability$!name(Goblin Lair or Mine Tunnels) all(Lost Mine of Phandelver|mycommandzone) transforms((,newability[choice name(Goblin Lair)*type:*[twodngtrg]:mybattlefieldplus1plusend token(Goblin Los) and!( all(Lost Mine of Phandelver|mycommandzone) counter(0/0.1.GoblinLiar) notrg )!],newability[choice name(Mine Tunnels) token(Treasure Sur)*type:*[twodngtrg]:mybattlefieldplus1plusend and!( all(Lost Mine of Phandelver|mycommandzone) counter(0/0.1.MineTunnels) notrg )!])) oneshot!$ controller +autocommandzone=@counteradded(0/0,1,Explore) from(Lost Mine of Phandelver|mycommandzone) restriction{compare(hascntexplore)~equalto~3,compare(hascntgoblinliar)~morethan~0}:ability$!name(Storeroom or Dark Pool) all(Lost Mine of Phandelver|mycommandzone) transforms((,newability[if type(creature|battlefield)~morethan~0 then choice name(Storeroom) name(Storeroom) target(creature|battlefield) counter(1/1)],newability[choice name(Dark Pool) life:type:*[twodngtrg]:mybattlefieldplus1plusend controller && life:-type:*[twodngtrg]:mybattlefieldplus1plusend opponent])) oneshot!$ controller +autocommandzone=@counteradded(0/0,1,Explore) from(Lost Mine of Phandelver|mycommandzone) restriction{compare(hascntexplore)~equalto~3,compare(hascntminetunnels)~morethan~0}:ability$!name(Dark Pool or Fungi Cavern) all(Lost Mine of Phandelver|mycommandzone) transforms((,newability[choice name(Dark Pool) life:type:*[twodngtrg]:mybattlefieldplus1plusend controller controller && life:-type:*[twodngtrg]:mybattlefieldplus1plusend controller opponent],newability[if type(creature|battlefield)~morethan~0 then choice name(Fungi Cavern) name(Fungi Cavern) target(creature|battlefield) transforms((,newability[-4/0])) uynt])) oneshot!$ controller +autocommandzone=@counteradded(0/0,1,Explore) from(Lost Mine of Phandelver|mycommandzone) restriction{compare(hascntexplore)~equalto~4}:choice name(Dungeon completed) all(Lost Mine of Phandelver|mycommandzone) completedungeon:1 controller +autocommandzone=@counteradded(0/0,1,Explore) from(Lost Mine of Phandelver|mycommandzone) restriction{compare(hascntexplore)~equalto~4}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Temple of Dumathoin) name(Temple of Dumathoin) draw:1 controller!$ controller +text=Cave Entrance — Scry 1. -- Goblin Lair — Create a 1/1 red Goblin creature token. -- Mine Tunnels — Create a Treasure token. -- Storeroom — Put a +1/+1 counter on target creature. -- Dark Pool — Each opponent loses 1 life and you gain 1 life. -- Fungi Cavern — Target creature gets -4/-0 until your next turn. -- Temple of Dumathoin — Draw a card. +type=Dungeon +[/card] +[card] name=Lost Vale auto={T}:add{G}{G}{G} auto={T}:add{B}{B}{B} @@ -35051,6 +37265,17 @@ power=3 toughness=4 [/card] [card] +name=Loyal Warhound +abilities=vigilance +auto=if compare(type:land:opponentbattlefield)~morethan~compare(type:land:mybattlefield) then name(Search plains) name(Search plains) target(plains[basic]|mylibrary) moveto(mybattlefield) and!( tap(noevent) )! +text=Vigilance -- When Loyal Warhound enters the battlefield, if an opponent controls more lands than you, search your library for a basic Plains card, put it onto the battlefield tapped, then shuffle. +mana={1}{W} +type=Creature +subtype=Dog +power=3 +toughness=1 +[/card] +[card] name=Lucid Dreams auto=draw:mygravecardtypes controller text=Draw X cards, where X is the number of card types among cards in your graveyard. @@ -35216,6 +37441,17 @@ power=4 toughness=2 [/card] [card] +name=Lurking Roper +abilities=doesnotuntap +auto=@lifeof(player):name(Untap) untap +text=Lurking Roper doesn’t untap during your untap step. -- Whenever you gain life, untap Lurking Roper. +mana={2}{G} +type=Creature +subtype=Horror +power=4 +toughness=5 +[/card] +[card] name=Lurrus of the Dream-Den auto=@each my upkeep:may name(Choose a permanent in graveyard) target(*[-instant;-sorcery]|mygraveyard) transforms((,newability[canplayfromgraveyard],newability[{2}:name(Cast from graveyard for 2) activate castcard(alternative)])) ueot text=Companion — Each permanent card in your starting deck has converted mana cost 2 or less. (If this card is your chosen companion, you may cast it once from outside the game.) -- Lifelink -- During each of your turns, you may cast one permanent spell with converted mana cost 2 or less from your graveyard. @@ -35265,6 +37501,20 @@ power=3 toughness=1 [/card] [card] +name=M'Odo, the Gnarled Oracle +aicode=activate moveTo(myBattlefield) target(creature[manacost<=X]|myLibrary) +auto={D(*|myhand)}{X}:name(Reveal my library for a creature) reveal:1 revealzone(mylibrary) revealuntil(creature[manacost<=x]|mylibrary) optionone target(creature[manacost<=x]|reveal) moveto(myBattlefield) optiononeend optiontwo all(*|reveal) bottomoflibrary optiontwoend revealend +auto={D(*|myhand)}{X}:name(Reveal opponent library for a creature) reveal:1 revealzone(opponentLibrary) revealuntil(creature[manacost<=X]|opponentLibrary) optionone target(creature[manacost<=X]|reveal) moveto(opponentBattlefield) optiononeend optiontwo all(*|reveal) bottomoflibrary optiontwoend revealend +autocommandzone={D(*|myhand)}{X}:name(Reveal from my library) reveal:1 revealzone(mylibrary) revealuntil(creature[manacost<=x]|mylibrary) optionone target(creature[manacost<=x]|reveal) moveto(myBattlefield) optiononeend optiontwo all(*|reveal) bottomoflibrary optiontwoend revealend +autocommandzone={D(*|myhand)}{X}:name(Reveal from opponent library) reveal:1 revealzone(opponentLibrary) revealuntil(creature[manacost<=X]|opponentLibrary) optionone target(creature[manacost<=X]|reveal) moveto(opponentBattlefield) optiononeend optiontwo all(*|reveal) bottomoflibrary optiontwoend revealend +text=Eminence — {X}, Discard a card: Target player reveals cards from the top of their library until they reveal a creature card with converted mana cost X or less. Put that card onto the battlefield under your control, then that player shuffles the rest into their library. Activate this ability only if M'Odo, the Gnarled Oracle is on the battlefield or in the command zone. +mana={B}{U}{G} +type=Legendary Creature +subtype=Zombie Elf Wizard +power=0 +toughness=3 +[/card] +[card] name=Macabre Mockery target=creature|opponentGraveyard auto=moveto(myBattlefield) @@ -35307,7 +37557,7 @@ toughness=2 [/card] [card] name=Mad Science Fair Project -auto={T}:all(this) rolladie 6 winability counter(0/0,1,MadEffect) winabilityend loseability counter(0/0,1,MadEffect) loseabilityend rollend +auto={T}:all(this) rolld6 6 winability counter(0/0,1,MadEffect) winabilityend loseability counter(0/0,1,MadEffect) loseabilityend rolld6end auto=@dierolled(this) result(1) from(controller):this(counter{0/0.1.MadEffect}=1) ability$!name(Add colorless) name(Add colorless) add{C}!$ controller && counter(0/0,-1,MadEffect) all(this) auto=@dierolled(this) result(2) from(controller):this(counter{0/0.1.MadEffect}=1) ability$!name(Add colorless) name(Add colorless) add{C}!$ controller && counter(0/0,-1,MadEffect) all(this) auto=@dierolled(this) result(3) from(controller):this(counter{0/0.1.MadEffect}=1) ability$!name(Add colorless) name(Add colorless) add{C}!$ controller && counter(0/0,-1,MadEffect) all(this) @@ -35328,6 +37578,15 @@ mana={1}{U} type=Sorcery [/card] [card] +name=Maddening Hex +target=player +auto=@movedTo(*[-creature]|targetedpersonsstack):name(Roll a d6) rolld6 6 winability damage:lastrollresult targetedplayer winabilityend loseability damage:targetedplayer opponent loseabilityend rolld6end +text=Enchant player -- Whenever enchanted player casts a noncreature spell, roll a d6. Maddening Hex deals damage to that player equal to the result. Then attach Maddening Hex to another one of your opponents chosen at random. +mana={1}{R}{R} +type=Enchantment +subtype=Aura Curse +[/card] +[card] name=Maelstrom Colossus autostack=if casted(this) then cascade:plibrarycount text=Cascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom of your library in a random order.) @@ -35411,6 +37670,14 @@ mana={2}{B}{B} type=Sorcery [/card] [card] +name=Magic Missile +abilities=nofizzle +auto=thisforeach(variable{3}) ability$!name(Deal 1 damage) name(Deal 1 damage) damage:1 target(player,creature,planeswalker)!$ controller +text=This spell can’t be countered. -- Magic Missile deals 3 damage divided as you choose among one, two, or three targets. +mana={1}{R}{R} +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 @@ -35851,6 +38118,17 @@ mana={1} type=Artifact [/card] [card] +name=Manticore +abilities=flash,flying +auto=name(Destroy creature) target(creature[damaged]|opponentbattlefield) destroy +text=Flash -- Flying -- Tail Spikes — When Manticore enters the battlefield, destroy target creature an opponent controls that was dealt damage this turn. +mana={3}{B} +type=Creature +subtype=Manticore +power=2 +toughness=1 +[/card] +[card] name=Manticore Eternal abilities=mustattack auto=@combat(blocked,turnlimited) source(this):life:-3 opponent @@ -35883,6 +38161,16 @@ type=Artifact subtype=Equipment [/card] [card] +name=Mantle of the Ancients +target=creature|mybattlefield +auto=name(Return auras and equipments) target(*[aura;equipment]|mygraveyard) moveto(mybattlefield) and!( transforms((,newability[name(Attach to enchanted creature) rehook target(creature|mybattlefield)])) oneshot )! +auto=teach(creature) transforms((,newability[thisforeach(auras) 1/1],newability[thisforeach(gear) 1/1])) +text=Enchant creature you control -- When Mantle of the Ancients enters the battlefield, return any number of target Aura and/or Equipment cards from your graveyard to the battlefield attached to enchanted creature. -- Enchanted creature gets +1/+1 for each Aura and Equipment attached to it. +mana={3}{W}{W} +type=Enchantment +subtype=Aura +[/card] +[card] name=Mantle of the Wolf target=creature auto=4/4 @@ -35938,7 +38226,7 @@ subtype=Equipment [/card] [card] name=Marauding Blight-Priest -auto=@lifeof(player) from(*[-lifefaker]):life:-1 opponent +auto=@lifeof(player) from(*[-lifefaker]|*):life:-1 opponent text=Whenever you gain life, each opponent loses 1 life. mana={2}{B} type=Creature @@ -36093,7 +38381,7 @@ subtype=Aura [/card] [card] name=Martyr for the Cause -auto=_DIES__PROLIFERATE_ +auto=@movedto(this|graveyard) from(battlefield):name(Proliferate) NotATarget(*) duplicatecounters(single) text=When Martyr for the Cause dies, proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) mana={1}{W} type=Creature @@ -36410,7 +38698,7 @@ toughness=3 [/card] [card] name=Maul of the Skyclaves -auto=equip target(creature|myBattlefield) +auto=aslongas(parents) name(Attach to creature) rehook target(creature|myBattlefield) <1 auto=teach(creature) 2/2 auto=teach(creature) flying auto=teach(creature) first strike @@ -36803,7 +39091,7 @@ toughness=4 name=Merfolk Skydiver abilities=flying auto=counter(1/1) target(creature|myBattlefield) -auto={3}{G}{U}:_PROLIFERATE_ +auto={3}{G}{U}:name(Proliferate) NotATarget(*) duplicatecounters(single) text=Flying -- When Merfolk Skydiver enters the battlefield, put a +1/+1 counter on target creature you control. -- {3}{G}{U}: Proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) mana={G}{U} type=Creature @@ -36920,6 +39208,21 @@ mana={X}{X}{R} type=Sorcery [/card] [card] +name=Meteor Swarm +abilities=nofizzle +auto=this(X=1) damage:8 target(*[creature;planeswalker]|battlefield) +auto=this(X=2) thisforeach(variable{8}) ability$!name(Deal 1 damage) name(Deal 1 damage) damage:1 target(creature,planeswalker)!$ controller +auto=this(X=3) thisforeach(variable{8}) ability$!name(Deal 1 damage) name(Deal 1 damage) damage:1 target(creature,planeswalker)!$ controller +auto=this(X=4) thisforeach(variable{8}) ability$!name(Deal 1 damage) name(Deal 1 damage) damage:1 target(creature,planeswalker)!$ controller +auto=this(X=5) thisforeach(variable{8}) ability$!name(Deal 1 damage) name(Deal 1 damage) damage:1 target(creature,planeswalker)!$ controller +auto=this(X=6) thisforeach(variable{8}) ability$!name(Deal 1 damage) name(Deal 1 damage) damage:1 target(creature,planeswalker)!$ controller +auto=this(X=7) thisforeach(variable{8}) ability$!name(Deal 1 damage) name(Deal 1 damage) damage:1 target(creature,planeswalker)!$ controller +auto=this(X>=8) damage:1 target(<8>*[creature;planeswalker]|battlefield) +text=Meteor Swarm deals 8 damage divided as you choose among X target creatures and/or planeswalkers +mana={X}{R}{R}{R} +type=Sorcery +[/card] +[card] name=Meteoric Mace autostack=if casted(this) then cascade:plibrarycount auto=teach(creature) trample @@ -36975,6 +39278,17 @@ mana={2}{U} type=Artifact [/card] [card] +name=Midnight Pathlighter +auto=lord(creature|mybattlefield) cantbeblockedby(creature[-legendary]) +auto=@combatdamaged(player) from(creature|mybattlefield) restriction{compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0} turnlimited:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=Creatures you control can’t be blocked except by legendary creatures. -- Whenever one or more creatures you control deal combat damage to a player, venture into the dungeon. (Enter the first room or advance to the next room.) +mana={2}{W}{U} +type=Creature +subtype=Human Wizard +power=2 +toughness=3 +[/card] +[card] name=Midnight Reaper auto=@movedto(other creature[-token]|myGraveyard) from(myBattlefield):damage:1 controller auto=@movedto(other creature[-token]|myGraveyard) from(myBattlefield):draw:1 controller @@ -37067,6 +39381,19 @@ power=2 toughness=3 [/card] [card] +name=Mimic +auto={T}{S}:add{W} +auto={T}{S}:add{B} +auto={T}{S}:add{R} +auto={T}{S}:add{U} +auto={T}{S}:add{G} +auto={2}:name(Becomes shapeshifter) transforms((Creature Shapeshifter,setpower=3,settoughness=3)) ueot +text={T}, Sacrifice Mimic: Add one mana of any color. -- {2}: Mimic becomes a Shapeshifter artifact creature with base power and toughness 3/3 until end of turn. +mana={2} +type=Artifact +subtype=Treasure +[/card] +[card] name=Mimic Vat auto=@movedto(creature[-token]|nonbattlezone) from(battlefield):may name(Imprint card) name(Imprint card) all(trigger[to]) transforms((,newability[moveTo(ownerGraveyard) all(other creature[counter{0/0.1.MimicImprinted}]|exile)],newability[moveto(exile) and!( counter(0/0.1.MimicImprinted) )!])) forever auto={3}{T}:target(creature[counter{0/0.1.MimicImprinted}]|exile) clone with(haste,treason) @@ -37076,7 +39403,7 @@ type=Artifact [/card] [card] name=Mind Carver -auto=rehook target(creature|myBattlefield) +auto=aslongas(parents) name(Attach to creature) rehook target(creature|myBattlefield) <1 auto=teach(creature) transforms((,newability[aslongas(*|opponentGraveyard) 1/0 <8])) auto=teach(creature) transforms((,newability[aslongas(*|opponentGraveyard) 3/1 >7])) auto={2}{B}:equip @@ -37096,6 +39423,16 @@ mana={2}{B} type=Sorcery [/card] [card] +name=Mind Flayer +auto=name(Dominate Monster) steal target(creature) +text=Dominate Monster — When Mind Flayer enters the battlefield, gain control of target creature for as long as you control Mind Flayer. +mana={3}{U}{U} +type=Creature +subtype=Horror +power=3 +toughness=3 +[/card] +[card] name=Mind Rake abilities=overload other={1}{B} name(Overload) @@ -37160,6 +39497,27 @@ mana={3}{R} type=Instant [/card] [card] +name=Minimus Containment +target=artifact,creature,enchantment,planeswalker +auto=teach(*) transforms((,newability[flip(Treasure Sur)],newability[counter(0/0.1.MinimusEffect)])) +auto=@movedto(this|nonbattlezone) from(battlefield):choice name(Minimus effect ends) target(*[counter{0/0.1.MinimusEffect}]) transforms((,newability[flip(myorigname) undocpy],newability[removeallcounters(0/0.1.MinimusEffect)])) forever +text=Enchant nonland permanent -- Enchanted permanent is a Treasure artifact with "{T}, Sacrifice this artifact: Add one mana of any color" and it loses all other abilities. (If it was a creature, it’s no longer a creature.) +mana={2}{W} +type=Enchantment +subtype=Aura +[/card] +[card] +name=Minion of the Mighty +abilities=menace +auto=@combat(attacking) source(this) restriction{compare(pwrtotatt)~morethan~5}:may name(Put dragon on battlefield) target(creature[dragon]|myhand) ninjutsu +text=Menace -- Pack tactics — Whenever Minion of the Mighty attacks, if you attacked with creatures with total power 6 or greater this combat, you may put a Dragon creature card from your hand onto the battlefield tapped and attacking. +mana={R} +type=Creature +subtype=Kobold +power=0 +toughness=1 +[/card] +[card] name=Minion of the Wastes abilities=trample auto=if compare(lifetotal)~morethan~0 then choice name(Pay 1 life) life:-1 controller && transforms((,setpower=1,settoughness=1)) forever @@ -37210,6 +39568,37 @@ power=2 toughness=1 [/card] [card] +name=Minn, Wily Illusionist +auto=@drawof(player) restriction{compare(pdrewcount)~equalto~2}:token(Illusion,Creature Illusion,1/1,blue) and!( transforms((,newability[foreach(other *[illusion]|mybattlefield) 1/0])) forever )! +auto=@movedTo(illusion[power=0]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=0]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=1]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=1]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=2]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=2]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=3]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=3]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=4]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=4]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=5]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=5]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=6]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=6]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=7]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=7]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=8]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=8]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=9]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=9]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=10]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=10]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=11]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=11]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=12]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=12]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=13]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=13]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=14]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=14]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=15]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=15]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=16]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=16]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=17]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=17]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=18]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=18]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power=19]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery;manacost<=19]|myhand) moveto(mybattlefield) +auto=@movedTo(illusion[power>=19]|graveyard) from(mybattlefield):may name(Put permanent on battlefield) target(*[-instant;-sorcery]|myhand) moveto(mybattlefield) +text=Whenever you draw your second card each turn, create a 1/1 blue Illusion creature token with "This creature gets +1/+0 for each other Illusion you control." -- Whenever an Illusion you control dies, you may put a permanent card with mana value less than or equal to that creature’s power from your hand onto the battlefield. +mana={1}{U}{U} +type=Legendary Creature +subtype=Gnome Wizard +power=1 +toughness=3 +[/card] +[card] name=Minotaur Sureshot abilities=reach auto={1}{R}:1/0 @@ -37221,6 +39610,17 @@ power=2 toughness=3 [/card] [card] +name=Minsc, Beloved Ranger +auto=name(Create Boo) token(Boo,Legendary Creature Hamster,1/1,red,trample,haste) +auto={X}:name(Creature becomes giant) target(creature|myBattlefield) becomes(Giant,x/x) ueot asSorcery +text=When Minsc, Beloved Ranger enters the battlefield, create Boo, a legendary 1/1 red Hamster creature token with trample and haste. -- {X}: Until end of turn, target creature you control has base power and toughness X/X and becomes a Giant in addition to its other types. Activate only a sorcery. +mana={R}{G}{W} +type=Legendary Creature +subtype=Human Ranger +power=3 +toughness=3 +[/card] +[card] name=Miracle Worker auto={T}:destroy target(aura) text={T}: Destroy target Aura attached to a creature you control. @@ -37696,6 +40096,32 @@ power=3 toughness=3 [/card] [card] +name=Monk Class +auto=counter(0/0,1,Level) +auto=if thisturn(*|mystack)~equalto~1 then counter(0/0,1,MonkEffect) +auto=@movedto(*|mystack):counter(0/0,1,MonkEffect) +auto=this(variable{hascntmonkeffect}=1) lord(*|mycastingzone) altercost(colorless, -1) +auto=@each endofturn restriction{compare(hascntmonkeffect)~morethan~0}:removeallcounters(0/0,1,MonkEffect) +auto=this(variable{hascntlevel}=1) {W}{U}:name(Level 2) counter(0/0,1,Level) asSorcery +auto=@counteradded(0/0.1.Level) restriction{compare(hascntlevel)~equalto~2}:may name(Return non-land permanent) target(*[-land]|battlefield) moveto(ownerhand) +auto=this(variable{hascntlevel}=2) {1}{W}{U}:name(Level 3) counter(0/0,1,Level) asSorcery +auto=@each my upkeep restriction{compare(hascntlevel)~morethan~2}:name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[@movedto(*|mystack):canplayfromexile ueot])) forever )! +text=(Gain the next level as a sorcery to add its ability.) -- The second spell you cast each turn costs {1} less to cast. -- {W}{U}: Level 2 -- When this Class becomes level 2, return up to one target nonland permanent to its owner’s hand. -- {1}{W}{U}: Level 3 -- At the beginning of your upkeep, exile the top card of your library. For as long as it remains exiled, it has "You may cast this card from exile as long as you’ve cast another spell this turn." +mana={W}{U} +type=Enchantment +subtype=Class +[/card] +[card] +name=Monk of the Open Hand +auto=@movedto(*|mystack) restriction{thisturn(*|mystack)~equalto~1}:name(Flurry of Blows) counter(1/1) +text=Flurry of Blows — Whenever you cast your second spell each turn, put a +1/+1 counter on Monk of the Open Hand. +mana={W} +type=Creature +subtype=Elf Monk +power=1 +toughness=1 +[/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. @@ -37767,6 +40193,16 @@ power=2 toughness=3 [/card] [card] +name=Moon-Blessed Cleric +auto=may name(Search enchantment) target(enchantment|mylibrary) moveto(myreveal) and!( moveto(mylibrary) )! +text=Divine Intervention — When Moon-Blessed Cleric enters the battlefield, you may search your library for an enchantment card, reveal it, then shuffle and put that card on top. +mana={2}{W} +type=Creature +subtype=Human Elf Cleric +power=3 +toughness=2 +[/card] +[card] name=Moon-Eating Dog auto=aslongas(planeswalker[Yanling]|mybattlefield) flying text=As long as you control a Yanling planeswalker, Moon-Eating Dog has flying. (It can't be blocked except by creatures with flying or reach.) @@ -37810,6 +40246,14 @@ power=6 toughness=6 [/card] [card] +name=Mordenkainen's Polymorph +target=creature +auto=transforms((removecreaturesubtypes,newability[becomes(Dragon^4/4^flying)])) ueot +text=Until end of turn, target creature becomes a Dragon with base power and toughness 4/4 and gains flying. (It loses all other creature types.) +mana={1}{U} +type=Instant +[/card] +[card] name=Moritte of the Frost abilities=changeling auto=if type(creature|mybattlefield)~morethan~0 then choice name(Becomes a copy of creature) name(Becomes a copy of creature) target(creature|mybattlefield) copy and!( transforms((Legendary Snow,newability[counter(1/1.2)],newability[changeling])) forever )! @@ -37896,7 +40340,7 @@ toughness=2 [/card] [card] name=Mother Kangaroo -auto=all(this) rolladie 6 winability counter(1/1,lastrollresult) winabilityend loseability counter(1/1,lastrollresult) loseabilityend rollend +auto=all(this) rolld6 6 winability counter(1/1,lastrollresult) winabilityend loseability counter(1/1,lastrollresult) loseabilityend rolld6end text=When this creature enters the battlefield, roll a six-sided die. Put a number of +1/+1 counters on this creature equal to the result. mana={4}{G} type=Host Creature @@ -38218,6 +40662,17 @@ mana={6} type=Artifact [/card] [card] +name=Myntasha, Honored One +##first conditional to cast can't be coded yet## +auto=@movedto(*|mystack):name(Spell gains cascade) target(*|mystack) transforms((,newability[cascade:plibrarycount])) forever +text=As an additional cost to cast this spell, you may open a sealed Magic booster pack and put the cards on the bottom of your booster pile in a random order. -- Spells you cast have booster cascade. (It’s like cascade but you use your booster pile rather than your library.) +mana={2}{G}{G} +type=Legendary Snow Creature +subtype=Elk +power=3 +toughness=3 +[/card] +[card] name=Myr Reservoir auto=this(variable{type:myr:myrestrictedcastingzone}>0) {T}:add{C}{C} auto=this(variable{type:myr:mybattlefield}>0) {T}:add{C}{C} @@ -38297,9 +40752,9 @@ type=Instant [/card] [card] name=Mystic Forge -auto={T}{L:1}:moveto(exile) all(*[zpos=1]|mylibrary) -aicode=activate name(look) donothing -auto={0}:name(Look) reveal:1 optionone name(look) target(<1>*[artifact,-land,-white,-red,-blue,-green,-black]|reveal) moveto(mylibrary) optiononeend optiontwo name(put it back) all(*|reveal) moveto(mylibrary) optiontwoend revealend +abilities=showfromtoplibrary,canplayartifactlibrarytop +auto=this(variable{type:*[-land;-black;-red;-blue;-green;-white;zpos=1]:mylibrary}>0) canplayfromlibrarytop +auto={T}{L:1}:name(Exile top card) moveto(exile) all(*[zpos=1]|mylibrary) text=You may look at the top card of your library any time. -- You may cast the top card of your library if it's an artifact card or a colorless nonland card. -- {T}, Pay 1 life: Exile the top card of your library. mana={4} type=Artifact @@ -38421,6 +40876,19 @@ power=2 toughness=1 [/card] [card] +name=Nadaar, Selfless Paladin +abilities=vigilance +auto=if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +auto=@combat(attacking) source(this) restriction{compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0}:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +auto=this(variable{pdungeoncompleted}>0) lord(creature|myBattlefield) 1/1 +text=Vigilance -- Whenever Nadaar, Selfless Paladin enters the battlefield or attacks, venture into the dungeon. (Enter the first room or advance to the next room.) -- Other creatures you control get +1/+1 as long as you’ve completed a dungeon. +mana={2}{W} +type=Legendary Creature +subtype=Dragon Knight +power=3 +toughness=3 +[/card] +[card] name=Nadier's Nightblade auto=@movedTo(*[token]|nonbattlezone) from(battlefield):life:1 controller && life:-1 opponent text=Whenever a token you control leaves the battlefield, each opponent loses 1 life and you gain 1 life. @@ -38855,8 +41323,8 @@ type=Sorcery [card] name=Necrotic Wound target=creature -auto=foreach(creature|mygraveyard) -X/-X -auto=exiledeath +auto=-type:creature:mygraveyard/-type:creature:mygraveyard ueot +auto=exiledeath ueot text=Undergrowth — Target creature gets -X/-X until end of turn, where X is the number of creature cards in your graveyard. If that creature would die this turn, exile it instead. mana={B} type=Instant @@ -39093,6 +41561,15 @@ mana={1}{B} type=Artifact [/card] [card] +name=Netherese Puzzle-Ward +aicode=activate transforms((,newability[all(*[zpos<=lastrollresult]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveto(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot +auto=@each my upkeep:name(Roll a d4) rolld4 4 winability scry:lastrollresult scrycore delayed dontshow donothing scrycoreend scryend winabilityend loseability scry:lastrollresult scrycore delayed dontshow donothing scrycoreend scryend loseabilityend rolld4end +auto=@dierolled(*|myzones) result(max) from(controller):name(Draw a card) draw:1 controller +text=Focus Beam — At the beginning of your upkeep, roll a d4. Scry X, where X is the result. -- Perfect Illumination — Whenever you roll a die’s highest natural result, draw a card. +mana={3}{U} +type=Enchantment +[/card] +[card] name=Nethroi, Apex of Death abilities=deathtouch,lifelink,mutate otherrestriction=type(creature[-human]|mybattlefield)~morethan~0 @@ -39163,6 +41640,30 @@ mana={2}{B} type=Sorcery [/card] [card] +name=Neverwinter Dryad +auto={2}{S}:name(Search forest) target(forest[basic]|mylibrary) moveto(myBattlefield) and!( tap(noevent) )! +text={2}, Sacrifice Neverwinter Dryad: Search your library for a basic Forest card, put it onto the battlefield tapped, then shuffle. +mana={G} +type=Creature +subtype=Dryad +power=1 +toughness=1 +[/card] +[card] +name=Neverwinter Hydra +abilities=trample +auto=counter(1/1) +auto=@dierolled(this) from(controller) once:counter(1/1,-1) +auto=@targeted(this) from(*|opponentzones):choice name(This spell costs 4 more) name(This spell costs 4 more) target(*|opponentzones) transforms((,newability[pay[[{4}]] name(pay 4 mana) donothing?fizzle])) oneshot +auto=thisforeach(variable{halfpaid}>=1) transforms((,newability[name(Roll a d6) rolld6 6 winability counter(1/1.lastrollresult) winabilityend loseability counter(1/1.lastrollresult) loseabilityend rolld6end +text=As Neverwinter Hydra enters the battlefield, roll X d6. It enters with a number of +1/+1 counters on it equal to the total of those results. -- Trample -- Ward {4} (Whenever this creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {4}.) +mana={X}{X}{G}{G} +type=Creature +subtype=Hydra +power=0 +toughness=0 +[/card] +[card] name=Nevinyrral, Urborg Tyrant auto=cantbetargetof(*[artifact;creature;enchantment]) auto=foreach(creature[fresh]|graveyard) token(Zombie,Creature Zombie,2/2,black) and!( tap(noevent) )! @@ -39184,8 +41685,8 @@ type=Sorcery [/card] [card] name=New Frontiers -auto=thisforeach(X) ability$!notatarget(land|mylibrary) moveto(ownerhand) && tap!$ opponent -auto=name(search basic lands) reveal:plibrarycount optionone name(choose card) target(land[basic]|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveTo(myBattlefield) and!(tap(noevent))!)! afterrevealedend revealend +auto=thisforeach(X) ability$!name(search basic land) name(search basic land) target(land[basic]|mylibrary) moveTo(myBattlefield) and!( tap(noevent) )! !$ opponent +auto=name(search basic lands) target(land[basic]|mylibrary) moveTo(myBattlefield) and!( tap(noevent) )! text=Each player may search his or her library for up to X basic land cards and put them onto the battlefield tapped. Then each player who searched his or her library this way shuffles it. mana={X}{G} type=Sorcery @@ -39469,9 +41970,21 @@ power=1 toughness=2 [/card] [card] +name=Nihiloor +auto=may name(Tap your creature) target(creature[-tapped]|mybattlefield) transforms((,newability[tap],newability[name(Gain control of creature) target(creature[power<=p]|opponentbattlefield) moveto(mybattlefield) and!( counter(0/0.1.NihiloorEffect) )! ])) oneshot +auto=@movedTo(this|nonbattlezone) from(battlefield):name(Return creature) target(creature[counter{0/0.1.NihiloorEffect}]|mybattlefield) moveto(opponentbattlefield) and!( removeallcounters(0/0.1.NihiloorEffect) )! +auto=@combat(attacking) source(creature[counter{0/0.1.NihiloorEffect}]|mybattlefield):name(Gain life) life:2 controller && life:-2 opponent +text=When Nihiloor enters the battlefield, for each opponent, tap up to one untapped creature you control. When you do, gain control of target creature that player controls with power less than or equal to the tapped creature’s power for as long as you control Nihiloor. -- Whenever you attack with a creature an opponent owns, you gain 2 life and that player loses 2 life. +mana={2}{W}{U}{B} +type=Legendary Creature +subtype=Horror +power=3 +toughness=5 +[/card] +[card] name=Nikara, Lair Scavenger abilities=menace,partner -auto=may moveto(myhand) target(Yannik^ Scavenging Sentinel|mylibrary) +auto=may name(Put partner in hand) moveto(myhand) target(Yannik^ Scavenging Sentinel|mylibrary) auto=@movedTo(other creature[counter{1/1}]|nonbattlezone) from(mybattlefield):draw:1 && life:-1 controller text=Partner with Yannik, Scavenging Sentinel (When this creature enters the battlefield, target player may put Yannik into their hand from their library, then shuffle.) -- Menace -- Whenever another creature you control leaves the battlefield, if it had one or more counters on it, you draw a card and you lose 1 life. mana={2}{B} @@ -39787,27 +42300,8 @@ type=Artifact [/card] [card] name=Nostalgic Dreams -auto=moveto(exile) all(this) -auto=if type(*|myHand)~morethan~0 then choice ability$!name(X=1) target(*|myhand) reject!$ controller && moveto(myhand) target(*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~1 then choice ability$!name(X=2) target(<2>*|myhand) reject!$ controller && moveto(myhand) target(<2>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~2 then choice ability$!name(X=3) target(<3>*|myhand) reject!$ controller && moveto(myhand) target(<3>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~3 then choice ability$!name(X=4) target(<4>*|myhand) reject!$ controller && moveto(myhand) target(<4>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~4 then choice ability$!name(X=5) target(<5>*|myhand) reject!$ controller && moveto(myhand) target(<5>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~5 then choice ability$!name(X=6) target(<6>*|myhand) reject!$ controller && moveto(myhand) target(<6>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~6 then choice ability$!name(X=7) target(<7>*|myhand) reject!$ controller && moveto(myhand) target(<7>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~7 then choice ability$!name(X=8) target(<8>*|myhand) reject!$ controller && moveto(myhand) target(<8>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~8 then choice ability$!name(X=9) target(<9>*|myhand) reject!$ controller && moveto(myhand) target(<9>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~9 then choice ability$!name(X=10) target(<10>*|myhand) reject!$ controller && moveto(myhand) target(<10>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~10 then choice ability$!name(X=11) target(<11>*|myhand) reject!$ controller && moveto(myhand) target(<11>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~11 then choice ability$!name(X=12) target(<12>*|myhand) reject!$ controller && moveto(myhand) target(<12>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~12 then choice ability$!name(X=13) target(<13>*|myhand) reject!$ controller && moveto(myhand) target(<13>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~13 then choice ability$!name(X=14) target(<14>*|myhand) reject!$ controller && moveto(myhand) target(<14>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~14 then choice ability$!name(X=15) target(<15>*|myhand) reject!$ controller && moveto(myhand) target(<15>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~15 then choice ability$!name(X=16) target(<16>*|myhand) reject!$ controller && moveto(myhand) target(<16>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~16 then choice ability$!name(X=17) target(<17>*|myhand) reject!$ controller && moveto(myhand) target(<17>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~17 then choice ability$!name(X=18) target(<18>*|myhand) reject!$ controller && moveto(myhand) target(<18>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~18 then choice ability$!name(X=19) target(<19>*|myhand) reject!$ controller && moveto(myhand) target(<19>*[creature]|mygraveyard) -auto=if type(*|myHand)~morethan~19 then choice ability$!name(X=20) target(<20>*|myhand) reject!$ controller && moveto(myhand) target(<20>*[creature]|mygraveyard) +abilities=exiledeath +auto=choice name(Discard any number of cards) target(*|myhand) reject and!( transforms((,newability[name(Return card from graveyard) target(*|mygraveyard) moveTo(myhand)])) oneshot )! text=As an additional cost to cast Nostalgic Dreams, discard X cards. -- Return X target cards from your graveyard to your hand. Exile Nostalgic Dreams. mana={G}{G} type=Sorcery @@ -39920,7 +42414,7 @@ toughness=2 [/card] [card] name=Numbing Jellyfish -auto=all(this) rolladie 6 winability deplete:lastrollresult opponent winabilityend loseability deplete:lastrollresult opponent loseabilityend rollend +auto=all(this) rolld6 6 winability deplete:lastrollresult opponent winabilityend loseability deplete:lastrollresult opponent loseabilityend rolld6end text=When this creature enters the battlefield, roll a six-sided die. Target player puts the top X cards of their library into their graveyard, where X is the result. mana={3}{U} type=Host Creature @@ -39938,7 +42432,7 @@ type=Land [/card] [card] name=Nykthos Paragon -auto=@lifeof(player) from(*[-lifefaker]) turnlimited:may name(Put 1/1 counters) counter(1/1,thatmuch) all(creature|myBattlefield) +auto=@lifeof(player) from(*[-lifefaker]|*) turnlimited:may name(Put 1/1 counters) counter(1/1,thatmuch) all(creature|myBattlefield) text=Whenever you gain life, you may put that many +1/+1 counters on each creature you control. Do this only once each turn. mana={4}{W}{W} type=Enchantment Creature @@ -40301,10 +42795,42 @@ power=1 toughness=1 [/card] [card] +name=Ochre Jelly +abilities=trample +auto={0}:destroy +auto=if cantargetcard(*[token]|*) then counter(1/1) else counter(1/1,x) +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~2}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly)])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~3}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly)])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~4}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly) and!( counter(1/1.1) )! ])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~5}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly) and!( counter(1/1.1) )! ])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~6}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly) and!( counter(1/1.2) )! ])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~7}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly) and!( counter(1/1.2) )! ])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~8}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly) and!( counter(1/1.3) )! ])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~9}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly) and!( counter(1/1.3) )! ])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~10}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly) and!( counter(1/1.4) )! ])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~11}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly) and!( counter(1/1.4) )! ])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~12}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly) and!( counter(1/1.5) )! ])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~13}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly) and!( counter(1/1.5) )! ])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~14}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly) and!( counter(1/1.6) )! ])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~15}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly) and!( counter(1/1.6) )! ])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~16}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly) and!( counter(1/1.7) )! ])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~17}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly) and!( counter(1/1.7) )! ])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~18}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly) and!( counter(1/1.8) )! ])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~equalto~19}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly) and!( counter(1/1.8) )! ])) ueot!$ controller +auto=@movedTo(this|graveyard) from(battlefield) restriction{compare(hascnt11)~morethan~19}:ability$!name(Create copy) emblem transforms((,newability[@each endofturn:token(Ochre Jelly) and!( counter(1/1.9) )! ])) ueot!$ controller +text=Trample -- Ochre Jelly enters the battlefield with X +1/+1 counters on it. -- Split — When Ochre Jelly dies, if it had two or more +1/+1 counters on it, create a token that’s a copy of it at the beginning of the next end step. That token enters the battlefield with half that many +1/+1 counters on it, rounded down. +mana={X}{G} +type=Creature +subtype=Ooze +power=0 +toughness=0 +[/card] +[card] name=Octavia, Living Thesis other={U}{U} otherrestriction=type(*[instant;sorcery]|mygraveyard)~morethan~7 restriction=type(*[instant;sorcery]|mygraveyard)~lessthan~8 +auto=@targeted(this) from(*|opponentzones):choice name(This spell costs 8 more) name(This spell costs 8 more) target(*|opponentzones) transforms((,newability[pay[[{8}]] name(pay 8 mana) donothing?fizzle])) oneshot 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} @@ -40509,6 +43035,17 @@ mana={3}{G}{U} type=Instant [/card] [card] +name=Old Gnawbone +abilities=flying +auto=@combatdamaged(player) from(creature|mybattlefield):name(Create treasure) token(Treasure Sur)*thatmuch +text=Flying -- Whenever a creature you control deals combat damage to a player, create that many Treasure tokens. +mana={5}{G}{G} +type=Legendary Creature +subtype=Dragon +power=7 +toughness=7 +[/card] +[card] name=Old-Growth Dryads auto=moveto(mybattlefield) target(basic|mylibrary) && tap text=When Old-Growth Dryads enters the battlefield, each opponent may search his or her library for a basic land card, put it onto the battlefield tapped, then shuffle his or her library. @@ -40536,7 +43073,7 @@ toughness=4 [card] name=Oloro, Ageless Ascetic auto=@each my upkeep:life:2 controller -auto=@lifeof(player) from(*[-lifefaker]):pay({1}) draw:1 controller && life:-1 opponent +auto=@lifeof(player) from(*[-lifefaker]|*):pay({1}) draw:1 controller && life:-1 opponent autocommandzone=@each my upkeep:life:2 controller text=At the beginning of your upkeep, you gain 2 life. -- Whenever you gain life, you may pay {1}. If you do, draw a card and each opponent loses 1 life. -- At the beginning of your upkeep, if Oloro, Ageless Ascetic is in the command zone, you gain 2 life. mana={3}{W}{U}{B} @@ -40926,6 +43463,17 @@ mana={2}{U} type=Instant [/card] [card] +name=Optimus Prime, Inspiring Leader +##{1}:turn target permanent you control to its other face.## +auto={1}:all(this) transforms((Legendary Artifact Creature Construct,setpower=6,settoughness=6)) ueot && all(creature|myBattlefield) transforms((,newability[trample])) ueot +text={1}: Turn target permanent you control to its other face. / {1}: Until end of turn, Optimus Prime, Inspiring Leader becomes a Construct with base power and toughness 6/6 and creatures you control gain trample. +mana={3}{R}{W} +type=Legendary Artifact Creature +subtype=Bot Mode +power=4 +toughness=5 +[/card] +[card] name=Oracle of Bones auto=if type(*[instant;sorcery]|mygraveyard)~morethan~0 then all(this) flipacoin winability counter(0/0,1,TributeUnpaid) winabilityend loseability counter(1/1,2) loseabilityend flipend auto=@counteradded(0/0,1,TributeUnpaid) from(this) once:counter(0/0,-1,TributeUnpaid) all(this) @@ -41025,6 +43573,16 @@ mana={3} type=Artifact [/card] [card] +name=Orb of Dragonkind +aicode=activate transforms((,newability[if type(dragon[zpos<=7]|myLibrary)~morethan~0 then target(dragon[zpos<=7]|myLibrary) moveTo(myHand) and!( all(other *[zpos<=7]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )! else all(*[zpos<=7]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! ])) oneshot +auto=this(variable{type:dragon:myrestrictedcastingzone}>0) {1}{T}:name(Add two mana) thisforeach(variable{2}) ability$!name(add mana) choice add{G} _ choice add{R} _ choice add{U} _ choice add{B} _ choice add{W}!$ controller +auto=this(variable{type:dragon:mybattlefield}>0) {1}{T}:name(Add two mana) thisforeach(variable{2}) ability$!name(add mana) choice add{G} _ choice add{R} _ choice add{U} _ choice add{B} _ choice add{W}!$ controller +auto={R}{T}{S}:name(Look top 7 cards) reveal:7 optionone name(Get a dragon) target(dragon|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +text={1}, {T}: Add two mana in any combination of colors. Spend this mana only to cast Dragon spells or to activate abilities of Dragons. -- {R}, {T}, Sacrifice Orb of Dragonkind: Look at the top seven cards of your library. You may reveal a Dragon card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. +mana={1}{R} +type=Artifact +[/card] +[card] name=Orbs of Warding abilities=playershroud auto=@damaged(controller) from(creature|battlefield):life:1 @@ -41077,6 +43635,18 @@ power=1 toughness=1 [/card] [card] +name=Orcus, Prince of Undeath +abilities=flying,trample +auto=choice name(Creatures get -X/-X) all(other creature|battlefield) -x/-x ueot && life:-x controller +auto=choice name(Return X creatures) target(creature|mygraveyard) moveto(myBattlefield) and!( transforms((,newability[haste])) ueot )! +text=Flying, trample -- When Orcus, Prince of Undeath enters the battlefield, choose one — -- • Each other creature gets -X/-X until end of turn. You lose X life. -- • Return up to X target creature cards with total mana value X or less from your graveyard to the battlefield. They gain haste until end of turn. +mana={X}{2}{B}{R} +type=Legendary Creature +subtype=Demon +power=5 +toughness=3 +[/card] +[card] name=Ordeal of Erebos target=creature auto=@combat(attacking) source(mytgt):counter(1/1) @@ -41374,6 +43944,16 @@ power=4 toughness=4 [/card] [card] +name=Oswald Fiddlebender +auto=this(variable{type:artifact:mybattlefield}>0) {W}{T}:name(Sacrifice artifact) name(Sacrifice artifact) target(artifact|myBattlefield) transforms((,newability[sacrifice],newability[name(Search artifact) target(artifact[manacost<=manacost]|mylibrary) moveTo(myBattlefield) and!( shuffle )!])) oneshot asSorcery +text={W}, {T}, Sacrifice an artifact: Search your library for an artifact card with mana value equal to one plus the sacrificed artifact’s mana value. Put that card onto the battlefield, then shuffle. Activate only as a sorcery. +mana={1}{W} +type=Legendary Creature +subtype=Gnome Artificer +power=2 +toughness=2 +[/card] +[card] name=Otepec Huntmaster abilities=haste auto=lord(dinosaur|myhand) altercost(colorless,-1) @@ -41589,6 +44169,17 @@ type=Enchantment subtype=Aura Curse [/card] [card] +name=Owlbear +abilities=trample +auto=draw:1 controller +text=Trample -- Keen Senses — When Owlbear enters the battlefield, draw a card. +mana={3}{G}{G} +type=Creature +subtype=Bird Bear +power=4 +toughness=4 +[/card] +[card] name=Owlin Shieldmage abilities=flying auto=@targeted(this|myBattlefield) from(*[instant;sorcery]|opponentzones):choice name(This spell costs 3 life more) name(This spell costs 3 life more) target(*[instant;sorcery]|opponentzones) transforms((,newability[pay[[{L:3}]] name(pay 3 life) donothing?fizzle])) oneshot @@ -41669,7 +44260,7 @@ type=Sorcery [/card] [card] name=Painiac -auto=@each my upkeep:all(this) rolladie 6 winability lastrollresult/0 ueot winabilityend loseability lastrollresult/0 ueot loseabilityend rollend +auto=@each my upkeep:all(this) rolld6 6 winability lastrollresult/0 ueot winabilityend loseability lastrollresult/0 ueot loseabilityend rolld6end text=At the beginning of your upkeep, roll a six-sided die. Painiac gets +X/+0 until end of turn, where X is the result. mana={2}{R} type=Creature @@ -41712,8 +44303,7 @@ toughness=2 [card] name=Pako, Arcane Retriever abilities=hiddenface,haste,partner -aicode=activate moveTo(myhand) target(Haldan^ Avid Arcanist|mylibrary) -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Haldan^ Avid Arcanist|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Haldan^ Avid Arcanist|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend +auto=may name(Put partner in hand) moveTo(myhand) target(Haldan^ Avid Arcanist|mylibrary) auto=@combat(attacking) source(this):NOTCODED text=Partner with Haldan, Avid Arcanist -- Haste -- Whenever Pako, Arcane Retriever attacks, exile the top card of each player’s library and put a fetch counter on each of them. Put a +1/+1 counter on Pako for each noncreature card exiled this way. mana={3}{R}{G} @@ -41754,6 +44344,20 @@ power=2 toughness=4 [/card] [card] +name=Paladin Class +abilities=lifefaker +auto=counter(0/0,1,Level) +auto=this(variable{controllerturn}>0) lord(*|opponentcastingzone) altercost(colorless, +1) +auto=this(variable{hascntlevel}=1) {2}{W}:name(Level 2) counter(0/0,1,Level) asSorcery +auto=this(variable{hascntlevel}>=2) lord(creature|myBattlefield) 1/1 +auto=this(variable{hascntlevel}=2) {4}{W}:name(Level 3) counter(0/0,1,Level) asSorcery +auto=@each my blockers restriction{compare(hascntlevel)~morethan~2}:name(Choose a creature) target(creature[attacking]|mybattlefield) transforms((,newability[double strike],newability[foreach(other creature[attacking]) 1/1])) ueot +text=(Gain the next level as a sorcery to add its ability.) -- Spells your opponents cast during your turn cost {1} more to cast. -- {2}{W}: Level 2 -- Creatures you control get +1/+1. -- {4}{W}: Level 3 -- Whenever you attack, until end of turn, target attacking creature gets +1/+1 for each other attacking creature and gains double strike. +mana={W} +type=Enchantment +subtype=Class +[/card] +[card] name=Paladin of Atonement auto=@each upkeep restriction{lastturn(life)~morethan~0}:counter(1/1,1) auto=@movedTo(this|graveyard) from(battlefield):dynamicability @@ -41775,6 +44379,17 @@ power=3 toughness=2 [/card] [card] +name=Paladin's Shield +abilities=flash +auto={3}:equip +auto=teach(creature) 0/2 +auto=aslongas(parents) name(Attach to creature) rehook target(creature|myBattlefield) <1 +text=Flash -- When Paladin’s Shield enters the battlefield, attach it to target creature you control. -- Equipped creature gets +0/+2. -- Equip {3} ({3}: Attach to target creature you control. Equip only as a sorcery.) +mana={1}{W} +type=Artifact +subtype=Equipment +[/card] +[card] name=Pale Moon auto=lord(land|mybattlefield) loseabilities && transforms((,newability[producecolor:land])) ueot auto=lord(land|opponentbattlefield) loseabilities && transforms((,newability[producecolor:land])) ueot @@ -42495,6 +45110,19 @@ power=2 toughness=2 [/card] [card] +name=Phantom Steed +abilities=flash +auto=name(Exile other creature) target(other creature|mybattlefield) imprint +auto=this(variable{hasevict}>0) transforms((,newability[@movedto(this|nonbattlezone) from(battlefield):name(Return exiled creature) target(creature[evictname]|myexile) moveTo(ownerbattlefield)] +auto=@combat(attacking) source(this) restriction{compare(hasevict)~morethan~0}:name(Copy exiled creature) transforms((,newability[target(creature[evictname]|myexile) clone with(battleready) and!( transforms((Illusion,newability[@each my combatends:sacrifice])) forever )!])) oneshot +text=Flash -- When Phantom Steed enters the battlefield, exile another target creature you control until Phantom Steed leaves the battlefield. -- Whenever Phantom Steed attacks, create a tapped and attacking token that’s a copy of the exiled card, except it’s an Illusion in addition to its other types. Sacrifice that token at end of combat. +mana={3}{U} +type=Creature +subtype=Horse Illusion +power=4 +toughness=3 +[/card] +[card] name=Pharagax Giant auto=all(this) flipacoin winability damage:5 opponent winabilityend loseability counter(1/1,2) loseabilityend flipend text=Tribute 2 (As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.) -- When Pharagax Giant enters the battlefield, if tribute wasn't paid, Pharagax Giant deals 5 damage to each opponent. @@ -42867,7 +45495,7 @@ color=red [/card] [card] name=Pirate's Cutlass -auto=aslongas(parents) rehook target(pirate|mybattlefield) <1 +auto=aslongas(parents) name(Attach to creature) rehook target(creature|myBattlefield) <1 auto=teach(creature) 2/1 auto={2}:equip text=When Pirate's Cutlass enters the battlefield, attach it to target Pirate you control. -- Equipped creature gets +2/+1. -- Equip {2} ({2}: Attach to target creature you control. Equip only as a sorcery.) @@ -42954,6 +45582,18 @@ power=4 toughness=2 [/card] [card] +name=Pixie Guide +#Ignore the lowest roll is not available ATM. +abilities=flying +auto=@dierolled(*[-Pixie Guide]|battlefield) from(controller):name(Roll again) rolld20 20 winability donothing winabilityend loseability donothing loseabilityend rolld20end +text=Flying -- Grant an Advantage — if you would roll one or more dice, instead roll that many dice plus one and ignore the lowest roll. +mana={1}{U} +type=Creature +subtype=Faerie +power=1 +toughness=3 +[/card] +[card] name=Plague Belcher abilities=menace auto=target(creature|mybattlefield) counter(-1/-1,2) @@ -43022,6 +45662,17 @@ power=3 toughness=2 [/card] [card] +name=Planar Ally +abilities=flying +auto=@combat(attacking) source(this) restriction{compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0}:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=Flying -- Whenever Planar Ally attacks, venture into the dungeon. (Enter the first room or advance to the next room.) +mana={3}{W}{W} +type=Creature +subtype=Angel +power=3 +toughness=3 +[/card] +[card] name=Planar Chaos auto=@each my upkeep:name(Flip a coin) flipacoin loseability sacrifice loseabilityend flipend auto=@movedTo(*|mystack):name(Flip a coin) flipacoin loseability fizzle target(*|mystack) loseabilityend flipend @@ -43042,7 +45693,7 @@ toughness=3 [/card] [card] name=Planewide Celebration -auto=ability$! choice Create(citizen:Citizen creature:2/2:white:blue:black:red:green) _ choice moveTo(ownerHand) target(*[-instant;-sorcery]|mygraveyard) moveto(ownerhand) _ choice _PROLIFERATE_ _choice life:4 !$ controller && ability$! choice Create(citizen:Citizen creature:2/2:white:blue:black:red:green) _ choice moveTo(ownerHand) target(*[-instant;-sorcery]|mygraveyard) moveto(ownerhand) _ choice _PROLIFERATE_ _choice life:4 !$ controller && ability$! choice Create(citizen:Citizen creature:2/2:white:blue:black:red:green) _ choice moveTo(ownerHand) target(*[-instant;-sorcery]|mygraveyard) moveto(ownerhand) _ choice _PROLIFERATE_ _choice life:4 !$ controller && ability$! choice Create(citizen:Citizen creature:2/2:white:blue:black:red:green) _ choice moveTo(ownerHand) target(*[-instant;-sorcery]|mygraveyard) moveto(ownerhand) _ choice _PROLIFERATE_ _choice life:4 !$ controller +auto=thisforeach(variable{4}) ability$!name(Choose one) choice name(Create citizen) token(Citizen,Creature Citizen,2/2,white,blue,black,red,green) _ choice name(Return permanent) target(*[-instant;-sorcery]|mygraveyard) moveto(ownerhand) _ choice name(Proliferate) NotATarget(*) duplicatecounters(single) _choice name(Gain life) life:4 controller!$ controller text=Choose four. You may choose the same mode more than once. -- • Create a 2/2 Citizen creature token that's all colors. -- • Return target permanent card from your graveyard to your hand. -- • Proliferate. -- • You gain 4 life. mana={5}{G}{G} type=Sorcery @@ -43065,6 +45716,20 @@ power=2 toughness=2 [/card] [card] +name=Plate Armor +auto={9999}:equip +auto=this(variable{type:*[equipment]:mybattlefield}=1) {3}:name(Equip) name(Equip) target(creature|myBattlefield) rehook asSorcery +auto=this(variable{type:*[equipment]:mybattlefield}=2) {2}:name(Equip) name(Equip) target(creature|myBattlefield) rehook asSorcery +auto=this(variable{type:*[equipment]:mybattlefield}=3) {1}:name(Equip) name(Equip) target(creature|myBattlefield) rehook asSorcery +auto=this(variable{type:*[equipment]:mybattlefield}>=4) {0}:name(Equip) name(Equip) target(creature|myBattlefield) rehook asSorcery +auto=teach(creature) 3/3 +auto=@targeted(mytgt) from(*|opponentzones):choice name(This spell costs 1 more) name(This spell costs 1 more) target(*|opponentzones) transforms((,newability[pay[[{1}]] name(pay 1 mana) donothing?fizzle])) oneshot +text=Equipped creature gets +3/+3 and has ward {1}. (Whenever equipped creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {1}.) -- Equip {3}. This ability costs {1} less to activate for each other Equipment you control. +mana={2}{W} +type=Artifact +subtype=Equipment +[/card] +[card] name=Plated Pegasus abilities=flash,flying auto=all(creature|battlefield) absorb @@ -43128,6 +45793,17 @@ mana={1}{B} type=Instant [/card] [card] +name=Plundering Barbarian +auto=choice name(Destroy artifact) target(artifact) destroy +auto=choice name(Create treasure) token(Treasure Sur) +text=When Plundering Barbarian enters the battlefield, choose one — -- • Smash the Chest — Destroy target artifact. -- • Pry It Open — Create a Treasure token. (It’s an artifact with “{T}, Sacrifice this artifact: Add one mana of any color.”) +mana={2}{R} +type=Creature +subtype=Dwarf Barbarian +power=2 +toughness=2 +[/card] +[card] name=Poet's Quill auto={1}{B}:equip auto=name(Learn) transforms((,newability[if type(*[lesson]|mysideboard)~morethan~0 then choice name(Put lesson in hand) name(Put lesson in hand) target(*[lesson]|mysideboard) moveto(myhand)],newability[if type(*|myhand)~morethan~0 then choice name(Discard and draw) name(Discard and draw) target(*|myhand) reject and!(draw:1)!],newability[if type(Retriever Phoenix|mygraveyard)~morethan~0 then choice name(Return a Retriever Phoenix) name(Return a Retriever Phoenix) target(Retriever Phoenix|mygraveyard) moveto(myBattlefield)],newability[choice name(Don't learn) donothing])) oneshot @@ -43174,7 +45850,7 @@ type=Sorcery [card] name=Pollenbright Druid auto=choice counter(1/1) target(creature) -auto=choice _PROLIFERATE_ +auto=choice name(Proliferate) NotATarget(*) duplicatecounters(single) text=When Pollenbright Druid enters the battlefield, choose one — -- • Put a +1/+1 counter on target creature. -- • Proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) mana={1}{G} type=Creature @@ -43321,6 +45997,13 @@ text=Port of Karfell enters the battlefield tapped. -- {T}: Add {U}. -- {3}{U}{B type=Land [/card] [card] +name=Portable Hole +auto=(blink)forsrc target(creature[manacost<=2]|opponentbattlefield) +text=When Portable Hole enters the battlefield, exile target nonland permanent an opponent controls with mana value 2 or less until Portable Hole leaves the battlefield. +mana={W} +type=Artifact +[/card] +[card] name=Portal of Sanctuary target=creature|battlefield auto={1}{T}:transforms((,newability[moveto(ownerhand) all(mychild)],newability[moveto(ownerhand)])) myturnonly @@ -43348,10 +46031,18 @@ mana={X}{B} type=Sorcery [/card] [card] +name=Potion of Healing +auto=draw:3 controller +auto={W}{T}{S}:name(Gain life) life:3 controller +text=When Potion of Healing enters the battlefield, draw a card. -- {W}, {T}, Sacrifice Potion of Healing: You gain 3 life. +mana={1}{W} +type=Artifact +[/card] +[card] name=Poultrygeist abilities=flying auto=this(counter{1/1.1}>0) transforms((Creature Summon Chicken,setpower=0,settoughness=0)) forever -auto=@movedto(creature|graveyard) from(battlefield):may name(Roll a die) name(Roll a die) all(this) rolladie 1 winability sacrifice winabilityend loseability counter(1/1) loseabilityend rollend +auto=@movedto(creature|graveyard) from(battlefield):may name(Roll a die) name(Roll a die) all(this) rolld6 1 winability sacrifice winabilityend loseability counter(1/1) loseabilityend rolld6end text=Flying -- Whenever a creature is put into any graveyard from play, you may roll a six-sided die. On a 1, sacrifice Poultrygeist. Otherwise, put a +1/+1 counter on Poultrygeist. mana={2}{B} type=Summon @@ -43442,6 +46133,22 @@ mana={R}{R} type=Enchantment [/card] [card] +name=Power Word Kill +target=creature[-angel;-demon;-devil;-dragon]|battlefield +auto=destroy +text=Destroy target non-Angel, non-Demon, non-Devil, non-Dragon creature. +mana={1}{B} +type=Instant +[/card] +[card] +name=Power of Persuasion +target=creature|opponentbattlefield +auto=name(Roll a d20) rolld20 20 winability transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[my endofturn once next sourceinplay] moveTo(ownerbattlefield)])) forever winabilityend loseability if compare(srclastrollresult)~lessthan~10 then moveto(ownerhand) else bottomoflibrary loseabilityend rolld20end +text=Choose target creature an opponent controls, then roll a d20. -- 1-9 | Return it to its owner’s hand. -- 10-19 | Its owner puts it on the top of bottom of their library. -- 20 | Gain control of it until the end of your next turn. +mana={2}{U} +type=Sorcery +[/card] +[card] name=Powerstone Shard auto={T}:foreach(Powerstone Shard|myBattlefield) add{1} text={T}: Add {C} for each artifact you control named Powerstone Shard. @@ -43499,6 +46206,17 @@ power=1 toughness=4 [/card] [card] +name=Precipitous Drop +target=creature +auto=if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +auto=teach(creature) -2/-2 +auto=this(variable{pdungeoncompleted}>0) teach(creature) -3/-3 +text=Enchant creature -- When Precipitous Drop enters the battlefield, venture into the dungeon. (Enter the first room or advance to the next room.) -- Enchanted creature gets -2/-2. It gets -5/-5 instead as long as you’ve completed a dungeon. +mana={2}{B} +type=Enchantment +subtype=Aura +[/card] +[card] name=Precision Bolt target=player,creature,planeswalker auto=damage:3 @@ -43508,9 +46226,8 @@ type=Sorcery [/card] [card] name=Precognition Field -auto={3}:moveto(exile) all(*[zpos=1]|mylibrary) -aicode=activate name(look) donothing -auto={0}:name(Look) reveal:1 optionone name(look) target(<1>*|reveal) moveto(mylibrary) optiononeend optiontwo name(put it back) all(*|reveal) moveto(mylibrary) optiontwoend revealend +abilities=showfromtoplibrary,canplayinstantsorcerylibrarytop +auto={3}:name(Exile top card) moveto(exile) all(*[zpos=1]|mylibrary) text=You may look at the top card of your library any time. -- You may cast the top card of your library if it's an instant or sorcery card. -- {3}: Exile the top card of your library. mana={3}{U} type=Enchantment @@ -43594,6 +46311,17 @@ mana={3}{B} type=Instant [/card] [card] +name=Price of Loyalty +target=creature +other={2}{S(treasure[-tapped]|mybattlefield)} name(Pay with treasure) +otherrestriction=type(treasure[-tapped]|mybattlefield)~morethan~0 +auto=ifnot paid(alternative) then moveto(mybattlefield) and!( transforms((,newability[phaseaction[endofturn sourceinplay] moveTo(previousbattlefield)],newability[untap],haste)) ueot )! +auto=if paid(alternative) then moveto(mybattlefield) and!( transforms((,newability[phaseaction[endofturn sourceinplay] moveTo(previousbattlefield)],newability[2/0],newability[untap],haste)) ueot )! +text=Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn. If mana from a Treasure was spent to cast this spell, that creature gets +2/+0 until end of turn. +mana={2}{R} +type=Sorcery +[/card] +[card] name=Prickly Marmoset abilities=first strike auto=cycled(*|myHand):2/0 ueot @@ -43644,6 +46372,16 @@ power=2 toughness=1 [/card] [card] +name=Priest of Ancient Lore +auto=life:1 controller && draw:1 controller +text=When Priest of Ancient Lore enters the battlefield, you gain 1 life and draw a card. +mana={2}{W} +type=Creature +subtype=Dwarf Cleric +power=2 +toughness=1 +[/card] +[card] name=Priest of Fell Rites auto={T}{L:3}{S}:name(Return creature) target(creature|mygraveyard) moveto(mybattlefield) asSorcery autograveyard={3}{W}{B}:name(Unearth) moveto(mybattlefield) and!( transforms((,newability[haste],newability[unearth],newability[exiledeath])) forever )! asSorcery @@ -43840,7 +46578,7 @@ type=Sorcery [/card] [card] name=Prismatic Vista -auto={L:1}{T}{S}:notatarget(land[basic]|mylibrary) moveto(mybattlefield) +auto={L:1}{T}{S}:name(Search basic land) target(land[basic]|mylibrary) moveto(mybattlefield) and!( shuffle )! text={T}, Pay 1 life, Sacrifice Prismatic Vista: Search your library for a basic land card, put it onto the battlefield, then shuffle your library. type=Land [/card] @@ -44027,6 +46765,29 @@ power=4 toughness=4 [/card] [card] +name=Prosper, Tome-Bound +abilities=deathtouch +auto=@each my end:name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[counter(0/0.1.ProsperEffect)],newability[this(counter{0/0.1.ProsperEffect}>0) canplayfromexile],newability[phaseaction[my end next once checkex] counter(0/0.-1.ProsperEffect)])) forever )! +auto=@movedto(*|mystack,mybattlefield) from(myexile):name(Create treasure) token(Treasure Sur) +text=Deathtouch -- Mystic Arcanum — At the beginning of your end step, exile the top card of your library. Until the end of your next turn, you may play that card. -- Pact Boon — Whenever you play a card from exile, create a Treasure token. +mana={2}{B}{R} +type=Legendary Creature +subtype=Tiefling Warlock +power=1 +toughness=4 +[/card] +[card] +name=Prosperous Innkeeper +auto=name(Create treasure) token(Treasure Sur) +auto=@movedto(other creature|mybattlefield):name(Gain 1 life) life:1 +text=When Prosperous Innkeeper enters the battlefield, create a Treasure token. (It’s an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") -- Whenever another creature enters the battlefield under your control, you gain 1 life. +mana={1}{G} +type=Creature +subtype=Halfling Citizen +power=1 +toughness=1 +[/card] +[card] name=Prosperous Pirates auto=token(435451)*2 text=When Prosperous Pirates enters the battlefield, create two colorless Treasure artifact tokens with "{T}, Sacrifice this artifact: Add one mana of any color to your mana pool." @@ -44119,7 +46880,7 @@ type=Artifact [card] name=Proud Mentor abilities=partner -auto=may moveto(myhand) notatarget(impetuous protege|mylibrary) +auto=may name(Put partner in hand) moveto(myhand) target(impetuous protege|mylibrary) auto={W}{T}:tap target(creature) text=Partner with Impetuous Protege (When this creature enters the battlefield, target player may put Impetuous Protege into their hand from their library, then shuffle.) -- {W}, {T}: Tap target creature. mana={2}{W} @@ -44359,6 +47120,19 @@ power=7 toughness=6 [/card] [card] +name=Purple Worm +other={3}{G}{G} name(Cast for 2 less) +otherrestriction=morbid +restriction=type(creature[fresh]|mygraveyard)~equalto~0 +auto=@targeted(this) from(*|opponentzones):choice name(This spell costs 2 more) name(This spell costs 2 more) target(*|opponentzones) transforms((,newability[pay[[{2}]] name(pay 2 mana) donothing?fizzle])) oneshot +text=This spell costs {2} less to cast if a creature died this turn. -- Ward {2} (Whenever this creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {2}.) +mana={5}{G}{G} +type=Creature +subtype=Worm +power=8 +toughness=7 +[/card] +[card] name=Purple-Crystal Crab auto=@movedTo(this|graveyard) from(battlefield): draw:1 text=When Purple-Crystal Crab dies, draw a card. @@ -44669,7 +47443,7 @@ toughness=6 [/card] [card] name=Quarry Hauler -auto=target(proliferation) proliferate +auto=name(Proliferate) NotATarget(*) duplicatecounters(single) text=When Quarry Hauler enters the battlefield, for each kind of counter on target permanent, put another counter of that kind on it or remove one from it. mana={3}{G} type=Creature @@ -44847,9 +47621,8 @@ toughness=1 [/card] [card] name=Radha, Heart of Keld -abilities=showfromtoplibrary +abilities=showfromtoplibrary,canplaylandlibrarytop auto=this(variable{controllerturn}>0) first strike -auto=canplaylandlibrarytop auto={4}{R}{G}:type:land:myBattlefield/type:land:myBattlefield ueot text=As long as it's your turn, Radha, Heart of Keld has first strike. -- You may look at the top card of your library any time, and you may play lands from the top of your library. -- {4}{R}{G}: Radha gets +X/+X until end of turn, where X is the number of lands you control. mana={1}{R}{G} @@ -44893,6 +47666,19 @@ power=2 toughness=4 [/card] [card] +name=Radiant Solar +abilities=flying,lifelink +auto=if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +auto=@movedto(creature[-token]|mybattlefield) restriction{compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0}:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +autohand={W}{D}:name(Venture dungeon and gain life) life:3 controller && if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=Flying, lifelink -- Whenever Radiant Solar or another nontoken creature enters the battlefield under your control, venture into the dungeon. (Enter the first room or advance to the next room.) -- {W}, Discard Radiant Solar: Venture into the dungeon and you gain 3 life. +mana={5}{W} +type=Creature +subtype=Angel +power=3 +toughness=6 +[/card] +[card] name=Radiant, Serra Archangel abilities=flying,partner auto={T(other creature[flying]|mybattlefield)}:protection from white ueot @@ -45238,6 +48024,14 @@ power=3 toughness=3 [/card] [card] +name=Rally Maneuver +target=creature +auto=transforms((,newability[2/0],newability[first strike],newability[may name(Other creature gets 0/2) target(other creature) transforms((,newability[0/2],newability[lifelink])) ueot])) ueot +text=Target creature get +2/+0 and gains first strike until end of turn. Up to one other target creature gets +0/+2 and gains lifelink until end of turn. +mana={2}{W} +type=Instant +[/card] +[card] name=Rally for the Throne auto=token(Human,Creature Human,1/1,white)*2 auto=if casted(this) then if spent({W}{W}{W}) then life:type:creature:mybattlefield controller @@ -45449,9 +48243,43 @@ power=2 toughness=3 [/card] [card] +name=Ranger Class +auto=counter(0/0,1,Level) +auto=name(Create Wolf) token(Wolf,Creature Wolf,2/2,green) +auto=this(variable{hascntlevel}=1) {1}{G}:name(Level 2) counter(0/0,1,Level) asSorcery +auto=auto=@each my blockers restriction{compare(hascntlevel)~morethan~1}:name(Put 1/1 counter) target(creature[attacking]|battlefield) counter(1/1) +auto=this(variable{hascntlevel}=2) {3}{G}:name(Level 3) counter(0/0,1,Level) asSorcery +auto=this(variable{hascntlevel}>=3) transforms((,newability[showfromtoplibrary],newability[canplaycreaturelibrarytop])) +text=(Gain the next level as a sorcery to add its ability.) -- When Ranger Class enters the battlefield, create a 2/2 green Wolf creature token. -- {1}{G}: Level 2 -- Whenever you attack, put a +1/+1 counter on target attacking creature. -- {3}{G}: Level 3 -- You may look at the top card of your library any time. -- You may cast creature spells from the top of your library. +mana={1}{G} +type=Enchantment +subtype=Class +[/card] +[card] +name=Ranger's Hawk +abilities=flying +auto={3}{T}{T(creature[tapped]|mybattlefield)}:if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot asSorcery +text=Flying -- {3}, {T}, Tap another untapped creature you control: Venture into the dungeon. Activate only as a sorcery. (Enter the first room or advance to the next room.) +mana={W} +type=Creature +subtype=Bird +power=1 +toughness=1 +[/card] +[card] +name=Ranger's Longbow +auto={3}:equip +auto=teach(creature) reach +auto=teach(creature) 2/1 +text=Equipped creature gets +2/+1 and has reach. -- Equip {3} ({3}: Attach to target creature you control. Equip only as a sorcery.) +mana={1}{G} +type=Artifact +subtype=Equipment +[/card] +[card] name=Ranger-Captain of Eos auto={S}:maxCast(*[-creature])0 target(opponent) -auto=target(creature[manacost<=1]|mylibrary) moveto(myhand) +auto=target(creature[manacost<=1]|mylibrary) moveto(myhand) and!( shuffle )! text=When Ranger-Captain of Eos enters the battlefield, you may search your library for a creature card with converted mana cost 1 or less, reveal it, put it into your hand, then shuffle your library. -- Sacrifice Ranger-Captain of Eos: Your opponents can't cast noncreature spells this turn. mana={1}{W}{W} type=Creature @@ -45495,8 +48323,8 @@ toughness=3 [/card] [card] name=Ransack the Lab -aicode=activate target(*[zpos<=3]|mylibrary) moveto(myhand) -auto=name(look) reveal:3 optionone name(Get a card) target(<1>*|reveal) moveto(myhand) optiononeend optiontwo name(put on graveyard) target(<3>*|reveal) mygraveyard optiontwoend revealend +aicode=activate transforms((,newability[target(*[zpos<=3]|mylibrary) moveto(myhand) and!( all(*[zpos<=3]|mylibrary) moveto(mygraveyard) )!])) oneshot +auto=name(look) reveal:3 optionone name(Put in hand) target(*|reveal) moveto(myhand) optiononeend optiontwo name(put on graveyard) all(*|reveal) moveto(mygraveyard) optiontwoend revealend text=Look at the top three cards of your library. Put one of them into your hand and the rest into your graveyard. mana={1}{B} type=Sorcery @@ -45576,7 +48404,7 @@ toughness=5 [/card] [card] name=Ravager's Mace -auto=rehook target(creature|myBattlefield) +auto=aslongas(parents) name(Attach to creature) rehook target(creature|myBattlefield) <1 auto=teach(creature) calculateparty/0 auto=teach(creature) menace auto={2}{B}{R}:equip @@ -45734,6 +48562,27 @@ power=2 toughness=2 [/card] [card] +name=Ray of Enfeeblement +target=creature +auto=-4/-1 ueot +auto=teach(creature[white]) 0/-3 ueot +text=Target creature gets -4/-1 until end of turn. If that creature is white, it gets -4/-4 until end of turn instead. +mana={B} +type=Instant +[/card] +[card] +name=Ray of Frost +abilities=flash +target=creature +auto=teach(creature) doesnotuntap +auto=teach(creature[red]) tap +auto=teach(creature[red]) loseabilities && transforms((,newability[doesnotuntap])) +text=Flash -- Enchant creature -- When Ray of Frost enters the battlefield, if enchanted creature is red, tap it. -- As long as enchanted creature is red, it loses all abilities. -- Enchanted creature doesn’t untap during its controller’s untap step. +mana={1}{U} +type=Enchantment +subtype=Aura +[/card] +[card] name=Rayne, Academy Chancellor #missing parser for player/controller/opponent auto=this(auras >= 1) transforms((,newability[@targeted(*|mybattlefield) from(*|opponentzones):draw:2])) @@ -45823,7 +48672,8 @@ type=Instant [card] name=Reality Smasher abilities=trample,haste -auto=@targeted(this) from(*|opponentcastingzone):all(trigger[from]) transforms((,newability[pay[[{D:1}]] name(Discard a card) donothing?fizzle])) forever +auto=@targeted(this) from(*|opponentzones) restriction{type(*|opponenthand)~equalto~0}:name(Counter spell) target(*|opponentzones) fizzle +auto=@targeted(this) from(*|opponentzones) restriction{type(*|opponenthand)~morethan~0}:choice name(Discard or counter) name(Discard or counter) target(*|opponentzones) transforms((,newability[pay[[{0}]] name(Discard a card) target(*|myhand) reject?fizzle])) oneshot text=({C} represents colorless mana.) -- Trample, haste -- Whenever Reality Smasher becomes the target of a spell an opponent controls, counter that spell unless its controller discards a card. mana={4}{C} type=Creature @@ -45846,10 +48696,8 @@ toughness=7 [/card] [card] name=Realmwalker -abilities=changeling -aicode=activate name(look) donothing -auto={0}:name(Look top card) reveal:1 optionone name(Look top card) target(<1>*|reveal) moveto(mylibrary) optiononeend optiontwo name(put it back) all(*|reveal) moveto(mylibrary) optiontwoend revealend -auto=chooseatype lord(creature[chosentype;zpos=1]|mylibrary) canplayfromlibrarytop chooseend +abilities=changeling,showfromtoplibrary +auto=chooseatype transforms((,newability[this(variable{type:creature[chosentype;zpos=1]:mylibrary}>0) canplayfromlibrarytop])) forever chooseend text=Changeling (This card is every creature type.) -- As Realmwalker enters the battlefield, choose a creature type. -- You may look at the top card of your library any time. -- You may cast creature spells of the chosen type from the top of your library. mana={2}{G} type=Creature @@ -45900,6 +48748,16 @@ power=4 toughness=5 [/card] [card] +name=Reaper's Talisman +auto={2}:equip +auto=teach(creature) transforms((,newability[@combat(attackedalone) source(this):name(Gain life) life:2 controller],newability[@combat(attackedalone) source(this):life:-2 opponent])) +auto=teach(creature) transforms((,newability[@combat(attacking) source(this):name(Gains deathtouch) transforms((,newability[deathtouch])) ueot])) +text=Whenever equipped creature attacks, it gains deathtouch until end of turn. -- Whenever equipped creature attacks alone, defending player loses 2 life and you gain 2 life. -- Equip {2} ({2}: Attach to target creature you control. Equip only as a sorcery.) +mana={B} +type=Artifact +subtype=Equipment +[/card] +[card] name=Reason // Believe aicode=activate transforms((,newability[all(*[zpos<=3]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveto(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot auto=scry:3 scrycore delayed dontshow donothing scrycoreend scryend @@ -46002,6 +48860,14 @@ mana={3}{R} type=Sorcery [/card] [card] +name=Reckless Endeavor +auto=all(*[zpos=1]|mylibrary) transforms((,newability[@dierolled(this|mylibrary) from(controller) once:name(Damage all creatures) all(creature|battlefield) damage:lastrollresult],newability[name(Roll a d12) rolld12 12 winability donothing winabilityend rolld12end])) oneshot +auto=name(Roll a d12) rolld12 12 winability token(Treasure Sur)*lastrollresult winabilityend loseability token(Treasure Sur)*lastrollresult loseabilityend rolld12end +text=Roll two d12 and choose one result. Reckless Endeavor deals damage equal to that result to each creature. Then create a number of Treasure tokens equal to the other result. +mana={5}{R}{R} +type=Sorcery +[/card] +[card] name=Reckless Pangolin auto=@combat(attacking) source(this):all(this) 1/1 ueot text=Whenever Reckless Pangolin attacks, it gets +1/+1 until end of turn. @@ -46080,6 +48946,17 @@ mana={4}{G}{G} type=Enchantment [/card] [card] +name=Red Dragon +abilities=flying +auto=name(Fire Breath) damage:4 opponent +text=Flying -- Fire Breath — When Red Dragon enters the battlefield, it deals 4 damage to each opponent. +mana={4}{R}{R} +type=Creature +subtype=Dragon +power=4 +toughness=4 +[/card] +[card] name=Redcap Melee auto=choice name(damage non-red target) damage:4 target(creature[-red],planeswalker[-red]) && ability$!destroy target(land)!$ controller auto=choice name(damage red target) damage:4 target(creature[red],planeswalker[red]) @@ -46237,7 +49114,7 @@ type=Sorcery [card] name=Regna, the Redeemer abilities=flying,partner -auto=may moveto(myhand) notatarget(krav^ the unredeemed|mylibrary) +auto=may name(Put partner in hand) moveto(myhand) target(krav^ the unredeemed|mylibrary) auto=@each endofturn restriction{compare(lifegain)~morethan~0}:create(warrior:creature warrior:1/1:white:)*2 text=Partner with Krav, the Unredeemed (When this creature enters the battlefield, target player may put Krav into their hand from their library, then shuffle.) -- Flying -- At the beginning of each end step, if your team gained life this turn, create two 1/1 white Warrior creature tokens. mana={5}{W} @@ -46379,7 +49256,7 @@ type=Artifact [/card] [card] name=Relic Axe -auto=rehook target(creature|myBattlefield) +auto=aslongas(parents) name(Attach to creature) rehook target(creature|myBattlefield) <1 auto=teach(creature[-warrior]) 1/1 auto=teach(creature[warrior]) 2/1 auto={2}:equip @@ -46960,6 +49837,14 @@ mana={4}{B}{G} type=Sorcery [/card] [card] +name=Revivify +auto=if type(*|mygraveyard)~morethan~0 then name(Roll a d20) name(Roll a d20) all(*[zpos=1]|mygraveyard) transforms((,newability[@dierolled(*|mygraveyard) from(controller) once:if compare(lastrollresultplustype:creature[fresh]:mygraveyardplusend)~lessthan~15 then all(creature[fresh]|mygraveyard) moveto(myhand) else all(creature[fresh]|mygraveyard) moveto(mybattlefield)],newability[name(Roll a d20) rolld20 20 winability donothing winabilityend rolld20end])) oneshot +auto=if type(*|mygraveyard)~equalto~0 then name(Roll a d20) name(Roll a d20) rolld20 20 winability donothing winabilityend rolld20end +text=Roll a d20 and add the number of creature cards in your graveyard that were put there from the battlefield this turn. -- 1-14 | Return all creature cards in your graveyard that were put there from the battlefield this turn to your hand. -- 15+ | Return those cards from your graveyard to the battlefield. +mana={2}{W} +type=Instant +[/card] +[card] name=Revolutionist abilities=madness autoexile=restriction{discarded} pay({3}{R}) name(pay 3R to cast) activate name(pay 3R to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard) @@ -47220,6 +50105,15 @@ mana={R}{W} type=Instant [/card] [card] +name=Ride the Avalanche +target=*[-land]|myhand,mycommandzone,mygraveyard,myexile +auto=transforms((,newability[flash])) ueot +auto=emblem transforms((,newability[@movedto(*|mystack) once:all(trigger[to]) transforms((,newability[may name(Put 1/1 counters) target(creature|battlefield) counter(1/1.manacost)])) oneshot])) ueot +text=The next spell you cast this turn can be cast as though it had flash. When you cast your next spell this turn, put X +1/+1 counters on up to one target creature, where X is the mana value of that spell. +mana={G}{U} +type=Instant +[/card] +[card] name=Rielle, the Everwise auto=foreach(*[instant,sorcery]|myGraveyard) 1/0 auto=@discarded(*|myHand) turnlimited:draw:1 controller @@ -47338,6 +50232,17 @@ power=3 toughness=3 [/card] [card] +name=Rimeshield Frost Giant +abilities=flying +auto=@targeted(this) from(*|opponentzones):choice name(This spell costs 3 more) name(This spell costs 3 more) target(*|opponentzones) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) oneshot +text=Ward {3} (Whenever this creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {3}.) +mana={3}{U}{U} +type=Creature +subtype=Giant Warrior +power=4 +toughness=5 +[/card] +[card] name=Rimewood Falls auto=tap(noevent) text=({T}: Add {G} or {U}.) -- Rimewood Falls enters the battlefield tapped. @@ -47708,27 +50613,7 @@ type=Instant [/card] [card] name=Rites of Spring -aicode=activate moveTo(myhand) target(land[basic]|myLibrary) -auto=if type(*|myHand)~morethan~0 then choice ability$!name(X=1) target(*|myhand) reject!$ controller && name(search 1 land) reveal:plibrarycount optionone name(choose 1 land) target(<1>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~1 then choice ability$!name(X=2) target(<2>*|myhand) reject!$ controller && name(search 2 lands) reveal:plibrarycount optionone name(choose 2 lands) target(<2>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~2 then choice ability$!name(X=3) target(<3>*|myhand) reject!$ controller && name(search 3 lands) reveal:plibrarycount optionone name(choose 3 lands) target(<3>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~3 then choice ability$!name(X=4) target(<4>*|myhand) reject!$ controller && name(search 4 lands) reveal:plibrarycount optionone name(choose 4 lands) target(<4>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~4 then choice ability$!name(X=5) target(<5>*|myhand) reject!$ controller && name(search 5 lands) reveal:plibrarycount optionone name(choose 5 lands) target(<5>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~5 then choice ability$!name(X=6) target(<6>*|myhand) reject!$ controller && name(search 6 lands) reveal:plibrarycount optionone name(choose 6 lands) target(<6>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~6 then choice ability$!name(X=7) target(<7>*|myhand) reject!$ controller && name(search 7 lands) reveal:plibrarycount optionone name(choose 7 lands) target(<7>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~7 then choice ability$!name(X=8) target(<8>*|myhand) reject!$ controller && name(search 8 lands) reveal:plibrarycount optionone name(choose 8 lands) target(<8>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~8 then choice ability$!name(X=9) target(<9>*|myhand) reject!$ controller && name(search 9 lands) reveal:plibrarycount optionone name(choose 9 lands) target(<9>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~9 then choice ability$!name(X=10) target(<10>*|myhand) reject!$ controller && name(search 10 lands) reveal:plibrarycount optionone name(choose 10 lands) target(<10>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~10 then choice ability$!name(X=11) target(<11>*|myhand) reject!$ controller && name(search 11 lands) reveal:plibrarycount optionone name(choose 11 lands) target(<11>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~11 then choice ability$!name(X=12) target(<12>*|myhand) reject!$ controller && name(search 12 lands) reveal:plibrarycount optionone name(choose 12 lands) target(<12>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~12 then choice ability$!name(X=13) target(<13>*|myhand) reject!$ controller && name(search 13 lands) reveal:plibrarycount optionone name(choose 13 lands) target(<13>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~13 then choice ability$!name(X=14) target(<14>*|myhand) reject!$ controller && name(search 14 lands) reveal:plibrarycount optionone name(choose 14 lands) target(<14>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~14 then choice ability$!name(X=15) target(<15>*|myhand) reject!$ controller && name(search 15 lands) reveal:plibrarycount optionone name(choose 15 lands) target(<15>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~15 then choice ability$!name(X=16) target(<16>*|myhand) reject!$ controller && name(search 16 lands) reveal:plibrarycount optionone name(choose 16 lands) target(<16>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~16 then choice ability$!name(X=17) target(<17>*|myhand) reject!$ controller && name(search 17 lands) reveal:plibrarycount optionone name(choose 17 lands) target(<17>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~17 then choice ability$!name(X=18) target(<18>*|myhand) reject!$ controller && name(search 18 lands) reveal:plibrarycount optionone name(choose 18 lands) target(<18>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~18 then choice ability$!name(X=19) target(<19>*|myhand) reject!$ controller && name(search 19 lands) reveal:plibrarycount optionone name(choose 19 lands) target(<19>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend -auto=if type(*|myHand)~morethan~19 then choice ability$!name(X=20) target(<20>*|myhand) reject!$ controller && name(search 20 lands) reveal:plibrarycount optionone name(choose 20 lands) target(<20>land[basic]|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) all(*|reveal) moveto(ownerlibrary) and!(shuffle)! optiontwoend revealend +auto=choice name(Discard any number of cards) target(*|myhand) reject and!( transforms((,newability[name(Search basic land) target(land[basic]|myLibrary) moveTo(myhand)])) oneshot )! text=Discard any number of cards. Search your library for that many basic land cards, reveal those cards, and put them into your hand. Then shuffle your library. mana={1}{G} type=Sorcery @@ -47906,8 +50791,7 @@ type=Sorcery name=Roalesk, Apex Hybrid abilities=flying,trample auto=counter(1/1,2) target(other creature|myBattlefield) -auto=_DIES__PROLIFERATE_ -auto=_DIES__PROLIFERATE_ +auto=@movedto(this|graveyard) from(battlefield):name(Proliferate) NotATarget(*) transforms((,newability[duplicatecounters(single)],newability[duplicatecounters(single)])) oneshot text=Flying, trample -- When Roalesk, Apex Hybrid enters the battlefield, put two +1/+1 counters on another target creature you control. -- When Roalesk dies, proliferate, then proliferate again. (Choose any number of permanents and/or players, then give each another counter of each kind already there. Then do it again.) mana={2}{G}{G}{U} type=Legendary Creature @@ -47927,6 +50811,16 @@ power=3 toughness=2 [/card] [card] +name=Robe of Stars +auto={1}:equip +auto=teach(creature) 0/3 +auto=teach(creature) transforms((,newability[{1}{W}:name(Phase out) phaseout])) +text=Equipped creature gets +0/+3. -- Astral Projection — {1}{W}: Equipped creature phases out. (Treat it and anything attached to it as though they don’t exist until until its controller’s next turn.) -- Equip {1} +mana={1}{W} +type=Artifact +subtype=Equipment +[/card] +[card] name=Robot Chicken auto=@movedto(*|mystack):token(Egg,Creature Egg,0/1) auto=@movedto(mygraveyard) from(creature[egg]|mybattlefield):destroy target(creature,artifact) @@ -47996,6 +50890,35 @@ power=3 toughness=3 [/card] [card] +name=Rod of Absorption +auto=@movedTo(*[instant;sorcery]|opponentgraveyard) from(opponentstack):name(Exile instant or sorcery) transforms((,newability[all(*[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(opponentexile) and!( counter(0/0.1.RodExiled) )!])) forever +auto=@movedTo(*[instant;sorcery]|mygraveyard) from(mystack):name(Exile instant or sorcery) transforms((,newability[all(*[zpos=type:*:mygraveyard]|mygraveyard) moveto(myexile) and!( counter(0/0.1.RodExiled) )!])) forever +auto={0}{T}{S}:name(X=0) target(*[instant;sorcery;manacost<=0;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={1}{T}{S}:name(X=1) target(*[instant;sorcery;manacost<=1;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={2}{T}{S}:name(X=2) target(*[instant;sorcery;manacost<=2;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={3}{T}{S}:name(X=3) target(*[instant;sorcery;manacost<=3;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={4}{T}{S}:name(X=4) target(*[instant;sorcery;manacost<=4;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={5}{T}{S}:name(X=5) target(*[instant;sorcery;manacost<=5;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={6}{T}{S}:name(X=6) target(*[instant;sorcery;manacost<=6;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={7}{T}{S}:name(X=7) target(*[instant;sorcery;manacost<=7;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={8}{T}{S}:name(X=8) target(*[instant;sorcery;manacost<=8;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={9}{T}{S}:name(X=9) target(*[instant;sorcery;manacost<=9;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={10}{T}{S}:name(X=10) target(*[instant;sorcery;manacost<=10;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={11}{T}{S}:name(X=11) target(*[instant;sorcery;manacost<=11;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={12}{T}{S}:name(X=12) target(*[instant;sorcery;manacost<=12;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={13}{T}{S}:name(X=13) target(*[instant;sorcery;manacost<=13;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={14}{T}{S}:name(X=14) target(*[instant;sorcery;manacost<=14;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={15}{T}{S}:name(X=15) target(*[instant;sorcery;manacost<=15;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={16}{T}{S}:name(X=16) target(*[instant;sorcery;manacost<=16;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={17}{T}{S}:name(X=17) target(*[instant;sorcery;manacost<=17;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={18}{T}{S}:name(X=18) target(*[instant;sorcery;manacost<=18;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={19}{T}{S}:name(X=19) target(*[instant;sorcery;manacost<=19;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +auto={20}{T}{S}:name(X=20) target(*[instant;sorcery;manacost<=20;counter{0/0.1.RodExiled}]|exile) activate castcard(normal) +text=Whenever a player casts an instant or sorcery spell, exile it instead of putting it into a graveyard as it resolves. -- {X}, {T}, Sacrifice Rod of Absorption: You may cast any number of spells from among cards exiled with Rod of Absorption with total mana value X or less without paying their mana costs. +mana={2}{U} +type=Artifact +[/card] +[card] name=Rofellos's Gift auto=target(enchantment|mygraveyard) moveto(myhand) text=Reveal any number of green cards in your hand. Return an enchantment card from your graveyard to your hand for each card revealed this way. @@ -48023,6 +50946,21 @@ power=1 toughness=2 [/card] [card] +name=Rogue Class +auto=counter(0/0,1,Level) +auto=@combatdamagefoeof(player) from(creature|mybattlefield):name(Exile top card) all(*[zpos=1]|opponentlibrary) moveto(opponentexile) and!( counter(0/0.1.RogueExiled) )! +auto=@combatdamageof(player) from(creature|mybattlefield):name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( counter(0/0.1.RogueExiled) )! +auto=this(variable{hascntlevel}=1) {1}{U}{B}:name(Level 2) counter(0/0,1,Level) asSorcery +auto=this(variable{hascntlevel}=2) lord(creature|myBattlefield) menace +auto=this(variable{hascntlevel}=2) {2}{U}{B}:name(Level 3) counter(0/0,1,Level) asSorcery +auto=this(variable{hascntlevel}>=3) lord(*[counter{0/0.1.RogueExiled}]|myexile) transforms((,newability[canplayfromexile],newability[anytypeofmana])) forever +auto=this(variable{hascntlevel}>=3) {0}:name(May play card from opponent exile) target(*[counter{0/0.1.RogueExiled}]|opponentexile) moveTo(myexile) and!( transforms((,newability[0/0.1.RogueExiled],newability[canplayfromexile],newability[anytypeofmana],newability[phaseaction[endofturn once checkex] moveTo(ownerexile)],newability[phaseaction[untap once checkex] counter(0/0.1.RogueExiled)])) forever )! +text=(Gain the next level as a sorcery to add its ability.) -- Whenever a creature you controls deals combat damage to a player, exile the top card of that player’s library face down. You may look at it for as long as it remains exiled. -- {1}{U}{B}: Level 2 -- Creatures you control have menace. -- {2}{U}{B}: Level 3 -- You may play cards exiled with Rogue Class, and you may spend mana as through it were mana of any color to cast them. +mana={U}{B} +type=Enchantment +subtype=Class +[/card] +[card] name=Roil Eruption kicker={5} auto=if paid(kicker) then name(Deals 5 damages) name(Deals 5 damages) damage:5 target(player,creature,planeswalker) @@ -48221,7 +51159,7 @@ toughness=3 [/card] [card] name=Rosethorn Halberd -auto=rehook target(creature[-human]|myBattlefield) +auto=aslongas(parents) name(Attach to non-human) rehook target(creature[-human]|myBattlefield) <1 auto={5}:equip auto=teach(creature) 2/1 text=When Rosethorn Halberd enters the battlefield, attach it to target non-Human creature you control. -- Equipped creature gets +2/+1. -- Equip {5} ({5}: Attach to target creature you control. Equip only as a sorcery.) @@ -48768,6 +51706,17 @@ mana={B}{G} type=Instant [/card] [card] +name=Rust Monster +abilities=first strike +auto={S(artifact|mybattlefield)}:name(Gets 2/0) 2/0 ueot +text=First strike -- Sacrifice an artifact: Rust Monster gets +2/+0 until end of turn. +mana={2}{R} +type=Creature +subtype=Beast +power=2 +toughness=1 +[/card] +[card] name=Rustvale Bridge abilities=indestructible auto=tap(noevent) @@ -49966,6 +52915,16 @@ power=6 toughness=7 [/card] [card] +name=Scaled Herbalist +auto={T}:name(Put land on battlefield) target(land|myhand) moveTo(myBattlefield) +text={T}: You may put a land card from your hand onto the battlefield. +mana={1}{G} +type=Creature +subtype=Lizard Druid +power=1 +toughness=3 +[/card] +[card] name=Scalelord Reckoner abilities=flying auto=@targeted(dragon|mybattlefield):destroy target(*[-land]|opponentbattlefield) @@ -50000,7 +52959,8 @@ toughness=3 [/card] [card] name=Scapeshift -auto={S(land|myBattlefield)}:ability$!moveto(myBattlefield) and!(tap(noevent))! notatarget(land|mylibrary)!$ controller && shuffle +target=land|myBattlefield +auto=sacrifice and!( transforms((,newability[name(Search land) target(land|mylibrary) moveto(myBattlefield) and!( tap(noevent) )!])) oneshot )! text=Sacrifice any number of lands. Search your library for up to that many land cards, put them onto the battlefield tapped, then shuffle your library. mana={2}{G}{G} type=Sorcery @@ -50037,7 +52997,7 @@ subtype=Forest Plains [/card] [card] name=Scavenged Blade -auto=rehook target(creature|myBattlefield) +auto=aslongas(parents) name(Attach to creature) rehook target(creature|myBattlefield) <1 auto=teach(creature) 2/0 auto={2}{R}:equip text=When Scavenged Blade enters the battlefield, attach it to target creature you control. -- Equipped creature gets +2/+0. -- Equip {2}{R} ({2}{R}: Attach to target creature you control. Equip only as a sorcery.) @@ -50189,9 +53149,20 @@ power=4 toughness=4 [/card] [card] +name=Scion of Stygia +abilities=flash +auto=target(creature|opponentbattlefield) name(Choose creature and roll a d20) rolld20 20 winability freeze winabilityend loseability if compare(srclastrollresult)~lessthan~10 then tap else freeze loseabilityend rolld20end +text=Flash -- Cone of Cold — When Scion of Stygia enters the battlefield, choose target creature an opponent controls, then roll a d20. -- 1-9 | Tap that creature. -- 10-20 | Tap that creature. It doesn’t untap during its controller’s next untap step. +mana={2}{U} +type=Creature +subtype=Tiefling Shaman +power=2 +toughness=1 +[/card] +[card] name=Scion of the Swarm abilities=flying -auto=@lifeof(player) from(*[-lifefaker]):counter(1/1,1) +auto=@lifeof(player) from(*[-lifefaker]|*):counter(1/1,1) text=Flying -- Whenever you gain life, put a +1/+1 counter on Scion of the Swarm. mana={3}{B}{B} type=Creature @@ -50736,6 +53707,17 @@ text={T}: Add {1}. -- {T}: Add one mana of any color. Spend this mana only to ca type=Land [/card] [card] +name=Secret Door +abilities=defender +auto={4}{U}:if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot asSorcery +text=Defender -- {4}{U}: Venture into the dungeon. Activate only as a sorcery. (Enter the first room or advance to the next room.) +mana={U} +type=Artifact Creature +subtype=Wall +power=0 +toughness=4 +[/card] +[card] name=Secret Rendezvous auto=draw:3 controller auto=draw:3 opponent @@ -50764,7 +53746,7 @@ type=Sorcery [card] name=Sedgemoor Witch abilities=menace -auto=@targeted(this|myBattlefield) from(*[instant;sorcery]|opponentzones):choice name(This spell costs 3 life more) name(This spell costs 3 life more) target(*[instant;sorcery]|opponentzones) transforms((,newability[pay[[{L:3}]] name(pay 3 life) donothing?fizzle])) oneshot +auto=@targeted(this) from(*|opponentzones):choice name(This spell costs 3 life more) name(This spell costs 3 life more) target(*|opponentzones) transforms((,newability[pay[[{L:3}]] name(pay 3 life) donothing?fizzle])) oneshot auto=@movedto(*[instant;sorcery]|mystack):name(Create Pest) token(Pest,Creature Pest,1/1,green,blue) and!( transforms((,newability[@movedto(this|mygraveyard) from(battlefield):life:1 controller])) forever )! text=Menace -- Ward — Pay 3 life. (Whenever this creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays 3 life.) -- Magecraft — Whenever you cast or copy an instant or sorcery spell, create a 1/1 black and green Pest creature token with "When this creature dies, you gain 1 life." mana={2}{B} @@ -50843,6 +53825,17 @@ mana={2}{U}{B} type=Enchantment [/card] [card] +name=Sefris of the Hidden Ways +auto=@dungeoncompleted(*[dungeon]|*) from(controller):name(Return creature) target(creature|mygraveyard) moveto(mybattlefield) +auto=@movedto(creature|mygraveyard) restriction{compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0} turnlimited:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=Whenever one or more creature cards are put into your graveyard from anywhere, venture into the dungeon. This ability triggers only once each turn. (Enter the first room or advance to the next room.) -- Create Undead — Whenever you complete a dungeon, return target creature card from your graveyard to the battlefield. +mana={W}{U}{B} +type=Legendary Creature +subtype=Human Wizard +power=2 +toughness=3 +[/card] +[card] name=Segovian Angel abilities=flying,vigilance text=Flying, vigilance @@ -51150,6 +54143,16 @@ power=7 toughness=7 [/card] [card] +name=Sepulcher Ghoul +auto={S(other *[creature]|mybattlefield)}:name(Gets 2/2) 2/2 ueot limit:1 +text=Sacrifice another creature: Sepulcher Ghoul gets +2/+2 until end of turn. Activate only once each turn. +mana={1}{B} +type=Creature +subtype=Zombie +power=2 +toughness=1 +[/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 @@ -51445,8 +54448,7 @@ toughness=2 [card] name=Shabraz, the Skyshark abilities=hiddenface,partner -aicode=activate moveTo(myhand) target(Brallin^ Skyshark Rider|mylibrary) -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Brallin^ Skyshark Rider|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Brallin^ Skyshark Rider|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend +auto=may name(Put partner in hand) moveTo(myhand) target(Brallin^ Skyshark Rider|mylibrary) auto=@drawof(player:all(this) counter(1/1,1) && life:1 controller auto={WU}:target(creature[Human]) flying ueot text=Partner with Shabraz, the Skyshark (When this creature enters the battlefield, target player may put Shabraz into their hand from their library, then shuffle.) -- Whenever you discard a card, put a +1/+1 counter on Brallin, Skyshark Rider and it deals 1 damage to each opponent. -- {R}: Target Shark gains trample until end of turn. @@ -51628,6 +54630,16 @@ power=2 toughness=3 [/card] [card] +name=Shambling Ghast +auto=@movedto(this|graveyard) from(battlefield):name(Choose one) transforms((,newability[if type(creature|opponentbattlefield)~morethan~0 then choice name(Creature gets -1/-1) name(Creature gets -1/-1) target(creature|opponentbattlefield) -1/-1 ueot],newability[choice name(Create treasure) token(Treasure Sur)])) oneshot +text=When Shambling Ghast dies, choose one — -- • Brave the Stench — Target creature an opponent controls gets -1/-1 until end of turn. -- • Search the Body — Create a Treasure token. (It’s an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") +mana={B} +type=Creature +subtype=Zombie +power=1 +toughness=1 +[/card] +[card] name=Shambling Suit anyzone=type:*[artifact;enchantment]:myBattlefield/3 cdaactive text=Shambling Suit's power is equal to the number of artifacts and/or enchantments you control. @@ -51706,6 +54718,19 @@ mana={3}{G} type=Sorcery [/card] [card] +name=Share the Spoils +auto=all(*[zpos=1]|library) moveto(ownerexile) and!( counter(0/0.1.SpoilsExiled) )! +auto=this(variable{controllerturn}>0) lord(*[-land;counter{0/0.1.SpoilsExiled}]|myexile) transforms((,newability[anytypeofmana],newability[canplayfromexile],newability[@movedTo(this|mystack) from(myexile):all(*[zpos=1]|mylibrary) moveto(exile) and!( counter(0/0.1.SpoilsExiled) )!])) +auto=this(variable{controllerturn}>0) lord(land[counter{0/0.1.SpoilsExiled}]|myexile) transforms((,newability[anytypeofmana],newability[canplayfromexile],newability[@movedTo(this|mybattlefield) from(myexile):all(*[zpos=1]|mylibrary) moveto(exile) and!( counter(0/0.1.SpoilsExiled) )!])) +auto=this(variable{controllerturn}>0) {0}:name(Play card from opponent exile) target(*[counter{0/0.1.SpoilsExiled}]|opponentexile) moveto(myexile) and!( transforms((,newability[counter(0/0.1.SpoilsExiled)],newability[phaseaction[endofturn once checkex] moveTo(ownerexile)],newability[phaseaction[untap once checkex] counter(0/0.1.SpoilsExiled)])) ueot )! myTurnOnly +auto=this(variable{opponentturn}>0) lord(*[-land;counter{0/0.1.SpoilsExiled}]|opponentexile) transforms((,newability[anytypeofmana],newability[canplayfromexile],newability[@movedTo(this|mystack) from(myexile):all(*[zpos=1]|mylibrary) moveto(exile) and!( counter(0/0.1.SpoilsExiled) )!])) +auto=this(variable{opponentturn}>0) lord(land[counter{0/0.1.SpoilsExiled}]|opponentexile) transforms((,newability[anytypeofmana],newability[canplayfromexile],newability[@movedTo(this|mybattlefield) from(myexile):all(*[zpos=1]|mylibrary) moveto(exile) and!( counter(0/0.1.SpoilsExiled) )!])) +auto=this(variable{opponentturn}>0) lord(*|opponentbattlefield) transforms((,newability[{0}:name(Play card from opponent exile) target(*[counter{0/0.1.SpoilsExiled}]|opponentexile) moveto(myexile) and!( transforms((,newability[counter(0/0.1.SpoilsExiled)],newability[phaseaction[endofturn once checkex] moveTo(ownerexile)],newability[phaseaction[untap once checkex] counter(0/0.1.SpoilsExiled)])) ueot )!])) +text=When Share the Spoils enters the battlefield or an opponent loses the game, exile the top card of each player’s library. -- During each player’s turn, that player may play a land or cast a spell from among cards exiled with Share the Spoils, and they may spend mana as though it were mana of any color to cast that spell. When they do, exile the top card of their library. +mana={1}{R} +type=Enchantment +[/card] +[card] name=Shared Animosity auto=@combat(attacking) source(creature|myBattlefield): thisforeach(other creature[share! subtype!]|myBattlefield) 1/0 ueot text=Whenever a creature you control attacks, it gets +1/+0 until end of turn for each other attacking creature that shares a creature type with it. @@ -51948,6 +54973,17 @@ power=3 toughness=1 [/card] [card] +name=Shessra, Death's Whisper +auto=name(Creature must block) target(creature) transforms((,newability[mustblock])) ueot +auto=@each my endofturn restriction{morbid}:name(Pay 2 and draw) pay({2}) name(Pay 2 and draw) draw:1 controller +text=Bewitching Whispers — When Shessra, Death’s Whisper enters the battlefield, target creature blocks this turn if able. -- Whispers of the Grave — At the beginning of your end step, if a creature died this turn, you may pay 2 life. If you do, draw a card. +mana={2}{B}{G} +type=Legendary Creature +subtype=Human Elf Warlock +power=1 +toughness=3 +[/card] +[card] name=Shield Mare auto=cantbeblockedby(creature[red creatures]) auto=targeted(this|mybattlefield) from(*|opponentbattlefield,opponenthand,opponentstack,opponentgraveyard,opponentexile,opponentlibrary):life:3 @@ -52121,7 +55157,7 @@ toughness=4 [card] name=Shining Armor abilities=flash -auto=rehook target(creature[knight]|mybattlefield) +auto=aslongas(parents) name(Attach to knight) rehook target(creature[knight]|myBattlefield) <1 auto={3}:equip auto=teach(creature) 0/2 auto=teach(creature) vigilance @@ -52229,6 +55265,15 @@ power=3 toughness=5 [/card] [card] +name=Shocking Grasp +target=creature +auto=-2/0 ueot +auto=draw:1 controller +text=Target creature gets -2/-0 until end of turn. -- Draw a card. +mana={1}{U} +type=Instant +[/card] +[card] name=Shore Keeper auto={7}{U}{T}{S}:draw:3 controller text={7}{U}, {T}, Sacrifice Shore Keeper: Draw three cards. @@ -52256,6 +55301,16 @@ type=Artifact subtype=Equipment [/card] [card] +name=Shortcut Seeker +auto=@combatdamaged(player) from(this) restriction{compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0}:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=Whenever Shortcut Seeker deals combat damage to a player, venture into the dungeon. (Enter the first room or advance to the next room.) +mana={3}{U} +type=Creature +subtype=Human Rogue +power=2 +toughness=5 +[/card] +[card] name=Show of Confidence auto=if thisturn(*[instant;sorcery]|mystack)~equalto~1 then thisforeach(variable{1}) ability$!name(Put 1/1 counter) name(Put 1/1 counter) target(creature) transforms((,newability[counter(1/1)],newability[vigilance])) ueot!$ controller auto=if thisturn(*[instant;sorcery]|mystack)~equalto~2 then thisforeach(variable{2}) ability$!name(Put 1/1 counter) name(Put 1/1 counter) target(creature) transforms((,newability[counter(1/1)],newability[vigilance])) ueot!$ controller @@ -52720,8 +55775,7 @@ type=Instant [card] name=Silvar, Devourer of the Free abilities=hiddenface,menace,partner -aicode=activate moveTo(myhand) target(Trynn^ Champion of Freedom|mylibrary) -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Trynn^ Champion of Freedom|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Trynn^ Champion of Freedom|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend +auto=may name(Put partner in hand) moveTo(myhand) target(Trynn^ Champion of Freedom|mylibrary) auto={S(Human|myBattlefield)}:all(this) counter(1/1) && indestructible ueot text=Partner with Trynn, Champion of Freedom (When this creature enters the battlefield, target player may put Trynn into their hand from their library, then shuffle.) -- Menace -- Sacrifice a Human: Put a +1/+1 counter on Silvar, Devourer of the Free. It gains indestructible until end of turn. mana={3}{B}{R} @@ -52731,6 +55785,18 @@ power=4 toughness=2 [/card] [card] +name=Silver Raven +abilities=flying +aicode=activate transforms((,newability[all(*[zpos<=1]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveto(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot +auto=name(Scry 1) scry:1 scrycore delayed dontshow donothing scrycoreend scryend +text=Flying -- When Silver Raven enters the battlefield, scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) +mana={U} +type=Artifact Creature +subtype=Bird +power=1 +toughness=1 +[/card] +[card] name=Silverback Shaman abilities=trample auto=@movedTo(this|graveyard) from(battlefield):draw:1 @@ -53137,7 +56203,7 @@ type=Instant [/card] [card] name=Six-y Beast -auto=rolladie winability sacrifice winabilityend loseability counter(1/1,lastrollchoice) loseabilityend rollend +auto=rolld6 winability sacrifice winabilityend loseability counter(1/1,lastrollchoice) loseabilityend rolld6end text=As Six-y Beast comes into play, you secretly put six or fewer +1/+1 counters on it, then an opponent guesses the number of counters. If that player guesses right, sacrifice Six-y Beast. mana={3}{R} type=Creature @@ -53206,6 +56272,17 @@ mana={X}{B}{E*|myGraveyard} type=Instant [/card] [card] +name=Skeletal Swarming +auto=lord(skeleton|myBattlefield) trample +auto=lord(skeleton|myBattlefield) mustattack +auto=lord(skeleton|myBattlefield) foreach(skeleton|myBattlefield) 1/0 +auto=@each my endofturn restriction{morbid}:name(Create skeleton) token(Skeleton,Creature Skeleton,1/1,black) and!( tap(noevent) )! +auto=@each my endofturn:name(Create skeleton) token(Skeleton,Creature Skeleton,1/1,black) and!( tap(noevent) )! +text=Each Skeleton you control has trample, attacks each combat if able, and gets +X/+0, where X is the number of other Skeletons you control. -- At the beginning of your end step, create a tapped 1/1 black Skeleton creature token. If a creature died this turn, create two of those tokens instead. +mana={3}{B}{G} +type=Enchantment +[/card] +[card] name=Skeleton Archer auto=damage:1 target(player,creature,planeswalker) text=When Skeleton Archer enters the battlefield, it deals 1 damage to any target. @@ -53216,6 +56293,14 @@ power=3 toughness=3 [/card] [card] +name=Skeleton Mad +type=Creature +subtype=Skeleton +power=1 +toughness=1 +color=black +[/card] +[card] name=Skeleton Scavengers auto=counter(1/1) auto={1}:this(counter{1/1.1}) regenerate && counter(1/1) @@ -53462,6 +56547,17 @@ power=4 toughness=3 [/card] [card] +name=Skullport Merchant +auto=name(Create treasure) token(Treasure Sur) +auto={1}{B}{S(other *[creature;treasure]|mybattlefield)}:name(Draw card) draw:1 controller +text=When Skullport Merchant enters the battlefield, create a Treasure token. (It’s an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") -- {1}{B}, Sacrifice another creature or a Treasure: Draw a card. +mana={2}{B} +type=Creature +subtype=Dwarf Citizen +power=1 +toughness=4 +[/card] +[card] name=Skullscorch target=player auto=ability$!name(Discards or damage) choice name(Discards 2 cards) discard:2 controller _ choice name(Damage 4) damage:4 controller)!$ targetedplayer @@ -53594,7 +56690,7 @@ toughness=1 [/card] [card] name=Skyclave Pick-Axe -auto=rehook target(creature|myBattlefield) +auto=aslongas(parents) name(Attach to creature) rehook target(creature|myBattlefield) <1 auto=teach(creature) transforms((,newability[@movedTo(land|myBattlefield):2/2 ueot])) auto={2}{G}:equip text=Skyclave Pick-Axe enters the battlefield, attach it to target creature you control. -- Landfall — Whenever a land enters the battlefield under your control, equipped creature gets +2/+2 until end of turn. -- Equip {2}{G} @@ -54014,8 +57110,8 @@ 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 +auto=@combatdamagefoeof(player) from(this):all(this) rolld6 6 winability life:-lastrollresult opponent winabilityend loseability life:-lastrollresult opponent loseabilityend rolld6end +auto=@combatdamageof(player) from(this):all(this) rolld6 6 winability life:-lastrollresult controller winabilityend loseability life:-lastrollresult controller loseabilityend rolld6end text=Whenever Sly Spy deals combat damage to a player, roll a six-sided die. That player loses life equal to the result. mana={2}{B} type=Creature @@ -54529,6 +57625,13 @@ type=Enchantment subtype=Saga [/card] [card] +name=Song of Inspiration +auto=all(*[zpos=1]|mylibrary) transforms((,newability[@dierolled(this|mylibrary) from(controller) once:name(Return permanents to hand) if compare(lastrollresult)~lessthan~11 then target(*[-instant;-sorcery]|mygraveyard) moveto(myhand) else transforms((,newability[moveto(myhand)],newability[life:manacost])) oneshot],newability[name(Roll a d20) rolld20 20 winability donothing winabilityend rolld20end])) oneshot +text=Choose up to two target permanent cards in your graveyard. Roll a d20 and add the total mana value of those cards. -- 1-14 | Return those cards to your hand. -- 15+ | Return those cards to your hand. You gain life equal to their total mana value. +mana={3}{G}{G} +type=Instant +[/card] +[card] name=Song of the Dryads target=*|battlefield auto=teach(creature) loseabilities @@ -54594,6 +57697,38 @@ power=1 toughness=3 [/card] [card] +name=Sorcerer Class +auto=counter(0/0,1,Level) +auto=draw:2 && transforms((,newability[name(Discard 2 cards) target(<2>*|myhand) reject])) oneshot +auto=this(variable{hascntlevel}=1) {U}{R}:name(Level 2) counter(0/0,1,Level) asSorcery +auto=this(variable{hascntlevel}=2) lord(creature|myBattlefield) transforms((,newability[this(variable{type:*[class]:myBattlefield}>0) {T}:add{U}],newability[this(variable{type:*[class]:myBattlefield}>0) {T}:add{R}],newability[this(variable{type:*[instant;sorcery]:myhand}>0) {T}:add{U}],newability[this(variable{type:*[instant;sorcery]:myhand}>0) {T}:add{R}])) +auto=this(variable{hascntlevel}=2) {3}{U}{R}:name(Level 3) counter(0/0,1,Level) asSorcery +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~0}:name(Deals 1 damage) damage:1 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~1}:name(Deals 2 damage) damage:2 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~2}:name(Deals 3 damage) damage:3 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~3}:name(Deals 4 damage) damage:4 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~4}:name(Deals 5 damage) damage:5 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~5}:name(Deals 6 damage) damage:6 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~6}:name(Deals 7 damage) damage:7 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~7}:name(Deals 8 damage) damage:8 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~8}:name(Deals 9 damage) damage:9 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~9}:name(Deals 10 damage) damage:10 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~10}:name(Deals 11 damage) damage:11 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~11}:name(Deals 12 damage) damage:12 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~12}:name(Deals 13 damage) damage:13 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~13}:name(Deals 14 damage) damage:14 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~14}:name(Deals 15 damage) damage:15 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~15}:name(Deals 16 damage) damage:16 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~16}:name(Deals 17 damage) damage:17 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~17}:name(Deals 18 damage) damage:18 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~equalto~18}:name(Deals 19 damage) damage:19 opponent +auto=@movedTo(*[instant;sorcery]|mystack) restriction{compare(hascntlevel)~morethan~2,thisturn(*[instant;sorcery]|mystack)~morethan~18}:name(Deals 20 damage) damage:20 opponent +text=(Gain the next level as a sorcery to add its ability.) -- When Sorcerer Class enters the battlefield, draw two cards, then discard two cards. -- {U}{R}: Level 2 -- Creatures you control have "{T}: Add {U} or {R}. Spend this mana only to cast an instant or sorcery spell or to gain a Class level." -- {3}{U}{R}: Level 3 -- Whenever you cast an instant or sorcery spell, that spell deals damage to each opponent equal to the number of instant or sorcery spells you’ve cast this turn. +mana={U}{R} +type=Enchantment +subtype=Class +[/card] +[card] name=Sorcerer of the Fang auto={5}{B}{T}:damage:2 target(opponent,planeswalker) text={5}{B}, {T}: Sorcerer of the Fang deals 2 damage to target opponent or planeswalker. @@ -54835,7 +57970,7 @@ subtype=Aura [card] name=Soulblade Corrupter abilities=deathtouch,partner -auto=may moveto(myhand) notatarget(soulblade renewer|mylibrary) +auto=may name(Put partner in hand) moveto(myhand) target(soulblade renewer|mylibrary) auto=@combat(attacking) source(creature[counter{1/1.1}]|mybattlefield):deathtouch ueot text=Partner with Soulblade Renewer (When this creature enters the battlefield, target player may put Soulblade Renewer into their hand from their library, then shuffle.) -- Deathtouch -- Whenever a creature with a +1/+1 counter on it attacks one of your opponents, that creature gains deathtouch until end of turn. mana={4}{B} @@ -54847,7 +57982,7 @@ toughness=3 [card] name=Soulblade Renewer abilities=partner -auto=may moveto(myhand) notatarget(soulblade corrupter|mylibrary) +auto=may name(Put partner in hand) moveto(myhand) target(soulblade corrupter|mylibrary) auto=target(other creature|battlefield) counter(1/1) text=Partner with Soulblade Corrupter (When this creature enters the battlefield, target player may put Soulblade Corrupter into their hand from their library, then shuffle.) -- When Soulblade Renewer enters the battlefield, support 2. (Put a +1/+1 counter on each of up to two other target creatures.) mana={4}{G} @@ -54918,6 +58053,16 @@ power=5 toughness=5 [/card] [card] +name=Soulknife Spy +auto=@combatdamaged(player) from(this):name(Draw a card) draw:1 controller +text=Whenever Soulknife Spy deals combat damage to a player, draw a card. +mana={2}{U} +type=Creature +subtype=Elf Rogue +power=3 +toughness=2 +[/card] +[card] name=Soulreaper of Mogis auto={2}{B}{S(creature|myBattlefield)}:Draw:1 controller text={2}{B}, Sacrifice a creature: Draw a card. @@ -55023,6 +58168,16 @@ power=2 toughness=2 [/card] [card] +name=Spare Dagger +auto={1}:equip +auto=teach(creature) 1/0 +auto=@combat(attacking) source(mytgt):may name(Sacrifice and deal damage) target(Spare Dagger[attached]|mybattlefield) transforms((,newability[sacrifice],newability[name(Deal 1 damage) damage:1 target(player^creature^planeswalker)])) ueot +text=Equipped creature gets +1/+0 and has "Whenever this creature attacks, you may sacrifice Spare Dagger. When you do, this creature deals 1 damage to any target." -- Equip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.) +mana={1} +type=Artifact +subtype=Equipment +[/card] +[card] name=Spare Supplies auto=tap(noevent) auto=draw:1 controller @@ -55412,6 +58567,34 @@ power=1 toughness=3 [/card] [card] +name=Sphere of Annihilation +auto=counter(0/0,x,Void) +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~0}:transforms((,newability[all(creature[manacost<=0]|battlefield) moveto(exile)],newability[all(creature[manacost<=0]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=0]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=0]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~1}:transforms((,newability[all(creature[manacost<=1]|battlefield) moveto(exile)],newability[all(creature[manacost<=1]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=1]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=1]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~2}:transforms((,newability[all(creature[manacost<=2]|battlefield) moveto(exile)],newability[all(creature[manacost<=2]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=2]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=2]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~3}:transforms((,newability[all(creature[manacost<=3]|battlefield) moveto(exile)],newability[all(creature[manacost<=3]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=3]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=3]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~4}:transforms((,newability[all(creature[manacost<=4]|battlefield) moveto(exile)],newability[all(creature[manacost<=4]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=4]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=4]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~5}:transforms((,newability[all(creature[manacost<=5]|battlefield) moveto(exile)],newability[all(creature[manacost<=5]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=5]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=5]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~6}:transforms((,newability[all(creature[manacost<=6]|battlefield) moveto(exile)],newability[all(creature[manacost<=6]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=6]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=6]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~7}:transforms((,newability[all(creature[manacost<=7]|battlefield) moveto(exile)],newability[all(creature[manacost<=7]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=7]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=7]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~8}:transforms((,newability[all(creature[manacost<=8]|battlefield) moveto(exile)],newability[all(creature[manacost<=8]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=8]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=8]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~9}:transforms((,newability[all(creature[manacost<=9]|battlefield) moveto(exile)],newability[all(creature[manacost<=9]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=9]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=9]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~10}:transforms((,newability[all(creature[manacost<=10]|battlefield) moveto(exile)],newability[all(creature[manacost<=10]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=10]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=10]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~11}:transforms((,newability[all(creature[manacost<=11]|battlefield) moveto(exile)],newability[all(creature[manacost<=11]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=11]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=11]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~12}:transforms((,newability[all(creature[manacost<=12]|battlefield) moveto(exile)],newability[all(creature[manacost<=12]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=12]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=12]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~13}:transforms((,newability[all(creature[manacost<=13]|battlefield) moveto(exile)],newability[all(creature[manacost<=13]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=13]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=13]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~14}:transforms((,newability[all(creature[manacost<=14]|battlefield) moveto(exile)],newability[all(creature[manacost<=14]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=14]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=14]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~15}:transforms((,newability[all(creature[manacost<=15]|battlefield) moveto(exile)],newability[all(creature[manacost<=15]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=15]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=15]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~16}:transforms((,newability[all(creature[manacost<=16]|battlefield) moveto(exile)],newability[all(creature[manacost<=16]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=16]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=16]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~17}:transforms((,newability[all(creature[manacost<=17]|battlefield) moveto(exile)],newability[all(creature[manacost<=17]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=17]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=17]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~18}:transforms((,newability[all(creature[manacost<=18]|battlefield) moveto(exile)],newability[all(creature[manacost<=18]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=18]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=18]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~equalto~19}:transforms((,newability[all(creature[manacost<=19]|battlefield) moveto(exile)],newability[all(creature[manacost<=19]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=19]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=19]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +auto=@each my upkeep restriction{compare(hascntvoid)~morethan~19}:transforms((,newability[all(creature[manacost<=20]|battlefield) moveto(exile)],newability[all(creature[manacost<=20]|graveyard) moveto(exile)],newability[all(planeswalker[manacost<=20]|battlefield) moveto(exile)],newability[all(planeswalker[manacost<=20]|graveyard) moveto(exile)],newability[moveto(exile)])) oneshot +text=Sphere of Annihilation enters the battlefield with X void counters on it. -- At the beginning of your upkeep, exile Sphere of Annihilation, all creatures and planeswalkers with mana value less than or equal to the number of void counters on it, and all creature and planeswalker cards in all graveyards with mana value less than or equal to the number of void counters on it. +mana={X}{B} +type=Artifact +[/card] +[card] name=Sphere of Safety auto=lord(creature|opponentbattlefield) transforms((,newability[foreach(enchantment|mybattlefield) attackcost:1])) text=Creatures can't attack you or a planeswalker you control unless their controller pays {X} for each of those creatures, where X is the number of enchantments you control. @@ -55541,6 +58724,27 @@ power=4 toughness=4 [/card] [card] +name=Spiked Pit Trap +abilities=flash +auto={5}:name(Roll a d20) target(creature|battlefield) counter(0/0,1,SpikedEffect) && all(this) rolld20 20 winability donothing winabilityend rolld20end +auto=@dierolled(this) from(controller):all(this) sacrifice +auto=@dierolled(this) from(controller):ability$!name(Deal 5 damage) all(creature[counter{0/0.1.SpikedEffect}]|battlefield) transforms((,newability[damage:5],newability[removeallcounters(0/0.1.SpikedEffect)])) oneshot!controller +auto=@dierolled(this) result(10) from(controller):name(Create treasure) token(Treasure Sur) +auto=@dierolled(this) result(11) from(controller):name(Create treasure) token(Treasure Sur) +auto=@dierolled(this) result(12) from(controller):name(Create treasure) token(Treasure Sur) +auto=@dierolled(this) result(13) from(controller):name(Create treasure) token(Treasure Sur) +auto=@dierolled(this) result(14) from(controller):name(Create treasure) token(Treasure Sur) +auto=@dierolled(this) result(15) from(controller):name(Create treasure) token(Treasure Sur) +auto=@dierolled(this) result(16) from(controller):name(Create treasure) token(Treasure Sur) +auto=@dierolled(this) result(17) from(controller):name(Create treasure) token(Treasure Sur) +auto=@dierolled(this) result(18) from(controller):name(Create treasure) token(Treasure Sur) +auto=@dierolled(this) result(19) from(controller):name(Create treasure) token(Treasure Sur) +auto=@dierolled(this) result(20) from(controller):name(Create treasure) token(Treasure Sur) +text=Flash -- {5}, {T}, Sacrifice Spiked Pit Trap: Choose target creature, then roll a d20. -- 1-9 | Spiked Pit Trap deals 5 damage to that creature. -- 10-20 | Spiked Pit Trap deals 5 damage to that creature. Create a Treasure token. +mana={1} +type=Artifact +[/card] +[card] name=Spikefield Cave auto=tap(noevent) auto={T}:add{R} @@ -55625,8 +58829,9 @@ toughness=3 [card] name=Spinerock Knoll abilities=hiddenface -aicode=activate transforms((,newability[choice all(*[zpos=1]|mylibrary) moveto(myExile) and!(deplete:4)!])) ueot -auto=tap(noevent) && name(look) reveal:4 optionone name(Exile a Card) target(<1>*|reveal) moveto(myExile) optiononeend optiontwo name(put in library) all(*|reveal) bottomoflibrary optiontwoend revealend +auto=tap(noevent) +aicode=activate target(*[zpos<=4]|mylibrary) moveto(myExile) and!( transforms((,newability[all(*[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )!])) ueot )! +auto=name(Look top 4) reveal:4 optionone name(Exile a Card) target(<1>*|reveal) moveto(myExile) optiononeend optiontwo name(put on bottom) all(*|reveal) bottomoflibrary optiontwoend revealend auto={T}:Add{R} auto={R}{T}:if restriction{foelost(7)} then may castcard(normal) target(*|myExile) text=Hideaway (This land enters the battlefield tapped. When it does, look at the top four cards of your library, exile one face down, then put the rest on the bottom of your library.) -- {T}: Add {R}. -- {R}, {T}: You may play the exiled card without paying its mana cost if an opponent was dealt 7 or more damage this turn. @@ -55875,6 +59080,14 @@ mana={2}{W} type=Sorcery [/card] [card] +name=Split the Party +auto=choice name(Target opponent) target(creature|opponentbattlefield) moveTo(ownerhand) +auto=choice name(Target yourself) target(creature|mybattlefield) moveTo(ownerhand) +text=Choose target player. Return half the creatures they control to their owner’s hand, rounded up. +mana={3}{U}{U} +type=Sorcery +[/card] +[card] name=Splitting Slime auto=this(cantargetcard(*[-monstrous]) {4}{G}{G}:becomes(monstrous) forever && counter(1/1,3) && clone all(this) text={4}{G}{G}: Monstrosity 3. (If this creature isn’t monstrous, put three +1/+1 counters on it and it becomes monstrous.) -- When Splitting Slime becomes monstrous, create a token that’s a copy of Splitting Slime. (The token has no counters and isn’t monstrous.) @@ -55910,6 +59123,21 @@ mana={X}{B} type=Sorcery [/card] [card] +name=Spoils of the Hunt +other={2}{S(treasure|myBattlefield)} name(Sacrifice 1 treasure) +otherrestriction=type(treasure|mybattlefield)~morethan~0,type(creature|mybattlefield)~morethan~0 +restriction=type(creature|mybattlefield)~morethan~0 +autohand={0}{S(treasure|myBattlefield)}{S(treasure|myBattlefield)}{S(treasure|myBattlefield)} restriction{type(treasure|mybattlefield)~morethan~2}:name(Sacrifice 3 treasures) name(Sacrifice 3 treasures) activate castcard(normal kicked!:3:!) +autohand={1}{S(treasure|myBattlefield)}{S(treasure|myBattlefield)} restriction{type(treasure|mybattlefield)~morethan~1}:name(Sacrifice 2 treasures) name(Sacrifice 2 treasures) activate castcard(normal kicked!:2:!) +auto=ifnot paid(alternative) then if compare(kicked)~equalto~0 then name(Creature deals damage) name(Creature deals damage) name(Creature deals damage) target(creature|myBattlefield) transforms((,newability[name(Damage creature) damage:power target(creature|opponentbattlefield)])) ueot +auto=if compare(kicked)~equalto~2 then name(Creature gets 2/0) name(Creature gets 2/0) target(creature|myBattlefield) transforms((,newability[2/0],newability[name(Damage creature) damage:power target(creature|opponentbattlefield)])) ueot +auto=if compare(kicked)~equalto~3 then name(Creature gets 3/0) name(Creature gets 3/0) target(creature|myBattlefield) transforms((,newability[3/0],newability[name(Damage creature) damage:power target(creature|opponentbattlefield)])) ueot +auto=if paid(alternative) then name(Creature gets 1/0) name(Creature gets 1/0) target(creature|myBattlefield) transforms((,newability[1/0],newability[name(Damage creature) damage:power target(creature|opponentbattlefield)])) ueot +text=Target creature you control gets +1/+0 until end of turn for each mana from a Treasure that was spent to cast this spell. Then that creature deals damage equal to its power to target creature an opponent controls. +mana={2}{G} +type=Instant +[/card] +[card] name=Spontaneous Flight target=creature auto=2/2 ueot @@ -56555,6 +59783,16 @@ power=2 toughness=3 [/card] [card] +name=Steadfast Paladin +abilities=lifelink +text=Lifelink +mana={1}{W} +type=Creature +subtype=Dwarf Knight +power=2 +toughness=2 +[/card] +[card] name=Steadfast Sentinel abilities=vigilance autograveyard={4}{W}{W}{E}:name(Eternalize) clone and!( transforms((Zombie,removemc,setpower=4,settoughness=4,black)) forever )! assorcery @@ -56632,7 +59870,7 @@ toughness=4 [/card] [card] name=Steel Squirrel -auto={6}:all(this) rolladie 6 winability donothing winabilityend loseability donothing loseabilityend rollend +auto={6}:all(this) rolld6 6 winability donothing winabilityend loseability donothing loseabilityend rolld6end auto=@dierolled(*|battlefield) result(5) from(controller):name(Get 5/5) name(Get 5/5) 5/5 ueot auto=@dierolled(*|battlefield) result(6) from(controller):name(Get 6/6) name(Get 6/6) 6/6 ueot text=Whenever you roll a 5 or higher on a die, Steel Squirrel gets +X/+X until end of turn, where X is the result. -- {6}: Roll a six-sided die. @@ -57216,6 +60454,28 @@ power=5 toughness=4 [/card] [card] +name=Storvald Effect +abilities=doublefacedeath +auto=choice name(Creature becomes 7/7) target(creature|battlefield) transforms((,setpower=7,settoughness=7)) ueot +auto=choice name(Creature becomes 1/1) target(creature|battlefield) transforms((,setpower=1,settoughness=1)) ueot +auto=choice name(Choose both) target(creature|battlefield) transforms((,setpower=7,settoughness=7,newability[name(Creature becomes 1/1) target(other creature|battlefield) transforms((,setpower=1,settoughness=1)) ueot])) ueot +text=Choose one or both — -- • Target creature has base power and toughness 7/7 until end of turn. -- • Target creature has base power and toughness 1/1 until end of turn. +mana={G}{U} +type=Instant +[/card] +[card] +name=Storvald, Frost Giant Jarl +auto=@targeted(creature|mybattlefield) from(*|opponentzones):choice name(This spell costs 3 more) name(This spell costs 3 more) target(*|opponentzones) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) oneshot +auto=name(Choose one or both) activate castcard(named!:storvald effect:!) +auto=@combat(attacking) source(this):name(Choose one or both) activate castcard(named!:storvald effect:!) +text=Ward {3} -- Other creatures you control have ward {3}. -- Whenever Storvald enters the battlefield or attacks, choose one or both — -- • Target creature has base power and toughness 7/7 until end of turn. -- • Target creature has base power and toughness 1/1 until end of turn. +mana={4}{G}{W}{U} +type=Legendary Creature +subtype=Giant +power=7 +toughness=7 +[/card] +[card] name=Story Seeker abilities=lifelink text=Lifelink @@ -57532,6 +60792,33 @@ mana={1}{B} type=Instant [/card] [card] +name=Sudden Insight +auto=if type(*[-land;manacost=0]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=1]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=2]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=3]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=4]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=5]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=6]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=7]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=8]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=9]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=10]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=11]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=12]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=13]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=14]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=15]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=16]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=17]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=18]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost=19]|mygraveyard)~morethan~0 then draw:1 controller +auto=if type(*[-land;manacost>=20]|mygraveyard)~morethan~0 then draw:1 controller +text=Draw a card for each different mana value among nonland cards in your graveyard. +mana={4}{U}{U} +type=Instant +[/card] +[card] name=Sudden Spinnerets target=creature auto=1/3 ueot @@ -58036,7 +61323,7 @@ toughness=4 name=Svyelun of Sea and Sky auto=aslongas(merfolk|myBattlefield) indestructible >2 auto=@combat(attacking) source(this):draw:1 controller -auto=@targeted(other *[merfolk]|myBattlefield) from(*[instant;sorcery]|opponentzones):choice name(This spell costs 1 more) name(This spell costs 1 more) target(*[instant;sorcery]|opponentzones) transforms((,newability[pay[[{1}]] name(pay 1 more) donothing?fizzle])) oneshot +auto=@targeted(other *[merfolk]|myBattlefield) from(*|opponentzones):choice name(This spell costs 1 more) name(This spell costs 1 more) target(*|opponentzones) transforms((,newability[pay[[{1}]] name(pay 1 more) donothing?fizzle])) oneshot text=Svyelun of Sea and Sky has indestructible as long as you control at least two other Merfolk. -- Whenever Svyelun attacks, draw a card. -- Other Merfolk you control have ward {1} . (Whenever another Merfolk you control becomes the target of a spell or ability an opponent controls, counter it unless that player pays {1}.) mana={1}{U}{U} type=Legendary Creature @@ -58113,6 +61400,16 @@ power=0 toughness=0 [/card] [card] +name=Swarming Goblins +auto=name(Roll a d20) rolld20 20 winability token(Goblin Los)*3 winabilityend loseability if compare(lastrollresult)~lessthan~10 then token(Goblin Los) else token(Goblin Los)*2 loseabilityend rolld20end +text=When Swarming Goblins enters the battlefield, roll a d20. -- 1-9 | Create a 1/1 red Goblin creature token. -- 10-19 | Create two of those tokens. -- 20 | Create three of those tokens. +mana={4}{R} +type=Creature +subtype=Goblin +power=4 +toughness=3 +[/card] +[card] name=Swashbuckling target=creature auto=2/2 @@ -58262,6 +61559,16 @@ type=Artifact subtype=Equipment [/card] [card] +name=Sword of Hours +auto={2}:equip +auto=teach(creature) transforms((,newability[@combat(attacking) source(this):counter(1/1)])) +auto=teach(creature) transforms((,newability[@combatdamaged(player) from(this):name(Roll a d12) rolld12 12 winability counter(1/1.hascnt11) winabilityend loseability if compare(lastrollresult)~morethan~compare(thatmuch) then counter(1/1.hascnt11) loseabilityend rolld12end])) +text=Whenever equipped creature attacks, put a +1/+1 counter on it. -- Whenever equipped creature deals combat damage, roll a d12. If the result is greater than the damage dealt or the result is 12, double the number of +1/+1 counters on that creature. -- Equip {2} ({2}: Attach to target creature you control. Equip only as a sorcery.) +mana={2} +type=Artifact +subtype=Equipment +[/card] +[card] name=Sword of Sinew and Steel auto=teach(creature) 2/2 auto=teach(creature) protection from black @@ -58280,7 +61587,7 @@ auto={2}:equip auto=teach(creature) protection from white auto=teach(creature) protection from blue auto=teach(creature) 2/2 -auto=@combatdamaged(player) from(mytgt):notatarget(*[artifact;creature;enchantment;land;planeswalker;player]) proliferate +auto=@combatdamaged(player) from(mytgt):name(Proliferate) NotATarget(*) duplicatecounters(single) auto=@combatdamaged(player) from(mytgt):target(creature|myBattlefield) counter(1/1) text=Equipped creature gets +2/+2 and has protection from white and from blue. -- Whenever equipped creature deals combat damage to a player, put a +1/+1 counter on a creature you control, then proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) -- Equip {2} mana={3} @@ -58366,10 +61673,21 @@ mana={X}{G} type=Sorcery [/card] [card] +name=Sylvan Shepherd +abilities=vigilance +auto=@combat(attacking) source(this):name(Roll a d20) rolld20 20 winability life:5 controller winabilityend loseability if compare(lastrollresult)~lessthan~10 then life:1 controller else life:2 controller loseabilityend rolld20end +text=Vigilance -- Whenever Sylvan Shepherd attacks, roll a d20. -- 1-9 | You gain 1 life. -- 10-19 | You gain 2 life. -- 20 | You gain 5 life. +mana={2}{G} +type=Creature +subtype=Human Druid +power=2 +toughness=3 +[/card] +[card] name=Sylvia Brightspear abilities=double strike,partner auto=lord(dragon|myBattlefield) haste double strike -auto=may moveto(myhand) notatarget(khorvath brightflame|mylibrary) +auto=may name(Put partner in hand) moveto(myhand) target(khorvath brightflame|mylibrary) text=Partner with Khorvath Brightflame (When this creature enters the battlefield, target player may put Khorvath into their hand from their library, then shuffle.) -- Double strike -- Dragons your team controls have double strike. mana={2}{W} type=Legendary Creature @@ -58969,6 +62287,17 @@ power=3 toughness=3 [/card] [card] +name=Targ Nar, Demon-Fang Gnoll +auto=@combat(attacking) source(this) restriction{compare(pwrtotatt)~morethan~5}:name(Pack tactics) all(creature[attacking]|myBattlefield) 1/0 ueot +auto={2}{R}{G}:name(Double power and toughness) power/toughness ueot +text=Pack tactics — Whenever Targ Nar, Demon-Fang Gnoll attacks, if you attacked with creatures with total power 6 or greater this combat, attacking creatures get +1/+0 until end of turn. -- {2}{R}{G}: Double Targ Nar’s power and toughness until end of turn. +mana={R}{G} +type=Legendary Creature +subtype=Gnoll +power=2 +toughness=2 +[/card] +[card] name=Target Minotaur abilities=prowess auto=@movedTo(*[-creature]|mystack):1/1 ueot @@ -58980,6 +62309,13 @@ power=2 toughness=1 [/card] [card] +name=Tasha's Hideous Laughter +auto=all(*[zpos<=oppototalmana20]|opponentlibrary) moveto(exile) +text=Each opponent exiles cards from the top of their library until that player has exiled cards with total mana value 20 or more. +mana={1}{U}{U} +type=Sorcery +[/card] +[card] name=Task Mage Assembly auto=aslongas(creature|battlefield) sacrifice <1 auto={2}:damage:1 target(creature) asSorcery @@ -59227,6 +62563,13 @@ power=3 toughness=4 [/card] [card] +name=Teleportation Circle +auto=@each my end:may name(Exile creature or artifact) target(*[creature;artifact]|mybattlefield) moveto(exile) and!( moveto(ownerbattlefield) )! +text=At the beginning of your end step, exile up to one target artifact or creature you control, then return that card to the battlefield under its owner’s control. +mana={3}{W} +type=Enchantment +[/card] +[card] name=Temmet, Vizier of Naktamun auto=@each my combatbegins:target(creature[token]|mybattlefield) transforms((,newability[1/1],newability[unblockable])) ueot autograveyard={3}{W}{U}{E}:name(Embalm) clone and!( transforms((Zombie,removemc,white)) forever )! asSorcery @@ -59308,6 +62651,13 @@ text=(Transforms from Arguel's Blood Fast.) -- {T}: Add {B} to your mana pool. - type=Legendary Land [/card] [card] +name=Temple of the Dragon Queen +auto=if compare(type:dragon:myhand)~equalto~0 then tap(noevent) +auto=chooseacolor transforms((,newability[{T}:add{chosencolor}])) forever chooseend +text=As Temple of the Dragon Queen enters the battlefield, you may reveal a Dragon card from your hand. Temple of the Dragon Queen enters the battlefield tapped unless you revealed a Dragon card this way or you control a Dragon. -- As Temple of the Dragon Queen enters the battlefield, choose a color. -- {T}: Add one mana of the chosen color. +type=Land +[/card] +[card] name=Temporal Extortion auto=ability$!name(Choose one) choice name(Pay half life and counter) life:-halfdownlifetotal controller _ choice name(Extra turn) turns:+1 opponent!$ opponent text=When you cast Temporal Extortion, any player may pay half his or her life, rounded up. If a player does, counter Temporal Extortion. -- Take an extra turn after this one. @@ -59845,7 +63195,7 @@ type=Land [/card] [card] name=The Big Idea -auto={2}{BR}{BR}{T}:all(this) rolladie 6 winability token(Brainiac,Creature Brainiac,1/1,red)*lastrollresult winabilityend loseability token(Brainiac,Creature Brainiac,1/1,red)*lastrollresult loseabilityend rollend +auto={2}{BR}{BR}{T}:all(this) rolld6 6 winability token(Brainiac,Creature Brainiac,1/1,red)*lastrollresult winabilityend loseability token(Brainiac,Creature Brainiac,1/1,red)*lastrollresult loseabilityend rolld6end text={2}{BR}{BR}, {T}: Roll a six-sided die. Create a number of 1/1 red Brainiac creature tokens equal to the result. -- Tap three untapped Brainiacs you control: The next time you would roll a six-sided die, instead roll two six-sided dice and use the total of those results. mana={4}{R}{R} type=Legendary Creature @@ -59881,6 +63231,15 @@ type=Enchantment subtype=Saga [/card] [card] +name=The Blackstaff of Waterdeep +abilities=doesnotuntap +auto=@each my untap:if cantargetcard(*[tapped]|mybattlefield) then may name(Untap Blackstaff of Waterdeep) name(Untap Blackstaff of Waterdeep) untap +auto={1}{U}{T}:name(Animate Walking Statue) target(other artifact|mybattlefield) transforms((,newability[aslongas(The Blackstaff of Waterdeep[tapped]|myBattlefield) becomes(Artifact Creature^4/4)])) forever asSorcery +text=You many choose not to untap The Blackstaff of Waterdeep during your untap step. -- Animate Walking Statue — {1}{U}, {T}: Another target artifact you control becomes a 4/4 artifact creature for as long as The Blackstaff of Waterdeep remains tapped. Activate only as a sorcery. +mana={U} +type=Legendary Artifact +[/card] +[card] name=The Bloodsky Massacre auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) @@ -59894,6 +63253,22 @@ type=Enchantment subtype=Saga [/card] [card] +name=The Book of Exalted Deeds +auto=@each my endofturn restriction{compare(lifegain)~morethan~2}:name(Create Angel) token(Angel,Creature Angel,3/3,flying,white) +auto={W}{W}{W}{T}{E}:name(Put enlightened counter) target(angel|battlefield) transforms((,newability[counter(0/0.1.Enlightened)],newability[this(counter{0/0.1.Enlightened}>=1) cantlose])) forever asSorcery +text=At the beginning of your end step, if you gained 3 or more life this turn, create a 3/3 white Angel creature token with flying. -- {W}{W}{W}, {T}, Exile The Book of Exalted Deeds: Put an enlightened counter on target Angel. It gains "You can’t lose the game and your opponents can’t win the game." Activate only as a sorcery. +mana={W}{W}{W} +type=Legendary Artifact +[/card] +[card] +name=The Book of Vile Darkness +auto=@each my end restriction{compare(lifelost)~morethan~1}:name(Create zombie) token(Zombie) +auto={T}{E}{E(Eye of Vecna|mybattlefield)}{E(Hand of Vecna|mybattlefield)}:name(Create Vecna) token(Vecna) +text=At the beginning of your end step, if you lost 2 or more life this turn, create a 2/2 black Zombie creature token. -- {T}, Exile The Book of Vile Darkness and artifacts you control named Eye of Vecna and Hand of Vecna: Create Vecna, a legendary 8/8 black Zombie God creature token with indestructible. It gains all triggered abilities of the exiled cards. +mana={B}{B}{B} +type=Legendary Artifact +[/card] +[card] name=The Cauldron of Eternity anyzone=foreach(creature|mygraveyard) changecost(colorless:-2) forcedalive auto=@movedTo(graveyard) from(creature|myBattlefield):all(trigger[from]) bottomoflibrary @@ -59919,6 +63294,19 @@ mana={4}{W}{W} type=Enchantment [/card] [card] +name=The Cinematic Phoenix +abilities=flying,haste,protection from red +auto={1}{T}:name(Return legendary creature) moveTo(myBattlefield) target(creature[legendary]|myGraveyard) +autograveyard={T(creature|myBattlefield)}{T(creature|myBattlefield)}{T(creature|myBattlefield)}{T(creature|myBattlefield)}{T(creature|myBattlefield)}{T(creature|myBattlefield)}:name(Tap six creature) moveTo(myBattlefield) +autograveyard={T(creature[legendary]|myBattlefield)}{T(creature[legendary]|myBattlefield)}{T(creature[legendary]|myBattlefield)}{T(creature[legendary]|myBattlefield)}{T(creature[legendary]|myBattlefield)}{T(creature[legendary]|myBattlefield)}:name(Tap six legendary creature) moveTo(myBattlefield) and!( wingame controller )! +text=Flying, haste, protection from red -- {1}, {T}: Return target legendary creature card from your graveyard to the battlefield. -- Tap six untapped creatures you control: Return The Cinematic Phoenix from your graveyard to the battlefield. If you tapped six legendary creatures this way, you win the game. +mana={3}{B}{R} +type=Legendary Creature +subtype=Phoenix +power=4 +toughness=4 +[/card] +[card] name=The Circle of Loyalty anyzone=foreach(creature[knight]|myBattlefield) changecost(colorless:-1) forcedalive auto=all(creature|mybattlefield) 1/1 @@ -59937,6 +63325,34 @@ mana={X}{G} type=Sorcery [/card] [card] +name=The Deck of Many Things +auto={2}{T}:name(Roll a d20) rolld20 20 winability winabilityend donothing rolld20end +auto=@dierolled(this) result(1) from(controller):name(Return random) moverandom(*) from(mygraveyard) to(myhand) +auto=@dierolled(this) result(2) from(controller):name(Return random) moverandom(*) from(mygraveyard) to(myhand) +auto=@dierolled(this) result(3) from(controller):name(Return random) moverandom(*) from(mygraveyard) to(myhand) +auto=@dierolled(this) result(4) from(controller):name(Return random) moverandom(*) from(mygraveyard) to(myhand) +auto=@dierolled(this) result(5) from(controller):name(Return random) moverandom(*) from(mygraveyard) to(myhand) +auto=@dierolled(this) result(6) from(controller):name(Return random) moverandom(*) from(mygraveyard) to(myhand) +auto=@dierolled(this) result(7) from(controller):name(Return random) moverandom(*) from(mygraveyard) to(myhand) +auto=@dierolled(this) result(8) from(controller):name(Return random) moverandom(*) from(mygraveyard) to(myhand) +auto=@dierolled(this) result(9) from(controller):name(Return random) moverandom(*) from(mygraveyard) to(myhand) +auto=@dierolled(this) result(10) from(controller):name(Draw 2 cards) draw:2 controller +auto=@dierolled(this) result(11) from(controller):name(Draw 2 cards) draw:2 controller +auto=@dierolled(this) result(12) from(controller):name(Draw 2 cards) draw:2 controller +auto=@dierolled(this) result(13) from(controller):name(Draw 2 cards) draw:2 controller +auto=@dierolled(this) result(14) from(controller):name(Draw 2 cards) draw:2 controller +auto=@dierolled(this) result(15) from(controller):name(Draw 2 cards) draw:2 controller +auto=@dierolled(this) result(16) from(controller):name(Draw 2 cards) draw:2 controller +auto=@dierolled(this) result(17) from(controller):name(Draw 2 cards) draw:2 controller +auto=@dierolled(this) result(18) from(controller):name(Draw 2 cards) draw:2 controller +auto=@dierolled(this) result(19) from(controller):name(Draw 2 cards) draw:2 controller +auto=@dierolled(this) result(20) from(controller):name(Return creature) target(creature|graveyard) moveto(myBattlefield) and!( transforms((,newability[@movedTo(this|mygraveyard) from(battlefield):wingame opponent],newability[@movedTo(this|opponentgraveyard) from(battlefield):wingame controller])) )! +auto=@dierolled(this) from(controller):if compare(lastrollresultminusphandcountminusend)~equalto~0 then name(Discard your hand) all(*|myhand) reject +text={2}, {T}: Roll a d20 and subtract the number of cards in your hand. If the result is 0 or less, discard your hand. -- 1-9 | Return a card at random from your graveyard to your hand. -- 10-19 | Draw two cards. -- 20 | Put a creature card from any graveyard onto the battlefield under your control. When that creature dies, its owner loses the game. +mana={5} +type=Legendary Artifact +[/card] +[card] name=The Elderspell target=planeswalker auto=destroy && counter(0/0,2,Loyalty) target(planeswalker|myBattlefield) @@ -60035,6 +63451,21 @@ mana={6} type=Legendary Artifact [/card] [card] +name=The Legend of Arena +abilities=canbecommander +auto=counter(0/0,1,Lore) +auto=@each my firstmain:counter(0/0,1,Lore) +auto=token(Human Wizard,Creature Human Wizard,2/1,red) +auto=this(counter{0/0.2.Lore}<=2) lord(*|mycastingzone) thisforeach(variable{type:wizard:myBattlefield}>0) changecost(colorless:-1) +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) token(Human Wizard,Creature Human Wizard,2/1,red) +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) target(*[planeswalker]|myLibrary) moveTo(myBattlefield) and!( counter(0/0,type:wizard:myBattlefield,Loyalty) )! +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) sacrifice(this) +text=The Legend of Arena can be your commander. -- I, II — Create a 2/1 red Human Wizard creature token. Spells you cast this turn cost {1} less to cast for each Wizard you control. -- III — Search your library for a planeswalker card, put it onto the battlefield, then shuffle your library. It enters with an additional loyalty counter on it for each Wizard you control. +mana={1}{U}{R}{W} +type=Legendary Enchantment +subtype=Saga +[/card] +[card] name=The Locust God abilities=flying, haste auto=@drawn(controller):token(Insect,creature Insect,1/1,red,blue,flying,haste) @@ -60164,6 +63595,17 @@ power=6 toughness=5 [/card] [card] +name=The Tarrasque +auto=if casted(this) then transforms((,newability[haste],newability[@targeted(this) from(*[|opponentzones):choice name(This spell costs 10 more) name(This spell costs 10 more) target(*|opponentzones) transforms((,newability[pay[[{10}]] name(pay 10 mana) donothing?fizzle])) oneshot])) forever +auto=@combat(attacking) source(this):name(Fight defending creature) target(creature|opponentbattlefield) dynamicability +text=The Tarrasque has haste and ward {10} as long as it was cast. -- Whenever The Tarrasque attacks, it fights target creature defending player controls. +mana={6}{G}{G}{G} +type=Legendary Creature +subtype=Dinosaur +power=10 +toughness=10 +[/card] +[card] name=The Three Seasons auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) @@ -60276,6 +63718,16 @@ power=1 toughness=1 [/card] [card] +name=Thieves' Tools +auto={2}:equip +auto=aslongas(parents) name(Create Token) token(Treasure Sur) <1 +auto=teach(creature[power<=3]) unblockable +text=When Thieves’ Tools enters the battlefield, create a Treasure token. (It’s an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") -- Equipped creature can’t be blocked as long as its power is 3 or less. -- Equip {2} ({2}: Attach to target creature you control. Equip only as a sorcery.) +mana={1}{B} +type=Artifact +subtype=Equipment +[/card] +[card] name=Thieving Otter auto=@combatdamaged(opponent) from(this):draw:1 controller text=Whenever Thieving Otter deals damage to an opponent, draw a card. @@ -60424,6 +63876,14 @@ power=2 toughness=2 [/card] [card] +name=Thorough Investigation +auto=@each my blockers:name(Investigation) token(Clue,Artifact Clue,0/0) and!( transforms((,newability[{S}{2}:draw:1])) forever )! controller +auto=@sacrificed(Clue|mybattlefield) restriction{compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0}:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=Whenever you attack, investigate. (Create a colorless Clue artifact token with "{2}, Sacrifice this artifact: Draw a card.") -- Whenever you sacrifice a Clue, venture into the dungeon. (Enter the first room or advance to the next room.) +mana={2}{W} +type=Enchantment +[/card] +[card] name=Those Who Serve mana={2}{W} type=Creature @@ -60971,6 +64431,17 @@ mana={4}{B}{B} type=Sorcery [/card] [card] +name=Tiamat +abilities=flying +auto=if casted(this) then may name(Search dragons) target(*[dragon;-tiamat]|mylibrary) moveto(myhand) and!( shuffle )! +text=Flying -- When Tiamat enters the battlefield, if you cast it, search your library for up to five Dragon cards not named Tiamat that each have different names, reveal them, put them into your hand, then shuffle. +mana={2}{W}{U}{B}{R}{G} +type=Legendary Creature +subtype=Dragon God +power=7 +toughness=7 +[/card] +[card] name=Tiana, Ship's Caretaker abilities=flying,first strike auto=@movedto(*[aura;enchantment]|myGraveyard) from(Battlefield):may phaseaction[endofturn once] name(Move to hand) moveto(ownerhand) target(*[aura;enchantment;fresh]|myGraveyard) @@ -61041,6 +64512,17 @@ text={T}: Add {U}. // Barkchannel Pathway type=Land [/card] [card] +name=Tiger-Tribe Hunter +abilities=trample +auto=@combat(attacking) source(this) restriction{compare(pwrtotatt)~morethan~5}:may name(Sacrifice a creature) target(other creature|myBattlefield) transforms((,newability[sacrifice],newability[name(Deals damage) target(creature) damage:power])) oneshot +text=Trample -- Pack tactics — Whenever Tiger-Tribe Hunter attacks, if you attacked with creatures with total power 6 or greater this combat, you may sacrifice another creature. When you do, Tiger-Tribe Hunter deals damage equal to the sacrificed creature’s power to target creature. +mana={3}{R}{R} +type=Creature +subtype=Human Barbarian +power=4 +toughness=4 +[/card] +[card] name=Tilonalli's Crown target=creature auto=damage:1 @@ -61093,7 +64575,7 @@ type=Land [/card] [card] name=Time Out -auto=target(*[-land]|battlefield) rolladie 6 winability moveto(ownerlibrary) and!(shuffle)! winabilityend loseability moveto(ownerlibrary) and!(shuffle)! loseabilityend rollend +auto=target(*[-land]|battlefield) rolld6 6 winability moveto(ownerlibrary) and!(shuffle)! winabilityend loseability moveto(ownerlibrary) and!(shuffle)! loseabilityend rolld6end text=Roll a six-sided die. Put target nonland permanent into its owner's library just beneath the top X cards of that library, where X is the result. mana={4}{U} type=Instant @@ -61488,6 +64970,21 @@ power=1 toughness=1 [/card] [card] +name=Tomb of Annihilation +restriction=never +autocommandzone=transforms((,newability[shroud],newability[indestructible])) forever +autocommandzone=@counteradded(0/0,1,Explore) from(Tomb of Annihilation|mycommandzone) restriction{compare(hascntexplore)~equalto~1}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Trapped Entry) name(Trapped Entry) life:-1 controller && life:-1 opponent!$ controller +autocommandzone=@counteradded(0/0,1,Explore) from(Tomb of Annihilation|mycommandzone) restriction{compare(hascntexplore)~equalto~2}:ability$!name(Veils of Fear or Oubliette) transforms((,newability[choice name(Veils of Fear) activate castcard(kicked!:1:! named!:annihilation rooms:!)],newability[if type(*|myhand)~morethan~0 then choice name(Oubliette) name(Oubliette) activate castcard(normal named!:annihilation rooms:!)])) oneshot!$ controller +autocommandzone=@counteradded(0/0,1,Explore) from(Tomb of Annihilation|mycommandzone) restriction{compare(hascntexplore)~equalto~3,compare(hascntoubliette)~equalto~0}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Sandfall Cell) name(Sandfall Cell) transforms((,newability[choice name(Loose 2 life) life:-2 controller],newability[if type(artifact|mybattlefield)~morethan~0 then if type(creature|mybattlefield)~morethan~0 then if type(land|mybattlefield)~morethan~0 then choice name(Sacrifice cards) name(Sacrifice cards) name(Sacrifice cards) name(Sacrifice cards) activate castcard(alternative named!:annihilation rooms:!)])) oneshot!$ controller +autocommandzone=@counteradded(0/0,1,Explore) from(Tomb of Annihilation|mycommandzone) restriction{compare(hascntexplore)~equalto~3,compare(hascntoubliette)~equalto~0}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Sandfall Cell) name(Sandfall Cell) transforms((,newability[choice name(Loose 2 life) life:-2 controller],newability[if type(artifact|mybattlefield)~morethan~0 then if type(creature|mybattlefield)~morethan~0 then if type(land|mybattlefield)~morethan~0 then choice name(Sacrifice cards) name(Sacrifice cards) name(Sacrifice cards) name(Sacrifice cards) activate castcard(alternative named!:annihilation rooms:!)])) oneshot!$ opponent +autocommandzone=@counteradded(0/0,1,Explore) from(Tomb of Annihilation|mycommandzone) restriction{compare(hascntexplore)~equalto~3,compare(hascntoubliette)~equalto~1}:choice name(Dungeon completed) all(Tomb of Annihilation|mycommandzone) completedungeon:1 controller +autocommandzone=@counteradded(0/0,1,Explore) from(Tomb of Annihilation|mycommandzone) restriction{compare(hascntexplore)~equalto~3,compare(hascntoubliette)~equalto~1}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Cradle of the Death God) name(Cradle of the Death God) token(The Atropal,Legendary Creature God Horror,4/4,black,deathtouch)!$ controller +autocommandzone=@counteradded(0/0,1,Explore) from(Tomb of Annihilation|mycommandzone) restriction{compare(hascntexplore)~equalto~4}:choice name(Dungeon completed) all(Tomb of Annihilation|mycommandzone) completedungeon:1 controller +autocommandzone=@counteradded(0/0,1,Explore) from(Tomb of Annihilation|mycommandzone) restriction{compare(hascntexplore)~equalto~4}:thisforeach(variable{type:*[twodngtrg]:myBattlefieldplus1plusend}) ability$!name(Cradle of the Death God) name(Cradle of the Death God) token(The Atropal,Legendary Creature God Horror,4/4,black,deathtouch)!$ controller +text=Trapped Entry — Each player loses 1 life. -- Veils of Fear — Each player loses 2 life unless they discard a card. -- Sandfall Cell — Each player loses 2 life unless they sacrifice an artifact, a creature, or a land. -- Oubliette — Discard a card and sacrifice an artifact, a creature, and a land. -- Cradle of the Death God — Create The Atropal, a legendary 4/4 black God Horror creature token with deathtouch. +type=Dungeon +[/card] +[card] name=Tomb of the Dusk Rose auto={T}:add{W} auto={T}:add{G} @@ -61588,7 +65085,7 @@ toughness=3 [card] name=Toothy, Imaginary Friend abilities=partner -auto=may moveto(myhand) notatarget(pir^ imaginative rascal|mylibrary) +auto=may name(Put partner in hand) moveto(myhand) target(pir^ imaginative rascal|mylibrary) auto=@drawof(player):counter(1/1) auto=@movedTo(this|nonbattlezone) from(myBattlefield):thisforeach(counter{1/1,1}) draw:1 controller text=Partner with Pir, Imaginative Rascal (When this creature enters the battlefield, target player may put Pir into their hand from their library, then shuffle.) -- Whenever you draw a card, put a +1/+1 counter on Toothy, Imaginary Friend. -- When Toothy leaves the battlefield, draw a card for each +1/+1 counter on it. @@ -61741,7 +65238,7 @@ otherrestriction=can play sorcery,compare(isflipped)~equalto~1 restriction=compare(isflipped)~equalto~0 anyzone={0}:doubleside(Flamethrower Sonata) autostack=if paid(alternative) then transforms((,newability[moveto(mygraveyard)],newability[activate castcard(named!:flamethrower sonata:!)])) forever -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=@targeted(this) from(*|opponentzones):choice name(This spell costs 2 more) name(This spell costs 2 more) target(*|opponentzones) transforms((,newability[pay[[{2}]] name(pay 2 mana) donothing?fizzle])) oneshot auto=if type(*[instant;sorcery:manacost=0]|mygraveyard)~morethan~0 then choice name(Exile instant or sorcery with manacost 0) name(Exile instant or sorcery with manacost 0) target(*[instant;sorcery;manacost=0]|mygraveyard) moveto(myexile) auto=if type(*[instant;sorcery:manacost=1]|mygraveyard)~morethan~0 then choice name(Exile instant or sorcery with manacost 1) name(Exile instant or sorcery with manacost 1) target(*[instant;sorcery;manacost=1]|mygraveyard) moveto(myexile) and!( all(this) counter(1/1) )! auto=if type(*[instant;sorcery:manacost=2]|mygraveyard)~morethan~0 then choice name(Exile instant or sorcery with manacost 2) name(Exile instant or sorcery with manacost 2) target(*[instant;sorcery;manacost=2]|mygraveyard) moveto(myexile) and!( all(this) counter(1/1) )! @@ -62058,6 +65555,34 @@ type=Enchantment subtype=Aura [/card] [card] +name=Treasure Chest +auto={4}:name(Roll a d20) rolld20 20 winability donothing winabilityend rolld20end +auto=@dierolled(this) from(controller):all(this) sacrifice +auto=@dierolled(this) result(1) from(controller):name(Loose life) life:-3 controller +auto=@dierolled(this) result(2) from(controller):name(Create treasure) token(Treasure Sur)*5 +auto=@dierolled(this) result(3) from(controller):name(Create treasure) token(Treasure Sur)*5 +auto=@dierolled(this) result(4) from(controller):name(Create treasure) token(Treasure Sur)*5 +auto=@dierolled(this) result(5) from(controller):name(Create treasure) token(Treasure Sur)*5 +auto=@dierolled(this) result(6) from(controller):name(Create treasure) token(Treasure Sur)*5 +auto=@dierolled(this) result(7) from(controller):name(Create treasure) token(Treasure Sur)*5 +auto=@dierolled(this) result(8) from(controller):name(Create treasure) token(Treasure Sur)*5 +auto=@dierolled(this) result(9) from(controller):name(Create treasure) token(Treasure Sur)*5 +auto=@dierolled(this) result(10) from(controller):name(Gain life and draw) life:3 controller && draw:3 controller +auto=@dierolled(this) result(11) from(controller):name(Gain life and draw) life:3 controller && draw:3 controller +auto=@dierolled(this) result(12) from(controller):name(Gain life and draw) life:3 controller && draw:3 controller +auto=@dierolled(this) result(13) from(controller):name(Gain life and draw) life:3 controller && draw:3 controller +auto=@dierolled(this) result(14) from(controller):name(Gain life and draw) life:3 controller && draw:3 controller +auto=@dierolled(this) result(15) from(controller):name(Gain life and draw) life:3 controller && draw:3 controller +auto=@dierolled(this) result(16) from(controller):name(Gain life and draw) life:3 controller && draw:3 controller +auto=@dierolled(this) result(17) from(controller):name(Gain life and draw) life:3 controller && draw:3 controller +auto=@dierolled(this) result(18) from(controller):name(Gain life and draw) life:3 controller && draw:3 controller +auto=@dierolled(this) result(19) from(controller):name(Gain life and draw) life:3 controller && draw:3 controller +auto=@dierolled(this) result(20) from(controller):name(Search Library) target(*|mylibrary) transforms((,newability[if cantargetcard(*[-artifact]|*) then moveto(myhand)],newability[if cantargetcard(*[artifact]|*) then choice name(Put on battlefield) name(Put on battlefield) moveto(mybattlefield)],newability[if cantargetcard(*[artifact]|*) then choice name(Put in hand) name(Put in hand) moveto(myhand)])) oneshot +text={4}, Sacrifice Treasure Chest: Roll a d20. -- 1 | Trapped! — You lose 3 life. -- 2-9 | Create five Treasure tokens. -- 10-19 | You gain 3 life and draw three cards. -- 20 | Search your library for a card. If it’s an artifact card you may put it onto the battlefield. Otherwise, put that card into your hand. Then shuffle. +mana={3} +type=Artifact +[/card] +[card] name=Treasure Cove auto={T}:Add{1} auto={T}{S(artifact[-creature&token]|myBattlefield)}:draw:1 controller @@ -62114,6 +65639,13 @@ text={T}, Sacrifice this artifact: Add one mana of any color. type=Artifact Treasure [/card] [card] +name=Treasure Vault +auto={T}:Add{C} +auto={X}{X}{T}{S}:name(Create treasures) token(Treasure Sur)*xx +text={T}: Add {C}. -- {X}{X}, {T}, Sacrifice Treasure Vault: Create X Treasure tokens. +type=Artifact Land +[/card] +[card] name=TreasureArtifactToken auto={T}{S}:add{W} auto={T}{S}:add{U} @@ -62166,6 +65698,16 @@ power=2 toughness=2 [/card] [card] +name=Trelasarra, Moon Dancer +auto=@lifeof(player) from(*[-lifefaker]|*):counter(1/1) && scry:1 scrycore delayed dontshow donothing scrycoreend scryend +text=Whenever you gain life, put a +1/+1 counter on Trelasarra, Moon Dancer and scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) +mana={G}{W} +type=Legendary Creature +subtype=Elf Cleric +power=2 +toughness=2 +[/card] +[card] name=Trench Behemoth auto={H(land|mybattlefield)}:name(Untap and gain hexproof) name(Untap and gain hexproof) transforms((,newability[untap],newability[opponentshroud])) ueot auto=@movedTo(land|myBattlefield):name(Target creature must attack) name(Target creature must attack) target(creature|opponentbattlefield) transforms((,newability[mustattack])) uynt @@ -62247,6 +65789,16 @@ power=2 toughness=2 [/card] [card] +name=Trickster's Talisman +auto={2}:equip +auto=teach(creature) 1/1 +auto=teach(creature) transforms((,newability[@combatdamaged(player) from(this):may name(Sacrifice Talisman and copy) clone and!( target("Talisman of the Trickster"[attached]|mybattlefield) sacrifice )!])) +text=Equipped creature gets +1/+1 and has "Whenever this creature deals combat damage to a player, you may sacrifice "Talisman of the Trickster". If you do, create a token that’s a copy of this creature." -- Equip {2} +mana={U} +type=Artifact +subtype=Equipment +[/card] +[card] name=Trinisphere auto=this(untapped) lord(*[-land]|hand,library,exile,graveyard) trinisphere forcedalive text=As long as Trinisphere is untapped, each spell that would cost less than three mana to cast costs three mana to cast. (Additional mana in the cost may be paid with any color of mana or colorless mana. For example, a spell that would cost {1}{B} to cast costs {2}{B} to cast instead.) @@ -62290,6 +65842,18 @@ type=Enchantment subtype=Saga [/card] [card] +name=Triumphant Adventurer +abilities=deathtouch +auto=this(variable{controllerturn}>0) first strike +auto=@combat(attacking) source(this) restriction{compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0}:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=Deathtouch -- As long as it’s your turn, Triumphant Adventurer has first strike. -- Whenever Triumphant Adventurer attacks, venture into the dungeon. (Enter the first room or advance to the next room.) +mana={W}{B} +type=Creature +subtype=Human Knight +power=1 +toughness=1 +[/card] +[card] name=Triumphant Reckoning auto=moveTo(mybattlefield) all(enchantment|mygraveyard) auto=moveTo(mybattlefield) all(artifact|mygraveyard) @@ -62361,7 +65925,7 @@ type=Enchantment [/card] [card] name=Trudge Garden -auto=@lifeof(player) from(*[-lifefaker]):pay({2}) token(Fungus Beast,Creature Fungus Beast,4/4,trample,green) +auto=@lifeof(player) from(*[-lifefaker]|*):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 @@ -62376,6 +65940,15 @@ mana={2}{W}{W} type=Instant [/card] [card] +name=True Polymorph +target=artifact,creature +auto=counter(0/0.1.PolymorphEffect) +auto=name(Choose the card to transform) target(other *[creature;artifact]|battlefield) transforms((,newability[all(*[counter{0/0.1.PolymorphEffect}]|battlefield) copy],newability[all(*[counter{0/0.1.PolymorphEffect}]|battlefield) removeallcounters(0/0.1.PolymorphEffect)])) forever +text=Target artifact or creature becomes a copy of another target artifact or creature. +mana={4}{U}{U} +type=Instant +[/card] +[card] name=True-Name Nemesis auto=name(choose opponent) notatarget(opponent) deplete:0 auto=protection from(*) @@ -62505,8 +66078,7 @@ toughness=3 [card] name=Trynn, Champion of Freedom abilities=hiddenface,partner -aicode=activate moveTo(myhand) target(Silvar^ Devourer of the Free|mylibrary) -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Silvar^ Devourer of the Free|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Silvar^ Devourer of the Free|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend +aicode=may name(Put partner in hand) moveTo(myhand) target(Silvar^ Devourer of the Free|mylibrary) auto=@each my endofturn:if raid then token(Soldier Try) text=Partner with Silvar, Devourer of the Free (When this creature enters the battlefield, target player may put Silvar into their hand from their library, then shuffle.) -- At the beginning of your end step, if you attacked this turn, create a 1/1 white Human Soldier creature token. mana={3}{W} @@ -62758,7 +66330,7 @@ toughness=4 [/card] [card] name=Twinblade Paladin -auto=@lifeof(player) from(*[-lifefaker]):counter(1/1) +auto=@lifeof(player) from(*[-lifefaker]|*):counter(1/1) auto=this(controllerlife > 24) double strike text=Whenever you gain life, put a +1/+1 counter on Twinblade Paladin. -- As long as you have 25 or more life, Twinblade Paladin has double strike. (It deals both first-strike and regular combat damage.) mana={3}{W} @@ -62950,8 +66522,7 @@ toughness=0 [card] name=Ukkima, Stalking Shadow abilities=hiddenface,unblockable,partner -aicode=activate moveTo(myhand) target(Cazur^ Ruthless Stalker|mylibrary) -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(Cazur^ Ruthless Stalker|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(Cazur^ Ruthless Stalker|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend +auto=may name(Put partner in hand) moveTo(myhand) target(Cazur^ Ruthless Stalker|mylibrary) auto=@movedto(this|nonbattlezone):damage:storedpower target(opponent) && life:storedpower controller text=Partner with Cazur, Ruthless Stalker (When this creature enters the battlefield, target player may put Cazur into their hand from their library, then shuffle.) -- Ukkima, Stalking Shadow can’t be blocked. -- When Ukkima leaves the battlefield, it deals X damage to target player and you gain X life, where X is its power. mana={1}{U}{B} @@ -63165,6 +66736,23 @@ mana={2}{B} type=Instant [/card] [card] +name=Underdark Basilisk +abilities=deathtouch +text=Deathtouch +mana={1}{G} +type=Creature +subtype=Basilisk +power=1 +toughness=2 +[/card] +[card] +name=Underdark Rift +auto={T}:add{C} +auto={5}{T}{E}:name(Roll a d10) transforms((,newability[@dierolled(this|myexile) result(1) from(controller) once:name(Put in library) target(*[creature;planeswalkers;artifact]|battlefield) placefromthetop(2)],newability[@dierolled(this|myexile) result(2) from(controller) once:name(Put in library) target(*[creature;planeswalkers;artifact]|battlefield) placefromthetop(3)],newability[@dierolled(this|myexile) result(3) from(controller) once:name(Put in library) target(*[creature;planeswalkers;artifact]|battlefield) placefromthetop(4)],newability[@dierolled(this|myexile) result(4) from(controller) once:name(Put in library) target(*[creature;planeswalkers;artifact]|battlefield) placefromthetop(5)],newability[@dierolled(this|myexile) result(5) from(controller) once:name(Put in library) target(*[creature;planeswalkers;artifact]|battlefield) placefromthetop(6)],newability[@dierolled(this|myexile) result(6) from(controller) once:name(Put in library) target(*[creature;planeswalkers;artifact]|battlefield) placefromthetop(7)],newability[@dierolled(this|myexile) result(7) from(controller) once:name(Put in library) target(*[creature;planeswalkers;artifact]|battlefield) placefromthetop(8)],newability[@dierolled(this|myexile) result(8) from(controller) once:name(Put in library) target(*[creature;planeswalkers;artifact]|battlefield) placefromthetop(9)],newability[@dierolled(this|myexile) result(1) from(controller) once:name(Put in library) target(*[creature;planeswalkers;artifact]|battlefield) placefromthetop(10)],newability[@dierolled(this|myexile) result(10) from(controller) once:name(Put in library) target(*[creature;planeswalkers;artifact]|battlefield) placefromthetop(11)],newability[rolld10 10 winability donothing winabilityend rolld10end])) ueot asSorcery +text={T}: Add {C}. -- {5}, {T}, Exile Underdark Rift: Roll a d10. Put a target artifact, creature, or planeswalker into its owner’s library just beneath the top X cards of that library, where X is the result. Activate only as a sorcery. +type=Land +[/card] +[card] name=Undergrowth Stadium auto=tap(noevent) auto={T}:add{G} @@ -63304,6 +66892,14 @@ mana={2}{G}{U} type=Sorcery [/card] [card] +name=Unexpected Windfall +auto=draw:2 controller +auto=token(Treasure Sur)*2 +text=As an additional cost to cast this spell, discard a card. -- Draw two cards and create two Treasure tokens. (They’re artifacts with "{T}, Sacrifice this artifact: Add one mana of any color.") +mana={2}{R}{R}{D(*|myhand)} +type=Instant +[/card] +[card] name=Unexpectedly Absent target=*[-land] auto=placefromthetop(fullpaidplus1plusend) @@ -63674,7 +67270,7 @@ subtype=Urza's Saga [/card] [card] name=Urza's Science Fair Project -auto={2}:all(this) rolladie 6 winability counter(0/0,1,UrzaEffect) winabilityend loseability counter(0/0,1,UrzaEffect) loseabilityend rollend +auto={2}:all(this) rolld6 6 winability counter(0/0,1,UrzaEffect) winabilityend loseability counter(0/0,1,UrzaEffect) loseabilityend rolld6end auto=@dierolled(this) result(1) from(controller):this(counter{0/0.1.UrzaEffect}=1) name(Gets -2/-2) name(Gets -2/-2) all(this) transforms((,newability[-2/-2],newability[counter(0/0.-1.UrzaEffect)])) ueot auto=@dierolled(this) result(2) from(controller):this(counter{0/0.1.UrzaEffect}=1) name(It deals no combat damage) name(It deals no combat damage) all(this) transforms((,newability[preventAllCombatDamage from(this)],newability[counter(0/0.-1.UrzaEffect)])) ueot auto=@dierolled(this) result(3) from(controller):this(counter{0/0.1.UrzaEffect}=1) name(Gains vigilance) name(Gains vigilance) all(this) transforms((,newability[vigilance],newability[counter(0/0.-1.UrzaEffect)])) ueot @@ -63721,7 +67317,7 @@ toughness=1 [/card] [card] name=Utility Knife -auto=rehook target(creature|myBattlefield) +auto=aslongas(parents) name(Attach to creature) rehook target(creature|myBattlefield) <1 auto=teach(creature) 1/1 auto={3}:equip text=When Utility Knife enters the battlefield, attach it to target creature you control. -- Equipped creature gets +1/+1. -- Equip {3} ({3}: Attach to target creature you control. Equip only as a sorcery.) @@ -63856,6 +67452,14 @@ power=1 toughness=1 [/card] [card] +name=Valiant Endeavor +auto=name(Roll a d6) all(*[zpos=1]|mylibrary) transforms((,newability[@dierolled(*|mylibrary) from(controller) once:all(creature[power>=lastrollresult]|battlefield) destroy],newability[name(Roll a d6) rolld6 6 winability donothing winabilityend rolld6end])) oneshot +auto=name(Roll a d6) rolld6 6 winability token(Knight,Creature Knight,2/2,white,vigilance)*lastrollresult winabilityend loseability token(Knight,Creature Knight,2/2,white,vigilance)*lastrollresult loseabilityend rolld6end +text=Roll two d6 and choose on result. Destroy each creature with power greater than or equal to that result. Then create a number of 2/2 white Knight creature tokens with vigilance equal to the other result. +mana={4}{W}{W} +type=Sorcery +[/card] +[card] name=Valiant Knight auto=lord(other knight|myBattlefield) +1/+1 auto={3}{W}{W}:all(knights|myBattlefield)) double strike ueot @@ -63885,9 +67489,10 @@ otherrestriction=can play planeswalker,compare(isflipped)~equalto~1 restriction=compare(isflipped)~equalto~0 anyzone={0}:doubleside(Tibalt, Cosmic Impostor) autostack=if paid(alternative) then flip(Tibalt, Cosmic Impostor) forcetype(Legendary Planeswalker) -auto=ifnot paid(alternative) then if type(creature|opponenthand)~morethan~0 then name(Reveal hand and exile creature) name(Reveal hand and exile creature) name(Reveal hand and exile creature) target(creature|opponenthand) imprint and!( all(this) transforms((,newability[@movedto(this|nonbattlezone) from(battlefield):name(Put back exiled creature) target(creature[evictname]|opponentexile) moveTo(opponenthand)])) oneshot )! +auto=ifnot paid(alternative) then if type(creature|opponenthand)~morethan~0 then name(Reveal hand and exile creature) name(Reveal hand and exile creature) name(Reveal hand and exile creature) target(creature|opponenthand) imprint auto=ifnot paid(alternative) then if type(creature|opponenthand)~equalto~0 then name(Reveal hand) name(Reveal hand) name(Reveal hand) target(*|opponenthand) moveto(opponenthand) auto=if paid(alternative) then counter(0/0,5,Loyalty) +auto=this(variable{hasevict}>0) this(variable{iscopied}<1) transforms((,newability[@movedto(this|nonbattlezone) from(battlefield):name(Put back exiled creature) target(creature[evictname]|opponentexile) moveTo(opponenthand)])) auto=this(variable{hasevict}>0) this(variable{evictmc}=0) this(variable{iscopied}<1) {0}:name(Becomes copy of exiled creature) copy target(creature[evictname]|opponentexile) auto=this(variable{hasevict}>0) this(variable{evictmc}=1) this(variable{iscopied}<1) {1}:name(Becomes copy of exiled creature) copy target(creature[evictname]|opponentexile) auto=this(variable{hasevict}>0) this(variable{evictmc}=2) this(variable{iscopied}<1) {2}:name(Becomes copy of exiled creature) copy target(creature[evictname]|opponentexile) @@ -63947,6 +67552,16 @@ type=Artifact subttype=Equipment [/card] [card] +name=Valor Singer +auto=@each my combatbegins:name(Creature gets 1/0) target(creature|myBattlefield) 1/0 ueot +text=Combat Inspiration — At the beginning of combat on your turn, target creature you control gets +1/+0 until end of turn. +mana={2}{R} +type=Creature +subtype=Tiefling Bard +power=2 +toughness=3 +[/card] +[card] name=Valor of the Worthy target=creature auto=teach(creature) 1/1 @@ -64031,6 +67646,16 @@ power=3 toughness=4 [/card] [card] +name=Vampire Spawn +auto=name(Gain life) life:2 controller && life:-2 opponent +text=When Vampire Spawn enters the battlefield, each opponent loses 2 life and you gain 2 life. +mana={2}{B} +type=Creature +subtype=Vampire +power=2 +toughness=3 +[/card] +[card] name=Vampire of the Dire Moon abilities=deathtouch,lifelink text=Deathtouch (Any amount of damage this deals to a creature is enough to destroy it.) -- Lifelink (Damage dealt by this creature also causes you to gain that much life.) @@ -64149,6 +67774,19 @@ power=4 toughness=4 [/card] [card] +name=Varis, Silverymoon Ranger +abilities=reach +auto=@targeted(this) from(*|opponentzones):choice name(This spell costs 1 more) name(This spell costs 1 more) target(*|opponentzones) transforms((,newability[pay[[{1}]] name(pay 1 mana) donothing?fizzle])) oneshot +auto=@movedTo(*[creature;planeswalker]|mystack) restriction{compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0} turnlimited:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +auto=@dungeoncompleted(*[dungeon]|mysideboard) from(controller):name(Create wolf) token(Wolf,Creature Wolf,2/2,green) +text=Reach, ward {1} -- Whenever you cast a creature or planeswalker spell, venture into the dungeon. This ability triggers only once each turn. (Enter the first room or advance to the next room.) -- Whenever you complete a dungeon, create a 2/2 green Wolf creature token. +mana={1}{G}{G} +type=Legendary Creature +subtype=Human Elf Ranger +power=3 +toughness=3 +[/card] +[card] name=Varragoth, Bloodsky Sire abilities=boast,deathtouch auto={1}{B} restriction{didattack,compare(hascntbstreduce)~equalto~0}:doboast && target(player) ability$!name(Search a card) name(Search a card) target(*|mylibrary) moveto(myreveal) and!( moveto(mylibrary) and!( shuffle )! )! !$ opponent limit:hasabilitytwoboastplus1plusend @@ -64217,6 +67855,19 @@ text=Vault of Champions enters the battlefield tapped unless you have two or mor type=Land [/card] [card] +name=Vecna +abilities=indestructible +auto=@each my end restriction{compare(lifelost)~morethan~1}:name(Create zombie) token(Zombie) +auto=@each my upkeep:name(Pay 2 to draw) pay[[{2}]] name(Pay 2) draw:1 controller && life:-2 controller +auto=@each my combatbegins restriction{compare(phandcount)~morethan~0}:phandcount/phandcount ueot +text=At the beginning of your end step, if you lost 2 or more life this turn, create a 2/2 black Zombie creature token. -- At the beginning of your upkeep, you may pay {2}. If you do, you draw a card and you lose 2 life. -- At the beginning of combat on your turn, Vecna gets +X/+X until end of turn, where X is the number of cards in your hand. +type=Legendary Creature +subtype=Zombie God +power=8 +toughness=8 +color=black +[/card] +[card] name=Vectis Gloves auto={2}:equip auto=teach(creature) 2/0 @@ -64359,7 +68010,7 @@ toughness=2 [card] name=Veinwitch Coven abilities=menace -auto=@lifeof(player) from(*[-lifefaker]):pay({B}) target(creature|mygraveyard) moveto(myhand) +auto=@lifeof(player) from(*[-lifefaker]|*):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 @@ -64434,6 +68085,19 @@ power=4 toughness=4 [/card] [card] +name=Vengeful Ancestor +abilities=flying +auto=name(Goad creature) target(creature|battlefield) transforms((,newability[mustattack])) uynt +auto=@combat(attacking) source(this):name(Goad creature) target(creature|battlefield) transforms((,newability[mustattack],newability[@combat(attacking) source(this):damage:1 controller])) uynt +auto=lord(creature[mustattack]|battlefield) transforms((,newability[@combat(attacking) source(this):damage:1 controller])) oneshot +text=Flying -- When Vengeful Ancestor enters the battlefield or attacks, goad target creature. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.) -- Whenever a goaded creature attacks, it deals 1 damage to its controller. +mana={2}{R}{R} +type=Creature +subtype=Spirit Dragon +power=3 +toughness=4 +[/card] +[card] name=Vengeful Devil abilities=haste auto={T}:damage:1 target(player,creature,planeswalker) restriction{morbid} @@ -64667,7 +68331,7 @@ toughness=5 [card] name=Verge Rangers abilities=showfromtoplibrary,first strike -auto=restriction{type(land|opponentBattlefield)~morethan~type(land|myBattlefield)}:canplaylandlibrarytop +auto=this(variable{type:land:opponentbattlefieldminustype:land:mybattlefieldplusend}>0) canplaylandlibrarytop text=First strike -- You may look at the top card of your library any time. -- As long as an opponent controls more lands than you, you may play lands from the top of your library. (You can play a land this way only if you have an available land play remaining.) mana={2}{W} type=Creature @@ -64743,6 +68407,16 @@ power=5 toughness=5 [/card] [card] +name=Veteran Dungeoneer +auto=if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=When Veteran Dungeoneer enters the battlefield, venture into the dungeon. (Enter the first room or advance to the next room.) +mana={3}{W} +type=Creature +subtype=Human Warrior +power=3 +toughness=4 +[/card] +[card] name=Vexing Devil auto=ability$!choice name(Do nothing) donothing _ choice name(Damage and sacrifice) damage:4 controller && sacrifice notatarget(Vexing Devil|opponentbattlefield)!$ opponent text=When Vexing Devil enters the battlefield, any opponent may have it deal 4 damage to him or her. If a player does, sacrifice Vexing Devil. @@ -65106,7 +68780,7 @@ type=Sorcery [card] name=Virtus the Veiled abilities=deathtouch,partner -auto=may moveto(myhand) notatarget(gorm the great|mylibrary) +auto=may name(Put partner in hand) moveto(myhand) target(gorm the great|mylibrary) auto=@combatdamaged(player) from(this):life:-halfdownopponentlifetotal opponent text=Partner with Gorm the Great (When this creature enters the battlefield, target player may put Gorm into their hand from their library, then shuffle.) -- Deathtouch -- Whenever Virtus the Veiled deals combat damage to a player, that player loses half their life, rounded up. mana={2}{B} @@ -65145,8 +68819,8 @@ type=Artifact [card] name=Visions target=player -aicode=activate moveto(targetedpersonshand) target(*|targetedpersonslibrary) -auto=name(Look 5 cards) reveal:5 revealzone(targetedpersonslibrary) optionone name(Look cards) target(<5>*|reveal) moveto(ownerhand) optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(may shuffle)! )! optiontwoend revealend +aicode=activate all(*[zpos<=5]|targetedpersonslibrary) bottomoflibrary and!( shuffle targetedplayer )! +auto=name(Look 5 cards) reveal:5 revealzone(targetedpersonslibrary) optionone name(Look cards) target(*|reveal) moveto(ownerlibrary) optiononeend optiontwo name(Put back) all(*|reveal) moveto(ownerlibrary) optiontwoend afterrevealed may name(Shuffle library) shuffle targetedplayer afterrevealedend revealend text=Look at the top five cards of target player's library. You may then have that player shuffle that library. mana={W} type=Sorcery @@ -65284,8 +68958,7 @@ toughness=3 [/card] [card] name=Vizier of the Menagerie -abilities=showfromtoplibrary -auto=canplaycreaturelibrarytop +abilities=showfromtoplibrary,canplaycreaturelibrarytop auto=lord(creature|mycastingzone) anytypeofmana text=You may look at the top card of your library. (You may do this at any time.) -- You may cast the top card of your library if it's a creature card. -- You may spend mana as though it were mana of any type to cast creature spells. mana={3}{G} @@ -65452,6 +69125,16 @@ mana={8}{R} type=Sorcery [/card] [card] +name=Volo, Guide to Monsters +auto=@movedto(creature|mystack):name(Check if share types) all(trigger[to]) transforms((,newability[if type(*[creature;share!types!]|myBattlefield)~equalto~0 then if type(*[creature;share!types!]|mygraveyard)~equalto~0 then clone])) ueot +text=Whenever you cast a creature spell that doesn’t share a creature type with a creature you control or a creature card in your graveyard, copy that spell. (A copy of a creature spell becomes a token.) +mana={2}{G}{U} +type=Legendary Creature +subtype=Human Wizard +power=3 +toughness=2 +[/card] +[card] name=Volrath's Dungeon auto={L:5}:sacrifice myturnonly auto=@each opponent upkeep:ability$!name(Pay 5 life) pay[[{L:5}]] name(Pay 5 life) sacrifice notatarget(Volrath's Dungeon|opponentBattlefield)?donothing!$ opponent @@ -65598,6 +69281,17 @@ power=6 toughness=6 [/card] [card] +name=Vorpal Sword +auto={B}{B}:equip +auto=teach(creature) 2/0 +auto=teach(creature) deathtouch +auto={5}{B}{B}{B}:name(Damaged player loses game) all(this) transforms((,newability[@combatdamageof(player) from(mytgt):wingame opponent],newability[@combatdamagefoeof(player) from(mytgt):wingame controller])) ueot +text=Equipped creature gets +2/+0 and has deathtouch. -- {5}{B}{B}{B}: Until end of turn, Vorpal Sword gains "Whenever equipped creature deals combat damage to a player, that player loses the game." -- Equip {B}{B} +mana={B} +type=Artifact +subtype=Equipment +[/card] +[card] name=Vortex Runner auto=aslongas(land|mybattlefield) 1/0 >7 auto=aslongas(land|mybattlefield) unblockable >7 @@ -65667,6 +69361,17 @@ mana={4}{B}{G} type=Sorcery [/card] [card] +name=Vrondiss, Rage of Ancients +auto=@damaged(this):may name(Create Dragon) token(Dragon Spirit,Creature Dragon Spirit,5/4,red,green) and!( transforms((,newability[@damaged(creature) from(this):all(this) sacrifice],newability[@damaged(player) from(this):all(this) sacrifice])) forever )! +auto=@dierolled(*|battlefield) from(controller):may name(Deal 1 damage) damage:1 all(this) +text=Enrage — Whenever Vrondiss, Rage of Ancients is dealt damage, you may create a 5/4 red and green Dragon Spirit creature token with "When this creature deals damage, sacrifice it." -- Whenever you roll one or more dice, you may have Vrondiss, Rage of Ancients deal 1 damage to itself. +mana={3}{R}{G} +type=Legendary Creature +subtype=Dragon Barbarian +power=5 +toughness=4 +[/card] +[card] name=Vulpikeet abilities=flying,mutate otherrestriction=type(creature[-human]|mybattlefield)~morethan~0 @@ -65844,6 +69549,17 @@ toughness=4 color=colorless [/card] [card] +name=Wand of Orcus +auto={3}:equip +auto=@damaged(player) from(mytgt):name(Create zombies) token(Zombie Lil)*thatmuch +auto=@combat(attacking,blocking) source(mytgt):name(All zombies gain deathtouch) all(zombie|mybattlefield) transforms((,newability[deathtouch])) ueot +auto=teach(creature) transforms((,newability[@combat(attacking) source(this):name(Equipped creature gains deathtouch) deathtouch ueot],newability[@combat(blocking) source(this):name(Equipped creature gains deathtouch) deathtouch ueot])) +text=Whenever equipped creature attacks or blocks, it and Zombies you control gain deathtouch until end of turn. -- Whenever equipped creature deals combat damage to a player, create that many 2/2 black Zombie creature tokens. -- Equip {3} +mana={2}{B} +type=Legendary Artifact +subtype=Equipment +[/card] +[card] name=Wand of Vertebrae auto={T}:deplete:1 auto={2}{T}{E}:ability$!choice name(shuffle back) target(*|mygraveyard) moveTo(ownerlibrary) && shuffle!$ @@ -65865,7 +69581,7 @@ type=Sorcery name=Wanderer's Strike target=creature auto=moveto(exile) -auto=_PROLIFERATE_ +auto=name(Proliferate) NotATarget(*) duplicatecounters(single) text=Exile target creature, then proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) mana={4}{W} type=Sorcery @@ -65899,8 +69615,18 @@ power=1 toughness=3 [/card] [card] +name=Wandering Troubadour +auto=@each my endofturn restriction{thisturn(land|mybattlefield)~morethan~0,compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0}:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=At the beginning of your end step, if you had a land enter the battlefield under your control this turn, venture into the dungeon. (Enter the first room or advance to the next room.) +mana={3}{G} +type=Creature +subtype=Dragon Bard +power=4 +toughness=2 +[/card] +[card] name=Wandermare -auto=@movedto(creature[adventure]|myBattlefield):counter(1/1,1) +auto=@movedTo(creature[adventure]|myStack):all(trigger[to]) transforms((,newability[ifnot paid(alternative) then all(Wandermare|myBattlefield) counter(1/1)])) ueot text=Whenever you cast a creature spell that has an Adventure, put a +1/+1 counter on Wandermare. (It doesn't need to have gone on the adventure first.) mana={1}{G}{W} type=Creature @@ -65948,6 +69674,20 @@ power=1 toughness=3 [/card] [card] +name=War of the Spark +auto=counter(0/0,1,Lore) +auto=@each my firstmain:counter(0/0,1,Lore) +auto=ability$!name(Choose one) choice name(Don't put anything) donothing _ choice name(Put from hand) target(*[zombie;planeswalker]|myhand) moveTo(myBattlefield) _ choice name(Put from graveyard) target(*[zombie;planeswalker]|myGraveyard) moveTo(myBattlefield)!$ controller +auto=ability$!name(Choose one) choice name(Don't put anything) donothing _ choice name(Put from hand) target(*[zombie;planeswalker]|myhand) moveTo(myBattlefield) _ choice name(Put from graveyard) target(*[zombie;planeswalker]|myGraveyard) moveTo(myBattlefield)!$ opponent +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) target(*[creature;planeswalker]|myBattlefield) transforms((,newability[sacrifice],newability[ability$!name(Sacrifice creature or planeswalker) name(Sacrifice creature or planeswalker) notatarget(*[creature;planeswalker]|myBattlefield) sacrifice!$ opponent])) oneshot +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) target(*[Bolas]|battlefield) moveTo(exile) and!( transforms((,newability[notatarget(*) transforms((,newability[duplicatecounters(single)],newability[duplicatecounters(single)],newability[duplicatecounters(single)])) oneshot])) oneshot +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) sacrifice(this) +text=(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.) -- I — Each player may put a planeswalker or Zombie card from War of the Spark from their hand or graveyard onto the battlefield. -- II — Sacrifice any number of creatures and/or planeswalkers. Each opponent sacrifices that many creatures and/or planeswalkers. -- III — Exile up to one target Bolas. Proliferate three times. +mana={3}{B} +type=Enchantment +subtype=Saga +[/card] +[card] name=Warbriar Blessing target=creature|myBattlefield auto=name(fight) transforms((,newability[dynamicability target(creature|opponentbattlefield)])) @@ -66054,6 +69794,20 @@ power=2 toughness=1 [/card] [card] +name=Warlock Class +auto=counter(0/0,1,Level) +aicode=activate transforms((,newability[target(*[zpos<=3]|mylibrary) moveto(myhand) and!( all(*[zpos<=3]|mylibrary) moveTo(mygraveyard) )!])) oneshot +auto=@each my endofturn restriction{morbid}:name(Opponent looses life) life:-1 opponent +auto=this(variable{hascntlevel}=1) {1}{B}:name(Level 2) counter(0/0,1,Level) asSorcery +auto=@counteradded(0/0.1.Level) restriction{compare(hascntlevel)~equalto~2}:name(Look top 3) reveal:3 optionone name(Get a Card) target(*|reveal) moveto(myhand) optiononeend optiontwo name(put in grave) all(*|reveal) moveto(mygraveyard) optiontwoend revealend +auto=this(variable{hascntlevel}=2) {6}{B}:name(Level 3) counter(0/0,1,Level) asSorcery +auto=@each my endofturn restriction{compare(hascntlevel)~morethan~2}:name(Opponent looses life) damage:oplifelost opponent +text=(Gain the next level as a sorcery to add its ability.) -- At the beginning of your end step, if a creature died this turn, each opponent loses 1 life. -- {1}{B}: Level 2 -- When this Class becomes level 2, look at the top three cards of your library. Put one of them into your hand and the rest into your graveyard. -- {6}{B}: Level 3 -- At the beginning of your end step, each opponent loses life equal to the life they lost this turn. (Damage causes loss of life.) +mana={B} +type=Enchantment +subtype=Class +[/card] +[card] name=Warlord's Fury auto=all(creature|myBattlefield) first strike auto=draw:1 @@ -66237,7 +69991,7 @@ toughness=2 [card] name=Waterfall Aerialist abilities=flying -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=@targeted(this) from(*|opponentzones):choice name(This spell costs 2 more) name(This spell costs 2 more) target(*|opponentzones) transforms((,newability[pay[[{2}]] name(pay 2 mana) donothing?fizzle])) oneshot text=Flying -- Ward {2} (Whenever this creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {2}.) mana={3}{U} type=Creature @@ -66485,6 +70239,30 @@ mana={4} type=Artifact [/card] [card] +name=Werewolf Pack Leader +auto=@combat(attacking) source(this) restriction{compare(pwrtotatt)~morethan~5}:name(Draw a card) draw:1 controller +auto={3}{G}:name(Becomes 5/3) transforms((removecreaturesubtypes)) ueot && transforms((Werewolf,setpower=5,settoughness=3,newability[trample])) ueot +text=Pack tactics — Whenever Werewolf Pack Leader attacks, if you attacked with creatures with total power 6 or greater this combat, draw a card. -- {3}{G}: Until end of turn, Werewolf Pack Leader has base power and toughness 5/3, gains trample, and isn’t a Human. +mana={G}{G} +type=Creature +subtype=Human Werewolf +power=3 +toughness=3 +[/card] +[card] +name=Westgate Regent +abilities=flying +auto=@targeted(this) from(*|opponentzones) restriction{type(*|opponenthand)~equalto~0}:name(Counter spell) target(*|opponentzones) fizzle +auto=@targeted(this) from(*|opponentzones) restriction{type(*|opponenthand)~morethan~0}:choice name(Discard or counter) name(Discard or counter) target(*|opponentzones) transforms((,newability[pay[[{0}]] name(Discard a card) target(*|myhand) reject?fizzle])) oneshot +auto=@combatdamaged(player) from(this):name(Put 1/1 counters) counter(1/1,thatmuch) +text=Flying -- Ward — Discard a card. (Whenever this creature becomes the target of a spell or ability an opponent controls, counter it unless that player discards a card.) -- Whenever Westgate Regent deals combat damage to a player, put that many +1/+1 counters on it. +mana={3}{B}{B} +type=Creature +subtype=Vampire +power=4 +toughness=4 +[/card] +[card] name=Whale Reef auto=@movedTo(this|mygraveyard) from(myBattlefield):token(Kraken Reef) text=When this creature dies, put a 9/9 blue Kraken creature token onto the battlefield. @@ -66594,6 +70372,17 @@ type=Artifact subtype=Equipment [/card] [card] +name=White Dragon +abilities=flying +auto=name(Cold Breath) target(creature|opponentbattlefield) freeze +text=Flying -- Cold Breath — When White Dragon enters the battlefield, tap target creature an opponent controls. That creature doesn’t untap during its controller’s next untap step. +mana={4}{W}{W} +type=Creature +subtype=Dragon +power=4 +toughness=4 +[/card] +[card] name=Wicked Akuba auto=damaged(player) from(this):transforms((,newability[{B}:damage:1 opponent])) ueot text={B}: Target player dealt damage by Wicked Akuba this turn loses 1 life. @@ -66632,6 +70421,17 @@ mana={1}{B}{R}{R} type=Sorcery [/card] [card] +name=Wight +auto=tap(noevent) +auto=@vampired(creature) from(this):name(Create zombie and exile card) transforms((,newability[all(creature[zpos=type:*:opponentgraveyard]|opponentgraveyard) moveto(opponentexile)],newability[name(Create zombie) token(Zombie^Creature Zombie^2/2^black) and!( tap(noevent) )!])) forever +text=Wight enters the battlefield tapped. -- Life Drain — Whenever a creature dealt damage by Wight this turn dies, create a tapped 2/2 black Zombie creature token and exile that card. +mana={1}{B} +type=Creature +subtype=Zombie Soldier +power=3 +toughness=2 +[/card] +[card] name=Wild Ceratok mana={3}{G} type=Creature @@ -66650,6 +70450,14 @@ power=1 toughness=1 [/card] [card] +name=Wild Endeavor +auto=name(Roll a d4) all(*[zpos=1]|mylibrary) transforms((,newability[@dierolled(*|mylibrary) from(controller) once:target(land[basic]|mylibrary) moveTo(mybattlefield) and!( tap(noevent) )!],newability[name(Roll a d4) rolld4 4 winability donothing winabilityend rolld4end])) oneshot +auto=name(Roll a d4) rolld4 4 winability token(Beast,Creature Beast,3/3,green)*lastrollresult winabilityend loseability token(Beast,Creature Beast,3/3,green)*lastrollresult loseabilityend rolld4end +text=Roll two d4 and choose one result. Create a number of 3/3 green Beast creature tokens equal to that result. Then search your library for a number of basic land cards equal to the other result, put them onto the battlefield tapped, then shuffle. +mana={4}{G}{G} +type=Sorcery +[/card] +[card] name=Wild Might target=creature auto=1/1 ueot @@ -66668,6 +70476,16 @@ mana={3}{G} type=Instant [/card] [card] +name=Wild Shape +target=creature|mybattlefield +auto=choice name(Becomes Turtle) transforms((Turtle,setpower=1,settoughness=3,newability[hexproof])) ueot +auto=choice name(Becomes Spider) transforms((Spider,setpower=1,settoughness=5,newability[reach])) ueot +auto=choice name(Becomes Elephant) transforms((Elephant,setpower=3,settoughness=3,newability[trample])) ueot +text=Choose one. Until end of turn, target creature you control has that base power and toughness, becomes that creature type, and gains that ability. -- • 1/3 Turtle with hexproof. -- • 1/5 Spider with reach. -- • 3/3 Elephant with trample. +mana={G} +type=Instant +[/card] +[card] name=Wild Slash #MISSING:Damage can't be prevented is not supported ATM target=player,creature @@ -66677,6 +70495,16 @@ mana={R} type=Instant [/card] [card] +name=Wild-Magic Sorcerer +auto=@movedto(*|mystack) from(myexile) turnlimited:name(Gain cascade) all(trigger[to]) transforms((,newability[cascade:plibrarycount])) ueot +text=The first spell you cast from exile each turn has cascade. (When you cast your first spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom of your library in a random order.) +mana={3}{R} +type=Creature +subtype=Orc Shaman +power=4 +toughness=3 +[/card] +[card] name=Wildborn Preserver abilities=flash,reach auto=@movedTo(other creature[-human]|myBattlefield):name(Pay X and put X counter) may pay({x}) name(Pay X and put X counter) name(Pay X and put X counter) counter(1/1,X) all(this) @@ -66769,7 +70597,7 @@ type=Instant [card] name=Willing Test Subject abilities=reach -auto={6}:all(this) rolladie 6 winability donothing winabilityend loseability donothing loseabilityend rollend +auto={6}:all(this) rolld6 6 winability donothing winabilityend loseability donothing loseabilityend rolld6end auto=@dierolled(*|battlefield) result(4) from(controller):name(Get 1/1 counter) name(Get 1/1 counter) counter(1/1) all(this) auto=@dierolled(*|battlefield) result(5) from(controller):name(Get 1/1 counter) name(Get 1/1 counter) counter(1/1) all(this) auto=@dierolled(*|battlefield) result(6) from(controller):name(Get 1/1 counter) name(Get 1/1 counter) counter(1/1) all(this) @@ -66915,6 +70743,16 @@ power=3 toughness=3 [/card] [card] +name=Winged Boots +auto={1}:equip +auto=teach(creature) flying +auto=@targeted(mytgt) from(*|opponentzones):choice name(This spell costs 4 more) name(This spell costs 4 more) target(*|opponentzones) transforms((,newability[pay[[{4}]] name(pay 4 mana) donothing?fizzle])) oneshot +text=Equipped creature has flying and ward {4}. (Whenever equipped creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {4}.) -- Equip {1} +mana={1}{U} +type=Artifact +subtype=Equipment +[/card] +[card] name=Winged Shepherd abilities=flying,vigilance,cycling autohand=__CYCLING__({W}) @@ -67048,6 +70886,14 @@ power=2 toughness=* [/card] [card] +name=Wish +target=*[-dungeon]|mysideboard +auto=name(Can play this turn) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[phaseaction[my endofturn once checkex] moveto(mysideboard)])) ueot )! +text=You may play a card you own from outside the game this turn. +mana={2}{R} +type=Sorcery +[/card] +[card] name=Wishclaw Talisman auto=counter(0/0,3,wish) auto={1}{T}{C(0/0,-1,wish)}:name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(<1>*|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 && moveto(opponentBattlefield) myturnonly @@ -67217,6 +71063,18 @@ power=3 toughness=4 [/card] [card] +name=Wizard Class +abilities=nomaxhand +auto=counter(0/0,1,Level) +auto=this(variable{hascntlevel}=1) {2}{U}:name(Level 2) counter(0/0,1,Level) && draw:2 controller asSorcery +auto=this(variable{hascntlevel}=2) {4}{U}:name(Level 3) counter(0/0,1,Level) asSorcery +auto=@drawof(player) restriction{compare(hascntlevel)~equalto~3}:name(Put 1/1 counter) target(creature|myBattlefield) counter(1/1) +text=(Gain the next level as a sorcery to add its ability.) -- You have no maximum hand size. -- {2}{U}: Level 2 -- When this Class becomes level 2, draw two cards. -- {4}{U}: Level 3 -- Whenever you draw a card, put a +1/+1 counter on target creature you control. +mana={U} +type=Enchantment +subtype=Class +[/card] +[card] name=Wizard's Lightning target=player,creature,planeswalker auto=damage:3 @@ -67239,6 +71097,33 @@ mana={1}{U}{U} type=Instant [/card] [card] +name=Wizard's Spellbook +auto={T} restriction{compare(pginstantsorcery)~morethan~0}:name(Exile and roll d20) transforms((,newability[target(*[instant;sorcery]|mygraveyard) name(Exile instant or sorcery) moveto(myexile) and!( counter(0/0.1.SpellbookExiled) )!],newability[rolld20 20 winability donothing winabilityend rolld20end])) oneshot asSorcery +auto=@dierolled(this) result(1) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[gainedexiledeath],newability[canplayfromexile],newability[phaseaction[my endofturn once] counter(0/0.1.SpellbookExiled)])) ueot +auto=@dierolled(this) result(2) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[gainedexiledeath],newability[canplayfromexile],newability[phaseaction[my endofturn once] counter(0/0.1.SpellbookExiled)])) ueot +auto=@dierolled(this) result(3) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[gainedexiledeath],newability[canplayfromexile],newability[phaseaction[my endofturn once] counter(0/0.1.SpellbookExiled)])) ueot +auto=@dierolled(this) result(4) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[gainedexiledeath],newability[canplayfromexile],newability[phaseaction[my endofturn once] counter(0/0.1.SpellbookExiled)])) ueot +auto=@dierolled(this) result(5) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[gainedexiledeath],newability[canplayfromexile],newability[phaseaction[my endofturn once] counter(0/0.1.SpellbookExiled)])) ueot +auto=@dierolled(this) result(6) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[gainedexiledeath],newability[canplayfromexile],newability[phaseaction[my endofturn once] counter(0/0.1.SpellbookExiled)])) ueot +auto=@dierolled(this) result(7) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[gainedexiledeath],newability[canplayfromexile],newability[phaseaction[my endofturn once] counter(0/0.1.SpellbookExiled)])) ueot +auto=@dierolled(this) result(8) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[gainedexiledeath],newability[canplayfromexile],newability[phaseaction[my endofturn once] counter(0/0.1.SpellbookExiled)])) ueot +auto=@dierolled(this) result(9) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[gainedexiledeath],newability[canplayfromexile],newability[phaseaction[my endofturn once] counter(0/0.1.SpellbookExiled)])) ueot +auto=@dierolled(this) result(10) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[{1}:name(Pay 1 and cast copy) activate castcard(copied)])) ueot +auto=@dierolled(this) result(11) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[{1}:name(Pay 1 and cast copy) activate castcard(copied)])) ueot +auto=@dierolled(this) result(12) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[{1}:name(Pay 1 and cast copy) activate castcard(copied)])) ueot +auto=@dierolled(this) result(13) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[{1}:name(Pay 1 and cast copy) activate castcard(copied)])) ueot +auto=@dierolled(this) result(14) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[{1}:name(Pay 1 and cast copy) activate castcard(copied)])) ueot +auto=@dierolled(this) result(15) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[{1}:name(Pay 1 and cast copy) activate castcard(copied)])) ueot +auto=@dierolled(this) result(16) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[{1}:name(Pay 1 and cast copy) activate castcard(copied)])) ueot +auto=@dierolled(this) result(17) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[{1}:name(Pay 1 and cast copy) activate castcard(copied)])) ueot +auto=@dierolled(this) result(18) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[{1}:name(Pay 1 and cast copy) activate castcard(copied)])) ueot +auto=@dierolled(this) result(19) from(controller):name(Can play the exiled card) all(*[fresh;counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[{1}:name(Pay 1 and cast copy) activate castcard(copied)])) ueot +auto=@dierolled(this) result(20) from(controller):name(Can play all the exiled cards) all(*[counter{0/0.1.SpellbookExiled}]|myexile) transforms((,newability[{0}:name(Cast copy) activate castcard(copied)])) ueot +text={T}: Exile target instant or sorcery card from a graveyard. Roll a d20. Activate only as a sorcery. -- 1-9 | Copy that card. You may cast the copy. -- 10-19 | Copy that card. You may cast the copy by paying {1} rather than paying its mana cost. -- 20 | Copy each card exiled with Wizard’s Spellbook. You may cast any number of the copies without paying their mana costs. +mana={5}{U}{U} +type=Artifact +[/card] +[card] name=Woe Strider auto=token(Goat,Creature Goat,0/1,white) aicode=activate transforms((,newability[all(*[zpos<=1]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveto(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot @@ -67521,6 +71406,17 @@ mana={2}{U} type=Instant [/card] [card] +name=Wulfgar of Icewind Dale +#MISSING: not possible to trigger twice any ability ATM +auto=@combat(attacking) source(this):name(Melee) 1/1 ueot +text=Melee (Whenever this creature attacks, it gets +1/+1 until end of turn for each opponent you attacked this combat.) -- If a creature you control attacking would cause a triggered ability of a permanent you control to trigger, that ability triggers an additional time. +mana={3}{R}{G} +type=Legendary Creature +subtype=Human Barbarian +power=4 +toughness=4 +[/card] +[card] name=Wyleth, Soul of Steel abilities=trample auto=@combat(attacking) source(this):thisforeach(auras > 0) draw:1 controller @@ -67533,6 +71429,17 @@ power=2 toughness=2 [/card] [card] +name=Xanathar, Guild Kingpin +auto=@each my upkeep:transforms((,newability[maxcast(*)0 opponent],newability[{0}:if type(*[counter{0/0.1.XanaEffect}]|myhand)~equalto~0 then name(Look top card) name(Look top card) all(*[zpos=1]|opponentlibrary) moveto(myhand) and!( transforms((,newability[choice name(Put back) moveto(opponentlibrary)],newability[choice name(Can play card) transforms((,newability[anytypeofmana],newability[counter(0/0.1.XanaEffect)])) ueot])) ueot )! ])) ueot +auto=@each my end:all(*[counter{0/0.1.XanaEffect}]|myhand) moveto(opponentlibrary) +text=At the beginning of your upkeep, choose target opponent. Until end of turn, that player can’t cast spells, you may look at the top card of their library any time, you may play the top card of their library, and you may spend mana as though it were mana of any color to cast spells this way. +mana={4}{U}{B} +type=Legendary Creature +subtype=Beholder +power=5 +toughness=6 +[/card] +[card] name=Xantcha, Sleeper Agent auto=moveto(opponentBattlefield) auto=this(cantattack) @@ -67555,6 +71462,16 @@ power=1 toughness=1 [/card] [card] +name=Xorn +auto=@tokencreated(treasure|myBattlefield):token(Treasure,Artifact Treasure,0/0,notrigger) and!( transforms((,newability[{T}{S}:add{W}],newability[{T}{S}:add{U}],newability[{T}{S}:add{G}],newability[{T}{S}:add{B}],newability[{T}{S}:add{R}])) forever )! controller +text=If you would create one or more Treasure tokens, instead create those tokens plus an additional Treasure token. +mana={2}{R} +type=Creature +subtype=Elemental +power=3 +toughness=2 +[/card] +[card] name=Xyris, the Writhing Storm abilities=flying auto=@drawfoeof(player):token(Snake Xyr) @@ -67580,7 +71497,7 @@ toughness=4 [card] name=Yannik, Scavenging Sentinel abilities=vigilance,partner -auto=may moveto(myhand) target(Nikara^ Lair Scavenger|mylibrary) +auto=may name(Put partner in hand) moveto(myhand) target(Nikara^ Lair Scavenger|mylibrary) auto=if type(creature[power=0]|myBattlefield)~morethan~0 then choice name(Exile creature with power 0) name(Exile creature with power 0) (blink)forsrc target(other creature[power=0]|mybattlefield) auto=if type(creature[power=1]|myBattlefield)~morethan~0 then choice name(Exile creature with power 1) name(Exile creature with power 1) (blink)forsrc target(other creature[power=1]|mybattlefield) && ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller auto=if type(creature[power=2]|myBattlefield)~morethan~0 then choice name(Exile creature with power 2) name(Exile creature with power 2) (blink)forsrc target(other creature[power=2]|mybattlefield) && thisforeach(variable{2}) ability$!name(Assign 1/1 counter) name(Assign 1/1 counter) target(creature) counter(1/1)!$ controller @@ -67688,7 +71605,7 @@ type=Legendary Sorcery name=Yawgmoth, Thran Physician abilities=protection from humans auto={L:1}{S(other creature|mybattlefield)}:target(creature) counter(-1/-1) && draw:1 controller -auto={B}{B}{discard(*|myhand)}:notatarget(*[artifact;creature;enchantment;land;planeswalker;player]) proliferate +auto={B}{B}{discard(*|myhand)}:name(Proliferate) NotATarget(*) duplicatecounters(single) text=Protection from Humans -- Pay 1 life, Sacrifice another creature: Put a -1/-1 counter on up to one target creature and draw a card. -- {B}{B}, Discard a card: Proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) mana={2}{B}{B} type=Legendary Creature @@ -67764,6 +71681,98 @@ power=5 toughness=5 [/card] [card] +name=You Come to a River +auto=choice name(Return non-land permanent) target(*[-land]|battlefield) moveTo(ownerhand) +auto=choice name(Creature gets 1/0) target(creature|battlefield) transforms((,newability[1/0],newability[unblockable])) ueot +text=Choose one — -- • Fight the Current — Return target nonland permanent top its owner’s hand. -- • Find a Crossing — Target creature gets +1/+0 until end of turn and can’t be blocked this turn. +mana={1}{U} +type=Instant +[/card] +[card] +name=You Come to the Gnoll Camp +auto=choice name(Creatures can't block) target(creature|battlefield) transforms((,newability[cantblock])) ueot +auto=choice name(Creature gets 3/1) target(creature|battlefield) 3/1 ueot +text=Choose one — -- • Intimidate Them — Up to two target creatures can’t block this turn. -- • Fend Them Off — Target creature gets +3/+1 until end of turn. +mana={1}{R} +type=Instant +[/card] +[card] +name=You Find Some Prisoners +aicode=activate target(*[zpos<=3]|opponentlibrary) moveto(myexile) and!( transforms((,newability[all(*[zpos<=3]|opponentlibrary) moveto(ownerexile)],newability[canplayfromexile],newability[anytypeofmana],newability[my endofturn next once checkex] moveto(ownerexile)])) forever )! +auto=choice name(Destroy artifact) target(artifact) destroy +auto=choice name(Exile top 3 cards) reveal:3 revealzone(opponentlibrary) optionone name(Choose one card) target(*|reveal) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[my endofturn next once checkex] moveto(ownerexile)])) forever )! optiononeend optiontwo name(Exile cards) all(*|reveal) moveto(ownerexile) optiontwoend revealend +text=Choose one — -- • Break Their Chains — Destroy target artifact. -- • Interrogate Them — Exile the top three cards of target opponent’s library. Choose one of them. Until the end of your next turn, you may play that card, and you may spend mana as through it were mana of any color to cast it. +mana={1}{R} +type=Instant +[/card] +[card] +name=You Find a Cursed Idol +auto=if type(artifact|battlefield)~morethan~0 then choice name(Destroy artifact) name(Destroy artifact) target(artifact) destroy +auto=if type(enchantment|battlefield)~morethan~0 then choice name(Destroy enchantment) name(Destroy enchantment) target(enchantment) destroy +auto=if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then choice name(Create treasure) name(Create treasure) token(Treasure Sur) and!( transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot )! +auto=if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~morethan~0 then name(Create treasure) name(Create treasure) token(Treasure Sur) +text=Choose one — -- • Smash It — Destroy target artifact. -- • Lift the Curse — Destroy target enchantment. -- • Steal Its Eyes — Create a Treasure token and venture into the dungeon. (Enter the first room or advance to the next room.) +mana={1}{G} +type=Sorcery +[/card] +[card] +name=You Find the Villains' Lair +auto=choice name(Counter spell) target(*|stack) fizzle +auto=choice name(Draw and discard) draw:2 && transforms((,newability[target(<2>*|myhand) reject])) forever +text=Choose one — -- • Foil Their Scheme — Counter target spell. -- • Learn Their Secrets — Draw two cards, then discard two cards. +mana={1}{U}{U} +type=Instant +[/card] +[card] +name=You Happen On a Glade +auto=choice name(Search library) target(land[basic]|mylibrary) moveto(myhand) and!( shuffle )! +auto=choice name(Return permanent) target(*[-land]|mygraveyard) moveto(myhand) +text=Choose one — -- • Journey On — Search your library for up to two basic land cards, reveal them, put them into your hand, then shuffle. -- • Make Camp — Return target permanent card from your graveyard to your hand. +mana={2}{G} +type=Instant +[/card] +[card] +name=You Hear Something on Watch +auto=choice name(Creature get 1/1) all(creature|myBattlefield) 1/1 ueot +auto=choice name(Damage creature) target(creature[attacking]|battlefield) damage:5 +text=Choose one — -- • Rouse the Party — Creatures you control get +1/+1 until end of turn. -- • Set Off Traps — This spell deals 5 damage to target attacking creature. +mana={1}{W} +type=Instant +[/card] +[card] +name=You Meet in a Tavern +aicode=activate target(creature[zpos<=5]|mylibrary) moveTo(myhand) and!( all(*[-creature;zpos<=5]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )! +auto=choice name(Search library) reveal:5 optionone name(Get Creature) target(creature|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto=choice name(Creatures get +2/+2) all(creature|mybattlefield) transforms((,newability[2/2])) ueot +text=Choose one — -- • Form a Party — Look at the top five cards of your library. You may reveal any number of creature cards from among them and put them into your hand. Put the rest on the bottom of your library in a random order. -- • Start a Brawl — Creatures you control get +2/+2 until end of turn. +mana={2}{G}{G} +type=Sorcery +[/card] +[card] +name=You See a Guard Approach +auto=choice name(Tap a creature) target(creature|battlefield) tap +auto=choice name(Creature gains hexproof) target(creature|mybattlefield) transforms((,newability[opponentshroud])) ueot +text=Choose one — -- • Distract the Guard — Tap target creature. -- • Hide — Target creature you control gains hexproof until end of turn. (It can’t be the target of spells or abilities your opponents control.) +mana={U} +type=Instant +[/card] +[card] +name=You See a Pair of Goblins +auto=choice name(All creatures get 2/0) all(creature|mybattlefield) transforms((,newability[2/0])) ueot +auto=choice name(Create 2 goblins) token(Goblin Los)*2 +text=Choose one — -- • Charge Them — Creatures you control get +2/+0 until end of turn. -- • Befriend Them — Create two 1/1 red Goblin creature tokens. +mana={2}{R} +type=Instant +[/card] +[card] +name=You're Ambushed on the Road +auto=choice name(Return creature to hand) target(creature|myBattlefield) moveto(ownerhand) +auto=choice name(Creature gets 1/3) target(creature|battlefield) 1/3 ueot +text=Choose one — -- • Make a Retreat — Return target creature you control to its owner’s hand. -- • Stand and Fight — Target creature gets +1/+3 until end of turn. +mana={W} +type=Instant +[/card] +[card] name=Young Necromancer auto=if type(creature|myGraveyard)~morethan~0 then if type(*|myGraveyard)~morethan~2 then may name(Exile 2 cards) target(*|myGraveyard) moveto(myexile) and!( transforms((,newability[name(Exile second card) target(*|myGraveyard) moveto(myexile) and!( transforms((,newability[[name(Return card on battlefield) target(creature|myGraveyard) moveto(myBattlefield)])) oneshot )!])) oneshot )! text=When Young Necromancer enters the battlefield, you may exile two cards from your graveyard. When you do, return target creature card from your graveyard to the battlefield. @@ -67785,6 +71794,28 @@ power=1 toughness=3 [/card] [card] +name=Yuan-Ti Fang-Blade +abilities=deathtouch +auto=@combatdamaged(player) from(this) restriction{compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0}:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=Deathtouch -- Whenever Yuan-Ti Fang-Blade deals combat damage to a player, venture into the dungeon. (Enter the first room or advance to the next room.) +mana={2}{B} +type=Creature +subtype=Snake Rogue +power=2 +toughness=2 +[/card] +[card] +name=Yuan-Ti Malison +auto=@combat(attacking) source(this) restriction{type(creature[attacking]|myBattlefield)~equalto~1}:name(Becomes unblockable) transforms((,newability[unblockable])) ueot +auto=@combatdamaged(player) from(this) restriction{compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0}:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=Yuan-Ti Malison can’t be blocked as long as it’s attacking alone. -- Whenever Yuan-Ti Malison deals combat damage to a player, venture into the dungeon. (Enter the first room or advance to the next room.) +mana={1}{U} +type=Creature +subtype=Snake Rogue +power=2 +toughness=1 +[/card] +[card] name=Yuriko, the Tiger's Shadow autohand={U}{B}{N}:ninjutsu autocommandzone={U}{B}{N}:ninjutsu @@ -67909,6 +71940,17 @@ power=5 toughness=6 [/card] [card] +name=Zalto, Fire Giant Duke +abilities=trample +auto=@damaged(this) restriction{compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0}:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=Trample -- Whenever Zalto, Fire Giant Duke is dealt damage, venture into the dungeon. (Enter the first room or advance to the next room.) +mana={3}{R}{R} +type=Legendary Creature +subtype=Giant Barbarian +power=7 +toughness=3 +[/card] +[card] name=Zara, Renegade Recruiter abilities=flying auto=@combat(attacking) source(this):reveal:type:*:opponenthand revealzone(opponenthand) optionone name(Reveal) target(creature|reveal) moveto(mybattlefield) and!( transforms((,newability[ninjutsu],newability[phaseaction[endofturn] moveto(ownerhand) all(this)])) forever )! optiononeend optiontwo all(*|reveal) moveto(opponenthand) optiontwoend revealend @@ -68089,6 +72131,16 @@ toughness=2 color=black [/card] [card] +name=Zombie Ogre +auto=@each my endofturn restriction{morbid,compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0}:name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot +text=At the beginning of your end step, if a creature died this turn, venture into the dungeon. (Enter the first room or advance to the next room.) +mana={3}{B}{B} +type=Creature +subtype=Zombie Ogre +power=3 +toughness=5 +[/card] +[card] name=Zombie Xat type=Creature subtype=Zombie diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index 3b22f2745..579f171ea 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -1,6 +1,6 @@ #Primitives Pack for Wagic the Homebrew. #Please keep these card alphabetized, and try to have the "name=" line at the top of each card -#I sorted this programatically so the other comments are removed except for AUTO_DEFINE - Vitty85 16-06-2021 +#I sorted this programatically so the other comments are removed except for AUTO_DEFINE - Vitty85 16-07-2021 [card] name=Abandon Reason target=creature @@ -1975,7 +1975,7 @@ type=Enchantment [/card] [card] name=Ajani's Pridemate -auto=@lifeof(player) from(*[-lifefaker]):counter(1/1,1) +auto=@lifeof(player) from(*[-lifefaker]|*):counter(1/1,1) text=Whenever you gain life, put a +1/+1 counter on Ajani's Pridemate. mana={1}{W} type=Creature @@ -5143,7 +5143,7 @@ toughness=4 [card] name=Archangel of Thune abilities=flying,lifelink -auto=@lifeof(player) from(*[-lifefaker]):all(creature|mybattlefield) counter(1/1,1) +auto=@lifeof(player) from(*[-lifefaker]|*):all(creature|mybattlefield) counter(1/1,1) text=Flying. -- Lifelink. -- Whenever you gain life, put a +1/+1 counter on each creature you control. mana={3}{W}{W} type=Creature @@ -6778,7 +6778,7 @@ toughness=2 [card] name=Atraxa, Praetors' Voice abilities=flying,vigilance,deathtouch,lifelink -auto=@each my end:notatarget(*[artifact;creature;enchantment;land;planeswalker;player]) proliferate +auto=@each my end:name(Proliferate) NotATarget(*) duplicatecounters(single) text=Flying, vigilance, deathtouch, lifelink -- At the beginning of your end step, proliferate. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there.) mana={G}{W}{U}{B} type=Legendary Creature @@ -8902,9 +8902,10 @@ type=Instant [/card] [card] name=Bant Panorama -auto={T}:Add{1} -aicode=activate moveTo(myBattlefield) and!(tap(noevent))! target(*[basic;island;forest;plains]|myLibrary) -auto={1}{T}{S}:name(search card) reveal:plibrarycount optionone name(choose card) target(*[basic;island;forest;plains]|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveTo(myBattlefield) and!(tap(noevent))!)! afterrevealedend revealend +auto={T}:Add{C} +auto={1}{T}{S}:name(search forest) target(forest[basic]|myLibrary) moveTo(myBattlefield) and!( tap(noevent) )! +auto={1}{T}{S}:name(search plains) target(plains[basic]|myLibrary) moveTo(myBattlefield) and!( tap(noevent) )! +auto={1}{T}{S}:name(search island) target(island[basic]|myLibrary) moveTo(myBattlefield) and!( tap(noevent) )! text={T}: Add {1} to your mana pool. -- {1}, {T}, Sacrifice Bant Panorama: Search your library for a basic Forest, Plains, or Island card and put it onto the battlefield tapped. Then shuffle your library. type=Land [/card] @@ -12217,7 +12218,7 @@ type=Enchantment [/card] [card] name=Bloodbond Vampire -auto=@lifeof(player) from(*[-lifefaker]):counter(1/1,1) +auto=@lifeof(player) from(*[-lifefaker]|*):counter(1/1,1) text=Whenever you gain life, put a +1/+1 counter on Bloodbond Vampire. mana={2}{B}{B} type=Creature @@ -15125,8 +15126,8 @@ toughness=4 [card] name=Brisela, Voice of Nightmares auto=meldfrom(Gisela, the Broken Blade|Bruna, the Fading Light) -abilities=flying, first strike, vigilance, lifelink -auto=maxcast(*[manacost<4])0 opponent +abilities=flying,first strike,vigilance,lifelink +auto=maxcast(*[manacost<=3])0 opponent text=Flying, first strike, vigilance, lifelink -- Your opponents can't cast spells with converted mana cost 3 or less. type=Legendary Creature subtype=Eldrazi Angel @@ -15376,7 +15377,7 @@ type=Enchantment [/card] [card] name=Bruna, the Fading Light -abilities=flying, vigilance +abilities=flying,vigilance autostack=if casted(this) then may moveTo(mybattlefield) target(creature[angel;human]|mygraveyard) text=When you cast Bruna, the Fading Light, you may return target Angel or Human creature card from your graveyard to the battlefield. -- Flying, vigilance -- (Melds with Gisela, the Broken Blade.) mana={5}{W}{W} @@ -20321,7 +20322,7 @@ toughness=1 [card] name=Cliffhaven Vampire abilities=flying -auto=@lifeof(player) from(*[-lifefaker]):life:-1 opponent +auto=@lifeof(player) from(*[-lifefaker]|*):life:-1 opponent text=Flying -- Whenever you gain life, each opponent loses 1 life. mana={2}{W}{B} type=Creature @@ -22111,7 +22112,7 @@ toughness=1 [card] name=Contagion Clasp auto=counter(-1/-1,1) target(creature) -auto={4}{T}:notatarget(*) propagate +auto={4}{T}:name(Proliferate) NotATarget(*) duplicatecounters(single) text=When Contagion Clasp enters the battlefield, put a -1/-1 counter on target creature. -- {4}, Tap: Proliferate. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there.) mana={2} type=Artifact @@ -22119,7 +22120,7 @@ type=Artifact [card] name=Contagion Engine auto=target(player) ability$!name(target player) counter(-1/-1,1) all(creature|mybattlefield)!$ targetedplayer -auto={4}{T}:notatarget(*[artifact;creature;enchantment;land;planeswalker;player]) propagate && propagate +auto={4}{T}:name(Proliferate) NotATarget(*) transforms((,newability[duplicatecounters(single)],newability[duplicatecounters(single)])) oneshot text=When Contagion Engine enters the battlefield, put a -1/-1 counter on each creature target player controls. -- {4},{T}: Proliferate, then proliferate again. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there. Then do it again.) mana={6} type=Artifact @@ -22569,7 +22570,7 @@ toughness=1 [card] name=Core Prowler abilities=infect -auto=@movedto(this|mygraveyard) from(this|mybattlefield):notatarget(*[artifact;creature;enchantment;land;planeswalker;player]) proliferate +auto=@movedto(this|mygraveyard) from(this|mybattlefield):name(Proliferate) NotATarget(*) duplicatecounters(single) text=Infect (This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.) -- When Core Prowler dies, proliferate. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there.) mana={4} type=Artifact Creature @@ -22980,8 +22981,7 @@ type=Artifact [/card] [card] name=Courser of Kruphix -abilities=showfromtoplibrary -auto=canplaylandlibrarytop +abilities=showfromtoplibrary,canplaylandlibrarytop auto=@movedTo(land|mybattlefield):life:1 text=Play with the top card of your library revealed. -- You may play the top card of your library if it's a land card. -- Whenever a land enters the battlefield under your control, you gain 1 life. mana={1}{G}{G} @@ -32124,7 +32124,7 @@ toughness=4 [card] name=Drogskol Reaver abilities=flying,double strike,lifelink -auto=@lifeof(player) from(*[-lifefaker]):draw:1 controller +auto=@lifeof(player) from(*[-lifefaker]|*):draw:1 controller text=Flying, double strike, lifelink -- Whenever you gain life, draw a card. mana={5}{W}{U} type=Creature @@ -35515,7 +35515,7 @@ toughness=7 [/card] [card] name=Emmessi Tome -auto={5}{T}:auto={T}:draw:2 && transforms((,newability[target(*|myhand) reject])) forever +auto={5}{T}:draw:2 && transforms((,newability[target(*|myhand) reject])) forever text={5}, {T}: Draw two cards, then discard a card. mana={4} type=Artifact @@ -36845,9 +36845,10 @@ toughness=3 [/card] [card] name=Esper Panorama -auto={T}:Add{1} -aicode=activate moveTo(myBattlefield) and!(tap(noevent))! target(*[basic;swamp;island;plains]|myLibrary) -auto={1}{T}{S}:name(search card) reveal:plibrarycount optionone name(choose card) target(*[basic;swamp;island;plains]|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveTo(myBattlefield) and!(tap(noevent))!)! afterrevealedend revealend +auto={T}:Add{C} +auto={1}{T}{S}:name(search swamp) target(swamp[basic]|myLibrary) moveTo(myBattlefield) and!( tap(noevent) )! +auto={1}{T}{S}:name(search plains) target(plains[basic]|myLibrary) moveTo(myBattlefield) and!( tap(noevent) )! +auto={1}{T}{S}:name(search island) target(island[basic]|myLibrary) moveTo(myBattlefield) and!( tap(noevent) )! text={T}: Add {1} to your mana pool. -- {1}, {T}, Sacrifice Esper Panorama: Search your library for a basic Plains, Island, or Swamp card and put it onto the battlefield tapped. Then shuffle your library. type=Land [/card] @@ -43795,7 +43796,7 @@ type=Sorcery name=Fuel for the Cause target=*|stack auto=fizzle -auto=notatarget(*[artifact;creature;enchantment;land;planeswalker;player]) proliferate +auto=name(Proliferate) NotATarget(*) duplicatecounters(single) text=Counter target spell, then proliferate. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there.) mana={2}{U}{U} type=Instant @@ -44142,8 +44143,7 @@ toughness=8 [/card] [card] name=Future Sight -abilities=showfromtoplibrary -auto=canplayfromlibrarytop +abilities=showfromtoplibrary,canplayfromlibrarytop text=Play with the top card of your library revealed. -- You may play the top card of your library. mana={2}{U}{U}{U} type=Enchantment @@ -44570,8 +44570,7 @@ toughness=2 [/card] [card] name=Garruk's Horde -abilities=trample,showfromtoplibrary -auto=canplaycreaturelibrarytop +abilities=trample,showfromtoplibrary,canplaycreaturelibrarytop text=Trample -- Play with the top card of your library revealed. -- You may cast the top card of your library if it's a creature card. (Do this only any time you could cast that creature card. You still pay the spell's costs.) mana={5}{G}{G} type=Creature @@ -46465,8 +46464,8 @@ type=Sorcery [/card] [card] name=Gisela, the Broken Blade -abilities=flying, first strike, lifelink -auto=@each my endofturn:target(Bruna the Fading Light) meld(Brisela Voice of Nightmares) +abilities=flying,first strike,lifelink +auto=@each my endofturn:target(Bruna^ the Fading Light|mybattlefield) meld(Brisela, Voice of Nightmares) text=Flying, first strike, lifelink -- At the beginning of your end step, if you both own and control Gisela, the Broken Blade and a creature named Bruna, the Fading Light, exile them, then meld them into Brisela, Voice of Nightmares. mana={2}{W}{W} type=Legendary Creature @@ -49374,6 +49373,15 @@ text=Grasslands enters the battlefield tapped. -- {T}, Sacrifice Grasslands: Sea type=Land [/card] [card] +name=Grave Betrayal +auto=@movedTo(creature|opponentGraveyard) from(Battlefield):all(trigger[to]) transforms((,newability[phaseaction[endofturn once] moveTo(opponentBattlefield)])) +auto=@movedTo(creature[fresh]|myBattlefield) from(opponentGraveyard):all(trigger[to]) transforms((,newability[counter(1/1)])) +auto=@movedTo(creature[fresh]|myBattlefield) from(opponentGraveyard):all(trigger[to]) transforms((Zombie,black)) forever +text=Whenever a creature you don't control dies, return it to the battlefield under your control with an additional +1/+1 counter on it at the beginning of the next end step. That creature is a black Zombie in addition to its other colors and types. +mana={5}{B}{B} +type=Enchantment +[/card] +[card] name=Grave Birthing target=opponent auto=ability$!moveto(exile) notatarget(*|mygraveyard)!$ targetedplayer @@ -50225,7 +50233,7 @@ subtype=Equipment name=Grim Affliction target=creature auto=counter(-1/-1,1) -auto=notatarget(*[artifact;creature;enchantment;land;planeswalker;player]) proliferate +auto=name(Proliferate) NotATarget(*) duplicatecounters(single) text=Put a -1/-1 counter on target creature, then proliferate. mana={2}{B} type=Instant @@ -50593,9 +50601,10 @@ toughness=1 [/card] [card] name=Grixis Panorama -auto={T}:Add{1} -aicode=activate moveTo(myBattlefield) and!(tap(noevent))! target(*[basic;mountain;island;swamp]|myLibrary) -auto={1}{T}{S}:name(search card) reveal:plibrarycount optionone name(choose card) target(*[basic;mountain;island;swamp]|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveTo(myBattlefield) and!(tap(noevent))!)! afterrevealedend revealend +auto={T}:Add{C} +auto={1}{T}{S}:name(search swamp) target(swamp[basic]|myLibrary) moveTo(myBattlefield) and!( tap(noevent) )! +auto={1}{T}{S}:name(search mountain) target(mountain[basic]|myLibrary) moveTo(myBattlefield) and!( tap(noevent) )! +auto={1}{T}{S}:name(search island) target(island[basic]|myLibrary) moveTo(myBattlefield) and!( tap(noevent) )! text={T}: Add {1} to your mana pool. -- {1}, {T}, Sacrifice Grixis Panorama: Search your library for a basic Island, Swamp, or Mountain card and put it onto the battlefield tapped. Then shuffle your library. type=Land [/card] @@ -51513,6 +51522,14 @@ power=2 toughness=2 [/card] [card] +name=Gutter Grime +auto=@movedTo(creature[-token]|myGraveyard) from(myBattlefield):counter(0/0,1,Slime) +auto=@counteradded(0/0,1,Slime) from(this):token(Ooze,Creature Ooze,type:enchantment{counter(0/0,1,Slime)}:mybattlefield/type:enchantment{counter(0/0,1,Slime)}:mybattlefield cdaactive,green) +text=Whenever a notoken creature you control dies, put a slime counter on Gutter Grime, then create a green Ooze creature token with "This creature's power and toughness are each equal to the number of slime counters on Gutter Grime." +mana={4}{G} +type=Enchantment +[/card] +[card] name=Gutter Skulk mana={1}{B} type=Creature @@ -56951,7 +56968,7 @@ toughness=1 [/card] [card] name=Ignorant Bliss -auto=hand(blink)ueot all(*|myhand) +auto=all(*|myhand) moveto(myexile) and!( transforms((,newability[phaseaction[endofturn once checkex] moveto(myhand)])) ueot )! auto=phaseaction[endofturn once] draw:1 text=Exile all cards from your hand face down. At the beginning of the next end step, return those cards to your hand, then draw a card. mana={1}{R} @@ -57864,7 +57881,7 @@ toughness=3 [/card] [card] name=Inexorable Tide -auto=@movedto(mystack) from(*|myhand):notatarget(*[artifact;creature;enchantment;land;planeswalker;player]) proliferate +auto=@movedto(mystack) from(*|myhand):name(Proliferate) NotATarget(*) duplicatecounters(single) text=Whenever you cast a spell, proliferate. mana={3}{U}{U} type=Enchantment @@ -60686,9 +60703,10 @@ toughness=1 [/card] [card] name=Jund Panorama -auto={T}:Add{1} -aicode=activate moveTo(myBattlefield) and!(tap(noevent))! target(*[basic;mountain;forest;swamp]|myLibrary) -auto={1}{T}{S}:name(search card) reveal:plibrarycount optionone name(choose card) target(*[basic;mountain;forest;swamp]|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveTo(myBattlefield) and!(tap(noevent))!)! afterrevealedend revealend +auto={T}:Add{C} +auto={1}{T}{S}:name(search swamp) target(swamp[basic]|myLibrary) moveTo(myBattlefield) and!( tap(noevent) )! +auto={1}{T}{S}:name(search mountain) target(mountain[basic]|myLibrary) moveTo(myBattlefield) and!( tap(noevent) )! +auto={1}{T}{S}:name(search forest) target(forest[basic]|myLibrary) moveTo(myBattlefield) and!( tap(noevent) )! text={T}: Add {1} to your mana pool. -- {1}, {T}, Sacrifice Jund Panorama: Search your library for a basic Swamp, Mountain, or Forest card and put it onto the battlefield tapped. Then shuffle your library. type=Land [/card] @@ -61148,7 +61166,7 @@ toughness=2 [/card] [card] name=Kalastria Nightwatch -auto=@lifeof(player) from(*[-lifefaker]):flying ueot +auto=@lifeof(player) from(*[-lifefaker]|*):flying ueot text=Whenever you gain life, Kalastria Nightwatch gains flying until end of turn. mana={4}{B} type=Creature @@ -61545,7 +61563,7 @@ type=Sorcery [/card] [card] name=Karlov of the Ghost Council -auto=@lifeof(player) from(*[-lifefaker]):counter(1/1,2) +auto=@lifeof(player) from(*[-lifefaker]|*):counter(1/1,2) auto={W}{B}{C(1/1,-6)}:moveto(exile) target(creature) text=Whenever you gain life, put two +1/+1 counters on Karlov of the Ghost Council. -- {W}{B}, Remove six +1/+1 counters from Karlov of the Ghost Council: Exile target creature. mana={W}{B} @@ -69763,8 +69781,7 @@ toughness=4 [/card] [card] name=Magus of the Future -abilities=showfromtoplibrary -auto=canplayfromlibrarytop +abilities=showfromtoplibrary,canplayfromlibrarytop text=Play with the top card of your library revealed. -- You may play the top card of your library. mana={2}{U}{U}{U} type=Creature @@ -70052,7 +70069,7 @@ toughness=1 [card] name=Malakir Familiar abilities=flying,deathtouch -auto=@lifeof(player) from(*[-lifefaker]):1/1 ueot +auto=@lifeof(player) from(*[-lifefaker]|*):1/1 ueot text=Flying, deathtouch -- Whenever you gain life, Malakir Familiar gets +1/+1 until end of turn. mana={2}{B} type=Creature @@ -72274,8 +72291,7 @@ subtype=Aura [/card] [card] name=Melek, Izzet Paragon -abilities=showfromtoplibrary -auto=canplayinstantsorcerylibrarytop +abilities=showfromtoplibrary,canplayinstantsorcerylibrarytop auto=@movedto(instant,sorcery|mystack) from(mylibrary):all(trigger[to]) castcard(copied noevent) text=Play with the top card of your library revealed. -- You may cast the top card of your library if it's an instant or sorcery card. -- Whenever you cast an instant or sorcery spell from your library, copy it. You may choose new targets for the copy. mana={4}{U}{R} @@ -78387,9 +78403,10 @@ toughness=1 [/card] [card] name=Naya Panorama -auto={T}:Add{1} -aicode=activate moveTo(myBattlefield) and!(tap(noevent))! target(*[basic;mountain;forest;plains]|myLibrary) -auto={1}{T}{S}:name(search card) reveal:plibrarycount optionone name(choose card) target(*[basic;mountain;forest;plains]|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveTo(myBattlefield) and!(tap(noevent))!)! afterrevealedend revealend +auto={T}:Add{C} +auto={1}{T}{S}:name(search plains) target(plains[basic]|myLibrary) moveTo(myBattlefield) and!( tap(noevent) )! +auto={1}{T}{S}:name(search mountain) target(mountain[basic]|myLibrary) moveTo(myBattlefield) and!( tap(noevent) )! +auto={1}{T}{S}:name(search forest) target(forest[basic]|myLibrary) moveTo(myBattlefield) and!( tap(noevent) )! text={T}: Add {1} to your mana pool. -- {1}, {T}, Sacrifice Naya Panorama: Search your library for a basic Mountain, Forest, or Plains card and put it onto the battlefield tapped. Then shuffle your library. type=Land [/card] @@ -80034,7 +80051,7 @@ toughness=1 [/card] [card] name=Nirkana Assassin -auto=@lifeof(player) from(*[-lifefaker]):deathtouch ueot +auto=@lifeof(player) from(*[-lifefaker]|*):deathtouch ueot text=Whenever you gain life, Nirkana Assassin gains deathtouch until end of turn. (Any amount of damage it deals to a creature is enough to destroy it.) mana={2}{B} type=Creature @@ -82302,26 +82319,7 @@ toughness=4 [/card] [card] name=Opalescence -auto=lord(other enchantment[-aura;manacost=1]) transforms((,newability[becomes(Creature)],setpower=1,settoughness=1)) -auto=lord(other enchantment[-aura;manacost=2]) transforms((,newability[becomes(Creature)],setpower=2,settoughness=2)) -auto=lord(other enchantment[-aura;manacost=3]) transforms((,newability[becomes(Creature)],setpower=3,settoughness=3)) -auto=lord(other enchantment[-aura;manacost=4]) transforms((,newability[becomes(Creature)],setpower=4,settoughness=4)) -auto=lord(other enchantment[-aura;manacost=5]) transforms((,newability[becomes(Creature)],setpower=5,settoughness=5)) -auto=lord(other enchantment[-aura;manacost=6]) transforms((,newability[becomes(Creature)],setpower=6,settoughness=6)) -auto=lord(other enchantment[-aura;manacost=7]) transforms((,newability[becomes(Creature)],setpower=7,settoughness=7)) -auto=lord(other enchantment[-aura;manacost=8]) transforms((,newability[becomes(Creature)],setpower=8,settoughness=8)) -auto=lord(other enchantment[-aura;manacost=9]) transforms((,newability[becomes(Creature)],setpower=9,settoughness=9)) -auto=lord(other enchantment[-aura;manacost=10]) transforms((,newability[becomes(Creature)],setpower=10,settoughness=10)) -auto=lord(other enchantment[-aura;manacost=11]) transforms((,newability[becomes(Creature)],setpower=11,settoughness=11)) -auto=lord(other enchantment[-aura;manacost=12]) transforms((,newability[becomes(Creature)],setpower=12,settoughness=12)) -auto=lord(other enchantment[-aura;manacost=13]) transforms((,newability[becomes(Creature)],setpower=13,settoughness=13)) -auto=lord(other enchantment[-aura;manacost=14]) transforms((,newability[becomes(Creature)],setpower=14,settoughness=14)) -auto=lord(other enchantment[-aura;manacost=15]) transforms((,newability[becomes(Creature)],setpower=15,settoughness=15)) -auto=lord(other enchantment[-aura;manacost=16]) transforms((,newability[becomes(Creature)],setpower=16,settoughness=16)) -auto=lord(other enchantment[-aura;manacost=17]) transforms((,newability[becomes(Creature)],setpower=17,settoughness=17)) -auto=lord(other enchantment[-aura;manacost=18]) transforms((,newability[becomes(Creature)],setpower=18,settoughness=18)) -auto=lord(other enchantment[-aura;manacost=19]) transforms((,newability[becomes(Creature)],setpower=19,settoughness=19)) -auto=lord(other enchantment[-aura;manacost=20]) transforms((,newability[becomes(Creature)],setpower=20,settoughness=20)) +auto=lord(other enchantment[-aura]) transforms((creature,newability[manacost/manacost])) mana={2}{W}{W} type=Enchantment text=Each other non-Aura enchantment is a creature with power and toughness each equal to its converted mana cost. It's still an enchantment. @@ -82470,9 +82468,8 @@ toughness=5 [/card] [card] name=Oracle of Mul Daya -abilities=showfromtoplibrary +abilities=showfromtoplibrary,canplaylandlibrarytop auto=maxPlay(land)+1 -auto=canplaylandlibrarytop text=You may play an additional land on each of your turns. -- Play with the top card of your library revealed. -- You may play the top card of your library if it's a land card. mana={3}{G} type=Creature @@ -87050,7 +87047,7 @@ toughness=1 [/card] [card] name=Plaguemaw Beast -auto={T}{S(creature|mybattlefield)}:notatarget(*[artifact;creature;enchantment;land;planeswalker;player]) proliferate +auto={T}{S(creature|mybattlefield)}:name(Proliferate) NotATarget(*) duplicatecounters(single) text={T}, Sacrifice a creature: Proliferate. mana={3}{G}{G} type=Creature @@ -89585,7 +89582,7 @@ toughness=2 [/card] [card] name=Puppet's Verdict -auto=flipacoin winability destroy all(creature[power<=2]) winabilityend loseability destroy all(creature[power>=3]) loseabilityend flipend +auto=all(*[zpos=1]|mylibrary) transforms((,newability[@coinflipped(this|mylibrary) once:if compare(lastflipresult)~equalto~compare(lastflipchoice) then all(creature[power<=2]) destroy else all(creature[power>=3]) destroy],newability[name(Filp a coin) flipacoin winability donothing winabilityend loseability donothing loseabilityend flipend])) oneshot text=Flip a coin. If you win the flip, destroy all creatures with power 2 or less. If you lose the flip, destroy all creatures with power 3 or greater. mana={1}{R}{R} type=Instant @@ -101131,7 +101128,7 @@ type=Instant [/card] [card] name=Searing Meditation -auto=@lifeof(player) from(*[-lifefaker]):pay({2}) target(creature,player) damage:2 +auto=@lifeof(player) from(*[-lifefaker]|*):pay({2}) target(creature,player) damage:2 text=Whenever you gain life, you may pay {2}. If you do, Searing Meditation deals 2 damage to target creature or player. mana={1}{R}{W} type=Enchantment @@ -102337,7 +102334,7 @@ type=Sorcery [/card] [card] name=Serene Steward -auto=@lifeof(player) from(*[-lifefaker]):pay({W}) counter(1/1) target(creature) +auto=@lifeof(player) from(*[-lifefaker]|*):pay({W}) counter(1/1) target(creature) text=Whenever you gain life, you may pay {W}. If you do, put a +1/+1 counter on target creature. mana={1}{W} type=Creature @@ -111876,7 +111873,7 @@ toughness=3 name=Spread the Sickness target=creature auto=destroy -auto=notatarget(*[artifact;creature;enchantment;land;planeswalker;player]) proliferate +auto=name(Proliferate) NotATarget(*) duplicatecounters(single) text=Destroy target creature, then proliferate. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there.) mana={4}{B} type=Sorcery @@ -112835,7 +112832,7 @@ type=Sorcery [card] name=Steady Progress auto=draw:1 controller -auto=notatarget(*[artifact;creature;enchantment;land;planeswalker;player]) proliferate +auto=name(Proliferate) NotATarget(*) duplicatecounters(single) text=Draw a card, then proliferate. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there.) mana={2}{U} type=Instant @@ -119276,7 +119273,7 @@ type=Sorcery [card] name=Tezzeret's Gambit auto=draw:2 controller -auto=notatarget(*[artifact;creature;enchantment;land;planeswalker;player]) proliferate +auto=name(Proliferate) NotATarget(*) duplicatecounters(single) text=Draw two cards, then proliferate. color=blue mana={3}{p(U)} @@ -120842,7 +120839,7 @@ type=Artifact [/card] [card] name=Throne of Geth -auto={S(artifact|mybattlefield)}{T}:_PROLIFERATE_ +auto={S(artifact|mybattlefield)}{T}:name(Proliferate) NotATarget(*) duplicatecounters(single) text={T},Sacrifice an artifact: Proliferate. mana={2} type=Artifact @@ -120900,7 +120897,7 @@ toughness=1 [card] name=Thrummingbird abilities=flying -auto=@combatdamaged(player) from(this):notatarget(*[artifact;creature;enchantment;land;planeswalker;player]) proliferate +auto=@combatdamaged(player) from(this):name(Proliferate) NotATarget(*) duplicatecounters(single) text=Flying -- Whenever Thrummingbird deals combat damage to a player, proliferate. mana={1}{U} type=Creature @@ -129085,7 +129082,7 @@ subtype=Aura [card] name=Viral Drake abilities=flying,infect -auto={3}{U}:notatarget(*[artifact;creature;enchantment;land;planeswalker;player]) proliferate +auto={3}{U}:name(Proliferate) NotATarget(*) duplicatecounters(single) text=Flying -- Infect (This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.) -- {3}{U}: Proliferate. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there.) mana={3}{U} type=Creature @@ -130171,7 +130168,7 @@ type=Legendary Land name=Volt Charge target=creature,player auto=damage:3 -auto=notatarget(*[artifact;creature;enchantment;land;planeswalker;player]) proliferate +auto=name(Proliferate) NotATarget(*) duplicatecounters(single) text=Volt Charge deals 3 damage to target creature or player. Proliferate. mana={2}{R} type=Instant @@ -131076,7 +131073,7 @@ toughness=5 [card] name=Wall of Limbs abilities=defender -auto=@lifeof(player) from(*[-lifefaker]):counter(1/1,1) +auto=@lifeof(player) from(*[-lifefaker]|*):counter(1/1,1) auto={5}{B}{B}{S}:name(Lose Life) target(player) life:-storedpower text=Defender (This creature can't attack.) -- Whenever you gain life, put a +1/+1 counter on Wall of Limbs. -- {5}{B}{B}, Sacrifice Wall of Limbs: Target player loses X life, where X is Wall of Limbs's power. mana={2}{B} diff --git a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt index 7f56dc1af..4754af731 100644 --- a/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt +++ b/projects/mtg/bin/Res/sets/primitives/planeswalkers.txt @@ -1,7 +1,7 @@ grade=borderline #Planeswalkers Primitives Pack for Wagic the Homebrew. #Please keep these card alphabetized, and try to have the "name=" line at the top of each card -#We sorted this in alphabetical order - Luruz & Vitty85 16-06-2021 +#We sorted this in alphabetical order - Luruz & Vitty85 16-07-2021 [card] name=Abian, Luvion Usurper auto=counter(0/0,5,loyalty) @@ -84,7 +84,7 @@ subtype=Ajani [card] name=Ajani, Mentor of Heroes auto=counter(0/0,4,loyalty) -auto=activate transforms((,newability[if type(*[creature;aura;planeswalker;zpos<=4]|myLibrary)~morethan~0 then target(*[creature;aura;planeswalker;zpos<=4]|myLibrary) moveTo(myHand) and!( all(other *[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )! else all(*[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! ])) oneshot +aicode=activate transforms((,newability[if type(*[creature;aura;planeswalker;zpos<=4]|myLibrary)~morethan~0 then target(*[creature;aura;planeswalker;zpos<=4]|myLibrary) moveTo(myHand) and!( all(other *[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )! else all(*[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! ])) oneshot auto={C(0/0,1,Loyalty)}:name(+1: Distribute three +1/+1 counters) ability$!counter(1/1,1) target(creature)!$ controller && ability$!counter(1/1,1) target(creature)!$ controller && ability$!counter(1/1,1) target(creature)!$ controller auto={C(0/0,1,Loyalty)}:name(+1: Look 4 cards for creature, aura or planeswalker) reveal:4 optionone name(Get a card) target(<1>*[creature;planeswalker;aura]|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<4>*|reveal) bottomoflibrary optiontwoend revealend auto={C(0/0,-8,Loyalty)}:name(-8: Gain 100 life) life:100 controller @@ -739,6 +739,18 @@ type=Legendary Planeswalker subtype=Dovin [/card] [card] +name=Ellywick Tumblestrum +aicode=activate transforms((,newability[target(creature[zpos<=6]|myLibrary) moveTo(myHand) and!( transforms((,newability[if cantargetcard(*[legendary]|*) then life:3 controller],newability[all(other *[zpos<=6]|mylibrary) moveto(myreveal) and!( bottomoflibrary )!])) oneshot )!])) oneshot +auto=counter(0/0,4,Loyalty) +auto={C(0/0,1,Loyalty)}:name(+1: Venture into the dungeon) if compare(type:*[nodngplr]:mybattlefieldplustype:*[nodngopp]:opponentbattlefieldplusend)~equalto~0 then name(Venture into dungeon) name(Venture into dungeon) transforms((,newability[if type(*[dungeon]|mycommandzone)~morethan~0 then name(Explore the dungeon) name(Explore the dungeon) all(*[dungeon]|mycommandzone) counter(0/0.1.Explore)],newability[if type(*[dungeon]|mycommandzone)~equalto~0 then name(Choose a new dungeon) name(Choose a new dungeon) target(*[dungeon]|mysideboard) moveTo(mycommandzone) and!( counter(0/0.1.Explore) )!])) oneshot asSorcery +auto={C(0/0,-2,Loyalty)}:name(-2: Look top 6 cards) reveal:6 optionone name(Get a creature) target(creature|reveal) moveto(myhand) and!( transforms((,newability[if cantargetcard(*[legendary]|*) then life:3 controller])) oneshot )! optiononeend optiontwo name(Put on bottom) target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto={C(0/0,-7,Loyalty)}:name(-7: Get emblem on your creatures) emblem transforms((,newability[lord(creature|mybattlefield) trample],newability[lord(creature|mybattlefield) foreach(*[dungeoncompleted]|myzones) 2/2])) forever dontremove +text=+1: Venture into the dungeon. (Enter the first room or advance to the next room.) -- -2: Look at the top six cards of your library. You may reveal a creature card from among them and put it into your hand. If it’s legendary, you gain 3 life. Put the rest on the bottom of your library in a random order. -- -7: You get an emblem with "Creatures you control have trample and haste and get +2/+2 for each differently named dungeon you’ve completed." +mana={2}{G}{G} +type=Legendary Planeswalker +subtype=Ellywick +[/card] +[card] name=Elspeth, Knight-Errant auto=counter(0/0,4,loyalty) auto={C(0/0,1,Loyalty)}:name(+1: Create a 1/1 soldier) create(Soldier:creature Soldier:1/1:white) @@ -1024,6 +1036,18 @@ subtype=Gideon color=white [/card] [card] +name=Grand Master of Flowers +auto=counter(0/0,3,Loyalty) +auto=this(counter{0/0.1.Loyalty}>=7) becomes(Creature Dragon God,7/7,flying,indestructible) +auto={C(0/0,1,Loyalty)}:name(+1: Creature can't attack) target(creature[-first strike;-double strike;-vigilance]|battlefield) transforms((,newability[cantblock],newability[cantattack],newability[cantpwattack])) uynt +auto={C(0/0,1,Loyalty)}:name(+1: Search Monk in library) target(Monk of the Open Hand|mylibrary) moveto(myhand) and!( shuffle )! +auto={C(0/0,1,Loyalty)}:name(+1: Search Monk in graveyard) target(Monk of the Open Hand|mygraveyard) moveto(myhand) +text=As long as Grand Master of Flowers has seven or more loyalty counters on him, he’s a 7/7 Dragon God creature with flying and indestructible. -- +1: Target creature without first strike, double strike, or vigilance can’t attack or block until your next turn. -- +1: Search your library and/or graveyard for a card named Monk of the Open Hand, reveal it, and put it into your hand. If you search your library this way, shuffle it. +mana={2}{U}{U} +type=Legendary Planeswalker +subtype=Bahamut +[/card] +[card] name=Grist, the Hunger Tide auto=counter(0/0,3,loyalty) auto=transforms((removealltypes,newability[becomes(Legendary Planeswalker Grist)])) forever @@ -1105,6 +1129,18 @@ type=Legendary Planeswalker subtype=Huatli [/card] [card] +name=Inzerva, Master of Insights +aicode=activate target(*[zpos<=2]|opponentLibrary) moveto(opponentreveal) and!( bottomoflibrary )! +auto=counter(0/0,4,loyalty) +auto={C(0/0,+2,Loyalty)}:name(+2: Draw 2 cards and discard) draw:2 && reject target(*|myhand) +auto={C(0/0,-2,Loyalty)}:name(-2: Look at opponent library and scry 2) reveal:2 revealzone(opponentlibrary) optionone name(Put on top) target(*|reveal) moveto(ownerlibrary) optiononeend optiontwo name(Put on bottom) target(<2>*|reveal) bottomoflibrary optiontwoend afterrevealed name(Scry 2) scry:2 scrycore delayed dontshow donothing scrycoreend scryend afterrevealedend revealend +auto={C(0/0,-4,Loyalty)}:name(-4: Emblem: Draw to deal damage) token(Inzerva Emblem,Inzerva Emblem,0/0,shroud,indestructible) and!( transforms((,newability[{0}:name(Look opponent hand) target(*|opponenthand) moveTo(myreveal) and!( moveto(opponenthand) )!],newability[@drawfoeof(player):damage:1 opponent] )) forever )! +text=+2: Draw two cards, then discard a card. -- −2: Look at the top two cards of each other player’s library, then put any number of them on the bottom of that library and the rest on top in any order. Scry 2. -- −4: You get an emblem with "Your opponents play with their hands revealed" and "Whenever an opponent draws a card, this emblem deals 1 damage to them." +mana={1}{2U}{2R} +type=Legendary Planeswalker +subtype=Inzerva +[/card] +[card] name=Jace, Arcane Strategist auto=counter(0/0,4,loyalty) auto=@drawof(player):transforms((,newability[@drawof(player) restriction{once}:counter(1/1,1) target(creature|myBattlefield)])) ueot @@ -1118,9 +1154,11 @@ subtype=Jace [card] name=Jace, Architect of Thought auto=counter(0/0,4,loyalty) -auto={C(0/0,1,Loyalty)}:name(+1: Attacking creatures get -1/-0) all(creature|opponentbattlefield) transforms((,newability[@combat(attacking) source(this):all(trigger[from]) -1/-0 ueot])) uynt oneshot -auto={C(0/0,-2,Loyalty)}:name(-2: CANNOT BE CODED) donothing -auto={C(0/0,-8,Loyalty)}:name(-8: Exile a card from library and cast it) moveto(exile) target(*|opponentLibrary) and!( transforms((,canplayfromexile,castcard(normal))) ueot )! +aicode=activate target(*[zpos<=3]|mylibrary) moveto(myhand) and!( transforms((,newability[all(*[zpos<=3]|mylibrary) moveto(myreveal) and!( bottomoflibrary )!])) oneshot )! +auto={C(0/0,1,Loyalty)}:name(+1: Attacking creatures get -1/-0) transforms((,newability[counter(0/0.1.JaceEffect)],newability[phaseaction[my untap once sourceinplay] counter(0/0.-1.JaceEffect)])) forever +auto=this(counter{0/0.1.JaceEffect}>0) lord(creature|opponentbattlefield) transforms((,newability[@combat(attacking) source(this):-1/0 ueot])) +auto={C(0/0,-2,Loyalty)}:name(-2: Look top 3 cards) reveal:3 optionone name(Put in hand) target(*|reveal) moveto(myhand) optiononeend optiontwo all(*|reveal) bottomoflibrary optiontwoend revealend +auto={C(0/0,-8,Loyalty)}:name(-8: Exile cards from libraries) target(*[-land]|mylibrary) moveto(exile) and!( transforms((,newability[zerocast],newability[canplayfromexile],newability[name(Search opponent library) target(*[-land]|opponentlibrary) moveto(myexile) and!( transforms((,newability[choice name(Cast opponent exiled card) activate castcard(normal)],newability[choice name(Don't cast opponent exiled card) moveto(ownerExile)])) ueot )!])) ueot )! text=+1: Until your next turn, whenever a creature an opponent controls attacks, it gets -1/-0 until end of turn. -- -2: Reveal the top three cards of your library. An opponent separates those cards into two piles. Put one pile into your hand and the other on the bottom of your library in any order. -- -8: For each player, search that player’s library for a nonland card and exile it, then that player shuffles their library. You may cast those cards without paying their mana costs. mana={2}{U}{U} type=Legendary Planeswalker @@ -1518,8 +1556,8 @@ name=Kiora, the Crashing Wave auto=counter(0/0,2,loyalty) auto={C(0/0,1,Loyalty)}:name(+1: Prevention all damamge dealt by and to) target(*|opponentbattlefield) transforms((,newability[preventalldamage from(this)],newability[preventalldamage to(this)])) uynt auto={C(0/0,-1,Loyalty)}:name(-1: Draw a card and may play additional land) draw:1 controller && maxPlay(land)+1 ueot -auto={C(0/0,-5,Loyalty)}:name(-5: Emblem: "Each my end of turn create a 9/9 Kraken") emblem transforms((,newability[@each my endofturn:token(Kraken,Creature Kraken,9/9,blue) controller])) forever dontremove -text=+1: Until your next turn, prevent all damage that would be dealt to and dealt by target permanent an opponent controls. -- -1: Draw a card. You may play an additional land this turn. -- -5: You get an emblem with "At the beginning of your end step, put a 9/9 blue Kraken creature token onto the battlefield." -- Starting Loyalty (2) +auto={C(0/0,-5,Loyalty)}:name(-5: Emblem: "Each my end of turn create a 9/9 Kraken") emblem transforms((,newability[@each my endofturn:token(Kraken^Creature Kraken^9/9^blue) controller])) forever dontremove +text=+1: Until your next turn, prevent all damage that would be dealt to and dealt by target permanent an opponent controls. -- -1: Draw a card. You may play an additional land this turn. -- -5: You get an emblem with "At the beginning of your end step, put a 9/9 blue Kraken creature token onto the battlefield." mana={2}{G}{U} type=Legendary Planeswalker subtype=Kiora @@ -1693,6 +1731,18 @@ type=Legendary Planeswalker subtype=Liliana [/card] [card] +name=Lolth, Spider Queen +auto=counter(0/0,4,Loyalty) +auto=@movedto(creature|graveyard) from(mybattlefield):name(Put loyalty counter) counter(0/0,1,Loyalty) +auto={C(0/0,0,Loyalty)}:name(+0: Draw card and lose life) draw:1 controller && life:-1 controller +auto={C(0/0,-3,Loyalty)}:name(-3: Create spiders) token(Spider,Creature Spider,2/1,black,reach,menace)*2 +auto={C(0/0,-8,Loyalty)}:name(-8: Get emblem on combat damage) emblem transforms((,newability[@combatdamagefoeof(player) from(creature|mybattlefield) restriction{compare(oplifelost)~lessthan~8} turnlimited:phaseaction[my combatdamage once] name(Damage opponent) damage:8minusoplifelostminusend opponent])) forever dontremove +text=Whenever a creature you control dies, put a loyalty counter on Lolth, Spider Queen. -- 0: You draw a card and you lose 1 life. -- -3: Create two 2/1 black Spider creature tokens with menace and reach. -- -8: You get an emblem with "Whenever an opponent is dealt combat damage by one or more creatures you control, if that player lost less than 8 life this turn, they lose life equal to the difference." +mana={3}{B}{B} +type=Legendary Planeswalker +subtype=Lolth +[/card] +[card] name=Lord Windgrace abilities=canbecommander auto=counter(0/0,5,Loyalty) @@ -1729,6 +1779,17 @@ type=Legendary Planeswalker subtype=Lukka [/card] [card] +name=Mordenkainen +auto=counter(0/0,5,Loyalty) +auto={C(0/0,2,Loyalty)}:name(+2: Draw 2 cards) draw:2 && transforms((,newability[name(Put on bottom) target(*|myhand) bottomoflibrary])) forever +auto={C(0/0,-2,Loyalty)}:name(-2: Create Dog Illusion) token(Dog Mor) +auto={C(0/0,-10,Loyalty)}:name(-10: Exchange hand and library) token(Mordenkainen Emblem,Emblem,0/0,shroud,indestructible) and!( transforms((,newability[nomaxhand],newability[all(*|myhand) moveto(myreveal) and!( all(*|mylibrary) moveto(myhand) and!( all(*|myreveal) moveto(mylibrary) and!( shuffle )! )! )!])) forever +text=+2: Draw two cards, then put a card from your hand on the bottom of your library. -- -2: Create a blue Dog Illusion creature token with "This creature’s power and toughness are each equal to twice the number of cards in your hand." -- -10: Exchange your hand and library, then shuffle. You get an emblem with "You have no maximum hand size." +mana={4}{U}{U} +type=Legendary Planeswalker +subtype=Mordenkainen +[/card] +[card] name=Mu Yanling auto=counter(0/0,5,loyalty) auto={C(0/0,2,Loyalty)}:name(+2: Target creature can't be blocked) unblockable target(creature) @@ -1795,10 +1856,11 @@ subtype=Nahiri [card] name=Nahiri, the Harbinger auto=counter(0/0,4,loyalty) -aicode=activate moveto(myBattlefield) notAtarget(artifact,creature|myLibrary) and!( transforms((,newability[haste],newability[phaseaction[endofturn sourceinplay] moveTo(ownerhand)])) forever )! -auto={C(0/0,2,Loyalty)}:name(+2: May discard and draw a card) may notAtarget(*|myHand) transforms((,newability[reject and!(draw:1)!])) forever +aicode=activate target(*[artifact;creature]|myLibrary) moveto(myBattlefield) and!( transforms((,newability[haste],newability[phaseaction[endofturn once sourceinplay] moveTo(ownerhand)])) ueot )! +auto={C(0/0,2,Loyalty)}:name(+2: Don't discard any card) donothing +auto={C(0/0,2,Loyalty)}:name(+2: Discard and draw a card) target(*|myHand) reject and!( draw:1 controller )! auto={C(0/0,-2,Loyalty)}:name(-2: Exile target enchantment, tapped Artifact or Creature) ability$!name(Choose one) choice name(Exile target enchantment) moveTo(exile) target(enchantment) _ choice name(Exile target tapped creature) moveTo(exile) target(creature[tapped]) _ choice name(Exile target tapped artifact) moveTo(exile) target(artifact[tapped])!$ controller -auto={C(0/0,-8,Loyalty)}:name(-8: Search a creature or artifact) reveal:plibrarycount optionone name(choose a creature or artifact) target(artifact,creature|reveal) moveTo(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveTo(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveTo(ownerlibrary) and!(moveto(myBattlefield) and!( transforms((,newability[haste],newability[phaseaction[endofturn sourceinplay] moveTo(ownerhand)])) oneshot )!)! afterrevealedend revealend +auto={C(0/0,-8,Loyalty)}:name(-8: Search a creature or artifact) reveal:plibrarycount optionone name(choose a creature or artifact) target(*[artifact;creature]|reveal) moveTo(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(*|reveal) moveTo(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!( shuffle )! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(myBattlefield) and!( transforms((,newability[haste],newability[phaseaction[endofturn once sourceinplay] moveTo(ownerhand)])) ueot )! afterrevealedend revealend text=+2: You may discard a card. If you do, draw a card. -- -2: Exile target enchantment, tapped artifact, or tapped creature. -- -8: Search your library for an artifact or creature card, put it onto the battlefield, then shuffle your library. It gains haste. Return it to your hand at the beginning of the next end step. mana={2}{R}{W} type=Legendary Planeswalker @@ -2835,9 +2897,8 @@ subtype=Vivien [/card] [card] name=Vivien, Monsters' Advocate -abilities=showfromtoplibrary +abilities=showfromtoplibrary,canplaycreaturelibrarytop aicode=activate moveto(myBattlefield) target(creature[manacost<=storedmanacost]|mylibrary) -auto=canplaycreaturelibrarytop auto=counter(0/0,3,Loyalty) auto={C(0/0,1,Loyalty)}:name(+1: Create a Creature Beast 3/3) token(Beast Viv) auto={C(0/0,-2,Loyalty)}:name(-2: Cast a creature to search a lesser creature) emblem transforms((,newability[@movedTo(creature|myStak):moveTo(myBattlefield) target(creature[manacost<=storedmanacost]|myLibrary) && shuffle])) oneshot @@ -2996,4 +3057,15 @@ text=+1: Add X mana in any combination of {R} and/or {G} to your mana pool, wher mana={2}{R}{G} type=Legendary Planeswalker subtype=Xenagos -[/card] \ No newline at end of file +[/card] +[card] +name=Zariel, Archduke of Avernus +auto=counter(0/0,4,Loyalty) +auto={C(0/0,1,Loyalty)}:name(+1: Creatures get 1/0 and haste) all(creature|myBattlefield) transforms((,newability[1/0],newability[haste])) ueot +auto={C(0/0,0,Loyalty)}:name(+0: Create devil) token(Devil,Creature Devil,1/1,red) and!( transforms((,newability[@movedTo(this|graveyard) from(battlefield):name(Deal 1 damage) damage:1 target(player^creature^planeswalker)])) forever )! +auto={C(0/0,-6,Loyalty)}:name(-6: Get emblem on combat phase) emblem transforms((,newability[@combat(attacking) source(creature|myBattlefield) turnlimited:name(Gain new combat phae) nextphasealter(add^combatphases^controller^after)],newability[@combat(attacking) source(creature|myBattlefield) turnlimited:name(Untap all creatures after combat ends) all(creature[attacking]|myBattlefield) transforms((,newability[phaseaction[my combatends once sourceinplay] untap])) ueot])) forever dontremove +text=+1: Creatures you control get +1/+0 and gain haste until end of turn. -- 0: Create a 1/1 red Devil creature token with "When this creature dies, it deals 1 damage to any target." -- -6: You get an emblem with "At the end of the first combat phase on your turn, untap target creature you control. After this phase, there is an additional combat phase." +mana={2}{R}{R} +type=Legendary Planeswalker +subtype=Zariel +[/card] diff --git a/projects/mtg/bin/Res/sets/primitives/unsupported.txt b/projects/mtg/bin/Res/sets/primitives/unsupported.txt index ddc58d66b..ea18b4644 100644 --- a/projects/mtg/bin/Res/sets/primitives/unsupported.txt +++ b/projects/mtg/bin/Res/sets/primitives/unsupported.txt @@ -2,7 +2,7 @@ grade=unsupported #The cards in this file are not implemented/incomplete yet. #Updated Card lists not in primitives (Borderline, Crappy, Unsupported and Missing Cards up to Aether Revolt) as of 3/14/2017 #Please keep these card alphabetized, and try to have the "name=" line at the top of each card -#I sorted this programatically - Vitty85 16-06-2021 +#I sorted this programatically - Vitty85 16-07-2021 [card] name="Ach! Hans, Run!" text=At the beginning of your upkeep, you may say "Ach Hans, run It's the . . ." and name a creature card. If you do, search your library for the named card, put it into play, then shuffle your library. That creature has haste. Remove it from the game at end of turn. @@ -64,15 +64,6 @@ mana={3} type=Artifact [/card] [card] -name=Absolver Thrull -text=Haunt (When this creature dies, exile it haunting target creature.) -- When Absolver Thrull enters the battlefield or the creature it haunts dies, destroy target enchantment. -mana={3}{W} -type=Creature -subtype=Thrull Cleric -power=2 -toughness=3 -[/card] -[card] name=Abstract Iguanart text=Whenever you cast a spell, note the first letter of its artist's name. If that letter wasn't already noted, put a +1/+1 counter on Abstract Iguanart. mana={1}{R} @@ -4730,12 +4721,6 @@ mana={2}{G} type=Instant [/card] [card] -name=Grave Betrayal -text=Whenever a creature you don't control dies, return it to the battlefield under your control with an additional +1/+1 counter on it at the beginning of the next end step. That creature is a black Zombie in addition to its other colors and types. -mana={5}{B}{B} -type=Enchantment -[/card] -[card] name=Grave Servitude text=You may cast Grave Servitude as though it had flash. If you cast it any time a sorcery couldn't have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step. -- Enchant creature -- Enchanted creature gets +3/-1 and is black. mana={1}{B} @@ -4889,12 +4874,6 @@ mana={0} type=Artifact [/card] [card] -name=Gutter Grime -text=Whenever a nontoken creature you control dies, put a slime counter on Gutter Grime, then put a green Ooze creature token onto the battlefield with "This creature's power and toughness are each equal to the number of slime counters on Gutter Grime." -mana={4}{G} -type=Enchantment -[/card] -[card] name=Gyruda, Doom of Depths text=Companion — Your starting deck contains only cards with even converted mana costs. (If this card is your chosen companion, you may cast it once from outside the game.) -- When Gyruda enters the battlefield, each player puts the top four cards of their library into their graveyard. Put a creature card with an even converted mana cost from among those cards onto the battlefield under your control. mana={4}{UB}{UB} diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index b3f1a61ff..6ac1592a0 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -729,6 +729,39 @@ public: } }; +class TrCardDungeonCompleted: public Trigger +{ +public: + bool limitOnceATurn; + int triggeredTurn; + int totaldng; + string playerName; + TrCardDungeonCompleted(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false, int totaldng = 0, string playerName = "") : + Trigger(observer, id, source,once, tc),limitOnceATurn(limitOnceATurn), totaldng(totaldng), playerName(playerName) + { + } + + int triggerOnEventImpl(WEvent * event) + { + WEventCardDungeonCompleted * e = dynamic_cast (event); + if (!e) return 0; + if (limitOnceATurn && triggeredTurn == game->turn) + return 0; + if (totaldng > 0 && totaldng != e->totaldng) + return 0; + if (playerName != "" && playerName != e->playerName) + return 0; + if (!tc->canTarget(e->card)) return 0; + triggeredTurn = game->turn; + return 1; + } + + TrCardDungeonCompleted * clone() const + { + return NEW TrCardDungeonCompleted(*this); + } +}; + class TrCardRolledDie: public Trigger { public: @@ -747,6 +780,8 @@ public: if (!e) return 0; if (limitOnceATurn && triggeredTurn == game->turn) return 0; + if (rollresult == -1 && e->card->dieNumFaces != e->card->lastRollResult) + return 0; if (rollresult > 0 && rollresult != e->card->lastRollResult) return 0; if (playerName != "" && playerName != e->playerName) @@ -4027,6 +4062,19 @@ public: AAExploresEvent * clone() const; ~AAExploresEvent(); }; +//Dungeon Completed +class AAAlterDungeonCompleted: public ActivatedAbilityTP +{ +public: + int dungeoncounter; + + AAAlterDungeonCompleted(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int dungeoncounter, ManaCost * _cost = NULL, + int who = TargetChooser::UNSET); + int resolve(); + const string getMenuText(); + AAAlterDungeonCompleted * clone() const; + ~AAAlterDungeonCompleted(); +}; //Yidaro Counter class AAAlterYidaroCount: public ActivatedAbilityTP { @@ -6566,11 +6614,12 @@ class AASetDie: public InstantAbility { public: int side; + int diefaces; string abilityToAlter; string abilityWin; string abilityLose; MTGAbility * abilityAltered; - AASetDie(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, int side = -1,string toAdd = ""); + AASetDie(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, int side = -1, int diefaces = 6, string toAdd = ""); int resolve(); const string getMenuText(); AASetDie * clone() const; @@ -6582,7 +6631,8 @@ public: string baseAbility; AASetDie * setDie; int userchoice; - GenericRollDie(GameObserver* observer, int id, MTGCardInstance * source, Targetable * target, string toAdd = "", ManaCost * cost = NULL, int userchoice = 0); + int diefaces; + GenericRollDie(GameObserver* observer, int id, MTGCardInstance * source, Targetable * target, string toAdd = "", ManaCost * cost = NULL, int userchoice = 0, int diefaces = 6); int resolve(); const string getMenuText(); GenericRollDie * clone() const; diff --git a/projects/mtg/include/GameStateDeckViewer.h b/projects/mtg/include/GameStateDeckViewer.h index d3a1ea9f4..430079b1f 100644 --- a/projects/mtg/include/GameStateDeckViewer.h +++ b/projects/mtg/include/GameStateDeckViewer.h @@ -34,7 +34,8 @@ enum SBMENU_ADD_NORMAL = 803, SBMENU_ADD_SB = 804, SBMENU_ADD_CMD = 805, - SBMENU_ADD_CANCEL = 806 + SBMENU_ADD_DNG = 806, + SBMENU_ADD_CANCEL = 807 }; // enums for menu options @@ -76,7 +77,7 @@ private: DeckViewerStages mStage; JMusic * bgMusic; - InteractiveButton *toggleDeckButton, *sb_cmd_Button, *sellCardButton, *statsPrevButton, *filterButton, *toggleViewButton, *toggleUpButton, *toggleDownButton, *toggleLeftButton, *toggleRightButton; + InteractiveButton *toggleDeckButton, *sb_cmd_dng_Button, *sellCardButton, *statsPrevButton, *filterButton, *toggleViewButton, *toggleUpButton, *toggleDownButton, *toggleLeftButton, *toggleRightButton; WGuiFilters * filterMenu; WSrcDeckViewer * source; @@ -91,6 +92,7 @@ private: DeckDataWrapper * myCollection; DeckDataWrapper * mySideboard; DeckDataWrapper * myCommandZone; + DeckDataWrapper * myDungeonZone; StatsWrapper * mStatsWrapper; int hudAlpha; @@ -115,6 +117,7 @@ private: void toggleView(); void insertSideBoard(); void insertCommandZone(); + void insertDungeonZone(); public: GameStateDeckViewer(GameApp* parent); virtual ~GameStateDeckViewer(); @@ -122,12 +125,13 @@ public: void updateFilters(); void rebuildFilters(); void toggleCollection(); - void toggleSB_CMD(); + void toggleSB_CMD_DNG(); void Start(); virtual void End(); void addRemove(MTGCard * card); void SBaddRemove(MTGCard * card); void CMDaddRemove(MTGCard * card); + void DNGaddRemove(MTGCard * card); void choiceAddRemove(MTGCard * card); virtual void Update(float dt); void renderOnScreenBasicInfo(); diff --git a/projects/mtg/include/MTGCardInstance.h b/projects/mtg/include/MTGCardInstance.h index 90c3ab32e..d04d87111 100644 --- a/projects/mtg/include/MTGCardInstance.h +++ b/projects/mtg/include/MTGCardInstance.h @@ -117,6 +117,7 @@ public: int lastFlipResult; int dieSide; int lastRollResult; + int dieNumFaces; int scryedCards; int stillInUse(); diff --git a/projects/mtg/include/MTGDeck.h b/projects/mtg/include/MTGDeck.h index 609a72072..4ef1f55d7 100644 --- a/projects/mtg/include/MTGDeck.h +++ b/projects/mtg/include/MTGDeck.h @@ -221,6 +221,7 @@ public: vector meta_AIHints; vector Sideboard; vector CommandZone; + vector DungeonZone; string meta_unlockRequirements; int meta_id; @@ -239,6 +240,7 @@ public: int remove(MTGCard * card); void replaceSB(vector newSB = vector()); void replaceCMD(vector newCMD = vector()); + void replaceDNG(vector newDNG = vector()); string getFilename(); int save(); int save(const string& destFileName, bool useExpandedDescriptions, const string& deckTitle, const string& deckDesc); diff --git a/projects/mtg/include/MTGDefinitions.h b/projects/mtg/include/MTGDefinitions.h index 7d0038eaa..321d16500 100644 --- a/projects/mtg/include/MTGDefinitions.h +++ b/projects/mtg/include/MTGDefinitions.h @@ -308,7 +308,13 @@ class Constants LIFEFAKER = 181, DOUBLEFACEDEATH = 182, GAINEDDOUBLEFACEDEATH = 183, - NB_BASIC_ABILITIES = 184, + TWODNGTRG = 184, + NODNGOPP = 185, + NODNGPLR = 186, + CANPLAYAURAEQUIPTOPLIBRARY = 187,//aurasequipment + COUNTERDEATH = 188, + DUNGEONCOMPLETED = 189, + NB_BASIC_ABILITIES = 190, RARITY_S = 'S', //Special Rarity RARITY_M = 'M', //Mythics diff --git a/projects/mtg/include/MTGGameZones.h b/projects/mtg/include/MTGGameZones.h index 6a1cb7386..bcceed962 100644 --- a/projects/mtg/include/MTGGameZones.h +++ b/projects/mtg/include/MTGGameZones.h @@ -250,6 +250,7 @@ public: MTGCardInstance * putInExile(MTGCardInstance * card); MTGCardInstance * putInLibrary(MTGCardInstance * card); MTGCardInstance * putInHand(MTGCardInstance * card); + MTGCardInstance * putInSideboard(MTGCardInstance * card); MTGCardInstance * putInZone(MTGCardInstance * card, MTGGameZone * from, MTGGameZone * to, bool asCopy = false); int isInPlay(MTGCardInstance * card); int isInGrave(MTGCardInstance * card); diff --git a/projects/mtg/include/Player.h b/projects/mtg/include/Player.h index e2c2fcc19..c853124b1 100644 --- a/projects/mtg/include/Player.h +++ b/projects/mtg/include/Player.h @@ -44,6 +44,7 @@ public: int drawCounter; int energyCount; int yidaroCount; + int dungeonCompleted; int numOfCommandCast; int monarch; int surveilOffset; diff --git a/projects/mtg/include/WEvent.h b/projects/mtg/include/WEvent.h index c7fb3964e..8404c45b5 100644 --- a/projects/mtg/include/WEvent.h +++ b/projects/mtg/include/WEvent.h @@ -390,6 +390,14 @@ struct WEventCardExplored : public WEventCardUpdate { virtual Targetable * getTarget(int target); }; +//dungeon completed event +struct WEventCardDungeonCompleted : public WEventCardUpdate { + int totaldng; + string playerName; + WEventCardDungeonCompleted(MTGCardInstance * card, int totaldng, string playerName); + virtual Targetable * getTarget(int target); +}; + //roll die event struct WEventCardRollDie : public WEventCardUpdate { string playerName; diff --git a/projects/mtg/src/ActionStack.cpp b/projects/mtg/src/ActionStack.cpp index 144c97517..9e7c513d8 100644 --- a/projects/mtg/src/ActionStack.cpp +++ b/projects/mtg/src/ActionStack.cpp @@ -605,9 +605,14 @@ int PutInGraveyard::resolve() } if (card->basicAbilities[(int)Constants::INPLAYDEATH] || card->basicAbilities[(int)Constants::INPLAYTAPDEATH]) { - card->controller()->game->putInZone(card, zone, card->owner->game->battlefield); - if(card->basicAbilities[(int)Constants::INPLAYTAPDEATH]) + bool toTap = card->basicAbilities[(int)Constants::INPLAYTAPDEATH]; + bool addCounter = card->basicAbilities[(int)Constants::COUNTERDEATH]; + card = card->controller()->game->putInZone(card, zone, card->owner->game->graveyard); + card = card->controller()->game->putInZone(card, card->owner->game->graveyard, card->owner->game->battlefield); + if(toTap) card->tap(true); + if(addCounter) + card->counters->addCounter(1, 1, false); return 1; } if (zone == observer->players[0]->game->inPlay || zone == observer->players[1]->game->inPlay) diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index 332b22ded..6400f7a30 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -1240,6 +1240,48 @@ AAAlterDevotionOffset::~AAAlterDevotionOffset() { } +//AA Dungeon Completed +AAAlterDungeonCompleted::AAAlterDungeonCompleted(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int dungeoncounter, ManaCost * _cost, + int who) : + ActivatedAbilityTP(observer, _id, _source, _target, _cost, who), dungeoncounter(dungeoncounter) +{ +} + +int AAAlterDungeonCompleted::resolve() +{ + Damageable * _target = (Damageable *) getTarget(); + if (_target) + { + Player * pTarget = (Player*)_target; + if(pTarget) + { + source = pTarget->game->putInSideboard(source); + source->basicAbilities[Constants::DUNGEONCOMPLETED] = 1; + pTarget->dungeonCompleted += dungeoncounter; + if(pTarget->dungeonCompleted < 0) + pTarget->dungeonCompleted = 0; + WEvent * e = NEW WEventCardDungeonCompleted(source, pTarget->dungeonCompleted, source->controller()->getDisplayName()); + game->receiveEvent(e); + } + } + return 0; +} + +const string AAAlterDungeonCompleted::getMenuText() +{ + WParsedInt parsedNum(dungeoncounter); + return _(parsedNum.getStringValue() + " Dungeon Completed Counter ").c_str(); +} + +AAAlterDungeonCompleted * AAAlterDungeonCompleted::clone() const +{ + return NEW AAAlterDungeonCompleted(*this); +} + +AAAlterDungeonCompleted::~AAAlterDungeonCompleted() +{ +} + //AA Yidaro Count AAAlterYidaroCount::AAAlterYidaroCount(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int yidarocount, ManaCost * _cost, int who) : @@ -3188,9 +3230,9 @@ AASetCoin::~AASetCoin() } // -//rolling a 6 side die -GenericRollDie::GenericRollDie(GameObserver* observer, int id, MTGCardInstance * source, Targetable *, string _toAdd, ManaCost * cost, int userchoice) : -ActivatedAbility(observer, id, source, cost, 0), baseAbility(_toAdd), userchoice(userchoice) +//rolling a generic die +GenericRollDie::GenericRollDie(GameObserver* observer, int id, MTGCardInstance * source, Targetable *, string _toAdd, ManaCost * cost, int userchoice, int diefaces) : +ActivatedAbility(observer, id, source, cost, 0), baseAbility(_toAdd), userchoice(userchoice), diefaces(diefaces) { this->GetId(); setDie = NULL; @@ -3201,17 +3243,17 @@ int GenericRollDie::resolve() if (!target) return 0; vectorselection; - if(userchoice > 0 && userchoice < 7){ - setDie = NEW AASetDie(game, game->mLayers->actionLayer()->getMaxId(), source,(MTGCardInstance*)target, userchoice, baseAbility); + if(userchoice > 0 && userchoice <= diefaces){ + setDie = NEW AASetDie(game, game->mLayers->actionLayer()->getMaxId(), source,(MTGCardInstance*)target, userchoice, diefaces, baseAbility); MTGAbility * set = setDie->clone(); set->oneShot = true; game->mLayers->actionLayer()->currentActionCard = (MTGCardInstance *)target; set->resolve(); SAFE_DELETE(setDie); } else{ - for (int i = 1; i < 7; ++i) + for (int i = 1; i <= diefaces; ++i) { - setDie = NEW AASetDie(game, game->mLayers->actionLayer()->getMaxId(), source,(MTGCardInstance*)target, i, baseAbility); + setDie = NEW AASetDie(game, game->mLayers->actionLayer()->getMaxId(), source,(MTGCardInstance*)target, i, diefaces, baseAbility); MTGAbility * set = setDie->clone(); set->oneShot = true; selection.push_back(set); @@ -3230,7 +3272,9 @@ int GenericRollDie::resolve() const string GenericRollDie::getMenuText() { -return "Roll a Die"; + std::stringstream msg; + msg << "Roll a " << diefaces << " faced Die"; + return msg.str(); } GenericRollDie * GenericRollDie::clone() const @@ -3243,9 +3287,9 @@ GenericRollDie::~GenericRollDie() { } -//set color choosen - AASetDie::AASetDie(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * _target, int _side, string toAlter): - InstantAbility(observer, id, source),side(_side), abilityToAlter(toAlter) +//set die result + AASetDie::AASetDie(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * _target, int _side, int _diefaces, string toAlter): + InstantAbility(observer, id, source),side(_side), diefaces(_diefaces), abilityToAlter(toAlter) { this->target = _target; abilityAltered = NULL; @@ -3256,8 +3300,9 @@ int AASetDie::resolve() MTGCardInstance * _target = (MTGCardInstance *)target; _target->dieSide = side; - int roll = 1 + game->getRandomGenerator()->random() % 6; + int roll = 1 + game->getRandomGenerator()->random() % diefaces; _target->lastRollResult = roll; + _target->dieNumFaces = diefaces; WEvent * e = NEW WEventCardRollDie(_target, source->controller()->getDisplayName()); game->receiveEvent(e); vectorWin = parseBetween(abilityToAlter,"winability "," winabilityend"); @@ -4473,6 +4518,8 @@ int AAFlip::resolve() MTGCardInstance * myParent = NULL; if(_target->target) myParent = _target->target; + if(_target->nameOrig == "") + _target->nameOrig = _target->name; // Saves the orignal card name before to flip the card. _target->name = myFlip->name; _target->setName(myFlip->name); if(!isflipcard)//transform card diff --git a/projects/mtg/src/GameStateDeckViewer.cpp b/projects/mtg/src/GameStateDeckViewer.cpp index 3d3a4456d..27439125c 100644 --- a/projects/mtg/src/GameStateDeckViewer.cpp +++ b/projects/mtg/src/GameStateDeckViewer.cpp @@ -39,6 +39,7 @@ GameStateDeckViewer::GameStateDeckViewer(GameApp* parent) : myDeck = NULL; mySideboard = NULL; myCommandZone = NULL; + myDungeonZone = NULL; filterMenu = NULL; source = NULL; hudAlpha = 0; @@ -50,7 +51,7 @@ GameStateDeckViewer::GameStateDeckViewer(GameApp* parent) : statsPrevButton = NEW InteractiveButton(NULL, kPrevStatsButtonId, Fonts::MAIN_FONT, "Stats", SCREEN_WIDTH_F - 35, SCREEN_HEIGHT_F - 20, JGE_BTN_PREV); toggleDeckButton = NEW InteractiveButton(NULL, kToggleDeckActionId, Fonts::MAIN_FONT, "View Deck", 10, SCREEN_HEIGHT_F - 20, JGE_BTN_PRI); sellCardButton = NEW InteractiveButton(NULL, kSellCardActionId, Fonts::MAIN_FONT, "Sell Card", (SCREEN_WIDTH_F/ 2) - 125, SCREEN_HEIGHT_F - 20, JGE_BTN_SEC); - sb_cmd_Button = NEW InteractiveButton(NULL, kSBActionId, Fonts::MAIN_FONT, "View SB/CMD", (SCREEN_WIDTH_F/ 2) - 35, SCREEN_HEIGHT_F - 20, JGE_BTN_SOUND); + sb_cmd_dng_Button = NEW InteractiveButton(NULL, kSBActionId, Fonts::MAIN_FONT, "View SB", (SCREEN_WIDTH_F/ 2) - 35, SCREEN_HEIGHT_F - 20, JGE_BTN_SOUND); filterButton = NEW InteractiveButton(NULL, kFilterButtonId, Fonts::MAIN_FONT, "Filter", (SCREEN_WIDTH_F - 116), SCREEN_HEIGHT_F - 20, JGE_BTN_CTRL); //TODO: Check if that button is available: toggleViewButton = NEW InteractiveButton(NULL, kSwitchViewButton, Fonts::MAIN_FONT, "Grid", (SCREEN_WIDTH_F/ 2) + 50, SCREEN_HEIGHT_F - 20, JGE_BTN_MAX); @@ -65,7 +66,7 @@ GameStateDeckViewer::~GameStateDeckViewer() SAFE_DELETE(bgMusic); SAFE_DELETE(toggleDeckButton); SAFE_DELETE(sellCardButton); - SAFE_DELETE(sb_cmd_Button); + SAFE_DELETE(sb_cmd_dng_Button); SAFE_DELETE(statsPrevButton); SAFE_DELETE(filterButton); SAFE_DELETE(toggleViewButton); @@ -90,6 +91,11 @@ GameStateDeckViewer::~GameStateDeckViewer() SAFE_DELETE(myCommandZone->parent); SAFE_DELETE(myCommandZone); } + if (myDungeonZone) + { + SAFE_DELETE(myDungeonZone->parent); + SAFE_DELETE(myDungeonZone); + } if (myCollection) { SAFE_DELETE(myCollection->parent); @@ -125,7 +131,7 @@ void GameStateDeckViewer::updateFilters() void GameStateDeckViewer::toggleCollection() { - if(mView->deck() == mySideboard || mView->deck() == myCommandZone) + if(mView->deck() == mySideboard || mView->deck() == myCommandZone || mView->deck() == myDungeonZone) return; if (mView->deck() == myCollection) @@ -142,7 +148,7 @@ void GameStateDeckViewer::toggleCollection() updateFilters(); } -void GameStateDeckViewer::toggleSB_CMD() +void GameStateDeckViewer::toggleSB_CMD_DNG() { if(mView->deck() == myDeck) return; @@ -150,17 +156,22 @@ void GameStateDeckViewer::toggleSB_CMD() if (mView->deck() == myCollection) { mView->SetDeck(mySideboard); - sb_cmd_Button->setText("View CMD"); + sb_cmd_dng_Button->setText("View CMD"); } else if (mView->deck() == mySideboard) { mView->SetDeck(myCommandZone); - sb_cmd_Button->setText("View Coll."); + sb_cmd_dng_Button->setText("View DNG"); + } + else if (mView->deck() == myCommandZone) + { + mView->SetDeck(myDungeonZone); + sb_cmd_dng_Button->setText("View Coll."); } else { mView->SetDeck(myCollection); - sb_cmd_Button->setText("View SB/CMD"); + sb_cmd_dng_Button->setText("View SB"); } //source->swapSrc(); //updateFilters(); @@ -210,6 +221,7 @@ void GameStateDeckViewer::Start() myDeck = NULL; mySideboard = NULL; myCommandZone = NULL; + myDungeonZone = NULL; mStage = STAGE_WELCOME; last_user_activity = NO_USER_ACTIVITY_HELP_DELAY + 1; @@ -282,6 +294,11 @@ void GameStateDeckViewer::End() SAFE_DELETE(myCommandZone->parent); SAFE_DELETE(myCommandZone); } + if (myDungeonZone) + { + SAFE_DELETE(myDungeonZone->parent); + SAFE_DELETE(myDungeonZone); + } SAFE_DELETE(pricelist); SAFE_DELETE(playerdata); SAFE_DELETE(filterMenu); @@ -354,6 +371,28 @@ void GameStateDeckViewer::CMDaddRemove(MTGCard * card) mView->reloadIndexes(); } +void GameStateDeckViewer::DNGaddRemove(MTGCard * card) +{ + if (!card) return; + if ((card->getRarity() != Constants::RARITY_T) || (card->getId() < 1)) return; + if (mView->deck()->Remove(card, 1, (mView->deck() == myDungeonZone))) + { + if (mView->deck() == myCollection) + { + myDungeonZone->Add(card); + myDungeonZone->Sort(WSrcCards::SORT_ALPHA); + } + else + { + myCollection->Add(card); + } + } + myCollection->validate(); + myDungeonZone->validate(); + mStatsWrapper->needUpdate = true; + mView->reloadIndexes(); +} + void GameStateDeckViewer::choiceAddRemove(MTGCard * card) { if (!card) return; @@ -366,19 +405,37 @@ void GameStateDeckViewer::choiceAddRemove(MTGCard * card) if (mView->deck() == myCollection) { sbMenu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), SBMENU_CHOICE, this, Fonts::MAIN_FONT, menuXOffset, menuYOffset, "Add/Remove Cards"); - sbMenu->Add(SBMENU_ADD_NORMAL, "Add to Deck"); - sbMenu->Add(SBMENU_ADD_SB, "Add to Sideboard"); - if(card->data->hasType("Legendary") && (card->data->hasType("Creature") || card->data->basicAbilities[Constants::CANBECOMMANDER])) - sbMenu->Add(SBMENU_ADD_CMD, "Choose as Commander"); + if(!card->data->hasType("Dungeon")){ + sbMenu->Add(SBMENU_ADD_NORMAL, "Add to Deck"); + sbMenu->Add(SBMENU_ADD_SB, "Add to Sideboard"); + if(card->data->hasType("Legendary") && (card->data->hasType("Creature") || card->data->basicAbilities[Constants::CANBECOMMANDER])) + sbMenu->Add(SBMENU_ADD_CMD, "Choose as Commander"); + } else + sbMenu->Add(SBMENU_ADD_DNG, "Add to Dungeons"); sbMenu->Add(SBMENU_ADD_CANCEL, "Cancel"); } - else + else if (mView->deck() == myCommandZone) + { + sbMenu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), SBMENU_CHOICE, this, Fonts::MAIN_FONT, menuXOffset, menuYOffset, "Add/Remove Cards"); + sbMenu->Add(SBMENU_ADD_CMD, "Remove as Commander"); + sbMenu->Add(SBMENU_ADD_CANCEL, "Cancel"); + } + else if (mView->deck() == mySideboard) + { + sbMenu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), SBMENU_CHOICE, this, Fonts::MAIN_FONT, menuXOffset, menuYOffset, "Add/Remove Cards"); + sbMenu->Add(SBMENU_ADD_SB, "Remove from Sideboard"); + sbMenu->Add(SBMENU_ADD_CANCEL, "Cancel"); + } + else if (mView->deck() == myDungeonZone) + { + sbMenu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), SBMENU_CHOICE, this, Fonts::MAIN_FONT, menuXOffset, menuYOffset, "Add/Remove Cards"); + sbMenu->Add(SBMENU_ADD_DNG, "Remove from Dungeons"); + sbMenu->Add(SBMENU_ADD_CANCEL, "Cancel"); + } + else if (mView->deck() == myDeck) { sbMenu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), SBMENU_CHOICE, this, Fonts::MAIN_FONT, menuXOffset, menuYOffset, "Add/Remove Cards"); sbMenu->Add(SBMENU_ADD_NORMAL, "Remove Card"); - //sbMenu->Add(SBMENU_ADD_SB, "Add to Sideboard"); - if(card->data->hasType("Legendary") && (card->data->hasType("Creature") || card->data->basicAbilities[Constants::CANBECOMMANDER])) - sbMenu->Add(SBMENU_ADD_CMD, "Choose as Commander"); sbMenu->Add(SBMENU_ADD_CANCEL, "Cancel"); } } @@ -425,6 +482,26 @@ void GameStateDeckViewer::insertCommandZone() } } +void GameStateDeckViewer::insertDungeonZone() +{ + if(myDungeonZone->getCount()) + { + vector newDNG; + for (int i = 0; i < myDungeonZone->Size(true); i++) + { + MTGCard * current = myDungeonZone->getCard(i, true); + int howmanyinDeck = myDungeonZone->count(current); + for (int i = 0; i < howmanyinDeck; i++) + { + stringstream cid; + cid << current->getMTGId(); + newDNG.push_back(cid.str()); + } + } + myDeck->parent->replaceDNG(newDNG); + } +} + void GameStateDeckViewer::saveDeck() { //update the corresponding meta data object @@ -436,6 +513,8 @@ void GameStateDeckViewer::saveDeck() insertSideBoard(); //insert commanders to mydeck parents insertCommandZone(); + //insert dungeons to mydeck parents + insertDungeonZone(); //save deck myDeck->save(); playerdata->save(); @@ -491,7 +570,7 @@ bool GameStateDeckViewer::userPressedButton() { return ((toggleDeckButton->ButtonPressed()) || (sellCardButton->ButtonPressed()) - || (sb_cmd_Button->ButtonPressed()) + || (sb_cmd_dng_Button->ButtonPressed()) || (statsPrevButton->ButtonPressed()) || (filterButton->ButtonPressed()) || (toggleViewButton->ButtonPressed()) @@ -506,7 +585,7 @@ void GameStateDeckViewer::setButtonState(bool state) { toggleDeckButton->setIsSelectionValid(state); sellCardButton->setIsSelectionValid(state); - sb_cmd_Button->setIsSelectionValid(state); + sb_cmd_dng_Button->setIsSelectionValid(state); statsPrevButton->setIsSelectionValid(state); filterButton->setIsSelectionValid(state); toggleViewButton->setIsSelectionValid(state); @@ -518,12 +597,12 @@ void GameStateDeckViewer::setButtonState(bool state) void GameStateDeckViewer::RenderButtons() { - if(mView->deck() != mySideboard && mView->deck() != myCommandZone) + if(mView->deck() != mySideboard && mView->deck() != myCommandZone && mView->deck() != myDungeonZone) toggleDeckButton->Render(); sellCardButton->Render(); if(mView->deck() != myDeck) - sb_cmd_Button->Render(); - if(mView->deck() != mySideboard && mView->deck() != myCommandZone) + sb_cmd_dng_Button->Render(); + if(mView->deck() != mySideboard && mView->deck() != myCommandZone && mView->deck() != myDungeonZone) filterButton->Render(); statsPrevButton->Render(); toggleViewButton->Render(); @@ -631,7 +710,7 @@ void GameStateDeckViewer::Update(float dt) if (last_user_activity > 0.2) { last_user_activity = 0; - toggleSB_CMD(); + toggleSB_CMD_DNG(); } break; case JGE_BTN_PRI: @@ -685,9 +764,9 @@ void GameStateDeckViewer::Update(float dt) break; case JGE_BTN_MENU: - if(mView->deck() == mySideboard || mView->deck() == myCommandZone) + if(mView->deck() == mySideboard || mView->deck() == myCommandZone || mView->deck() == myDungeonZone) { - toggleSB_CMD(); + toggleSB_CMD_DNG(); } else { @@ -696,7 +775,7 @@ void GameStateDeckViewer::Update(float dt) } break; case JGE_BTN_CTRL: - if (mView->deck() == mySideboard || mView->deck() == myCommandZone) + if (mView->deck() == mySideboard || mView->deck() == myCommandZone || mView->deck() == myDungeonZone) break;//SB is for viewing add or remove only else if(!mView->ButtonPressed(JGE_BTN_CTRL)) { @@ -985,7 +1064,8 @@ void GameStateDeckViewer::renderOnScreenMenu() int value = myDeck->getCount(WSrcDeck::UNFILTERED_COPIES); int sb_value = mySideboard->getCount(WSrcDeck::UNFILTERED_COPIES); int cmd_value = myCommandZone->getCount(WSrcDeck::UNFILTERED_COPIES); - sprintf(buffer, _("Your Deck: %i cards.\nSideboard: %i cards.\nCommanders: %i cards").c_str(), value, sb_value,cmd_value); + int dng_value = myDungeonZone->getCount(WSrcDeck::UNFILTERED_COPIES); + sprintf(buffer, _("Your Deck: %i cards.\nSideboard: %i cards.\nCommanders: %i cards.\nDungeons: %i cards").c_str(), value, sb_value,cmd_value,dng_value); font->DrawString(buffer, SCREEN_WIDTH - 200 + rightTransition, SCREEN_HEIGHT / 2 + 15); for (int j = 0; j < Constants::NB_Colors; j++) @@ -1625,6 +1705,12 @@ int GameStateDeckViewer::loadDeck(int deckid) SAFE_DELETE(myCommandZone->parent); SAFE_DELETE(myCommandZone); } + //dng + if (myDungeonZone) + { + SAFE_DELETE(myDungeonZone->parent); + SAFE_DELETE(myDungeonZone); + } //temp deck for sb? MTGDeck * sbtempDeck = NEW MTGDeck(MTGCollection()); if(myDeck->parent) @@ -1707,10 +1793,52 @@ int GameStateDeckViewer::loadDeck(int deckid) myCollection->validate(); } //endcmd + //temp deck for dng? + MTGDeck * dngtempDeck = NEW MTGDeck(MTGCollection()); + if(myDeck->parent) + {//add cards from commanders lists + if(myDeck->parent->DungeonZone.size()) + { + for(unsigned int j = 0; j < myDeck->parent->DungeonZone.size(); j++) + { + string cardID = myDeck->parent->DungeonZone[j]; + dngtempDeck->add(atoi(cardID.c_str())); + } + } + } + myDungeonZone = NEW DeckDataWrapper(dngtempDeck); + for (int i = 0; i < myDungeonZone->Size(true); i++) + { + MTGCard * current = myDungeonZone->getCard(i, true); + int howmanyinDeck = myDungeonZone->count(current); + for (int i = myCollection->count(current); i < howmanyinDeck; i++) + { + cPure = false; + if (cheatmode) + { //Are we cheating? + playerdata->collection->add(current); //Yup, add it to collection permanently. + myCollection->Add(current); + } + else + { + myDungeonZone->Remove(current,howmanyinDeck-i); //Nope. Remove it from sb. + break; + } + } + + myCollection->Remove(current, myDungeonZone->count(current)); + } + if (!cPure) + { + myDungeonZone->validate(); + myCollection->validate(); + } + //enddng myDeck->Sort(WSrcCards::SORT_ALPHA); mySideboard->Sort(WSrcCards::SORT_ALPHA); myCommandZone->Sort(WSrcCards::SORT_ALPHA); + myDungeonZone->Sort(WSrcCards::SORT_ALPHA); SAFE_DELETE(filterMenu); rebuildFilters(); mView->reloadIndexes(); @@ -1877,6 +2005,14 @@ void GameStateDeckViewer::ButtonPressed(int controllerId, int controlId) sbMenu->Close(); break; } + case SBMENU_ADD_DNG: + { + MTGCard * card = mView->getActiveCard(); + if (card) + DNGaddRemove(card); + sbMenu->Close(); + break; + } case SBMENU_ADD_CANCEL: sbMenu->Close(); break; diff --git a/projects/mtg/src/GameStateDuel.cpp b/projects/mtg/src/GameStateDuel.cpp index 112410b91..4d8a5fcc4 100644 --- a/projects/mtg/src/GameStateDuel.cpp +++ b/projects/mtg/src/GameStateDuel.cpp @@ -147,7 +147,7 @@ GameState(parent, "duel") menu = NULL; popupScreen = NULL; mGamePhase = DUEL_STATE_UNSET; - taskList = NEW TaskList(options.profileFile(PLAYER_TASKS).c_str()); + taskList = NEW TaskList(); #ifdef TESTSUITE testSuite = NULL; @@ -190,6 +190,8 @@ void GameStateDuel::Start() OpponentsDeckid = 0; bool createDeckMenu=true; // create only a deckmenu if not in tournament + SAFE_DELETE(taskList); + taskList = NEW TaskList(); #ifdef NETWORK_SUPPORT if(!mParent->mpNetwork) { @@ -358,6 +360,7 @@ void GameStateDuel::End() SAFE_DELETE(opponentMenu); SAFE_DELETE(deckmenu); SAFE_DELETE(popupScreen); + SAFE_DELETE(taskList); //reset player for next match (only if actual match is finished) tournament->End(); @@ -1682,7 +1685,6 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId) // break; case MENUITEM_TASKBOARD: if(taskList->getState() != TaskList::TASKS_ACTIVE){ - taskList->load(options.profileFile(PLAYER_TASKS).c_str()); taskList->Start(); } else { taskList->End(); diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index db0e5f364..2179c8adf 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -1245,12 +1245,33 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell if (TargetChooser * tc = parseSimpleTC(s, "explored", card)) return NEW TrCardExplored(observer, id, card, tc, once, limitOnceATurn); + //Dungeon has been completer from a card + if (TargetChooser * tc = parseSimpleTC(s, "dungeoncompleted", card)){ + int totaldng = 0; + vectorres = parseBetween(s, "total(",")"); + if(res.size()){ + totaldng = atoi(res[1].c_str()); + } + string playerName = ""; + vectorfrom = parseBetween(s, "from(",")"); + if(from.size() && from[1] == "opponent"){ + playerName = card->controller()->opponent()->getDisplayName(); + } else if(from.size() && from[1] == "controller"){ + playerName = card->controller()->getDisplayName(); + } + return NEW TrCardDungeonCompleted(observer, id, card, tc, once, limitOnceATurn, totaldng, playerName); + } + //Roll die has been performed from a card if (TargetChooser * tc = parseSimpleTC(s, "dierolled", card)){ int rollresult = 0; vectorres = parseBetween(s, "result(",")"); if(res.size()){ - rollresult = atoi(res[1].c_str()); + if(res[1] == "max"){ + rollresult = -1; + } else { + rollresult = atoi(res[1].c_str()); + } } string playerName = ""; vectorfrom = parseBetween(s, "from(",")"); @@ -1824,6 +1845,10 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG { size_t pos1 = s.find("transforms(("); // Try to handle pay ability inside ability$! or transforms keywords. size_t pos2 = s.find("ability$!"); + if(pos2 == string::npos) + pos2 = s.find("winability"); // Try to handle pay ability inside winability or loseability keywords. + if(pos2 == string::npos) + pos2 = s.find("loseability"); vector splitMayPaystr = parseBetween(s, "pay(", ")", true); if((pos1 == string::npos && pos2 == string::npos) || (pos2 != string::npos && pos1 != string::npos && found < pos1 && found < pos2) || (pos2 == string::npos && pos1 != string::npos && found < pos1) || (pos1 == string::npos && pos2 != string::npos && found < pos2)){ @@ -1844,9 +1869,13 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG storedAbilityString = splitGrant[1]; size_t pos1 = s.find("transforms(("); // Try to handle grant ability inside ability$! or transforms keywords. size_t pos2 = s.find("ability$!"); + if(pos2 == string::npos) + pos2 = s.find("winability"); // Try to handle grant ability inside winability or loseability keywords. + if(pos2 == string::npos) + pos2 = s.find("loseability"); size_t pos3 = s.find(splitGrant[1]); - if((pos1 == string::npos && pos2 == string::npos) || (pos2 != string::npos && pos1 != string::npos && pos3 < pos1 && pos3 < pos2) || - (pos2 == string::npos && pos1 != string::npos && pos3 < pos1) || (pos1 == string::npos && pos2 != string::npos && pos3 < pos2)){ + if((pos1 == string::npos && pos2 == string::npos) || (pos2 != string::npos && pos1 != string::npos && pos3 <= pos1 && pos3 <= pos2) || + (pos2 == string::npos && pos1 != string::npos && pos3 <= pos1) || (pos1 == string::npos && pos2 != string::npos && pos3 <= pos2)){ s = splitGrant[0]; s.append("grant "); s.append(splitGrant[2]); @@ -1860,9 +1889,13 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG storedAbilityString = splitRevealx[1]; size_t pos1 = s.find("transforms(("); // Try to handle reveal ability inside ability$! or transforms keywords. size_t pos2 = s.find("ability$!"); + if(pos2 == string::npos) + pos2 = s.find("winability"); // Try to handle reveal ability inside winability or loseability keywords. + if(pos2 == string::npos) + pos2 = s.find("loseability"); size_t pos3 = s.find(splitRevealx[1]); - if((pos1 == string::npos && pos2 == string::npos) || (pos2 != string::npos && pos1 != string::npos && pos3 < pos1 && pos3 < pos2) || - (pos2 == string::npos && pos1 != string::npos && pos3 < pos1) || (pos1 == string::npos && pos2 != string::npos && pos3 < pos2)){ + if((pos1 == string::npos && pos2 == string::npos) || (pos2 != string::npos && pos1 != string::npos && pos3 <= pos1 && pos3 <= pos2) || + (pos2 == string::npos && pos1 != string::npos && pos3 <= pos1) || (pos1 == string::npos && pos2 != string::npos && pos3 <= pos2)){ s = splitRevealx[0]; s.append("reveal: "); s.append(splitRevealx[2]); @@ -1876,9 +1909,13 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG storedAbilityString = splitScryx[1]; size_t pos1 = s.find("transforms(("); // Try to handle scry ability inside ability$! or transforms keywords. size_t pos2 = s.find("ability$!"); + if(pos2 == string::npos) + pos2 = s.find("winability"); // Try to handle scry ability inside winability or loseability keywords. + if(pos2 == string::npos) + pos2 = s.find("loseability"); size_t pos3 = s.find(splitScryx[1]); - if((pos1 == string::npos && pos2 == string::npos) || (pos2 != string::npos && pos1 != string::npos && pos3 < pos1 && pos3 < pos2) || - (pos2 == string::npos && pos1 != string::npos && pos3 < pos1) || (pos1 == string::npos && pos2 != string::npos && pos3 < pos2)){ + if((pos1 == string::npos && pos2 == string::npos) || (pos2 != string::npos && pos1 != string::npos && pos3 <= pos1 && pos3 <= pos2) || + (pos2 == string::npos && pos1 != string::npos && pos3 <= pos1) || (pos1 == string::npos && pos2 != string::npos && pos3 <= pos2)){ s = splitScryx[0]; s.append("scry: "); s.append(splitScryx[2]); @@ -1890,6 +1927,10 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG if (found != string::npos && storedString.empty()) { size_t pos1 = s.find("ability$!"); // Try to handle transforms ability inside ability$! keyword. + if(pos1 == string::npos) + pos1 = s.find("winability"); // Try to handle transforms ability inside winability or loseability keywords. + if(pos1 == string::npos) + pos1 = s.find("loseability"); if(pos1 == string::npos || found < pos1){ size_t real_end = s.find("))", found); size_t stypesStartIndex = found + 12; @@ -2687,13 +2728,6 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG return a; } - //Phase based actions - found = s.find("phaseaction"); - if (found != string::npos) - { - return parsePhaseActionAbility(s,card,spell,target,restrictions,id); - } - //flip a coin vector splitFlipCoin = parseBetween(s, "flipacoin ", " flipend"); if (splitFlipCoin.size()) @@ -2705,22 +2739,124 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG return a; } - //roll a die - vector splitRollDie = parseBetween(s, "rolladie ", " rollend"); - if (splitRollDie.size()) + //roll a d4 die + vector splitRollD4 = parseBetween(s, "rolld4 ", " rolld4end"); + if (splitRollD4.size()) { - string a1 = splitRollDie[1]; + string a1 = splitRollD4[1]; int userchoice = 0; if(a1[0] >= 48 && a1[0] <= 57){ - userchoice = a1[0] - 48; + userchoice = (a1[0] - 48); a1 = a1.substr(2); } - MTGAbility * a = NEW GenericRollDie(observer, id, card, target, a1, NULL, userchoice); + MTGAbility * a = NEW GenericRollDie(observer, id, card, target, a1, NULL, userchoice, 4); a->oneShot = 1; a->canBeInterrupted = false; return a; } + //roll a d6 die + vector splitRollD6 = parseBetween(s, "rolld6 ", " rolld6end"); + if (splitRollD6.size()) + { + string a1 = splitRollD6[1]; + int userchoice = 0; + if(a1[0] >= 48 && a1[0] <= 57){ + userchoice = (a1[0] - 48); + a1 = a1.substr(2); + } + MTGAbility * a = NEW GenericRollDie(observer, id, card, target, a1, NULL, userchoice, 6); + a->oneShot = 1; + a->canBeInterrupted = false; + return a; + } + + //roll a d8 die + vector splitRollD8 = parseBetween(s, "rolld8 ", " rolld8end"); + if (splitRollD8.size()) + { + string a1 = splitRollD8[1]; + int userchoice = 0; + if(a1[0] >= 48 && a1[0] <= 57){ + userchoice = (a1[0] - 48); + a1 = a1.substr(2); + } + MTGAbility * a = NEW GenericRollDie(observer, id, card, target, a1, NULL, userchoice, 8); + a->oneShot = 1; + a->canBeInterrupted = false; + return a; + } + + //roll a d10 die + vector splitRollD10 = parseBetween(s, "rolld10 ", " rolld10end"); + if (splitRollD10.size()) + { + string a1 = splitRollD10[1]; + int userchoice = 0; + if(a1[0] >= 48 && a1[0] <= 57){ + if(a1[1] >= 48 && a1[1] <= 57){ + userchoice = (a1[0] - 48)*10 + (a1[1] - 48); + a1 = a1.substr(3); + } else { + userchoice = (a1[0] - 48); + a1 = a1.substr(2); + } + } + MTGAbility * a = NEW GenericRollDie(observer, id, card, target, a1, NULL, userchoice, 10); + a->oneShot = 1; + a->canBeInterrupted = false; + return a; + } + + //roll a d12 die + vector splitRollD12 = parseBetween(s, "rolld12 ", " rolld12end"); + if (splitRollD12.size()) + { + string a1 = splitRollD12[1]; + int userchoice = 0; + if(a1[0] >= 48 && a1[0] <= 57){ + if(a1[1] >= 48 && a1[1] <= 57){ + userchoice = (a1[0] - 48)*10 + (a1[1] - 48); + a1 = a1.substr(3); + } else { + userchoice = (a1[0] - 48); + a1 = a1.substr(2); + } + } + MTGAbility * a = NEW GenericRollDie(observer, id, card, target, a1, NULL, userchoice, 12); + a->oneShot = 1; + a->canBeInterrupted = false; + return a; + } + + //roll a d20 die + vector splitRollD20 = parseBetween(s, "rolld20 ", " rolld20end"); + if (splitRollD20.size()) + { + string a1 = splitRollD20[1]; + int userchoice = 0; + if(a1[0] >= 48 && a1[0] <= 57){ + if(a1[1] >= 48 && a1[1] <= 57){ + userchoice = (a1[0] - 48)*10 + (a1[1] - 48); + a1 = a1.substr(3); + } else { + userchoice = (a1[0] - 48); + a1 = a1.substr(2); + } + } + MTGAbility * a = NEW GenericRollDie(observer, id, card, target, a1, NULL, userchoice, 20); + a->oneShot = 1; + a->canBeInterrupted = false; + return a; + } + + //Phase based actions + found = s.find("phaseaction"); + if (found != string::npos) + { + return parsePhaseActionAbility(s,card,spell,target,restrictions,id); + } + //may pay ability vector splitMayPaysub = parseBetween(s, "pay[[","]]", true); if (splitMayPaysub.size()) @@ -3554,6 +3690,17 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG return a; } + //alter dungeon completed + vector splitDungeonCompleted = parseBetween(s, "completedungeon:", " ", false); + if (splitDungeonCompleted.size()) + { + int dungeoncompleted = atoi(splitDungeonCompleted[1].c_str()); + Targetable * t = spell ? spell->getNextTarget() : NULL; + MTGAbility * a = NEW AAAlterDungeonCompleted(observer, id, card, t, dungeoncompleted, NULL, who); + a->oneShot = 1; + return a; + } + //alter yidaro counter vector splitYidaroCounter = parseBetween(s, "alteryidarocount:", " ", false); if (splitYidaroCounter.size()) @@ -4312,6 +4459,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG if (splitMeldFrom[1].size()) { splitMeldNames = splitMeldFrom[1]; + replace(splitMeldNames.begin(), splitMeldNames.end(), '^', ','); // To allow the usage of ^ instead of , char (e.g. using meldfrom keyword inside transforms) } MTGAbility * a = NEW AAMeldFrom(observer, id, card, target, splitMeldNames); a->oneShot = true; @@ -4326,6 +4474,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG if (splitMeld[1].size()) { splitMeldName = splitMeld[1]; + replace(splitMeldName.begin(), splitMeldName.end(), '^', ','); // To allow the usage of ^ instead of , char (e.g. using meld keyword inside transforms) } MTGAbility * a = NEW AAMeld(observer, id, card, target, splitMeldName); a->oneShot = true; @@ -5135,6 +5284,7 @@ int AbilityFactory::abilityEfficiency(MTGAbility * a, Player * p, int mode, Targ badAbilities[(int)Constants::HANDDEATH] = true; badAbilities[(int)Constants::GAINEDHANDDEATH] = true; badAbilities[(int)Constants::INPLAYDEATH] = true; + badAbilities[(int)Constants::COUNTERDEATH] = true; badAbilities[(int)Constants::INPLAYTAPDEATH] = true; badAbilities[(int)Constants::DOUBLEFACEDEATH] = true; badAbilities[(int)Constants::GAINEDDOUBLEFACEDEATH] = true; diff --git a/projects/mtg/src/MTGCardInstance.cpp b/projects/mtg/src/MTGCardInstance.cpp index 93b50028f..7d1758f90 100644 --- a/projects/mtg/src/MTGCardInstance.cpp +++ b/projects/mtg/src/MTGCardInstance.cpp @@ -267,6 +267,7 @@ void MTGCardInstance::initMTGCI() lastFlipResult = -1; dieSide = 0; lastRollResult = 0; + dieNumFaces = 0; scryedCards = 0; isAttacking = NULL; storedCard = NULL; @@ -529,9 +530,14 @@ int MTGCardInstance::toGrave( bool forced ) } if (basicAbilities[(int)Constants::INPLAYDEATH] || basicAbilities[(int)Constants::INPLAYTAPDEATH]) { - p->game->putInZone(this, p->game->inPlay, owner->game->battlefield); - if(basicAbilities[(int)Constants::INPLAYTAPDEATH]) - tap(true); + bool toTap = basicAbilities[(int)Constants::INPLAYTAPDEATH]; + bool addCounter = basicAbilities[(int)Constants::COUNTERDEATH]; + MTGCardInstance* ret = p->game->putInZone(this, p->game->inPlay, owner->game->graveyard); + ret = p->game->putInZone(ret, owner->game->graveyard, owner->game->battlefield); + if(toTap) + ret->tap(true); + if(addCounter) + ret->counters->addCounter(1, 1, false); return 1; } if (!basicAbilities[(int)Constants::INDESTRUCTIBLE]) @@ -1028,6 +1034,9 @@ bool MTGCardInstance::canPlayFromLibrary() if(isSorceryorInstant() && (has(Constants::CANPLAYINSTANTSORCERYTOPLIBRARY) || (controller()->game->inPlay->nb_cards && controller()->game->inPlay->hasAbility(Constants::CANPLAYINSTANTSORCERYTOPLIBRARY)))) found++; + if((hasSubtype(Subtypes::TYPE_EQUIPMENT) || hasSubtype(Subtypes::TYPE_AURA)) && (has(Constants::CANPLAYAURAEQUIPTOPLIBRARY) + || (controller()->game->inPlay->nb_cards && controller()->game->inPlay->hasAbility(Constants::CANPLAYAURAEQUIPTOPLIBRARY)))) + found++; if(found > 0) return true; diff --git a/projects/mtg/src/MTGDeck.cpp b/projects/mtg/src/MTGDeck.cpp index 699076408..a9c5053f7 100644 --- a/projects/mtg/src/MTGDeck.cpp +++ b/projects/mtg/src/MTGDeck.cpp @@ -920,9 +920,11 @@ MTGDeck::MTGDeck(const string& config_file, MTGAllCards * _allcards, int meta_on s.erase(0, s.find_first_not_of("\t\n\v\f\r ")); std::string::const_iterator it = s.begin(); while (it != s.end() && std::isdigit(*it)) ++it; - if(!s.empty() && it == s.end()) - Sideboard.push_back(s); - else { + if(!s.empty() && it == s.end()){ + MTGCard * card = database->getCardById(atoi(s.c_str())); + if(card && !card->data->hasType("Dungeon")) // To add Dungeons in Sideboard you need to use #DNG tag. + Sideboard.push_back(s); + } else { int numberOfCopies = 1; size_t found = s.find(" *"); if (found != string::npos){ @@ -934,9 +936,10 @@ MTGDeck::MTGDeck(const string& config_file, MTGAllCards * _allcards, int meta_on for (int i = 0; i < numberOfCopies; i++){ std::stringstream str_id; str_id << card->getId(); - Sideboard.push_back(str_id.str()); + if(!card->data->hasType("Dungeon")) // To add Dungeons in Sideboard you need to use #DNG tag. + Sideboard.push_back(str_id.str()); } - }else { + } else { DebugTrace("could not add to Sideboard any card with name: " << s); } } @@ -963,7 +966,7 @@ MTGDeck::MTGDeck(const string& config_file, MTGAllCards * _allcards, int meta_on CommandZone.push_back(s); } } - }else { + } else { size_t found = s.find(" *"); if (found != string::npos) s = s.substr(0, found); @@ -980,12 +983,61 @@ MTGDeck::MTGDeck(const string& config_file, MTGAllCards * _allcards, int meta_on CommandZone.push_back(str_id.str()); } } - }else { + } else { DebugTrace("could not add to CommandZone any card with name: " << s); } } continue; } + found = s.find("DNG:"); // Now it's possible to add Dungeons even using their Name instead of ID such as normal deck cards. + if (found != string::npos) + { + if(!database) continue; + s = s.substr(found + 4); + s.erase(s.find_last_not_of("\t\n\v\f\r ") + 1); + s.erase(0, s.find_first_not_of("\t\n\v\f\r ")); + std::string::const_iterator it = s.begin(); + while (it != s.end() && std::isdigit(*it)) ++it; + if(!s.empty() && it == s.end()){ + MTGCard * newcard = database->getCardById(atoi(s.c_str())); + if(!DungeonZone.size() && newcard && newcard->data->hasType("Dungeon") && newcard->getRarity() == Constants::RARITY_T) // If no dungeon has been added you can add one. + DungeonZone.push_back(s); + else if(DungeonZone.size() > 0 && newcard && newcard->data->hasType("Dungeon") && newcard->getRarity() == Constants::RARITY_T){ // Try to add the dungeon. + bool found = false; + for(unsigned int i = 0; i < DungeonZone.size(); i++){ + MTGCard * oldcard = database->getCardById(atoi((DungeonZone.at(i)).c_str())); + if(oldcard && oldcard->data->name == newcard->data->name) + found = true; + } + if(!found) + DungeonZone.push_back(s); + } + } else { + size_t found = s.find(" *"); + if (found != string::npos) + s = s.substr(0, found); + MTGCard * newcard = database->getCardByName(s); + if (newcard){ + std::stringstream str_id; + str_id << newcard->getId(); + if(!DungeonZone.size() && newcard && newcard->data->hasType("Dungeon") && newcard->getRarity() == Constants::RARITY_T) // If no dungeon has been added you can add one. + DungeonZone.push_back(str_id.str()); + else if(DungeonZone.size() > 0 && newcard && newcard->data->hasType("Dungeon") && newcard->getRarity() == Constants::RARITY_T){ // Try to add the dungeon. + bool found = false; + for(unsigned int i = 0; i < DungeonZone.size() && !found; i++){ + MTGCard * oldcard = database->getCardById(atoi((DungeonZone.at(i)).c_str())); + if(oldcard && oldcard->data->name == newcard->data->name) + found = true; + } + if(!found) + DungeonZone.push_back(str_id.str()); + } + } else { + DebugTrace("could not add to Dungeons any card with name: " << s); + } + } + continue; + } continue; } if (meta_only) continue; //Changed from break in order to read the command tag in metafile. @@ -1227,6 +1279,16 @@ void MTGDeck::replaceCMD(vector newCMD) return; } +void MTGDeck::replaceDNG(vector newDMG) +{ + if(newDMG.size()) + { + DungeonZone.clear(); + DungeonZone = newDMG; + } + return; +} + int MTGDeck::remove(int cardid) { if (cards.find(cardid) == cards.end() || cards[cardid] == 0) return 0; @@ -1318,6 +1380,17 @@ int MTGDeck::save(const string& destFileName, bool useExpandedDescriptions, cons file << "#CMD:" << checkID << "\n"; } } + //save dungeons + if(DungeonZone.size()) + { + sort(DungeonZone.begin(), DungeonZone.end()); + for(unsigned int k = 0; k < DungeonZone.size(); k++) + { + int checkID = atoi(DungeonZone[k].c_str()); + if(checkID) + file << "#DNG:" << checkID << "\n"; + } + } file.close(); JFileSystem::GetInstance()->Rename(tmp, destFileName); diff --git a/projects/mtg/src/MTGDefinitions.cpp b/projects/mtg/src/MTGDefinitions.cpp index ee094b646..0dfcdab01 100644 --- a/projects/mtg/src/MTGDefinitions.cpp +++ b/projects/mtg/src/MTGDefinitions.cpp @@ -214,7 +214,13 @@ const char* Constants::MTGBasicAbilities[] = { "undamageable", //It cannot be damaged by any source "lifefaker", //It's a card wich modify the life increasement when a @lifeof triggers occours (e.g. Angel of Vitality) "doublefacedeath", //It goes to temp zone after death (e.g. Double face card) - "gaineddoublefacedeath" //It goes to temp after death (use just to give add ability to instants and sorceries which originally have not, e.g. with transforms keyword) + "gaineddoublefacedeath", //It goes to temp after death (use just to give add ability to instants and sorceries which originally have not, e.g. with transforms keyword) + "twodngtrg", //It makes rooms abilities trigger twice (e.g. Hama Pashar, Ruin Seeker) + "nodngopp", //Opponent can't venture (e.g. "Keen-Eared Sentry") + "nodngplr", //Controller can't venture + "canplayauraequiplibrarytop", //auras and equipment + "counterdeath", //It gains a 1/1 counter when it returns from graveyard (to use with inplaydeath and inplaytapdeath)" + "dungeoncompleted" //This dungeon has been completed }; map Constants::MTGBasicAbilitiesMap; diff --git a/projects/mtg/src/MTGGameZones.cpp b/projects/mtg/src/MTGGameZones.cpp index 381ce7e75..4f6e9b55e 100644 --- a/projects/mtg/src/MTGGameZones.cpp +++ b/projects/mtg/src/MTGGameZones.cpp @@ -145,6 +145,21 @@ void MTGPlayerCards::initDeck(MTGDeck * deck) } } } + //dungeon init + if(deck->DungeonZone.size()) + { + for(unsigned int j = 0; j < deck->DungeonZone.size(); j++) + { + string cardID = deck->DungeonZone[j]; + MTGCard * card = MTGCollection()->getCardById(atoi(cardID.c_str())); + if(card) + { + MTGCardInstance * newCard = NEW MTGCardInstance(card, this); + //Dungeons will be added to sideboard zone... + sideboard->addCard(newCard); + } + } + } } MTGPlayerCards::~MTGPlayerCards() @@ -412,14 +427,25 @@ MTGCardInstance * MTGPlayerCards::putInGraveyard(MTGCardInstance * card) } else if (card->getCurrentZone() != card->controller()->game->hand && (card->basicAbilities[(int)Constants::INPLAYDEATH] || card->basicAbilities[(int)Constants::INPLAYTAPDEATH])) { - MTGCardInstance* ret = putInZone(card, card->getCurrentZone(), card->owner->game->battlefield); - if(card->basicAbilities[(int)Constants::INPLAYTAPDEATH]) + bool toTap = card->basicAbilities[(int)Constants::INPLAYTAPDEATH]; + bool addCounter = card->basicAbilities[(int)Constants::COUNTERDEATH]; + MTGCardInstance* ret = putInZone(card, card->getCurrentZone(), card->owner->game->graveyard); + ret = putInZone(ret, ret->getCurrentZone(), ret->owner->game->battlefield); + if(toTap) ret->tap(true); + if(addCounter) + ret->counters->addCounter(1, 1, false); return ret; } return putInZone(card, card->currentZone, card->owner->game->graveyard); } +// Moves a card to its owner's sideboard +MTGCardInstance * MTGPlayerCards::putInSideboard(MTGCardInstance * card) +{ + return putInZone(card, card->currentZone, card->owner->game->sideboard); +} + // Moves a card to its owner's exile MTGCardInstance * MTGPlayerCards::putInExile(MTGCardInstance * card) { @@ -836,6 +862,7 @@ MTGCardInstance * MTGGameZone::removeCard(MTGCardInstance * card, int createCopy copy->basicAbilities[Constants::GAINEDEXILEDEATH] = card->basicAbilities[Constants::GAINEDEXILEDEATH]; copy->basicAbilities[Constants::GAINEDHANDDEATH] = card->basicAbilities[Constants::GAINEDHANDDEATH]; copy->basicAbilities[Constants::GAINEDDOUBLEFACEDEATH] = card->basicAbilities[Constants::GAINEDDOUBLEFACEDEATH]; + copy->basicAbilities[Constants::DUNGEONCOMPLETED] = card->basicAbilities[Constants::DUNGEONCOMPLETED]; copy->damageInflictedAsCommander = card->damageInflictedAsCommander; copy->numofcastfromcommandzone = card->numofcastfromcommandzone; for (int i = 0; i < ManaCost::MANA_PAID_WITH_BESTOW +1; i++) diff --git a/projects/mtg/src/Player.cpp b/projects/mtg/src/Player.cpp index f1ab0767d..1d59fb5c3 100644 --- a/projects/mtg/src/Player.cpp +++ b/projects/mtg/src/Player.cpp @@ -36,6 +36,7 @@ Player::Player(GameObserver *observer, string file, string fileSmall, MTGDeck * drawCounter = 0; energyCount = 0; yidaroCount = 0; + dungeonCompleted = 0; numOfCommandCast = 0; monarch = 0; surveilOffset = 0; diff --git a/projects/mtg/src/Rules.cpp b/projects/mtg/src/Rules.cpp index 6783de77e..9b80210ed 100644 --- a/projects/mtg/src/Rules.cpp +++ b/projects/mtg/src/Rules.cpp @@ -603,6 +603,7 @@ void Rules::initGame(GameObserver *g, bool currentPlayerSet) p->preventable = initState.playerData[i].player->preventable; p->energyCount = initState.playerData[i].player->energyCount; p->yidaroCount = initState.playerData[i].player->yidaroCount; + p->dungeonCompleted = initState.playerData[i].player->dungeonCompleted; p->numOfCommandCast = initState.playerData[i].player->numOfCommandCast; p->monarch = initState.playerData[i].player->monarch; p->surveilOffset = initState.playerData[i].player->surveilOffset; diff --git a/projects/mtg/src/WEvent.cpp b/projects/mtg/src/WEvent.cpp index dd7ef29f5..8e34f6bd0 100644 --- a/projects/mtg/src/WEvent.cpp +++ b/projects/mtg/src/WEvent.cpp @@ -317,6 +317,11 @@ WEventCardExplored::WEventCardExplored(MTGCardInstance * card) : { } +WEventCardDungeonCompleted::WEventCardDungeonCompleted(MTGCardInstance * card, int totaldng, string playerName) : + WEventCardUpdate(card), totaldng(totaldng), playerName(playerName) +{ +} + WEventCardRollDie::WEventCardRollDie(MTGCardInstance * card, string playerName) : WEventCardUpdate(card), playerName(playerName) { @@ -570,6 +575,12 @@ Targetable * WEventCardExplored::getTarget(int target) return NULL; } +Targetable * WEventCardDungeonCompleted::getTarget(int target) +{ + if (target) return card; + return NULL; +} + Targetable * WEventCardRollDie::getTarget(int target) { if (target) return card; diff --git a/projects/mtg/src/WParsedInt.cpp b/projects/mtg/src/WParsedInt.cpp index b1c1d8a3e..b3a546a84 100644 --- a/projects/mtg/src/WParsedInt.cpp +++ b/projects/mtg/src/WParsedInt.cpp @@ -594,9 +594,21 @@ void WParsedInt::init(string s, Spell * spell, MTGCardInstance * card) { intValue = (s == "mypoisoncount")?target->controller()->poisonCount:target->controller()->opponent()->poisonCount; } - else if(s == "lastrollresult" || s == "lastrollchoice") + else if(s == "lastrollresult" || s == "lastrollchoice" || s == "lastdiefaces" || s == "srclastrollresult" || s == "srclastrollchoice" || s == "srclastdiefaces") { - intValue = (s == "lastrollresult")?target->lastRollResult:target->dieSide; + intValue = 0; + if(s == "lastrollresult") + intValue = target->lastRollResult; + else if(s == "srclastrollresult") + intValue = card->lastRollResult; + else if(s == "lastrollchoice") + intValue = target->dieSide; + else if(s == "srclastrollchoice") + intValue = card->dieSide; + else if(s == "lastdiefaces") + intValue = target->dieNumFaces; + else if(s == "srclastdiefaces") + intValue = card->dieNumFaces; } else if(s == "lastflipresult" || s == "lastflipchoice") { @@ -926,6 +938,31 @@ void WParsedInt::init(string s, Spell * spell, MTGCardInstance * card) } } } + else if (s.find("cardcountabil") != string::npos)//Count Total cards with specific ability + { + intValue = 0; + bool different_names = (s.find("diffcardcountabil")!=string::npos)?true:false; + string ability = (s.find("diffcardcountabil")!=string::npos)?s.substr(17):s.substr(13); + vector list; + for (int j = card->controller()->game->inPlay->nb_cards - 1; j >= 0; --j) + { + if (card->controller()->game->inPlay->cards[j]->basicAbilities[Constants::GetBasicAbilityIndex(ability)] == 1){ + if(!different_names) + intValue += 1; + else{ + bool name_found = false; + for(unsigned int i = 0; i < list.size() && !name_found; i++){ + if(list[i] == card->controller()->game->inPlay->cards[j]->name) + name_found = true; + } + if(!name_found){ + list.push_back(card->controller()->game->inPlay->cards[j]->name); + intValue += 1; + } + } + } + } + } else if (s.find("cardcounttype") != string::npos)//Count Total cards of specific type { intValue = 0; @@ -1222,6 +1259,50 @@ void WParsedInt::extendedParse(string s, Spell * spell, MTGCardInstance * card) } } } + else if (s.find("totalmana") != string::npos)//find the cards with specified total mana in target player library + { + intValue = 0; + bool opponent = (s.find("oppototalmana")!=string::npos)?true:false; + int manavalue = atoi((s.find("oppototalmana")!=string::npos)?s.substr(13).c_str():s.substr(9).c_str()); + int totalmana = 0; + Player* p = card->controller(); + if (opponent) + p = card->controller()->opponent(); + for (int j = p->game->library->nb_cards - 1; j >= 0 && totalmana < manavalue; --j){ + totalmana += p->game->library->cards[j]->getManaCost()->getConvertedCost(); + intValue = p->game->library->nb_cards - j; + } + } + else if (s == "pdungeoncompleted" || s == "odungeoncompleted") + { + intValue = (s == "pdungeoncompleted")?card->controller()->dungeonCompleted:card->controller()->opponent()->dungeonCompleted; + } + else if (s == "pwrtotatt" || s == "thstotatt")//count Total Power or toughness of attacking creatures (e.g. Battle Cry Goblin) + { + intValue = 0; + for (int j = card->controller()->game->inPlay->nb_cards - 1; j >= 0; --j) + { + if (card->controller()->game->inPlay->cards[j]->hasType(Subtypes::TYPE_CREATURE) && card->controller()->game->inPlay->cards[j]->attacker){ + if(s == "pwrtotatt") + intValue += card->controller()->game->inPlay->cards[j]->getCurrentPower(); + else + intValue += card->controller()->game->inPlay->cards[j]->getCurrentToughness(); + } + } + } + else if (s == "pwrtotblo" || s == "thstotblo")//count Total Power or toughness of blocking creatures + { + intValue = 0; + for (int j = card->controller()->game->inPlay->nb_cards - 1; j >= 0; --j) + { + if (card->controller()->game->inPlay->cards[j]->hasType(Subtypes::TYPE_CREATURE) && card->controller()->game->inPlay->cards[j]->defenser){ + if(s == "pwrtotblo") + intValue += card->controller()->game->inPlay->cards[j]->getCurrentPower(); + else + intValue += card->controller()->game->inPlay->cards[j]->getCurrentToughness(); + } + } + } else if(!intValue)//found nothing, try parsing a atoi { intValue = atoi(s.c_str());