diff --git a/forge-gui-mobile/src/forge/adventure/data/EnemyData.java b/forge-gui-mobile/src/forge/adventure/data/EnemyData.java index 34b383516b4..79f6a72f020 100644 --- a/forge-gui-mobile/src/forge/adventure/data/EnemyData.java +++ b/forge-gui-mobile/src/forge/adventure/data/EnemyData.java @@ -45,6 +45,6 @@ public class EnemyData { } public Deck generateDeck(boolean isFantasyMode) { - return CardUtil.getDeck(deck, true, isFantasyMode, colors, life > 15 && life < 19); + return CardUtil.getDeck(deck, true, isFantasyMode, colors, life > 15); } } diff --git a/forge-gui-mobile/src/forge/adventure/stage/ConsoleCommandInterpreter.java b/forge-gui-mobile/src/forge/adventure/stage/ConsoleCommandInterpreter.java index bd778514169..68d93e5d6b5 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/ConsoleCommandInterpreter.java +++ b/forge-gui-mobile/src/forge/adventure/stage/ConsoleCommandInterpreter.java @@ -209,6 +209,16 @@ public class ConsoleCommandInterpreter { } return "Enemy deck color list dumped to stdout."; }); + registerCommand(new String[]{"dumpEnemyDeckList"}, s -> { + for(EnemyData E : new Array.ArrayIterator<>(WorldData.getAllEnemies())){ + Deck D = E.generateDeck(Current.player().isFantasyMode()); + DeckProxy DP = new DeckProxy(D, "Constructed", GameType.Constructed, null); + ColorSet colorSet = DP.getColor(); + System.out.printf("Deck: %s\n%s\n\n", D.getName(), DP.getDeck().getMain().toCardList("\n") + ); + } + return "Enemy deck list dumped to stdout."; + }); registerCommand(new String[]{"heal", "amount"}, s -> { if(s.length<1) return "Command needs 1 parameter"; int N = 0; diff --git a/forge-gui/src/main/java/forge/deck/DeckProxy.java b/forge-gui/src/main/java/forge/deck/DeckProxy.java index b1a87793e91..ce464a15591 100644 --- a/forge-gui/src/main/java/forge/deck/DeckProxy.java +++ b/forge-gui/src/main/java/forge/deck/DeckProxy.java @@ -12,6 +12,7 @@ import forge.game.GameFormat; import forge.game.GameType; import forge.gamemodes.quest.QuestController; import forge.gamemodes.quest.QuestEvent; +import forge.gamemodes.quest.QuestEventDifficulty; import forge.item.InventoryItem; import forge.item.PaperCard; import forge.item.PreconDeck; @@ -562,6 +563,21 @@ public class DeckProxy implements InventoryItem { return decks; } + public static List getNonEasyQuestDuelDecks() { + final List decks = new ArrayList<>(); + final QuestController quest = FModel.getQuest(); + for (final QuestEvent e : quest.getDuelsManager().getDuels(QuestEventDifficulty.MEDIUM)) { + decks.add(new DeckProxy(e.getEventDeck(), "Quest Event", null, null)); + } + for (final QuestEvent e : quest.getDuelsManager().getDuels(QuestEventDifficulty.HARD)) { + decks.add(new DeckProxy(e.getEventDeck(), "Quest Event", null, null)); + } + for (final QuestEvent e : quest.getDuelsManager().getDuels(QuestEventDifficulty.EXPERT)) { + decks.add(new DeckProxy(e.getEventDeck(), "Quest Event", null, null)); + } + return decks; + } + @SuppressWarnings("unchecked") public static List getAllSealedDecks() { final List humanDecks = new ArrayList<>(); diff --git a/forge-gui/src/main/java/forge/deck/DeckgenUtil.java b/forge-gui/src/main/java/forge/deck/DeckgenUtil.java index 15a3476d90d..be89b6c962a 100644 --- a/forge-gui/src/main/java/forge/deck/DeckgenUtil.java +++ b/forge-gui/src/main/java/forge/deck/DeckgenUtil.java @@ -454,9 +454,15 @@ public class DeckgenUtil { //monocolor if (selection.size() == 1) { if (isTheme) { - allDecks = DeckProxy.getAllThemeDecks().parallelStream() + //duels and theme + allDecks = Stream.concat(DeckProxy.getAllThemeDecks().parallelStream() .filter(deckProxy -> deckProxy.getMainSize() <= 60) - .filter(deckProxy -> deckProxy.getColor() != null && deckProxy.getColor().isMonoColor() && deckProxy.getColor().hasExactlyColor(ColorSet.fromNames(selection).getColor())) + .filter(deckProxy -> deckProxy.getColor() != null && deckProxy.getColor().isMonoColor() + && deckProxy.getColor().hasExactlyColor(ColorSet.fromNames(selection).getColor())), + DeckProxy.getNonEasyQuestDuelDecks().parallelStream() + .filter(deckProxy -> deckProxy.getMainSize() <= 60) + .filter(deckProxy -> deckProxy.getColor() != null && deckProxy.getColor().isMonoColor() + && deckProxy.getColor().hasExactlyColor(ColorSet.fromNames(selection).getColor()))) .collect(Collectors.toList()); } else { allDecks = DeckProxy.getAllPreconstructedDecks(QuestController.getPrecons()).parallelStream() @@ -466,11 +472,11 @@ public class DeckgenUtil { } } else { if (isTheme) { - //include both theme and precons + //duels and theme allDecks = Stream.concat(DeckProxy.getAllThemeDecks().parallelStream() .filter(deckProxy -> deckProxy.getMainSize() <= 60) .filter(deckProxy -> deckProxy.getColor() != null && deckProxy.getColor().hasAllColors(ColorSet.fromNames(selection).getColor())), - DeckProxy.getAllPreconstructedDecks(QuestController.getPrecons()).parallelStream() + DeckProxy.getNonEasyQuestDuelDecks().parallelStream() .filter(deckProxy -> deckProxy.getMainSize() <= 60) .filter(deckProxy -> deckProxy.getColor() != null && deckProxy.getColor().hasAllColors(ColorSet.fromNames(selection).getColor()))) .collect(Collectors.toList()); @@ -484,10 +490,10 @@ public class DeckgenUtil { } else { //no specific colors if (isTheme) { - //include both theme and precons + //duels and theme allDecks = Stream.concat(DeckProxy.getAllThemeDecks().parallelStream() .filter(deckProxy -> deckProxy.getMainSize() <= 60), - DeckProxy.getAllPreconstructedDecks(QuestController.getPrecons()).parallelStream() + DeckProxy.getNonEasyQuestDuelDecks().parallelStream() .filter(deckProxy -> deckProxy.getMainSize() <= 60)) .collect(Collectors.toList()); } else {