From 2562d28f4fe336f90e67ebb5824a9cb74d8fcc33 Mon Sep 17 00:00:00 2001 From: austinio7116 Date: Sun, 11 Apr 2021 15:50:02 +0100 Subject: [PATCH] Fixes for snow covered lands in LDA deck generation --- .../limited/ArchetypeDeckBuilder.java | 38 +++++++++++++++++++ .../limited/CardThemedDeckBuilder.java | 2 +- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/forge-gui/src/main/java/forge/gamemodes/limited/ArchetypeDeckBuilder.java b/forge-gui/src/main/java/forge/gamemodes/limited/ArchetypeDeckBuilder.java index 4d4823009bb..5ab0c81547d 100644 --- a/forge-gui/src/main/java/forge/gamemodes/limited/ArchetypeDeckBuilder.java +++ b/forge-gui/src/main/java/forge/gamemodes/limited/ArchetypeDeckBuilder.java @@ -2,18 +2,31 @@ package forge.gamemodes.limited; import java.util.List; +import forge.card.MagicColor; import forge.deck.DeckFormat; import forge.deck.io.Archetype; import forge.game.GameFormat; import forge.item.PaperCard; +import forge.model.FModel; +import forge.util.MyRandom; +import org.apache.commons.lang3.tuple.Pair; public class ArchetypeDeckBuilder extends CardThemedDeckBuilder{ private Archetype archetype; + private boolean needsSnowLands = false; public ArchetypeDeckBuilder(Archetype archetype0, PaperCard keyCard0, final List dList, GameFormat format, boolean isForAI){ super(keyCard0,null, dList, format, isForAI, DeckFormat.Constructed); archetype = archetype0; + for(Pair 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"; } + /** + * 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); + } + } diff --git a/forge-gui/src/main/java/forge/gamemodes/limited/CardThemedDeckBuilder.java b/forge-gui/src/main/java/forge/gamemodes/limited/CardThemedDeckBuilder.java index f5f31c87892..fe7abad4058 100644 --- a/forge-gui/src/main/java/forge/gamemodes/limited/CardThemedDeckBuilder.java +++ b/forge-gui/src/main/java/forge/gamemodes/limited/CardThemedDeckBuilder.java @@ -740,7 +740,7 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { * the set to take basic lands from (pass 'null' for random). * @return card */ - private PaperCard getBasicLand(final int basicLand) { + protected PaperCard getBasicLand(final int basicLand) { String set; if (setsWithBasicLands.size() > 1) { set = setsWithBasicLands.get(MyRandom.getRandom().nextInt(setsWithBasicLands.size() - 1));