Added PLIST set and missing primitives, improved Android downloader and fixed all primitives with Adapt ability.

This commit is contained in:
valfieri
2020-10-19 22:19:51 +02:00
parent 48bdc6c951
commit e6c1f652db
7 changed files with 1858 additions and 35 deletions

View File

@@ -1652,7 +1652,15 @@ public class ImgDownloader {
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/3/c/3c6a38dd-e8f5-420f-9576-66937c71286b.jpg?1599832044";
else if(id.equals("495102"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/2/b/2b90e88b-60a3-4d1d-bb8c-14633e5005a5.jpg?1599832083";
else if(id.equals("29530711"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/4/9/4912a0a5-2fec-4c6b-9545-9ab0c4e25268.jpg?1599764491";
else if(id.equals("1750411"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/8/f/8f047a8b-6c94-4b99-bcaa-10680400ee25.jpg?1562073449";
else if(id.equals("5176911"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/c/b/cbbd8a12-d916-4fb1-994a-7d4a3e2ae2ab.jpg?1562935938";
else if(id.equals("44680711"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/a/0/a00a7180-49bd-4ead-852a-67b6b5e4b933.jpg?1564694995";
return cardurl;
}
@@ -1718,7 +1726,7 @@ public class ImgDownloader {
tokenurl = "https://deckmaster.info/images/cards/ZEN/-281-hr.jpg";
else if(id.equals("294401t"))
tokenurl = "https://deckmaster.info/images/cards/ARB/-316-hr.jpg";
else if (id.equals("175105t"))
else if (id.equals("175105t") || id.equals("295412t"))
tokenurl = "https://deckmaster.info/images/cards/ALA/-325-hr.jpg";
else if (id.equals("376496t") || id.equals("376549t") || id.equals("294519t"))
tokenurl = "https://deckmaster.info/images/cards/ALA/-327-hr.jpg";
@@ -1802,7 +1810,7 @@ public class ImgDownloader {
else if (id.equals("376404t"))
tokenurl = "https://deckmaster.info/images/cards/OGW/-2189-hr.jpg";
else if (id.equals("409810t") || id.equals("409805t") || id.equals("409953t") || id.equals("409997t") ||
id.equals("410032t") || id.equals("293377t") || id.equals("294345t"))
id.equals("410032t") || id.equals("293377t") || id.equals("294345t") || id.equals("295471t"))
tokenurl = "https://deckmaster.info/images/cards/SOI/-2404-hr.jpg";
else if (id.equals("3242t"))
tokenurl = "https://deckmaster.info/images/cards/MI/-2828-hr.jpg";
@@ -2014,7 +2022,7 @@ public class ImgDownloader {
tokenurl = "https://media.mtgsalvation.com/attachments/94/295/635032496473215708.jpg";
else if (id.equals("3280t"))
tokenurl = "https://media.mtgsalvation.com/attachments/54/421/635032484680831888.jpg";
else if (id.equals("107091t"))
else if (id.equals("107091t") || id.equals("295407t"))
tokenurl = "https://media.mtgsalvation.com/attachments/13/534/635032476540667501.jpg";
else if (id.equals("184735t") || id.equals("376488t") || id.equals("3066t") || id.equals("121261t"))
tokenurl = "https://i.pinimg.com/originals/a9/fb/37/a9fb37bdfa8f8013b7eb854d155838e2.jpg";
@@ -2062,7 +2070,7 @@ public class ImgDownloader {
tokenurl = "http://4.bp.blogspot.com/-y5Fanm3qvrU/Vmd4gGnl2DI/AAAAAAAAAWY/FCrS9FTgOJk/s1600/Tatsumasa%2BToken.jpg";
else if (id.equals("26732t"))
tokenurl = "http://1.bp.blogspot.com/-0-mLvfUVgNk/VmdZWXWxikI/AAAAAAAAAUM/TVCIiZ_c67g/s1600/Spawn%2BToken.jpg";
else if (id.equals("47449t") || id.equals("52335t"))
else if (id.equals("47449t") || id.equals("52335t") || id.equals("295457t"))
tokenurl = "https://1.bp.blogspot.com/-vrgXPWqThMw/XTyInczwobI/AAAAAAAADW4/SEceF3nunBkiCmHWfx6UxEUMF_gqdrvUQCLcBGAs/s1600/Kaldra%2BToken%2BUpdate.jpg";
else if(id.equals("460140t") || id.equals("460146t"))
tokenurl = "http://4.bp.blogspot.com/-jmiOVll5hDk/VmdvG_Hv7hI/AAAAAAAAAVg/oWYbn2yBPI8/s1600/White-Blue%2BBird%2BToken.jpg";
@@ -2096,7 +2104,7 @@ public class ImgDownloader {
tokenurl = "https://img.scryfall.com/cards/large/front/9/e/9ecc467e-b345-446c-b9b7-5f164e6651a4.jpg?1596043489";
else if(id.equals("295082t"))
tokenurl = "https://img.scryfall.com/cards/large/front/a/e/ae56d9e8-de05-456b-af32-b5992992ee15.jpg?1562639978";
else if(id.equals("496035t"))
else if(id.equals("496035t") || id.equals("295423t"))
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/e/d/ed666385-a2e7-4e1f-ad2c-babbfc0c50b3.jpg?1562640123";
else if(id.equals("496036t"))
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/e/1/e1eb3b8a-f9d3-4ce1-b171-ba7b0c3f4830.jpg?1562702405";
@@ -2106,6 +2114,26 @@ public class ImgDownloader {
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/6/7/67457137-64f2-413d-b62e-658b3f1b1043.jpg?1547509251";
else if(id.equals("495958t"))
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/b/e/be224180-a482-4b94-8a9d-3a92ee0eb34b.jpg?1562640020";
else if(id.equals("295356t"))
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/c/7/c7e7822b-f155-4f3f-b835-ec64f3a71307.jpg?1601138813";
else if(id.equals("295376t"))
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/c/b/cb8caa61-e294-4501-b357-a44abd77d09a.jpg?1601138497";
else if(id.equals("295334t"))
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/d/c/dcee70ef-6285-4f09-8a71-8b7960e8fa99.jpg?1562636925";
else if(id.equals("295433t"))
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/2/f/2f4b7c63-8430-4ca4-baee-dc958d5bd22f.jpg?1557575919";
else if(id.equals("295428t"))
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/5/3/5371de1b-db33-4db4-a518-e35c71aa72b7.jpg?1562702067";
else if(id.equals("295377t"))
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/c/e/ce90c48f-74fb-4e87-9e46-7f8c3d79cbb0.jpg?1562636904";
else if(id.equals("295322t"))
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/9/0/903e30f3-580e-4a14-989b-ae0632363407.jpg?1581902165";
else if(id.equals("295234t"))
tokenurl ="https://c1.scryfall.com/file/scryfall-cards/large/front/d/c/dc77b308-9d0c-492f-b3fe-e00d60470767.jpg?1563073222";
else if(id.equals("295225t"))
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/d/9/d9c95045-e806-4933-94a4-cb52ae1a215b.jpg?1562542413";
else if(id.equals("295217t"))
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/0/4/0419a202-6e32-4f0a-a032-72f6c00cae5e.jpg?1562639654";
return tokenurl;
}
@@ -2125,7 +2153,8 @@ public class ImgDownloader {
id.equals("470578") || id.equals("470571") || id.equals("470552") || id.equals("394490") || id.equals("114921") || id.equals("49775") ||
id.equals("473123") || id.equals("473160") || id.equals("16743") || id.equals("16741") || id.equals("294493") || id.equals("293253") ||
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("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"))
return false;
return true;
}
@@ -2479,6 +2508,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")))
rarity = "";
int c = lines.indexOf("[/card]", lastIndex);
if (c > 0)
lines = lines.substring(c + 8);
@@ -2708,7 +2739,7 @@ public class ImgDownloader {
|| scryset.equals("PAL00") || scryset.equals("PAL01") || scryset.equals("PAL02") || scryset.equals("PAL03") || scryset.equals("PAL04")
|| 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("AKR") || scryset.equals("ANB") || scryset.equals("PLIST")){
try {
doc = Jsoup.connect(imageurl + scryset.toLowerCase()).get();
Elements outlinks = doc.select("body a");
@@ -2898,7 +2929,7 @@ public class ImgDownloader {
&& !scryset.equals("PAL00") && !scryset.equals("PAL01") && !scryset.equals("PAL02") && !scryset.equals("PAL03") && !scryset.equals("PAL04")
&& !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("AKR") && !scryset.equals("ANB") && !scryset.equals("PLIST")){
try {
doc = Jsoup.connect(imageurl + scryset.toLowerCase()).get();
Elements outlinks = doc.select("body a");
@@ -3012,7 +3043,7 @@ public class ImgDownloader {
&& !scryset.equals("PAL00") && !scryset.equals("PAL01") && !scryset.equals("PAL02") && !scryset.equals("PAL03") && !scryset.equals("PAL04")
&& !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("AKR") && !scryset.equals("ANB") && !scryset.equals("PLIST")){
try {
doc = Jsoup.connect(imageurl + scryset.toLowerCase()).get();
} catch (Exception e) {
@@ -3178,7 +3209,7 @@ public class ImgDownloader {
|| scryset.equals("PAL01") || scryset.equals("PAL02") || scryset.equals("PAL03") || scryset.equals("PAL04") || 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("ANB") || scryset.equals("PLIST")){
Elements metadata = doc.select("head meta");
if(metadata != null) {
for (int j = 0; j < metadata.size(); j++){

View File

@@ -2,8 +2,8 @@
author=Wagic Team
name=Champions of Kamigawa
block=Kamigawa
year=2004
total=307
year=2004-10-01
total=318
[/meta]
[card]
primitive=Akki Avalanchers

View File

@@ -2,7 +2,7 @@
author=Wagic Team
name=Commander Anthology Volume II
year=2018-06-08
total=312
total=313
[/meta]
[card]
primitive=The Mimeoplasm
@@ -356,8 +356,8 @@ rarity=R
[/card]
[card]
primitive=Nighteyes the Desecrator
id=446807
rarity=U
id=44680711
rarity=T
[/card]
[card]
primitive=Nezumi Graverobber

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
author=Wagic Team
name=Salvat 2005
year=2005-08-22
total=720
total=760
[/meta]
[card]
primitive=Saproling
@@ -2426,7 +2426,7 @@ id=17503
rarity=R
[/card]
[card]
primitive=Nezumi Graverobber // Nighteyes the Desecrator
primitive=Nezumi Graverobber
id=17504
rarity=U
[/card]
@@ -2486,9 +2486,9 @@ id=17515
rarity=U
[/card]
[card]
primitive=Nezumi Graverobber // Nighteyes the Desecrator
id=17516
rarity=U
primitive=Nighteyes the Desecrator
id=1750411
rarity=T
[/card]
[card]
primitive=Heedless One

View File

@@ -2,7 +2,7 @@
author=Wagic Team
name=Magic Online Theme Decks
year=2010-11-08
total=200
total=201
[/meta]
[card]
primitive=Hippo
@@ -615,11 +615,16 @@ id=51768
rarity=C
[/card]
[card]
primitive=Nezumi Graverobber // Nighteyes the Desecrator
primitive=Nezumi Graverobber
id=51769
rarity=U
[/card]
[card]
primitive=Nighteyes the Desecrator
id=5176911
rarity=T
[/card]
[card]
primitive=Noble Templar
id=51770
rarity=C

View File

@@ -372,7 +372,7 @@ type=Instant
[card]
name=Aeromunculus
abilities=flying
auto=this(counter{1/1}<1) {2}{G}{U}:counter(1/1)
auto={2}{G}{U}:this(counter{1/1.1}<1) transforms((,newability[counter(1/1.1)])) forever
text=Flying -- {2}{G}{U}: Adapt 1. (If this creature has no +1/+1 counters on it, put a +1/+1 counter on it.)
mana={1}{G}{U}
type=Creature
@@ -3503,7 +3503,7 @@ type=Sorcery
[/card]
[card]
name=Benthic Biomancer
auto=this(counter{1/1}<1) {1}{U}:counter(1/1)
auto={1}{U}:this(counter{1/1.1}<1) transforms((,newability[counter(1/1.1)])) forever
auto=@counteradded(1/1) from(this):draw:1 && transforms((,newability[target(*|myhand) reject])) forever
text={1}{U}: Adapt 1. (If this creature has no +1/+1 counters on it, put a +1/+1 counter on it.) -- Whenever one or more +1/+1 counters are put on Benthic Biomancer, draw a card, then discard a card.
mana={U}
@@ -9143,7 +9143,7 @@ power=1
toughness=2
[/card]
[card]
name=Cut // Ribbon
name=Cut // Ribbons
target=creature
auto=damage:4
autograveyard={X}{B}{B}{E}:life:-X opponent asSorcery
@@ -14198,6 +14198,36 @@ mana={1}{G}
type=Instant
[/card]
[card]
name=Fellwar Stone
auto=if type(plains|opponentBattlefield)~morethan~0 then transforms((,newability[{T}:add{W}])) ueot
auto=if type(mountain|opponentBattlefield)~morethan~0 then transforms((,newability[{T}:add{R}])) ueot
auto=if type(island|opponentBattlefield)~morethan~0 then transforms((,newability[{T}:add{U}])) ueot
auto=if type(forest|opponentBattlefield)~morethan~0 then transforms((,newability[{T}:add{G}])) ueot
auto=if type(swamp|opponentBattlefield)~morethan~0 then transforms((,newability[{T}:add{B}])) ueot
auto=if type(land[-basic;-forest;-swamp;-plains;-island;-mountain]|opponentBattlefield)~morethan~0 then transforms((,newability[{T}:add{C}])) ueot
auto=@movedTo(plains|opponentBattlefield) restriction{type(plains|opponentBattlefield)~equalto~1}:transforms((,newability[{T}:add{W}])) ueot
auto=@movedTo(mountain|opponentBattlefield) restriction{type(mountain|opponentBattlefield)~equalto~1}:transforms((,newability[{T}:add{R}])) ueot
auto=@movedTo(island|opponentBattlefield) restriction{type(island|opponentBattlefield)~equalto~1}:transforms((,newability[{T}:add{U}])) ueot
auto=@movedTo(forest|opponentBattlefield) restriction{type(forest|opponentBattlefield)~equalto~1}:transforms((,newability[{T}:add{G}])) ueot
auto=@movedTo(swamp|opponentBattlefield) restriction{type(swamp|opponentBattlefield)~equalto~1}:transforms((,newability[{T}:add{B}])) ueot
auto=@movedTo(land[-basic;-forest;-swamp;-plains;-island;-mountain]|opponentBattlefield) restriction{type(land[-basic;-forest;-swamp;-plains;-island;-mountain]|opponentBattlefield)~equalto~1}:transforms((,newability[{T}:add{C}])) ueot
auto=@each my upkeep restriction{type(plains|opponentBattlefield)~morethan~0}:transforms((,newability[{T}:add{W}])) ueot
auto=@each my upkeep restriction{type(mountain|opponentBattlefield)~morethan~0}:transforms((,newability[{T}:add{R}])) ueot
auto=@each my upkeep restriction{type(island|opponentBattlefield)~morethan~0}:transforms((,newability[{T}:add{U}])) ueot
auto=@each my upkeep restriction{type(forest|opponentBattlefield)~morethan~0}:transforms((,newability[{T}:add{G}])) ueot
auto=@each my upkeep restriction{type(swamp|opponentBattlefield)~morethan~0}:transforms((,newability[{T}:add{B}])) ueot
auto=@each my upkeep restriction{type(land[-basic;-forest;-swamp;-plains;-island;-mountain]|opponentBattlefield)~morethan~0}:transforms((,newability[{T}:add{C}])) ueot
auto=@each opponent upkeep restriction{type(plains|opponentBattlefield)~morethan~0}:transforms((,newability[{T}:add{W}])) ueot
auto=@each opponent upkeep restriction{type(mountain|opponentBattlefield)~morethan~0}:transforms((,newability[{T}:add{R}])) ueot
auto=@each opponent upkeep restriction{type(island|opponentBattlefield)~morethan~0}:transforms((,newability[{T}:add{U}])) ueot
auto=@each opponent upkeep restriction{type(forest|opponentBattlefield)~morethan~0}:transforms((,newability[{T}:add{G}])) ueot
auto=@each opponent upkeep restriction{type(swamp|opponentBattlefield)~morethan~0}:transforms((,newability[{T}:add{B}])) ueot
auto=@each opponent upkeep restriction{type(land[-basic;-forest;-swamp;-plains;-island;-mountain]|opponentBattlefield)~morethan~0}:transforms((,newability[{T}:add{C}])) ueot
text={T}: Add one mana of any color that a land an opponent controls could produce.
mana={2}
type=Artifact
[/card]
[card]
name=Feral Abomination
abilities=deathtouch
text=Deathtouch
@@ -17687,6 +17717,18 @@ power=3
toughness=3
[/card]
[card]
name=Gorm the Great
abilities=vigilance,menace
auto=may moveto(myhand) notatarget(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}
type=Legendary Creature
subtype=Giant Warrior
power=2
toughness=7
[/card]
[card]
name=Govern the Guildless
target=creature[-multicolor]
auto=moveto(mybattlefield)
@@ -18197,7 +18239,7 @@ type=Instant
[/card]
[card]
name=Growth-Chamber Guardian
auto=this(counter{1/1}<1) {2}{G}:counter(1/1,2)
auto={2}{G}:this(counter{1/1.1}<1) transforms((,newability[counter(1/1.2)])) forever
auto=@counteradded(1/1) from(this):transforms((,newability[moveTo(myHand) target(Growth-Chamber Guardian|myLibrary)])) once
text={2}{G}: Adapt 2. (If this creature has no +1/+1 counters on it, put two +1/+1 counters on it.) -- Whenever one or more +1/+1 counters are put on Growth-Chamber Guardian, you may search your library for a card named Growth-Chamber Guardian, reveal it, put it into your hand, then shuffle your library.
mana={1}{G}
@@ -20947,7 +20989,7 @@ auto=this(counter{1/1}) this(variable{plandR}>0) {t}:out{R}{R}{R}
auto=this(counter{1/1}) this(variable{plandB}>0) {t}:out{B}{B}{B}
auto=this(counter{1/1}) this(variable{plandW}>0) {t}:out{W}{W}{W}
auto=this(counter{1/1}) this(variable{plandC}>0) {t}:out{1}{1}{1}
auto=this(counter{1/1}<1) {3}{G}{G}:counter(1/1,3)
auto={3}{G}{G}:this(counter{1/1.1}<1) transforms((,newability[counter(1/1.3)])) forever
text={T}: Add one mana of any type that a land you control could produce. If Incubation Druid has a +1/+1 counter on it, add three mana of that type instead. -- {3}{G}{G}: Adapt 3. (If this creature has no +1/+1 counters on it, put three +1/+1 counters on it.)
mana={1}{G}
type=Creature
@@ -21937,6 +21979,17 @@ power=3
toughness=3
[/card]
[card]
name=Jadelight Ranger
auto=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)])) ueot oneshot optiontwoend revealend limit:1
auto=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)])) ueot oneshot optiontwoend revealend limit:1
text=When Jadelight Ranger enters the battlefield, it explores, then it explores again. (Reveal the top card of your library. Put that card into your hand if its a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard. Then repeat this process.)
mana={1}{G}{G}
type=Creature
subtype=Merfolk Scout
power=2
toughness=1
[/card]
[card]
name=Jar of Eyeballs
auto=@movedTo(creature|mygraveyard) from(battlefield):counter(0/0,2,Eyeball)
auto=this(counter{0/0.2.Eyeball}) {3}{T}:removeallcounters(0/0,1,Eyeball) && reveal:2 optionone target(*|reveal) moveto(myhand) optiononeend optiontwo name(Put in library) all(*|reveal) bottomoflibrary optiontwoend revealend
@@ -27497,6 +27550,20 @@ text=Suspend 3
type=Artifact
[/card]
[card]
name=Muldrotha, the Gravetide
auto=@each my firstmain restriction{type(land|myGraveyard)~morethan~0}:may name(Play land from graveyard) ability$!name(Play land from graveyard) name(Play land from graveyard) target(land|myGraveyard) activate castcard(normal)!$ controller
auto=@each my firstmain restriction{type(creature|myGraveyard)~morethan~0}:may name(Cast creature from graveyard) ability$!name(Cast creature from graveyard) name(Cast creature from graveyard) target(creature|myGraveyard) activate castcard(normal)!$ controller
auto=@each my firstmain restriction{type(planeswalker|myGraveyard)~morethan~0}:may name(Cast planeswalker from graveyard) ability$!name(Cast planeswalker from graveyard) name(Cast planeswalker from graveyard) target(planeswalker|myGraveyard) activate castcard(normal)!$ controller
auto=@each my firstmain restriction{type(enchantment|myGraveyard)~morethan~0}:may name(Cast enchantment from graveyard) ability$!name(Cast enchantment from graveyard) name(Cast enchantment from graveyard) target(enchantment|myGraveyard) activate castcard(normal)!$ controller
auto=@each my firstmain restriction{type(artifact|myGraveyard)~morethan~0}:may name(Cast artifact from graveyard) ability$!name(Cast artifact from graveyard) name(Cast artifact from graveyard) target(artifact|myGraveyard) activate castcard(normal)!$ controller
text=During each of your turns, you may play a land and cast a permanent spell of each permanent type from your graveyard. (If a card has multiple permanent types, choose one as you play it.)
mana={3}{B}{G}{U}
type=Legendary Creature
subtype=Elemental Avatar
power=6
toughness=6
[/card]
[card]
name=Multani, Yavimaya's Avatar
abilities=reach, trample
auto=foreach(land|myBattlefield) 1/1
@@ -32271,6 +32338,24 @@ power=3
toughness=3
[/card]
[card]
name=Pteramander
abilities=flying
auto={7}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~0} this(counter{1/1.1}<1) transforms((,newability[counter(1/1.4)])) forever
auto={6}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~1} this(counter{1/1.1}<1) transforms((,newability[counter(1/1.4)])) forever
auto={5}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~2} this(counter{1/1.1}<1) transforms((,newability[counter(1/1.4)])) forever
auto={4}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~3} this(counter{1/1.1}<1) transforms((,newability[counter(1/1.4)])) forever
auto={3}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~4} this(counter{1/1.1}<1) transforms((,newability[counter(1/1.4)])) forever
auto={2}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~5} this(counter{1/1.1}<1) transforms((,newability[counter(1/1.4)])) forever
auto={1}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~6} this(counter{1/1.1}<1) transforms((,newability[counter(1/1.4)])) forever
auto={U}:restriction{type(*[instant;sorcery]|myGraveyard)~morethan~6} this(counter{1/1.1}<1) transforms((,newability[counter(1/1.4)])) forever
text=Flying -- {7}{U}: Adapt 4. This ability costs {1} less to activate for each instant and sorcery card in your graveyard. (If this creature has no +1/+1 counters on it, put four +1/+1 counters on it.)
mana={U}
type=Creature
subtype=Salamander Drake
power=1
toughness=1
[/card]
[card]
name=Pterodon Knight
auto=if type(dinosaur|mybattlefield)~morethan~0 flying
text=Pterodon Knight has flying as long as you control a Dinosaur.
@@ -36177,7 +36262,7 @@ type=Sorcery
[/card]
[card]
name=Sauroform Hybrid
auto=this(counter{1/1}<1) {4}{G}{G}:counter(1/1,4)
auto={4}{G}{G}:this(counter{1/1.1}<1) transforms((,newability[counter(1/1.4)])) forever
text={4}{G}{G}: Adapt 4. (If this creature has no +1/+1 counters on it, put four +1/+1 counters on it.)
mana={1}{G}
type=Creature
@@ -36788,7 +36873,7 @@ toughness=1
[card]
name=Scuttlegator
abilities=defender
auto=this(counter{1/1}<1) {6}{G/U}{G/U}:counter(1/1,3)
auto={6}{GU}{GU}:this(counter{1/1.1}<1) transforms((,newability[counter(1/1.3)])) forever
auto=this(counter{1/1}) canattack
text=Defender -- {6}{G/U}{G/U}: Adapt 3. (If this creature has no +1/+1 counters on it, put three +1/+1 counters on it.) -- As long as Scuttlegator has a +1/+1 counter on it, it can attack as though it didn't have defender.
mana={4}{GU}{GU}
@@ -37798,7 +37883,7 @@ type=Enchantment
[/card]
[card]
name=Sharktocrab
auto=this(counter{1/1}<1) {2}{G}{U}:counter(1/1)
auto={2}{G}{U}:this(counter{1/1.1}<1) transforms((,newability[counter(1/1.1)])) forever
auto=@counteradded(1/1) from(this):transforms((,newability[freeze target(creature|opponentbattlefield)])) forever
text={2}{G}{U}: Adapt 1. (If this creature has no +1/+1 counters on it, put a +1/+1 counter on it.) -- Whenever one or more +1/+1 counters are put on Sharktocrab, tap target creature an opponent controls. That creature doesn't untap during its controller's next untap step.
mana={2}{G}{U}
@@ -38917,7 +39002,7 @@ toughness=4
[/card]
[card]
name=Skatewing Spy
auto=this(counter{1/1}<1) {5}{U}:counter(1/1,2)
auto={5}{U}:this(counter{1/1.1}<1) transforms((,newability[counter(1/1.2)])) forever
auto=lord(creature[counter{1/1}]|myBattlefield) flying
text={5}{U}: Adapt 2. (If this creature has no +1/+1 counters on it, put two +1/+1 counters on it.) -- Each creature you control with a +1/+1 counter on it has flying.
mana={3}{U}
@@ -39006,7 +39091,7 @@ toughness=1
[/card]
[card]
name=Skitter Eel
auto=this(counter{1/1}<1) {2}{U}:counter(1/1,2)
auto={2}{U}:this(counter{1/1.1}<1) transforms((,newability[counter(1/1.2)])) forever
text={2}{U}: Adapt 2. (If this creature has no +1/+1 counters on it, put two +1/+1 counters on it.)
mana={3}{U}
type=Creature
@@ -44163,6 +44248,22 @@ type=Enchantment
subtype=Saga
[/card]
[card]
name=The Flame of Keld
auto=counter(0/0,1,Lore)
auto=@each my firstmain:counter(0/0,1,Lore)
auto=reject all(*|myhand)
auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) draw:2 controller
auto=@damaged(creature|opponentBattlefield) from(*[instant;sorcery;red]|mystack,myGraveyard):this(counter{0/0.3.Lore}) all(trigger[to]) transforms((,newability[damage:2])) oneshot
auto=@damaged(creature|opponentBattlefield) from(*[creature;enchantment;artifact;land;planeswalker;red]|mybattlefield,myGraveyard):this(counter{0/0.3.Lore}) all(trigger[to]) transforms((,newability[damage:2])) oneshot
auto=@damagefoeof(player) from(*[instant;sorcery;red]|mystack,myGraveyard):this(counter{0/0.3.Lore}) ability$!name(Damage opponent) damage:2 opponent!$ controller
auto=@damagefoeof(player) from(*[creature;enchantment;artifact;land;planeswalker;red]|mybattlefield,myGraveyard):this(counter{0/0.3.Lore}) ability$!name(Damage opponent) damage:2 opponent!$ controller
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 — Discard your hand. -- II — Draw two cards. -- III — If a red source you control would deal damage to a permanent or player this turn, it deals that much damage plus 2 to that permanent or player instead.
mana={1}{R}
type=Enchantment
subtype=Saga
[/card]
[card]
name=The Great Henge
anyzone=if compare(power:highest:creature:mybattlefield)~equalto~1 then changecost(colorless:-1) forcedalive
anyzone=if compare(power:highest:creature:mybattlefield)~equalto~2 then changecost(colorless:-2) forcedalive
@@ -45771,7 +45872,7 @@ type=Instant
[/card]
[card]
name=Trollbred Guardian
auto=this(counter{1/1}<1) {2}{G}:counter(1/1,2)
auto={2}{G}:this(counter{1/1.1}<1) transforms((,newability[counter(1/1.2)])) forever
auto=lord(creature[counter{1/1}]|myBattlefield) trample
text={2}{G}: Adapt 2. (If this creature has no +1/+1 counters on it, put two +1/+1 counters on it.) -- Each creature you control with a +1/+1 counter on it has trample.
mana={4}{G}
@@ -50219,7 +50320,7 @@ toughness=3
name=Zegana, Utopian Speaker
abilities=trample
auto=if type(creature[(counter{1/1})]|mybattlefield)~morethan~0 then draw:1
auto=this(counter{1/1}<1) {4}{G}{U}:counter(1/1,4)
auto={4}{G}{U}:this(counter{1/1.1}<1) transforms((,newability[counter(1/1.4)])) forever
auto=lord(creature[counter{1/1}]|myBattlefield) trample
text=When Zegana, Utopian Speaker enters the battlefield, if you control another creature with a +1/+1 counter on it, draw a card. -- {4}{G}{U}: Adapt 4. (If this creature has no +1/+1 counters on it, put four +1/+1 counters on it.) -- Each creature you control with a +1/+1 counter on it has trample.
mana={2}{G}{U}