Add double pick for double masters

This commit is contained in:
friarsol
2020-08-26 22:52:19 -04:00
parent ac10fb6655
commit d3a47ccef7
5 changed files with 673 additions and 21 deletions

View File

@@ -123,6 +123,7 @@ public final class CardEdition implements Comparable<CardEdition> { // immutable
private String additionalUnlockSet = "";
private boolean smallSetOverride = false;
private String boosterMustContain = "";
private boolean doublePickToStartRound = false;
private final CardInSet[] cards;
private final Map<String, Integer> tokenNormalized;
@@ -190,6 +191,7 @@ public final class CardEdition implements Comparable<CardEdition> { // immutable
public String getAdditionalSheetForFoils() { return additionalSheetForFoils; }
public String getAdditionalUnlockSet() { return additionalUnlockSet; }
public boolean getSmallSetOverride() { return smallSetOverride; }
public boolean getDoublePickToStartRound() { return doublePickToStartRound; }
public String getBoosterMustContain() { return boosterMustContain; }
public CardInSet[] getCards() { return cards; }
public boolean isModern() { return getDate().after(parseDate("2003-07-27")); } //8ED and above are modern except some promo cards and others
@@ -377,6 +379,7 @@ public final class CardEdition implements Comparable<CardEdition> { // immutable
res.additionalUnlockSet = section.get("AdditionalSetUnlockedInQuest", ""); // e.g. Time Spiral Timeshifted (TSB) for Time Spiral
res.smallSetOverride = section.getBoolean("TreatAsSmallSet", false); // for "small" sets with over 200 cards (e.g. Eldritch Moon)
res.doublePickToStartRound = section.getBoolean("DoublePick", false); // for "small" sets with over 200 cards (e.g. Eldritch Moon)
res.boosterMustContain = section.get("BoosterMustContain", ""); // e.g. Dominaria guaranteed legendary creature
return res;

View File

@@ -1,4 +1,641 @@
//Rank|Name|Rarity|Set
#1|Angel of Sanctions|M|AKR
#2|Liliana, Death's Majesty|M|AKR
#3|Glorybringer|R|AKR
#4|The Scorpion God|M|AKR
#5|Archfiend of Ifnir|R|AKR
#6|The Locust God|M|AKR
#7|The Scarab God|M|AKR
#8|Gideon of the Trials|M|AKR
#9|Samut, Voice of Dissent|M|AKR
#10|Rhonas the Indomitable|M|AKR
#11|Grind Dust|R|AKR
#12|Nissa, Steward of Elements|M|AKR
#13|Hornet Queen|M|AKR
#14|Bontu's Last Reckoning|R|AKR
#15|Never Return|R|AKR
#16|Hour of Devastation|R|AKR
#17|Curator of Mysteries|R|AKR
#18|Unesh, Criosphinx Sovereign|M|AKR
#19|Insult Injury|R|AKR
#20|Cut Ribbons|R|AKR
#21|Samut, the Tested|M|AKR
#22|Wrath of God|R|AKR
#23|Jace, Unraveler of Secrets|M|AKR
#24|Drake Haven|R|AKR
#25|Vizier of Many Faces|R|AKR
#26|Pride Sovereign|R|AKR
#27|Vizier of the Menagerie|M|AKR
#28|Cast Out|U|AKR
#29|Earthshaker Khenra|R|AKR
#30|Majestic Myriarch|M|AKR
#31|God-Pharaoh's Gift|R|AKR
#32|Chandra, Pyromaster|M|AKR
#33|Crested Sunmare|M|AKR
#34|Desert's Hold|U|AKR
#35|Oketra the True|M|AKR
#36|Liliana's Mastery|R|AKR
#37|Abrade|U|AKR
#38|Struggle Survive|U|AKR
#39|Temmet, Vizier of Naktamun|R|AKR
#40|Sphinx's Revelation|M|AKR
#41|Hazoret the Fervent|M|AKR
#42|Resilient Khenra|R|AKR
#43|Sifter Wurm|U|AKR
#44|Neheb, the Worthy|R|AKR
#45|Nicol Bolas, God-Pharaoh|M|AKR
#46|Prepare Fight|R|AKR
#47|Dusk Dawn|R|AKR
#48|Hour of Revelation|R|AKR
#49|Deem Worthy|U|AKR
#50|Neheb, the Eternal|M|AKR
#51|Glory-Bound Initiate|R|AKR
#52|Oketra's Attendant|U|AKR
#53|Sand Strangler|U|AKR
#54|Trial of Zeal|U|AKR
#55|Anger of the Gods|R|AKR
#56|Sunscourge Champion|U|AKR
#57|Champion of Wits|R|AKR
#58|Kefnet the Mindful|M|AKR
#59|Sweltering Suns|R|AKR
#60|Aven Wind Guide|U|AKR
#61|Hapatra, Vizier of Poisons|R|AKR
#62|Trial of Solidarity|U|AKR
#63|Final Reward|C|AKR
#64|Ahn-Crop Crasher|U|AKR
#65|Magma Spray|C|AKR
#66|Open Fire|C|AKR
#67|Prowling Serpopard|R|AKR
#68|Farm Market|U|AKR
#69|Merciless Javelineer|U|AKR
#70|Nimble Obstructionist|R|AKR
#71|Ominous Sphinx|U|AKR
#72|Bone Picker|U|AKR
#73|Ruthless Sniper|U|AKR
#74|Cartouche of Strength|C|AKR
#75|Crocodile of the Crossing|U|AKR
#76|Ahn-Crop Champion|U|AKR
#77|Consign Oblivion|U|AKR
#78|River Hoopoe|U|AKR
#79|Edifice of Authority|U|AKR
#80|Compulsory Rest|C|AKR
#81|Fan Bearer|C|AKR
#82|Overwhelming Splendor|M|AKR
#83|Lay Claim|U|AKR
#84|Vizier of Tumbling Sands|U|AKR
#85|Baleful Ammit|U|AKR
#86|Gravedigger|U|AKR
#87|Burning-Fist Minotaur|U|AKR
#88|Mouth Feed|R|AKR
#89|Destined Lead|U|AKR
#90|Heaven Earth|R|AKR
#91|Khenra Charioteer|U|AKR
#92|Wayward Servant|U|AKR
#93|Mirage Mirror|R|AKR
#94|Pact of Negation|R|AKR
#95|Thoughtseize|R|AKR
#96|Aven Mindcensor|R|AKR
#97|Cartouche of Knowledge|C|AKR
#98|Bontu the Glorified|M|AKR
#99|Lord of the Accursed|U|AKR
#100|Fervent Paincaster|U|AKR
#101|Puncturing Blow|C|AKR
#102|Enigma Drake|U|AKR
#103|Honored Crop-Captain|U|AKR
#104|Obelisk Spider|U|AKR
#105|Perilous Vault|R|AKR
#106|Gust Walker|C|AKR
#107|Steward of Solidarity|U|AKR
#108|Pull from Tomorrow|R|AKR
#109|Vizier of the Anointed|U|AKR
#110|Torment of Hailfire|R|AKR
#111|Combat Celebrant|M|AKR
#112|Harsh Mentor|R|AKR
#113|Exemplar of Strength|U|AKR
#114|Shefet Monitor|U|AKR
#115|Driven Despair|R|AKR
#116|Desert of the Fervent|C|AKR
#117|Tah-Crop Elite|C|AKR
#118|Cartouche of Ambition|C|AKR
#119|Vile Manifestation|U|AKR
#120|Champion of Rhonas|R|AKR
#121|Hour of Promise|R|AKR
#122|Synchronized Strike|U|AKR
#123|Shadowstorm Vizier|U|AKR
#124|Start Finish|U|AKR
#125|Desert of the Glorified|C|AKR
#126|Desert of the Indomitable|C|AKR
#127|Desert of the True|C|AKR
#128|Demonic Pact|M|AKR
#129|Cartouche of Solidarity|C|AKR
#130|Oketra's Avenger|C|AKR
#131|Vizier of Deferment|U|AKR
#132|Aven Initiate|C|AKR
#133|Eternal of Harsh Truths|U|AKR
#134|Riddleform|U|AKR
#135|Splendid Agony|C|AKR
#136|Battlefield Scavenger|U|AKR
#137|Nef-Crop Entangler|C|AKR
#138|Hooded Brawler|C|AKR
#139|Rags Riches|R|AKR
#140|Rhonas's Monument|U|AKR
#141|Canyon Slough|R|AKR
#142|Desert of the Mindful|C|AKR
#143|Fetid Pools|R|AKR
#144|Irrigated Farmland|R|AKR
#145|Scattered Groves|R|AKR
#146|Sheltered Thicket|R|AKR
#147|Binding Mummy|C|AKR
#148|Dauntless Aven|C|AKR
#149|Commit Memory|R|AKR
#150|Shimmerscale Drake|C|AKR
#151|Wander in Death|C|AKR
#152|Wasteland Scorpion|C|AKR
#153|Defiant Greatmaw|U|AKR
#154|Naga Vitalist|C|AKR
#155|Oasis Ritualist|C|AKR
#156|Rhonas's Stalwart|C|AKR
#157|Trial of Strength|U|AKR
#158|Hollow One|R|AKR
#159|Sunset Pyramid|U|AKR
#160|Ifnir Deadlands|U|AKR
#161|Djeru's Resolve|C|AKR
#162|Aerial Guide|C|AKR
#163|Essence Scatter|C|AKR
#164|Hieroglyphic Illumination|C|AKR
#165|Spellweaver Eternal|C|AKR
#166|Supreme Will|U|AKR
#167|Unquenchable Thirst|C|AKR
#168|Blighted Bat|C|AKR
#169|Doomfall|U|AKR
#170|Trial of Ambition|U|AKR
#171|Cartouche of Zeal|C|AKR
#172|Khenra Scrapper|C|AKR
#173|Magmaroth|U|AKR
#174|Thresher Lizard|C|AKR
#175|Hope Tender|U|AKR
#176|Watchful Naga|U|AKR
#177|Appeal Authority|U|AKR
#178|Onward Victory|U|AKR
#179|Abandoned Sarcophagus|R|AKR
#180|Oketra's Monument|U|AKR
#181|Ramunap Ruins|U|AKR
#182|Shefet Dunes|U|AKR
#183|Wasp of the Bitter End|U|AKR
#184|Lord of Extinction|R|AKR
#185|Gideon's Intervention|R|AKR
#186|Impeccable Timing|C|AKR
#187|Vizier of Remedies|U|AKR
#188|Censor|U|AKR
#189|Cryptic Serpent|U|AKR
#190|Labyrinth Guardian|U|AKR
#191|Trial of Knowledge|U|AKR
#192|Cruel Reality|M|AKR
#193|Dread Wanderer|R|AKR
#194|Lethal Sting|C|AKR
#195|Nest of Scarabs|U|AKR
#196|Pitiless Vizier|C|AKR
#197|Razaketh, the Foulblooded|M|AKR
#198|Soulstinger|C|AKR
#199|Supernatural Stamina|C|AKR
#200|Unburden|C|AKR
#201|Desert Cerodon|C|AKR
#202|Bitterbow Sharpshooters|C|AKR
#203|Greater Sandwurm|C|AKR
#204|Quarry Hauler|C|AKR
#205|Spring Mind|U|AKR
#206|Wall of Forgotten Pharaohs|C|AKR
#207|Hashep Oasis|U|AKR
#208|Zealot of the God-Pharaoh|C|AKR
#209|Collected Company|R|AKR
#210|Aven of Enduring Hope|C|AKR
#211|Those Who Serve|C|AKR
#212|Unconventional Tactics|U|AKR
#213|Winds of Rebuke|C|AKR
#214|Horror of the Broken Lands|C|AKR
#215|Brute Strength|C|AKR
#216|Firebrand Archer|C|AKR
#217|Gilded Cerodon|C|AKR
#218|Thorned Moloch|C|AKR
#219|Ornery Kudu|C|AKR
#220|Shed Weakness|C|AKR
#221|Stinging Shot|C|AKR
#222|Forsake the Worldly|C|AKR
#223|Supply Caravan|C|AKR
#224|Floodwaters|C|AKR
#225|Naga Oracle|C|AKR
#226|Striped Riverwinder|C|AKR
#227|Doomed Dissenter|C|AKR
#228|Khenra Eternal|C|AKR
#229|Blur of Blades|C|AKR
#230|Pathmaker Initiate|C|AKR
#231|Pursue Glory|C|AKR
#232|Initiate's Companion|C|AKR
#233|Ramunap Excavator|R|AKR
#234|Sidewinder Naga|C|AKR
#235|Watchers of the Dead|U|AKR
#236|Evolving Wilds|C|AKR
#237|Ipnu Rivulet|U|AKR
#238|Anointer Priest|C|AKR
#239|Approach of the Second Sun|R|AKR
#240|Mighty Leap|C|AKR
#241|Renewed Faith|U|AKR
#242|Solitary Camel|C|AKR
#243|Countervailing Winds|C|AKR
#244|New Perspectives|R|AKR
#245|Strategic Planning|C|AKR
#246|Marauding Boneslasher|C|AKR
#247|Beneath the Sands|C|AKR
#248|Feral Prowler|C|AKR
#249|Sandwurm Convergence|R|AKR
#250|Claim Fame|U|AKR
#251|Reason Believe|R|AKR
#252|Reduce Rubble|U|AKR
#253|Throne of the God-Pharaoh|R|AKR
#254|Disposal Mummy|C|AKR
#255|In Oketra's Name|C|AKR
#256|Hekma Sentinels|C|AKR
#257|Seeker of Insight|C|AKR
#258|Seer of the Last Tomorrow|C|AKR
#259|Festering Mummy|C|AKR
#260|Bloodlust Inciter|C|AKR
#261|Imminent Doom|R|AKR
#262|Soul-Scar Mage|R|AKR
#263|Dissenter's Deliverance|C|AKR
#264|Pouncing Cheetah|C|AKR
#265|Refuse Cooperate|R|AKR
#266|Gate to the Afterlife|U|AKR
#267|Hazoret's Monument|U|AKR
#268|Cascading Cataracts|R|AKR
#269|Rest in Peace|R|AKR
#270|Sacred Cat|C|AKR
#271|Ancient Crab|C|AKR
#272|As Foretold|M|AKR
#273|Compelling Argument|C|AKR
#274|Slither Blade|C|AKR
#275|Miasmic Mummy|C|AKR
#276|Crash Through|C|AKR
#277|Nimble-Blade Khenra|C|AKR
#278|Tormenting Voice|C|AKR
#279|Manglehorn|U|AKR
#280|Oashra Cultivator|C|AKR
#281|Leave Chance|R|AKR
#282|Bontu's Monument|U|AKR
#283|Sunscorched Desert|C|AKR
#284|Anointed Procession|R|AKR
#285|Protection of the Hekma|U|AKR
#286|Dune Beetle|C|AKR
#287|Scarab Feast|C|AKR
#288|Kefnet's Monument|U|AKR
#289|Solemnity|R|AKR
#290|Haze of Pollen|C|AKR
#291|Failure Comply|R|AKR
#292|Crypt of the Eternals|U|AKR
#293|Trespasser's Curse|C|AKR
#294|By Force|U|AKR
#295|Glorious End|M|AKR
#296|Sixth Sense|U|AKR
#297|Scavenger Grounds|R|AKR
#298|Shatterstorm|R|AKR
#299|Chandra's Defeat|U|AKR
#300|Life Goes On|C|AKR
#301|Liliana's Defeat|U|AKR
#302|Shadow of the Grave|R|AKR
#303|Dispossess|R|AKR
//Rank|Name|Rarity|Set
#1|Karn Liberated|M|2XM
#2|Wurmcoil Engine|M|2XM
#3|The Scarab God|M|2XM
#4|Archangel of Thune|M|2XM
#5|Jace, the Mind Sculptor|M|2XM
#6|Atraxa, Praetors' Voice|M|2XM
#7|Batterskull|M|2XM
#8|Thragtusk|R|2XM
#9|Skithiryx, the Blight Dragon|M|2XM
#10|Sword of Fire and Ice|M|2XM
#11|Geth, Lord of the Vault|M|2XM
#12|Myr Battlesphere|R|2XM
#13|Falkenrath Aristocrat|R|2XM
#14|Vish Kal, Blood Arbiter|R|2XM
#15|Mana Crypt|M|2XM
#16|Riku of Two Reflections|M|2XM
#17|Walking Ballista|R|2XM
#18|Duplicant|R|2XM
#19|Progenitor Mimic|R|2XM
#20|Breya, Etherium Shaper|M|2XM
#21|Sword of Feast and Famine|M|2XM
#22|Sword of Body and Mind|M|2XM
#23|Terastodon|R|2XM
#24|Sword of War and Peace|M|2XM
#25|Avenger of Zendikar|M|2XM
#26|Cyclonic Rift|R|2XM
#27|Council's Judgment|R|2XM
#28|Basilisk Collar|R|2XM
#29|Brudiclad, Telchor Engineer|R|2XM
#30|Path to Exile|U|2XM
#31|Sen Triplets|M|2XM
#32|Sword of Light and Shadow|M|2XM
#33|Champion of Lambholt|R|2XM
#34|Sunforger|R|2XM
#35|Austere Command|R|2XM
#36|Stonehewer Giant|R|2XM
#37|Wrath of God|R|2XM
#38|Phyrexian Metamorph|R|2XM
#39|Hammer of Nazahn|R|2XM
#40|Sharuum the Hegemon|R|2XM
#41|Voice of Resurgence|R|2XM
#42|Rolling Earthquake|R|2XM
#43|Savageborn Hydra|R|2XM
#44|Dualcaster Mage|R|2XM
#45|Dark Confidant|M|2XM
#46|Karrthus, Tyrant of Jund|M|2XM
#47|Baleful Strix|R|2XM
#48|Blade Splicer|R|2XM
#49|Maelstrom Pulse|R|2XM
#50|Unlicensed Disintegration|U|2XM
#51|Abrade|C|2XM
#52|Grim Lavamancer|R|2XM
#53|Maze of Ith|R|2XM
#54|Isochron Scepter|R|2XM
#55|Awakening Zone|R|2XM
#56|Sphinx Summoner|U|2XM
#57|Land Tax|M|2XM
#58|Avacyn, Angel of Hope|M|2XM
#59|Noble Hierarch|R|2XM
#60|Doomed Necromancer|R|2XM
#61|Flickerwisp|U|2XM
#62|Cranial Plating|U|2XM
#63|Yavimaya's Embrace|U|2XM
#64|Cast Down|C|2XM
#65|Bosh, Iron Golem|R|2XM
#66|Fatal Push|U|2XM
#67|Galvanic Blast|U|2XM
#68|Ghor-Clan Rampager|U|2XM
#69|Geist of Saint Traft|M|2XM
#70|Sundering Titan|R|2XM
#71|Grand Architect|R|2XM
#72|Puresteel Paladin|R|2XM
#73|Swiftblade Vindicator|R|2XM
#74|Toxic Deluge|R|2XM
#75|Basalt Monolith|U|2XM
#76|Morkrut Banshee|U|2XM
#77|Selesnya Guildmage|U|2XM
#78|Conjurer's Closet|R|2XM
#79|Rhys the Redeemed|R|2XM
#80|Spellskite|R|2XM
#81|Magus of the Will|R|2XM
#82|Merciless Eviction|R|2XM
#83|Deepglow Skate|R|2XM
#84|Reclamation Sage|U|2XM
#85|Valorous Stance|U|2XM
#86|Dread Return|U|2XM
#87|Disciple of the Vault|U|2XM
#88|Lightning Greaves|U|2XM
#89|Brimstone Volley|U|2XM
#90|Serra Sphinx|U|2XM
#91|Izzet Charm|U|2XM
#92|Glassdust Hulk|U|2XM
#93|Esperzoa|U|2XM
#94|Adaptive Automaton|R|2XM
#95|Arixmethes, Slumbering Isle|R|2XM
#96|Skirsdag High Priest|R|2XM
#97|Liege of the Tangle|R|2XM
#98|Rage Reflection|R|2XM
#99|Pyrewild Shaman|U|2XM
#100|Kuldotha Flamefiend|U|2XM
#101|Master Splicer|U|2XM
#102|Thopter Engineer|U|2XM
#103|Executioner's Capsule|C|2XM
#104|Vengevine|M|2XM
#105|Imperial Recruiter|M|2XM
#106|Master of Etherium|R|2XM
#107|Kemba, Kha Regent|R|2XM
#108|Godo, Bandit Warlord|R|2XM
#109|Thoughtseize|R|2XM
#110|Disciple of Bolas|R|2XM
#111|Hidden Stockpile|U|2XM
#112|Myrsmith|U|2XM
#113|Ulvenwald Mysteries|U|2XM
#114|Ravenous Intruder|U|2XM
#115|Weapons Trainer|U|2XM
#116|Clear Shot|C|2XM
#117|Conclave Naturalists|C|2XM
#118|Doubling Season|M|2XM
#119|Chrome Mox|M|2XM
#120|Blasphemous Act|R|2XM
#121|Jhoira, Weatherlight Captain|R|2XM
#122|Hanna, Ship's Navigator|R|2XM
#123|Oblivion Stone|R|2XM
#124|Thirst for Knowledge|U|2XM
#125|Treasure Keeper|U|2XM
#126|Oubliette|U|2XM
#127|Deathreap Ritual|U|2XM
#128|Ovalchase Daredevil|U|2XM
#129|Pyrite Spellbomb|C|2XM
#130|Kozilek's Predator|C|2XM
#131|Glint-Sleeve Artisan|C|2XM
#132|Blinkmoth Nexus|R|2XM
#133|Endless Atlas|R|2XM
#134|Ratchet Bomb|R|2XM
#135|Death's Shadow|R|2XM
#136|Tuktuk the Explorer|R|2XM
#137|Bloodspore Thrinax|R|2XM
#138|Inkwell Leviathan|R|2XM
#139|Trash for Treasure|U|2XM
#140|Auriok Salvagers|U|2XM
#141|Pentad Prism|U|2XM
#142|Thopter Foundry|U|2XM
#143|Gelatinous Genesis|U|2XM
#144|Valor in Akros|U|2XM
#145|O-Naginata|U|2XM
#146|Golem Artisan|U|2XM
#147|Thraben Inspector|C|2XM
#148|Whisperer of the Wilds|C|2XM
#149|Faerie Mechanist|C|2XM
#150|Bone Picker|C|2XM
#151|Ancestral Blade|C|2XM
#152|Force of Will|M|2XM
#153|Lux Cannon|R|2XM
#154|Reshape|R|2XM
#155|Chord of Calling|R|2XM
#156|Stoneforge Mystic|R|2XM
#157|Tempered Steel|R|2XM
#158|Wound Reflection|R|2XM
#159|Treasure Mage|U|2XM
#160|Vampire Hexmage|U|2XM
#161|Woodland Champion|U|2XM
#162|Enlarge|U|2XM
#163|Bloodshot Trainee|U|2XM
#164|Rush of Knowledge|U|2XM
#165|Sphinx of the Guildpact|U|2XM
#166|Mishra's Factory|U|2XM
#167|Myr Retriever|C|2XM
#168|Lightning Axe|C|2XM
#169|Sift|C|2XM
#170|Twisted Abomination|C|2XM
#171|Cloudreader Sphinx|C|2XM
#172|Topple the Statue|C|2XM
#173|Crib Swap|C|2XM
#174|Angel of the Dawn|C|2XM
#175|Everflowing Chalice|C|2XM
#176|Arcum Dagsson|M|2XM
#177|Magus of the Abyss|R|2XM
#178|Engineered Explosives|R|2XM
#179|Cragganwick Cremator|R|2XM
#180|Master Transmuter|R|2XM
#181|Beacon of Unrest|R|2XM
#182|Mazirek, Kraul Death Priest|R|2XM
#183|Leonin Abunas|R|2XM
#184|Sword of the Meek|R|2XM
#185|Fencing Ace|U|2XM
#186|Chief of the Foundry|U|2XM
#187|Skullmulcher|U|2XM
#188|Sentinel of the Pearl Trident|U|2XM
#189|Painsmith|U|2XM
#190|Riddlesmith|U|2XM
#191|Drown in Sorrow|U|2XM
#192|Pongify|U|2XM
#193|Sandstone Oracle|U|2XM
#194|Cogwork Assembler|U|2XM
#195|Temur Battle Rage|C|2XM
#196|Elvish Aberration|C|2XM
#197|Parasitic Strix|C|2XM
#198|Sanctum Gargoyle|C|2XM
#199|Metalspinner's Puzzleknot|C|2XM
#200|Flayer Husk|C|2XM
#201|Darksteel Axe|C|2XM
#202|Crusader of Odric|C|2XM
#203|Sanctum Spirit|C|2XM
#204|Mox Opal|M|2XM
#205|Heat Shimmer|R|2XM
#206|Greater Good|R|2XM
#207|Mystic Gate|R|2XM
#208|Sunken Ruins|R|2XM
#209|Wooded Bastion|R|2XM
#210|Graven Cairns|R|2XM
#211|Fire-Lit Thicket|R|2XM
#212|Academy Ruins|R|2XM
#213|Ion Storm|R|2XM
#214|Shamanic Revelation|R|2XM
#215|Salvage Titan|R|2XM
#216|Goblin Guide|R|2XM
#217|Ad Nauseam|R|2XM
#218|Flooded Grove|R|2XM
#219|Rugged Prairie|R|2XM
#220|Twilight Mire|R|2XM
#221|Cascade Bluffs|R|2XM
#222|Fetid Heath|R|2XM
#223|Mesmeric Orb|R|2XM
#224|Manamorphose|U|2XM
#225|Hinder|U|2XM
#226|Coretapper|U|2XM
#227|Culling Dais|U|2XM
#228|Clone Shell|U|2XM
#229|Buried Ruin|U|2XM
#230|Chromatic Star|C|2XM
#231|Fierce Empath|C|2XM
#232|Battle-Rattle Shaman|C|2XM
#233|Argivian Restoration|C|2XM
#234|Defiant Salvager|C|2XM
#235|Apprentice Wizard|C|2XM
#236|Sickleslicer|C|2XM
#237|Cathodion|C|2XM
#238|Sculpting Steel|R|2XM
#239|Meddling Mage|R|2XM
#240|Ethersworn Canonist|R|2XM
#241|Heartbeat of Spring|R|2XM
#242|Well of Ideas|R|2XM
#243|High Market|R|2XM
#244|Mishra's Bauble|U|2XM
#245|Throne of Geth|U|2XM
#246|Ash Barrens|U|2XM
#247|Dismantle|U|2XM
#248|Invigorate|U|2XM
#249|Jhoira's Familiar|U|2XM
#250|Skinwing|C|2XM
#251|Ichor Wellspring|C|2XM
#252|Rapacious Dragon|C|2XM
#253|Salivating Gremlins|C|2XM
#254|Skinbrand Goblin|C|2XM
#255|Sylvan Might|C|2XM
#256|Chatter of the Squirrel|C|2XM
#257|Silumgar Scavenger|C|2XM
#258|Driver of the Dead|C|2XM
#259|Frogify|C|2XM
#260|Vulshok Gauntlets|C|2XM
#261|Magnifying Glass|C|2XM
#262|Golem-Skin Gauntlets|C|2XM
#263|Sneak Attack|M|2XM
#264|Glimmervoid|R|2XM
#265|Kuldotha Forgemaster|R|2XM
#266|Braids, Conjurer Adept|R|2XM
#267|Vexing Shusher|R|2XM
#268|Bloodbriar|C|2XM
#269|Ancient Stirrings|C|2XM
#270|Weapon Surge|C|2XM
#271|Kazuul's Toll Collector|C|2XM
#272|Might of the Masses|C|2XM
#273|Death-Hood Cobra|C|2XM
#274|Balduvian Rage|C|2XM
#275|Relic Runner|C|2XM
#276|Supernatural Stamina|C|2XM
#277|Metallic Rebuke|C|2XM
#278|Dire Fleet Hoarder|C|2XM
#279|Divest|C|2XM
#280|Strength of Arms|C|2XM
#281|Remember the Fallen|C|2XM
#282|Revoke Existence|C|2XM
#283|Peace Strider|C|2XM
#284|Masterwork of Ingenuity|R|2XM
#285|Phyrexian Revoker|R|2XM
#286|Veteran Explorer|U|2XM
#287|Expedition Map|U|2XM
#288|Brainstorm|C|2XM
#289|Orcish Vandal|C|2XM
#290|Cathartic Reunion|C|2XM
#291|Goblin Gaveleer|C|2XM
#292|Crushing Vines|C|2XM
#293|Glaze Fiend|C|2XM
#294|Heartless Pillage|C|2XM
#295|Corridor Monitor|C|2XM
#296|Costly Plunder|C|2XM
#297|Alabaster Mage|C|2XM
#298|Fortify|C|2XM
#299|Tumble Magnet|C|2XM
#300|Surge Node|C|2XM
#301|Iron Bully|C|2XM
#302|Iron League Steed|C|2XM
#303|Kaalia of the Vast|M|2XM
#304|Dark Depths|M|2XM
#305|Mana Echoes|M|2XM
#306|Open the Vaults|R|2XM
#307|Mana Reflection|R|2XM
#308|Fulminator Mage|R|2XM
#309|Darksteel Citadel|U|2XM
#310|Springleaf Drum|U|2XM
#311|Welding Jar|U|2XM
#312|Steel Sabotage|C|2XM
#313|Gleaming Barrier|C|2XM
#314|Eager Construct|C|2XM
#315|Accomplished Automaton|C|2XM
#316|Ensnaring Bridge|M|2XM
#317|Boon Reflection|R|2XM
#318|Thought Reflection|R|2XM
#319|Exploration|R|2XM
#320|Time Sieve|R|2XM
#321|Crop Rotation|U|2XM
#322|Vedalken Infuser|C|2XM
#323|Thespian's Stage|R|2XM
#324|Blood Moon|R|2XM
#325|Trinisphere|M|2XM
#326|Maelstrom Nexus|M|2XM
#327|Urza's Mine|C|2XM
#328|Urza's Power Plant|C|2XM
#329|Urza's Tower|C|2XM
#330|Ravenous Trap|R|2XM
#331|Blightsteel Colossus|M|2XM
#332|Darksteel Forge|M|2XM
//Rank|Name|Rarity|Set
#1|Baneslayer Angel|M|M21
#2|Chandra, Heart of Fire|M|M21
#3|Massacre Wurm|M|M21

View File

@@ -6,6 +6,7 @@ Type=Reprint
BoosterCovers=3
Booster=8 Common, 3 Uncommon, 2 RareMythic, 2 fromSheet("2XM Foils")
Foil=NotSupported
DoublePick=true
[cards]
1 M Karn Liberated

View File

@@ -57,6 +57,7 @@ public class BoosterDraft implements IBoosterDraft {
private final List<LimitedPlayer> players = new ArrayList<>();
private LimitedPlayer localPlayer;
private boolean doublePickToStartRound = false;
protected int nextBoosterGroup = 0;
private int currentBoosterSize = 0;
private int currentBoosterPick = 0;
@@ -142,7 +143,11 @@ public class BoosterDraft implements IBoosterDraft {
this.product.add(block.getBooster(pp[i]));
}
} else {
final IUnOpenedProduct product1 = block.getBooster(sets.get(0));
// Only one set is chosen. If that set lets you draft 2 cards to start adjust draft settings now
String setCode = sets.get(0);
doublePickToStartRound = FModel.getMagicDb().getEditions().get(setCode).getDoublePickToStartRound();
final IUnOpenedProduct product1 = block.getBooster(setCode);
for (int i = 0; i < nPacks; i++) {
this.product.add(product1);
@@ -357,6 +362,10 @@ public class BoosterDraft implements IBoosterDraft {
public void passPacks() {
// Alternate direction of pack passing
int adjust = this.nextBoosterGroup % 2 == 1 ? 1 : -1;
if (this.doublePickToStartRound && currentBoosterPick == 1) {
adjust = 0;
}
for (int i = 0; i < N_PLAYERS; i++) {
List<PaperCard> passingPack = this.players.get(i).passPack();
@@ -494,7 +503,10 @@ public class BoosterDraft implements IBoosterDraft {
}
private void recordDraftPick(final List<PaperCard> thisBooster, PaperCard c) {
if (ForgePreferences.UPLOAD_DRAFT) {
if (!ForgePreferences.UPLOAD_DRAFT) {
return;
}
for (int i = 0; i < thisBooster.size(); i++) {
final PaperCard cc = thisBooster.get(i);
final String cnBk = cc.getName() + "|" + cc.getEdition();
@@ -516,5 +528,4 @@ public class BoosterDraft implements IBoosterDraft {
}
}
}
}
}

View File

@@ -45,8 +45,8 @@ def smdsRankings(edition='EldritchMoon', name='Eldritch Moon'):
return True
def draftsimRankings(edition='SOI', name='Shadows over Innistrad'):
r = requests.get("http://draftsim.com/%s.js" % edition)
def draftsimRankings(edition='2XM', name='Double Masters'):
r = requests.get("http://draftsim.com/generated/%s.js" % edition)
tx = r.text
start = tx.find('[')
end = tx.rfind(']')