From 9aa4e3d9cf2088f750243bb3538df24e4300a6dd Mon Sep 17 00:00:00 2001 From: Agetian Date: Thu, 29 Jun 2017 14:03:56 +0000 Subject: [PATCH] - Integrating More Duel Choices patch by Seravy. --- .../home/quest/VSubmenuQuestPrefs.java | 3 + .../forge/quest/QuestEventDuelManager.java | 81 ++++++++++++++----- .../forge/quest/data/QuestPreferences.java | 3 + 3 files changed, 65 insertions(+), 22 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestPrefs.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestPrefs.java index a0256edbf11..099f1fd2f70 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestPrefs.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestPrefs.java @@ -346,6 +346,9 @@ public enum VSubmenuQuestPrefs implements IVSubmenu { pnlDifficulty.add(new FLabel.Builder().text("Penalty for Loss").fontAlign(SwingConstants.RIGHT).build(), labelConstraints); pnlDifficulty.add(new PrefInput(QPref.PENALTY_LOSS, QuestPreferencesErrType.DIFFICULTY), fieldConstraints + ", wrap"); + pnlDifficulty.add(new FLabel.Builder().text("More Duel Choices").fontAlign(SwingConstants.RIGHT).build(), labelConstraints); + pnlDifficulty.add(new PrefInput(QPref.MORE_DUEL_CHOICES, QuestPreferencesErrType.DIFFICULTY), fieldConstraints + ", wrap"); + } private void populateBooster() { diff --git a/forge-gui/src/main/java/forge/quest/QuestEventDuelManager.java b/forge-gui/src/main/java/forge/quest/QuestEventDuelManager.java index 84a7cb8656e..f4aa437976e 100644 --- a/forge-gui/src/main/java/forge/quest/QuestEventDuelManager.java +++ b/forge-gui/src/main/java/forge/quest/QuestEventDuelManager.java @@ -20,6 +20,7 @@ package forge.quest; import forge.model.FModel; import forge.quest.data.QuestPreferences; import forge.quest.data.QuestPreferences.DifficultyPrefs; +import forge.quest.data.QuestPreferences.QPref; import forge.quest.io.QuestDuelReader; import forge.util.CollectionSuppliers; import forge.util.maps.EnumMapOfLists; @@ -147,6 +148,8 @@ public class QuestEventDuelManager { public final List generateDuels() { final QuestPreferences questPreferences = FModel.getQuestPreferences(); + boolean moreDuelChoices = questPreferences.getPrefInt(QPref.MORE_DUEL_CHOICES) > 0; + if (FModel.getQuest().getAchievements() == null) { return null; } @@ -157,30 +160,64 @@ public class QuestEventDuelManager { final int index = qCtrl.getAchievements().getDifficulty(); final List duelOpponents = new ArrayList<>(); - if (numberOfWins < questPreferences.getPrefInt(DifficultyPrefs.WINS_MEDIUMAI, index)) { - addDuel(duelOpponents, QuestEventDifficulty.EASY, 3); - addRandomDuel(duelOpponents, QuestEventDifficulty.EASY); - } else if (numberOfWins == questPreferences.getPrefInt(DifficultyPrefs.WINS_MEDIUMAI, index)) { - addDuel(duelOpponents, QuestEventDifficulty.EASY, 1); - addDuel(duelOpponents, QuestEventDifficulty.MEDIUM, 2); - addRandomDuel(duelOpponents, QuestEventDifficulty.MEDIUM); - } else if (numberOfWins < questPreferences.getPrefInt(DifficultyPrefs.WINS_HARDAI, index)) { - addDuel(duelOpponents, QuestEventDifficulty.MEDIUM, 3); - addRandomDuel(duelOpponents, QuestEventDifficulty.MEDIUM); - } else if (numberOfWins == questPreferences.getPrefInt(DifficultyPrefs.WINS_HARDAI, index)) { - addDuel(duelOpponents, QuestEventDifficulty.MEDIUM, 1); - addDuel(duelOpponents, QuestEventDifficulty.HARD, 2); - addRandomDuel(duelOpponents, QuestEventDifficulty.HARD); - } else if (numberOfWins < questPreferences.getPrefInt(DifficultyPrefs.WINS_EXPERTAI, index)) { - addDuel(duelOpponents, QuestEventDifficulty.HARD, 3); - addRandomDuel(duelOpponents, QuestEventDifficulty.HARD); - } else { - addDuel(duelOpponents, QuestEventDifficulty.HARD, 2); - addDuel(duelOpponents, QuestEventDifficulty.EXPERT, 1); - if (Math.random() * 3 < 2) { + if (moreDuelChoices) { + if (numberOfWins < questPreferences.getPrefInt(DifficultyPrefs.WINS_MEDIUMAI, index)) { + addDuel(duelOpponents, QuestEventDifficulty.EASY, 3); + addRandomDuel(duelOpponents, QuestEventDifficulty.EASY); + } else if (numberOfWins == questPreferences.getPrefInt(DifficultyPrefs.WINS_MEDIUMAI, index)) { + addDuel(duelOpponents, QuestEventDifficulty.EASY, 2); + addDuel(duelOpponents, QuestEventDifficulty.MEDIUM, 2); + addRandomDuel(duelOpponents, QuestEventDifficulty.MEDIUM); + } else if (numberOfWins < questPreferences.getPrefInt(DifficultyPrefs.WINS_HARDAI, index)) { + addDuel(duelOpponents, QuestEventDifficulty.MEDIUM, 3); + addDuel(duelOpponents, QuestEventDifficulty.EASY, 1); + addRandomDuel(duelOpponents, QuestEventDifficulty.MEDIUM); + } else if (numberOfWins == questPreferences.getPrefInt(DifficultyPrefs.WINS_HARDAI, index)) { + addDuel(duelOpponents, QuestEventDifficulty.MEDIUM, 2); + addDuel(duelOpponents, QuestEventDifficulty.HARD, 2); + addRandomDuel(duelOpponents, QuestEventDifficulty.HARD); + } else if (numberOfWins < questPreferences.getPrefInt(DifficultyPrefs.WINS_EXPERTAI, index)) { + addDuel(duelOpponents, QuestEventDifficulty.HARD, 3); + addDuel(duelOpponents, QuestEventDifficulty.MEDIUM, 1); + addDuel(duelOpponents, QuestEventDifficulty.EASY, 1); addRandomDuel(duelOpponents, QuestEventDifficulty.HARD); } else { - addRandomDuel(duelOpponents, QuestEventDifficulty.EXPERT); + addDuel(duelOpponents, QuestEventDifficulty.HARD, 2); + addDuel(duelOpponents, QuestEventDifficulty.EXPERT, 1); + addDuel(duelOpponents, QuestEventDifficulty.MEDIUM, 1); + addDuel(duelOpponents, QuestEventDifficulty.EASY, 1); + if (Math.random() * 3 < 2) { + addRandomDuel(duelOpponents, QuestEventDifficulty.HARD); + } else { + addRandomDuel(duelOpponents, QuestEventDifficulty.EXPERT); + } + } + } else { + if (numberOfWins < questPreferences.getPrefInt(DifficultyPrefs.WINS_MEDIUMAI, index)) { + addDuel(duelOpponents, QuestEventDifficulty.EASY, 3); + addRandomDuel(duelOpponents, QuestEventDifficulty.EASY); + } else if (numberOfWins == questPreferences.getPrefInt(DifficultyPrefs.WINS_MEDIUMAI, index)) { + addDuel(duelOpponents, QuestEventDifficulty.EASY, 1); + addDuel(duelOpponents, QuestEventDifficulty.MEDIUM, 2); + addRandomDuel(duelOpponents, QuestEventDifficulty.MEDIUM); + } else if (numberOfWins < questPreferences.getPrefInt(DifficultyPrefs.WINS_HARDAI, index)) { + addDuel(duelOpponents, QuestEventDifficulty.MEDIUM, 3); + addRandomDuel(duelOpponents, QuestEventDifficulty.MEDIUM); + } else if (numberOfWins == questPreferences.getPrefInt(DifficultyPrefs.WINS_HARDAI, index)) { + addDuel(duelOpponents, QuestEventDifficulty.MEDIUM, 1); + addDuel(duelOpponents, QuestEventDifficulty.HARD, 2); + addRandomDuel(duelOpponents, QuestEventDifficulty.HARD); + } else if (numberOfWins < questPreferences.getPrefInt(DifficultyPrefs.WINS_EXPERTAI, index)) { + addDuel(duelOpponents, QuestEventDifficulty.HARD, 3); + addRandomDuel(duelOpponents, QuestEventDifficulty.HARD); + } else { + addDuel(duelOpponents, QuestEventDifficulty.HARD, 2); + addDuel(duelOpponents, QuestEventDifficulty.EXPERT, 1); + if (Math.random() * 3 < 2) { + addRandomDuel(duelOpponents, QuestEventDifficulty.HARD); + } else { + addRandomDuel(duelOpponents, QuestEventDifficulty.EXPERT); + } } } diff --git a/forge-gui/src/main/java/forge/quest/data/QuestPreferences.java b/forge-gui/src/main/java/forge/quest/data/QuestPreferences.java index dd818345f09..e446eafdcfd 100644 --- a/forge-gui/src/main/java/forge/quest/data/QuestPreferences.java +++ b/forge-gui/src/main/java/forge/quest/data/QuestPreferences.java @@ -162,6 +162,8 @@ public class QuestPreferences extends PreferencesStore i SHOP_MAX_SELLING_PRICE("1000"), // Wins until the selling price limit is removed SHOP_WINS_FOR_NO_SELL_LIMIT("50"), + // Duels of the current difficulty only, or that and all difficulties below it? + MORE_DUEL_CHOICES("0"), //The number of cards to keep before selling PLAYSET_SIZE("4"), @@ -316,6 +318,7 @@ public class QuestPreferences extends PreferencesStore i case SHOP_SINGLES_UNCOMMON: case SHOP_SINGLES_RARE: case SHOP_WINS_FOR_NO_SELL_LIMIT: + case MORE_DUEL_CHOICES: default: if (val < 0) { return "Value too small (minimum 0).";