Merge branch 'master' into pyre

This commit is contained in:
Oleg Agafonov 2020-12-27 12:33:00 +01:00 committed by GitHub
commit 2f04b28a3d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 970 additions and 2 deletions

View file

@ -0,0 +1,91 @@
1 [C20:114] Jace, Architect of Thought
1 [C20:18] Xyris, the Writhing Storm
1 [C20:2] Haldan, Avid Arcanist
1 [C20:13] Pako, Arcane Retriever
1 [C20:33] Eon Frolicker
1 [C20:36] Nascent Metamorph
1 [C20:60] Glademuse
1 [C20:63] Ravenous Gigantotherium
1 [C20:115] Lunar Mystic
1 [C20:120] Niblis of Frost
1 [C20:125] Talrand, Sky Summoner
1 [C20:147] Charmbreaker Devils
1 [C20:150] Dualcaster Mage
1 [C20:151] Etali, Primal Storm
1 [C20:153] Goblin Dark-Dwellers
1 [C20:210] Djinn Illuminatus
1 [C20:220] Melek, Izzet Paragon
1 [C20:229] Rashmi, Eternities Crafter
1 [C20:234] Wort, the Raidmother
1 [C20:253] Solemn Simulacrum
1 [C20:118] Murmuring Mystic
1 [C20:206] Crackling Drake
1 [C20:161] Surreal Memoir
1 [C20:32] Decoy Gambit
1 [C20:50] Deflecting Swat
1 [C20:59] Curious Herd
1 [C20:146] Chaos Warp
1 [C20:148] Comet Storm
1 [C20:149] Commune with Lava
1 [C20:160] Starstorm
1 [C20:192] Strength of the Tajuru
1 [C20:203] Artifact Mutation
1 [C20:227] Prophetic Bolt
1 [IKO:111] Clash of Titans
1 [IKO:180] Channeled Force
1 [C20:108] Chemister's Insight
1 [C20:111] Frantic Search
1 [C20:127] Whiplash Trap
1 [C20:169] Crop Rotation
1 [C20:171] Evolution Charm
1 [C20:174] Harrow
1 [C20:178] Hunter's Insight
1 [C20:179] Hunting Pack
1 [C20:184] Natural Connection
1 [C20:190] Slice in Twain
1 [C20:193] Tribute to the Wild
1 [C20:216] Growth Spiral
1 [C20:230] Temur Charm
1 [C20:53] Lavabrink Floodgates
1 [C20:70] Twinning Staff
1 [C20:67] Bonder's Ornament
1 [C20:237] Arcane Signet
1 [C20:240] Commander's Sphere
1 [C20:245] Lightning Greaves
1 [C20:252] Sol Ring
1 [C20:124] Swarm Intelligence
1 [IKO:200] Primal Empathy
1 [C20:62] Predatory Impetus
1 [C20:37] Psychic Impetus
1 [C20:55] Shiny Impetus
1 [C20:196] Wilderness Reclamation
1 [C20:263] Cinder Glade
1 [C20:269] Desolate Lighthouse
1 [C20:273] Exotic Orchard
1 [C20:284] Kessig Wolf Run
1 [C20:290] Mossfire Valley
1 [C20:291] Mosswort Bridge
1 [C20:296] Oran-Rief, the Vastwood
1 [C20:306] Scavenger Grounds
1 [C20:322] Yavimaya Coast
1 [C20:264] Command Tower
1 [C20:275] Frontier Bivouac
1 [C20:279] Gruul Turf
1 [C20:280] Halimar Depths
1 [C20:283] Izzet Boilerworks
1 [C20:292] Myriad Landscape
1 [C20:304] Rupture Spire
1 [C20:311] Simic Growth Chamber
1 [IKO:252] Rugged Highlands
1 [IKO:255] Swiftwater Cliffs
1 [IKO:256] Thornwood Falls
5 [IKO:274] Forest
2 [IKO:273] Forest
1 [IKO:272] Forest
3 [IKO:265] Island
1 [IKO:263] Island
1 [IKO:264] Island
2 [IKO:269] Mountain
2 [IKO:270] Mountain
1 [IKO:271] Mountain
SB: 1 [C20:9] Kalamax, the Stormsire

View file

