mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
Second simple attempt at planar conquest generation code and example
(cherry picked from commit 234db8d)
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
package forge.planarconquestgenerate;
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.base.Predicates;
|
||||
import com.google.common.collect.Iterables;
|
||||
import forge.GuiBase;
|
||||
import forge.GuiDesktop;
|
||||
import forge.LobbyPlayer;
|
||||
import forge.StaticData;
|
||||
import forge.card.CardRulesPredicates;
|
||||
import forge.deck.*;
|
||||
import forge.deck.io.DeckStorage;
|
||||
import forge.game.GameFormat;
|
||||
@@ -26,6 +29,7 @@ import forge.util.TextUtil;
|
||||
import forge.view.SimulateMatch;
|
||||
import org.apache.commons.lang3.text.WordUtils;
|
||||
import org.testng.annotations.Test;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
@@ -63,16 +67,21 @@ public class PlanarConquestGeneratorTest {
|
||||
DeckStorage storage = new DeckStorage(new File(ForgeConstants.DECK_CONSTRUCTED_DIR), ForgeConstants.DECK_BASE_DIR);
|
||||
GameFormat planarConquestFormat = new GameFormat("conquest",sets,null);
|
||||
DeckFormat deckFormat = DeckFormat.PlanarConquest;
|
||||
for(PaperCard card: rankedList.subList(0,20)){
|
||||
|
||||
Iterable<PaperCard> filtered= Iterables.filter(rankedList, Predicates.and(
|
||||
Predicates.compose(CardRulesPredicates.IS_KEPT_IN_AI_DECKS, PaperCard.FN_GET_RULES),
|
||||
Predicates.compose(CardRulesPredicates.Presets.IS_NON_LAND, PaperCard.FN_GET_RULES),
|
||||
planarConquestFormat.getFilterPrinted()));
|
||||
|
||||
List<PaperCard> filteredList = Lists.newArrayList(filtered);
|
||||
|
||||
for(PaperCard card: filteredList.subList(0,50)){
|
||||
if(planarConquestFormat.getFilterPrinted().apply(card)) {
|
||||
System.out.println(card.getName());
|
||||
if(true) {
|
||||
continue;
|
||||
}
|
||||
DeckGroup deckGroup = new DeckGroup("SimulatedTournament");
|
||||
List<TournamentPlayer> players = new ArrayList<>();
|
||||
int numPlayers=0;
|
||||
for( int i=0; i<16;i++){
|
||||
for( int i=0; i<32;i++){
|
||||
Deck genDeck = DeckgenUtil.buildPlanarConquestDeck(card, planarConquestFormat, deckFormat);
|
||||
Deck d = new Deck(genDeck,genDeck.getName()+"_"+i);
|
||||
deckGroup.addAiDeck(d);
|
||||
@@ -80,73 +89,8 @@ public class PlanarConquestGeneratorTest {
|
||||
numPlayers++;
|
||||
}
|
||||
TournamentSwiss tourney = new TournamentSwiss(players, 2);
|
||||
tourney.initializeTournament();
|
||||
|
||||
String lastWinner = "";
|
||||
int curRound = 0;
|
||||
System.out.println(TextUtil.concatNoSpace("Starting a tournament with ",
|
||||
String.valueOf(numPlayers), " players over ",
|
||||
String.valueOf(tourney.getTotalRounds()), " rounds"));
|
||||
while(!tourney.isTournamentOver()) {
|
||||
if (tourney.getActiveRound() != curRound) {
|
||||
if (curRound != 0) {
|
||||
System.out.println(TextUtil.concatNoSpace("End Round - ", String.valueOf(curRound)));
|
||||
}
|
||||
curRound = tourney.getActiveRound();
|
||||
System.out.println("");
|
||||
System.out.println(TextUtil.concatNoSpace("Round ", String.valueOf(curRound) ," Pairings:"));
|
||||
|
||||
for(TournamentPairing pairing : tourney.getActivePairings()) {
|
||||
System.out.println(pairing.outputHeader());
|
||||
}
|
||||
System.out.println("");
|
||||
}
|
||||
|
||||
TournamentPairing pairing = tourney.getNextPairing();
|
||||
List<RegisteredPlayer> regPlayers = AbstractTournament.registerTournamentPlayers(pairing, deckGroup);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("Round ").append(tourney.getActiveRound()).append(" - ");
|
||||
sb.append(pairing.outputHeader());
|
||||
System.out.println(sb.toString());
|
||||
|
||||
if (!pairing.isBye()) {
|
||||
Match mc = new Match(rules, regPlayers, "TourneyMatch");
|
||||
|
||||
int exceptions = 0;
|
||||
int iGame = 0;
|
||||
while (!mc.isMatchOver()) {
|
||||
// play games until the match ends
|
||||
try{
|
||||
SimulateMatch.simulateSingleMatch(mc, iGame, false);
|
||||
iGame++;
|
||||
} catch(Exception e) {
|
||||
exceptions++;
|
||||
System.out.println(e.toString());
|
||||
if (exceptions > 5) {
|
||||
System.out.println("Exceeded number of exceptions thrown. Abandoning match...");
|
||||
break;
|
||||
} else {
|
||||
System.out.println("Game threw exception. Abandoning game and continuing...");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
LobbyPlayer winner = mc.getWinner().getPlayer();
|
||||
for (TournamentPlayer tp : pairing.getPairedPlayers()) {
|
||||
if (winner.equals(tp.getPlayer())) {
|
||||
pairing.setWinner(tp);
|
||||
lastWinner = winner.getName();
|
||||
System.out.println(TextUtil.concatNoSpace("Match Winner - ", lastWinner, "!"));
|
||||
System.out.println("");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tourney.reportMatchCompletion(pairing);
|
||||
}
|
||||
tourney.outputTournamentResults();
|
||||
tourney = runTournament(tourney, rules, numPlayers, deckGroup);
|
||||
String deckName = tourney.getAllPlayers().get(0).getPlayer().getName();
|
||||
Deck winningDeck;
|
||||
for(Deck deck:deckGroup.getAiDecks()){
|
||||
@@ -165,4 +109,149 @@ public class PlanarConquestGeneratorTest {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void generatePlanarConquestCommanderDecks() {
|
||||
|
||||
GuiBase.setInterface(new GuiDesktop());
|
||||
FModel.initialize(null, new Function<ForgePreferences, Void>() {
|
||||
@Override
|
||||
public Void apply(ForgePreferences preferences) {
|
||||
preferences.setPref(ForgePreferences.FPref.LOAD_CARD_SCRIPTS_LAZILY, false);
|
||||
return null;
|
||||
}
|
||||
});
|
||||
GameFormat format = FModel.getFormats().getStandard();
|
||||
GameRules rules = new GameRules(GameType.Constructed);
|
||||
standardMap = CardRelationMatrixGenerator.cardPools.get(format.getName());
|
||||
List<String> cardNames = new ArrayList<>(standardMap.keySet());
|
||||
List<PaperCard> cards = new ArrayList<>();
|
||||
for(String cardName:cardNames){
|
||||
cards.add(StaticData.instance().getCommonCards().getUniqueByName(cardName));
|
||||
}
|
||||
List<PaperCard> rankedList = CardRanker.rankCardsInDeck(cards);
|
||||
List<String> sets = new ArrayList<>();
|
||||
sets.add("XLN");
|
||||
sets.add("RIX");
|
||||
DeckStorage storage = new DeckStorage(new File(ForgeConstants.DECK_CONSTRUCTED_DIR), ForgeConstants.DECK_BASE_DIR);
|
||||
GameFormat planarConquestFormat = new GameFormat("conquest",sets,null);
|
||||
DeckFormat deckFormat = DeckFormat.PlanarConquest;
|
||||
|
||||
Iterable<PaperCard> filtered= Iterables.filter(rankedList, Predicates.and(
|
||||
Predicates.compose(CardRulesPredicates.IS_KEPT_IN_AI_DECKS, PaperCard.FN_GET_RULES),
|
||||
Predicates.compose(CardRulesPredicates.Presets.IS_CREATURE, PaperCard.FN_GET_RULES),
|
||||
Predicates.compose(CardRulesPredicates.Presets.IS_LEGENDARY, PaperCard.FN_GET_RULES),
|
||||
planarConquestFormat.getFilterPrinted()));
|
||||
|
||||
List<PaperCard> filteredList = Lists.newArrayList(filtered);
|
||||
|
||||
int maxListSize = 50;
|
||||
if (maxListSize > filteredList.size()){
|
||||
maxListSize = filteredList.size();
|
||||
}
|
||||
|
||||
for(PaperCard card: filteredList.subList(0,maxListSize)){
|
||||
if(planarConquestFormat.getFilterPrinted().apply(card)) {
|
||||
System.out.println(card.getName());
|
||||
DeckGroup deckGroup = new DeckGroup("SimulatedTournament");
|
||||
List<TournamentPlayer> players = new ArrayList<>();
|
||||
int numPlayers=0;
|
||||
for( int i=0; i<2;i++){
|
||||
Deck genDeck = DeckgenUtil.buildPlanarConquestCommanderDeck(card, planarConquestFormat, deckFormat);
|
||||
Deck d = new Deck(genDeck,genDeck.getName()+"_"+i);
|
||||
deckGroup.addAiDeck(d);
|
||||
players.add(new TournamentPlayer(GamePlayerUtil.createAiPlayer(d.getName(), 0), numPlayers));
|
||||
numPlayers++;
|
||||
}
|
||||
TournamentSwiss tourney = new TournamentSwiss(players, 2);
|
||||
|
||||
tourney = runTournament(tourney, rules, numPlayers, deckGroup);
|
||||
String deckName = tourney.getAllPlayers().get(0).getPlayer().getName();
|
||||
Deck winningDeck;
|
||||
for(Deck deck:deckGroup.getAiDecks()){
|
||||
if(deck.getName().equals(deckName)){
|
||||
winningDeck=deck;
|
||||
storage.save(winningDeck);
|
||||
System.out.println(card.toString());
|
||||
System.out.println(winningDeck.getName());
|
||||
System.out.println(winningDeck.getAllCardsInASinglePool().toString());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public TournamentSwiss runTournament(TournamentSwiss tourney, GameRules rules, int numPlayers, DeckGroup deckGroup){
|
||||
tourney.initializeTournament();
|
||||
|
||||
String lastWinner = "";
|
||||
int curRound = 0;
|
||||
System.out.println(TextUtil.concatNoSpace("Starting a tournament with ",
|
||||
String.valueOf(numPlayers), " players over ",
|
||||
String.valueOf(tourney.getTotalRounds()), " rounds"));
|
||||
while(!tourney.isTournamentOver()) {
|
||||
if (tourney.getActiveRound() != curRound) {
|
||||
if (curRound != 0) {
|
||||
System.out.println(TextUtil.concatNoSpace("End Round - ", String.valueOf(curRound)));
|
||||
}
|
||||
curRound = tourney.getActiveRound();
|
||||
System.out.println("");
|
||||
System.out.println(TextUtil.concatNoSpace("Round ", String.valueOf(curRound) ," Pairings:"));
|
||||
|
||||
for(TournamentPairing pairing : tourney.getActivePairings()) {
|
||||
System.out.println(pairing.outputHeader());
|
||||
}
|
||||
System.out.println("");
|
||||
}
|
||||
|
||||
TournamentPairing pairing = tourney.getNextPairing();
|
||||
List<RegisteredPlayer> regPlayers = AbstractTournament.registerTournamentPlayers(pairing, deckGroup);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("Round ").append(tourney.getActiveRound()).append(" - ");
|
||||
sb.append(pairing.outputHeader());
|
||||
System.out.println(sb.toString());
|
||||
|
||||
if (!pairing.isBye()) {
|
||||
Match mc = new Match(rules, regPlayers, "TourneyMatch");
|
||||
|
||||
int exceptions = 0;
|
||||
int iGame = 0;
|
||||
while (!mc.isMatchOver()) {
|
||||
// play games until the match ends
|
||||
try{
|
||||
SimulateMatch.simulateSingleMatch(mc, iGame, false);
|
||||
iGame++;
|
||||
} catch(Exception e) {
|
||||
exceptions++;
|
||||
System.out.println(e.toString());
|
||||
if (exceptions > 5) {
|
||||
System.out.println("Exceeded number of exceptions thrown. Abandoning match...");
|
||||
break;
|
||||
} else {
|
||||
System.out.println("Game threw exception. Abandoning game and continuing...");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
LobbyPlayer winner = mc.getWinner().getPlayer();
|
||||
for (TournamentPlayer tp : pairing.getPairedPlayers()) {
|
||||
if (winner.equals(tp.getPlayer())) {
|
||||
pairing.setWinner(tp);
|
||||
lastWinner = winner.getName();
|
||||
System.out.println(TextUtil.concatNoSpace("Match Winner - ", lastWinner, "!"));
|
||||
System.out.println("");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tourney.reportMatchCompletion(pairing);
|
||||
}
|
||||
tourney.outputTournamentResults();
|
||||
return tourney;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
[metadata]
|
||||
Name=Champion of Dusk - Legion Lieutenant based deck_7
|
||||
[Main]
|
||||
1 Angrath's Ambusher|RIX
|
||||
1 Call to the Feast|XLN
|
||||
1 Champion of Dusk|RIX
|
||||
1 Contract Killing|XLN
|
||||
1 Dusk Legion Zealot|RIX
|
||||
1 Duskborne Skymarcher|XLN
|
||||
1 Everdawn Champion|RIX
|
||||
1 Field of Ruin|XLN
|
||||
1 Inspiring Cleric|XLN
|
||||
1 Ixalan's Binding|XLN
|
||||
1 Legion Lieutenant|RIX
|
||||
1 Legion's Landing|XLN
|
||||
1 Martyr of Dusk|RIX
|
||||
1 Mavren Fein, Dusk Apostle|XLN
|
||||
9 Plains|RIX
|
||||
1 Queen's Commission|XLN
|
||||
1 Radiant Destiny|RIX
|
||||
1 Sanctum Seeker|XLN
|
||||
1 Sanguine Glorifier|RIX
|
||||
1 Shadowed Caravel|XLN
|
||||
1 Skymarcher Aspirant|RIX
|
||||
6 Swamp|RIX
|
||||
1 Trapjaw Tyrant|RIX
|
||||
1 Unclaimed Territory|XLN
|
||||
1 Vampire Champion|RIX
|
||||
1 Vampire Revenant|RIX
|
||||
1 Wakening Sun's Avatar|XLN
|
||||
[Sideboard]
|
||||
|
||||
@@ -1,32 +1,31 @@
|
||||
[metadata]
|
||||
Name=Mavren Fein, Dusk Apostle - Call to the Feast based deck_15
|
||||
Name=Duskborne Skymarcher - Legion Lieutenant based deck_18
|
||||
[Main]
|
||||
1 Bishop of Binding|RIX
|
||||
1 Bishop of the Bloodstained|XLN
|
||||
1 Bright Reprisal|XLN
|
||||
1 Call to the Feast|XLN
|
||||
1 Champion of Dusk|RIX
|
||||
1 Dusk Legion Zealot|RIX
|
||||
1 Duskborne Skymarcher|XLN
|
||||
1 Fell Flagship|XLN
|
||||
1 Field of Ruin|XLN
|
||||
1 Forerunner of the Coalition|RIX
|
||||
1 Forerunner of the Legion|RIX
|
||||
1 Huatli's Snubhorn|XLN
|
||||
1 Ixalan's Binding|XLN
|
||||
1 Kinjalli's Sunwing|XLN
|
||||
1 Legion Conquistador|XLN
|
||||
1 Legion Lieutenant|RIX
|
||||
1 Legion's Landing|XLN
|
||||
1 Looming Altisaur|XLN
|
||||
1 Lurking Chupacabra|XLN
|
||||
1 Martyr of Dusk|RIX
|
||||
1 Mavren Fein, Dusk Apostle|XLN
|
||||
9 Plains|RIX
|
||||
10 Plains|RIX
|
||||
1 Profane Procession|RIX
|
||||
1 Queen's Commission|XLN
|
||||
1 Radiant Destiny|RIX
|
||||
1 Sanctum Seeker|XLN
|
||||
1 Settle the Wreckage|XLN
|
||||
1 Skulduggery|XLN
|
||||
1 Skyblade of the Legion|XLN
|
||||
1 Skymarcher Aspirant|RIX
|
||||
6 Swamp|RIX
|
||||
1 Temple Altisaur|RIX
|
||||
1 Tetzimoc, Primal Death|RIX
|
||||
1 Unclaimed Territory|XLN
|
||||
1 Vicious Conquistador|XLN
|
||||
[Sideboard]
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
[metadata]
|
||||
Name=Legion Lieutenant - Skymarcher Aspirant based deck_3
|
||||
Name=Elenda, the Dusk Rose - Call to the Feast based deck_14
|
||||
[Main]
|
||||
1 Bishop of the Bloodstained|XLN
|
||||
1 Call to the Feast|XLN
|
||||
1 Champion of Dusk|RIX
|
||||
1 Crashing Tide|RIX
|
||||
1 Curious Obsession|RIX
|
||||
1 Dire Fleet Ravager|XLN
|
||||
1 Dowsing Dagger|XLN
|
||||
1 Dusk Legion Zealot|RIX
|
||||
1 Duskborne Skymarcher|XLN
|
||||
1 Elenda, the Dusk Rose|RIX
|
||||
1 Forerunner of the Legion|RIX
|
||||
1 Hostage Taker|XLN
|
||||
2 Island|RIX
|
||||
1 Field of Ruin|XLN
|
||||
1 Impale|RIX
|
||||
1 Ixalan's Binding|XLN
|
||||
1 Kinjalli's Sunwing|XLN
|
||||
1 Legion Lieutenant|RIX
|
||||
1 Legion's Landing|XLN
|
||||
1 Martyr of Dusk|RIX
|
||||
1 Mavren Fein, Dusk Apostle|XLN
|
||||
1 Pirate's Cutlass|XLN
|
||||
7 Plains|RIX
|
||||
1 Pride of Conquerors|RIX
|
||||
8 Plains|RIX
|
||||
1 Queen's Commission|XLN
|
||||
1 Radiant Destiny|RIX
|
||||
1 Rallying Roar|XLN
|
||||
1 Sanctum Seeker|XLN
|
||||
1 Skymarch Bloodletter|XLN
|
||||
1 Skymarcher Aspirant|RIX
|
||||
1 Slash of Talons|XLN
|
||||
1 Snubhorn Sentry|RIX
|
||||
7 Swamp|RIX
|
||||
1 Temple Altisaur|RIX
|
||||
1 Unclaimed Territory|XLN
|
||||
1 Vraska's Contempt|XLN
|
||||
1 Walk the Plank|XLN
|
||||
1 Voracious Vampire|RIX
|
||||
[Sideboard]
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
[metadata]
|
||||
Name=Elenda, the Dusk Rose - Legion Lieutenant based deck_4
|
||||
[Main]
|
||||
1 Bishop of the Bloodstained|XLN
|
||||
1 Call to the Feast|XLN
|
||||
1 Champion of Dusk|RIX
|
||||
1 Dire Fleet Poisoner|RIX
|
||||
1 Dusk Legion Zealot|RIX
|
||||
1 Duskborne Skymarcher|XLN
|
||||
1 Elenda, the Dusk Rose|RIX
|
||||
1 Fathom Fleet Captain|XLN
|
||||
1 Forerunner of the Coalition|RIX
|
||||
1 Ixalan's Binding|XLN
|
||||
1 Legion Lieutenant|RIX
|
||||
1 Legion's Landing|XLN
|
||||
1 Martyr of Dusk|RIX
|
||||
1 Mavren Fein, Dusk Apostle|XLN
|
||||
1 Pirate's Cutlass|XLN
|
||||
8 Plains|RIX
|
||||
1 Queen's Commission|XLN
|
||||
1 Radiant Destiny|RIX
|
||||
1 Sadistic Skymarcher|RIX
|
||||
1 Settle the Wreckage|XLN
|
||||
1 Skymarcher Aspirant|RIX
|
||||
9 Swamp|RIX
|
||||
1 Tetzimoc, Primal Death|RIX
|
||||
1 The Immortal Sun|RIX
|
||||
1 Walk the Plank|XLN
|
||||
[Sideboard]
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
[metadata]
|
||||
Name=Forerunner of the Legion - Radiant Destiny based deck_10
|
||||
Name=Forerunner of the Legion - Legion Lieutenant based deck_30
|
||||
[Main]
|
||||
1 Bishop of Binding|RIX
|
||||
1 Bishop of the Bloodstained|XLN
|
||||
1 Call to the Feast|XLN
|
||||
1 Champion of Dusk|RIX
|
||||
1 Dinosaur Hunter|RIX
|
||||
1 Dusk Legion Zealot|RIX
|
||||
1 Duskborne Skymarcher|XLN
|
||||
1 Elenda, the Dusk Rose|RIX
|
||||
1 Fell Flagship|XLN
|
||||
1 Forerunner of the Coalition|RIX
|
||||
1 Forerunner of the Legion|RIX
|
||||
1 Ixalan's Binding|XLN
|
||||
1 Kinjalli's Caller|XLN
|
||||
1 Legion Conquistador|XLN
|
||||
1 Legion Lieutenant|RIX
|
||||
1 Legion's Landing|XLN
|
||||
1 Martyr of Dusk|RIX
|
||||
1 Mavren Fein, Dusk Apostle|XLN
|
||||
8 Plains|RIX
|
||||
10 Plains|RIX
|
||||
1 Prying Blade|XLN
|
||||
1 Queen's Commission|XLN
|
||||
1 Radiant Destiny|RIX
|
||||
1 Sadistic Skymarcher|RIX
|
||||
1 Sanctum Seeker|XLN
|
||||
1 Raptor Companion|RIX
|
||||
1 Revel in Riches|XLN
|
||||
1 Skulduggery|XLN
|
||||
1 Skymarcher Aspirant|RIX
|
||||
8 Swamp|RIX
|
||||
1 The Immortal Sun|RIX
|
||||
1 Twilight Prophet|RIX
|
||||
1 Sleek Schooner|XLN
|
||||
1 Steadfast Armasaur|XLN
|
||||
6 Swamp|RIX
|
||||
1 Unclaimed Territory|XLN
|
||||
[Sideboard]
|
||||
|
||||
@@ -1,32 +1,31 @@
|
||||
[metadata]
|
||||
Name=Champion of Dusk - Legion's Landing based deck_9
|
||||
Name=Legion Lieutenant - Radiant Destiny based deck_5
|
||||
[Main]
|
||||
1 Bishop of Binding|RIX
|
||||
1 Bishop of the Bloodstained|XLN
|
||||
1 Awakened Amalgam|RIX
|
||||
1 Boneyard Parley|XLN
|
||||
1 Call to the Feast|XLN
|
||||
1 Captain's Hook|RIX
|
||||
1 Champion of Dusk|RIX
|
||||
1 Desperate Castaways|XLN
|
||||
1 Dusk Legion Zealot|RIX
|
||||
1 Fathom Fleet Captain|XLN
|
||||
1 Fell Flagship|XLN
|
||||
1 Field of Ruin|XLN
|
||||
1 Duskborne Skymarcher|XLN
|
||||
1 Emissary of Sunrise|XLN
|
||||
1 Forerunner of the Legion|RIX
|
||||
1 Ixalan's Binding|XLN
|
||||
1 Kitesail Freebooter|XLN
|
||||
1 Legion Lieutenant|RIX
|
||||
1 Legion's Landing|XLN
|
||||
1 Martyr of Dusk|RIX
|
||||
1 Mavren Fein, Dusk Apostle|XLN
|
||||
7 Plains|RIX
|
||||
8 Plains|RIX
|
||||
1 Queen's Commission|XLN
|
||||
1 Radiant Destiny|RIX
|
||||
1 Sadistic Skymarcher|RIX
|
||||
1 Sanctum Seeker|XLN
|
||||
1 Settle the Wreckage|XLN
|
||||
1 Skymarcher Aspirant|RIX
|
||||
1 Sun Sentinel|RIX
|
||||
8 Swamp|RIX
|
||||
1 The Immortal Sun|RIX
|
||||
1 Twilight Prophet|RIX
|
||||
1 Unclaimed Territory|XLN
|
||||
1 Walk the Plank|XLN
|
||||
1 Wanted Scoundrels|XLN
|
||||
1 Vanquisher's Banner|XLN
|
||||
1 Voracious Vampire|RIX
|
||||
[Sideboard]
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
[metadata]
|
||||
Name=Mavren Fein, Dusk Apostle - Legion's Landing based deck_5
|
||||
[Main]
|
||||
1 Baffling End|RIX
|
||||
1 Bishop of the Bloodstained|XLN
|
||||
1 Call to the Feast|XLN
|
||||
1 Desperate Castaways|XLN
|
||||
1 Dire Fleet Interloper|XLN
|
||||
1 Dusk Legion Zealot|RIX
|
||||
1 Duskborne Skymarcher|XLN
|
||||
1 Glacial Fortress|XLN
|
||||
1 Hostage Taker|XLN
|
||||
2 Island|RIX
|
||||
1 Ixalan's Binding|XLN
|
||||
1 Jace, Cunning Castaway|XLN
|
||||
1 Legion Conquistador|XLN
|
||||
1 Legion Lieutenant|RIX
|
||||
1 Legion's Landing|XLN
|
||||
1 Looming Altisaur|XLN
|
||||
1 Martyr of Dusk|RIX
|
||||
1 Mavren Fein, Dusk Apostle|XLN
|
||||
10 Plains|RIX
|
||||
1 Radiant Destiny|RIX
|
||||
1 Sadistic Skymarcher|RIX
|
||||
1 Skymarcher Aspirant|RIX
|
||||
1 Sunrise Seeker|XLN
|
||||
4 Swamp|RIX
|
||||
1 Vanquisher's Banner|XLN
|
||||
1 Wakening Sun's Avatar|XLN
|
||||
1 Zetalpa, Primal Dawn|RIX
|
||||
[Sideboard]
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
[metadata]
|
||||
Name=Duskborne Skymarcher - Radiant Destiny based deck_2
|
||||
Name=Sadistic Skymarcher - Martyr of Dusk based deck_18
|
||||
[Main]
|
||||
1 Bishop of Binding|RIX
|
||||
1 Bishop of the Bloodstained|XLN
|
||||
1 Call to the Feast|XLN
|
||||
1 Champion of Dusk|RIX
|
||||
1 Dusk Legion Zealot|RIX
|
||||
1 Duskborne Skymarcher|XLN
|
||||
1 Elenda, the Dusk Rose|RIX
|
||||
1 Forerunner of the Legion|RIX
|
||||
1 Ixalan's Binding|XLN
|
||||
1 Kitesail Freebooter|XLN
|
||||
1 Legion Conquistador|XLN
|
||||
1 Legion Lieutenant|RIX
|
||||
1 Legion's Landing|XLN
|
||||
1 Looming Altisaur|XLN
|
||||
1 Martyr of Dusk|RIX
|
||||
1 Mavren Fein, Dusk Apostle|XLN
|
||||
1 Pirate's Cutlass|XLN
|
||||
8 Plains|RIX
|
||||
1 Paladin of Atonement|RIX
|
||||
1 Paladin of the Bloodstained|XLN
|
||||
9 Plains|RIX
|
||||
1 Queen's Commission|XLN
|
||||
1 Radiant Destiny|RIX
|
||||
1 Sadistic Skymarcher|RIX
|
||||
1 Sanctum Seeker|XLN
|
||||
1 Skymarcher Aspirant|RIX
|
||||
8 Swamp|RIX
|
||||
1 Temple Altisaur|RIX
|
||||
1 Tetzimoc, Primal Death|RIX
|
||||
1 Spreading Rot|XLN
|
||||
7 Swamp|RIX
|
||||
1 Unclaimed Territory|XLN
|
||||
1 Vanquish the Weak|XLN
|
||||
1 Vicious Conquistador|XLN
|
||||
1 Zetalpa, Primal Dawn|RIX
|
||||
[Sideboard]
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
[metadata]
|
||||
Name=Crashing Tide - Jadelight Ranger based deck_12
|
||||
Name=Crashing Tide - Merfolk Mistbinder based deck_10
|
||||
[Main]
|
||||
1 Carnage Tyrant|XLN
|
||||
1 Champion of Dusk|RIX
|
||||
1 Admiral's Order|RIX
|
||||
1 Aggressive Urge|RIX
|
||||
1 Crashing Tide|RIX
|
||||
1 Deeproot Elite|RIX
|
||||
1 Drover of the Mighty|XLN
|
||||
1 Fell Flagship|XLN
|
||||
1 Deeproot Waters|XLN
|
||||
7 Forest|RIX
|
||||
1 Hostage Taker|XLN
|
||||
5 Island|RIX
|
||||
9 Island|RIX
|
||||
1 Jade Bearer|RIX
|
||||
1 Jadelight Ranger|RIX
|
||||
1 Jungleborn Pioneer|RIX
|
||||
@@ -17,17 +15,17 @@ Name=Crashing Tide - Jadelight Ranger based deck_12
|
||||
1 Kumena, Tyrant of Orazca|RIX
|
||||
1 Merfolk Branchwalker|XLN
|
||||
1 Merfolk Mistbinder|RIX
|
||||
1 Mist-Cloaked Herald|RIX
|
||||
1 One With the Wind|XLN
|
||||
1 Prosperous Pirates|XLN
|
||||
1 Ripjaw Raptor|XLN
|
||||
1 Seafloor Oracle|RIX
|
||||
1 Shapers of Nature|XLN
|
||||
1 Silvergill Adept|RIX
|
||||
1 Siren Lookout|XLN
|
||||
1 Spell Pierce|XLN
|
||||
3 Swamp|RIX
|
||||
1 Swift Warden|RIX
|
||||
1 Tempest Caller|XLN
|
||||
1 Tendershoot Dryad|RIX
|
||||
1 The Immortal Sun|RIX
|
||||
1 Unclaimed Territory|XLN
|
||||
1 Vraska's Contempt|XLN
|
||||
1 Wanted Scoundrels|XLN
|
||||
1 Watertrap Weaver|XLN
|
||||
[Sideboard]
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
[metadata]
|
||||
Name=Jungleborn Pioneer - Kumena, Tyrant of Orazca based deck_20
|
||||
[Main]
|
||||
1 Castaway's Despair|XLN
|
||||
1 Chart a Course|XLN
|
||||
1 Deeproot Elite|RIX
|
||||
1 Deeproot Waters|XLN
|
||||
1 Dusk Legion Dreadnought|XLN
|
||||
6 Forest|RIX
|
||||
8 Island|RIX
|
||||
1 Jade Bearer|RIX
|
||||
1 Jadelight Ranger|RIX
|
||||
1 Jungleborn Pioneer|RIX
|
||||
1 Kumena's Speaker|XLN
|
||||
1 Kumena, Tyrant of Orazca|RIX
|
||||
1 Lookout's Dispersal|XLN
|
||||
1 Merfolk Branchwalker|XLN
|
||||
1 Merfolk Mistbinder|RIX
|
||||
1 Mist-Cloaked Herald|RIX
|
||||
1 Plains|RIX
|
||||
1 Priest of the Wakening Sun|XLN
|
||||
1 Seafloor Oracle|RIX
|
||||
1 Silvergill Adept|RIX
|
||||
1 Snapping Sailback|XLN
|
||||
1 Snubhorn Sentry|RIX
|
||||
1 Spell Pierce|XLN
|
||||
1 Spike-Tailed Ceratops|XLN
|
||||
1 Sunpetal Grove|XLN
|
||||
1 Tempest Caller|XLN
|
||||
1 Unclaimed Territory|XLN
|
||||
1 Vanquisher's Banner|XLN
|
||||
[Sideboard]
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
[metadata]
|
||||
Name=Merfolk Mistbinder - Kumena, Tyrant of Orazca based deck_11
|
||||
Name=Kumena, Tyrant of Orazca - Silvergill Adept based deck_3
|
||||
[Main]
|
||||
1 Aquatic Incursion|RIX
|
||||
1 Carnage Tyrant|XLN
|
||||
1 Crested Herdcaller|RIX
|
||||
1 Atzocan Archer|XLN
|
||||
1 Deeproot Elite|RIX
|
||||
1 Deeproot Waters|XLN
|
||||
9 Forest|RIX
|
||||
7 Island|RIX
|
||||
7 Forest|RIX
|
||||
9 Island|RIX
|
||||
1 Jace's Sentinel|XLN
|
||||
1 Jade Bearer|RIX
|
||||
1 Jungle Delver|XLN
|
||||
1 Jungleborn Pioneer|RIX
|
||||
1 Kumena's Speaker|XLN
|
||||
1 Kumena, Tyrant of Orazca|RIX
|
||||
1 Merfolk Branchwalker|XLN
|
||||
1 Merfolk Mistbinder|RIX
|
||||
1 Mist-Cloaked Herald|RIX
|
||||
1 Pirate's Cutlass|XLN
|
||||
1 Ripjaw Raptor|XLN
|
||||
1 Overflowing Insight|XLN
|
||||
1 Ravenous Daggertooth|XLN
|
||||
1 River's Rebuke|XLN
|
||||
1 Savage Stomp|XLN
|
||||
1 Run Aground|XLN
|
||||
1 Seafloor Oracle|RIX
|
||||
1 Shapers of Nature|XLN
|
||||
1 Silvergill Adept|RIX
|
||||
1 Siren Lookout|XLN
|
||||
1 Spell Pierce|XLN
|
||||
1 The Immortal Sun|RIX
|
||||
1 Thrashing Brontodon|RIX
|
||||
1 Spike-Tailed Ceratops|XLN
|
||||
1 Tendershoot Dryad|RIX
|
||||
1 Unclaimed Territory|XLN
|
||||
1 Vanquisher's Banner|XLN
|
||||
[Sideboard]
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
[metadata]
|
||||
Name=Swift Warden - Merfolk Mistbinder based deck_2
|
||||
Name=Merfolk Mistbinder - Deeproot Elite based deck_28
|
||||
[Main]
|
||||
1 Cherished Hatchling|RIX
|
||||
1 Arcane Adaptation|XLN
|
||||
1 Deadeye Quartermaster|XLN
|
||||
1 Deeproot Elite|RIX
|
||||
1 Deeproot Waters|XLN
|
||||
1 Fell Flagship|XLN
|
||||
9 Forest|RIX
|
||||
7 Island|RIX
|
||||
6 Forest|RIX
|
||||
1 Grasping Current|XLN
|
||||
10 Island|RIX
|
||||
1 Jace, Ingenious Mind-Mage|XLN
|
||||
1 Jade Bearer|RIX
|
||||
1 Jadelight Ranger|RIX
|
||||
1 Jungleborn Pioneer|RIX
|
||||
1 Kopala, Warden of Waves|XLN
|
||||
1 Kumena's Speaker|XLN
|
||||
1 Kumena, Tyrant of Orazca|RIX
|
||||
1 Merfolk Branchwalker|XLN
|
||||
1 Merfolk Mistbinder|RIX
|
||||
1 Mist-Cloaked Herald|RIX
|
||||
1 Nezahal, Primal Tide|RIX
|
||||
1 Ripjaw Raptor|XLN
|
||||
1 Seafloor Oracle|RIX
|
||||
1 Silvergill Adept|RIX
|
||||
1 Spell Pierce|XLN
|
||||
1 Swift Warden|RIX
|
||||
1 Storm Fleet Spy|XLN
|
||||
1 Strider Harness|RIX
|
||||
1 Tendershoot Dryad|RIX
|
||||
1 The Immortal Sun|RIX
|
||||
1 Timestream Navigator|RIX
|
||||
1 Unclaimed Territory|XLN
|
||||
1 Vanquisher's Banner|XLN
|
||||
1 Warkite Marauder|RIX
|
||||
1 Wind Strider|XLN
|
||||
[Sideboard]
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
[metadata]
|
||||
Name=Kumena, Tyrant of Orazca - Kumena's Speaker based deck_11
|
||||
Name=Seafloor Oracle - Kumena's Speaker based deck_7
|
||||
[Main]
|
||||
1 Air Elemental|XLN
|
||||
1 Aquatic Incursion|RIX
|
||||
1 Carnage Tyrant|XLN
|
||||
1 Commune with Dinosaurs|XLN
|
||||
1 Crashing Tide|RIX
|
||||
1 Deadeye Quartermaster|XLN
|
||||
1 Deeproot Elite|RIX
|
||||
1 Deeproot Waters|XLN
|
||||
8 Forest|RIX
|
||||
8 Island|RIX
|
||||
1 Drover of the Mighty|XLN
|
||||
1 Fleet Swallower|XLN
|
||||
1 Flood of Recollection|RIX
|
||||
7 Forest|RIX
|
||||
1 Grasping Current|XLN
|
||||
9 Island|RIX
|
||||
1 Jade Bearer|RIX
|
||||
1 Jadecraft Artisan|RIX
|
||||
1 Jadelight Ranger|RIX
|
||||
1 Jungleborn Pioneer|RIX
|
||||
1 Kumena's Speaker|XLN
|
||||
1 Kumena, Tyrant of Orazca|RIX
|
||||
1 Merfolk Branchwalker|XLN
|
||||
1 Merfolk Mistbinder|RIX
|
||||
1 Mist-Cloaked Herald|RIX
|
||||
1 Nezahal, Primal Tide|RIX
|
||||
1 Ripjaw Raptor|XLN
|
||||
1 River's Rebuke|XLN
|
||||
1 Savage Stomp|XLN
|
||||
1 Seafloor Oracle|RIX
|
||||
1 Silvergill Adept|RIX
|
||||
1 Snapping Sailback|XLN
|
||||
1 Siren Lookout|XLN
|
||||
1 Spell Pierce|XLN
|
||||
1 Swift Warden|RIX
|
||||
1 Tendershoot Dryad|RIX
|
||||
1 Thundering Spineback|XLN
|
||||
1 Unclaimed Territory|XLN
|
||||
[Sideboard]
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
[metadata]
|
||||
Name=Swift Warden - Kumena's Speaker based deck_7
|
||||
[Main]
|
||||
1 Deeproot Elite|RIX
|
||||
1 Deeproot Waters|XLN
|
||||
1 Depths of Desire|XLN
|
||||
9 Forest|RIX
|
||||
1 Golden Guardian|RIX
|
||||
1 Grasping Current|XLN
|
||||
1 Hardy Veteran|RIX
|
||||
8 Island|RIX
|
||||
1 Jade Bearer|RIX
|
||||
1 Jadelight Ranger|RIX
|
||||
1 Jungleborn Pioneer|RIX
|
||||
1 Kopala, Warden of Waves|XLN
|
||||
1 Kumena's Speaker|XLN
|
||||
1 Kumena, Tyrant of Orazca|RIX
|
||||
1 Merfolk Branchwalker|XLN
|
||||
1 Merfolk Mistbinder|RIX
|
||||
1 Mist-Cloaked Herald|RIX
|
||||
1 Seafloor Oracle|RIX
|
||||
1 Shadowed Caravel|XLN
|
||||
1 Silvergill Adept|RIX
|
||||
1 Soul of the Rapids|RIX
|
||||
1 Spell Pierce|XLN
|
||||
1 Swift Warden|RIX
|
||||
1 Verdant Sun's Avatar|XLN
|
||||
1 Wildgrowth Walker|XLN
|
||||
[Sideboard]
|
||||
|
||||
@@ -1,33 +1,34 @@
|
||||
[metadata]
|
||||
Name=Gishath, Sun's Avatar - Commune with Dinosaurs based deck_12
|
||||
Name=Gishath, Sun's Avatar - Thunderherd Migration based deck_31
|
||||
[Main]
|
||||
1 Atzocan Seer|RIX
|
||||
1 Bishop of Binding|RIX
|
||||
1 Captivating Crew|XLN
|
||||
1 Blight Keeper|XLN
|
||||
1 Carnage Tyrant|XLN
|
||||
1 Commune with Dinosaurs|XLN
|
||||
1 Deathgorge Scavenger|XLN
|
||||
1 Drover of the Mighty|XLN
|
||||
8 Forest|RIX
|
||||
1 Ghalta, Primal Hunger|RIX
|
||||
7 Forest|RIX
|
||||
1 Gishath, Sun's Avatar|XLN
|
||||
1 Gruesome Fate|RIX
|
||||
1 Hierophant's Chalice|XLN
|
||||
1 Ixalan's Binding|XLN
|
||||
1 Mavren Fein, Dusk Apostle|XLN
|
||||
1 Merfolk Branchwalker|XLN
|
||||
3 Mountain|RIX
|
||||
1 Otepec Huntmaster|XLN
|
||||
2 Mountain|RIX
|
||||
1 Paladin of Atonement|RIX
|
||||
4 Plains|RIX
|
||||
1 Ranging Raptors|XLN
|
||||
1 Raptor Companion|RIX
|
||||
1 Regisaur Alpha|XLN
|
||||
1 Rekindling Phoenix|RIX
|
||||
1 Ripjaw Raptor|XLN
|
||||
1 Rootbound Crag|XLN
|
||||
1 Settle the Wreckage|XLN
|
||||
1 Sunpetal Grove|XLN
|
||||
1 Swift Warden|RIX
|
||||
1 Temple Altisaur|RIX
|
||||
2 Swamp|RIX
|
||||
1 Thrashing Brontodon|RIX
|
||||
1 Thunderherd Migration|RIX
|
||||
1 Tilonalli's Knight|XLN
|
||||
1 Thundering Spineback|XLN
|
||||
1 Vampire's Zeal|XLN
|
||||
1 Voracious Vampire|RIX
|
||||
1 Vraska's Contempt|XLN
|
||||
1 Wayward Swordtooth|RIX
|
||||
1 Zacama, Primal Calamity|RIX
|
||||
[Sideboard]
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
[metadata]
|
||||
Name=Huatli, Warrior Poet - Drover of the Mighty based deck_16
|
||||
[Main]
|
||||
1 Atzocan Archer|XLN
|
||||
1 Baffling End|RIX
|
||||
1 Carnage Tyrant|XLN
|
||||
1 Charging Monstrosaur|XLN
|
||||
1 Commune with Dinosaurs|XLN
|
||||
1 Crushing Canopy|XLN
|
||||
1 Daring Buccaneer|RIX
|
||||
1 Deathgorge Scavenger|XLN
|
||||
1 Drover of the Mighty|XLN
|
||||
1 Fathom Fleet Firebrand|XLN
|
||||
7 Forest|RIX
|
||||
1 Ghalta, Primal Hunger|RIX
|
||||
1 Huatli, Warrior Poet|XLN
|
||||
1 Kinjalli's Sunwing|XLN
|
||||
4 Mountain|RIX
|
||||
1 Otepec Huntmaster|XLN
|
||||
3 Plains|RIX
|
||||
1 Prying Blade|XLN
|
||||
1 Ranging Raptors|XLN
|
||||
1 Reckless Rage|RIX
|
||||
1 Regisaur Alpha|XLN
|
||||
1 Rekindling Phoenix|RIX
|
||||
1 Ripjaw Raptor|XLN
|
||||
1 Rootbound Crag|XLN
|
||||
1 Sun Sentinel|RIX
|
||||
1 Sunpetal Grove|XLN
|
||||
1 Thunderherd Migration|RIX
|
||||
1 Unclaimed Territory|XLN
|
||||
1 Zetalpa, Primal Dawn|RIX
|
||||
[Sideboard]
|
||||
|
||||
@@ -1,33 +1,32 @@
|
||||
[metadata]
|
||||
Name=Savage Stomp - Carnage Tyrant based deck_2
|
||||
Name=Otepec Huntmaster - Commune with Dinosaurs based deck_24
|
||||
[Main]
|
||||
1 Angrath, the Flame-Chained|RIX
|
||||
1 Captivating Crew|XLN
|
||||
1 Carnage Tyrant|XLN
|
||||
1 Commune with Dinosaurs|XLN
|
||||
1 Deathgorge Scavenger|XLN
|
||||
1 Dire Fleet Daredevil|RIX
|
||||
1 Dire Fleet Neckbreaker|RIX
|
||||
1 Dire Fleet Poisoner|RIX
|
||||
1 Deeproot Champion|XLN
|
||||
1 Drover of the Mighty|XLN
|
||||
1 Fell Flagship|XLN
|
||||
1 Forerunner of the Coalition|RIX
|
||||
8 Forest|RIX
|
||||
11 Forest|RIX
|
||||
1 Ghalta, Primal Hunger|RIX
|
||||
1 Gleaming Barrier|RIX
|
||||
1 Jadelight Ranger|RIX
|
||||
1 Lightning Strike|XLN
|
||||
1 Merfolk Branchwalker|XLN
|
||||
4 Mountain|RIX
|
||||
1 Otepec Huntmaster|XLN
|
||||
1 Ranging Raptors|XLN
|
||||
1 Ravenous Daggertooth|XLN
|
||||
1 Reckless Rage|RIX
|
||||
1 Regisaur Alpha|XLN
|
||||
1 Rekindling Phoenix|RIX
|
||||
1 Ripjaw Raptor|XLN
|
||||
1 Rootbound Crag|XLN
|
||||
1 Savage Stomp|XLN
|
||||
3 Swamp|RIX
|
||||
1 Shadowed Caravel|XLN
|
||||
1 Thrashing Brontodon|RIX
|
||||
1 Thunderherd Migration|RIX
|
||||
1 Trove of Temptation|XLN
|
||||
1 Unclaimed Territory|XLN
|
||||
1 Vraska's Contempt|XLN
|
||||
[Sideboard]
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
[metadata]
|
||||
Name=Regisaur Alpha - Commune with Dinosaurs based deck_30
|
||||
[Main]
|
||||
1 Carnage Tyrant|XLN
|
||||
1 Cobbled Wings|XLN
|
||||
1 Commune with Dinosaurs|XLN
|
||||
1 Deathgorge Scavenger|XLN
|
||||
1 Drover of the Mighty|XLN
|
||||
1 Fanatical Firebrand|RIX
|
||||
1 Fiery Cannonade|XLN
|
||||
10 Forest|RIX
|
||||
1 Ghalta, Primal Hunger|RIX
|
||||
1 Hierophant's Chalice|XLN
|
||||
1 Ixalli's Diviner|XLN
|
||||
1 Merfolk Branchwalker|XLN
|
||||
6 Mountain|RIX
|
||||
1 Needletooth Raptor|RIX
|
||||
1 Otepec Huntmaster|XLN
|
||||
1 Overgrown Armasaur|RIX
|
||||
1 Regisaur Alpha|XLN
|
||||
1 Rekindling Phoenix|RIX
|
||||
1 Ripjaw Raptor|XLN
|
||||
1 Rootbound Crag|XLN
|
||||
1 Sleek Schooner|XLN
|
||||
1 Storm Fleet Pyromancer|XLN
|
||||
1 Strider Harness|RIX
|
||||
1 Swashbuckling|XLN
|
||||
1 Thrashing Brontodon|RIX
|
||||
1 Thunderherd Migration|RIX
|
||||
[Sideboard]
|
||||
|
||||
@@ -1,33 +1,32 @@
|
||||
[metadata]
|
||||
Name=Otepec Huntmaster - Thunderherd Migration based deck_10
|
||||
Name=Savage Stomp - Ghalta, Primal Hunger based deck_2
|
||||
[Main]
|
||||
1 Carnage Tyrant|XLN
|
||||
1 Charging Monstrosaur|XLN
|
||||
1 Cobbled Wings|XLN
|
||||
1 Commune with Dinosaurs|XLN
|
||||
1 Deathgorge Scavenger|XLN
|
||||
1 Dire Fleet Captain|XLN
|
||||
1 Drover of the Mighty|XLN
|
||||
7 Forest|RIX
|
||||
11 Forest|RIX
|
||||
1 Ghalta, Primal Hunger|RIX
|
||||
1 Lightning Strike|XLN
|
||||
1 Jadelight Ranger|RIX
|
||||
1 Merfolk Branchwalker|XLN
|
||||
4 Mountain|RIX
|
||||
1 Needletooth Raptor|RIX
|
||||
1 Otepec Huntmaster|XLN
|
||||
1 Pirate's Cutlass|XLN
|
||||
1 Ranging Raptors|XLN
|
||||
1 Reckless Rage|RIX
|
||||
1 Regisaur Alpha|XLN
|
||||
1 Rekindling Phoenix|RIX
|
||||
1 Ripjaw Raptor|XLN
|
||||
1 Rootbound Crag|XLN
|
||||
1 Sanctum Seeker|XLN
|
||||
1 Savage Stomp|XLN
|
||||
4 Swamp|RIX
|
||||
1 Sleek Schooner|XLN
|
||||
1 Storm Fleet Arsonist|XLN
|
||||
1 Thrashing Brontodon|RIX
|
||||
1 Thunderherd Migration|RIX
|
||||
1 Tishana's Wayfinder|XLN
|
||||
1 Traveler's Amulet|RIX
|
||||
1 Unclaimed Territory|XLN
|
||||
1 Vraska's Contempt|XLN
|
||||
1 Vraska, Relic Seeker|XLN
|
||||
1 Walk the Plank|XLN
|
||||
1 Wayward Swordtooth|RIX
|
||||
[Sideboard]
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
[metadata]
|
||||
Name=Azor, the Lawbringer - Skymarcher Aspirant based deck_18
|
||||
[Main]
|
||||
1 Aquatic Incursion|RIX
|
||||
1 Azor, the Lawbringer|RIX
|
||||
1 Curious Obsession|RIX
|
||||
1 Deadeye Tormentor|XLN
|
||||
1 Desperate Castaways|XLN
|
||||
1 Dusk Legion Dreadnought|XLN
|
||||
1 Duskborne Skymarcher|XLN
|
||||
1 Glacial Fortress|XLN
|
||||
4 Island|RIX
|
||||
1 Legion Conquistador|XLN
|
||||
1 Legion Lieutenant|RIX
|
||||
1 Legion's Landing|XLN
|
||||
1 Martyr of Dusk|RIX
|
||||
1 Mavren Fein, Dusk Apostle|XLN
|
||||
1 Paladin of Atonement|RIX
|
||||
1 Pirate's Cutlass|XLN
|
||||
9 Plains|RIX
|
||||
1 Pride of Conquerors|RIX
|
||||
1 Profane Procession|RIX
|
||||
1 Radiant Destiny|RIX
|
||||
1 Search for Azcanta|XLN
|
||||
1 Settle the Wreckage|XLN
|
||||
1 Shore Keeper|XLN
|
||||
1 Skyblade of the Legion|XLN
|
||||
1 Skymarcher Aspirant|RIX
|
||||
1 Spell Swindle|XLN
|
||||
2 Swamp|RIX
|
||||
1 Unclaimed Territory|XLN
|
||||
[Sideboard]
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
[metadata]
|
||||
Name=Tetzimoc, Primal Death - Commune with Dinosaurs based deck_19
|
||||
[Main]
|
||||
1 Azor's Gateway|RIX
|
||||
1 Carnage Tyrant|XLN
|
||||
1 Commune with Dinosaurs|XLN
|
||||
1 Deathgorge Scavenger|XLN
|
||||
1 Dragonskull Summit|XLN
|
||||
1 Drover of the Mighty|XLN
|
||||
8 Forest|RIX
|
||||
1 Ghalta, Primal Hunger|RIX
|
||||
1 Giltgrove Stalker|RIX
|
||||
1 Jungleborn Pioneer|RIX
|
||||
1 Merfolk Branchwalker|XLN
|
||||
3 Mountain|RIX
|
||||
1 Nest Robber|XLN
|
||||
1 New Horizons|XLN
|
||||
1 Reaver Ambush|RIX
|
||||
1 Regisaur Alpha|XLN
|
||||
1 Rekindling Phoenix|RIX
|
||||
1 Ripjaw Raptor|XLN
|
||||
1 Rootbound Crag|XLN
|
||||
1 Storm Fleet Pyromancer|XLN
|
||||
4 Swamp|RIX
|
||||
1 Tetzimoc, Primal Death|RIX
|
||||
1 Thrashing Brontodon|RIX
|
||||
1 Thunderherd Migration|RIX
|
||||
1 Treasure Map|XLN
|
||||
1 Vraska's Contempt|XLN
|
||||
1 Walk the Plank|XLN
|
||||
1 Wayward Swordtooth|RIX
|
||||
[Sideboard]
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
[metadata]
|
||||
Name=Vraska, Relic Seeker - Jadelight Ranger based deck_21
|
||||
[Main]
|
||||
1 Awakened Amalgam|RIX
|
||||
1 Blight Keeper|XLN
|
||||
1 Crested Herdcaller|RIX
|
||||
1 Dead Man's Chest|RIX
|
||||
1 Deadeye Brawler|RIX
|
||||
1 Deathgorge Scavenger|XLN
|
||||
1 Depths of Desire|XLN
|
||||
1 Dire Fleet Neckbreaker|RIX
|
||||
1 Drowned Catacomb|XLN
|
||||
1 Field of Ruin|XLN
|
||||
6 Forest|RIX
|
||||
1 Giltgrove Stalker|RIX
|
||||
1 Goblin Trailblazer|RIX
|
||||
1 Growing Rites of Itlimoc|XLN
|
||||
1 Island|RIX
|
||||
1 Jadelight Ranger|RIX
|
||||
1 Knight of the Stampede|RIX
|
||||
1 Mark of the Vampire|XLN
|
||||
1 Merfolk Branchwalker|XLN
|
||||
2 Mountain|RIX
|
||||
1 Old-Growth Dryads|XLN
|
||||
1 Recover|RIX
|
||||
1 Rekindling Phoenix|RIX
|
||||
1 Rootbound Crag|XLN
|
||||
1 Rummaging Goblin|XLN
|
||||
1 Snapping Sailback|XLN
|
||||
5 Swamp|RIX
|
||||
1 Vraska's Contempt|XLN
|
||||
1 Vraska's Scorn|RIX
|
||||
1 Vraska, Relic Seeker|XLN
|
||||
[Sideboard]
|
||||
|
||||
@@ -571,7 +571,8 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase {
|
||||
if (secondKeyCard != null) {
|
||||
possibleList.removeAll(StaticData.instance().getCommonCards().getAllCards(secondKeyCard.getName()));
|
||||
}
|
||||
Iterator<PaperCard> iRandomPool = CardRanker.rankCardsInDeck(possibleList.subList(0, targetSize <= possibleList.size() ? targetSize : possibleList.size())).iterator();
|
||||
//Iterator<PaperCard> iRandomPool = CardRanker.rankCardsInDeck(possibleList.subList(0, targetSize <= possibleList.size() ? targetSize : possibleList.size())).iterator();
|
||||
Iterator<PaperCard> iRandomPool = possibleList.iterator();
|
||||
while (deckList.size() < targetSize) {
|
||||
if (logToConsole) {
|
||||
System.out.println("WARNING: Fixing deck size, currently " + deckList.size() + " cards.");
|
||||
@@ -805,7 +806,9 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase {
|
||||
possibleList.removeAll(StaticData.instance().getCommonCards().getAllCards(secondKeyCard.getName()));
|
||||
}
|
||||
Collections.shuffle(possibleList);
|
||||
addManaCurveCards(CardRanker.rankCardsInDeck(possibleList.subList(0, targetSize*3 <= possibleList.size() ? targetSize*3 : possibleList.size())),
|
||||
//addManaCurveCards(CardRanker.rankCardsInDeck(possibleList.subList(0, targetSize*3 <= possibleList.size() ? targetSize*3 : possibleList.size())),
|
||||
//num, "Random Card");
|
||||
addManaCurveCards(possibleList,
|
||||
num, "Random Card");
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user