Fixes for snow covered lands in LDA deck generation

This commit is contained in:
austinio7116
2021-04-11 15:50:02 +01:00
parent 53978333fb
commit 2562d28f4f
2 changed files with 39 additions and 1 deletions

View File

@@ -2,18 +2,31 @@ package forge.gamemodes.limited;
import java.util.List; import java.util.List;
import forge.card.MagicColor;
import forge.deck.DeckFormat; import forge.deck.DeckFormat;
import forge.deck.io.Archetype; import forge.deck.io.Archetype;
import forge.game.GameFormat; import forge.game.GameFormat;
import forge.item.PaperCard; import forge.item.PaperCard;
import forge.model.FModel;
import forge.util.MyRandom;
import org.apache.commons.lang3.tuple.Pair;
public class ArchetypeDeckBuilder extends CardThemedDeckBuilder{ public class ArchetypeDeckBuilder extends CardThemedDeckBuilder{
private Archetype archetype; private Archetype archetype;
private boolean needsSnowLands = false;
public ArchetypeDeckBuilder(Archetype archetype0, PaperCard keyCard0, final List<PaperCard> dList, GameFormat format, boolean isForAI){ public ArchetypeDeckBuilder(Archetype archetype0, PaperCard keyCard0, final List<PaperCard> dList, GameFormat format, boolean isForAI){
super(keyCard0,null, dList, format, isForAI, DeckFormat.Constructed); super(keyCard0,null, dList, format, isForAI, DeckFormat.Constructed);
archetype = archetype0; archetype = archetype0;
for(Pair<String, Double> pair : archetype.getCardProbabilities()){
for(int i=0;i<5;++i){
if (pair.getLeft().equals(MagicColor.Constant.SNOW_LANDS.get(i))) {
needsSnowLands=true;
return;
}
}
}
} }
/** /**
@@ -25,6 +38,31 @@ public class ArchetypeDeckBuilder extends CardThemedDeckBuilder{
return archetype.getName() + " Generated Deck"; return archetype.getName() + " Generated Deck";
} }
/**
* Get basic land.
*
* @param basicLand
* the set to take basic lands from (pass 'null' for random).
* @return card
*/
protected PaperCard getBasicLand(final int basicLand) {
if(needsSnowLands){
for(String landSet : setsWithBasicLands){
PaperCard land = FModel.getMagicDb().getCommonCards().getCard(MagicColor.Constant.SNOW_LANDS.get(basicLand), landSet);
if(land!=null){
return land;
}
}
}
String set;
if (setsWithBasicLands.size() > 1) {
set = setsWithBasicLands.get(MyRandom.getRandom().nextInt(setsWithBasicLands.size() - 1));
} else {
set = setsWithBasicLands.get(0);
}
return FModel.getMagicDb().getCommonCards().getCard(MagicColor.Constant.BASIC_LANDS.get(basicLand), set);
}
} }

View File

@@ -740,7 +740,7 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase {
* the set to take basic lands from (pass 'null' for random). * the set to take basic lands from (pass 'null' for random).
* @return card * @return card
*/ */
private PaperCard getBasicLand(final int basicLand) { protected PaperCard getBasicLand(final int basicLand) {
String set; String set;
if (setsWithBasicLands.size() > 1) { if (setsWithBasicLands.size() > 1) {
set = setsWithBasicLands.get(MyRandom.getRandom().nextInt(setsWithBasicLands.size() - 1)); set = setsWithBasicLands.get(MyRandom.getRandom().nextInt(setsWithBasicLands.size() - 1));