@ -0,0 +1,93 @@
1 [C20:223] Nahiri, the Harbinger
1 [C20:11] Kelsien, the Plague
1 [C20:15] Silvar, Devourer of the Free
1 [C20:1] Trynn, Champion of Freedom
1 [C20:29] Verge Rangers
1 [C20:47] Species Specialist
1 [C20:48] Titan Hunter
1 [C20:51] Fireflux Squad
1 [C20:52] Frontier Warmonger
1 [C20:78] Bounty Agent
1 [C20:84] Dearly Departed
1 [C20:89] Frontline Medic
1 [C20:93] Knight of the White Orchid
1 [C20:94] Magus of the Disk
1 [C20:96] Odric, Master Tactician
1 [C20:98] Riders of Gavony
1 [C20:103] Thalia's Lieutenant
1 [C20:104] Thraben Doomsayer
1 [C20:132] Disciple of Bolas
1 [C20:141] Xathrid Necromancer
1 [C20:143] Alesha, Who Smiles at Death
1 [C20:144] Captivating Crew
1 [C20:152] Fumiko the Lowblood
1 [C20:156] Magus of the Wheel
1 [C20:163] Titan of Eternal Fire
1 [C20:200] Adriana, Captain of the Guard
1 [IKO:188] General's Enforcer
1 [C20:77] Banisher Priest
1 [C20:81] Cavalry Pegasus
1 [C20:87] Devout Chaplain
1 [C20:142] Zulaport Cutthroat
1 [C20:154] Humble Defector
1 [C20:213] Garna, the Bloodflame
1 [C20:82] Citywide Bust
1 [C20:83] Cleansing Nova
1 [C20:91] Increasing Devotion
1 [C20:134] Painful Truths
1 [C20:129] Ambition's Cost
1 [C20:23] Call the Coppercoats
1 [C20:26] Flawless Maneuver
1 [C20:106] Unexpectedly Absent
1 [C20:205] Crackling Doom
1 [IKO:183] Dire Tactics
1 [C20:231] Terminate
1 [C20:69] Sanctuary Blade
1 [C20:67] Bonder's Ornament
1 [C20:237] Arcane Signet
1 [C20:239] Boros Signet
1 [C20:247] Orzhov Signet
1 [C20:249] Rakdos Signet
1 [C20:240] Commander's Sphere
1 [C20:242] Heirloom Blade
1 [C20:251] Skullclamp
1 [C20:252] Sol Ring
1 [C20:54] Molten Echoes
1 [C20:157] Outpost Siege
1 [C20:158] Shared Animosity
1 [IKO:28] Sanctuary Lockdown
1 [IKO:73] Bastion of Remembrance
1 [C20:28] Martial Impetus
1 [C20:46] Parasitic Impetus
1 [C20:55] Shiny Impetus
1 [C20:164] Vigilante Justice
1 [C20:257] Battlefield Forge
1 [C20:273] Exotic Orchard
1 [C20:309] Shadowblood Ridge
1 [C20:314] Smoldering Marsh
1 [C20:316] Spinerock Knoll
1 [C20:321] Windbrisk Heights
1 [C20:259] Bojuka Bog
1 [C20:260] Boros Garrison
1 [C20:264] Command Tower
1 [C20:292] Myriad Landscape
1 [C20:294] Nomad Outpost
1 [C20:297] Orzhov Basilica
1 [C20:298] Path of Ancestry
1 [C20:300] Rakdos Carnarium
1 [C20:319] Temple of the False God
1 [C20:320] Unclaimed Territory
1 [IKO:243] Bloodfell Caves
1 [IKO:247] Evolving Wilds
1 [IKO:254] Scoured Barrens
1 [IKO:258] Wind-Scarred Crag
2 [IKO:271] Mountain
1 [IKO:269] Mountain
1 [IKO:270] Mountain
6 [IKO:261] Plains
1 [IKO:260] Plains
1 [IKO:262] Plains
2 [IKO:267] Swamp
1 [IKO:268] Swamp
1 [IKO:266] Swamp
SB: 1 [C20:8] Jirina Kudro

View file

@ -0,0 +1,89 @@
1 [C20:201] Ajani Unyielding
1 [C20:16] Tayam, Luminous Enigma
1 [C20:3] Nikara, Lair Scavenger
1 [C20:19] Yannik, Scavenging Sentinel
1 [C20:22] Avenging Huntbonder
1 [C20:24] Cartographer's Hawk
1 [C20:30] Vitality Hunter
1 [C20:41] Daring Fiendbonder
1 [C20:66] Slippery Bogbonder
1 [C20:73] Akroma, Angel of Wrath
1 [C20:75] Angel of Finality
1 [C20:80] Cataclysmic Gearhulk
1 [C20:92] Kalemne's Captain
1 [C20:95] Odric, Lunarch Marshal
1 [C20:97] Reveillark
1 [C20:99] Solemn Recruit
1 [C20:102] Sunblast Angel
1 [C20:107] Zetalpa, Primal Dawn
1 [C20:130] Cairn Wanderer
1 [C20:137] Soul of Innistrad
1 [C20:138] Soulflayer
1 [C20:176] Hornet Queen
1 [C20:182] Majestic Myriarch
1 [C20:191] Splinterfright
1 [C20:202] Archon of Valor's Reach
1 [C20:218] Karametra, God of Harvests
1 [IKO:104] Void Beckoner
1 [IKO:174] Titanoth Rex
1 [C20:72] Aerial Responder
1 [C20:140] Vampire Nighthawk
1 [C20:165] Acidic Slime
1 [C20:187] Sakura-Tribe Elder
1 [C20:188] Satyr Wayfinder
1 [C20:189] Skullwinder
1 [C20:226] Nyx Weaver
1 [C20:65] Selective Adaptation
1 [C20:133] Ever After
1 [C20:211] Duneblast
1 [IKO:101] Unbreakable Bond
1 [C20:139] Unburial Rites
1 [C20:170] Cultivate
1 [C20:173] Harmonize
1 [C20:61] Obscuring Haze
1 [IKO:75] Blood Curdle
1 [C20:199] Abzan Charm
1 [C20:208] Deathsprout
1 [C20:209] Despark
1 [C20:215] Grisly Salvage
1 [C20:45] Netherborn Altar
1 [C20:246] Mimic Vat
1 [C20:67] Bonder's Ornament
1 [C20:237] Arcane Signet
1 [C20:240] Commander's Sphere
1 [C20:252] Sol Ring
1 [C20:254] Swiftfoot Boots
1 [C20:105] Together Forever
1 [C20:198] Abzan Ascendancy
1 [C20:207] Deadbridge Chant
1 [C20:28] Martial Impetus
1 [C20:46] Parasitic Impetus
1 [C20:62] Predatory Impetus
1 [C20:71] Nesting Grounds
1 [C20:261] Canopy Vista
1 [C20:262] Caves of Koilos
1 [C20:273] Exotic Orchard
1 [C20:276] Gavony Township
1 [C20:278] Grim Backwoods
1 [C20:317] Sungrass Prairie
1 [C20:258] Blighted Woodland
1 [C20:264] Command Tower
1 [C20:277] Golgari Rot Farm
1 [C20:285] Krosan Verge
1 [C20:288] Memorial to Folly
1 [C20:292] Myriad Landscape
1 [C20:297] Orzhov Basilica
1 [C20:305] Sandsteppe Citadel
1 [C20:308] Selesnya Sanctuary
1 [IKO:244] Blossoming Sands
1 [IKO:247] Evolving Wilds
1 [IKO:249] Jungle Hollow
1 [IKO:254] Scoured Barrens
2 [IKO:274] Forest
2 [IKO:273] Forest
4 [IKO:262] Plains
3 [IKO:260] Plains
3 [IKO:268] Swamp
2 [IKO:267] Swamp
2 [IKO:266] Swamp
SB: 1 [C20:10] Kathril, Aspect Warper

