mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +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;
|
package forge.planarconquestgenerate;
|
||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
|
import com.google.common.base.Predicates;
|
||||||
|
import com.google.common.collect.Iterables;
|
||||||
import forge.GuiBase;
|
import forge.GuiBase;
|
||||||
import forge.GuiDesktop;
|
import forge.GuiDesktop;
|
||||||
import forge.LobbyPlayer;
|
import forge.LobbyPlayer;
|
||||||
import forge.StaticData;
|
import forge.StaticData;
|
||||||
|
import forge.card.CardRulesPredicates;
|
||||||
import forge.deck.*;
|
import forge.deck.*;
|
||||||
import forge.deck.io.DeckStorage;
|
import forge.deck.io.DeckStorage;
|
||||||
import forge.game.GameFormat;
|
import forge.game.GameFormat;
|
||||||
@@ -26,6 +29,7 @@ import forge.util.TextUtil;
|
|||||||
import forge.view.SimulateMatch;
|
import forge.view.SimulateMatch;
|
||||||
import org.apache.commons.lang3.text.WordUtils;
|
import org.apache.commons.lang3.text.WordUtils;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
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);
|
DeckStorage storage = new DeckStorage(new File(ForgeConstants.DECK_CONSTRUCTED_DIR), ForgeConstants.DECK_BASE_DIR);
|
||||||
GameFormat planarConquestFormat = new GameFormat("conquest",sets,null);
|
GameFormat planarConquestFormat = new GameFormat("conquest",sets,null);
|
||||||
DeckFormat deckFormat = DeckFormat.PlanarConquest;
|
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)) {
|
if(planarConquestFormat.getFilterPrinted().apply(card)) {
|
||||||
System.out.println(card.getName());
|
System.out.println(card.getName());
|
||||||
if(true) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
DeckGroup deckGroup = new DeckGroup("SimulatedTournament");
|
DeckGroup deckGroup = new DeckGroup("SimulatedTournament");
|
||||||
List<TournamentPlayer> players = new ArrayList<>();
|
List<TournamentPlayer> players = new ArrayList<>();
|
||||||
int numPlayers=0;
|
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 genDeck = DeckgenUtil.buildPlanarConquestDeck(card, planarConquestFormat, deckFormat);
|
||||||
Deck d = new Deck(genDeck,genDeck.getName()+"_"+i);
|
Deck d = new Deck(genDeck,genDeck.getName()+"_"+i);
|
||||||
deckGroup.addAiDeck(d);
|
deckGroup.addAiDeck(d);
|
||||||
@@ -80,73 +89,8 @@ public class PlanarConquestGeneratorTest {
|
|||||||
numPlayers++;
|
numPlayers++;
|
||||||
}
|
}
|
||||||
TournamentSwiss tourney = new TournamentSwiss(players, 2);
|
TournamentSwiss tourney = new TournamentSwiss(players, 2);
|
||||||
tourney.initializeTournament();
|
|
||||||
|
|
||||||
String lastWinner = "";
|
tourney = runTournament(tourney, rules, numPlayers, deckGroup);
|
||||||
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();
|
|
||||||
String deckName = tourney.getAllPlayers().get(0).getPlayer().getName();
|
String deckName = tourney.getAllPlayers().get(0).getPlayer().getName();
|
||||||
Deck winningDeck;
|
Deck winningDeck;
|
||||||
for(Deck deck:deckGroup.getAiDecks()){
|
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]
|
[metadata]
|
||||||
Name=Mavren Fein, Dusk Apostle - Call to the Feast based deck_15
|
Name=Duskborne Skymarcher - Legion Lieutenant based deck_18
|
||||||
[Main]
|
[Main]
|
||||||
1 Bishop of Binding|RIX
|
1 Bright Reprisal|XLN
|
||||||
1 Bishop of the Bloodstained|XLN
|
|
||||||
1 Call to the Feast|XLN
|
1 Call to the Feast|XLN
|
||||||
1 Champion of Dusk|RIX
|
1 Champion of Dusk|RIX
|
||||||
1 Dusk Legion Zealot|RIX
|
1 Dusk Legion Zealot|RIX
|
||||||
1 Duskborne Skymarcher|XLN
|
1 Duskborne Skymarcher|XLN
|
||||||
1 Fell Flagship|XLN
|
1 Huatli's Snubhorn|XLN
|
||||||
1 Field of Ruin|XLN
|
|
||||||
1 Forerunner of the Coalition|RIX
|
|
||||||
1 Forerunner of the Legion|RIX
|
|
||||||
1 Ixalan's Binding|XLN
|
1 Ixalan's Binding|XLN
|
||||||
|
1 Kinjalli's Sunwing|XLN
|
||||||
1 Legion Conquistador|XLN
|
1 Legion Conquistador|XLN
|
||||||
1 Legion Lieutenant|RIX
|
1 Legion Lieutenant|RIX
|
||||||
1 Legion's Landing|XLN
|
1 Legion's Landing|XLN
|
||||||
|
1 Looming Altisaur|XLN
|
||||||
|
1 Lurking Chupacabra|XLN
|
||||||
1 Martyr of Dusk|RIX
|
1 Martyr of Dusk|RIX
|
||||||
1 Mavren Fein, Dusk Apostle|XLN
|
1 Mavren Fein, Dusk Apostle|XLN
|
||||||
9 Plains|RIX
|
10 Plains|RIX
|
||||||
1 Profane Procession|RIX
|
1 Profane Procession|RIX
|
||||||
1 Queen's Commission|XLN
|
1 Queen's Commission|XLN
|
||||||
1 Radiant Destiny|RIX
|
1 Radiant Destiny|RIX
|
||||||
1 Sanctum Seeker|XLN
|
1 Sanctum Seeker|XLN
|
||||||
1 Settle the Wreckage|XLN
|
1 Skulduggery|XLN
|
||||||
|
1 Skyblade of the Legion|XLN
|
||||||
1 Skymarcher Aspirant|RIX
|
1 Skymarcher Aspirant|RIX
|
||||||
6 Swamp|RIX
|
6 Swamp|RIX
|
||||||
1 Temple Altisaur|RIX
|
|
||||||
1 Tetzimoc, Primal Death|RIX
|
|
||||||
1 Unclaimed Territory|XLN
|
1 Unclaimed Territory|XLN
|
||||||
|
1 Vicious Conquistador|XLN
|
||||||
[Sideboard]
|
[Sideboard]
|
||||||
|
|
||||||
@@ -1,32 +1,32 @@
|
|||||||
[metadata]
|
[metadata]
|
||||||
Name=Legion Lieutenant - Skymarcher Aspirant based deck_3
|
Name=Elenda, the Dusk Rose - Call to the Feast based deck_14
|
||||||
[Main]
|
[Main]
|
||||||
1 Bishop of the Bloodstained|XLN
|
|
||||||
1 Call to the Feast|XLN
|
1 Call to the Feast|XLN
|
||||||
1 Champion of Dusk|RIX
|
1 Champion of Dusk|RIX
|
||||||
1 Crashing Tide|RIX
|
1 Dire Fleet Ravager|XLN
|
||||||
1 Curious Obsession|RIX
|
1 Dowsing Dagger|XLN
|
||||||
1 Dusk Legion Zealot|RIX
|
1 Dusk Legion Zealot|RIX
|
||||||
1 Duskborne Skymarcher|XLN
|
1 Duskborne Skymarcher|XLN
|
||||||
1 Elenda, the Dusk Rose|RIX
|
1 Elenda, the Dusk Rose|RIX
|
||||||
1 Forerunner of the Legion|RIX
|
1 Field of Ruin|XLN
|
||||||
1 Hostage Taker|XLN
|
1 Impale|RIX
|
||||||
2 Island|RIX
|
|
||||||
1 Ixalan's Binding|XLN
|
1 Ixalan's Binding|XLN
|
||||||
1 Kinjalli's Sunwing|XLN
|
|
||||||
1 Legion Lieutenant|RIX
|
1 Legion Lieutenant|RIX
|
||||||
1 Legion's Landing|XLN
|
1 Legion's Landing|XLN
|
||||||
1 Martyr of Dusk|RIX
|
1 Martyr of Dusk|RIX
|
||||||
1 Mavren Fein, Dusk Apostle|XLN
|
1 Mavren Fein, Dusk Apostle|XLN
|
||||||
1 Pirate's Cutlass|XLN
|
8 Plains|RIX
|
||||||
7 Plains|RIX
|
|
||||||
1 Pride of Conquerors|RIX
|
|
||||||
1 Queen's Commission|XLN
|
1 Queen's Commission|XLN
|
||||||
1 Radiant Destiny|RIX
|
1 Radiant Destiny|RIX
|
||||||
|
1 Rallying Roar|XLN
|
||||||
|
1 Sanctum Seeker|XLN
|
||||||
|
1 Skymarch Bloodletter|XLN
|
||||||
1 Skymarcher Aspirant|RIX
|
1 Skymarcher Aspirant|RIX
|
||||||
|
1 Slash of Talons|XLN
|
||||||
|
1 Snubhorn Sentry|RIX
|
||||||
7 Swamp|RIX
|
7 Swamp|RIX
|
||||||
|
1 Temple Altisaur|RIX
|
||||||
1 Unclaimed Territory|XLN
|
1 Unclaimed Territory|XLN
|
||||||
1 Vraska's Contempt|XLN
|
1 Voracious Vampire|RIX
|
||||||
1 Walk the Plank|XLN
|
|
||||||
[Sideboard]
|
[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]
|
[metadata]
|
||||||
Name=Forerunner of the Legion - Radiant Destiny based deck_10
|
Name=Forerunner of the Legion - Legion Lieutenant based deck_30
|
||||||
[Main]
|
[Main]
|
||||||
1 Bishop of Binding|RIX
|
|
||||||
1 Bishop of the Bloodstained|XLN
|
|
||||||
1 Call to the Feast|XLN
|
1 Call to the Feast|XLN
|
||||||
1 Champion of Dusk|RIX
|
1 Champion of Dusk|RIX
|
||||||
|
1 Dinosaur Hunter|RIX
|
||||||
1 Dusk Legion Zealot|RIX
|
1 Dusk Legion Zealot|RIX
|
||||||
1 Duskborne Skymarcher|XLN
|
1 Duskborne Skymarcher|XLN
|
||||||
1 Elenda, the Dusk Rose|RIX
|
1 Elenda, the Dusk Rose|RIX
|
||||||
1 Fell Flagship|XLN
|
|
||||||
1 Forerunner of the Coalition|RIX
|
|
||||||
1 Forerunner of the Legion|RIX
|
1 Forerunner of the Legion|RIX
|
||||||
1 Ixalan's Binding|XLN
|
1 Ixalan's Binding|XLN
|
||||||
|
1 Kinjalli's Caller|XLN
|
||||||
1 Legion Conquistador|XLN
|
1 Legion Conquistador|XLN
|
||||||
1 Legion Lieutenant|RIX
|
1 Legion Lieutenant|RIX
|
||||||
1 Legion's Landing|XLN
|
1 Legion's Landing|XLN
|
||||||
1 Martyr of Dusk|RIX
|
1 Martyr of Dusk|RIX
|
||||||
1 Mavren Fein, Dusk Apostle|XLN
|
1 Mavren Fein, Dusk Apostle|XLN
|
||||||
8 Plains|RIX
|
10 Plains|RIX
|
||||||
|
1 Prying Blade|XLN
|
||||||
1 Queen's Commission|XLN
|
1 Queen's Commission|XLN
|
||||||
1 Radiant Destiny|RIX
|
1 Radiant Destiny|RIX
|
||||||
1 Sadistic Skymarcher|RIX
|
1 Raptor Companion|RIX
|
||||||
1 Sanctum Seeker|XLN
|
1 Revel in Riches|XLN
|
||||||
|
1 Skulduggery|XLN
|
||||||
1 Skymarcher Aspirant|RIX
|
1 Skymarcher Aspirant|RIX
|
||||||
8 Swamp|RIX
|
1 Sleek Schooner|XLN
|
||||||
1 The Immortal Sun|RIX
|
1 Steadfast Armasaur|XLN
|
||||||
1 Twilight Prophet|RIX
|
6 Swamp|RIX
|
||||||
1 Unclaimed Territory|XLN
|
1 Unclaimed Territory|XLN
|
||||||
[Sideboard]
|
[Sideboard]
|
||||||
|
|
||||||
@@ -1,32 +1,31 @@
|
|||||||
[metadata]
|
[metadata]
|
||||||
Name=Champion of Dusk - Legion's Landing based deck_9
|
Name=Legion Lieutenant - Radiant Destiny based deck_5
|
||||||
[Main]
|
[Main]
|
||||||
1 Bishop of Binding|RIX
|
1 Awakened Amalgam|RIX
|
||||||
1 Bishop of the Bloodstained|XLN
|
1 Boneyard Parley|XLN
|
||||||
1 Call to the Feast|XLN
|
1 Call to the Feast|XLN
|
||||||
|
1 Captain's Hook|RIX
|
||||||
1 Champion of Dusk|RIX
|
1 Champion of Dusk|RIX
|
||||||
|
1 Desperate Castaways|XLN
|
||||||
1 Dusk Legion Zealot|RIX
|
1 Dusk Legion Zealot|RIX
|
||||||
1 Fathom Fleet Captain|XLN
|
1 Duskborne Skymarcher|XLN
|
||||||
1 Fell Flagship|XLN
|
1 Emissary of Sunrise|XLN
|
||||||
1 Field of Ruin|XLN
|
|
||||||
1 Forerunner of the Legion|RIX
|
1 Forerunner of the Legion|RIX
|
||||||
1 Ixalan's Binding|XLN
|
1 Ixalan's Binding|XLN
|
||||||
|
1 Kitesail Freebooter|XLN
|
||||||
1 Legion Lieutenant|RIX
|
1 Legion Lieutenant|RIX
|
||||||
1 Legion's Landing|XLN
|
1 Legion's Landing|XLN
|
||||||
1 Martyr of Dusk|RIX
|
1 Martyr of Dusk|RIX
|
||||||
1 Mavren Fein, Dusk Apostle|XLN
|
1 Mavren Fein, Dusk Apostle|XLN
|
||||||
7 Plains|RIX
|
8 Plains|RIX
|
||||||
1 Queen's Commission|XLN
|
1 Queen's Commission|XLN
|
||||||
1 Radiant Destiny|RIX
|
1 Radiant Destiny|RIX
|
||||||
1 Sadistic Skymarcher|RIX
|
|
||||||
1 Sanctum Seeker|XLN
|
|
||||||
1 Settle the Wreckage|XLN
|
|
||||||
1 Skymarcher Aspirant|RIX
|
1 Skymarcher Aspirant|RIX
|
||||||
|
1 Sun Sentinel|RIX
|
||||||
8 Swamp|RIX
|
8 Swamp|RIX
|
||||||
1 The Immortal Sun|RIX
|
|
||||||
1 Twilight Prophet|RIX
|
1 Twilight Prophet|RIX
|
||||||
1 Unclaimed Territory|XLN
|
1 Unclaimed Territory|XLN
|
||||||
1 Walk the Plank|XLN
|
1 Vanquisher's Banner|XLN
|
||||||
1 Wanted Scoundrels|XLN
|
1 Voracious Vampire|RIX
|
||||||
[Sideboard]
|
[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]
|
[metadata]
|
||||||
Name=Duskborne Skymarcher - Radiant Destiny based deck_2
|
Name=Sadistic Skymarcher - Martyr of Dusk based deck_18
|
||||||
[Main]
|
[Main]
|
||||||
1 Bishop of Binding|RIX
|
|
||||||
1 Bishop of the Bloodstained|XLN
|
|
||||||
1 Call to the Feast|XLN
|
1 Call to the Feast|XLN
|
||||||
1 Champion of Dusk|RIX
|
1 Champion of Dusk|RIX
|
||||||
1 Dusk Legion Zealot|RIX
|
1 Dusk Legion Zealot|RIX
|
||||||
1 Duskborne Skymarcher|XLN
|
1 Duskborne Skymarcher|XLN
|
||||||
1 Elenda, the Dusk Rose|RIX
|
|
||||||
1 Forerunner of the Legion|RIX
|
|
||||||
1 Ixalan's Binding|XLN
|
1 Ixalan's Binding|XLN
|
||||||
|
1 Kitesail Freebooter|XLN
|
||||||
1 Legion Conquistador|XLN
|
1 Legion Conquistador|XLN
|
||||||
1 Legion Lieutenant|RIX
|
1 Legion Lieutenant|RIX
|
||||||
1 Legion's Landing|XLN
|
1 Legion's Landing|XLN
|
||||||
|
1 Looming Altisaur|XLN
|
||||||
1 Martyr of Dusk|RIX
|
1 Martyr of Dusk|RIX
|
||||||
1 Mavren Fein, Dusk Apostle|XLN
|
1 Mavren Fein, Dusk Apostle|XLN
|
||||||
1 Pirate's Cutlass|XLN
|
1 Paladin of Atonement|RIX
|
||||||
8 Plains|RIX
|
1 Paladin of the Bloodstained|XLN
|
||||||
|
9 Plains|RIX
|
||||||
1 Queen's Commission|XLN
|
1 Queen's Commission|XLN
|
||||||
1 Radiant Destiny|RIX
|
1 Radiant Destiny|RIX
|
||||||
1 Sadistic Skymarcher|RIX
|
1 Sadistic Skymarcher|RIX
|
||||||
1 Sanctum Seeker|XLN
|
1 Sanctum Seeker|XLN
|
||||||
1 Skymarcher Aspirant|RIX
|
1 Skymarcher Aspirant|RIX
|
||||||
8 Swamp|RIX
|
1 Spreading Rot|XLN
|
||||||
1 Temple Altisaur|RIX
|
7 Swamp|RIX
|
||||||
1 Tetzimoc, Primal Death|RIX
|
|
||||||
1 Unclaimed Territory|XLN
|
1 Unclaimed Territory|XLN
|
||||||
|
1 Vanquish the Weak|XLN
|
||||||
1 Vicious Conquistador|XLN
|
1 Vicious Conquistador|XLN
|
||||||
|
1 Zetalpa, Primal Dawn|RIX
|
||||||
[Sideboard]
|
[Sideboard]
|
||||||
|
|
||||||
@@ -1,15 +1,13 @@
|
|||||||
[metadata]
|
[metadata]
|
||||||
Name=Crashing Tide - Jadelight Ranger based deck_12
|
Name=Crashing Tide - Merfolk Mistbinder based deck_10
|
||||||
[Main]
|
[Main]
|
||||||
1 Carnage Tyrant|XLN
|
1 Admiral's Order|RIX
|
||||||
1 Champion of Dusk|RIX
|
1 Aggressive Urge|RIX
|
||||||
1 Crashing Tide|RIX
|
1 Crashing Tide|RIX
|
||||||
1 Deeproot Elite|RIX
|
1 Deeproot Elite|RIX
|
||||||
1 Drover of the Mighty|XLN
|
1 Deeproot Waters|XLN
|
||||||
1 Fell Flagship|XLN
|
|
||||||
7 Forest|RIX
|
7 Forest|RIX
|
||||||
1 Hostage Taker|XLN
|
9 Island|RIX
|
||||||
5 Island|RIX
|
|
||||||
1 Jade Bearer|RIX
|
1 Jade Bearer|RIX
|
||||||
1 Jadelight Ranger|RIX
|
1 Jadelight Ranger|RIX
|
||||||
1 Jungleborn Pioneer|RIX
|
1 Jungleborn Pioneer|RIX
|
||||||
@@ -17,17 +15,17 @@ Name=Crashing Tide - Jadelight Ranger based deck_12
|
|||||||
1 Kumena, Tyrant of Orazca|RIX
|
1 Kumena, Tyrant of Orazca|RIX
|
||||||
1 Merfolk Branchwalker|XLN
|
1 Merfolk Branchwalker|XLN
|
||||||
1 Merfolk Mistbinder|RIX
|
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 Shapers of Nature|XLN
|
||||||
1 Silvergill Adept|RIX
|
1 Silvergill Adept|RIX
|
||||||
|
1 Siren Lookout|XLN
|
||||||
1 Spell Pierce|XLN
|
1 Spell Pierce|XLN
|
||||||
3 Swamp|RIX
|
|
||||||
1 Swift Warden|RIX
|
|
||||||
1 Tempest Caller|XLN
|
1 Tempest Caller|XLN
|
||||||
1 Tendershoot Dryad|RIX
|
|
||||||
1 The Immortal Sun|RIX
|
|
||||||
1 Unclaimed Territory|XLN
|
1 Unclaimed Territory|XLN
|
||||||
1 Vraska's Contempt|XLN
|
|
||||||
1 Wanted Scoundrels|XLN
|
|
||||||
1 Watertrap Weaver|XLN
|
1 Watertrap Weaver|XLN
|
||||||
[Sideboard]
|
[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]
|
[metadata]
|
||||||
Name=Merfolk Mistbinder - Kumena, Tyrant of Orazca based deck_11
|
Name=Kumena, Tyrant of Orazca - Silvergill Adept based deck_3
|
||||||
[Main]
|
[Main]
|
||||||
1 Aquatic Incursion|RIX
|
1 Atzocan Archer|XLN
|
||||||
1 Carnage Tyrant|XLN
|
|
||||||
1 Crested Herdcaller|RIX
|
|
||||||
1 Deeproot Elite|RIX
|
1 Deeproot Elite|RIX
|
||||||
1 Deeproot Waters|XLN
|
1 Deeproot Waters|XLN
|
||||||
9 Forest|RIX
|
7 Forest|RIX
|
||||||
7 Island|RIX
|
9 Island|RIX
|
||||||
|
1 Jace's Sentinel|XLN
|
||||||
1 Jade Bearer|RIX
|
1 Jade Bearer|RIX
|
||||||
|
1 Jungle Delver|XLN
|
||||||
1 Jungleborn Pioneer|RIX
|
1 Jungleborn Pioneer|RIX
|
||||||
1 Kumena's Speaker|XLN
|
1 Kumena's Speaker|XLN
|
||||||
1 Kumena, Tyrant of Orazca|RIX
|
1 Kumena, Tyrant of Orazca|RIX
|
||||||
1 Merfolk Branchwalker|XLN
|
1 Merfolk Branchwalker|XLN
|
||||||
1 Merfolk Mistbinder|RIX
|
1 Merfolk Mistbinder|RIX
|
||||||
1 Mist-Cloaked Herald|RIX
|
1 Mist-Cloaked Herald|RIX
|
||||||
1 Pirate's Cutlass|XLN
|
1 Overflowing Insight|XLN
|
||||||
1 Ripjaw Raptor|XLN
|
1 Ravenous Daggertooth|XLN
|
||||||
1 River's Rebuke|XLN
|
1 River's Rebuke|XLN
|
||||||
1 Savage Stomp|XLN
|
1 Run Aground|XLN
|
||||||
1 Seafloor Oracle|RIX
|
1 Seafloor Oracle|RIX
|
||||||
1 Shapers of Nature|XLN
|
1 Shapers of Nature|XLN
|
||||||
1 Silvergill Adept|RIX
|
1 Silvergill Adept|RIX
|
||||||
|
1 Siren Lookout|XLN
|
||||||
1 Spell Pierce|XLN
|
1 Spell Pierce|XLN
|
||||||
1 The Immortal Sun|RIX
|
1 Spike-Tailed Ceratops|XLN
|
||||||
1 Thrashing Brontodon|RIX
|
1 Tendershoot Dryad|RIX
|
||||||
1 Unclaimed Territory|XLN
|
1 Unclaimed Territory|XLN
|
||||||
1 Vanquisher's Banner|XLN
|
|
||||||
[Sideboard]
|
[Sideboard]
|
||||||
|
|
||||||
@@ -1,31 +1,31 @@
|
|||||||
[metadata]
|
[metadata]
|
||||||
Name=Swift Warden - Merfolk Mistbinder based deck_2
|
Name=Merfolk Mistbinder - Deeproot Elite based deck_28
|
||||||
[Main]
|
[Main]
|
||||||
1 Cherished Hatchling|RIX
|
1 Arcane Adaptation|XLN
|
||||||
|
1 Deadeye Quartermaster|XLN
|
||||||
1 Deeproot Elite|RIX
|
1 Deeproot Elite|RIX
|
||||||
1 Deeproot Waters|XLN
|
1 Deeproot Waters|XLN
|
||||||
1 Fell Flagship|XLN
|
6 Forest|RIX
|
||||||
9 Forest|RIX
|
1 Grasping Current|XLN
|
||||||
7 Island|RIX
|
10 Island|RIX
|
||||||
|
1 Jace, Ingenious Mind-Mage|XLN
|
||||||
1 Jade Bearer|RIX
|
1 Jade Bearer|RIX
|
||||||
1 Jadelight Ranger|RIX
|
|
||||||
1 Jungleborn Pioneer|RIX
|
1 Jungleborn Pioneer|RIX
|
||||||
1 Kopala, Warden of Waves|XLN
|
|
||||||
1 Kumena's Speaker|XLN
|
1 Kumena's Speaker|XLN
|
||||||
1 Kumena, Tyrant of Orazca|RIX
|
1 Kumena, Tyrant of Orazca|RIX
|
||||||
1 Merfolk Branchwalker|XLN
|
1 Merfolk Branchwalker|XLN
|
||||||
1 Merfolk Mistbinder|RIX
|
1 Merfolk Mistbinder|RIX
|
||||||
1 Mist-Cloaked Herald|RIX
|
1 Mist-Cloaked Herald|RIX
|
||||||
1 Nezahal, Primal Tide|RIX
|
|
||||||
1 Ripjaw Raptor|XLN
|
1 Ripjaw Raptor|XLN
|
||||||
1 Seafloor Oracle|RIX
|
1 Seafloor Oracle|RIX
|
||||||
1 Silvergill Adept|RIX
|
1 Silvergill Adept|RIX
|
||||||
1 Spell Pierce|XLN
|
1 Spell Pierce|XLN
|
||||||
1 Swift Warden|RIX
|
1 Storm Fleet Spy|XLN
|
||||||
|
1 Strider Harness|RIX
|
||||||
1 Tendershoot Dryad|RIX
|
1 Tendershoot Dryad|RIX
|
||||||
1 The Immortal Sun|RIX
|
1 Timestream Navigator|RIX
|
||||||
1 Unclaimed Territory|XLN
|
1 Unclaimed Territory|XLN
|
||||||
1 Vanquisher's Banner|XLN
|
|
||||||
1 Warkite Marauder|RIX
|
1 Warkite Marauder|RIX
|
||||||
|
1 Wind Strider|XLN
|
||||||
[Sideboard]
|
[Sideboard]
|
||||||
|
|
||||||
@@ -1,31 +1,31 @@
|
|||||||
[metadata]
|
[metadata]
|
||||||
Name=Kumena, Tyrant of Orazca - Kumena's Speaker based deck_11
|
Name=Seafloor Oracle - Kumena's Speaker based deck_7
|
||||||
[Main]
|
[Main]
|
||||||
1 Air Elemental|XLN
|
1 Deadeye Quartermaster|XLN
|
||||||
1 Aquatic Incursion|RIX
|
|
||||||
1 Carnage Tyrant|XLN
|
|
||||||
1 Commune with Dinosaurs|XLN
|
|
||||||
1 Crashing Tide|RIX
|
|
||||||
1 Deeproot Elite|RIX
|
1 Deeproot Elite|RIX
|
||||||
1 Deeproot Waters|XLN
|
1 Deeproot Waters|XLN
|
||||||
8 Forest|RIX
|
1 Drover of the Mighty|XLN
|
||||||
8 Island|RIX
|
1 Fleet Swallower|XLN
|
||||||
|
1 Flood of Recollection|RIX
|
||||||
|
7 Forest|RIX
|
||||||
|
1 Grasping Current|XLN
|
||||||
|
9 Island|RIX
|
||||||
1 Jade Bearer|RIX
|
1 Jade Bearer|RIX
|
||||||
|
1 Jadecraft Artisan|RIX
|
||||||
|
1 Jadelight Ranger|RIX
|
||||||
1 Jungleborn Pioneer|RIX
|
1 Jungleborn Pioneer|RIX
|
||||||
1 Kumena's Speaker|XLN
|
1 Kumena's Speaker|XLN
|
||||||
1 Kumena, Tyrant of Orazca|RIX
|
1 Kumena, Tyrant of Orazca|RIX
|
||||||
1 Merfolk Branchwalker|XLN
|
1 Merfolk Branchwalker|XLN
|
||||||
1 Merfolk Mistbinder|RIX
|
1 Merfolk Mistbinder|RIX
|
||||||
1 Mist-Cloaked Herald|RIX
|
1 Mist-Cloaked Herald|RIX
|
||||||
1 Nezahal, Primal Tide|RIX
|
|
||||||
1 Ripjaw Raptor|XLN
|
|
||||||
1 River's Rebuke|XLN
|
1 River's Rebuke|XLN
|
||||||
1 Savage Stomp|XLN
|
|
||||||
1 Seafloor Oracle|RIX
|
1 Seafloor Oracle|RIX
|
||||||
1 Silvergill Adept|RIX
|
1 Silvergill Adept|RIX
|
||||||
1 Snapping Sailback|XLN
|
1 Siren Lookout|XLN
|
||||||
1 Spell Pierce|XLN
|
1 Spell Pierce|XLN
|
||||||
1 Swift Warden|RIX
|
1 Tendershoot Dryad|RIX
|
||||||
|
1 Thundering Spineback|XLN
|
||||||
1 Unclaimed Territory|XLN
|
1 Unclaimed Territory|XLN
|
||||||
[Sideboard]
|
[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]
|
[metadata]
|
||||||
Name=Gishath, Sun's Avatar - Commune with Dinosaurs based deck_12
|
Name=Gishath, Sun's Avatar - Thunderherd Migration based deck_31
|
||||||
[Main]
|
[Main]
|
||||||
1 Atzocan Seer|RIX
|
1 Blight Keeper|XLN
|
||||||
1 Bishop of Binding|RIX
|
|
||||||
1 Captivating Crew|XLN
|
|
||||||
1 Carnage Tyrant|XLN
|
1 Carnage Tyrant|XLN
|
||||||
1 Commune with Dinosaurs|XLN
|
1 Commune with Dinosaurs|XLN
|
||||||
1 Deathgorge Scavenger|XLN
|
|
||||||
1 Drover of the Mighty|XLN
|
1 Drover of the Mighty|XLN
|
||||||
8 Forest|RIX
|
7 Forest|RIX
|
||||||
1 Ghalta, Primal Hunger|RIX
|
|
||||||
1 Gishath, Sun's Avatar|XLN
|
1 Gishath, Sun's Avatar|XLN
|
||||||
|
1 Gruesome Fate|RIX
|
||||||
|
1 Hierophant's Chalice|XLN
|
||||||
1 Ixalan's Binding|XLN
|
1 Ixalan's Binding|XLN
|
||||||
1 Mavren Fein, Dusk Apostle|XLN
|
2 Mountain|RIX
|
||||||
1 Merfolk Branchwalker|XLN
|
1 Paladin of Atonement|RIX
|
||||||
3 Mountain|RIX
|
|
||||||
1 Otepec Huntmaster|XLN
|
|
||||||
4 Plains|RIX
|
4 Plains|RIX
|
||||||
|
1 Ranging Raptors|XLN
|
||||||
|
1 Raptor Companion|RIX
|
||||||
1 Regisaur Alpha|XLN
|
1 Regisaur Alpha|XLN
|
||||||
1 Rekindling Phoenix|RIX
|
1 Rekindling Phoenix|RIX
|
||||||
1 Ripjaw Raptor|XLN
|
1 Ripjaw Raptor|XLN
|
||||||
1 Rootbound Crag|XLN
|
1 Rootbound Crag|XLN
|
||||||
1 Settle the Wreckage|XLN
|
1 Settle the Wreckage|XLN
|
||||||
1 Sunpetal Grove|XLN
|
1 Sunpetal Grove|XLN
|
||||||
1 Swift Warden|RIX
|
2 Swamp|RIX
|
||||||
1 Temple Altisaur|RIX
|
|
||||||
1 Thrashing Brontodon|RIX
|
1 Thrashing Brontodon|RIX
|
||||||
1 Thunderherd Migration|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
|
1 Zacama, Primal Calamity|RIX
|
||||||
[Sideboard]
|
[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]
|
[metadata]
|
||||||
Name=Savage Stomp - Carnage Tyrant based deck_2
|
Name=Otepec Huntmaster - Commune with Dinosaurs based deck_24
|
||||||
[Main]
|
[Main]
|
||||||
1 Angrath, the Flame-Chained|RIX
|
|
||||||
1 Captivating Crew|XLN
|
|
||||||
1 Carnage Tyrant|XLN
|
1 Carnage Tyrant|XLN
|
||||||
1 Commune with Dinosaurs|XLN
|
1 Commune with Dinosaurs|XLN
|
||||||
1 Deathgorge Scavenger|XLN
|
1 Deathgorge Scavenger|XLN
|
||||||
1 Dire Fleet Daredevil|RIX
|
1 Deeproot Champion|XLN
|
||||||
1 Dire Fleet Neckbreaker|RIX
|
|
||||||
1 Dire Fleet Poisoner|RIX
|
|
||||||
1 Drover of the Mighty|XLN
|
1 Drover of the Mighty|XLN
|
||||||
1 Fell Flagship|XLN
|
1 Fell Flagship|XLN
|
||||||
1 Forerunner of the Coalition|RIX
|
11 Forest|RIX
|
||||||
8 Forest|RIX
|
|
||||||
1 Ghalta, Primal Hunger|RIX
|
1 Ghalta, Primal Hunger|RIX
|
||||||
|
1 Gleaming Barrier|RIX
|
||||||
1 Jadelight Ranger|RIX
|
1 Jadelight Ranger|RIX
|
||||||
|
1 Lightning Strike|XLN
|
||||||
1 Merfolk Branchwalker|XLN
|
1 Merfolk Branchwalker|XLN
|
||||||
4 Mountain|RIX
|
4 Mountain|RIX
|
||||||
1 Otepec Huntmaster|XLN
|
1 Otepec Huntmaster|XLN
|
||||||
1 Ranging Raptors|XLN
|
1 Ranging Raptors|XLN
|
||||||
|
1 Ravenous Daggertooth|XLN
|
||||||
|
1 Reckless Rage|RIX
|
||||||
1 Regisaur Alpha|XLN
|
1 Regisaur Alpha|XLN
|
||||||
1 Rekindling Phoenix|RIX
|
1 Rekindling Phoenix|RIX
|
||||||
1 Ripjaw Raptor|XLN
|
1 Ripjaw Raptor|XLN
|
||||||
1 Rootbound Crag|XLN
|
1 Rootbound Crag|XLN
|
||||||
1 Savage Stomp|XLN
|
1 Savage Stomp|XLN
|
||||||
3 Swamp|RIX
|
1 Shadowed Caravel|XLN
|
||||||
1 Thrashing Brontodon|RIX
|
1 Thrashing Brontodon|RIX
|
||||||
1 Thunderherd Migration|RIX
|
1 Thunderherd Migration|RIX
|
||||||
|
1 Trove of Temptation|XLN
|
||||||
1 Unclaimed Territory|XLN
|
1 Unclaimed Territory|XLN
|
||||||
1 Vraska's Contempt|XLN
|
|
||||||
[Sideboard]
|
[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]
|
[metadata]
|
||||||
Name=Otepec Huntmaster - Thunderherd Migration based deck_10
|
Name=Savage Stomp - Ghalta, Primal Hunger based deck_2
|
||||||
[Main]
|
[Main]
|
||||||
1 Carnage Tyrant|XLN
|
1 Carnage Tyrant|XLN
|
||||||
1 Charging Monstrosaur|XLN
|
1 Cobbled Wings|XLN
|
||||||
1 Commune with Dinosaurs|XLN
|
1 Commune with Dinosaurs|XLN
|
||||||
1 Deathgorge Scavenger|XLN
|
1 Deathgorge Scavenger|XLN
|
||||||
1 Dire Fleet Captain|XLN
|
|
||||||
1 Drover of the Mighty|XLN
|
1 Drover of the Mighty|XLN
|
||||||
7 Forest|RIX
|
11 Forest|RIX
|
||||||
1 Ghalta, Primal Hunger|RIX
|
1 Ghalta, Primal Hunger|RIX
|
||||||
1 Lightning Strike|XLN
|
1 Jadelight Ranger|RIX
|
||||||
|
1 Merfolk Branchwalker|XLN
|
||||||
4 Mountain|RIX
|
4 Mountain|RIX
|
||||||
|
1 Needletooth Raptor|RIX
|
||||||
1 Otepec Huntmaster|XLN
|
1 Otepec Huntmaster|XLN
|
||||||
1 Pirate's Cutlass|XLN
|
|
||||||
1 Ranging Raptors|XLN
|
1 Ranging Raptors|XLN
|
||||||
1 Reckless Rage|RIX
|
1 Reckless Rage|RIX
|
||||||
1 Regisaur Alpha|XLN
|
1 Regisaur Alpha|XLN
|
||||||
1 Rekindling Phoenix|RIX
|
1 Rekindling Phoenix|RIX
|
||||||
1 Ripjaw Raptor|XLN
|
1 Ripjaw Raptor|XLN
|
||||||
1 Rootbound Crag|XLN
|
1 Rootbound Crag|XLN
|
||||||
1 Sanctum Seeker|XLN
|
|
||||||
1 Savage Stomp|XLN
|
1 Savage Stomp|XLN
|
||||||
4 Swamp|RIX
|
1 Sleek Schooner|XLN
|
||||||
|
1 Storm Fleet Arsonist|XLN
|
||||||
1 Thrashing Brontodon|RIX
|
1 Thrashing Brontodon|RIX
|
||||||
1 Thunderherd Migration|RIX
|
1 Thunderherd Migration|RIX
|
||||||
|
1 Tishana's Wayfinder|XLN
|
||||||
|
1 Traveler's Amulet|RIX
|
||||||
1 Unclaimed Territory|XLN
|
1 Unclaimed Territory|XLN
|
||||||
1 Vraska's Contempt|XLN
|
|
||||||
1 Vraska, Relic Seeker|XLN
|
|
||||||
1 Walk the Plank|XLN
|
|
||||||
1 Wayward Swordtooth|RIX
|
1 Wayward Swordtooth|RIX
|
||||||
[Sideboard]
|
[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) {
|
if (secondKeyCard != null) {
|
||||||
possibleList.removeAll(StaticData.instance().getCommonCards().getAllCards(secondKeyCard.getName()));
|
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) {
|
while (deckList.size() < targetSize) {
|
||||||
if (logToConsole) {
|
if (logToConsole) {
|
||||||
System.out.println("WARNING: Fixing deck size, currently " + deckList.size() + " cards.");
|
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()));
|
possibleList.removeAll(StaticData.instance().getCommonCards().getAllCards(secondKeyCard.getName()));
|
||||||
}
|
}
|
||||||
Collections.shuffle(possibleList);
|
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");
|
num, "Random Card");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user