Add project files: decks, scripts, and collection data
This commit is contained in:
14859
card_cache.json
Normal file
14859
card_cache.json
Normal file
File diff suppressed because it is too large
Load Diff
932
collection/Box1 2026-01-30.txt
Normal file
932
collection/Box1 2026-01-30.txt
Normal file
@@ -0,0 +1,932 @@
|
|||||||
|
1 Giant Koi (TLA) 53
|
||||||
|
1 Grappling Kraken (FDN) 39
|
||||||
|
3 Stratosoarer (ECL) 72
|
||||||
|
1 Doc Ock, Sinister Scientist (SPM) 29
|
||||||
|
1 Hraesvelgr of the First Brood (FIC) 37
|
||||||
|
1 Summon: Shiva (FIN) 78
|
||||||
|
2 Pestered Wellguard (ECL) 63
|
||||||
|
2 Wanderwine Distracter (ECL) 82
|
||||||
|
1 Alphinaud Leveilleur (FIC) 33
|
||||||
|
1 Kukemssa Serpent (MIR) 72
|
||||||
|
1 Surveillance Monitor (MKM) 73
|
||||||
|
1 Enduring Curiosity (DSK) 51
|
||||||
|
2 Kulrath Mystic (ECL) 56
|
||||||
|
1 Glamermite (ECL) 50
|
||||||
|
1 Nebelgast Herald (INR) 78
|
||||||
|
1 Quistis Trepe (FIN) 66
|
||||||
|
1 Erudite Wizard (FDN) 37
|
||||||
|
1 The Mechanist, Aerial Artisan (TLA) 64
|
||||||
|
1 Jill, Shiva's Dominant // Shiva, Warden of Ice (FIN) 58
|
||||||
|
1 Gogo, Master of Mimicry (FIN) 54
|
||||||
|
1 Fear of Isolation (DSK) 58
|
||||||
|
1 Il Mheg Pixie (FIN) 57
|
||||||
|
1 Agent of Kotis (TDM) 36
|
||||||
|
1 Hypnotic Sprite // Mesmeric Glare (FIC) 264
|
||||||
|
1 Tiger-Seal (TLA) 75
|
||||||
|
1 Kithkeeper (ECL) 23
|
||||||
|
1 Salt Road Packbeast (TDM) 23
|
||||||
|
1 Beatrix, Loyal General (FIN) 554
|
||||||
|
2 Sun-Dappled Celebrant (ECL) 37
|
||||||
|
1 Summon: Good King Mog XII (FIC) 26
|
||||||
|
1 Master Piandao (TLA) 28
|
||||||
|
1 Kalonian Twingrove (M15) 182
|
||||||
|
1 Thancred Waters (FIC) 31
|
||||||
|
1 Minwu, White Mage (FIN) 26
|
||||||
|
1 Friendly Ghost (DSK) 12
|
||||||
|
1 Daily Bugle Reporters (SPM) 6
|
||||||
|
1 Unsettling Twins (DSK) 38
|
||||||
|
1 Kyoshi Warriors (TLA) 26
|
||||||
|
1 Summon: Primal Garuda (FIN) 37
|
||||||
|
1 Rosa, Resolute White Mage (FIN) 555
|
||||||
|
1 Dragonback Lancer (TDM) 9
|
||||||
|
4 Weapons Vendor (FIN) 40
|
||||||
|
1 Gallant Fowlknight (ECL) 17
|
||||||
|
4 Shore Lurker (ECL) 34
|
||||||
|
1 Anafenza, Unyielding Lineage (TDM) 2
|
||||||
|
1 Tempest Hawk (TDM) 31
|
||||||
|
1 Summon: Choco/Mog (FIN) 35
|
||||||
|
1 Arachne, Psionic Weaver (SPM) 2
|
||||||
|
1 Dazzling Angel (FDN) 9
|
||||||
|
1 Flight-Deck Coordinator (EOE) 17
|
||||||
|
1 Earth Kingdom Jailer (TLA) 16
|
||||||
|
1 Aerith Gainsborough (FIN) 4
|
||||||
|
1 Alisaie Leveilleur (FIC) 9
|
||||||
|
1 Glider Kids (TLA) 21
|
||||||
|
3 Gaelicat (FIN) 22
|
||||||
|
2 Reluctant Dounguard (ECL) 31
|
||||||
|
2 Meanders Guide (ECL) 25
|
||||||
|
1 Tributary Vaulter (ECL) 40
|
||||||
|
1 Sunpearl Kirin (TDM) 29
|
||||||
|
1 Bearer of Glory (TDM) 4
|
||||||
|
1 Flash Thompson, Spider-Fan (SPM) 7
|
||||||
|
1 Tataru Taru (FIC) 30
|
||||||
|
1 Jeong Jeong's Deserters (TLA) 25
|
||||||
|
1 Hildibrand Manderville // Gentleman's Rise (FIC) 83
|
||||||
|
2 Ambrosia Whiteheart (FIN) 6
|
||||||
|
4 Coeurl (FIN) 12
|
||||||
|
2 Timid Shieldbearer (ECL) 39
|
||||||
|
1 Encumbered Reejerey (ECL) 14
|
||||||
|
1 Veteran Survivor (DSK) 40
|
||||||
|
1 Mardu Devotee (TDM) 16
|
||||||
|
1 Momo, Friendly Flier (TLA) 29
|
||||||
|
1 Curious Farm Animals (TLA) 14
|
||||||
|
2 Valkyrie Aerial Unit (FIN) 84
|
||||||
|
2 Ice Flan (FIN) 55
|
||||||
|
3 Rook Turret (FIN) 69
|
||||||
|
2 Venser, Shaper Savant (FCA) 6
|
||||||
|
2 Qiqirn Merchant (FIN) 65
|
||||||
|
8 Dragoon's Wyvern (FIN) 49
|
||||||
|
3 Sahagin (FIN) 71
|
||||||
|
3 Scorpion Sentinel (FIN) 72
|
||||||
|
2 G'raha Tia (FIN) 21
|
||||||
|
4 Cloudbound Moogle (FIN) 11
|
||||||
|
2 Delivery Moogle (FIN) 15
|
||||||
|
2 Compassionate Healer (TLA) 13
|
||||||
|
3 Adelbert Steiner (FIN) 3
|
||||||
|
6 Dwarven Castle Guard (FIN) 18
|
||||||
|
2 Magitek Infantry (FIN) 25
|
||||||
|
1 Zodiark, Umbral God (FIN) 128
|
||||||
|
1 Feral Deathgorger // Dusk Sight (TDM) 80
|
||||||
|
1 Basilica Stalker (MKM) 78
|
||||||
|
1 Spectral Snatcher (DSK) 116
|
||||||
|
1 Canyon Crawler (TLA) 90
|
||||||
|
1 Perigee Beckoner (EOE) 112
|
||||||
|
1 Venom, Evil Unleashed (SPM) 71
|
||||||
|
1 Stinging Scorpion (UND) 46
|
||||||
|
2 Blighted Blackthorn (ECL) 90
|
||||||
|
1 Syr Konrad, the Grim (FCA) 10
|
||||||
|
1 Zenos yae Galvus // Shinryu, Transcendent Rival (FIN) 127
|
||||||
|
1 Jecht, Reluctant Guardian // Braska's Final Aeon (FIN) 104
|
||||||
|
1 Dashing Bloodsucker (DSK) 90
|
||||||
|
1 Crypt Feaster (FDN) 59
|
||||||
|
1 Gravblade Heavy (EOE) 102
|
||||||
|
1 Buzzard-Wasp Colony (TLA) 88
|
||||||
|
1 Soul-Shackled Zombie (FDN) 70
|
||||||
|
3 Dawnhand Eulogist (ECL) 99
|
||||||
|
4 Dream Seizer (ECL) 101
|
||||||
|
1 Nightmare Sower (ECL) 114
|
||||||
|
1 Vincent Valentine // Galian Beast (FIN) 125
|
||||||
|
1 Shambling Cie'th (FIN) 117
|
||||||
|
1 Plaguecrafter (BLC) 187
|
||||||
|
1 Archghoul of Thraben (INR) 95
|
||||||
|
1 Fang, Fearless l'Cie (FIN) 99
|
||||||
|
1 Hog-Monkey (TLA) 104
|
||||||
|
1 Pirate Peddlers (TLA) 115
|
||||||
|
1 Moonglove Extractor (ECL) 109
|
||||||
|
1 Heirloom Auntie (ECL) 107
|
||||||
|
1 Gnarlbark Elm (ECL) 103
|
||||||
|
1 Retched Wretch (ECL) 117
|
||||||
|
1 June, Bounty Hunter (TLA) 106
|
||||||
|
1 Merchant of Many Hats (TLA) 110
|
||||||
|
1 Mai, Scornful Striker (TLA) 109
|
||||||
|
1 Corrupt Court Official (TLA) 92
|
||||||
|
1 Burglar Rat (FDN) 170
|
||||||
|
1 Reno and Rude (FIN) 113
|
||||||
|
1 Demon Wall (FIN) 97
|
||||||
|
1 Unburied Earthcarver (TDM) 95
|
||||||
|
1 Scarblade Scout (ECL) 118
|
||||||
|
3 Boggart Prankster (ECL) 93
|
||||||
|
3 Bile-Vial Boggart (ECL) 87
|
||||||
|
2 Summon: Primal Odin (FIN) 121
|
||||||
|
2 Malboro (FIN) 106
|
||||||
|
2 Beetle-Headed Merchants (TLA) 86
|
||||||
|
4 Namazu Trader (FIN) 107
|
||||||
|
2 Gaius van Baelsar (FIN) 102
|
||||||
|
2 Qutrub Forayer (FIN) 112
|
||||||
|
3 Ahriman (FIN) 87
|
||||||
|
3 Shinra Reinforcements (FIN) 118
|
||||||
|
2 Fire Nation Engineer (TLA) 99
|
||||||
|
2 Wolfbat (TLA) 122
|
||||||
|
3 Al Bhed Salvagers (FIN) 88
|
||||||
|
3 Undercity Dire Rat (FIN) 123
|
||||||
|
5 Hecteyes (FIN) 103
|
||||||
|
2 Kulrath Zealot (ECL) 148
|
||||||
|
1 Gilgamesh, Master-at-Arms (FIN) 139
|
||||||
|
1 Mongoose Lizard (TLA) 148
|
||||||
|
1 Boilerbilges Ripper (DSK) 127
|
||||||
|
1 Razorkin Hordecaller (DSK) 152
|
||||||
|
1 Sandworm (FIN) 155
|
||||||
|
1 Combustion Man (TLA) 127
|
||||||
|
1 Meticulous Artisan (TDM) 112
|
||||||
|
1 Sower of Chaos (FDN) 95
|
||||||
|
1 Wartime Protestors (TLA) 160
|
||||||
|
1 Gogo, Mysterious Mime (FIC) 56
|
||||||
|
1 Flamekin Gildweaver (ECL) 140
|
||||||
|
1 Tersa Lightshatter (TDM) 127
|
||||||
|
1 Vicious Clown (DSK) 163
|
||||||
|
1 Frontline War-Rager (EOE) 134
|
||||||
|
1 Spider-Gwen, Free Spirit (SPM) 90
|
||||||
|
1 Lightning, Security Sergeant (FIN) 560
|
||||||
|
1 Summon: G.F. Cerberus (FIN) 162
|
||||||
|
1 Boar-q-pine (TLA) 124
|
||||||
|
3 Brambleback Brute (ECL) 128
|
||||||
|
1 Brazen Scourge (FDN) 191
|
||||||
|
1 Deserter's Disciple (TLA) 131
|
||||||
|
1 Yuyan Archers (TLA) 161
|
||||||
|
1 Blood Petal Celebrant (INR) 144
|
||||||
|
1 Axgard Cavalry (FDN) 189
|
||||||
|
1 Shock Brigade (TDM) 120
|
||||||
|
1 Taxi Driver (SPM) 97
|
||||||
|
1 Firebrand Archer (FDN) 196
|
||||||
|
1 Explosive Prodigy (ECL) 136
|
||||||
|
2 Flame-Chain Mauler (ECL) 138
|
||||||
|
2 Hill Gigas (FIN) 141
|
||||||
|
2 Boldwyr Aggressor (ECL) 125
|
||||||
|
2 Barret Wallace (FIN) 129
|
||||||
|
2 Spider-Islanders (SPM) 91
|
||||||
|
2 Fire Nation Raider (TLA) 135
|
||||||
|
2 Mysidian Elder (FIN) 145
|
||||||
|
2 Superior Foes of Spider-Man (SPM) 96
|
||||||
|
2 Queen Brahne (FIN) 149
|
||||||
|
4 Summon: G.F. Ifrit (FIN) 163
|
||||||
|
3 Enraged Flamecaster (ECL) 135
|
||||||
|
2 Sabotender (FIN) 153
|
||||||
|
2 Tiger-Dillo (TLA) 155
|
||||||
|
7 Item Shopkeep (FIN) 142
|
||||||
|
3 Gristle Glutton (ECL) 144
|
||||||
|
3 Blazing Bomb (FIN) 130
|
||||||
|
2 Freya Crescent (FIN) 138
|
||||||
|
1 Wildwood Scourge (FDN) 236
|
||||||
|
1 Diamond Weapon (FIN) 183
|
||||||
|
1 Coliseum Behemoth (FIN) 181
|
||||||
|
1 Slavering Branchsnapper (DSK) 198
|
||||||
|
1 Spider-Rex, Daring Dino (SPM) 116
|
||||||
|
1 Apothecary Stomper (FDN) 99
|
||||||
|
1 Badgermole (TLA) 166
|
||||||
|
2 Safewright Cavalry (ECL) 191
|
||||||
|
1 The Boulder, Ready to Rumble (TLA) 168
|
||||||
|
1 Cackling Prowler (FDN) 101
|
||||||
|
1 Damage Control Crew (SPM) 99
|
||||||
|
1 Festerhide Boar (INR) 196
|
||||||
|
1 Rainveil Rejuvenator (TDM) 152
|
||||||
|
1 Trystan, Callous Cultivator // Trystan, Penitent Culler (ECL) 199
|
||||||
|
1 Vinebred Brawler (ECL) 201
|
||||||
|
1 Ostrich-Horse (TLA) 188
|
||||||
|
1 Supportive Parents (SPM) 119
|
||||||
|
1 Cryptid Inspector (DSK) 174
|
||||||
|
1 Tireless Tracker (EOC) 110
|
||||||
|
3 Lys Alana Informant (ECL) 181
|
||||||
|
1 Lys Alana Dignitary (ECL) 180
|
||||||
|
1 Town Greeter (FIN) 209
|
||||||
|
1 Sultai Devotee (TDM) 160
|
||||||
|
1 Rebellious Captives (TLA) 191
|
||||||
|
1 Hinterland Logger // Timber Shredder (INR) 203
|
||||||
|
1 House Cartographer (DSK) 185
|
||||||
|
1 Tunnel Tipster (MKM) 180
|
||||||
|
2 Virulent Emissary (ECL) 202
|
||||||
|
1 Spider-Ham, Peter Porker (PW25) 10
|
||||||
|
1 Cactuar (FIN) 177
|
||||||
|
1 Llanowar Elves (FDN) 227
|
||||||
|
3 Balamb T-Rexaur (FIN) 173
|
||||||
|
2 Summon: Fat Chocobo (FIN) 202
|
||||||
|
2 Vanille, Cheerful l'Cie (FIN) 211
|
||||||
|
6 Gigantoad (FIN) 187
|
||||||
|
3 Crossroads Watcher (ECL) 173
|
||||||
|
2 Walltop Sentries (TLA) 202
|
||||||
|
3 Loporrit Scout (FIN) 192
|
||||||
|
3 Summon: Fenrir (FIN) 203
|
||||||
|
2 Great Forest Druid (ECL) 178
|
||||||
|
2 Goobbue Gardener (FIN) 188
|
||||||
|
2 Kraven's Cats (SPM) 104
|
||||||
|
2 Turtle-Duck (TLA) 200
|
||||||
|
2 Gran Pulse Ochu (FIN) 189
|
||||||
|
1 Reputable Merchant (TDM) 217
|
||||||
|
1 Monastery Messenger (TDM) 208
|
||||||
|
1 G'raha Tia, Scion Reborn (FIC) 3
|
||||||
|
1 Rhino, Barreling Brute (SPM) 140
|
||||||
|
1 Vibrance (ECL) 249
|
||||||
|
1 Huntmaster of the Fells // Ravager of the Fells (INR) 241
|
||||||
|
1 Uncle Iroh (TLA) 248
|
||||||
|
1 Rydia, Summoner of Mist (FIN) 239
|
||||||
|
2 Stoic Grove-Guide (ECL) 243
|
||||||
|
1 Dai Li Agents (TLA) 214
|
||||||
|
1 Jenova, Ancient Calamity (FIN) 228
|
||||||
|
1 Stalwart Successor (TDM) 227
|
||||||
|
1 Lluwen, Imperfect Naturalist (ECL) 232
|
||||||
|
1 Shadow Urchin (ECL) 242
|
||||||
|
2 Chaos Spewer (ECL) 210
|
||||||
|
1 Black Waltz No. 3 (FIN) 214
|
||||||
|
1 Vial Smasher the Fierce (FCA) 59
|
||||||
|
1 Zuko, Conflicted (TLA) 253
|
||||||
|
1 Omega, Heartless Evolution (FIN) 236
|
||||||
|
1 Guru Pathik (TLA) 223
|
||||||
|
1 Clement, the Worrywort (BLB) 329
|
||||||
|
1 Hermitic Herbalist (TLA) 226
|
||||||
|
1 Platypus-Bear (TLA) 236
|
||||||
|
1 Twinflame Travelers (ECL) 345
|
||||||
|
1 Twinflame Travelers (ECL) 248
|
||||||
|
1 Sanar, Innovative First-Year (ECL) 241
|
||||||
|
2 Shantotto, Tactician Magician (FIN) 241
|
||||||
|
2 Flaring Cinder (ECL) 225
|
||||||
|
1 Ashling, Rekindled // Ashling, Rimebound (ECL) 124
|
||||||
|
2 The Emperor of Palamecia // The Lord Master of Hell (FIN) 219
|
||||||
|
1 Balmor, Battlemage Captain (FDN) 237
|
||||||
|
1 Azula, Cunning Usurper (TLA) 208
|
||||||
|
1 Ultimecia, Time Sorceress // Ultimecia, Omnipotent (FIN) 247
|
||||||
|
1 Messenger Hawk (TLA) 234
|
||||||
|
1 Emet-Selch, Unsundered // Hades, Sorcerer of Eld (FIN) 218
|
||||||
|
1 Locke Cole (FIN) 234
|
||||||
|
1 Suki, Kyoshi Warrior (TLA) 243
|
||||||
|
1 Good-Fortune Unicorn (FDN) 240
|
||||||
|
1 Serah Farron // Crystallized Serah (FIN) 240
|
||||||
|
1 Wary Farmer (ECL) 251
|
||||||
|
1 Garnet, Princess of Alexandria (FIN) 222
|
||||||
|
1 Catharsis (ECL) 209
|
||||||
|
1 Cloud, Planet's Champion (FIN) 552 *F*
|
||||||
|
1 Sami, Ship's Engineer (EOE) 225
|
||||||
|
2 Feisty Spikeling (ECL) 223
|
||||||
|
1 Eirdu, Carrier of Dawn // Isilu, Carrier of Twilight (ECL) 13
|
||||||
|
1 Estinien Varlineau (FIC) 82
|
||||||
|
1 Prideful Feastling (ECL) 238
|
||||||
|
1 Ardbert, Warrior of Darkness (FIC) 77
|
||||||
|
1 Merrow Skyswimmer (ECL) 234
|
||||||
|
1 Wraith, Vicious Vigilante (SPM) 160
|
||||||
|
1 Lyse Hext (FIC) 88
|
||||||
|
1 Tidus, Blitzball Star (FIN) 246
|
||||||
|
1 Deepchannel Duelist (ECL) 213
|
||||||
|
1 Urianger Augurelt (FIC) 96
|
||||||
|
2 Gladiolus Amicitia (FIN) 224
|
||||||
|
2 Balthier and Fran (FIN) 213
|
||||||
|
3 Cloud of Darkness (FIN) 217
|
||||||
|
2 Exdeath, Void Warlock // Neo Exdeath, Dimension's End (FIN) 220
|
||||||
|
2 Boggart Cursecrafter (ECL) 331
|
||||||
|
2 Garland, Knight of Cornelia // Chaos, the Endless (FIN) 221
|
||||||
|
2 Ignis Scientia (FIN) 227
|
||||||
|
2 Mischievous Sneakling (ECL) 235
|
||||||
|
2 Voracious Tome-Skimmer (ECL) 250
|
||||||
|
2 Rinoa Heartilly (FIN) 237
|
||||||
|
2 Giott, King of the Dwarves (FIN) 223
|
||||||
|
2 Private Eye (MKM) 223
|
||||||
|
1 Red Herring (MKM) 142
|
||||||
|
1 Abundant Maw (INR) 1
|
||||||
|
1 Relentless X-ATM092 (FIN) 268
|
||||||
|
2 Rooftop Percher (ECL) 2
|
||||||
|
1 Palladium Myr (CMM) 967
|
||||||
|
2 Changeling Wayfinder (ECL) 1
|
||||||
|
1 Spider-Bot (SPM) 173
|
||||||
|
1 Campus Guide (FDN) 251
|
||||||
|
2 Iron Giant (FIN) 260
|
||||||
|
7 Magic Pot (FIN) 263
|
||||||
|
2 Mechanical Mobster (SPM) 168
|
||||||
|
2 Embermouth Sentinel (TDM) 242
|
||||||
|
2 Chocobo Racetrack (FIN) 179
|
||||||
|
1 The Fire Crystal (FIN) 135
|
||||||
|
1 Chaos Shrine's Black Crystal (FIC) 445
|
||||||
|
1 Cryogen Relic (EOE) 52
|
||||||
|
1 Phoenix Down (FIN) 29
|
||||||
|
1 Coveted Jewel (FIC) 341
|
||||||
|
2 Firdoch Core (ECL) 255
|
||||||
|
1 Puca's Eye (ECL) 259
|
||||||
|
1 Talisman of Dominance (FIC) 364
|
||||||
|
1 Ravenous Amulet (FDN) 131
|
||||||
|
1 Tome of Legends (FIC) 369
|
||||||
|
3 Sol Ring (M3C) 305
|
||||||
|
2 Everflowing Chalice (FIC) 343
|
||||||
|
9 White Auracite (FIN) 41
|
||||||
|
3 Blitzball (FIN) 254
|
||||||
|
4 Instant Ramen (FIN) 259
|
||||||
|
3 World Map (FIN) 270
|
||||||
|
3 Lunatic Pandora (FIN) 262
|
||||||
|
1 Genji Glove (FIN) 258
|
||||||
|
2 Black Mage's Rod (FIN) 90
|
||||||
|
2 Barbed Bloodletter (ECL) 86
|
||||||
|
2 Blue Mage's Cane (FIC) 35
|
||||||
|
1 Dragoon's Lance (FIN) 17
|
||||||
|
1 Ultima Weapon (FIN) 563
|
||||||
|
1 Leyline Axe (FDN) 129
|
||||||
|
1 Butcher's Cleaver (INR) 256
|
||||||
|
2 Whispersilk Cloak (10E) 345
|
||||||
|
1 Monk's Fist (FIN) 265
|
||||||
|
1 Cobbled Wings (INR) 258
|
||||||
|
1 Kyoshi Battle Fan (TLA) 257
|
||||||
|
2 Swiftfoot Boots (TDC) 328
|
||||||
|
1 Spider-Suit (SPM) 176
|
||||||
|
1 Thinking Cap (MKM) 257
|
||||||
|
1 Excalibur II (FIN) 352
|
||||||
|
1 Phantom Train (FIN) 110
|
||||||
|
1 Invasion Submersible (TLA) 57
|
||||||
|
1 Cargo Ship (FIN) 47
|
||||||
|
1 Smuggler's Copter (FCA) 62
|
||||||
|
1 Subway Train (SPM) 178
|
||||||
|
3 Bard's Bow (FIN) 174
|
||||||
|
5 Warrior's Sword (FIN) 169
|
||||||
|
5 Samurai's Katana (FIN) 154
|
||||||
|
4 Red Mage's Rapier (FIN) 152
|
||||||
|
3 Coral Sword (FIN) 134
|
||||||
|
4 Dark Knight's Greatsword (FIN) 95
|
||||||
|
4 Sage's Nouliths (FIN) 70
|
||||||
|
3 Astrologian's Planisphere (FIN) 46
|
||||||
|
3 Paladin's Arms (FIN) 28
|
||||||
|
4 White Mage's Staff (FIN) 42
|
||||||
|
2 Crystal Fragments // Summon: Alexander (FIN) 13
|
||||||
|
2 The Masamune (FIN) 264
|
||||||
|
4 Stalactite Dagger (ECL) 261
|
||||||
|
2 The Prima Vista (FIN) 64
|
||||||
|
3 Magitek Armor (FIN) 24
|
||||||
|
1 Disturbing Mirth (DSK) 212
|
||||||
|
1 Eusocial Engineering (EOE) 181
|
||||||
|
1 Wall Crawl (SPM) 121
|
||||||
|
5 Gilt-Leaf's Embrace (ECL) 177
|
||||||
|
1 Campsite Cuisine (FIC) 464
|
||||||
|
1 Triple Triad (FIN) 340
|
||||||
|
1 Breaching Dragonstorm (TDM) 101
|
||||||
|
1 Connecting the Dots (MKM) 118
|
||||||
|
1 Meathook Massacre II (DSK) 108
|
||||||
|
1 Boggart Mischief (ECL) 92
|
||||||
|
1 Cracked Skull (DSK) 88
|
||||||
|
1 Bastion of Remembrance (FIC) 274
|
||||||
|
1 Eye of Nidhogg (FIC) 44
|
||||||
|
2 Mornsong Aria (ECL) 111
|
||||||
|
1 Corroding Dragonstorm (TDM) 75
|
||||||
|
1 Northern Air Temple (TLA) 111
|
||||||
|
1 Sidequest: Card Collection // Magicked Card (FIN) 73
|
||||||
|
1 Meat Locker // Drowned Diner (DSK) 65
|
||||||
|
1 Spider-Man No More (SPM) 45
|
||||||
|
1 Security Bypass (SNC) 59
|
||||||
|
1 Roiling Dragonstorm (TDM) 296
|
||||||
|
3 Blossombind (ECL) 45
|
||||||
|
1 Noggle the Mind (ECL) 60
|
||||||
|
1 Aquitect's Defenses (ECL) 44
|
||||||
|
1 Watery Grasp (TLA) 82
|
||||||
|
1 Sleep Magic (FIN) 74
|
||||||
|
1 Witness Protection (FDN) 168
|
||||||
|
1 Ringing Strike Mastery (TDM) 53
|
||||||
|
1 Kinbinding (ECL) 407 *F*
|
||||||
|
1 Southern Air Temple (TLA) 36
|
||||||
|
2 Clachan Festival (ECL) 10
|
||||||
|
4 Spiral into Solitude (ECL) 36
|
||||||
|
1 Evershrike's Gift (ECL) 15
|
||||||
|
2 Kraven's Last Hunt (SPM) 105
|
||||||
|
2 Prismatic Undercurrents (ECL) 189
|
||||||
|
3 Ride the Shoopuf (FIN) 197
|
||||||
|
2 Sidequest: Play Blitzball // World Champion, Celestial Weapon (FIN) 158
|
||||||
|
3 Liminal Hold (ECL) 24
|
||||||
|
2 Sidequest: Catch a Fish // Cooking Campsite (FIN) 31
|
||||||
|
2 Due Diligence (MKM) 14
|
||||||
|
1 Dragonclaw Strike (TDM) 180
|
||||||
|
1 Trystan's Command (ECL) 247
|
||||||
|
1 Grub's Command (ECL) 228
|
||||||
|
1 Pumpkin Bombardment (SPM) 139
|
||||||
|
1 Lie in Wait (TDM) 203
|
||||||
|
1 Brigid's Command (ECL) 208
|
||||||
|
1 Rydia's Return (FIN) 198
|
||||||
|
1 Bite Down on Crime (MKM) 154
|
||||||
|
1 Earthbending Lesson (TLA) 176
|
||||||
|
2 Reach the Horizon (FIN) 195
|
||||||
|
1 Tend the Sprigs (ECL) 197
|
||||||
|
1 Shattered Wings (EOE) 206
|
||||||
|
1 Scout the City (SPM) 113
|
||||||
|
2 Chocobo Kick (FIN) 178
|
||||||
|
1 Clash of the Eikons (FIN) 180
|
||||||
|
1 Clash of the Eikons (FIN) 341
|
||||||
|
1 Choco-Comet (FIN) 132
|
||||||
|
1 Terminal Velocity (EOE) 163
|
||||||
|
1 Unexpected Request (FIN) 167
|
||||||
|
1 Light Up the Stage (FCA) 39
|
||||||
|
1 Boulder Dash (ECL) 127
|
||||||
|
1 Jet's Brainwashing (TLA) 143
|
||||||
|
1 Killing Wave (INR) 121
|
||||||
|
1 Bloodline Bidding (ECL) 91
|
||||||
|
1 Evil Reawakened (FIN) 98
|
||||||
|
1 Crux of Fate (FIC) 275
|
||||||
|
2 Circle of Power (FIN) 92
|
||||||
|
1 The Final Days (FIN) 101
|
||||||
|
2 Risky Research (SPM) 62
|
||||||
|
1 Temporal Intervention (EOE) 120
|
||||||
|
1 Extract a Confession (MKM) 84
|
||||||
|
4 Bogslither's Embrace (ECL) 94
|
||||||
|
1 Reanimate (ARC) 21
|
||||||
|
1 Wanderwine Farewell (ECL) 83
|
||||||
|
1 Waterbending Lesson (TLA) 80
|
||||||
|
1 Lingering Souls (FIC) 245
|
||||||
|
1 Cut a Deal (FIC) 238
|
||||||
|
4 Gysahl Greens (FIN) 190
|
||||||
|
4 Commune with Beavers (FIN) 182
|
||||||
|
2 Random Encounter (FIN) 150
|
||||||
|
2 Call the Mountain Chocobo (FIN) 131
|
||||||
|
3 Suplex (FIN) 164
|
||||||
|
2 Impolite Entrance (ECL) 146
|
||||||
|
3 Cinder Strike (ECL) 131
|
||||||
|
3 Venom's Hunger (SPM) 73
|
||||||
|
2 Darkness Descends (ECL) 97
|
||||||
|
2 Poison the Waters (FIN) 111
|
||||||
|
2 Dai Li Indoctrination (TLA) 93
|
||||||
|
4 Resentful Revelation (FIN) 114
|
||||||
|
2 Retrieve the Esper (FIN) 68
|
||||||
|
2 Temporal Cleansing (ECL) 78
|
||||||
|
3 Relm's Sketching (FIN) 67
|
||||||
|
3 Combat Tutorial (FIN) 48
|
||||||
|
2 Boomerang Basics (TLA) 46
|
||||||
|
2 The Crystal's Chosen (FIN) 14
|
||||||
|
3 Aerith Rescue Mission (FIN) 5
|
||||||
|
2 From Father to Son (FIN) 20
|
||||||
|
2 Aang's Journey (TLA) 1
|
||||||
|
1 Auroral Procession (TDM) 169
|
||||||
|
1 Perennation (TDM) 212
|
||||||
|
1 Abandon Attachments (TLA) 205
|
||||||
|
2 Prishe's Wanderings (FIN) 193
|
||||||
|
1 Cycle of Renewal (TLA) 170
|
||||||
|
2 Unforgiving Aim (ECL) 200
|
||||||
|
1 Origin of Metalbending (TLA) 187
|
||||||
|
1 Rocky Rebuke (TLA) 193
|
||||||
|
1 Heritage Reclamation (TDM) 145
|
||||||
|
1 Close Encounter (EOE) 176
|
||||||
|
2 Midnight Tilling (ECL) 182
|
||||||
|
1 Giant Growth (FDN) 223
|
||||||
|
1 Caught Red-Handed (MKM) 115
|
||||||
|
1 Impossible Inferno (DSK) 140
|
||||||
|
1 Judgment Bolt (FIN) 559
|
||||||
|
1 Seize Opportunity (TDM) 119
|
||||||
|
2 Tweeze (ECL) 162
|
||||||
|
1 Laughing Mad (FIN) 143
|
||||||
|
1 Lightning Strike (TLA) 146
|
||||||
|
1 Firebending Lesson (TLA) 138
|
||||||
|
2 Fire Magic (FIN) 136
|
||||||
|
1 Murder (DSK) 110
|
||||||
|
1 Alesha's Legacy (TDM) 72
|
||||||
|
1 Fatal Fissure (TLA) 97
|
||||||
|
2 Vincent's Limit Break (FIN) 126
|
||||||
|
1 Fatal Push (FCA) 9
|
||||||
|
3 Scarblade's Malice (ECL) 119
|
||||||
|
1 Into the Story (FIC) 266
|
||||||
|
2 Sublime Epiphany (FIC) 271
|
||||||
|
2 Unexpected Assistance (ECL) 80
|
||||||
|
1 Uncharted Voyage (FDN) 53
|
||||||
|
1 Glimmerburst (DSK) 62
|
||||||
|
1 Scour for Scrap (EOE) 73
|
||||||
|
1 Swat Away (ECL) 75
|
||||||
|
1 Faebloom Trick (FDN) 38
|
||||||
|
1 Don't Make a Sound (DSK) 49
|
||||||
|
1 It'll Quench Ya! (TLA) 58
|
||||||
|
1 Dreams of Laguna (FIN) 50
|
||||||
|
1 Backslide (ONS) 70
|
||||||
|
1 Accumulate Wisdom (TLA) 44
|
||||||
|
1 Whoosh! (SPM) 48
|
||||||
|
3 Run Away Together (ECL) 67
|
||||||
|
4 Wild Unraveling (ECL) 84
|
||||||
|
1 Get Out (DSK) 60
|
||||||
|
1 Long River's Pull (BLB) 58
|
||||||
|
1 Stolen Uniform (FIN) 75
|
||||||
|
1 Claws Out (FDN) 6
|
||||||
|
1 Moogles' Valor (FIN) 27
|
||||||
|
1 Rally the Monastery (TDM) 19
|
||||||
|
1 Protective Response (ECL) 29
|
||||||
|
1 Razor Rings (TLA) 33
|
||||||
|
1 Keep Out (ECL) 19
|
||||||
|
2 Riverguard's Reflexes (ECL) 33
|
||||||
|
1 Yip Yip! (TLA) 43
|
||||||
|
1 Enter the Avatar State (TLA) 18
|
||||||
|
1 Unwanted Remake (DSK) 39
|
||||||
|
1 Strength of Arms (INR) 42
|
||||||
|
1 Zuko's Exile (TLA) 3
|
||||||
|
3 Airship Crash (FIN) 171
|
||||||
|
2 Allies at Last (TLA) 164
|
||||||
|
2 Sarkhan's Resolve (TDM) 158
|
||||||
|
3 Blitzball Shot (FIN) 176
|
||||||
|
2 Light of Judgment (FIN) 144
|
||||||
|
2 Haste Magic (FIN) 140
|
||||||
|
2 Cunning Maneuver (TLA) 130
|
||||||
|
4 Thunder Magic (FIN) 165
|
||||||
|
2 Sephiroth's Intervention (FIN) 116
|
||||||
|
3 Fight On! (FIN) 100
|
||||||
|
3 Vayne's Treachery (FIN) 124
|
||||||
|
3 Syncopate (FIN) 80
|
||||||
|
2 Lost Days (TLA) 62
|
||||||
|
2 Eject (FIN) 52
|
||||||
|
3 Ice Magic (FIN) 56
|
||||||
|
2 Octopus Form (TLA) 66
|
||||||
|
3 Magic Damper (FIN) 61
|
||||||
|
6 Fate of the Sun-Cryst (FIN) 19
|
||||||
|
2 Auron's Inspiration (FIN) 8
|
||||||
|
2 Battle Menu (FIN) 9
|
||||||
|
6 Slash of Light (FIN) 32
|
||||||
|
3 You're Not Alone (FIN) 44
|
||||||
|
1 Emeria Angel (TDC) 114
|
||||||
|
1 Summon: Choco/Mog (FIN) 358
|
||||||
|
1 Arcane Denial (CMA) 30
|
||||||
|
1 Emeria Shepherd (ZNC) 16
|
||||||
|
1 Abandoned Air Temple (TLA) 263
|
||||||
|
2 Prairie Stream (FIC) 413
|
||||||
|
1 Tangled Islet (FIC) 434
|
||||||
|
3 Reliquary Tower (TDC) 386
|
||||||
|
1 Farseek (FCA) 45
|
||||||
|
1 Gilded Goose (BLC) 221
|
||||||
|
1 Restoration Magic (FIN) 30
|
||||||
|
1 Radiant Grove (FIC) 414
|
||||||
|
1 Tranquil Landscape (MH3) 231
|
||||||
|
1 Suburban Sanctuary (SPM) 185
|
||||||
|
1 Hinterland Harbor (FIC) 403
|
||||||
|
1 Jackdaw Savior (BLB) 18
|
||||||
|
1 Negate (BBD) 123
|
||||||
|
1 Sazh's Chocobo (FIN) 200
|
||||||
|
1 Balamb Garden, SeeD Academy // Balamb Garden, Airborne (FIN) 272
|
||||||
|
2 Birds of Paradise (FIC) 483 *F*
|
||||||
|
2 Beastmaster Ascension (BLC) 118
|
||||||
|
1 River Hoopoe (2X2) 269
|
||||||
|
2 Swords to Plowshares (FIC) 256
|
||||||
|
1 Austere Command (M3C) 167
|
||||||
|
1 Bartz and Boko (FIN) 175
|
||||||
|
1 The Goose Mother (WOE) 204
|
||||||
|
1 Beast Within (TDC) 249
|
||||||
|
1 Flurry of Wings (ARB) 127
|
||||||
|
1 Glacial Fortress (BLC) 307
|
||||||
|
1 An Offer You Can't Refuse (FIC) 267
|
||||||
|
1 Cultivate (PW23) 6 *F*
|
||||||
|
1 Patchwork Banner (BLB) 247
|
||||||
|
1 Kastral, the Windcrested (BLB) 221
|
||||||
|
1 Restless Anchorage (LCI) 347
|
||||||
|
2 Plains (FIN) 295
|
||||||
|
1 Watcher of the Spheres (M21) 227
|
||||||
|
1 Murmuration (BLC) 10
|
||||||
|
1 Talisman of Progress (FIC) 367
|
||||||
|
1 Windurst, Federation Center (FIN) 292
|
||||||
|
1 Meditation Pools (TLA) 272
|
||||||
|
1 Demolition Field (FDN) 687
|
||||||
|
1 Adarkar Wastes (EOC) 147
|
||||||
|
1 Empyrean Eagle (FDN) 239
|
||||||
|
1 Forest (FIN) 307
|
||||||
|
1 Seaside Citadel (FIC) 420
|
||||||
|
1 Warden of Evos Isle (CMR) 106
|
||||||
|
2 Exotic Orchard (BLC) 131
|
||||||
|
1 Felidar Retreat (ZNR) 292
|
||||||
|
1 Ascend from Avernus (CLB) 5
|
||||||
|
1 Path to Exile (BLC) 147
|
||||||
|
1 Curiosity Crafter (BLC) 165
|
||||||
|
1 Sazh Katzroy (FIN) 199
|
||||||
|
1 Traveling Chocobo (FIN) 568 *F*
|
||||||
|
2 Counterspell (DSC) 114
|
||||||
|
1 Jumbo Cactuar (FIN) 191
|
||||||
|
1 Lifecreed Duo (BLB) 20
|
||||||
|
2 Evolving Wilds (BLC) 302
|
||||||
|
2 Path of Ancestry (TDC) 382
|
||||||
|
1 Airborne Aid (ONS) 62
|
||||||
|
1 Sharlayan, Nation of Scholars (FIN) 288
|
||||||
|
1 Brushland (FIC) 377
|
||||||
|
1 Plumecreed Escort (BLB) 65
|
||||||
|
1 Summon: Fat Chocobo (FIN) 371
|
||||||
|
1 Rampant Growth (TDC) 265
|
||||||
|
1 Winged Portent (VOW) 89
|
||||||
|
1 Hermes, Overseer of Elpis (FIC) 36
|
||||||
|
1 Wingmate Roc (C19) 78
|
||||||
|
1 Sunpetal Grove (BLC) 335
|
||||||
|
1 Herald's Horn (M3C) 296
|
||||||
|
1 Kangee's Lieutenant (CMR) 26
|
||||||
|
1 Dusk // Dawn (DRC) 65
|
||||||
|
1 Nature's Lore (FIC) 311
|
||||||
|
1 Terramorphic Expanse (TDC) 408
|
||||||
|
1 Plains (FIN) 294
|
||||||
|
1 Yavimaya Coast (TDC) 413
|
||||||
|
1 Seaside Haven (ONS) 323
|
||||||
|
1 Forest (FIN) 306
|
||||||
|
1 Gwaihir the Windlord (LTR) 210
|
||||||
|
1 City Pigeon (SPM) 4
|
||||||
|
1 Command Tower (FIC) 484
|
||||||
|
1 Sevinne's Reclamation (MH3) 267
|
||||||
|
1 Kangee, Sky Warden (CMR) 283
|
||||||
|
3 Plains (FIC) 478 *F*
|
||||||
|
1 Sidequest: Raise a Chocobo // Black Chocobo (FIN) 201
|
||||||
|
1 Generous Gift (BLC) 106
|
||||||
|
4 Island (FIC) 479 *F*
|
||||||
|
1 Canopy Vista (FIC) 378
|
||||||
|
2 Forest (FIC) 482 *F*
|
||||||
|
1 Choco, Seeker of Paradise (FIN) 215
|
||||||
|
3 Plains (FIN) 296
|
||||||
|
2 Mountain (FIC) 481 *F*
|
||||||
|
1 Mana Geyser (TDC) 223
|
||||||
|
1 Big Score (TDC) 206
|
||||||
|
1 Ovika, Enigma Goliath (ONE) 322
|
||||||
|
1 Summons of Saruman (LTC) 70
|
||||||
|
1 Izzet Signet (TDC) 320
|
||||||
|
1 Seize the Storm (INR) 170
|
||||||
|
1 Fact or Fiction (CMM) 91
|
||||||
|
2 Ring of the Lucii (FIN) 269
|
||||||
|
1 Elixir of Immortality (C21) 243
|
||||||
|
1 Drown in Dreams (M3C) 181
|
||||||
|
1 Vivi Ornitier (FIN) 248
|
||||||
|
1 Ultros, Obnoxious Octopus (FIN) 83
|
||||||
|
1 Island (TLA) 293
|
||||||
|
1 Decaying Time Loop (WHO) 80
|
||||||
|
1 Tellah, Great Sage (FIN) 244
|
||||||
|
1 Traumatize (MAR) 15
|
||||||
|
1 Experimental Overload (M21) 218
|
||||||
|
1 Sulfur Falls (EOC) 184
|
||||||
|
1 Abundant Growth (INR) 184
|
||||||
|
1 Curator's Ward (DOM) 49
|
||||||
|
2 Curiosity (ISD) 49
|
||||||
|
1 Snort (FIC) 58
|
||||||
|
1 Aetherize (FDN) 151
|
||||||
|
1 Talrand, Sky Summoner (OTC) 116
|
||||||
|
1 Epic Experiment (OTC) 222
|
||||||
|
2 Ur-Golem's Eye (C14) 280
|
||||||
|
1 Careful Consideration (TSR) 56
|
||||||
|
1 Isengard Unleashed (LTC) 495
|
||||||
|
1 The Rollercrusher Ride (DSK) 155
|
||||||
|
1 Press the Enemy (LTR) 65
|
||||||
|
1 Thousand-Year Storm (FDN) 248
|
||||||
|
1 Fateful Showdown (KLD) 114
|
||||||
|
1 Increasing Confusion (DKA) 41
|
||||||
|
1 Snapcaster Mage (ISD) 78
|
||||||
|
1 Tezzeret's Gambit (M3C) 194
|
||||||
|
1 Command Tower (FIC) 382
|
||||||
|
1 Shivan Reef (EOC) 179
|
||||||
|
1 Zephid's Embrace (USG) 114
|
||||||
|
1 Arcane Signet (FIC) 335
|
||||||
|
1 Drake Umbra (ROE) 63
|
||||||
|
1 Channeled Force (IKO) 180
|
||||||
|
1 Bond of Insight (WAR) 43
|
||||||
|
1 Consider (TDC) 148
|
||||||
|
1 Baron, Airship Kingdom (FIN) 273
|
||||||
|
1 Mystic Confluence (LTC) 193
|
||||||
|
1 Frostboil Snarl (DRC) 158
|
||||||
|
1 Ether (FIN) 53
|
||||||
|
1 Spellheart Chimera (DDS) 25
|
||||||
|
1 Protective Bubble (LRW) 80
|
||||||
|
1 Path of the Pyromancer (MOC) 34
|
||||||
|
1 Blasphemous Act (TDC) 207
|
||||||
|
2 Firemind Vessel (2X2) 306
|
||||||
|
1 Pirate's Pillage (2X2) 120
|
||||||
|
1 Rise from the Tides (INR) 82
|
||||||
|
1 Full Throttle (DFT) 127
|
||||||
|
2 Rewind (M21) 63
|
||||||
|
1 Gandalf's Sanction (LTR) 208
|
||||||
|
2 Hedron Archive (BLC) 275
|
||||||
|
1 Peter Parker's Camera (SPM) 171
|
||||||
|
1 Pinnacle Monk // Mystic Peak (MH3) 246
|
||||||
|
1 Cut Your Losses (SNC) 38
|
||||||
|
2 Mountain (FIN) 304
|
||||||
|
6 Island (FIN) 297
|
||||||
|
4 Mountain (FIN) 305
|
||||||
|
6 Island (FIN) 298
|
||||||
|
4 Mountain (FIN) 303
|
||||||
|
5 Island (FIN) 299
|
||||||
|
1 Garruk, Cursed Huntsman (BLC) 99
|
||||||
|
1 Moldervine Reclamation (BLC) 255
|
||||||
|
1 Chitterspitter (BLC) 211
|
||||||
|
1 Viridescent Bog (EOC) 190
|
||||||
|
1 Gourmand's Talent (BLC) 31
|
||||||
|
1 Moonstone Eulogist (BLC) 19
|
||||||
|
1 Wolfwillow Haven (BLC) 246
|
||||||
|
1 Beledros Witherbloom (BLC) 247
|
||||||
|
1 Ravenous Squirrel (BLC) 258
|
||||||
|
1 Llanowar Wastes (EOC) 165
|
||||||
|
1 Arasta of the Endless Web (TDC) 244
|
||||||
|
1 Command Tower (BLC) 130
|
||||||
|
1 Worthy Cost (TDM) 99
|
||||||
|
1 Swarmyard Massacre (BLC) 20
|
||||||
|
1 Rootcast Apprenticeship (BLC) 32
|
||||||
|
1 Sword of the Squeak (BLC) 40
|
||||||
|
1 Necroblossom Snarl (DSC) 290
|
||||||
|
1 Chatterfang, Squirrel General (BLC) 209
|
||||||
|
1 Chatterstorm (BLC) 210
|
||||||
|
1 Gilded Goose (LTC) 246
|
||||||
|
1 Temple of Malady (TDC) 403
|
||||||
|
1 Golgari Rot Farm (TDC) 368
|
||||||
|
1 Casualties of War (BLC) 125
|
||||||
|
1 Woe Strider (TDC) 201
|
||||||
|
1 Bojuka Bog (EOC) 149
|
||||||
|
1 Haunted Mire (TDC) 369
|
||||||
|
1 Hazel's Brewmaster (BLC) 17
|
||||||
|
1 Deadly Dispute (TDC) 177
|
||||||
|
1 Ogre Slumlord (BLC) 186
|
||||||
|
1 Nested Shambler (BLC) 185
|
||||||
|
1 Oran-Rief, the Vastwood (BLC) 320
|
||||||
|
1 Terramorphic Expanse (BLC) 345
|
||||||
|
1 Prosperous Innkeeper (BLC) 121
|
||||||
|
1 Maelstrom Pulse (BLC) 126
|
||||||
|
1 Jungle Hollow (BLC) 313
|
||||||
|
1 Skullclamp (BLC) 283
|
||||||
|
1 Plumb the Forbidden (BLC) 188
|
||||||
|
1 Saw in Half (BLC) 113
|
||||||
|
1 End-Raze Forerunners (BLC) 214
|
||||||
|
1 Putrefy (BLC) 257
|
||||||
|
1 Squirrel Sovereign (BLC) 240
|
||||||
|
1 Toski, Bearer of Secrets (BLC) 244
|
||||||
|
1 Insatiable Frugivore (BLC) 18
|
||||||
|
1 Poison-Tip Archer (BLC) 256
|
||||||
|
1 Windgrace's Judgment (EOC) 129
|
||||||
|
1 Honored Dreyleader (BLB) 178
|
||||||
|
1 Cache Grab (BLB) 167
|
||||||
|
1 Tear Asunder (EOC) 109
|
||||||
|
1 Tranquil Thicket (DSC) 318
|
||||||
|
1 Skyfisher Spider (BLC) 261
|
||||||
|
1 Shamanic Revelation (BLC) 237
|
||||||
|
1 Zulaport Cutthroat (BLC) 190
|
||||||
|
1 Nadier's Nightblade (BLC) 184
|
||||||
|
1 Chittering Witch (TDC) 175
|
||||||
|
1 Haywire Mite (DSC) 247
|
||||||
|
1 Deep Forest Hermit (BLC) 213
|
||||||
|
1 Idol of Oblivion (TDC) 319
|
||||||
|
1 Tainted Wood (DSC) 305
|
||||||
|
1 Barren Moor (DSC) 262
|
||||||
|
1 Talisman of Resilience (DSC) 255
|
||||||
|
1 Binding the Old Gods (DSC) 213
|
||||||
|
1 Tireless Provisioner (BLC) 243
|
||||||
|
1 Midgar, City of Mako // Reactor Raid (FIN) 286
|
||||||
|
1 Golgari Signet (DSC) 246
|
||||||
|
1 Morbid Opportunist (TDC) 188
|
||||||
|
1 Swarmyard (BLC) 133
|
||||||
|
1 Twilight Mire (EOC) 189
|
||||||
|
1 Arcane Signet (BLC) 127
|
||||||
|
1 Squirrel Nest (BLC) 239
|
||||||
|
1 Maskwood Nexus (DRC) 132
|
||||||
|
1 The Odd Acorn Gang (BLC) 7 *F*
|
||||||
|
1 Woodland Cemetery (TDC) 412
|
||||||
|
1 Second Harvest (BLC) 123
|
||||||
|
1 Academy Manufactor (BLC) 264
|
||||||
|
1 Sol Ring (BLC) 129
|
||||||
|
1 Scurry of Squirrels (BLC) 33
|
||||||
|
1 Decree of Pain (DSC) 136
|
||||||
|
1 Bastion of Remembrance (TDC) 171
|
||||||
|
1 Grim Backwoods (DSC) 281
|
||||||
|
1 Hazel of the Rootbloom (BLC) 2
|
||||||
|
5 Forest (BLB) 377
|
||||||
|
4 Swamp (BLB) 374
|
||||||
|
4 Forest (BLB) 378
|
||||||
|
3 Swamp (BLB) 373
|
||||||
|
1 Exotic Orchard (FIC) 390
|
||||||
|
1 Ultima (FIN) 38
|
||||||
|
1 Darkwater Catacombs (FIC) 384
|
||||||
|
1 Void Rend (FIC) 331
|
||||||
|
1 Avatar's Wrath (TLA) 12
|
||||||
|
1 Arcane Sanctum (FIC) 373
|
||||||
|
1 Vindicate (FIC) 330
|
||||||
|
1 Overkill (FIN) 109
|
||||||
|
1 Drowned Catacomb (FIC) 388
|
||||||
|
1 Authority of the Consuls (FIC) 232
|
||||||
|
1 School Daze (SPM) 42
|
||||||
|
1 Cleansing Nova (FIC) 235
|
||||||
|
1 Multiversal Passage (SPM) 180
|
||||||
|
1 Choked Estuary (FIC) 379
|
||||||
|
1 Exsanguinate (FIC) 276
|
||||||
|
1 Cornered by Black Mages (FIN) 93
|
||||||
|
1 Frantic Search (TDC) 153
|
||||||
|
1 Evolving Wilds (FIC) 389
|
||||||
|
1 Lethal Scheme (FIC) 277
|
||||||
|
1 Withering Torment (DSK) 124
|
||||||
|
1 Rite of Replication (FIC) 270
|
||||||
|
1 Underground River (FIC) 439
|
||||||
|
1 Archaeomancer's Map (FIC) 230
|
||||||
|
2 Swamp (FIC) 480 *F*
|
||||||
|
1 Vanish from Sight (DSK) 82
|
||||||
|
1 Scavenger Grounds (FIC) 419
|
||||||
|
1 Fetid Heath (FIC) 391
|
||||||
|
1 Reaper's Scythe (FIC) 48
|
||||||
|
1 Brainstorm (FCA) 28
|
||||||
|
1 Urza's Saga (MH2) 259
|
||||||
|
1 Krile Baldesion (FIC) 86
|
||||||
|
1 Swamp (FIN) 301
|
||||||
|
1 Amazing Acrobatics (SPM) 25
|
||||||
|
1 Ash Barrens (FIC) 374
|
||||||
|
1 Riverwalk Technique (TDM) 54
|
||||||
|
1 Dig Through Time (FIC) 263
|
||||||
|
1 Vote Out (EOE) 126
|
||||||
|
1 Syphon Mind (FIC) 288
|
||||||
|
1 Banishing Light (FDN) 138
|
||||||
|
1 Command Beacon (TDC) 352
|
||||||
|
1 Murderous Rider // Swift End (FIC) 279
|
||||||
|
1 Emet-Selch of the Third Seat (FIC) 81
|
||||||
|
1 Sunlit Marsh (FIC) 431
|
||||||
|
1 Dancer's Chakrams (FIC) 17
|
||||||
|
1 Skycloud Expanse (FIC) 423
|
||||||
|
1 Sol Ring (FIC) 359
|
||||||
|
1 Stuck in Summoner's Sanctum (FIN) 76
|
||||||
|
1 Static Snare (TDM) 26
|
||||||
|
1 Fandaniel, Telophoroi Ascian (FIC) 46
|
||||||
|
1 Talisman of Hierarchy (FIC) 365
|
||||||
|
1 Archmage Emeritus (FIC) 261
|
||||||
|
1 Shineshadow Snarl (FIC) 422
|
||||||
|
1 Sunken Hollow (FIC) 429
|
||||||
|
1 Idyllic Beachfront (FIC) 404
|
||||||
|
1 Glacial Fortress (FIC) 400
|
||||||
|
1 Thought Vessel (FIC) 368
|
||||||
|
1 Papalymo Totolymo (FIC) 90
|
||||||
|
1 Path of Ancestry (FIC) 411
|
||||||
|
1 Final Judgment (FIC) 243
|
||||||
|
1 Torrential Gearhulk (FIC) 272
|
||||||
|
1 Propaganda (FIC) 268
|
||||||
|
1 Transpose (FIC) 52
|
||||||
|
1 Snuff Out (FIC) 285
|
||||||
|
1 Dovin's Veto (FCA) 51
|
||||||
|
1 Archmage of Runes (FDN) 30
|
||||||
|
1 Temple of the False God (FIC) 438
|
||||||
|
1 Sunken Ruins (FIC) 430
|
||||||
|
1 Observed Stasis (FIC) 40
|
||||||
|
1 Relic of Legends (FIC) 354
|
||||||
|
1 Contaminated Aquifer (FIC) 383
|
||||||
|
1 Port Town (FIC) 412
|
||||||
|
1 Demolition Field (FIC) 385
|
||||||
|
1 Champions from Beyond (FIC) 11
|
||||||
|
1 Baleful Strix (FIC) 318
|
||||||
|
1 Desolate Mire (FIC) 386
|
||||||
|
1 Isolated Chapel (FIC) 405
|
||||||
|
1 Y'shtola, Night's Blessed (FIC) 7
|
||||||
|
1 Barret, Avalanche Leader (FIC) 472 *F*
|
||||||
|
1 Cloud, Midgar Mercenary (FIN) 564 *F*
|
||||||
|
1 Wakka, Devoted Guardian (FIC) 477 *F*
|
||||||
|
1 Elspeth, Storm Slayer (TDM) 11
|
||||||
|
1 Forest (ECL) 273
|
||||||
|
2 Boneclub Berserker (ECL) 126
|
||||||
|
1 Flitterwing Nuisance (ECL) 48
|
||||||
|
1 Thoughtweft Lieutenant (ECL) 343
|
||||||
|
1 Rime Chill (ECL) 64
|
||||||
|
1 Flock Impostor (ECL) 16
|
||||||
|
1 Reckless Ransacking (ECL) 152
|
||||||
|
1 Requiting Hex (ECL) 116
|
||||||
|
1 Bristlebane Battler (ECL) 168
|
||||||
|
1 Sting-Slinger (ECL) 161
|
||||||
|
1 Surly Farrier (ECL) 196
|
||||||
|
1 Gravelgill Scoundrel (ECL) 53
|
||||||
|
2 Omni-Changeling (ECL) 62
|
||||||
|
1 Ashling's Command (ECL) 205
|
||||||
|
1 Hovel Hurler (ECL) 230
|
||||||
|
1 Perfect Intimidation (ECL) 115
|
||||||
|
1 Chomping Changeling (ECL) 172
|
||||||
|
1 Rhys, the Evermore (ECL) 32
|
||||||
|
1 Pitiless Fists (ECL) 187
|
||||||
|
1 Bark of Doran (ECL) 6
|
||||||
|
1 Lofty Dreams (ECL) 58
|
||||||
|
1 Taster of Wares (ECL) 121
|
||||||
|
1 Tanufel Rimespeaker (ECL) 77
|
||||||
|
1 Blossoming Defense (ECL) 167
|
||||||
|
1 Appeal to Eirdu (ECL) 5
|
||||||
|
2 Dawn-Blessed Pennant (ECL) 254
|
||||||
|
1 Deepway Navigator (ECL) 214
|
||||||
|
1 Iron-Shield Elf (ECL) 108
|
||||||
|
2 Evolving Wilds (ECL) 264
|
||||||
|
2 Giantfall (ECL) 141
|
||||||
|
2 Rimekin Recluse (ECL) 66
|
||||||
|
2 Foraging Wickermaw (ECL) 256
|
||||||
|
2 Lasting Tarfire (ECL) 149
|
||||||
|
2 Elder Auntie (ECL) 133
|
||||||
|
1 Blight Rot (ECL) 89
|
||||||
|
1 Goldmeadow Nomad (ECL) 18
|
||||||
|
1 Mudbutton Cursetosser (ECL) 112
|
||||||
|
1 Silvergill Mentor (ECL) 69
|
||||||
|
1 Noggle Robber (ECL) 237
|
||||||
|
1 Gangly Stompling (ECL) 226
|
||||||
|
1 Spider-Sense (SPM) 284 *F*
|
||||||
|
1 Abigale, Eloquent First-Year (ECL) 204
|
||||||
|
1 Swamp (ECL) 271
|
||||||
|
1 Pallimud (TMP) 195
|
||||||
|
1 Steam Vents (ECL) 267
|
||||||
|
1 Champions of the Shoal (ECL) 46
|
||||||
|
1 End-Blaze Epiphany (ECL) 134
|
||||||
|
1 Dundoolin Weaver (ECL) 175
|
||||||
|
1 Boggart Cursecrafter (ECL) 206
|
||||||
|
1 Mirrormind Crown (ECL) 258
|
||||||
|
1 Celestial Reunion (ECL) 170
|
||||||
|
1 Morcant's Loyalist (ECL) 236
|
||||||
|
2 Assert Perfection (ECL) 164
|
||||||
|
1 Gutsplitter Gang (ECL) 106
|
||||||
|
1 Dream Harvest (ECL) 216
|
||||||
|
1 Eclipsed Kithkin (ECL) 220
|
||||||
|
1 Sizzling Changeling (ECL) 155
|
||||||
|
1 Chitinous Graspling (ECL) 211
|
||||||
|
1 Wanderbrine Preacher (ECL) 41
|
||||||
|
1 Summit Sentinel (ECL) 73
|
||||||
|
1 Mistmeadow Council (ECL) 183
|
||||||
|
1 Burning Curiosity (ECL) 129
|
||||||
|
1 Goliath Daydreamer (ECL) 143
|
||||||
|
1 Morcant's Loyalist (ECL) 341
|
||||||
|
1 Puca's Eye (ECL) 259
|
||||||
|
1 Clachan Festival (ECL) 10
|
||||||
74
collection/LWC Display 2026-09-19.txt
Normal file
74
collection/LWC Display 2026-09-19.txt
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
1 Nameless Inversion (ECL) 113
|
||||||
|
1 Lavaleaper (ECL) 318
|
||||||
|
1 Burdened Stoneback (ECL) 8
|
||||||
|
1 Gathering Stone (ECL) 257
|
||||||
|
1 Deepchannel Duelist (ECL) 213
|
||||||
|
1 Gangly Stompling (ECL) 226
|
||||||
|
1 Merrow Skyswimmer (ECL) 234
|
||||||
|
1 Appeal to Eirdu (ECL) 5
|
||||||
|
1 Elder Auntie (ECL) 133
|
||||||
|
1 Sygg's Command (ECL) 244
|
||||||
|
1 Pitiless Fists (ECL) 187
|
||||||
|
1 Encumbered Reejerey (ECL) 14
|
||||||
|
1 Sear (ECL) 154
|
||||||
|
1 Feisty Spikeling (ECL) 223
|
||||||
|
1 Enraged Flamecaster (ECL) 135
|
||||||
|
1 Bile-Vial Boggart (ECL) 87
|
||||||
|
1 Blossombind (ECL) 45
|
||||||
|
1 Trystan, Callous Cultivator // Trystan, Penitent Culler (ECL) 199
|
||||||
|
1 Gutsplitter Gang (ECL) 106
|
||||||
|
1 Glamer Gifter (ECL) 49
|
||||||
|
1 Keep Out (ECL) 19
|
||||||
|
1 Barbed Bloodletter (ECL) 86
|
||||||
|
1 Sun-Dappled Celebrant (ECL) 37
|
||||||
|
1 Wanderwine Distracter (ECL) 82
|
||||||
|
1 Lluwen, Imperfect Naturalist (ECL) 232
|
||||||
|
1 Deceit (ECL) 212
|
||||||
|
1 Iron-Shield Elf (ECL) 108
|
||||||
|
1 Illusion Spinners (ECL) 55
|
||||||
|
1 Kindle the Inner Flame (ECL) 147
|
||||||
|
1 Mischievous Sneakling (ECL) 235
|
||||||
|
1 Stratosoarer (ECL) 72
|
||||||
|
1 Run Away Together (ECL) 67
|
||||||
|
1 Shore Lurker (ECL) 34
|
||||||
|
2 Reckless Ransacking (ECL) 152
|
||||||
|
1 Dawnhand Eulogist (ECL) 99
|
||||||
|
1 Evershrike's Gift (ECL) 15
|
||||||
|
1 Dawnhand Dissident (ECL) 311
|
||||||
|
1 Bark of Doran (ECL) 6
|
||||||
|
1 Gnarlbark Elm (ECL) 103
|
||||||
|
1 Luminollusk (ECL) 179
|
||||||
|
1 Flaring Cinder (ECL) 225
|
||||||
|
1 Dose of Dawnglow (ECL) 100
|
||||||
|
1 Ashling, Rekindled // Ashling, Rimebound (ECL) 124
|
||||||
|
1 Morcant's Eyes (ECL) 185
|
||||||
|
1 Wanderwine Farewell (ECL) 83
|
||||||
|
1 Pyrrhic Strike (ECL) 30
|
||||||
|
1 Chaos Spewer (ECL) 210
|
||||||
|
1 Blighted Blackthorn (ECL) 90
|
||||||
|
1 Great Forest Druid (ECL) 178
|
||||||
|
2 Thoughtweft Charge (ECL) 198
|
||||||
|
2 Unexpected Assistance (ECL) 80
|
||||||
|
2 Safewright Cavalry (ECL) 191
|
||||||
|
3 Bogslither's Embrace (ECL) 94
|
||||||
|
3 Riverguard's Reflexes (ECL) 33
|
||||||
|
2 Unbury (ECL) 123
|
||||||
|
3 Midnight Tilling (ECL) 182
|
||||||
|
2 Flamekin Gildweaver (ECL) 140
|
||||||
|
2 Stalactite Dagger (ECL) 261
|
||||||
|
2 Cinder Strike (ECL) 131
|
||||||
|
2 Lys Alana Informant (ECL) 181
|
||||||
|
2 Reluctant Dounguard (ECL) 31
|
||||||
|
2 Temporal Cleansing (ECL) 78
|
||||||
|
1 Loch Mare (ECL) 57
|
||||||
|
1 Sygg, Wanderwine Wisdom // Sygg, Wanderbrine Shield (ECL) 76
|
||||||
|
1 Moonglove Extractor (ECL) 109
|
||||||
|
1 Wildvine Pummeler (ECL) 203
|
||||||
|
1 Aquitect's Defenses (ECL) 44
|
||||||
|
1 Gallant Fowlknight (ECL) 17
|
||||||
|
1 Wary Farmer (ECL) 251
|
||||||
|
1 Chitinous Graspling (ECL) 211
|
||||||
|
1 Reaping Willow (ECL) 240
|
||||||
|
1 Moon-Vigil Adherents (ECL) 184
|
||||||
|
1 Dawn-Blessed Pennant (ECL) 254
|
||||||
|
1 Unwelcome Sprite (ECL) 81
|
||||||
1325
collection_hydrated/artifacts.json
Normal file
1325
collection_hydrated/artifacts.json
Normal file
File diff suppressed because it is too large
Load Diff
20
collection_hydrated/commander.json
Normal file
20
collection_hydrated/commander.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"scryfall_uri": "https://scryfall.com/card/spm/29/doc-ock-sinister-scientist?utm_source=api",
|
||||||
|
"name": "Doc Ock, Sinister Scientist",
|
||||||
|
"mana_cost": "{4}{U}",
|
||||||
|
"cmc": 5.0,
|
||||||
|
"colors": [
|
||||||
|
"U"
|
||||||
|
],
|
||||||
|
"color_identity": [
|
||||||
|
"U"
|
||||||
|
],
|
||||||
|
"type_line": "Legendary Creature \u2014 Human Scientist Villain",
|
||||||
|
"oracle_text": "As long as there are eight or more cards in your graveyard, Doc Ock has base power and toughness 8/8.\nAs long as you control another Villain, Doc Ock has hexproof. (He can't be the target of spells or abilities your opponents control.)",
|
||||||
|
"power": "4",
|
||||||
|
"toughness": "5",
|
||||||
|
"loyalty": null,
|
||||||
|
"count": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
7131
collection_hydrated/creatures.json
Normal file
7131
collection_hydrated/creatures.json
Normal file
File diff suppressed because it is too large
Load Diff
15380
collection_hydrated/deck.json
Normal file
15380
collection_hydrated/deck.json
Normal file
File diff suppressed because it is too large
Load Diff
1138
collection_hydrated/enchantments.json
Normal file
1138
collection_hydrated/enchantments.json
Normal file
File diff suppressed because it is too large
Load Diff
2252
collection_hydrated/instants.json
Normal file
2252
collection_hydrated/instants.json
Normal file
File diff suppressed because it is too large
Load Diff
1567
collection_hydrated/lands.json
Normal file
1567
collection_hydrated/lands.json
Normal file
File diff suppressed because it is too large
Load Diff
40
collection_hydrated/planeswalkers.json
Normal file
40
collection_hydrated/planeswalkers.json
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"scryfall_uri": "https://scryfall.com/card/eld/191/garruk-cursed-huntsman?utm_source=api",
|
||||||
|
"name": "Garruk, Cursed Huntsman",
|
||||||
|
"mana_cost": "{4}{B}{G}",
|
||||||
|
"cmc": 6.0,
|
||||||
|
"colors": [
|
||||||
|
"B",
|
||||||
|
"G"
|
||||||
|
],
|
||||||
|
"color_identity": [
|
||||||
|
"B",
|
||||||
|
"G"
|
||||||
|
],
|
||||||
|
"type_line": "Legendary Planeswalker \u2014 Garruk",
|
||||||
|
"oracle_text": "0: Create two 2/2 black and green Wolf creature tokens with \"When this token dies, put a loyalty counter on each Garruk you control.\"\n\u22123: Destroy target creature. Draw a card.\n\u22126: You get an emblem with \"Creatures you control get +3/+3 and have trample.\"",
|
||||||
|
"power": null,
|
||||||
|
"toughness": null,
|
||||||
|
"loyalty": "5",
|
||||||
|
"count": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"scryfall_uri": "https://scryfall.com/card/tdm/11/elspeth-storm-slayer?utm_source=api",
|
||||||
|
"name": "Elspeth, Storm Slayer",
|
||||||
|
"mana_cost": "{3}{W}{W}",
|
||||||
|
"cmc": 5.0,
|
||||||
|
"colors": [
|
||||||
|
"W"
|
||||||
|
],
|
||||||
|
"color_identity": [
|
||||||
|
"W"
|
||||||
|
],
|
||||||
|
"type_line": "Legendary Planeswalker \u2014 Elspeth",
|
||||||
|
"oracle_text": "If one or more tokens would be created under your control, twice that many of those tokens are created instead.\n+1: Create a 1/1 white Soldier creature token.\n0: Put a +1/+1 counter on each creature you control. Those creatures gain flying until your next turn.\n\u22123: Destroy target creature an opponent controls with mana value 3 or greater.",
|
||||||
|
"power": null,
|
||||||
|
"toughness": null,
|
||||||
|
"loyalty": "5",
|
||||||
|
"count": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
1921
collection_hydrated/sorceries.json
Normal file
1921
collection_hydrated/sorceries.json
Normal file
File diff suppressed because it is too large
Load Diff
877
deck_analysis.json
Normal file
877
deck_analysis.json
Normal file
@@ -0,0 +1,877 @@
|
|||||||
|
{
|
||||||
|
"palamecia": {
|
||||||
|
"Aetherize": 1,
|
||||||
|
"Arcane Signet": 1,
|
||||||
|
"Baron, Airship Kingdom": 1,
|
||||||
|
"Big Score": 1,
|
||||||
|
"Blasphemous Act": 1,
|
||||||
|
"Bond of Insight": 1,
|
||||||
|
"Careful Consideration": 1,
|
||||||
|
"Channeled Force": 1,
|
||||||
|
"Combat Tutorial": 1,
|
||||||
|
"Command Tower": 1,
|
||||||
|
"Consider": 1,
|
||||||
|
"Counterspell": 1,
|
||||||
|
"Curator's Ward": 1,
|
||||||
|
"Curiosity": 1,
|
||||||
|
"Cut Your Losses": 1,
|
||||||
|
"Decaying Time Loop": 1,
|
||||||
|
"Drake Umbra": 1,
|
||||||
|
"Drown in Dreams": 1,
|
||||||
|
"Elixir of Immortality": 1,
|
||||||
|
"Epic Experiment": 1,
|
||||||
|
"Ether": 1,
|
||||||
|
"Everflowing Chalice": 1,
|
||||||
|
"Experimental Overload": 1,
|
||||||
|
"Fact or Fiction": 1,
|
||||||
|
"Fateful Showdown": 1,
|
||||||
|
"Fire Magic": 1,
|
||||||
|
"Firemind Vessel": 1,
|
||||||
|
"Frostboil Snarl": 1,
|
||||||
|
"Full Throttle": 1,
|
||||||
|
"Gandalf's Sanction": 1,
|
||||||
|
"Hedron Archive": 1,
|
||||||
|
"Increasing Confusion": 1,
|
||||||
|
"Isengard Unleashed": 1,
|
||||||
|
"Island": 18,
|
||||||
|
"Izzet Signet": 1,
|
||||||
|
"Mana Geyser": 1,
|
||||||
|
"Mountain": 12,
|
||||||
|
"Mystic Confluence": 1,
|
||||||
|
"Ovika, Enigma Goliath": 1,
|
||||||
|
"Path of the Pyromancer": 1,
|
||||||
|
"Peter Parker's Camera": 1,
|
||||||
|
"Pinnacle Monk // Mystic Peak": 1,
|
||||||
|
"Pirate's Pillage": 1,
|
||||||
|
"Press the Enemy": 1,
|
||||||
|
"Protective Bubble": 1,
|
||||||
|
"Reliquary Tower": 1,
|
||||||
|
"Rewind": 1,
|
||||||
|
"Ring of the Lucii": 1,
|
||||||
|
"Rise from the Tides": 1,
|
||||||
|
"Sahagin": 1,
|
||||||
|
"Seize the Storm": 1,
|
||||||
|
"Shantotto, Tactician Magician": 1,
|
||||||
|
"Shivan Reef": 1,
|
||||||
|
"Snapcaster Mage": 1,
|
||||||
|
"Snort": 1,
|
||||||
|
"Sol Ring": 1,
|
||||||
|
"Spellheart Chimera": 1,
|
||||||
|
"Sulfur Falls": 1,
|
||||||
|
"Summons of Saruman": 1,
|
||||||
|
"Swiftfoot Boots": 1,
|
||||||
|
"Talrand, Sky Summoner": 1,
|
||||||
|
"Tellah, Great Sage": 1,
|
||||||
|
"Tezzeret's Gambit": 1,
|
||||||
|
"The Emperor of Palamecia // The Lord Master of Hell": 1,
|
||||||
|
"The Rollercrusher Ride": 1,
|
||||||
|
"Thousand-Year Storm": 1,
|
||||||
|
"Traumatize": 1,
|
||||||
|
"Ultros, Obnoxious Octopus": 1,
|
||||||
|
"Ur-Golem's Eye": 1,
|
||||||
|
"Vivi Ornitier": 1,
|
||||||
|
"Whispersilk Cloak": 1,
|
||||||
|
"Zephid's Embrace": 1
|
||||||
|
},
|
||||||
|
"choco": {
|
||||||
|
"Abandoned Air Temple": 1,
|
||||||
|
"Adarkar Wastes": 1,
|
||||||
|
"Airborne Aid": 1,
|
||||||
|
"Ambrosia Whiteheart": 1,
|
||||||
|
"An Offer You Can't Refuse": 1,
|
||||||
|
"Arcane Denial": 1,
|
||||||
|
"Ascend from Avernus": 1,
|
||||||
|
"Austere Command": 1,
|
||||||
|
"Balamb Garden, SeeD Academy // Balamb Garden, Airborne": 1,
|
||||||
|
"Bartz and Boko": 1,
|
||||||
|
"Beast Within": 1,
|
||||||
|
"Beastmaster Ascension": 1,
|
||||||
|
"Birds of Paradise": 1,
|
||||||
|
"Brushland": 1,
|
||||||
|
"Canopy Vista": 1,
|
||||||
|
"Choco, Seeker of Paradise": 1,
|
||||||
|
"Chocobo Kick": 1,
|
||||||
|
"Chocobo Racetrack": 1,
|
||||||
|
"City Pigeon": 1,
|
||||||
|
"Command Tower": 1,
|
||||||
|
"Commune with Beavers": 1,
|
||||||
|
"Counterspell": 1,
|
||||||
|
"Cultivate": 1,
|
||||||
|
"Curiosity Crafter": 1,
|
||||||
|
"Demolition Field": 1,
|
||||||
|
"Dusk // Dawn": 1,
|
||||||
|
"Emeria Angel": 1,
|
||||||
|
"Emeria Shepherd": 1,
|
||||||
|
"Empyrean Eagle": 1,
|
||||||
|
"Evolving Wilds": 1,
|
||||||
|
"Exotic Orchard": 1,
|
||||||
|
"Farseek": 1,
|
||||||
|
"Felidar Retreat": 1,
|
||||||
|
"Flurry of Wings": 1,
|
||||||
|
"Forest": 3,
|
||||||
|
"Generous Gift": 1,
|
||||||
|
"Gilded Goose": 1,
|
||||||
|
"Glacial Fortress": 1,
|
||||||
|
"Gwaihir the Windlord": 1,
|
||||||
|
"Gysahl Greens": 1,
|
||||||
|
"Herald's Horn": 1,
|
||||||
|
"Hermes, Overseer of Elpis": 1,
|
||||||
|
"Hinterland Harbor": 1,
|
||||||
|
"Island": 1,
|
||||||
|
"Jackdaw Savior": 1,
|
||||||
|
"Jumbo Cactuar": 1,
|
||||||
|
"Kangee, Sky Warden": 1,
|
||||||
|
"Kangee's Lieutenant": 1,
|
||||||
|
"Kastral, the Windcrested": 1,
|
||||||
|
"Lifecreed Duo": 1,
|
||||||
|
"Meditation Pools": 1,
|
||||||
|
"Murmuration": 1,
|
||||||
|
"Nature's Lore": 1,
|
||||||
|
"Negate": 1,
|
||||||
|
"Patchwork Banner": 1,
|
||||||
|
"Path of Ancestry": 1,
|
||||||
|
"Path to Exile": 1,
|
||||||
|
"Plains": 5,
|
||||||
|
"Plumecreed Escort": 1,
|
||||||
|
"Prairie Stream": 1,
|
||||||
|
"Prishe's Wanderings": 1,
|
||||||
|
"Radiant Grove": 1,
|
||||||
|
"Rampant Growth": 1,
|
||||||
|
"Reach the Horizon": 1,
|
||||||
|
"Reliquary Tower": 1,
|
||||||
|
"Restless Anchorage": 1,
|
||||||
|
"Restoration Magic": 1,
|
||||||
|
"Ride the Shoopuf": 1,
|
||||||
|
"River Hoopoe": 1,
|
||||||
|
"Sazh Katzroy": 1,
|
||||||
|
"Sazh's Chocobo": 1,
|
||||||
|
"Seaside Citadel": 1,
|
||||||
|
"Seaside Haven": 1,
|
||||||
|
"Sevinne's Reclamation": 1,
|
||||||
|
"Sharlayan, Nation of Scholars": 1,
|
||||||
|
"Sidequest: Raise a Chocobo // Black Chocobo": 1,
|
||||||
|
"Sol Ring": 1,
|
||||||
|
"Suburban Sanctuary": 1,
|
||||||
|
"Summon: Choco/Mog": 1,
|
||||||
|
"Summon: Fat Chocobo": 1,
|
||||||
|
"Sunpetal Grove": 1,
|
||||||
|
"Swords to Plowshares": 1,
|
||||||
|
"Talisman of Progress": 1,
|
||||||
|
"Tangled Islet": 1,
|
||||||
|
"Terramorphic Expanse": 1,
|
||||||
|
"The Goose Mother": 1,
|
||||||
|
"Tranquil Landscape": 1,
|
||||||
|
"Traveling Chocobo": 1,
|
||||||
|
"Warden of Evos Isle": 1,
|
||||||
|
"Watcher of the Spheres": 1,
|
||||||
|
"Windurst, Federation Center": 1,
|
||||||
|
"Winged Portent": 1,
|
||||||
|
"Wingmate Roc": 1,
|
||||||
|
"Yavimaya Coast": 1
|
||||||
|
},
|
||||||
|
"hazel": {
|
||||||
|
"Academy Manufactor": 1,
|
||||||
|
"Arasta of the Endless Web": 1,
|
||||||
|
"Arcane Signet": 1,
|
||||||
|
"Barren Moor": 1,
|
||||||
|
"Bastion of Remembrance": 1,
|
||||||
|
"Beastmaster Ascension": 1,
|
||||||
|
"Beledros Witherbloom": 1,
|
||||||
|
"Binding the Old Gods": 1,
|
||||||
|
"Bojuka Bog": 1,
|
||||||
|
"Cache Grab": 1,
|
||||||
|
"Casualties of War": 1,
|
||||||
|
"Chatterfang, Squirrel General": 1,
|
||||||
|
"Chatterstorm": 1,
|
||||||
|
"Chittering Witch": 1,
|
||||||
|
"Chitterspitter": 1,
|
||||||
|
"Command Tower": 1,
|
||||||
|
"Deadly Dispute": 1,
|
||||||
|
"Decree of Pain": 1,
|
||||||
|
"Deep Forest Hermit": 1,
|
||||||
|
"End-Raze Forerunners": 1,
|
||||||
|
"Evolving Wilds": 1,
|
||||||
|
"Exotic Orchard": 1,
|
||||||
|
"Forest": 9,
|
||||||
|
"Garruk, Cursed Huntsman": 1,
|
||||||
|
"Gilded Goose": 1,
|
||||||
|
"Golgari Rot Farm": 1,
|
||||||
|
"Golgari Signet": 1,
|
||||||
|
"Gourmand's Talent": 1,
|
||||||
|
"Grim Backwoods": 1,
|
||||||
|
"Haunted Mire": 1,
|
||||||
|
"Haywire Mite": 1,
|
||||||
|
"Hazel of the Rootbloom": 1,
|
||||||
|
"Hazel's Brewmaster": 1,
|
||||||
|
"Honored Dreyleader": 1,
|
||||||
|
"Idol of Oblivion": 1,
|
||||||
|
"Insatiable Frugivore": 1,
|
||||||
|
"Jungle Hollow": 1,
|
||||||
|
"Llanowar Wastes": 1,
|
||||||
|
"Maelstrom Pulse": 1,
|
||||||
|
"Maskwood Nexus": 1,
|
||||||
|
"Midgar, City of Mako // Reactor Raid": 1,
|
||||||
|
"Moldervine Reclamation": 1,
|
||||||
|
"Moonstone Eulogist": 1,
|
||||||
|
"Morbid Opportunist": 1,
|
||||||
|
"Nadier's Nightblade": 1,
|
||||||
|
"Necroblossom Snarl": 1,
|
||||||
|
"Nested Shambler": 1,
|
||||||
|
"Ogre Slumlord": 1,
|
||||||
|
"Oran-Rief, the Vastwood": 1,
|
||||||
|
"Path of Ancestry": 1,
|
||||||
|
"Plumb the Forbidden": 1,
|
||||||
|
"Poison-Tip Archer": 1,
|
||||||
|
"Prosperous Innkeeper": 1,
|
||||||
|
"Putrefy": 1,
|
||||||
|
"Ravenous Squirrel": 1,
|
||||||
|
"Rootcast Apprenticeship": 1,
|
||||||
|
"Saw in Half": 1,
|
||||||
|
"Scurry of Squirrels": 1,
|
||||||
|
"Second Harvest": 1,
|
||||||
|
"Shamanic Revelation": 1,
|
||||||
|
"Skullclamp": 1,
|
||||||
|
"Skyfisher Spider": 1,
|
||||||
|
"Sol Ring": 1,
|
||||||
|
"Squirrel Nest": 1,
|
||||||
|
"Squirrel Sovereign": 1,
|
||||||
|
"Swamp": 7,
|
||||||
|
"Swarmyard": 1,
|
||||||
|
"Swarmyard Massacre": 1,
|
||||||
|
"Sword of the Squeak": 1,
|
||||||
|
"Tainted Wood": 1,
|
||||||
|
"Talisman of Resilience": 1,
|
||||||
|
"Tear Asunder": 1,
|
||||||
|
"Temple of Malady": 1,
|
||||||
|
"Terramorphic Expanse": 1,
|
||||||
|
"The Odd Acorn Gang": 1,
|
||||||
|
"Tireless Provisioner": 1,
|
||||||
|
"Toski, Bearer of Secrets": 1,
|
||||||
|
"Tranquil Thicket": 1,
|
||||||
|
"Twilight Mire": 1,
|
||||||
|
"Viridescent Bog": 1,
|
||||||
|
"Windgrace's Judgment": 1,
|
||||||
|
"Woe Strider": 1,
|
||||||
|
"Wolfwillow Haven": 1,
|
||||||
|
"Woodland Cemetery": 1,
|
||||||
|
"Worthy Cost": 1,
|
||||||
|
"Zulaport Cutthroat": 1
|
||||||
|
},
|
||||||
|
"yshtola": {
|
||||||
|
"Amazing Acrobatics": 1,
|
||||||
|
"Arcane Sanctum": 1,
|
||||||
|
"Archaeomancer's Map": 1,
|
||||||
|
"Archmage Emeritus": 1,
|
||||||
|
"Archmage of Runes": 1,
|
||||||
|
"Ash Barrens": 1,
|
||||||
|
"Authority of the Consuls": 1,
|
||||||
|
"Avatar's Wrath": 1,
|
||||||
|
"Baleful Strix": 1,
|
||||||
|
"Banishing Light": 1,
|
||||||
|
"Black Mage's Rod": 1,
|
||||||
|
"Blitzball": 1,
|
||||||
|
"Blue Mage's Cane": 1,
|
||||||
|
"Brainstorm": 1,
|
||||||
|
"Champions from Beyond": 1,
|
||||||
|
"Choked Estuary": 1,
|
||||||
|
"Circle of Power": 1,
|
||||||
|
"Cleansing Nova": 1,
|
||||||
|
"Command Beacon": 1,
|
||||||
|
"Contaminated Aquifer": 1,
|
||||||
|
"Cornered by Black Mages": 1,
|
||||||
|
"Curiosity": 1,
|
||||||
|
"Dancer's Chakrams": 1,
|
||||||
|
"Darkwater Catacombs": 1,
|
||||||
|
"Demolition Field": 1,
|
||||||
|
"Desolate Mire": 1,
|
||||||
|
"Dig Through Time": 1,
|
||||||
|
"Dovin's Veto": 1,
|
||||||
|
"Drowned Catacomb": 1,
|
||||||
|
"Emet-Selch of the Third Seat": 1,
|
||||||
|
"Evolving Wilds": 1,
|
||||||
|
"Exotic Orchard": 1,
|
||||||
|
"Exsanguinate": 1,
|
||||||
|
"Fandaniel, Telophoroi Ascian": 1,
|
||||||
|
"Fetid Heath": 1,
|
||||||
|
"Fight On!": 1,
|
||||||
|
"Final Judgment": 1,
|
||||||
|
"Firemind Vessel": 1,
|
||||||
|
"Frantic Search": 1,
|
||||||
|
"Glacial Fortress": 1,
|
||||||
|
"Hedron Archive": 1,
|
||||||
|
"Idyllic Beachfront": 1,
|
||||||
|
"Island": 2,
|
||||||
|
"Isolated Chapel": 1,
|
||||||
|
"Krile Baldesion": 1,
|
||||||
|
"Lethal Scheme": 1,
|
||||||
|
"Multiversal Passage": 1,
|
||||||
|
"Murderous Rider // Swift End": 1,
|
||||||
|
"Observed Stasis": 1,
|
||||||
|
"Overkill": 1,
|
||||||
|
"Papalymo Totolymo": 1,
|
||||||
|
"Path of Ancestry": 1,
|
||||||
|
"Plains": 3,
|
||||||
|
"Port Town": 1,
|
||||||
|
"Prairie Stream": 1,
|
||||||
|
"Propaganda": 1,
|
||||||
|
"Reaper's Scythe": 1,
|
||||||
|
"Relic of Legends": 1,
|
||||||
|
"Reliquary Tower": 1,
|
||||||
|
"Rewind": 1,
|
||||||
|
"Ring of the Lucii": 1,
|
||||||
|
"Risky Research": 1,
|
||||||
|
"Rite of Replication": 1,
|
||||||
|
"Riverwalk Technique": 1,
|
||||||
|
"Scavenger Grounds": 1,
|
||||||
|
"School Daze": 1,
|
||||||
|
"Shineshadow Snarl": 1,
|
||||||
|
"Skycloud Expanse": 1,
|
||||||
|
"Snuff Out": 1,
|
||||||
|
"Sol Ring": 1,
|
||||||
|
"Static Snare": 1,
|
||||||
|
"Stuck in Summoner's Sanctum": 1,
|
||||||
|
"Sublime Epiphany": 1,
|
||||||
|
"Sunken Hollow": 1,
|
||||||
|
"Sunken Ruins": 1,
|
||||||
|
"Sunlit Marsh": 1,
|
||||||
|
"Swamp": 2,
|
||||||
|
"Swords to Plowshares": 1,
|
||||||
|
"Syphon Mind": 1,
|
||||||
|
"Talisman of Hierarchy": 1,
|
||||||
|
"Temple of the False God": 1,
|
||||||
|
"Thought Vessel": 1,
|
||||||
|
"Torrential Gearhulk": 1,
|
||||||
|
"Transpose": 1,
|
||||||
|
"Ultima": 1,
|
||||||
|
"Underground River": 1,
|
||||||
|
"Ur-Golem's Eye": 1,
|
||||||
|
"Urza's Saga": 1,
|
||||||
|
"Vanish from Sight": 1,
|
||||||
|
"Vincent's Limit Break": 1,
|
||||||
|
"Vindicate": 1,
|
||||||
|
"Void Rend": 1,
|
||||||
|
"Vote Out": 1,
|
||||||
|
"White Auracite": 1,
|
||||||
|
"Withering Torment": 1,
|
||||||
|
"Y'shtola, Night's Blessed": 1
|
||||||
|
},
|
||||||
|
"available": [
|
||||||
|
"Magitek Infantry",
|
||||||
|
"Resentful Revelation",
|
||||||
|
"Venom's Hunger",
|
||||||
|
"Genji Glove",
|
||||||
|
"Auron's Inspiration",
|
||||||
|
"Slavering Branchsnapper",
|
||||||
|
"Retrieve the Esper",
|
||||||
|
"Red Herring",
|
||||||
|
"Firebrand Archer",
|
||||||
|
"Llanowar Elves",
|
||||||
|
"Wartime Protestors",
|
||||||
|
"Sanar, Innovative First-Year",
|
||||||
|
"Coeurl",
|
||||||
|
"Azula, Cunning Usurper",
|
||||||
|
"Glimmerburst",
|
||||||
|
"Kraven's Cats",
|
||||||
|
"Ringing Strike Mastery",
|
||||||
|
"Unexpected Request",
|
||||||
|
"Monk's Fist",
|
||||||
|
"You're Not Alone",
|
||||||
|
"Fate of the Sun-Cryst",
|
||||||
|
"Dwarven Castle Guard",
|
||||||
|
"Into the Story",
|
||||||
|
"Good-Fortune Unicorn",
|
||||||
|
"Venser, Shaper Savant",
|
||||||
|
"Il Mheg Pixie",
|
||||||
|
"Yuyan Archers",
|
||||||
|
"Summon: Primal Odin",
|
||||||
|
"Call the Mountain Chocobo",
|
||||||
|
"Long River's Pull",
|
||||||
|
"Mornsong Aria",
|
||||||
|
"Embermouth Sentinel",
|
||||||
|
"The Prima Vista",
|
||||||
|
"Cackling Prowler",
|
||||||
|
"Kithkeeper",
|
||||||
|
"Lluwen, Imperfect Naturalist",
|
||||||
|
"Cinder Strike",
|
||||||
|
"Hog-Monkey",
|
||||||
|
"Kukemssa Serpent",
|
||||||
|
"Fire Nation Engineer",
|
||||||
|
"Blossombind",
|
||||||
|
"Summon: G.F. Ifrit",
|
||||||
|
"Enduring Curiosity",
|
||||||
|
"Triple Triad",
|
||||||
|
"Hraesvelgr of the First Brood",
|
||||||
|
"Wary Farmer",
|
||||||
|
"Close Encounter",
|
||||||
|
"Firdoch Core",
|
||||||
|
"Origin of Metalbending",
|
||||||
|
"Qiqirn Merchant",
|
||||||
|
"Friendly Ghost",
|
||||||
|
"Samurai's Katana",
|
||||||
|
"Boggart Mischief",
|
||||||
|
"Apothecary Stomper",
|
||||||
|
"White Mage's Staff",
|
||||||
|
"Sleep Magic",
|
||||||
|
"Giant Growth",
|
||||||
|
"Locke Cole",
|
||||||
|
"Cloudbound Moogle",
|
||||||
|
"Brazen Scourge",
|
||||||
|
"Scour for Scrap",
|
||||||
|
"Abundant Growth",
|
||||||
|
"Paladin's Arms",
|
||||||
|
"Syncopate",
|
||||||
|
"Hecteyes",
|
||||||
|
"Private Eye",
|
||||||
|
"Vayne's Treachery",
|
||||||
|
"Judgment Bolt",
|
||||||
|
"Boggart Prankster",
|
||||||
|
"Namazu Trader",
|
||||||
|
"Plaguecrafter",
|
||||||
|
"Pumpkin Bombardment",
|
||||||
|
"Rydia's Return",
|
||||||
|
"Rhino, Barreling Brute",
|
||||||
|
"Lingering Souls",
|
||||||
|
"Haste Magic",
|
||||||
|
"Boilerbilges Ripper",
|
||||||
|
"Magic Damper",
|
||||||
|
"Unwanted Remake",
|
||||||
|
"Momo, Friendly Flier",
|
||||||
|
"Perigee Beckoner",
|
||||||
|
"Boomerang Basics",
|
||||||
|
"Summon: Fenrir",
|
||||||
|
"Cobbled Wings",
|
||||||
|
"Brigid's Command",
|
||||||
|
"Campus Guide",
|
||||||
|
"World Map",
|
||||||
|
"Virulent Emissary",
|
||||||
|
"Blazing Bomb",
|
||||||
|
"Omega, Heartless Evolution",
|
||||||
|
"The Fire Crystal",
|
||||||
|
"Weapons Vendor",
|
||||||
|
"Barret Wallace",
|
||||||
|
"Agent of Kotis",
|
||||||
|
"Cut a Deal",
|
||||||
|
"Scorpion Sentinel",
|
||||||
|
"Loporrit Scout",
|
||||||
|
"Disturbing Mirth",
|
||||||
|
"Sarkhan's Resolve",
|
||||||
|
"Tiger-Seal",
|
||||||
|
"Ice Magic",
|
||||||
|
"Shadow Urchin",
|
||||||
|
"Stoic Grove-Guide",
|
||||||
|
"Changeling Wayfinder",
|
||||||
|
"Unforgiving Aim",
|
||||||
|
"Jenova, Ancient Calamity",
|
||||||
|
"Impossible Inferno",
|
||||||
|
"Scout the City",
|
||||||
|
"Poison the Waters",
|
||||||
|
"Lightning, Security Sergeant",
|
||||||
|
"Airship Crash",
|
||||||
|
"Roiling Dragonstorm",
|
||||||
|
"Evershrike's Gift",
|
||||||
|
"Vanille, Cheerful l'Cie",
|
||||||
|
"Kyoshi Battle Fan",
|
||||||
|
"Rally the Monastery",
|
||||||
|
"Flight-Deck Coordinator",
|
||||||
|
"Moogles' Valor",
|
||||||
|
"Meanders Guide",
|
||||||
|
"Nebelgast Herald",
|
||||||
|
"Qutrub Forayer",
|
||||||
|
"Mysidian Elder",
|
||||||
|
"Heritage Reclamation",
|
||||||
|
"Hermitic Herbalist",
|
||||||
|
"House Cartographer",
|
||||||
|
"Waterbending Lesson",
|
||||||
|
"Turtle-Duck",
|
||||||
|
"Perennation",
|
||||||
|
"Reluctant Dounguard",
|
||||||
|
"Razorkin Hordecaller",
|
||||||
|
"Wraith, Vicious Vigilante",
|
||||||
|
"Ahriman",
|
||||||
|
"Accumulate Wisdom",
|
||||||
|
"Dragoon's Wyvern",
|
||||||
|
"Flamekin Gildweaver",
|
||||||
|
"Keep Out",
|
||||||
|
"Elspeth, Storm Slayer",
|
||||||
|
"G'raha Tia",
|
||||||
|
"Reanimate",
|
||||||
|
"Tweeze",
|
||||||
|
"Eirdu, Carrier of Dawn // Isilu, Carrier of Twilight",
|
||||||
|
"Festerhide Boar",
|
||||||
|
"Temporal Cleansing",
|
||||||
|
"Hypnotic Sprite // Mesmeric Glare",
|
||||||
|
"Coral Sword",
|
||||||
|
"Rebellious Captives",
|
||||||
|
"Deepchannel Duelist",
|
||||||
|
"Sabotender",
|
||||||
|
"Merrow Skyswimmer",
|
||||||
|
"Iron Giant",
|
||||||
|
"Magitek Armor",
|
||||||
|
"Dawnhand Eulogist",
|
||||||
|
"Frontline War-Rager",
|
||||||
|
"Yip Yip!",
|
||||||
|
"Gladiolus Amicitia",
|
||||||
|
"Compassionate Healer",
|
||||||
|
"Bard's Bow",
|
||||||
|
"Kulrath Mystic",
|
||||||
|
"Wakka, Devoted Guardian",
|
||||||
|
"Kinbinding",
|
||||||
|
"Summon: Primal Garuda",
|
||||||
|
"Summon: Good King Mog XII",
|
||||||
|
"Spider-Ham, Peter Porker",
|
||||||
|
"Canyon Crawler",
|
||||||
|
"Syr Konrad, the Grim",
|
||||||
|
"Wanderwine Farewell",
|
||||||
|
"Darkness Descends",
|
||||||
|
"Cryptid Inspector",
|
||||||
|
"Dragonback Lancer",
|
||||||
|
"Impolite Entrance",
|
||||||
|
"Vial Smasher the Fierce",
|
||||||
|
"Blitzball Shot",
|
||||||
|
"Aerith Rescue Mission",
|
||||||
|
"Kyoshi Warriors",
|
||||||
|
"Emet-Selch, Unsundered // Hades, Sorcerer of Eld",
|
||||||
|
"Badgermole",
|
||||||
|
"Crux of Fate",
|
||||||
|
"Dreams of Laguna",
|
||||||
|
"Merchant of Many Hats",
|
||||||
|
"Lightning Strike",
|
||||||
|
"Stratosoarer",
|
||||||
|
"Jill, Shiva's Dominant // Shiva, Warden of Ice",
|
||||||
|
"Leyline Axe",
|
||||||
|
"Eusocial Engineering",
|
||||||
|
"Alesha's Legacy",
|
||||||
|
"Terminal Velocity",
|
||||||
|
"Undercity Dire Rat",
|
||||||
|
"Scarblade's Malice",
|
||||||
|
"Campsite Cuisine",
|
||||||
|
"Murder",
|
||||||
|
"Cunning Maneuver",
|
||||||
|
"Mechanical Mobster",
|
||||||
|
"Temporal Intervention",
|
||||||
|
"Rydia, Summoner of Mist",
|
||||||
|
"Barbed Bloodletter",
|
||||||
|
"Feisty Spikeling",
|
||||||
|
"Mischievous Sneakling",
|
||||||
|
"Dragonclaw Strike",
|
||||||
|
"Ostrich-Horse",
|
||||||
|
"Valkyrie Aerial Unit",
|
||||||
|
"Minwu, White Mage",
|
||||||
|
"Urianger Augurelt",
|
||||||
|
"Eject",
|
||||||
|
"Wall Crawl",
|
||||||
|
"Glider Kids",
|
||||||
|
"Summon: G.F. Cerberus",
|
||||||
|
"Jet's Brainwashing",
|
||||||
|
"Dragoon's Lance",
|
||||||
|
"Zenos yae Galvus // Shinryu, Transcendent Rival",
|
||||||
|
"Cargo Ship",
|
||||||
|
"Great Forest Druid",
|
||||||
|
"Relentless X-ATM092",
|
||||||
|
"Supportive Parents",
|
||||||
|
"Malboro",
|
||||||
|
"Corroding Dragonstorm",
|
||||||
|
"Spiral into Solitude",
|
||||||
|
"Thunder Magic",
|
||||||
|
"Chaos Spewer",
|
||||||
|
"Sower of Chaos",
|
||||||
|
"Beetle-Headed Merchants",
|
||||||
|
"Uncharted Voyage",
|
||||||
|
"Giant Koi",
|
||||||
|
"Witness Protection",
|
||||||
|
"Lie in Wait",
|
||||||
|
"The Boulder, Ready to Rumble",
|
||||||
|
"Northern Air Temple",
|
||||||
|
"Ultima Weapon",
|
||||||
|
"Lyse Hext",
|
||||||
|
"Hildibrand Manderville // Gentleman's Rise",
|
||||||
|
"Lys Alana Dignitary",
|
||||||
|
"Eye of Nidhogg",
|
||||||
|
"Seize Opportunity",
|
||||||
|
"Lunatic Pandora",
|
||||||
|
"Timid Shieldbearer",
|
||||||
|
"From Father to Son",
|
||||||
|
"Buzzard-Wasp Colony",
|
||||||
|
"Enraged Flamecaster",
|
||||||
|
"Cloud of Darkness",
|
||||||
|
"Crossroads Watcher",
|
||||||
|
"Magic Pot",
|
||||||
|
"Choco-Comet",
|
||||||
|
"Protective Response",
|
||||||
|
"Kulrath Zealot",
|
||||||
|
"Heirloom Auntie",
|
||||||
|
"Faebloom Trick",
|
||||||
|
"Surveillance Monitor",
|
||||||
|
"Hill Gigas",
|
||||||
|
"Sami, Ship's Engineer",
|
||||||
|
"Red Mage's Rapier",
|
||||||
|
"Retched Wretch",
|
||||||
|
"Pestered Wellguard",
|
||||||
|
"Spectral Snatcher",
|
||||||
|
"Flash Thompson, Spider-Fan",
|
||||||
|
"Shinra Reinforcements",
|
||||||
|
"Brambleback Brute",
|
||||||
|
"Unburied Earthcarver",
|
||||||
|
"Dazzling Angel",
|
||||||
|
"Nightmare Sower",
|
||||||
|
"Ultimecia, Time Sorceress // Ultimecia, Omnipotent",
|
||||||
|
"Jecht, Reluctant Guardian // Braska's Final Aeon",
|
||||||
|
"Liminal Hold",
|
||||||
|
"Spider-Rex, Daring Dino",
|
||||||
|
"Cloud, Midgar Mercenary",
|
||||||
|
"Phoenix Down",
|
||||||
|
"Thancred Waters",
|
||||||
|
"Dark Knight's Greatsword",
|
||||||
|
"Gilgamesh, Master-at-Arms",
|
||||||
|
"Tidus, Blitzball Star",
|
||||||
|
"Bite Down on Crime",
|
||||||
|
"Lys Alana Informant",
|
||||||
|
"Erudite Wizard",
|
||||||
|
"Run Away Together",
|
||||||
|
"Tunnel Tipster",
|
||||||
|
"Spider-Man No More",
|
||||||
|
"Trystan's Command",
|
||||||
|
"Rinoa Heartilly",
|
||||||
|
"Veteran Survivor",
|
||||||
|
"The Final Days",
|
||||||
|
"Rosa, Resolute White Mage",
|
||||||
|
"Soul-Shackled Zombie",
|
||||||
|
"Adelbert Steiner",
|
||||||
|
"Freya Crescent",
|
||||||
|
"G'raha Tia, Scion Reborn",
|
||||||
|
"Jeong Jeong's Deserters",
|
||||||
|
"Ice Flan",
|
||||||
|
"Instant Ramen",
|
||||||
|
"Aerith Gainsborough",
|
||||||
|
"Allies at Last",
|
||||||
|
"Gallant Fowlknight",
|
||||||
|
"Serah Farron // Crystallized Serah",
|
||||||
|
"Grappling Kraken",
|
||||||
|
"Ardbert, Warrior of Darkness",
|
||||||
|
"Midnight Tilling",
|
||||||
|
"Black Waltz No. 3",
|
||||||
|
"Balthier and Fran",
|
||||||
|
"Mardu Devotee",
|
||||||
|
"Light of Judgment",
|
||||||
|
"Catharsis",
|
||||||
|
"Rocky Rebuke",
|
||||||
|
"Don't Make a Sound",
|
||||||
|
"Subway Train",
|
||||||
|
"Vinebred Brawler",
|
||||||
|
"Caught Red-Handed",
|
||||||
|
"Axgard Cavalry",
|
||||||
|
"Clachan Festival",
|
||||||
|
"Vicious Clown",
|
||||||
|
"Guru Pathik",
|
||||||
|
"Gilt-Leaf's Embrace",
|
||||||
|
"Dashing Bloodsucker",
|
||||||
|
"Gaelicat",
|
||||||
|
"Sandworm",
|
||||||
|
"Spider-Suit",
|
||||||
|
"Huntmaster of the Fells // Ravager of the Fells",
|
||||||
|
"Queen Brahne",
|
||||||
|
"Shambling Cie'th",
|
||||||
|
"Bearer of Glory",
|
||||||
|
"Sage's Nouliths",
|
||||||
|
"Southern Air Temple",
|
||||||
|
"Sun-Dappled Celebrant",
|
||||||
|
"Gristle Glutton",
|
||||||
|
"Burglar Rat",
|
||||||
|
"Balmor, Battlemage Captain",
|
||||||
|
"Watery Grasp",
|
||||||
|
"Grub's Command",
|
||||||
|
"Zuko's Exile",
|
||||||
|
"Noggle the Mind",
|
||||||
|
"Light Up the Stage",
|
||||||
|
"Coveted Jewel",
|
||||||
|
"Safewright Cavalry",
|
||||||
|
"Random Encounter",
|
||||||
|
"Archghoul of Thraben",
|
||||||
|
"Strength of Arms",
|
||||||
|
"Basilica Stalker",
|
||||||
|
"Cloud, Planet's Champion",
|
||||||
|
"Prismatic Undercurrents",
|
||||||
|
"Diamond Weapon",
|
||||||
|
"Claws Out",
|
||||||
|
"Estinien Varlineau",
|
||||||
|
"Cracked Skull",
|
||||||
|
"Zodiark, Umbral God",
|
||||||
|
"Doc Ock, Sinister Scientist",
|
||||||
|
"Gigantoad",
|
||||||
|
"The Masamune",
|
||||||
|
"Daily Bugle Reporters",
|
||||||
|
"Vincent Valentine // Galian Beast",
|
||||||
|
"Chaos Shrine's Black Crystal",
|
||||||
|
"Octopus Form",
|
||||||
|
"Beatrix, Loyal General",
|
||||||
|
"Tireless Tracker",
|
||||||
|
"Stalactite Dagger",
|
||||||
|
"Unsettling Twins",
|
||||||
|
"Fatal Fissure",
|
||||||
|
"Corrupt Court Official",
|
||||||
|
"Backslide",
|
||||||
|
"Platypus-Bear",
|
||||||
|
"Anafenza, Unyielding Lineage",
|
||||||
|
"Dai Li Agents",
|
||||||
|
"Wild Unraveling",
|
||||||
|
"Puca's Eye",
|
||||||
|
"Reno and Rude",
|
||||||
|
"Evil Reawakened",
|
||||||
|
"Wolfbat",
|
||||||
|
"Razor Rings",
|
||||||
|
"Flame-Chain Mauler",
|
||||||
|
"June, Bounty Hunter",
|
||||||
|
"Giott, King of the Dwarves",
|
||||||
|
"Suplex",
|
||||||
|
"Butcher's Cleaver",
|
||||||
|
"Abandon Attachments",
|
||||||
|
"Cactuar",
|
||||||
|
"Unexpected Assistance",
|
||||||
|
"Spider-Islanders",
|
||||||
|
"Auroral Procession",
|
||||||
|
"Due Diligence",
|
||||||
|
"Excalibur II",
|
||||||
|
"Laughing Mad",
|
||||||
|
"Fire Nation Raider",
|
||||||
|
"Enter the Avatar State",
|
||||||
|
"Combustion Man",
|
||||||
|
"Security Bypass",
|
||||||
|
"Boggart Cursecrafter",
|
||||||
|
"The Crystal's Chosen",
|
||||||
|
"Messenger Hawk",
|
||||||
|
"Firebending Lesson",
|
||||||
|
"Breaching Dragonstorm",
|
||||||
|
"It'll Quench Ya!",
|
||||||
|
"Battle Menu",
|
||||||
|
"Fear of Isolation",
|
||||||
|
"Deserter's Disciple",
|
||||||
|
"Boldwyr Aggressor",
|
||||||
|
"Sunpearl Kirin",
|
||||||
|
"Barret, Avalanche Leader",
|
||||||
|
"Ravenous Amulet",
|
||||||
|
"Glamermite",
|
||||||
|
"Master Piandao",
|
||||||
|
"Feral Deathgorger // Dusk Sight",
|
||||||
|
"Dream Seizer",
|
||||||
|
"Smuggler's Copter",
|
||||||
|
"Stalwart Successor",
|
||||||
|
"Meticulous Artisan",
|
||||||
|
"Curious Farm Animals",
|
||||||
|
"Kalonian Twingrove",
|
||||||
|
"Twinflame Travelers",
|
||||||
|
"Whoosh!",
|
||||||
|
"Venom, Evil Unleashed",
|
||||||
|
"Exdeath, Void Warlock // Neo Exdeath, Dimension's End",
|
||||||
|
"Cycle of Renewal",
|
||||||
|
"Moonglove Extractor",
|
||||||
|
"Crystal Fragments // Summon: Alexander",
|
||||||
|
"Damage Control Crew",
|
||||||
|
"Aang's Journey",
|
||||||
|
"Explosive Prodigy",
|
||||||
|
"Gran Pulse Ochu",
|
||||||
|
"Uncle Iroh",
|
||||||
|
"Mongoose Lizard",
|
||||||
|
"Sultai Devotee",
|
||||||
|
"Trystan, Callous Cultivator // Trystan, Penitent Culler",
|
||||||
|
"Tributary Vaulter",
|
||||||
|
"Phantom Train",
|
||||||
|
"Sidequest: Play Blitzball // World Champion, Celestial Weapon",
|
||||||
|
"Connecting the Dots",
|
||||||
|
"Al Bhed Salvagers",
|
||||||
|
"Warrior's Sword",
|
||||||
|
"Superior Foes of Spider-Man",
|
||||||
|
"Riverguard's Reflexes",
|
||||||
|
"Coliseum Behemoth",
|
||||||
|
"Lost Days",
|
||||||
|
"Alisaie Leveilleur",
|
||||||
|
"Walltop Sentries",
|
||||||
|
"Hinterland Logger // Timber Shredder",
|
||||||
|
"Summon: Shiva",
|
||||||
|
"Suki, Kyoshi Warrior",
|
||||||
|
"Wildwood Scourge",
|
||||||
|
"Blood Petal Celebrant",
|
||||||
|
"Tempest Hawk",
|
||||||
|
"Monastery Messenger",
|
||||||
|
"Gogo, Mysterious Mime",
|
||||||
|
"Flaring Cinder",
|
||||||
|
"Voracious Tome-Skimmer",
|
||||||
|
"Goobbue Gardener",
|
||||||
|
"Aquitect's Defenses",
|
||||||
|
"Sidequest: Catch a Fish // Cooking Campsite",
|
||||||
|
"Demon Wall",
|
||||||
|
"Quistis Trepe",
|
||||||
|
"Shore Lurker",
|
||||||
|
"Gogo, Master of Mimicry",
|
||||||
|
"Town Greeter",
|
||||||
|
"Reputable Merchant",
|
||||||
|
"Gnarlbark Elm",
|
||||||
|
"Dai Li Indoctrination",
|
||||||
|
"Fatal Push",
|
||||||
|
"Rooftop Percher",
|
||||||
|
"Ignis Scientia",
|
||||||
|
"Balamb T-Rexaur",
|
||||||
|
"Meathook Massacre II",
|
||||||
|
"Gaius van Baelsar",
|
||||||
|
"Meat Locker // Drowned Diner",
|
||||||
|
"Tiger-Dillo",
|
||||||
|
"Boulder Dash",
|
||||||
|
"Fang, Fearless l'Cie",
|
||||||
|
"Vibrance",
|
||||||
|
"Scarblade Scout",
|
||||||
|
"Item Shopkeep",
|
||||||
|
"Stolen Uniform",
|
||||||
|
"Invasion Submersible",
|
||||||
|
"Shock Brigade",
|
||||||
|
"Spider-Bot",
|
||||||
|
"Clash of the Eikons",
|
||||||
|
"Gravblade Heavy",
|
||||||
|
"Earth Kingdom Jailer",
|
||||||
|
"Rainveil Rejuvenator",
|
||||||
|
"Mai, Scornful Striker",
|
||||||
|
"The Mechanist, Aerial Artisan",
|
||||||
|
"Tersa Lightshatter",
|
||||||
|
"Zuko, Conflicted",
|
||||||
|
"Encumbered Reejerey",
|
||||||
|
"Crypt Feaster",
|
||||||
|
"Delivery Moogle",
|
||||||
|
"Slash of Light",
|
||||||
|
"Tend the Sprigs",
|
||||||
|
"Cryogen Relic",
|
||||||
|
"Wanderwine Distracter",
|
||||||
|
"Spider-Gwen, Free Spirit",
|
||||||
|
"Prideful Feastling",
|
||||||
|
"Bogslither's Embrace",
|
||||||
|
"Thinking Cap",
|
||||||
|
"Palladium Myr",
|
||||||
|
"Salt Road Packbeast",
|
||||||
|
"Clement, the Worrywort",
|
||||||
|
"Get Out",
|
||||||
|
"Arachne, Psionic Weaver",
|
||||||
|
"Abundant Maw",
|
||||||
|
"Rook Turret",
|
||||||
|
"Tome of Legends",
|
||||||
|
"Garland, Knight of Cornelia // Chaos, the Endless",
|
||||||
|
"Alphinaud Leveilleur",
|
||||||
|
"Shattered Wings",
|
||||||
|
"Taxi Driver",
|
||||||
|
"Pirate Peddlers",
|
||||||
|
"Swat Away",
|
||||||
|
"Extract a Confession",
|
||||||
|
"Relm's Sketching",
|
||||||
|
"Garnet, Princess of Alexandria",
|
||||||
|
"Killing Wave",
|
||||||
|
"Sephiroth's Intervention",
|
||||||
|
"Stinging Scorpion",
|
||||||
|
"Sidequest: Card Collection // Magicked Card",
|
||||||
|
"Kraven's Last Hunt",
|
||||||
|
"Tataru Taru",
|
||||||
|
"Boar-q-pine",
|
||||||
|
"Bile-Vial Boggart",
|
||||||
|
"Earthbending Lesson",
|
||||||
|
"Ashling, Rekindled // Ashling, Rimebound",
|
||||||
|
"Bloodline Bidding",
|
||||||
|
"Talisman of Dominance",
|
||||||
|
"Blighted Blackthorn",
|
||||||
|
"Astrologian's Planisphere"
|
||||||
|
]
|
||||||
|
}
|
||||||
102
decks/choco.json
Normal file
102
decks/choco.json
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
{
|
||||||
|
"name": "Choco",
|
||||||
|
"commander": "Choco, Seeker of Paradise",
|
||||||
|
"colors": ["U", "G", "W"],
|
||||||
|
"archetype": "Bird Tribal Landfall",
|
||||||
|
"cards": {
|
||||||
|
"Abandoned Air Temple": 1,
|
||||||
|
"Adarkar Wastes": 1,
|
||||||
|
"Airborne Aid": 1,
|
||||||
|
"Ambrosia Whiteheart": 1,
|
||||||
|
"An Offer You Can't Refuse": 1,
|
||||||
|
"Arcane Denial": 1,
|
||||||
|
"Ascend from Avernus": 1,
|
||||||
|
"Austere Command": 1,
|
||||||
|
"Balamb Garden, SeeD Academy // Balamb Garden, Airborne": 1,
|
||||||
|
"Bartz and Boko": 1,
|
||||||
|
"Beast Within": 1,
|
||||||
|
"Beastmaster Ascension": 1,
|
||||||
|
"Birds of Paradise": 1,
|
||||||
|
"Brushland": 1,
|
||||||
|
"Canopy Vista": 1,
|
||||||
|
"Choco, Seeker of Paradise": 1,
|
||||||
|
"Chocobo Kick": 1,
|
||||||
|
"Chocobo Racetrack": 1,
|
||||||
|
"City Pigeon": 1,
|
||||||
|
"Command Tower": 1,
|
||||||
|
"Commune with Beavers": 1,
|
||||||
|
"Counterspell": 1,
|
||||||
|
"Cultivate": 1,
|
||||||
|
"Curiosity Crafter": 1,
|
||||||
|
"Demolition Field": 1,
|
||||||
|
"Dusk // Dawn": 1,
|
||||||
|
"Emeria Angel": 1,
|
||||||
|
"Emeria Shepherd": 1,
|
||||||
|
"Empyrean Eagle": 1,
|
||||||
|
"Evolving Wilds": 2,
|
||||||
|
"Exotic Orchard": 1,
|
||||||
|
"Farseek": 1,
|
||||||
|
"Felidar Retreat": 1,
|
||||||
|
"Flurry of Wings": 1,
|
||||||
|
"Forest": 3,
|
||||||
|
"Generous Gift": 1,
|
||||||
|
"Gilded Goose": 1,
|
||||||
|
"Glacial Fortress": 1,
|
||||||
|
"Gwaihir the Windlord": 1,
|
||||||
|
"Gysahl Greens": 1,
|
||||||
|
"Herald's Horn": 1,
|
||||||
|
"Hermes, Overseer of Elpis": 1,
|
||||||
|
"Hinterland Harbor": 1,
|
||||||
|
"Island": 1,
|
||||||
|
"Jackdaw Savior": 1,
|
||||||
|
"Jumbo Cactuar": 1,
|
||||||
|
"Kangee, Sky Warden": 1,
|
||||||
|
"Kangee's Lieutenant": 1,
|
||||||
|
"Kastral, the Windcrested": 1,
|
||||||
|
"Lifecreed Duo": 1,
|
||||||
|
"Meditation Pools": 1,
|
||||||
|
"Murmuration": 1,
|
||||||
|
"Nature's Lore": 1,
|
||||||
|
"Negate": 1,
|
||||||
|
"Patchwork Banner": 1,
|
||||||
|
"Path of Ancestry": 1,
|
||||||
|
"Path to Exile": 1,
|
||||||
|
"Plains": 5,
|
||||||
|
"Plumecreed Escort": 1,
|
||||||
|
"Prairie Stream": 1,
|
||||||
|
"Prishe's Wanderings": 1,
|
||||||
|
"Radiant Grove": 1,
|
||||||
|
"Rampant Growth": 1,
|
||||||
|
"Reach the Horizon": 1,
|
||||||
|
"Reliquary Tower": 1,
|
||||||
|
"Restless Anchorage": 1,
|
||||||
|
"Restoration Magic": 1,
|
||||||
|
"Ride the Shoopuf": 1,
|
||||||
|
"River Hoopoe": 1,
|
||||||
|
"Sazh Katzroy": 1,
|
||||||
|
"Sazh's Chocobo": 1,
|
||||||
|
"Seaside Citadel": 1,
|
||||||
|
"Seaside Haven": 1,
|
||||||
|
"Sevinne's Reclamation": 1,
|
||||||
|
"Sharlayan, Nation of Scholars": 1,
|
||||||
|
"Sidequest: Raise a Chocobo // Black Chocobo": 1,
|
||||||
|
"Sol Ring": 1,
|
||||||
|
"Suburban Sanctuary": 1,
|
||||||
|
"Summon: Choco/Mog": 1,
|
||||||
|
"Summon: Fat Chocobo": 1,
|
||||||
|
"Sunpetal Grove": 1,
|
||||||
|
"Swords to Plowshares": 1,
|
||||||
|
"Talisman of Progress": 1,
|
||||||
|
"Tangled Islet": 1,
|
||||||
|
"Terramorphic Expanse": 1,
|
||||||
|
"The Goose Mother": 1,
|
||||||
|
"Tranquil Landscape": 1,
|
||||||
|
"Traveling Chocobo": 1,
|
||||||
|
"Warden of Evos Isle": 1,
|
||||||
|
"Watcher of the Spheres": 1,
|
||||||
|
"Windurst, Federation Center": 1,
|
||||||
|
"Winged Portent": 1,
|
||||||
|
"Wingmate Roc": 1,
|
||||||
|
"Yavimaya Coast": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
94
decks/hazel.json
Normal file
94
decks/hazel.json
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
{
|
||||||
|
"name": "Hazel",
|
||||||
|
"commander": "Hazel of the Rootbloom",
|
||||||
|
"colors": ["B", "G"],
|
||||||
|
"archetype": "Golgari Aristocrats",
|
||||||
|
"cards": {
|
||||||
|
"Academy Manufactor": 1,
|
||||||
|
"Arasta of the Endless Web": 1,
|
||||||
|
"Arcane Signet": 1,
|
||||||
|
"Barren Moor": 1,
|
||||||
|
"Bastion of Remembrance": 1,
|
||||||
|
"Beastmaster Ascension": 1,
|
||||||
|
"Beledros Witherbloom": 1,
|
||||||
|
"Binding the Old Gods": 1,
|
||||||
|
"Bojuka Bog": 1,
|
||||||
|
"Cache Grab": 1,
|
||||||
|
"Casualties of War": 1,
|
||||||
|
"Chatterfang, Squirrel General": 1,
|
||||||
|
"Chatterstorm": 1,
|
||||||
|
"Chittering Witch": 1,
|
||||||
|
"Chitterspitter": 1,
|
||||||
|
"Command Tower": 1,
|
||||||
|
"Deadly Dispute": 1,
|
||||||
|
"Decree of Pain": 1,
|
||||||
|
"Deep Forest Hermit": 1,
|
||||||
|
"End-Raze Forerunners": 1,
|
||||||
|
"Evolving Wilds": 1,
|
||||||
|
"Exotic Orchard": 1,
|
||||||
|
"Forest": 9,
|
||||||
|
"Garruk, Cursed Huntsman": 1,
|
||||||
|
"Gilded Goose": 1,
|
||||||
|
"Golgari Rot Farm": 1,
|
||||||
|
"Golgari Signet": 1,
|
||||||
|
"Gourmand's Talent": 1,
|
||||||
|
"Grim Backwoods": 1,
|
||||||
|
"Haunted Mire": 1,
|
||||||
|
"Haywire Mite": 1,
|
||||||
|
"Hazel of the Rootbloom": 1,
|
||||||
|
"Hazel's Brewmaster": 1,
|
||||||
|
"Honored Dreyleader": 1,
|
||||||
|
"Idol of Oblivion": 1,
|
||||||
|
"Insatiable Frugivore": 1,
|
||||||
|
"Jungle Hollow": 1,
|
||||||
|
"Llanowar Wastes": 1,
|
||||||
|
"Maelstrom Pulse": 1,
|
||||||
|
"Maskwood Nexus": 1,
|
||||||
|
"Midgar, City of Mako // Reactor Raid": 1,
|
||||||
|
"Moldervine Reclamation": 1,
|
||||||
|
"Moonstone Eulogist": 1,
|
||||||
|
"Morbid Opportunist": 1,
|
||||||
|
"Nadier's Nightblade": 1,
|
||||||
|
"Necroblossom Snarl": 1,
|
||||||
|
"Nested Shambler": 1,
|
||||||
|
"Ogre Slumlord": 1,
|
||||||
|
"Oran-Rief, the Vastwood": 1,
|
||||||
|
"Path of Ancestry": 1,
|
||||||
|
"Plumb the Forbidden": 1,
|
||||||
|
"Poison-Tip Archer": 1,
|
||||||
|
"Prosperous Innkeeper": 1,
|
||||||
|
"Putrefy": 1,
|
||||||
|
"Ravenous Squirrel": 1,
|
||||||
|
"Rootcast Apprenticeship": 1,
|
||||||
|
"Saw in Half": 1,
|
||||||
|
"Scurry of Squirrels": 1,
|
||||||
|
"Second Harvest": 1,
|
||||||
|
"Shamanic Revelation": 1,
|
||||||
|
"Skullclamp": 1,
|
||||||
|
"Skyfisher Spider": 1,
|
||||||
|
"Sol Ring": 1,
|
||||||
|
"Squirrel Nest": 1,
|
||||||
|
"Squirrel Sovereign": 1,
|
||||||
|
"Swamp": 7,
|
||||||
|
"Swarmyard": 1,
|
||||||
|
"Swarmyard Massacre": 1,
|
||||||
|
"Sword of the Squeak": 1,
|
||||||
|
"Tainted Wood": 1,
|
||||||
|
"Talisman of Resilience": 1,
|
||||||
|
"Tear Asunder": 1,
|
||||||
|
"Temple of Malady": 1,
|
||||||
|
"Terramorphic Expanse": 1,
|
||||||
|
"The Odd Acorn Gang": 1,
|
||||||
|
"Tireless Provisioner": 1,
|
||||||
|
"Toski, Bearer of Secrets": 1,
|
||||||
|
"Tranquil Thicket": 1,
|
||||||
|
"Twilight Mire": 1,
|
||||||
|
"Viridescent Bog": 1,
|
||||||
|
"Windgrace's Judgment": 1,
|
||||||
|
"Woe Strider": 1,
|
||||||
|
"Wolfwillow Haven": 1,
|
||||||
|
"Woodland Cemetery": 1,
|
||||||
|
"Worthy Cost": 1,
|
||||||
|
"Zulaport Cutthroat": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
80
decks/palamecia.json
Normal file
80
decks/palamecia.json
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"name": "Palamecia",
|
||||||
|
"commander": "The Emperor of Palamecia // The Lord Master of Hell",
|
||||||
|
"colors": ["U", "R"],
|
||||||
|
"archetype": "Izzet Self-Mill Storm",
|
||||||
|
"cards": {
|
||||||
|
"Aetherize": 1,
|
||||||
|
"Arcane Signet": 1,
|
||||||
|
"Baron, Airship Kingdom": 1,
|
||||||
|
"Big Score": 1,
|
||||||
|
"Blasphemous Act": 1,
|
||||||
|
"Bond of Insight": 1,
|
||||||
|
"Careful Consideration": 1,
|
||||||
|
"Channeled Force": 1,
|
||||||
|
"Combat Tutorial": 1,
|
||||||
|
"Command Tower": 1,
|
||||||
|
"Consider": 1,
|
||||||
|
"Counterspell": 1,
|
||||||
|
"Curator's Ward": 1,
|
||||||
|
"Curiosity": 1,
|
||||||
|
"Cut Your Losses": 1,
|
||||||
|
"Decaying Time Loop": 1,
|
||||||
|
"Drake Umbra": 1,
|
||||||
|
"Drown in Dreams": 1,
|
||||||
|
"Elixir of Immortality": 1,
|
||||||
|
"Epic Experiment": 1,
|
||||||
|
"Ether": 1,
|
||||||
|
"Everflowing Chalice": 1,
|
||||||
|
"Experimental Overload": 1,
|
||||||
|
"Fact or Fiction": 1,
|
||||||
|
"Fateful Showdown": 1,
|
||||||
|
"Fire Magic": 1,
|
||||||
|
"Firemind Vessel": 1,
|
||||||
|
"Frostboil Snarl": 1,
|
||||||
|
"Full Throttle": 1,
|
||||||
|
"Gandalf's Sanction": 1,
|
||||||
|
"Hedron Archive": 1,
|
||||||
|
"Increasing Confusion": 1,
|
||||||
|
"Isengard Unleashed": 1,
|
||||||
|
"Island": 18,
|
||||||
|
"Izzet Signet": 1,
|
||||||
|
"Mana Geyser": 1,
|
||||||
|
"Mountain": 12,
|
||||||
|
"Mystic Confluence": 1,
|
||||||
|
"Ovika, Enigma Goliath": 1,
|
||||||
|
"Path of the Pyromancer": 1,
|
||||||
|
"Peter Parker's Camera": 1,
|
||||||
|
"Pinnacle Monk // Mystic Peak": 1,
|
||||||
|
"Pirate's Pillage": 1,
|
||||||
|
"Press the Enemy": 1,
|
||||||
|
"Protective Bubble": 1,
|
||||||
|
"Reliquary Tower": 1,
|
||||||
|
"Rewind": 2,
|
||||||
|
"Ring of the Lucii": 2,
|
||||||
|
"Rise from the Tides": 1,
|
||||||
|
"Sahagin": 1,
|
||||||
|
"Seize the Storm": 1,
|
||||||
|
"Shantotto, Tactician Magician": 2,
|
||||||
|
"Shivan Reef": 1,
|
||||||
|
"Snapcaster Mage": 1,
|
||||||
|
"Snort": 1,
|
||||||
|
"Sol Ring": 1,
|
||||||
|
"Spellheart Chimera": 1,
|
||||||
|
"Sulfur Falls": 1,
|
||||||
|
"Summons of Saruman": 1,
|
||||||
|
"Swiftfoot Boots": 1,
|
||||||
|
"Talrand, Sky Summoner": 1,
|
||||||
|
"Tellah, Great Sage": 1,
|
||||||
|
"Tezzeret's Gambit": 1,
|
||||||
|
"The Emperor of Palamecia // The Lord Master of Hell": 1,
|
||||||
|
"The Rollercrusher Ride": 1,
|
||||||
|
"Thousand-Year Storm": 1,
|
||||||
|
"Traumatize": 1,
|
||||||
|
"Ultros, Obnoxious Octopus": 1,
|
||||||
|
"Ur-Golem's Eye": 2,
|
||||||
|
"Vivi Ornitier": 1,
|
||||||
|
"Whispersilk Cloak": 1,
|
||||||
|
"Zephid's Embrace": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
104
decks/yshtola.json
Normal file
104
decks/yshtola.json
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
{
|
||||||
|
"name": "Yshtola",
|
||||||
|
"commander": "Y'shtola, Night's Blessed",
|
||||||
|
"colors": ["U", "B", "W"],
|
||||||
|
"archetype": "Esper Stax Drain",
|
||||||
|
"cards": {
|
||||||
|
"Amazing Acrobatics": 1,
|
||||||
|
"Arcane Sanctum": 1,
|
||||||
|
"Archaeomancer's Map": 1,
|
||||||
|
"Archmage Emeritus": 1,
|
||||||
|
"Archmage of Runes": 1,
|
||||||
|
"Ash Barrens": 1,
|
||||||
|
"Authority of the Consuls": 1,
|
||||||
|
"Avatar's Wrath": 1,
|
||||||
|
"Baleful Strix": 1,
|
||||||
|
"Banishing Light": 1,
|
||||||
|
"Black Mage's Rod": 1,
|
||||||
|
"Blitzball": 1,
|
||||||
|
"Blue Mage's Cane": 1,
|
||||||
|
"Brainstorm": 1,
|
||||||
|
"Champions from Beyond": 1,
|
||||||
|
"Choked Estuary": 1,
|
||||||
|
"Circle of Power": 1,
|
||||||
|
"Cleansing Nova": 1,
|
||||||
|
"Command Beacon": 1,
|
||||||
|
"Contaminated Aquifer": 1,
|
||||||
|
"Cornered by Black Mages": 1,
|
||||||
|
"Curiosity": 1,
|
||||||
|
"Dancer's Chakrams": 1,
|
||||||
|
"Darkwater Catacombs": 1,
|
||||||
|
"Demolition Field": 1,
|
||||||
|
"Desolate Mire": 1,
|
||||||
|
"Dig Through Time": 1,
|
||||||
|
"Dovin's Veto": 1,
|
||||||
|
"Drowned Catacomb": 1,
|
||||||
|
"Emet-Selch of the Third Seat": 1,
|
||||||
|
"Evolving Wilds": 1,
|
||||||
|
"Exotic Orchard": 1,
|
||||||
|
"Exsanguinate": 1,
|
||||||
|
"Fandaniel, Telophoroi Ascian": 1,
|
||||||
|
"Fetid Heath": 1,
|
||||||
|
"Fight On!": 1,
|
||||||
|
"Final Judgment": 1,
|
||||||
|
"Firemind Vessel": 1,
|
||||||
|
"Frantic Search": 1,
|
||||||
|
"Glacial Fortress": 1,
|
||||||
|
"Hedron Archive": 1,
|
||||||
|
"Idyllic Beachfront": 1,
|
||||||
|
"Island": 2,
|
||||||
|
"Isolated Chapel": 1,
|
||||||
|
"Krile Baldesion": 1,
|
||||||
|
"Lethal Scheme": 1,
|
||||||
|
"Multiversal Passage": 1,
|
||||||
|
"Murderous Rider // Swift End": 1,
|
||||||
|
"Observed Stasis": 1,
|
||||||
|
"Overkill": 1,
|
||||||
|
"Papalymo Totolymo": 1,
|
||||||
|
"Path of Ancestry": 1,
|
||||||
|
"Plains": 3,
|
||||||
|
"Port Town": 1,
|
||||||
|
"Prairie Stream": 1,
|
||||||
|
"Propaganda": 1,
|
||||||
|
"Reaper's Scythe": 1,
|
||||||
|
"Relic of Legends": 1,
|
||||||
|
"Reliquary Tower": 1,
|
||||||
|
"Rewind": 1,
|
||||||
|
"Ring of the Lucii": 1,
|
||||||
|
"Risky Research": 1,
|
||||||
|
"Rite of Replication": 1,
|
||||||
|
"Riverwalk Technique": 1,
|
||||||
|
"Scavenger Grounds": 1,
|
||||||
|
"School Daze": 1,
|
||||||
|
"Shineshadow Snarl": 1,
|
||||||
|
"Skycloud Expanse": 1,
|
||||||
|
"Snuff Out": 1,
|
||||||
|
"Sol Ring": 1,
|
||||||
|
"Static Snare": 1,
|
||||||
|
"Stuck in Summoner's Sanctum": 1,
|
||||||
|
"Sublime Epiphany": 1,
|
||||||
|
"Sunken Hollow": 1,
|
||||||
|
"Sunken Ruins": 1,
|
||||||
|
"Sunlit Marsh": 1,
|
||||||
|
"Swamp": 2,
|
||||||
|
"Swords to Plowshares": 1,
|
||||||
|
"Syphon Mind": 1,
|
||||||
|
"Talisman of Hierarchy": 1,
|
||||||
|
"Temple of the False God": 1,
|
||||||
|
"Thought Vessel": 1,
|
||||||
|
"Torrential Gearhulk": 1,
|
||||||
|
"Transpose": 1,
|
||||||
|
"Ultima": 1,
|
||||||
|
"Underground River": 1,
|
||||||
|
"Ur-Golem's Eye": 1,
|
||||||
|
"Urza's Saga": 1,
|
||||||
|
"Vanish from Sight": 1,
|
||||||
|
"Vincent's Limit Break": 1,
|
||||||
|
"Vindicate": 1,
|
||||||
|
"Void Rend": 1,
|
||||||
|
"Vote Out": 1,
|
||||||
|
"White Auracite": 1,
|
||||||
|
"Withering Torment": 1,
|
||||||
|
"Y'shtola, Night's Blessed": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
435
docs/plans/2026-02-19-auto-docs.md
Normal file
435
docs/plans/2026-02-19-auto-docs.md
Normal file
@@ -0,0 +1,435 @@
|
|||||||
|
# Auto-updating Documentation Implementation Plan
|
||||||
|
|
||||||
|
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
|
||||||
|
|
||||||
|
**Goal:** Create README.md and AGENTS.md that auto-update via git pre-commit hook when files change.
|
||||||
|
|
||||||
|
**Architecture:** Template files with placeholders + Python generator script that reads deck/collection data + pre-commit hook that runs on every commit.
|
||||||
|
|
||||||
|
**Tech Stack:** Python 3 stdlib (json, pathlib, argparse)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Task 1: Create Template Files
|
||||||
|
|
||||||
|
**Files:**
|
||||||
|
- Create: `docs/templates/README.template.md`
|
||||||
|
- Create: `docs/templates/AGENTS.template.md`
|
||||||
|
|
||||||
|
**Step 1: Create docs/templates directory**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p docs/templates
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 2: Create README template**
|
||||||
|
|
||||||
|
Create `docs/templates/README.template.md`:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# MTG EDH Deck Manager
|
||||||
|
|
||||||
|
Command-line toolkit for managing Magic: The Gathering Commander (EDH) decks using the Scryfall API.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone <repo-url>
|
||||||
|
cd Decks
|
||||||
|
```
|
||||||
|
|
||||||
|
No dependencies required - pure Python 3 standard library.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Hydrate a Collection
|
||||||
|
|
||||||
|
Fetch card data from Scryfall for a decklist:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python hydrate.py hydrate collection/decklist.txt -o collection_hydrated/ -c card_cache.json
|
||||||
|
```
|
||||||
|
|
||||||
|
### Create a New Deck
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python hydrate.py new my_deck
|
||||||
|
```
|
||||||
|
|
||||||
|
### Analyze Decks
|
||||||
|
|
||||||
|
Find upgrade options from your collection:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python scripts/analyze_decks.py --collection collection_hydrated/deck.json --deck-dir decks/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Find Synergies
|
||||||
|
|
||||||
|
Search for cards by keywords, colors, and type:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Find landfall cards in Simic colors
|
||||||
|
python scripts/find_synergies.py --collection collection_hydrated/deck.json --colors U G --keywords landfall
|
||||||
|
|
||||||
|
# Find Bird creatures in Bant colors
|
||||||
|
python scripts/find_synergies.py --collection collection_hydrated/deck.json --colors U G W --creature-type Bird
|
||||||
|
|
||||||
|
# Find instants with CMC 2 or less
|
||||||
|
python scripts/find_synergies.py --collection collection_hydrated/deck.json --type instant --cmc-max 2
|
||||||
|
```
|
||||||
|
|
||||||
|
### Generate Reports
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python scripts/deck_report.py --collection collection_hydrated/deck.json --decks-dir decks/ --output report.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## Decks
|
||||||
|
|
||||||
|
{{DECK_TABLE}}
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
|
||||||
|
1. **Import** - Place text decklists in `collection/`
|
||||||
|
2. **Hydrate** - Run `hydrate.py` to fetch Scryfall data → `collection_hydrated/`
|
||||||
|
3. **Define** - Create deck JSON files in `decks/`
|
||||||
|
4. **Analyze** - Run `analyze_decks.py` to find upgrade options
|
||||||
|
5. **Report** - Use `deck_report.py` for markdown summaries
|
||||||
|
|
||||||
|
## Collection Stats
|
||||||
|
|
||||||
|
{{COLLECTION_STATS}}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*This file is auto-generated. Edit `docs/templates/README.template.md` instead.*
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 3: Create AGENTS template**
|
||||||
|
|
||||||
|
Create `docs/templates/AGENTS.template.md`:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# AGENTS.md
|
||||||
|
|
||||||
|
Guide for AI assistants working on this codebase.
|
||||||
|
|
||||||
|
## Build/Verify Commands
|
||||||
|
|
||||||
|
This project has no external dependencies or test framework.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# No lint/typecheck commands currently
|
||||||
|
# Verify scripts work by running them:
|
||||||
|
python hydrate.py --help
|
||||||
|
python scripts/analyze_decks.py --help
|
||||||
|
```
|
||||||
|
|
||||||
|
## Code Style
|
||||||
|
|
||||||
|
- **Language:** Python 3 (stdlib only, no external packages)
|
||||||
|
- **Formatting:** 4-space indent, max line length ~100
|
||||||
|
- **Imports:** Standard library only (argparse, json, pathlib, urllib, re, sys, os, time)
|
||||||
|
- **CLI:** Use `argparse` with subparsers for multi-command tools
|
||||||
|
- **Error handling:** Print to stderr, use sys.exit(1) for failures
|
||||||
|
- **Docstrings:** Triple-quoted at module and function level with usage examples
|
||||||
|
- **Type hints:** Optional but encouraged for complex functions
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
├── hydrate.py # Main CLI - fetches card data from Scryfall
|
||||||
|
├── card_cache.json # Local cache of Scryfall card data
|
||||||
|
├── deck_analysis.json # Analysis output
|
||||||
|
├── collection/ # Raw decklist text files
|
||||||
|
├── collection_hydrated/ # Enriched card data by type
|
||||||
|
│ ├── deck.json # All cards combined
|
||||||
|
│ ├── commander.json
|
||||||
|
│ ├── creatures.json
|
||||||
|
│ ├── instants.json
|
||||||
|
│ ├── sorceries.json
|
||||||
|
│ ├── artifacts.json
|
||||||
|
│ ├── enchantments.json
|
||||||
|
│ ├── lands.json
|
||||||
|
│ └── planeswalkers.json
|
||||||
|
├── decks/ # Deck definitions (JSON)
|
||||||
|
│ └── <deck_name>.json # name, commander, colors, archetype, cards
|
||||||
|
├── scripts/
|
||||||
|
│ ├── analyze_decks.py # Find upgrade options for decks
|
||||||
|
│ ├── find_synergies.py # Search for synergistic cards
|
||||||
|
│ ├── parse_deck.py # Parse text decklists to JSON
|
||||||
|
│ └── deck_report.py # Generate markdown reports
|
||||||
|
└── docs/
|
||||||
|
└── templates/ # Documentation templates
|
||||||
|
```
|
||||||
|
|
||||||
|
## Data Formats
|
||||||
|
|
||||||
|
### Deck JSON (`decks/*.json`)
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "Deck Name",
|
||||||
|
"commander": "Commander Name",
|
||||||
|
"colors": ["U", "G", "W"],
|
||||||
|
"archetype": "Theme Description",
|
||||||
|
"cards": {
|
||||||
|
"Card Name": count,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Card Data (`collection_hydrated/*.json`)
|
||||||
|
|
||||||
|
Array of card objects with Scryfall fields:
|
||||||
|
- `name`, `mana_cost`, `cmc`, `colors`, `color_identity`
|
||||||
|
- `type_line`, `oracle_text`, `power`, `toughness`, `loyalty`
|
||||||
|
- `scryfall_uri`, `count`
|
||||||
|
|
||||||
|
## Extension Guide
|
||||||
|
|
||||||
|
### Adding a New Deck
|
||||||
|
|
||||||
|
1. Create `decks/<name>.json` with required fields
|
||||||
|
2. Run `python scripts/update_docs.py` to regenerate documentation
|
||||||
|
|
||||||
|
### Adding a New Script
|
||||||
|
|
||||||
|
1. Create `scripts/<name>.py` with argparse CLI
|
||||||
|
2. Follow existing patterns: `load_collection()`, argparse with --help
|
||||||
|
3. Update README template with usage example
|
||||||
|
4. Run `python scripts/update_docs.py`
|
||||||
|
|
||||||
|
### Modifying Deck Analysis
|
||||||
|
|
||||||
|
- `scripts/analyze_decks.py`: Core logic for finding upgrades
|
||||||
|
- Color identity matching uses `color_identity` field from Scryfall
|
||||||
|
- Cards are categorized by `type_line`
|
||||||
|
|
||||||
|
## Current Decks
|
||||||
|
|
||||||
|
{{DECK_TABLE}}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 4: Commit templates**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add docs/templates/
|
||||||
|
git commit -m "Add documentation templates"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Task 2: Create update_docs.py Script
|
||||||
|
|
||||||
|
**Files:**
|
||||||
|
- Create: `scripts/update_docs.py`
|
||||||
|
|
||||||
|
**Step 1: Create the generator script**
|
||||||
|
|
||||||
|
Create `scripts/update_docs.py`:
|
||||||
|
|
||||||
|
```python
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Generate README.md and AGENTS.md from templates.
|
||||||
|
Usage:
|
||||||
|
python scripts/update_docs.py
|
||||||
|
"""
|
||||||
|
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
SCRIPT_DIR = Path(__file__).parent
|
||||||
|
PROJECT_ROOT = SCRIPT_DIR.parent
|
||||||
|
TEMPLATES_DIR = PROJECT_ROOT / "docs" / "templates"
|
||||||
|
DECKS_DIR = PROJECT_ROOT / "decks"
|
||||||
|
COLLECTION_DIR = PROJECT_ROOT / "collection_hydrated"
|
||||||
|
|
||||||
|
|
||||||
|
def load_decks() -> list[dict]:
|
||||||
|
"""Load all deck JSON files."""
|
||||||
|
decks = []
|
||||||
|
if DECKS_DIR.exists():
|
||||||
|
for path in sorted(DECKS_DIR.glob("*.json")):
|
||||||
|
with open(path, "r", encoding="utf-8") as f:
|
||||||
|
data = json.load(f)
|
||||||
|
data["filename"] = path.stem
|
||||||
|
decks.append(data)
|
||||||
|
return decks
|
||||||
|
|
||||||
|
|
||||||
|
def load_collection_stats() -> dict:
|
||||||
|
"""Get collection statistics."""
|
||||||
|
stats = {
|
||||||
|
"total_cards": 0,
|
||||||
|
"unique_cards": 0,
|
||||||
|
"by_type": {}
|
||||||
|
}
|
||||||
|
deck_file = COLLECTION_DIR / "deck.json"
|
||||||
|
if deck_file.exists():
|
||||||
|
with open(deck_file, "r", encoding="utf-8") as f:
|
||||||
|
cards = json.load(f)
|
||||||
|
stats["unique_cards"] = len(cards)
|
||||||
|
stats["total_cards"] = sum(c.get("count", 1) for c in cards)
|
||||||
|
for category in ["creatures", "instants", "sorceries", "artifacts", "enchantments", "lands", "planeswalkers"]:
|
||||||
|
cat_file = COLLECTION_DIR / f"{category}.json"
|
||||||
|
if cat_file.exists():
|
||||||
|
with open(cat_file, "r", encoding="utf-8") as f:
|
||||||
|
cards = json.load(f)
|
||||||
|
stats["by_type"][category] = len(cards)
|
||||||
|
return stats
|
||||||
|
|
||||||
|
|
||||||
|
def generate_deck_table(decks: list[dict]) -> str:
|
||||||
|
"""Generate markdown table of decks."""
|
||||||
|
if not decks:
|
||||||
|
return "*No decks defined yet.*"
|
||||||
|
lines = ["| Deck | Colors | Commander | Archetype |", "|------|--------|-----------|-----------|"]
|
||||||
|
color_map = {"W": "White", "U": "Blue", "B": "Black", "R": "Red", "G": "Green"}
|
||||||
|
for deck in decks:
|
||||||
|
name = deck.get("name", deck.get("filename", "Unknown"))
|
||||||
|
colors = deck.get("colors", [])
|
||||||
|
color_str = "".join(colors) if colors else "Colorless"
|
||||||
|
commander = deck.get("commander", "Unknown")
|
||||||
|
archetype = deck.get("archetype", "-")
|
||||||
|
lines.append(f"| {name} | {color_str} | {commander} | {archetype} |")
|
||||||
|
return "\n".join(lines)
|
||||||
|
|
||||||
|
|
||||||
|
def generate_collection_stats(stats: dict) -> str:
|
||||||
|
"""Generate collection statistics section."""
|
||||||
|
lines = [f"- **Total cards:** {stats['total_cards']}", f"- **Unique cards:** {stats['unique_cards']}"]
|
||||||
|
if stats["by_type"]:
|
||||||
|
lines.append("- **By type:**")
|
||||||
|
for category, count in sorted(stats["by_type"].items()):
|
||||||
|
lines.append(f" - {category.title()}: {count}")
|
||||||
|
return "\n".join(lines)
|
||||||
|
|
||||||
|
|
||||||
|
def generate_docs() -> None:
|
||||||
|
"""Generate README.md and AGENTS.md from templates."""
|
||||||
|
decks = load_decks()
|
||||||
|
stats = load_collection_stats()
|
||||||
|
deck_table = generate_deck_table(decks)
|
||||||
|
collection_stats = generate_collection_stats(stats)
|
||||||
|
|
||||||
|
for template_name in ["README.template.md", "AGENTS.template.md"]:
|
||||||
|
template_path = TEMPLATES_DIR / template_name
|
||||||
|
if not template_path.exists():
|
||||||
|
print(f"Template not found: {template_path}")
|
||||||
|
continue
|
||||||
|
with open(template_path, "r", encoding="utf-8") as f:
|
||||||
|
content = f.read()
|
||||||
|
content = content.replace("{{DECK_TABLE}}", deck_table)
|
||||||
|
content = content.replace("{{COLLECTION_STATS}}", collection_stats)
|
||||||
|
output_name = template_name.replace(".template", "")
|
||||||
|
output_path = PROJECT_ROOT / output_name
|
||||||
|
with open(output_path, "w", encoding="utf-8") as f:
|
||||||
|
f.write(content)
|
||||||
|
print(f"Generated: {output_path}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
generate_docs()
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 2: Test the script**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python scripts/update_docs.py
|
||||||
|
```
|
||||||
|
|
||||||
|
Expected: Creates README.md and AGENTS.md in project root
|
||||||
|
|
||||||
|
**Step 3: Verify generated files**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ls -la README.md AGENTS.md
|
||||||
|
head -20 README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 4: Commit the script**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add scripts/update_docs.py README.md AGENTS.md
|
||||||
|
git commit -m "Add update_docs.py and generate initial documentation"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Task 3: Create Pre-commit Hook
|
||||||
|
|
||||||
|
**Files:**
|
||||||
|
- Create: `.git/hooks/pre-commit`
|
||||||
|
|
||||||
|
**Step 1: Create the hook**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cat > .git/hooks/pre-commit << 'EOF'
|
||||||
|
#!/bin/bash
|
||||||
|
# Auto-update documentation on commit
|
||||||
|
|
||||||
|
python scripts/update_docs.py
|
||||||
|
|
||||||
|
if [ -f README.md ]; then
|
||||||
|
git add README.md
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f AGENTS.md ]; then
|
||||||
|
git add AGENTS.md
|
||||||
|
fi
|
||||||
|
EOF
|
||||||
|
chmod +x .git/hooks/pre-commit
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 2: Test the hook**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Make a small change to trigger the hook
|
||||||
|
echo "# test" >> hydrate.py
|
||||||
|
git add hydrate.py
|
||||||
|
git commit -m "Test pre-commit hook"
|
||||||
|
```
|
||||||
|
|
||||||
|
Expected: Hook runs, updates docs if needed, includes them in commit
|
||||||
|
|
||||||
|
**Step 3: Verify hook worked**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git log -1 --stat
|
||||||
|
```
|
||||||
|
|
||||||
|
Expected: README.md and AGENTS.md may appear in commit if changed
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Task 4: Cleanup and Final Commit
|
||||||
|
|
||||||
|
**Step 1: Remove test change if added**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# If you added the test line, revert it:
|
||||||
|
git checkout hydrate.py
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 2: Make a clean commit documenting the hook**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add .git/hooks/pre-commit
|
||||||
|
git commit -m "Add pre-commit hook for auto-updating documentation"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Success Criteria
|
||||||
|
|
||||||
|
- [ ] `README.md` exists with deck table and usage docs
|
||||||
|
- [ ] `AGENTS.md` exists with build commands and project structure
|
||||||
|
- [ ] `scripts/update_docs.py` generates both files from templates
|
||||||
|
- [ ] Pre-commit hook runs and stages updated docs
|
||||||
|
- [ ] Templates are editable without touching generated files
|
||||||
174
scripts/analyze_decks.py
Normal file
174
scripts/analyze_decks.py
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Analyze decks against a hydrated collection to find upgrade options.
|
||||||
|
Usage:
|
||||||
|
python analyze_decks.py --collection collection_hydrated/deck.json --decks deck1.json deck2.json ...
|
||||||
|
python analyze_decks.py --collection collection_hydrated/deck.json --deck-dir decks/
|
||||||
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
def load_collection(path: str) -> dict:
|
||||||
|
"""Load hydrated collection JSON."""
|
||||||
|
with open(path, 'r') as f:
|
||||||
|
cards = json.load(f)
|
||||||
|
return {c['name']: c for c in cards}
|
||||||
|
|
||||||
|
|
||||||
|
def load_deck(path: str) -> dict:
|
||||||
|
"""Load deck JSON (from parse_deck.py output or deck.json format)."""
|
||||||
|
with open(path, 'r') as f:
|
||||||
|
data = json.load(f)
|
||||||
|
if 'cards' in data:
|
||||||
|
return data['cards']
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def get_color_identity(card: dict) -> set:
|
||||||
|
"""Get color identity as a set."""
|
||||||
|
return set(card.get('color_identity', []))
|
||||||
|
|
||||||
|
|
||||||
|
def matches_colors(card_identity: set, deck_colors: set) -> bool:
|
||||||
|
"""Check if card identity fits within deck colors."""
|
||||||
|
return card_identity <= deck_colors or not card_identity
|
||||||
|
|
||||||
|
|
||||||
|
def find_upgrades(collection: dict[str, dict], deck_cards: dict, all_deck_cards: set,
|
||||||
|
deck_colors: set, archetype: str | None = None) -> dict:
|
||||||
|
"""Find potential upgrade cards for a deck."""
|
||||||
|
available = set(collection.keys()) - all_deck_cards
|
||||||
|
upgrades = {
|
||||||
|
'creatures': [],
|
||||||
|
'instants': [],
|
||||||
|
'sorceries': [],
|
||||||
|
'artifacts': [],
|
||||||
|
'enchantments': [],
|
||||||
|
'lands': [],
|
||||||
|
'other': []
|
||||||
|
}
|
||||||
|
|
||||||
|
for name in available:
|
||||||
|
card = collection.get(name, {})
|
||||||
|
if not card:
|
||||||
|
continue
|
||||||
|
|
||||||
|
ci = get_color_identity(card)
|
||||||
|
if not matches_colors(ci, deck_colors):
|
||||||
|
continue
|
||||||
|
|
||||||
|
type_line = card.get('type_line', '').lower() if card.get('type_line') else ''
|
||||||
|
entry = {
|
||||||
|
'name': name,
|
||||||
|
'mana_cost': card.get('mana_cost', ''),
|
||||||
|
'cmc': card.get('cmc', 0),
|
||||||
|
'type_line': card.get('type_line', ''),
|
||||||
|
'oracle_text': card.get('oracle_text', ''),
|
||||||
|
'count': card.get('count', 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
if 'creature' in type_line:
|
||||||
|
upgrades['creatures'].append(entry)
|
||||||
|
elif 'instant' in type_line:
|
||||||
|
upgrades['instants'].append(entry)
|
||||||
|
elif 'sorcery' in type_line:
|
||||||
|
upgrades['sorceries'].append(entry)
|
||||||
|
elif 'artifact' in type_line:
|
||||||
|
upgrades['artifacts'].append(entry)
|
||||||
|
elif 'enchantment' in type_line:
|
||||||
|
upgrades['enchantments'].append(entry)
|
||||||
|
elif 'land' in type_line:
|
||||||
|
upgrades['lands'].append(entry)
|
||||||
|
else:
|
||||||
|
upgrades['other'].append(entry)
|
||||||
|
|
||||||
|
return upgrades
|
||||||
|
|
||||||
|
|
||||||
|
def find_synergies(collection: dict, available: set, deck_colors: set,
|
||||||
|
keywords: list) -> list:
|
||||||
|
"""Find cards with specific keyword synergies."""
|
||||||
|
synergies = []
|
||||||
|
for name in available:
|
||||||
|
card = collection.get(name, {})
|
||||||
|
if not card:
|
||||||
|
continue
|
||||||
|
ci = get_color_identity(card)
|
||||||
|
if not matches_colors(ci, deck_colors):
|
||||||
|
continue
|
||||||
|
oracle = card.get('oracle_text', '').lower() if card.get('oracle_text') else ''
|
||||||
|
if any(kw.lower() in oracle for kw in keywords):
|
||||||
|
synergies.append({
|
||||||
|
'name': name,
|
||||||
|
'type_line': card.get('type_line', ''),
|
||||||
|
'mana_cost': card.get('mana_cost', ''),
|
||||||
|
'oracle_snippet': oracle[:100]
|
||||||
|
})
|
||||||
|
return synergies
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description='Analyze decks for upgrade options')
|
||||||
|
parser.add_argument('--collection', '-c', required=True, help='Hydrated collection JSON')
|
||||||
|
parser.add_argument('--decks', '-d', nargs='+', help='Deck JSON files')
|
||||||
|
parser.add_argument('--deck-dir', help='Directory containing deck JSON files')
|
||||||
|
parser.add_argument('--output', '-o', help='Output JSON file')
|
||||||
|
parser.add_argument('--keywords', '-k', nargs='+', help='Keywords to search for synergies')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
collection = load_collection(args.collection)
|
||||||
|
|
||||||
|
decks = {}
|
||||||
|
if args.decks:
|
||||||
|
for path in args.decks:
|
||||||
|
name = Path(path).stem
|
||||||
|
decks[name] = load_deck(path)
|
||||||
|
elif args.deck_dir:
|
||||||
|
for path in Path(args.deck_dir).glob('*.json'):
|
||||||
|
decks[path.stem] = load_deck(str(path))
|
||||||
|
else:
|
||||||
|
print("Error: Provide --decks or --deck-dir", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
all_deck_cards = set()
|
||||||
|
for deck_cards in decks.values():
|
||||||
|
all_deck_cards.update(deck_cards.keys())
|
||||||
|
|
||||||
|
results = {}
|
||||||
|
for deck_name, deck_cards in decks.items():
|
||||||
|
deck_colors = set()
|
||||||
|
for name in deck_cards:
|
||||||
|
card = collection.get(name, {})
|
||||||
|
deck_colors |= get_color_identity(card)
|
||||||
|
|
||||||
|
upgrades = find_upgrades(collection, deck_cards, all_deck_cards, deck_colors)
|
||||||
|
|
||||||
|
available = set(collection.keys()) - all_deck_cards
|
||||||
|
synergies = {}
|
||||||
|
if args.keywords:
|
||||||
|
synergies = find_synergies(collection, available, deck_colors, args.keywords)
|
||||||
|
|
||||||
|
results[deck_name] = {
|
||||||
|
'total_cards': sum(deck_cards.values()),
|
||||||
|
'unique_cards': len(deck_cards),
|
||||||
|
'color_identity': list(deck_colors),
|
||||||
|
'available_upgrades': {k: len(v) for k, v in upgrades.items()},
|
||||||
|
'upgrades': upgrades,
|
||||||
|
'synergies': synergies
|
||||||
|
}
|
||||||
|
|
||||||
|
output = json.dumps(results, indent=2)
|
||||||
|
if args.output:
|
||||||
|
with open(args.output, 'w') as f:
|
||||||
|
f.write(output)
|
||||||
|
else:
|
||||||
|
print(output)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
72
scripts/deck_report.py
Normal file
72
scripts/deck_report.py
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Generate a deck upgrade report comparing collection to existing decks.
|
||||||
|
Usage:
|
||||||
|
python deck_report.py --collection collection_hydrated/deck.json --decks-dir decks/ --output report.md
|
||||||
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
def load_collection(path: str) -> dict:
|
||||||
|
with open(path, 'r') as f:
|
||||||
|
cards = json.load(f)
|
||||||
|
return {c['name']: c for c in cards}
|
||||||
|
|
||||||
|
|
||||||
|
def load_deck(path: str) -> dict:
|
||||||
|
with open(path, 'r') as f:
|
||||||
|
data = json.load(f)
|
||||||
|
if 'cards' in data:
|
||||||
|
return data
|
||||||
|
return {'cards': data, 'name': Path(path).stem}
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description='Generate deck upgrade report')
|
||||||
|
parser.add_argument('--collection', '-c', required=True)
|
||||||
|
parser.add_argument('--decks-dir', '-d', required=True)
|
||||||
|
parser.add_argument('--output', '-o', required=True)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
collection = load_collection(args.collection)
|
||||||
|
decks = []
|
||||||
|
for path in Path(args.decks_dir).glob('*.json'):
|
||||||
|
decks.append(load_deck(str(path)))
|
||||||
|
|
||||||
|
# Find all cards in decks
|
||||||
|
all_deck_cards = set()
|
||||||
|
for deck in decks:
|
||||||
|
all_deck_cards.update(deck['cards'].keys())
|
||||||
|
|
||||||
|
available = set(collection.keys()) - all_deck_cards
|
||||||
|
|
||||||
|
report = []
|
||||||
|
report.append("# Deck Upgrade Report\n")
|
||||||
|
report.append(f"Collection size: {len(collection)} cards")
|
||||||
|
report.append(f"Cards in decks: {len(all_deck_cards)}")
|
||||||
|
report.append(f"Available for upgrades: {len(available)}\n")
|
||||||
|
|
||||||
|
for deck in decks:
|
||||||
|
deck_name = deck.get('name', 'Unknown')
|
||||||
|
deck_cards = deck['cards']
|
||||||
|
deck_colors = set()
|
||||||
|
for name in deck_cards:
|
||||||
|
card = collection.get(name, {})
|
||||||
|
ci = card.get('color_identity', [])
|
||||||
|
deck_colors.update(ci)
|
||||||
|
|
||||||
|
report.append(f"\n---\n## {deck_name}\n")
|
||||||
|
report.append(f"**Colors:** {''.join(sorted(deck_colors))}")
|
||||||
|
report.append(f"**Total cards:** {sum(deck_cards.values())}")
|
||||||
|
report.append(f"**Unique cards:** {len(deck_cards)}\n")
|
||||||
|
|
||||||
|
with open(args.output, 'w') as f:
|
||||||
|
f.write('\n'.join(report))
|
||||||
|
print(f"Report saved to {args.output}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
119
scripts/find_synergies.py
Normal file
119
scripts/find_synergies.py
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Find cards with specific synergies from a hydrated collection.
|
||||||
|
Usage:
|
||||||
|
python find_synergies.py --collection collection_hydrated/deck.json --colors U R --keywords "landfall" "enter the battlefield"
|
||||||
|
python find_synergies.py --collection collection_hydrated/deck.json --colors U R --creature-type Bird
|
||||||
|
python find_synergies.py --collection collection_hydrated/deck.json --colors U R --cmc-min 4 --type instant
|
||||||
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
|
||||||
|
def load_collection(path: str) -> dict:
|
||||||
|
"""Load hydrated collection JSON."""
|
||||||
|
with open(path, 'r') as f:
|
||||||
|
cards = json.load(f)
|
||||||
|
return {c['name']: c for c in cards}
|
||||||
|
|
||||||
|
|
||||||
|
def matches_colors(card_identity: set, allowed_colors: set) -> bool:
|
||||||
|
"""Check if card identity fits within allowed colors."""
|
||||||
|
if not card_identity:
|
||||||
|
return True
|
||||||
|
return card_identity <= allowed_colors
|
||||||
|
|
||||||
|
|
||||||
|
def extract_creature_types(type_line: str) -> list:
|
||||||
|
"""Extract creature types from type line."""
|
||||||
|
if not type_line:
|
||||||
|
return []
|
||||||
|
parts = type_line.split('—')
|
||||||
|
if len(parts) < 2:
|
||||||
|
return []
|
||||||
|
types_part = parts[1].strip()
|
||||||
|
return [t.strip().lower() for t in types_part.split()]
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description='Find synergistic cards in collection')
|
||||||
|
parser.add_argument('--collection', '-c', required=True, help='Hydrated collection JSON')
|
||||||
|
parser.add_argument('--colors', nargs='+', default=[], help='Allowed colors (e.g., U R for Izzet)')
|
||||||
|
parser.add_argument('--exclude', nargs='+', default=[], help='Cards to exclude (already in deck)')
|
||||||
|
parser.add_argument('--keywords', '-k', nargs='+', help='Keywords to search in oracle text')
|
||||||
|
parser.add_argument('--creature-type', '-t', help='Creature type to search for')
|
||||||
|
parser.add_argument('--type', help='Card type to filter (creature, instant, sorcery, etc.)')
|
||||||
|
parser.add_argument('--cmc-min', type=int, help='Minimum CMC')
|
||||||
|
parser.add_argument('--cmc-max', type=int, help='Maximum CMC')
|
||||||
|
parser.add_argument('--output', '-o', help='Output JSON file')
|
||||||
|
parser.add_argument('--format', choices=['json', 'text'], default='text', help='Output format')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
collection = load_collection(args.collection)
|
||||||
|
allowed_colors = set(c.upper() for c in args.colors)
|
||||||
|
exclude = set(args.exclude)
|
||||||
|
|
||||||
|
matches = []
|
||||||
|
for name, card in collection.items():
|
||||||
|
if name in exclude:
|
||||||
|
continue
|
||||||
|
|
||||||
|
ci = set(card.get('color_identity', []))
|
||||||
|
if not matches_colors(ci, allowed_colors):
|
||||||
|
continue
|
||||||
|
|
||||||
|
type_line = card.get('type_line', '').lower() if card.get('type_line') else ''
|
||||||
|
|
||||||
|
if args.type and args.type.lower() not in type_line:
|
||||||
|
continue
|
||||||
|
|
||||||
|
cmc = card.get('cmc', 0) or 0
|
||||||
|
if args.cmc_min is not None and cmc < args.cmc_min:
|
||||||
|
continue
|
||||||
|
if args.cmc_max is not None and cmc > args.cmc_max:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if args.creature_type:
|
||||||
|
creature_types = extract_creature_types(type_line)
|
||||||
|
if args.creature_type.lower() not in creature_types:
|
||||||
|
continue
|
||||||
|
|
||||||
|
oracle = card.get('oracle_text', '').lower() if card.get('oracle_text') else ''
|
||||||
|
|
||||||
|
if args.keywords:
|
||||||
|
if not any(kw.lower() in oracle for kw in args.keywords):
|
||||||
|
continue
|
||||||
|
|
||||||
|
matches.append({
|
||||||
|
'name': name,
|
||||||
|
'mana_cost': card.get('mana_cost', ''),
|
||||||
|
'cmc': cmc,
|
||||||
|
'type_line': card.get('type_line', ''),
|
||||||
|
'colors': card.get('colors', []),
|
||||||
|
'color_identity': list(ci),
|
||||||
|
'oracle_text': card.get('oracle_text', ''),
|
||||||
|
'count': card.get('count', 1)
|
||||||
|
})
|
||||||
|
|
||||||
|
matches.sort(key=lambda x: (x['cmc'], x['name']))
|
||||||
|
|
||||||
|
if args.format == 'json':
|
||||||
|
output = json.dumps(matches, indent=2)
|
||||||
|
if args.output:
|
||||||
|
with open(args.output, 'w') as f:
|
||||||
|
f.write(output)
|
||||||
|
else:
|
||||||
|
print(output)
|
||||||
|
else:
|
||||||
|
for card in matches:
|
||||||
|
print(f"{card['mana_cost']} {card['name']} ({int(card['cmc'])}cmc) x{card['count']}")
|
||||||
|
if card['oracle_text']:
|
||||||
|
print(f" {card['oracle_text'][:100]}...")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
62
scripts/parse_deck.py
Normal file
62
scripts/parse_deck.py
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Parse deck list text files or pasted deck lists.
|
||||||
|
Usage:
|
||||||
|
python parse_deck.py <deck_file.txt>
|
||||||
|
python parse_deck.py --stdin < decklist.txt
|
||||||
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def parse_deck_text(text: str) -> dict[str, int]:
|
||||||
|
"""Parse deck list text into {card_name: count} dict."""
|
||||||
|
cards = {}
|
||||||
|
for line in text.strip().split('\n'):
|
||||||
|
line = line.strip()
|
||||||
|
if not line or line.startswith('#'):
|
||||||
|
continue
|
||||||
|
match = re.match(r'^(\d+)x?\s+(.+)$', line, re.IGNORECASE)
|
||||||
|
if match:
|
||||||
|
count = int(match.group(1))
|
||||||
|
name = match.group(2).strip()
|
||||||
|
cards[name] = count
|
||||||
|
return cards
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description='Parse deck list into JSON')
|
||||||
|
parser.add_argument('input', nargs='?', help='Deck list file')
|
||||||
|
parser.add_argument('--stdin', action='store_true', help='Read from stdin')
|
||||||
|
parser.add_argument('-o', '--output', help='Output JSON file')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if args.stdin:
|
||||||
|
text = sys.stdin.read()
|
||||||
|
elif args.input:
|
||||||
|
with open(args.input, 'r') as f:
|
||||||
|
text = f.read()
|
||||||
|
else:
|
||||||
|
parser.print_help()
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
cards = parse_deck_text(text)
|
||||||
|
result = {
|
||||||
|
'total_cards': sum(cards.values()),
|
||||||
|
'unique_cards': len(cards),
|
||||||
|
'cards': cards
|
||||||
|
}
|
||||||
|
|
||||||
|
output = json.dumps(result, indent=2)
|
||||||
|
if args.output:
|
||||||
|
with open(args.output, 'w') as f:
|
||||||
|
f.write(output)
|
||||||
|
else:
|
||||||
|
print(output)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user