View file

@ -0,0 +1,92 @@
1 [C20:145] Chandra, Flamecaller
1 [C20:6] Akim, the Soaring Wind
1 [C20:4] Brallin, Skyshark Rider
1 [C20:14] Shabraz, the Skyshark
1 [C20:21] Cryptic Trilobite
1 [C20:27] Herald of the Forgotten
1 [C20:34] Ethereal Forager
1 [C20:49] Agitator Ant
1 [C20:56] Spellpyre Phoenix
1 [C20:57] Surly Badgersaur
1 [C20:88] Eternal Dragon
1 [C20:101] Sun Titan
1 [C20:109] Curator of Mysteries
1 [C20:121] Nimble Obstructionist
1 [C20:122] Portal Mage
1 [C20:217] Isperia, Supreme Judge
1 [C20:221] Mercurial Chemister
1 [C20:225] Niv-Mizzet, the Firemind
1 [C20:219] The Locust God
1 [C20:248] Psychosis Crawler
1 [IKO:36] Valiant Rescuer
1 [IKO:133] Rooting Moloch
1 [IKO:205] Savai Thundermane
1 [C20:126] Vizier of Tumbling Sands
1 [C20:25] Dismantling Wave
1 [C20:74] Akroma's Vengeance
1 [C20:85] Decree of Justice
1 [C20:86] Descend upon the Sinful
1 [IKO:43] Boon of the Wish-Giver
1 [C20:128] Windfall
1 [C20:159] Slice and Dice
1 [C20:222] Migratory Route
1 [C20:35] Fierce Guardianship
1 [IKO:59] Neutralize
1 [IKO:217] Zenith Flare
1 [C20:112] Hieroglyphic Illumination
1 [C20:236] Abandoned Sarcophagus
1 [C20:241] Fluctuator
1 [C20:67] Bonder's Ornament
1 [C20:237] Arcane Signet
1 [C20:238] Azorius Signet
1 [C20:239] Boros Signet
1 [C20:243] Izzet Signet
1 [C20:240] Commander's Sphere
1 [C20:252] Sol Ring
1 [IKO:238] Raugrin Crystal
1 [C20:31] Crystalline Resonance
1 [C20:76] Astral Drift
1 [C20:90] Hoofprints of the Stag
1 [C20:110] Drake Haven
1 [C20:119] New Perspectives
1 [C20:162] Tectonic Reformation
1 [IKO:61] Ominous Seas
1 [IKO:65] Reconnaissance Mission
1 [C20:28] Martial Impetus
1 [C20:37] Psychic Impetus
1 [C20:55] Shiny Impetus
1 [C20:79] Cast Out
1 [C20:100] Spirit Cairn
1 [C20:155] Lightning Rift
1 [C20:273] Exotic Orchard
1 [C20:281] Hostile Desert
1 [C20:282] Irrigated Farmland
1 [C20:299] Prairie Stream
1 [C20:310] Shivan Reef
1 [C20:312] Skycloud Expanse
1 [C20:255] Ash Barrens
1 [C20:256] Azorius Chancery
1 [C20:260] Boros Garrison
1 [C20:264] Command Tower
1 [C20:266] Desert of the Fervent
1 [C20:267] Desert of the Mindful
1 [C20:268] Desert of the True
1 [C20:271] Drifting Meadow
1 [C20:274] Forgotten Cave
1 [C20:283] Izzet Boilerworks
1 [C20:287] Lonely Sandbar
1 [C20:292] Myriad Landscape
1 [C20:301] Reliquary Tower
1 [C20:302] Remote Isle
1 [C20:307] Secluded Steppe
1 [C20:313] Smoldering Crater
1 [C20:319] Temple of the False God
3 [IKO:265] Island
1 [IKO:263] Island
1 [IKO:264] Island
1 [IKO:270] Mountain
2 [IKO:269] Mountain
3 [IKO:271] Mountain
4 [IKO:262] Plains
1 [C20:293] Mystic Monastery
SB: 1 [C20:7] Gavi, Nest Warden

View file

