Added KHM and KHC sets, improved Android downloader, fixed/added primitives, improved "hascnt" keyword, added "myhandexilegrave" and "opponenthandexilegrave" zone targeters.

This commit is contained in:
Vittorio Alfieri
2021-01-31 00:59:15 +01:00
parent b9d6410aba
commit 783bcf1142
8 changed files with 6589 additions and 360 deletions

View File

@@ -1674,6 +1674,74 @@ public class ImgDownloader {
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/c/a/caa7922e-3313-4f12-b91e-95aaa2d76cc2.jpg?1574133191";
else if(id.equals("476217"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/a/9/a9a6cf9c-3560-435c-b0ec-8653a9dc7776.jpg?1578369133";
else if(id.equals("503841t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/d/f/df826c7d-5508-4e21-848c-91bc3e3f447a.jpg?1611206331";
else if(id.equals("503619"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/9/7/97502411-5c93-434c-b77b-ceb2c32feae7.jpg?1608253263";
else if(id.equals("503620t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/9/7/97502411-5c93-434c-b77b-ceb2c32feae7.jpg?1608253263";
else if(id.equals("503626"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/3/6/3606519e-5677-4c21-a34e-be195b6669fa.jpg?1611000242";
else if(id.equals("503627t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/3/6/3606519e-5677-4c21-a34e-be195b6669fa.jpg?1611000242";
else if(id.equals("503646"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/5/d/5d131784-c1a3-463e-a37b-b720af67ab62.jpg?1611323243";
else if(id.equals("503647t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/5/d/5d131784-c1a3-463e-a37b-b720af67ab62.jpg?1611323243";
else if(id.equals("503657"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/f/a/fab2fca4-a99f-4ffe-9c02-edb6e0be2358.jpg?1611862762";
else if(id.equals("503658t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/f/a/fab2fca4-a99f-4ffe-9c02-edb6e0be2358.jpg?1611862762";
else if(id.equals("503700"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/9/d/9dfdb73d-b001-4a59-b79e-8c8c1baea116.jpg?1610397419";
else if(id.equals("503701t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/9/d/9dfdb73d-b001-4a59-b79e-8c8c1baea116.jpg?1610397419";
else if(id.equals("503721"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/1/4/14dc88ee-bba9-4625-af0d-89f3762a0ead.jpg?1610586381";
else if(id.equals("503722t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/1/4/14dc88ee-bba9-4625-af0d-89f3762a0ead.jpg?1610586381";
else if(id.equals("503724"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/e/a/ea7e4c65-b4c4-4795-9475-3cba71c50ea5.jpg?1610153366";
else if(id.equals("503725t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/e/a/ea7e4c65-b4c4-4795-9475-3cba71c50ea5.jpg?1610153366";
else if(id.equals("503734"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/4/4/44657ab1-0a6a-4a5f-9688-86f239083821.jpg?1611054410";
else if(id.equals("503735t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/4/4/44657ab1-0a6a-4a5f-9688-86f239083821.jpg?1611054410";
else if(id.equals("503766"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/2/2/22a6a5f1-1405-4efb-af3e-e1f58d664e99.jpg?1610652603";
else if(id.equals("503767t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/2/2/22a6a5f1-1405-4efb-af3e-e1f58d664e99.jpg?1610652603";
else if(id.equals("503781"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/f/6/f6cd7465-9dd0-473c-ac5e-dd9e2f22f5f6.jpg?1610295185";
else if(id.equals("503782t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/f/6/f6cd7465-9dd0-473c-ac5e-dd9e2f22f5f6.jpg?1610295185";
else if(id.equals("503793"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/c/6/c697548f-925b-405e-970a-4e78067d5c8e.jpg?1610996900";
else if(id.equals("503794t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/c/6/c697548f-925b-405e-970a-4e78067d5c8e.jpg?1610996900";
else if(id.equals("503796"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/b/7/b76bed98-30b1-4572-b36c-684ada06826c.jpg?1610368590";
else if(id.equals("503797t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/b/7/b76bed98-30b1-4572-b36c-684ada06826c.jpg?1610368590";
else if(id.equals("503867"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/b/6/b6de14ae-0132-4261-af00-630bf15918cd.jpg?1608226844";
else if(id.equals("503868t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/b/6/b6de14ae-0132-4261-af00-630bf15918cd.jpg?1608226844";
else if(id.equals("503869"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/0/c/0ce39a19-f51d-4a35-ae80-5b82eb15fcff.jpg?1608058149";
else if(id.equals("503870t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/0/c/0ce39a19-f51d-4a35-ae80-5b82eb15fcff.jpg?1608058149";
else if(id.equals("503872"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/8/7/87a4e5fe-161f-42da-9ca2-67c8e8970e94.jpg?1608057969";
else if(id.equals("503873t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/8/7/87a4e5fe-161f-42da-9ca2-67c8e8970e94.jpg?1608057969";
else if(id.equals("503879"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/7/e/7ef37cb3-d803-47d7-8a01-9c803aa2eadc.jpg?1608058266";
else if(id.equals("503880t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/back/7/e/7ef37cb3-d803-47d7-8a01-9c803aa2eadc.jpg?1608058266";
else if(id.equals("503837t"))
cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/5/4/54a1c6a9-3531-4432-9157-e4400dbc89fd.jpg?1611206522";
return cardurl;
}
@@ -2159,6 +2227,15 @@ public class ImgDownloader {
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/6/2/623a08d1-f5ff-48b7-bdb6-54b8d7a4b931.jpg?1562639829";
else if(id.equals("503330t"))
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/c/5/c5ad13b4-bbf5-4c98-868f-4d105eaf8833.jpg?1592710082";
else if(id.equals("503754t") || id.equals("503827t"))
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/4/a/4ae9f454-4f8c-4123-9886-674bc439dfe7.jpg?1611206933";
else if(id.equals("503846t"))
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/3/d/3db39e3b-fad4-4c9b-911f-69883ac7e0e1.jpg?1611206884";
else if(id.equals("503821t"))
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/e/f/ef775ad0-b1a9-4254-ab6f-304558bb77a1.jpg?1611247501";
else if(id.equals("508147t") || id.equals("508338t") || id.equals("508160t") || id.equals("508357t") ||
id.equals("508354t") || id.equals("508349t") || id.equals("508343t"))
tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/1/1/118d0655-5719-4512-8bc1-fe759669811b.jpg?1611206824";
return tokenurl;
}
@@ -2179,7 +2256,8 @@ public class ImgDownloader {
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("295386") ||
id.equals("295229") || id.equals("295387") || id.equals("295206") || id.equals("295706") || id.equals("497549") || id.equals("497666"))
id.equals("295229") || id.equals("295387") || id.equals("295206") || id.equals("295706") || id.equals("497549") || id.equals("497666") ||
id.equals("503860"))
return false;
return true;
}

View File

@@ -0,0 +1,697 @@
[meta]
author=Wagic Team
name=Kaldheim Commander
orderindex=COM-P.KHC
year=2021-02-05
total=138
[/meta]
[card]
primitive=Bird
id=-508377
rarity=T
[/card]
[card]
primitive=Elemental
id=-508368
rarity=T
[/card]
[card]
primitive=Warrior
id=-508357
rarity=T
[/card]
[card]
primitive=Warrior
id=-508354
rarity=T
[/card]
[card]
primitive=Warrior
id=-508349
rarity=T
[/card]
[card]
primitive=Servo
id=-508345
rarity=T
[/card]
[card]
primitive=Warrior
id=-508343
rarity=T
[/card]
[card]
primitive=Warrior
id=-508338
rarity=T
[/card]
[card]
primitive=Thopter
id=-508335
rarity=T
[/card]
[card]
primitive=Thopter
id=-508330
rarity=T
[/card]
[card]
primitive=Dragon
id=-508328
rarity=T
[/card]
[card]
primitive=Boar
id=-508327
rarity=T
[/card]
[card]
primitive=Pegasus
id=-508323
rarity=T
[/card]
[card]
primitive=Spirit
id=-508315
rarity=T
[/card]
[card]
primitive=Soldier
id=-508313
rarity=T
[/card]
[card]
primitive=Soldier
id=-508311
rarity=T
[/card]
[card]
primitive=Warrior
id=-508160
rarity=T
[/card]
[card]
primitive=Spirit
id=-508148
rarity=T
[/card]
[card]
primitive=Warrior
id=-508147
rarity=T
[/card]
[card]
primitive=Lathril, Blade of the Elves
id=508147
rarity=M
[/card]
[card]
primitive=Ranar the Ever-Watchful
id=508148
rarity=M
[/card]
[card]
primitive=Cosmic Intervention
id=508149
rarity=R
[/card]
[card]
primitive=Hero of Bretagard
id=508150
rarity=R
[/card]
[card]
primitive=Stoic Farmer
id=508151
rarity=R
[/card]
[card]
primitive=Sage of the Beyond
id=508152
rarity=R
[/card]
[card]
primitive=Spectral Deluge
id=508153
rarity=R
[/card]
[card]
primitive=Tales of the Ancestors
id=508154
rarity=R
[/card]
[card]
primitive=Pact of the Serpent
id=508155
rarity=R
[/card]
[card]
primitive=Ruthless Winnower
id=508156
rarity=R
[/card]
[card]
primitive=Serpent's Soul-Jar
id=508157
rarity=R
[/card]
[card]
primitive=Bounty of Skemfar
id=508158
rarity=R
[/card]
[card]
primitive=Crown of Skemfar
id=508159
rarity=R
[/card]
[card]
primitive=Wolverine Riders
id=508160
rarity=R
[/card]
[card]
primitive=Elderfang Venom
id=508161
rarity=R
[/card]
[card]
primitive=Ethereal Valkyrie
id=508162
rarity=R
[/card]
[card]
primitive=Angel of Finality
id=508307
rarity=R
[/card]
[card]
primitive=Angel of Serenity
id=508308
rarity=M
[/card]
[card]
primitive=Banishing Light
id=508309
rarity=U
[/card]
[card]
primitive=Cleansing Nova
id=508310
rarity=R
[/card]
[card]
primitive=Cloudgoat Ranger
id=508311
rarity=U
[/card]
[card]
primitive=Eerie Interlude
id=508312
rarity=R
[/card]
[card]
primitive=Evangel of Heliod
id=508313
rarity=U
[/card]
[card]
primitive=Flickerwisp
id=508314
rarity=U
[/card]
[card]
primitive=Geist-Honored Monk
id=508315
rarity=R
[/card]
[card]
primitive=Ghostly Prison
id=508316
rarity=U
[/card]
[card]
primitive=Goldnight Commander
id=508317
rarity=U
[/card]
[card]
primitive=Kor Cartographer
id=508318
rarity=C
[/card]
[card]
primitive=Marshal's Anthem
id=508319
rarity=R
[/card]
[card]
primitive=Momentary Blink
id=508320
rarity=C
[/card]
[card]
primitive=Restoration Angel
id=508321
rarity=R
[/card]
[card]
primitive=Return to Dust
id=508322
rarity=U
[/card]
[card]
primitive=Storm Herd
id=508323
rarity=R
[/card]
[card]
primitive=Sun Titan
id=508324
rarity=M
[/card]
[card]
primitive=Wall of Omens
id=508325
rarity=U
[/card]
[card]
primitive=Arcane Artisan
id=508326
rarity=M
[/card]
[card]
primitive=Curse of the Swine
id=508327
rarity=R
[/card]
[card]
primitive=Day of the Dragons
id=508328
rarity=R
[/card]
[card]
primitive=Ghostly Flicker
id=508329
rarity=C
[/card]
[card]
primitive=Inspired Sphinx
id=508330
rarity=M
[/card]
[card]
primitive=Mist Raven
id=508331
rarity=C
[/card]
[card]
primitive=Mulldrifter
id=508332
rarity=U
[/card]
[card]
primitive=Sea Gate Oracle
id=508333
rarity=C
[/card]
[card]
primitive=Synthetic Destiny
id=508334
rarity=R
[/card]
[card]
primitive=Whirler Rogue
id=508335
rarity=U
[/card]
[card]
primitive=Windfall
id=508336
rarity=U
[/card]
[card]
primitive=Ambition's Cost
id=508337
rarity=U
[/card]
[card]
primitive=Eyeblight Cullers
id=508338
rarity=C
[/card]
[card]
primitive=Eyeblight Massacre
id=508339
rarity=U
[/card]
[card]
primitive=Lys Alana Scarblade
id=508340
rarity=U
[/card]
[card]
primitive=Miara, Thorn of the Glade
id=508341
rarity=U
[/card]
[card]
primitive=Pride of the Perfect
id=508342
rarity=U
[/card]
[card]
primitive=Prowess of the Fair
id=508343
rarity=U
[/card]
[card]
primitive=Beast Whisperer
id=508344
rarity=R
[/card]
[card]
primitive=Cultivator of Blades
id=508345
rarity=R
[/card]
[card]
primitive=Dwynen, Gilt-Leaf Daen
id=508346
rarity=R
[/card]
[card]
primitive=Elvish Archdruid
id=508347
rarity=R
[/card]
[card]
primitive=Elvish Mystic
id=508348
rarity=C
[/card]
[card]
primitive=Elvish Promenade
id=508349
rarity=U
[/card]
[card]
primitive=Elvish Rejuvenator
id=508350
rarity=C
[/card]
[card]
primitive=End-Raze Forerunners
id=508351
rarity=R
[/card]
[card]
primitive=Farhaven Elf
id=508352
rarity=C
[/card]
[card]
primitive=Harvest Season
id=508353
rarity=R
[/card]
[card]
primitive=Imperious Perfect
id=508354
rarity=R
[/card]
[card]
primitive=Jagged-Scar Archers
id=508355
rarity=U
[/card]
[card]
primitive=Llanowar Tribe
id=508356
rarity=U
[/card]
[card]
primitive=Lys Alana Huntmaster
id=508357
rarity=C
[/card]
[card]
primitive=Marwyn, the Nurturer
id=508358
rarity=R
[/card]
[card]
primitive=Masked Admirers
id=508359
rarity=R
[/card]
[card]
primitive=Nullmage Shepherd
id=508360
rarity=U
[/card]
[card]
primitive=Numa, Joraga Chieftain
id=508361
rarity=U
[/card]
[card]
primitive=Reclamation Sage
id=508362
rarity=U
[/card]
[card]
primitive=Rhys the Exiled
id=508363
rarity=R
[/card]
[card]
primitive=Springbloom Druid
id=508364
rarity=C
[/card]
[card]
primitive=Sylvan Messenger
id=508365
rarity=U
[/card]
[card]
primitive=Timberwatch Elf
id=508366
rarity=C
[/card]
[card]
primitive=Voice of Many
id=508367
rarity=U
[/card]
[card]
primitive=Voice of the Woods
id=508368
rarity=R
[/card]
[card]
primitive=Wirewood Channeler
id=508369
rarity=U
[/card]
[card]
primitive=Wood Elves
id=508370
rarity=C
[/card]
[card]
primitive=Abomination of Llanowar
id=508371
rarity=U
[/card]
[card]
primitive=Brago, King Eternal
id=508372
rarity=R
[/card]
[card]
primitive=Casualties of War
id=508373
rarity=R
[/card]
[card]
primitive=Cloudblazer
id=508374
rarity=U
[/card]
[card]
primitive=Empyrean Eagle
id=508375
rarity=U
[/card]
[card]
primitive=Golgari Findbroker
id=508376
rarity=U
[/card]
[card]
primitive=Migratory Route
id=508377
rarity=U
[/card]
[card]
primitive=Mistmeadow Witch
id=508378
rarity=U
[/card]
[card]
primitive=Moldervine Reclamation
id=508379
rarity=U
[/card]
[card]
primitive=Poison-Tip Archer
id=508380
rarity=U
[/card]
[card]
primitive=Putrefy
id=508381
rarity=U
[/card]
[card]
primitive=Shaman of the Pack
id=508382
rarity=U
[/card]
[card]
primitive=Soulherder
id=508383
rarity=U
[/card]
[card]
primitive=Thunderclap Wyvern
id=508384
rarity=U
[/card]
[card]
primitive=Twinblade Assassins
id=508385
rarity=U
[/card]
[card]
primitive=Arcane Signet
id=508386
rarity=C
[/card]
[card]
primitive=Azorius Signet
id=508387
rarity=U
[/card]
[card]
primitive=Burnished Hart
id=508388
rarity=U
[/card]
[card]
primitive=Commander's Sphere
id=508389
rarity=C
[/card]
[card]
primitive=Marble Diamond
id=508390
rarity=C
[/card]
[card]
primitive=Meteor Golem
id=508391
rarity=U
[/card]
[card]
primitive=Mind Stone
id=508392
rarity=C
[/card]
[card]
primitive=Sky Diamond
id=508393
rarity=C
[/card]
[card]
primitive=Sol Ring
id=508394
rarity=U
[/card]
[card]
primitive=Swiftfoot Boots
id=508395
rarity=U
[/card]
[card]
primitive=Azorius Chancery
id=508396
rarity=U
[/card]
[card]
primitive=Azorius Guildgate
id=508397
rarity=C
[/card]
[card]
primitive=Command Tower
id=508398
rarity=C
[/card]
[card]
primitive=Cryptic Caves
id=508399
rarity=U
[/card]
[card]
primitive=Foul Orchard
id=508400
rarity=U
[/card]
[card]
primitive=Golgari Guildgate
id=508401
rarity=C
[/card]
[card]
primitive=Golgari Rot Farm
id=508402
rarity=U
[/card]
[card]
primitive=Jungle Hollow
id=508403
rarity=C
[/card]
[card]
primitive=Meandering River
id=508404
rarity=C
[/card]
[card]
primitive=Myriad Landscape
id=508405
rarity=U
[/card]
[card]
primitive=Opal Palace
id=508406
rarity=C
[/card]
[card]
primitive=Path of Ancestry
id=508407
rarity=C
[/card]
[card]
primitive=Sejiri Refuge
id=508408
rarity=U
[/card]
[card]
primitive=Tranquil Cove
id=508409
rarity=C
[/card]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1394,6 +1394,18 @@ type=Legendary Planeswalker
subtype=Kaya
[/card]
[card]
name=Kaya the Inexorable
auto=counter(0/0,5,Loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Don't target any creature) donothing
auto={C(0/0,1,Loyalty)}:name(+1: Target creature gets ghostform) target(creature[-token]|mybattlefield) transforms((,newability[counter(0/0.1.Ghostform)],newability[@movedto(this|graveyard) from(battlefield) restriction{compare(hascntghostform)~morethan~0}:name(Put back to hand) all(creature[fresh;counter{0/0.1.Ghostform}]|mygraveyard) moveto(myhand) and!( token(Spirit Cai) )!],newability[@movedto(this|graveyard) from(battlefield) restriction{compare(hascntghostform)~morethan~0}:counter(0/0.1.Ghostform)],newability[@movedto(this|exile) from(battlefield) restriction{compare(hascntghostform)~morethan~0}:name(Put back to hand) all(creature[fresh;counter{0/0.1.Ghostform}]|myexile) moveto(myhand) and!( token(Spirit Cai) )!],newability[@movedto(this|exile) from(battlefield) restriction{compare(hascntghostform)~morethan~0}:counter(0/0.1.Ghostform)])) forever
auto={C(0/0,-3,Loyalty)}:name(-3: Exile non-land permanent) target(*[-land]|battlefield) moveto(exile)
auto={C(0/0,-7,Loyalty)}:name(-7: Emblem cast during upkeep) emblem transforms((,newability[@each my upkeep:may name(Cast legendary spell) target(*[legendary]|myhandexilegrave) activate castcard(normal)])) forever dontremove
text=+1: Put a ghostform counter on up to one target nontoken creature. It gains "When this creature dies or is put into exile, return it to its owner's hand and create a 1/1 white Spirit creature token with flying." -- -3: Exile target nonland permanent. -- -7: You get an emblem with "At the beginning of your upkeep, you may cast a legendary spell from your hand, from your graveyard, or from among cards you own in exile without paying its mana cost."
mana={3}{W}{B}
type=Legendary Planeswalker
subtype=Kaya
[/card]
[card]
name=Kiora, Behemoth Beckoner
auto=counter(0/0,7,loyalty)
auto=@movedTo(creature[power>=4]|myBattlefield):draw:1
@@ -1800,6 +1812,19 @@ subtype=Bolas
color=blue,black,red
[/card]
[card]
name=Niko Aris
auto=token(Shard)*x
auto=counter(0/0,3,Loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Don't target creature) donothing
auto={C(0/0,1,Loyalty)}:name(+1: Target creature gains unblockable) target(creature|mybattlefield) transforms((,newability[unblockable],newability[@damaged(player) from(this):moveto(ownerhand)],newability[@damaged(*[creature;planeswalker]|battlefield) from(this):moveto(ownerhand)])) ueot
auto={C(0/0,-1,Loyalty)}:name(-1: Create a shard) token(Shard)
auto={C(0/0,-1,Loyalty)}:name(-1: Deals 2 damage) target(creature[tapped]) damage:twicepdrewcount
text=When Niko Aris enters the battlefield, create X Shard tokens. (They're enchantments with "{2}, Sacrifice this enchantment: Scry 1, then draw a card.") -- +1: Up to one target creature you control can't be blocked this turn. Whenever that creature deals damage this turn, return it to its owner's hand. -- -1: Niko Aris deals 2 damage to target tapped creature for each card you've drawn this turn. -- -1: Create a Shard token.
mana={X}{W}{U}{U}
type=Legendary Planeswalker
subtype=Niko
[/card]
[card]
name=Nissa, Genesis Mage
auto=counter(0/0,5,loyalty)
auto={C(0/0,2,Loyalty)}:name(+2: Untap up to two target creature and lands) untap target(<upto:2>creature) && ability$!name(Untap lands) untap target(<upto:2>land)!$ controller
@@ -2545,6 +2570,18 @@ mana={3}{W}
type=Legendary Planeswalker
[/card]
[card]
name=Tibalt, Cosmic Impostor
auto=counter(0/0,5,Loyalty)
auto=create(TibaltEmblem:TibaltEmblem:0/0:shroud:indestructible)])) and!( transforms((,newability[lord(*[counter{0/0.1.TibaltExiled}]|myexile) canplayfromexile],newability[lord(*[counter{0/0.1.TibaltExiled}]|myexile) anytypeofmana],newability[{0}:name(Cast from opponent exile) target(*[counter{0/0.1.TibaltExiled}]|opponentexile) moveto(myexile) and!( transforms((,newability[counter(0/0.1.TibaltExiled)],newability[canplayfromexile],newability[anytypeofmana],newability[phaseaction[endofturn once checkex] moveTo(ownerexile)],newability[phaseaction[untap once checkex] counter(0/0.1.TibaltExiled)])) ueot )!])) forever )!
auto={C(0/0,2,Loyalty)}:name(+2: Exile the top card) all(*[zpos=1]|library) moveto(ownerexile) and!( counter(0/0,1,TibaltExiled) )!
auto={C(0/0,-3,Loyalty)}:name(-3: Exile target artifact or creature) target(*[artifact;creature]|battlefield) moveto(ownerexile) and!( counter(0/0,1,TibaltExiled) )!
auto={C(0/0,-8,Loyalty)}:name(-8: Exile all cards from all graveyards) all(*|graveyard) moveto(ownerexile) and!( counter(0/0,1,TibaltExiled) )!
text=As Tibalt enters the battlefield, you get an emblem with "You may play cards exiled with Tibalt, Cosmic Impostor, and you may spend mana as though it were mana of any color to cast those spells." -- +2: Exile the top card of each players library. -- -3: Exile target artifact or creature. -- -8: Exile all cards from all graveyards. Add {R}{R}{R}.
mana={5}{B}{R}
type=Legendary Planeswalker
subtype=Tibalt
[/card]
[card]
name=Tibalt, Rakish Instigator
auto=counter(0/0,5,loyalty)
abilities=nolifegainopponent
@@ -2566,6 +2603,18 @@ type=Legendary Planeswalker
subtype=Tibalt
[/card]
[card]
name=Tyvar Kell
auto=counter(0/0,3,Loyalty)
auto=lord(elf|mybattlefield) transforms((,newability[{T}:add{B}]))
auto={C(0/0,1,Loyalty)}:name(+1: Put +1/+1 counter) target(elf|mybattlefield) transforms((,newability[counter(1/1)],newability[deathtouch],newability[untap])) ueot
auto={C(0/0,0,Loyalty)}:name(0: Create 1/1 Elf) token(Warrior,Creature Elf Warrior,1/1,green)
auto={C(0/0,-6,Loyalty)}:name(-6: Emblem cast elf) emblem transforms((,newability[@movedTo(elf|mybattlefield):all(trigger[to]) transforms((,newability[haste],newability[draw:2 controller])) ueot])) forever dontremove
text=Elves you control have “{T}: Add {B}.” -- +1: Put a +1/+1 counter on up to one target Elf. Untap it. It gains deathtouch until end of turn. -- 0: Create a 1/1 green Elf Warrior creature token. -- -6: You get an emblem with “Whenever you cast an Elf spell, it gains haste until end of turn and you draw two cards.”
mana={2}{G}{G}
type=Legendary Planeswalker
subtype=Tyvar
[/card]
[card]
name=Ugin, the Ineffable
auto=counter(0/0,4,loyalty)
auto=lord(*[colorless]|mycastingzone) altercost(colorless,-2)

View File

@@ -474,13 +474,11 @@ mana={U}
type=Instant
[/card]
[card]
name=Artisan of Forms
text=Heroic — Whenever you cast a spell that targets Artisan of Forms, you may have Artisan of Forms become a copy of target creature and gain this ability.
mana={1}{U}
type=Creature
subtype=Human Wizard
power=1
toughness=1
name=Ascent of the Worthy
text=(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.) -- I, II — Choose a creature you control. Until your next turn, all damage that would be dealt to creatures you control is dealt to that creature instead. -- III — Return target creature card from your graveyard to the battlefield with a flying counter on it. That creature is an Angel Warrior in addition to its other types.
mana={1}{W}{B}
type=Enchantment
subtype=Saga
[/card]
[card]
name=Ashcloud Phoenix

View File

@@ -137,6 +137,10 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker"); //Any Damageable target (player, creature, planeswalker)
found = s.find("planeswalker,creature");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker"); //Any Damageable target (player, creature, planeswalker)
found = s.find("creature^planeswalker");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker"); //Any Damageable target (player, creature, planeswalker)
found = s.find("planeswalker^creature");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker"); //Any Damageable target (player, creature, planeswalker)
found = s.find("creature");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other); //2 Damageable target (player, creature)
found = s.find("planeswalker");
@@ -286,6 +290,18 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
zones[nbzones++] = MTGGameZone::OPPONENT_HAND;
zones[nbzones++] = MTGGameZone::OPPONENT_COMMANDZONE;
}
else if (zoneName.compare("myhandexilegrave") == 0)
{
zones[nbzones++] = MTGGameZone::MY_GRAVEYARD;
zones[nbzones++] = MTGGameZone::MY_EXILE;
zones[nbzones++] = MTGGameZone::MY_HAND;
}
else if (zoneName.compare("opponenthandexilegrave") == 0)
{
zones[nbzones++] = MTGGameZone::OPPONENT_GRAVEYARD;
zones[nbzones++] = MTGGameZone::OPPONENT_EXILE;
zones[nbzones++] = MTGGameZone::OPPONENT_HAND;
}
else if (zoneName.compare("myzones") == 0)
{
zones[nbzones++] = MTGGameZone::MY_BATTLEFIELD;

View File

@@ -610,7 +610,12 @@ void WParsedInt::init(string s, Spell * spell, MTGCardInstance * card)
Counters * counters = card->counters;
for(size_t i = 0; i < counters->counters.size(); ++i){
Counter * counter = counters->counters[i];
if(counter->name == s.substr(6)){
if(counter->name == "" && (s.substr(6) == "11" || s.substr(6) == "-1-1")){
if((counter->power == 1 && counter->toughness == 1 && s.substr(6) == "11") || (counter->power == -1 && counter->toughness == -1 && s.substr(6) == "-1-1")){
intValue = counter->nb;
break;
}
} else if(counter->name == s.substr(6)){
intValue = counter->nb;
break;
}