From 2188582e1640b9041b38629cea05ae8b323fc67f Mon Sep 17 00:00:00 2001 From: Chris H Date: Thu, 3 Apr 2025 22:02:32 -0400 Subject: [PATCH] Add initial booster+set info for TDM --- forge-gui/res/blockdata/blocks.txt | 1 + forge-gui/res/draft/rankings/tdm.rnk | 287 ++++++++++++++++++ forge-gui/res/editions/Tarkir Dragonstorm.txt | 84 ++++- forge-gui/tools/RankingScraper.py | 2 +- 4 files changed, 363 insertions(+), 11 deletions(-) create mode 100644 forge-gui/res/draft/rankings/tdm.rnk diff --git a/forge-gui/res/blockdata/blocks.txt b/forge-gui/res/blockdata/blocks.txt index f36c6ad2a67..156cd04c2cd 100644 --- a/forge-gui/res/blockdata/blocks.txt +++ b/forge-gui/res/blockdata/blocks.txt @@ -140,3 +140,4 @@ Jumpstart 2025, -/2/J25, Meta-Choose(S(J25 Prideful)Prideful;S(J25 Giddyap)Giddy Pioneer Masters, 3/6/PIO, PIO Innistrad Remastered, 3/6/INR, INR Aetherdrift, 3/6/DFT, DFT +Tarkir Dragonstorm, 3/6/TDM, TDM diff --git a/forge-gui/res/draft/rankings/tdm.rnk b/forge-gui/res/draft/rankings/tdm.rnk new file mode 100644 index 00000000000..1ac875b703e --- /dev/null +++ b/forge-gui/res/draft/rankings/tdm.rnk @@ -0,0 +1,287 @@ +//Rank|Name|Rarity|Set +#1|Eerie Ultimatum|M|TDM +#2|Ruinous Ultimatum|M|TDM +#3|Elspeth, Storm Slayer|M|TDM +#4|Dragonback Assault|M|TDM +#5|Jeskai Revelation|M|TDM +#6|Ureni, the Song Unending|M|TDM +#7|Inspired Ultimatum|M|TDM +#8|Genesis Ultimatum|M|TDM +#9|Ugin, Eye of the Storms|M|TDM +#10|Marang River Regent|R|TDM +#11|Death Begets Life|M|TDM +#12|Roar of Endless Song|R|TDM +#13|Sinkhole Surveyor|R|TDM +#14|Stormscale Scion|M|TDM +#15|Barrensteppe Siege|R|TDM +#16|Neriv, Heart of the Storm|M|TDM +#17|Revival of the Ancestors|R|TDM +#18|Shiko, Paragon of the Way|M|TDM +#19|Mardu Siegebreaker|R|TDM +#20|Anafenza, Unyielding Lineage|R|TDM +#21|Clarion Conqueror|R|TDM +#22|Avenger of the Fallen|R|TDM +#23|Qarsi Revenant|R|TDM +#24|Scavenger Regent|R|TDM +#25|Bloomvine Regent|R|TDM +#26|Warden of the Grove|R|TDM +#27|All-Out Assault|M|TDM +#28|Betor, Kin to All|M|TDM +#29|Perennation|M|TDM +#30|Twinmaw Stormbrood|U|TDM +#31|Zurgo, Thunder's Decree|R|TDM +#32|Wayspeaker Bodyguard|U|TDM +#33|Ambling Stormshell|R|TDM +#34|Magmatic Hellkite|R|TDM +#35|Kishla Skimmer|U|TDM +#36|Sonic Shrieker|U|TDM +#37|Yathan Roadwatcher|R|TDM +#38|Sage of the Fang|U|TDM +#39|Lotuslight Dancers|R|TDM +#40|Sage of the Skies|R|TDM +#41|Teeming Dragonstorm|U|TDM +#42|Frostcliff Siege|R|TDM +#43|Hollowmurk Siege|R|TDM +#44|Rediscover the Way|R|TDM +#45|Severance Priest|R|TDM +#46|Skirmish Rhino|U|TDM +#47|Windcrag Siege|R|TDM +#48|Gurmag Rakshasa|U|TDM +#49|Strategic Betrayal|U|TDM +#50|Unsparing Boltcaster|U|TDM +#51|Zurgo's Vanguard|U|TDM +#52|Knockout Maneuver|U|TDM +#53|Defibrillating Current|U|TDM +#54|Herd Heirloom|R|TDM +#55|Lasyd Prowler|R|TDM +#56|Surrak, Elusive Hunter|R|TDM +#57|Bone-Cairn Butcher|U|TDM +#58|Disruptive Stormbrood|U|TDM +#59|Inevitable Defeat|R|TDM +#60|Hundred-Battle Veteran|U|TDM +#61|Salt Road Skirmish|U|TDM +#62|Stadium Headliner|R|TDM +#63|Traveling Botanist|U|TDM +#64|Dragonclaw Strike|U|TDM +#65|Loxodon Battle Priest|U|TDM +#66|Smile at Death|M|TDM +#67|Roiling Dragonstorm|U|TDM +#68|Taigam, Master Opportunist|M|TDM +#69|Cori-Steel Cutter|R|TDM +#70|Sunset Strikemaster|U|TDM +#71|Tersa Lightshatter|R|TDM +#72|Craterhoof Behemoth|M|TDM +#73|Cori Mountain Stalwart|U|TDM +#74|Fangkeeper's Familiar|R|TDM +#75|Felothar, Dawn of the Abzan|R|TDM +#76|Flamehold Grappler|R|TDM +#77|Jeskai Shrinekeeper|U|TDM +#78|Narset, Jeskai Waymaster|R|TDM +#79|Stalwart Successor|U|TDM +#80|Thunder of Unity|R|TDM +#81|Dragonfire Blade|R|TDM +#82|Stormbeacon Blade|U|TDM +#83|Focus the Mind|C|TDM +#84|Wingblade Disciple|U|TDM +#85|Alchemist's Assistant|U|TDM +#86|Sandskitter Outrider|C|TDM +#87|Overwhelming Surge|U|TDM +#88|Formation Breaker|U|TDM +#89|Trade Route Envoy|C|TDM +#90|Mammoth Bellow|U|TDM +#91|Mardu Devotee|C|TDM +#92|Sunpearl Kirin|U|TDM +#93|Voice of Victory|R|TDM +#94|Venerated Stormsinger|U|TDM +#95|Sarkhan, Dragon Ascendant|R|TDM +#96|Attuned Hunter|U|TDM +#97|Eshki Dragonclaw|R|TDM +#98|Frontline Rush|U|TDM +#99|Hardened Tactician|U|TDM +#100|Kheru Goldkeeper|U|TDM +#101|Marshal of the Lost|U|TDM +#102|Purging Stormbrood|U|TDM +#103|Temur Battlecrier|R|TDM +#104|Furious Forebear|U|TDM +#105|Constrictor Sage|U|TDM +#106|Adorned Crocodile|C|TDM +#107|Twin Bolt|C|TDM +#108|Inspirited Vanguard|U|TDM +#109|Sagu Pummeler|C|TDM +#110|Starry-Eyed Skyrider|U|TDM +#111|Static Snare|U|TDM +#112|Bewildering Blizzard|U|TDM +#113|Dragonologist|R|TDM +#114|Fresh Start|U|TDM +#115|Caustic Exhale|C|TDM +#116|Sidisi, Regent of the Mire|R|TDM +#117|Sagu Wildling|C|TDM +#118|Armament Dragon|U|TDM +#119|Awaken the Honored Dead|R|TDM +#120|Glacial Dragonhunt|U|TDM +#121|Karakyk Guardian|U|TDM +#122|Lie in Wait|U|TDM +#123|Runescale Stormbrood|U|TDM +#124|Teval, Arbiter of Virtue|M|TDM +#125|Poised Practitioner|C|TDM +#126|Iceridge Serpent|C|TDM +#127|Riverwalk Technique|C|TDM +#128|Aggressive Negotiations|C|TDM +#129|Nightblade Brigade|C|TDM +#130|Unburied Earthcarver|C|TDM +#131|Iridescent Tiger|U|TDM +#132|Shocking Sharpshooter|U|TDM +#133|Champion of Dusan|C|TDM +#134|Rainveil Rejuvenator|U|TDM +#135|Dalkovan Packbeasts|U|TDM +#136|Descendant of Storms|U|TDM +#137|Stormplain Detainment|C|TDM +#138|Kishla Trawlers|U|TDM +#139|Naga Fleshcrafter|R|TDM +#140|Molten Exhale|C|TDM +#141|War Effort|U|TDM +#142|Snakeskin Veil|C|TDM +#143|Jeskai Brushmaster|U|TDM +#144|Kin-Tree Severance|U|TDM +#145|Monastery Messenger|C|TDM +#146|New Way Forward|R|TDM +#147|Songcrafter Mage|R|TDM +#148|Great Arashin City|R|TDM +#149|Dalkovan Encampment|R|TDM +#150|Arashin Sunshield|C|TDM +#151|Kin-Tree Nurturer|C|TDM +#152|Rescue Leopard|C|TDM +#153|Ainok Wayfarer|C|TDM +#154|Dragon Sniper|U|TDM +#155|Duty Beyond Death|U|TDM +#156|Fortress Kin-Guard|C|TDM +#157|Riling Dawnbreaker|C|TDM +#158|Salt Road Packbeast|C|TDM +#159|Dirgur Island Dragon|C|TDM +#160|Ringing Strike Mastery|C|TDM +#161|Abzan Devotee|C|TDM +#162|Corroding Dragonstorm|U|TDM +#163|Dragon's Prey|C|TDM +#164|Channeled Dragonfire|U|TDM +#165|Dragonbroods' Relic|U|TDM +#166|Piercing Exhale|C|TDM +#167|Synchronized Charge|U|TDM +#168|Auroral Procession|U|TDM +#169|Glacierwood Siege|R|TDM +#170|Kotis, the Fangkeeper|R|TDM +#171|Abzan Monument|U|TDM +#172|Jeskai Monument|U|TDM +#173|Mardu Monument|U|TDM +#174|Sultai Monument|U|TDM +#175|Temur Monument|U|TDM +#176|Highspire Bell-Ringer|C|TDM +#177|Sibsig Appraiser|C|TDM +#178|Veteran Ice Climber|U|TDM +#179|Delta Bloodflies|C|TDM +#180|Fleeting Effigy|U|TDM +#181|Arid Mesa|M|TDM +#182|Marsh Flats|M|TDM +#183|Misty Rainforest|M|TDM +#184|Scalding Tarn|M|TDM +#185|Verdant Catacombs|M|TDM +#186|Bearer of Glory|C|TDM +#187|Coordinated Maneuver|C|TDM +#188|Rally the Monastery|U|TDM +#189|Ureni's Rebuff|U|TDM +#190|Alesha's Legacy|C|TDM +#191|Unrooted Ancestor|U|TDM +#192|Yathan Tombguard|U|TDM +#193|Equilibrium Adept|U|TDM +#194|Encroaching Dragonstorm|U|TDM +#195|Rite of Renewal|U|TDM +#196|Sarkhan's Resolve|C|TDM +#197|Effortless Master|U|TDM +#198|Host of the Hereafter|U|TDM +#199|Rakshasa's Bargain|U|TDM +#200|Riverwheel Sweep|U|TDM +#201|Whirlwing Stormbrood|U|TDM +#202|Cori Mountain Monastery|R|TDM +#203|Frontier Bivouac|U|TDM +#204|Kishla Village|R|TDM +#205|Mystic Monastery|U|TDM +#206|Nomad Outpost|U|TDM +#207|Opulent Palace|U|TDM +#208|Sandsteppe Citadel|U|TDM +#209|Wild Ride|C|TDM +#210|Jungle Hollow|C|TDM +#211|Dragonback Lancer|C|TDM +#212|Rebellious Strike|C|TDM +#213|Aegis Sculptor|U|TDM +#214|Agent of Kotis|C|TDM +#215|Snowmelt Stag|C|TDM +#216|Unending Whisper|C|TDM +#217|Winternight Stories|R|TDM +#218|Feral Deathgorger|C|TDM +#219|Shock Brigade|C|TDM +#220|Stormshriek Feral|C|TDM +#221|Sultai Devotee|C|TDM +#222|Undergrowth Leopard|C|TDM +#223|Gurmag Nightwatch|C|TDM +#224|Reigning Victor|C|TDM +#225|Temur Tawnyback|C|TDM +#226|Watcher of the Wayside|C|TDM +#227|Evolving Wilds|C|TDM +#228|Mistrise Village|R|TDM +#229|Bloodfell Caves|C|TDM +#230|Blossoming Sands|C|TDM +#231|Dismal Backwater|C|TDM +#232|Rugged Highlands|C|TDM +#233|Scoured Barrens|C|TDM +#234|Swiftwater Cliffs|C|TDM +#235|Thornwood Falls|C|TDM +#236|Tranquil Cove|C|TDM +#237|Wind-Scarred Crag|C|TDM +#238|Lightfoot Technique|C|TDM +#239|Osseous Exhale|C|TDM +#240|Tempest Hawk|C|TDM +#241|Humbling Elder|C|TDM +#242|Spectral Denial|U|TDM +#243|Temur Devotee|C|TDM +#244|Cruel Truths|C|TDM +#245|Desperate Measures|U|TDM +#246|Krumar Initiate|U|TDM +#247|Wail of War|U|TDM +#248|Worthy Cost|C|TDM +#249|Devoted Duelist|C|TDM +#250|Fire-Rim Form|C|TDM +#251|Jeskai Devotee|C|TDM +#252|Meticulous Artisan|C|TDM +#253|Narset's Rebuke|C|TDM +#254|Seize Opportunity|C|TDM +#255|Summit Intimidator|C|TDM +#256|Underfoot Underdogs|C|TDM +#257|Dusyut Earthcarver|C|TDM +#258|Krotiq Nestguard|C|TDM +#259|Roamer's Routine|C|TDM +#260|Boulderborn Dragon|C|TDM +#261|Dragonstorm Globe|C|TDM +#262|Embermouth Sentinel|C|TDM +#263|Reputable Merchant|C|TDM +#264|Dispelling Exhale|C|TDM +#265|Wingspan Stride|C|TDM +#266|Rot-Curse Rakshasa|M|TDM +#267|Reverberating Summons|U|TDM +#268|Heritage Reclamation|C|TDM +#269|Nature's Rhythm|R|TDM +#270|Call the Spirit Dragons|M|TDM +#271|Jade-Cast Sentinel|C|TDM +#272|Emergent Ultimatum|M|TDM +#273|United Battlefront|R|TDM +#274|Dragonstorm Forecaster|U|TDM +#275|Essence Anchor|U|TDM +#276|Maelstrom of the Spirit Dragon|R|TDM +#277|Stillness in Motion|R|TDM +#278|The Sibsig Ceremony|R|TDM +#279|Breaching Dragonstorm|U|TDM +#280|Dracogenesis|M|TDM +#281|Mox Jasper|M|TDM +#282|Plains|C|TDM +#283|Island|C|TDM +#284|Swamp|C|TDM +#285|Mountain|C|TDM +#286|Forest|C|TDM diff --git a/forge-gui/res/editions/Tarkir Dragonstorm.txt b/forge-gui/res/editions/Tarkir Dragonstorm.txt index 006d0dae468..9bf4eb82587 100644 --- a/forge-gui/res/editions/Tarkir Dragonstorm.txt +++ b/forge-gui/res/editions/Tarkir Dragonstorm.txt @@ -4,6 +4,46 @@ Date=2025-04-11 Name=Tarkir: Dragonstorm Type=Expansion ScryfallCode=TDM +# https://mtgscribe.com/2025/03/20/play-booster-fact-sheet-dragonstorm/ +BoosterSlots=Common,Common-Guest,Uncommon,RareMythic,AnyLand,Wildcard,FoilWildcard +Booster=6 Common, 1 Common-Guest, 3 Uncommon, 1 RareMythic, 1 AnyLand, 1 Wildcard, 1 FoilWildcard +Prerelease=6 Boosters, 1 RareMythic+ +# TDM Prereleases are actually 5 + a seeded faction booster. We'll figure that out later +#FactionBooster=8 Common, 2 Uncommon, 1 UncommonTriland, 1 FactionLand, 1 Wildcard, 1 MythicRare +BoosterBox=30 + +[Common] +Base=Common:!fromSheet("TDM gain lands"):fromSheet("TDM cards") + +[Common-Guest] +Base=Common:!fromSheet("TDM gain lands"):fromSheet("TDM cards") +Replace=.015625F fromSheet("TDM special guests") + +[Uncommon] +Base=Uncommon:fromSheet("TDM cards") + +[RareMythic] +Base=RareMythic:fromSheet("TDM cards") +Replace=.077F Rare:fromSheet("TDM borderless") +Replace=.015F Mythic:fromSheet("TDM borderless") + +[AnyLand] +Base=fromSheet("TDM gain lands") +Replace=.174F fromSheet("TDM gain lands")+ +Replace=.105F BasicLand:fromSheet("TDM cards"):!fromSheet("TDM gain lands") +Replace=.026F BasicLand:fromSheet("TDM cards"):!fromSheet("TDM gain lands")+ + +[Wildcard] +Base=Uncommon:fromSheet("TDM cards") +Replace=.171F Common:fromSheet("TDM cards") +Replace=.179F Rare:fromSheet("TDM cards") +Replace=.028F Mythic:fromSheet("TDM cards") + +[FoilWildcard] +Base=Common:fromSheet("TDM cards")+ +Replace=.334F Uncommon:fromSheet("TDM cards") +Replace=.072F Rare:fromSheet("TDM cards") +Replace=.012F Mythic:fromSheet("TDM cards") [cards] 1 M Ugin, Eye of the Storms @Joshua Raphael @@ -255,28 +295,28 @@ ScryfallCode=TDM 247 U Sultai Monument @Julian Kok Joon Wen 248 U Temur Monument @Sam Burley 249 C Watcher of the Wayside @Brian Valeza -250 C Bloodfell Caves @Piotr Dura -251 C Blossoming Sands @Piotr Dura +250 L Bloodfell Caves @Piotr Dura +251 L Blossoming Sands @Piotr Dura 252 R Cori Mountain Monastery @Arthur Yuan 253 R Dalkovan Encampment @Marina Ortega Lorente -254 C Dismal Backwater @Alayna Danner +254 L Dismal Backwater @Alayna Danner 255 C Evolving Wilds @Leon Tukker 256 U Frontier Bivouac @Andrea Piparo 257 R Great Arashin City @Josu Solano -258 C Jungle Hollow @Cristi Balanescu +258 L Jungle Hollow @Cristi Balanescu 259 R Kishla Village @Bruce Brenneise 260 R Maelstrom of the Spirit Dragon @Carlos Palma Cruchaga 261 R Mistrise Village @Constantin Marin 262 U Mystic Monastery @Leon Tukker 263 U Nomad Outpost @Alayna Danner 264 U Opulent Palace @Sergey Glushakov -265 C Rugged Highlands @Carlos Palma Cruchaga +265 L Rugged Highlands @Carlos Palma Cruchaga 266 U Sandsteppe Citadel @Diego Gisbert -267 C Scoured Barrens @Brent Hollowell -268 C Swiftwater Cliffs @Piotr Dura -269 C Thornwood Falls @Alexander Ostrowski -270 C Tranquil Cove @Kevin Sidharta -271 C Wind-Scarred Crag @Filip Burburan +267 L Scoured Barrens @Brent Hollowell +268 L Swiftwater Cliffs @Piotr Dura +269 L Thornwood Falls @Alexander Ostrowski +270 L Tranquil Cove @Kevin Sidharta +271 L Wind-Scarred Crag @Filip Burburan 272 L Plains @Sergey Glushakov 273 L Island @Sergey Glushakov 274 L Swamp @Sergey Glushakov @@ -449,6 +489,30 @@ ScryfallCode=TDM 425 R Temur Battlecrier @Valera Lutfullina 426 R Qarsi Revenant @Diana Franco +[gain lands] +1 Bloodfell Caves|TDM +1 Blossoming Sands|TDM +1 Dismal Backwater|TDM +1 Jungle Hollow|TDM +1 Rugged Highlands|TDM +1 Scoured Barrens|TDM +1 Swiftwater Cliffs|TDM +1 Thornwood Falls|TDM +1 Tranquil Cove|TDM +1 Wind-Scarred Crag|TDM + +[special guests] +1 Verdant Catacombs|SPG +1 Scalding Tarn|SPG +1 Misty Rainforest|SPG +1 Marsh Flats|SPG +1 Arid Mesa|SPG +1 Ruinous Ultimatum|SPG +1 Inspired Ultimatum|SPG +1 Genesis Ultimatum|SPG +1 Emergent Ultimatum|SPG +1 Eerie Ultimatum|SPG + [tokens] b_2_2_zombie_druid c_a_treasure_sac diff --git a/forge-gui/tools/RankingScraper.py b/forge-gui/tools/RankingScraper.py index 83b29d74c00..21b84778bbb 100644 --- a/forge-gui/tools/RankingScraper.py +++ b/forge-gui/tools/RankingScraper.py @@ -3,7 +3,7 @@ import json import requests -def draftsimRankings(edition='DSK', extra=None): +def draftsimRankings(edition='TDM', extra=None): edition = edition.upper() url1 = 'https://draftsim.com/generated/%s/' % (edition) url2 = '%s' % edition