@ -0,0 +1,82 @@
1 [CMR:379] Odric, Lunarch Marshal
1 [CMR:382] Relic Seeker
1 [CMR:386] Sram, Senior Edificer
1 [CMR:412] Dualcaster Mage
1 [CMR:370] Danitha Capashen, Paragon
1 [CMR:374] Flickerwisp
1 [CMR:376] Ironclad Slayer
1 [CMR:377] Kor Cartographer
1 [CMR:381] Oreskos Explorer
1 [CMR:454] Tiana, Ship's Caretaker
1 [CMR:460] Brass Squire
1 [CMR:378] Martial Coup
1 [CMR:392] Winds of Rath
1 [CMR:415] Jaya's Immolating Inferno
1 [CMR:416] Relentless Assault
1 [CMR:411] Comet Storm
1 [CMR:388] Unbreakable Formation
1 [CMR:391] White Sun's Zenith
1 [CMR:419] Wild Ricochet
1 [CMR:420] Word of Seizing
1 [CMR:444] Deflecting Palm
1 [CMR:447] Master Warcraft
1 [CMR:449] Response // Resurgence
1 [CMR:369] Condemn
1 [CMR:371] Dawn Charm
1 [CMR:372] Disenchant
1 [CMR:375] Generous Gift
1 [CMR:383] Return to Dust
1 [CMR:387] Swords to Plowshares
1 [CMR:390] Valorous Stance
1 [CMR:410] Abrade
1 [CMR:413] Expedite
1 [CMR:414] Fists of Flame
1 [CMR:417] Temur Battle Rage
1 [CMR:418] Volcanic Fallout
1 [CMR:442] Boros Charm
1 [CMR:456] Wear // Tear
1 [CMR:364] Blazing Sunsteel
1 [CMR:457] Blackblade Reforged
1 [CMR:465] Loxodon Warhammer
1 [CMR:473] Sunforger
1 [CMR:475] Sword of Vengeance
1 [CMR:458] Bonesplitter
1 [CMR:459] Boros Signet
1 [CMR:461] Explorer's Scope
1 [CMR:462] Fireshrieker
1 [CMR:463] Haunted Cloak
1 [CMR:464] Hero's Blade
1 [CMR:466] Mask of Avacyn
1 [CMR:468] Ring of Thune
1 [CMR:469] Ring of Valkas
1 [CMR:472] Sol Ring
1 [CMR:474] Swiftfoot Boots
1 [CMR:363] Timely Ward
1 [CMR:384] Sigarda's Aid
1 [CMR:373] Faith Unbroken
1 [CMR:380] On Serra's Wings
1 [CMR:385] Spirit Mantle
1 [CMR:389] Unquestioned Authority
1 [CMR:494] Slayers' Stronghold
1 [CMR:477] Boros Garrison
1 [CMR:478] Boros Guildgate
1 [CMR:479] Command Tower
1 [CMR:481] Encroaching Wastes
1 [CMR:482] Evolving Wilds
1 [CMR:483] Forgotten Cave
1 [CMR:486] Memorial to War
1 [CMR:487] Myriad Landscape
1 [CMR:489] Rogue's Passage
1 [CMR:490] Rupture Spire
1 [CMR:495] Stone Quarry
1 [CMR:496] Sunhome, Fortress of the Legion
1 [CMR:497] Terramorphic Expanse
1 [CMR:499] Transguild Promenade
1 [CMR:502] Wind-Scarred Crag
4 [CMR:509] Mountain
5 [CMR:508] Mountain
9 [CMR:505] Plains
5 [CMR:504] Plains
1 [CMR:491] Secluded Steppe
SB: 1 [CMR:362] Wyleth, Soul of Steel

View file

@ -0,0 +1,75 @@
1 [CMR:422] Avenger of Zendikar
1 [CMR:366] Trench Behemoth
1 [CMR:367] Stumpsquall Hydra
1 [CMR:368] Elder Deep-Fiend
1 [CMR:399] Meloku the Clouded Mirror
1 [CMR:401] Nezahal, Primal Tide
1 [CMR:403] Scourge of Fleets
1 [CMR:404] Shipbreaker Kraken
1 [CMR:406] Sphinx of Uthuun
1 [CMR:407] Stormtide Leviathan
1 [CMR:408] Tromokratis
1 [CMR:430] Molimo, Maro-Sorcerer
1 [CMR:431] Rampaging Baloths
1 [CMR:433] Ramunap Excavator
1 [CMR:438] Terastodon
1 [CMR:439] Verdant Sun's Avatar
1 [CMR:445] Fathom Mage
1 [CMR:448] Murkfiend Liege
1 [CMR:452] Simic Sky Swallower
1 [CMR:400] Mulldrifter
1 [CMR:405] Slinn Voda, the Rising Deep
1 [CMR:421] Acidic Slime
1 [CMR:425] Eternal Witness
1 [CMR:434] Reclamation Sage
1 [CMR:437] Sporemound
1 [CMR:440] Wickerbough Elder
1 [CMR:441] Yavimaya Elder
1 [CMR:443] Coiling Oracle
1 [CMR:450] Sharktocrab
1 [CMR:467] Meteor Golem
1 [CMR:409] Whelming Wave
1 [CMR:453] Spitting Image
1 [CMR:394] Compulsive Research
1 [CMR:424] Cultivate
1 [CMR:426] Explore
1 [CMR:427] Harmonize
1 [CMR:429] Kodama's Reach
1 [CMR:432] Rampant Growth
1 [CMR:436] Search for Tomorrow
1 [CMR:455] Urban Evolution
1 [CMR:393] Arcane Denial
1 [CMR:395] Counterspell
1 [CMR:396] Fact or Fiction
1 [CMR:397] Into the Roil
1 [CMR:402] Peel from Reality
1 [CMR:423] Beast Within
1 [CMR:446] Growth Spiral
1 [CMR:451] Simic Charm
1 [CMR:470] Seer's Sundial
1 [CMR:471] Simic Signet
1 [CMR:472] Sol Ring
1 [CMR:474] Swiftfoot Boots
1 [CMR:398] Ior Ruin Expedition
1 [CMR:428] Khalni Heart Expedition
1 [CMR:435] Retreat to Kazandu
1 [CMR:476] Blighted Woodland
1 [CMR:479] Command Tower
1 [CMR:480] Coral Atoll
1 [CMR:482] Evolving Wilds
1 [CMR:484] Jungle Basin
1 [CMR:485] Memorial to Genius
1 [CMR:488] Reliquary Tower
1 [CMR:492] Simic Growth Chamber
1 [CMR:493] Simic Guildgate
1 [CMR:497] Terramorphic Expanse
1 [CMR:498] Thornwood Falls
1 [CMR:500] Vivid Creek
1 [CMR:501] Vivid Grove
1 [CMR:503] Woodland Stream
5 [CMR:511] Forest
10 [CMR:510] Forest
5 [CMR:506] Island
10 [CMR:507] Island
SB: 1 [CMR:365] Aesi, Tyrant of Gyre Strait

View file

@ -0,0 +1,89 @@
1 [ZNC:10] Admonition Angel
1 [ZNC:3] Trove Warden
1 [ZNC:6] Geode Rager
1 [ZNC:15] Emeria Angel
1 [ZNC:16] Emeria Shepherd
1 [ZNC:21] Sun Titan
1 [ZNC:75] Multani, Yavimaya's Avatar
1 [ZNC:77] Rampaging Baloths
1 [ZNC:84] Sylvan Advocate
1 [ZNC:86] Waker of the Wilds
1 [ZNC:93] Living Twister
1 [ZNC:94] Mina and Denn, Wildborn
1 [ZNC:97] Omnath, Locus of Rage
1 [ZNC:9] Abzan Falconer
1 [ZNC:14] Elite Scaleguard
1 [ZNC:18] Kor Cartographer
1 [ZNC:59] Acidic Slime
1 [ZNC:60] Armorcraft Judge
1 [ZNC:63] Elvish Rejuvenator
1 [ZNC:64] Embodiment of Insight
1 [ZNC:65] Evolution Sage
1 [ZNC:67] Fertilid
1 [ZNC:71] Keeper of Fables
1 [ZNC:81] Satyr Wayfinder
1 [ZNC:82] Sporemound
1 [ZNC:83] Springbloom Druid
1 [ZNC:85] Tuskguard Captain
1 [ZNC:87] Yavimaya Elder
1 [ZNC:116] Sandstone Oracle
1 [ZNC:117] Scaretiller
1 [ZNR:229] Murasa Rootgrazer
1 [ZNC:17] Hour of Revelation
1 [ZNC:19] Planar Outburst
1 [ZNC:76] Nissa's Renewal
1 [ZNC:61] Beanstalk Giant
1 [ZNC:62] Circuitous Route
1 [ZNC:66] Far Wanderings
1 [ZNC:68] Harmonize
1 [ZNC:73] Kodama's Reach
1 [ZNC:91] Ground Assault
1 [ZNC:105] Treacherous Terrain
1 [ZNC:79] Return of the Wildspeaker
1 [ZNC:12] Condemn
1 [ZNC:13] Crush Contraband
1 [ZNC:69] Harrow
1 [ZNC:70] Inspiring Call
1 [ZNC:95] Naya Charm
1 [ZNC:104] Sylvan Reclamation
1 [ZNR:201] Roiling Regrowth
1 [ZNC:119] Seer's Sundial
1 [ZNC:106] Arcane Signet
1 [ZNC:120] Sol Ring
1 [ZNC:22] Together Forever
1 [ZNC:58] Abundance
1 [ZNC:74] The Mending of Dominaria
1 [ZNC:80] Rites of Flourishing
1 [ZNC:11] Banishing Light
1 [ZNC:20] Retreat to Emeria
1 [ZNC:72] Khalni Heart Expedition
1 [ZNC:78] Retreat to Kazandu
1 [ZNC:88] Zendikar's Roil
1 [ZNC:137] Needle Spires
1 [HOU:151] Struggle // Survive
1 [ZNC:121] Blighted Woodland
1 [ZNC:122] Boros Garrison
1 [ZNC:123] Boros Guildgate
1 [ZNC:124] Command Tower
1 [ZNC:125] Cryptic Caves
1 [ZNC:129] Evolving Wilds
1 [ZNC:131] Gruul Turf
1 [ZNC:130] Gruul Guildgate
1 [ZNC:132] Jungle Shrine
1 [ZNC:134] Krosan Verge
1 [ZNC:135] Myriad Landscape
1 [ZNC:136] Naya Panorama
1 [ZNC:139] Selesnya Guildgate
1 [ZNC:140] Selesnya Sanctuary
1 [ZNC:142] Terramorphic Expanse
2 [ZNR:384] Forest
5 [ZNR:279] Forest
3 [ZNR:278] Forest
2 [ZNR:275] Mountain
2 [ZNR:276] Mountain
2 [ZNR:268] Plains
2 [ZNR:380] Plains
2 [ZNR:267] Plains
1 [ZNR:266] Plains
SB: 1 [ZNC:2] Obuun, Mul Daya Ancestor

View file

@ -0,0 +1,79 @@
1 [ZNC:92] Lazav, Dimir Mastermind
1 [ZNC:4] Enigma Thief
1 [ZNC:35] Scourge of Fleets
1 [ZNC:44] Gonti, Lord of Luxury
1 [ZNC:49] Nighthowler
1 [ZNC:50] Ogre Slumlord
1 [ZNC:54] Sepulchral Primordial
1 [ZNC:89] Consuming Aberration
1 [ZNC:96] Notion Thief
1 [ZNC:98] Oona, Queen of the Fae
1 [ZNC:103] Sygg, River Cutthroat
1 [ZNC:26] Faerie Vandal
1 [ZNC:27] Invisible Stalker
1 [ZNC:28] Latchkey Faerie
1 [ZNC:29] Marang River Prowler
1 [ZNC:30] Master Thief
1 [ZNC:32] Nightveil Sprite
1 [ZNC:36] Slither Blade
1 [ZNC:38] Triton Shorestalker
1 [ZNC:39] Whirler Rogue
1 [ZNC:40] Changeling Outcast
1 [ZNC:43] Frogtosser Banneret
1 [ZNC:46] Marsh Flitter
1 [ZNC:51] Oona's Blackguard
1 [ZNC:55] Stinkdrinker Bandit
1 [ZNC:56] Syr Konrad, the Grim
1 [ZNC:57] Zulaport Cutthroat
1 [ZNR:70] Merfolk Windrobber
1 [ZNR:83] Sure-Footed Infiltrator
1 [ZNR:236] Soaring Thought-Thief
1 [ZNC:33] Notorious Throng
1 [ZNC:37] Stolen Identity
1 [ZNC:45] In Garruk's Wake
1 [ZNC:48] Necromantic Selection
1 [ZNC:24] Distant Melody
1 [ZNC:34] Open into Wonder
1 [ZNC:41] Endless Obedience
1 [ZNC:53] Rise from the Grave
1 [ZNC:90] Extract from Darkness
1 [ZNC:42] Fated Return
1 [ZNC:99] Silumgar's Command
1 [ZNC:101] Spinal Embrace
1 [ZNC:23] Aetherize
1 [ZNC:25] Fact or Fiction
1 [ZNC:47] Murder
1 [ZNC:52] Price of Fame
1 [ZNC:100] Soul Manipulation
1 [ZNC:5] Whispersteel Dagger
1 [ZNC:107] Blackblade Reforged
1 [ZNC:108] Bonehoard
1 [ZNC:115] Obelisk of Urd
1 [ZNC:118] Scytheclaw
1 [ZNC:106] Arcane Signet
1 [ZNC:109] Commander's Sphere
1 [ZNC:126] Dimir Aqueduct
1 [ZNC:127] Dimir Guildgate
1 [ZNC:110] Dimir Keyrune
1 [ZNC:111] Dimir Locket
1 [ZNC:112] Dimir Signet
1 [ZNC:113] Heirloom Blade
1 [ZNC:114] Mind Stone
1 [ZNC:120] Sol Ring
1 [ZNC:31] Military Intelligence
1 [ZNC:124] Command Tower
1 [ZNC:128] Dismal Backwater
1 [ZNC:133] Jwar Isle Refuge
1 [ZNC:135] Myriad Landscape
1 [ZNC:138] Rogue's Passage
1 [ZNC:141] Submerged Boneyard
4 [ZNR:269] Island
4 [ZNR:270] Island
5 [ZNR:271] Island
2 [ZNR:381] Island
5 [ZNR:273] Swamp
3 [ZNR:382] Swamp
4 [ZNR:272] Swamp
3 [ZNR:274] Swamp
SB: 1 [ZNC:1] Anowon, the Ruin Thief

View file

@ -0,0 +1,170 @@
package mage.cards.k;
import mage.MageObject;
import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.LoyaltyAbility;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.ExileTargetEffect;
import mage.abilities.effects.common.GetEmblemEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.permanent.TokenPredicate;
import mage.game.Game;
import mage.game.command.emblems.KayaTheInexorableEmblem;
import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.SpiritWhiteToken;
import mage.players.Player;
import mage.target.common.TargetCreaturePermanent;
import mage.target.common.TargetNonlandPermanent;
import java.util.UUID;
/**
*
* @author weirddan455
*/
public final class KayaTheInexorable extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature");
static {
filter.add(Predicates.not(TokenPredicate.instance));
}
public KayaTheInexorable(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{W}{B}");
this.addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.KAYA);
this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5));
// +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."
LoyaltyAbility ability = new LoyaltyAbility(new AddCountersTargetEffect(CounterType.GHOSTFORM.createInstance()), 1);
ability.addEffect(new GainAbilityTargetEffect(new KayaTheInexorableTriggeredAbility(), Duration.WhileOnBattlefield,
"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.\""));
ability.addTarget(new TargetCreaturePermanent(0, 1, filter, false));
this.addAbility(ability);
// 3: Exile target nonland permanent.
ability = new LoyaltyAbility(new ExileTargetEffect(), -3);
ability.addTarget(new TargetNonlandPermanent());
this.addAbility(ability);
// 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."
this.addAbility(new LoyaltyAbility(new GetEmblemEffect(new KayaTheInexorableEmblem()), -7));
}
private KayaTheInexorable(final KayaTheInexorable card) {
super(card);
}
@Override
public KayaTheInexorable copy() {
return new KayaTheInexorable(this);
}
}
class KayaTheInexorableTriggeredAbility extends TriggeredAbilityImpl {
public KayaTheInexorableTriggeredAbility() {
super(Zone.ALL, null, false);
}
private KayaTheInexorableTriggeredAbility(KayaTheInexorableTriggeredAbility ability) {
super(ability);
}
@Override
public boolean checkEventType(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.ZONE_CHANGE) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
return zEvent.getFromZone() == Zone.BATTLEFIELD
&& (zEvent.getToZone() == Zone.GRAVEYARD
|| zEvent.getToZone() == Zone.EXILED);
}
return false;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
if (zEvent.getTargetId().equals(this.getSourceId())) {
this.getEffects().clear();
this.addEffect(new KayaTheInexorableEffect(new MageObjectReference(zEvent.getTarget(), game)));
this.addEffect(new CreateTokenEffect(new SpiritWhiteToken()));
return true;
}
return false;
}
@Override
public boolean isInUseableZone(Game game, MageObject source, GameEvent event) {
Permanent sourcePermanent = null;
if (game.getState().getZone(getSourceId()) == Zone.BATTLEFIELD) {
sourcePermanent = game.getPermanent(getSourceId());
} else {
if (game.getShortLivingLKI(getSourceId(), Zone.BATTLEFIELD)) {
sourcePermanent = (Permanent) game.getLastKnownInformation(getSourceId(), Zone.BATTLEFIELD);
}
}
if (sourcePermanent == null) {
return false;
}
return hasSourceObjectAbility(game, sourcePermanent, event);
}
@Override
public KayaTheInexorableTriggeredAbility copy() {
return new KayaTheInexorableTriggeredAbility(this);
}
@Override
public String getRule() {
return "When {this} dies or is put into exile, return it to its owner's hand and create a 1/1 white Spirit creature token with flying.";
}
}
class KayaTheInexorableEffect extends OneShotEffect {
private final MageObjectReference mor;
KayaTheInexorableEffect(MageObjectReference mor) {
super(Outcome.Benefit);
this.mor = mor;
}
private KayaTheInexorableEffect(KayaTheInexorableEffect effect) {
super(effect);
this.mor = effect.mor;
}
@Override
public KayaTheInexorableEffect copy() {
return new KayaTheInexorableEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
if (player == null) {
return false;
}
Card card = game.getCard(mor.getSourceId());
if (card == null || card.getZoneChangeCounter(game) - 1 != mor.getZoneChangeCounter()) {
return false;
}
return player.moveCards(card, Zone.HAND, source, game);
}
}

View file

@ -38,7 +38,7 @@ public final class WhisperBloodLiturgist extends CardImpl {
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToBattlefieldTargetEffect()
.setText("Return target creature card from your graveyard to the battlefield"),
new TapSourceCost());
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(2, 2, new FilterControlledCreaturePermanent("two creature"), true)));
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(2, 2, new FilterControlledCreaturePermanent("creatures"), true)));
ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
this.addAbility(ability);
}

View file

@ -47,6 +47,7 @@ public final class Commander2017Edition extends ExpansionSet {
cards.add(new SetCardInfo("Bloodforged Battle-Axe", 50, Rarity.RARE, mage.cards.b.BloodforgedBattleAxe.class));
cards.add(new SetCardInfo("Bloodhusk Ritualist", 101, Rarity.UNCOMMON, mage.cards.b.BloodhuskRitualist.class));
cards.add(new SetCardInfo("Bloodline Necromancer", 14, Rarity.UNCOMMON, mage.cards.b.BloodlineNecromancer.class));
cards.add(new SetCardInfo("Bloodlord of Vaasgoth", 102, Rarity.MYTHIC, mage.cards.b.BloodlordOfVaasgoth.class));
cards.add(new SetCardInfo("Bloodsworn Steward", 22, Rarity.RARE, mage.cards.b.BloodswornSteward.class));
cards.add(new SetCardInfo("Blossoming Sands", 237, Rarity.COMMON, mage.cards.b.BlossomingSands.class));
cards.add(new SetCardInfo("Body Double", 83, Rarity.RARE, mage.cards.b.BodyDouble.class));
@ -84,6 +85,7 @@ public final class Commander2017Edition extends ExpansionSet {
cards.add(new SetCardInfo("Curse of Verbosity", 9, Rarity.UNCOMMON, mage.cards.c.CurseOfVerbosity.class));
cards.add(new SetCardInfo("Curse of Vitality", 3, Rarity.UNCOMMON, mage.cards.c.CurseOfVitality.class));
cards.add(new SetCardInfo("Damnable Pact", 108, Rarity.RARE, mage.cards.d.DamnablePact.class));
cards.add(new SetCardInfo("Dark Impostor", 109, Rarity.RARE, mage.cards.d.DarkImpostor.class));
cards.add(new SetCardInfo("Darksteel Ingot", 207, Rarity.UNCOMMON, mage.cards.d.DarksteelIngot.class));
cards.add(new SetCardInfo("Deathbringer Regent", 110, Rarity.RARE, mage.cards.d.DeathbringerRegent.class));
cards.add(new SetCardInfo("Decree of Pain", 111, Rarity.RARE, mage.cards.d.DecreeOfPain.class));

View file

@ -44,6 +44,7 @@ public final class Kaldheim extends ExpansionSet {
cards.add(new SetCardInfo("Gladewalker Ritualist", 392, Rarity.UNCOMMON, mage.cards.g.GladewalkerRitualist.class));
cards.add(new SetCardInfo("Hengegate Pathway", 260, Rarity.RARE, mage.cards.h.HengegatePathway.class));
cards.add(new SetCardInfo("Pyre of Heroes", 241, Rarity.RARE, mage.cards.p.PyreOfHeroes.class));
cards.add(new SetCardInfo("Kaya the Inexorable", 218, Rarity.MYTHIC, mage.cards.k.KayaTheInexorable.class));
cards.add(new SetCardInfo("Rampage of the Valkyries", 393, Rarity.UNCOMMON, mage.cards.r.RampageOfTheValkyries.class));
cards.add(new SetCardInfo("Realmwalker", 188, Rarity.RARE, mage.cards.r.Realmwalker.class));
cards.add(new SetCardInfo("Renegade Reaper", 386, Rarity.UNCOMMON, mage.cards.r.RenegadeReaper.class));

View file

@ -436,7 +436,7 @@ public abstract class ExpansionSet implements Serializable {
addToBooster(booster, commons);
}
if (numSpecialCommons > 0) { // e.g. used to conditionaly replace common cards in the booster
if (numSpecialCommons > 0) { // e.g. used to conditionally replace common cards in the booster
addSpecialCommon(booster, numSpecialCommons);
}

View file

@ -64,6 +64,7 @@ public enum CounterType {
FUNGUS("fungus"),
FUSE("fuse"),
GEM("gem"),
GHOSTFORM("ghostform"),
GLOBE("globe"),
GLYPH("glyph"),
GOLD("gold"),

View file

@ -0,0 +1,104 @@
package mage.game.command.emblems;
import mage.ApprovingObject;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
import mage.choices.Choice;
import mage.choices.ChoiceImpl;
import mage.constants.*;
import mage.filter.common.FilterOwnedCard;
import mage.filter.predicate.Predicates;
import mage.game.Game;
import mage.game.command.Emblem;
import mage.players.Player;
import mage.target.TargetCard;
import mage.target.common.TargetCardInExile;
import mage.target.common.TargetCardInHand;
import mage.target.common.TargetCardInYourGraveyard;
import java.util.LinkedHashSet;
import java.util.Set;
/**
*
* @author weirddan455
*/
public class KayaTheInexorableEmblem extends Emblem {
// 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."
public KayaTheInexorableEmblem() {
this.setName("Emblem Kaya");
this.setExpansionSetCodeForImage("KHM");
this.getAbilities().add(new BeginningOfUpkeepTriggeredAbility(Zone.COMMAND, new KayaTheInexorableEmblemEffect(), TargetController.YOU, true, false));
}
}
class KayaTheInexorableEmblemEffect extends OneShotEffect {
private static final FilterOwnedCard filter = new FilterOwnedCard();
private static final Set<String> choices = new LinkedHashSet<>();
static {
filter.add(SuperType.LEGENDARY.getPredicate());
filter.add(Predicates.not(CardType.LAND.getPredicate()));
choices.add("Hand");
choices.add("Graveyard");
choices.add("Exile");
}
public KayaTheInexorableEmblemEffect() {
super(Outcome.PlayForFree);
this.staticText = "cast a legendary spell from your hand, from your graveyard, or from among cards you own in exile without paying its mana cost";
}
private KayaTheInexorableEmblemEffect(final KayaTheInexorableEmblemEffect effect) {
super(effect);
}
@Override
public KayaTheInexorableEmblemEffect copy() {
return new KayaTheInexorableEmblemEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
if (player != null) {
Choice zoneChoice = new ChoiceImpl(true);
zoneChoice.setMessage("Cast a legendary spell from hand, graveyard, or exile");
zoneChoice.setChoices(choices);
zoneChoice.clearChoice();
if (player.choose(Outcome.PlayForFree, zoneChoice, game)) {
TargetCard target = null;
switch (zoneChoice.getChoice()) {
case "Hand":
target = new TargetCardInHand(0, 1, filter);
target.setTargetName("legendary spell from your hand");
break;
case "Graveyard":
target = new TargetCardInYourGraveyard(0, 1, filter, true);
target.setTargetName("legendary spell from your graveyard");
break;
case "Exile":
target = new TargetCardInExile(0, 1, filter, null, true);
target.setNotTarget(true);
target.setTargetName("legendary spell you own in exile");
break;
}
if (target != null && player.chooseTarget(Outcome.PlayForFree, target, source, game)) {
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
game.getState().setValue("PlayFromNotOwnHandZone" + card.getId(), Boolean.TRUE);
boolean cardWasCast = player.cast(player.chooseAbilityForCast(card, game, true),
game, true, new ApprovingObject(source, game));
game.getState().setValue("PlayFromNotOwnHandZone" + card.getId(), null);
return cardWasCast;
}
}
}
}
return false;
}
}