diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestDraft.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestDraft.java index 9fbb686dc55..d3c21e7ab99 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestDraft.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestDraft.java @@ -85,7 +85,7 @@ public enum CSubmenuQuestDraft implements ICDoc { if (achievements == null) { view.setMode(Mode.EMPTY); } else if (achievements.getDraftEvents() == null || achievements.getDraftEvents().isEmpty()) { - achievements.generateNewTournaments(); + achievements.generateDrafts(); if (achievements.getDraftEvents().isEmpty()) { view.setMode(Mode.EMPTY); } else { @@ -307,7 +307,7 @@ public enum CSubmenuQuestDraft implements ICDoc { } QuestAchievements achievements = FModel.getQuest().getAchievements(); - achievements.generateNewTournaments(); + achievements.generateDrafts(); if (FModel.getQuest().getAchievements().getDraftEvents().isEmpty()) { view.setMode(Mode.EMPTY); @@ -354,7 +354,7 @@ public enum CSubmenuQuestDraft implements ICDoc { view.getLblCredits().setText("Available Credits: " + NUMBER_FORMATTER.format(FModel.getQuest().getAssets().getCredits())); - FModel.getQuest().getAchievements().generateNewTournaments(); + FModel.getQuest().getAchievements().generateDrafts(); view.getPnlTournaments().removeAll(); JXButtonPanel grpPanel = new JXButtonPanel(); diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLose.java b/forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLose.java index 6b8173f387d..cb928e8f4e6 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLose.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLose.java @@ -198,7 +198,7 @@ public class QuestWinLose extends ControlWinLose { if (this.wonMatch || difficulty == 0) { final int outcome = this.wonMatch ? wins : qData.getAchievements().getLost(); int winsPerBooster = FModel.getQuestPreferences().getPrefInt(DifficultyPrefs.WINS_BOOSTER, qData.getAchievements().getDifficulty()); - if (winsPerBooster > 0 && outcome % winsPerBooster == 0) { + if (winsPerBooster > 0 && (outcome + 1) % winsPerBooster == 0) { this.awardBooster(); } } @@ -514,6 +514,7 @@ public class QuestWinLose extends ControlWinLose { final List cardsWon = new ArrayList<>(); List cardsToAdd; String typeWon = ""; + boolean addDraftToken = false; switch (currentStreak) { case 3: @@ -547,6 +548,7 @@ public class QuestWinLose extends ControlWinLose { cardsWon.addAll(qData.getCards().addRandomRareNotMythic(15)); typeWon = "rare"; } + addDraftToken = true; break; case 0: //The 50th win in the streak is 0, since (50 % 50 == 0) cardsToAdd = qData.getCards().addRandomMythicRare(10); @@ -562,6 +564,19 @@ public class QuestWinLose extends ControlWinLose { return; } + if (addDraftToken) { + TitleLabel title = new TitleLabel("25 Win Streak Bonus Reward"); + SkinnedLabel contents = new SkinnedLabel("For achieving a 25 win streak, a new tournament has been made available!"); + contents.setHorizontalAlignment(SwingConstants.CENTER); + contents.setFont(FSkin.getFont(14)); + contents.setForeground(Color.white); + contents.setIcon(FSkin.getImage(FSkinProp.ICO_QUEST_COIN)); + contents.setIconTextGap(50); + this.getView().getPnlCustom().add(title, QuestWinLose.CONSTRAINTS_TITLE); + this.getView().getPnlCustom().add(contents, QuestWinLose.CONSTRAINTS_TEXT); + qData.getAchievements().addDraftToken(); + } + this.lblTemp1 = new TitleLabel("You have achieved a " + (currentStreak == 0 ? "50" : currentStreak) + " win streak and won " + cardsWon.size() + " " + typeWon + " card" + ((cardsWon.size() != 1) ? "s" : "") + "!"); final QuestWinLoseCardViewer cv = new QuestWinLoseCardViewer(cardsWon); diff --git a/forge-gui/src/main/java/forge/quest/QuestEventDraft.java b/forge-gui/src/main/java/forge/quest/QuestEventDraft.java index 4c5d8a14cd1..aeb2ffe170e 100644 --- a/forge-gui/src/main/java/forge/quest/QuestEventDraft.java +++ b/forge-gui/src/main/java/forge/quest/QuestEventDraft.java @@ -73,7 +73,7 @@ public class QuestEventDraft { private int[] aiIcons = new int[7]; private boolean started = false; - private int age = 0; + private int age = 15; public QuestEventDraft(final String title) { this.title = title; @@ -148,7 +148,7 @@ public class QuestEventDraft { } public void addWin() { - age++; + age--; } public int getHumanLatestStanding() { diff --git a/forge-gui/src/main/java/forge/quest/data/QuestAchievements.java b/forge-gui/src/main/java/forge/quest/data/QuestAchievements.java index 316d9ed3229..de811ca5219 100644 --- a/forge-gui/src/main/java/forge/quest/data/QuestAchievements.java +++ b/forge-gui/src/main/java/forge/quest/data/QuestAchievements.java @@ -72,7 +72,13 @@ public class QuestAchievements { this.winstreakCurrent++; for (QuestEventDraft draft : drafts) { - draft.addWin(); + if (!(currentDraft != -1 && drafts.get(currentDraft) == draft)) { + draft.addWin(); + } + } + + if (win % 5 == 0) { + draftTokensAvailable++; } if (this.winstreakCurrent > this.winstreakBest) { @@ -209,7 +215,7 @@ public class QuestAchievements { return drafts; } - public void generateNewTournaments() { + public void generateDrafts() { if (drafts == null) { drafts = new QuestEventDraftContainer(); @@ -217,8 +223,9 @@ public class QuestAchievements { } QuestEventDraft toRemove = null; - for (QuestEventDraft draft : drafts) { //Pick the oldest draft first - if (draft.getAge() >= 5 && currentDraft == -1 && drafts.size() == 3) { + for (QuestEventDraft draft : drafts) { + if (draft.getAge() <= 0 + && !(currentDraft != -1 && drafts.get(currentDraft) == draft)) { toRemove = draft; break; } @@ -226,38 +233,9 @@ public class QuestAchievements { if (toRemove != null) { drafts.remove(toRemove); - draftTokensAvailable++; - for (QuestEventDraft draft : drafts) { - draft.setAge(draft.getAge() - 5); - } - } else { - - if (drafts.size() < 3) { - - int oldest = -100; - for (QuestEventDraft draft : drafts) { - if (draft.getAge() > oldest) { - oldest = draft.getAge(); - } - } - - if (oldest >= 5) { - draftTokensAvailable++; - for (QuestEventDraft draft : drafts) { - draft.setAge(draft.getAge() - 5); - } - } - - } - } - int draftsToGenerate = 3 - drafts.size(); - if (draftsToGenerate > draftTokensAvailable) { - draftsToGenerate = draftTokensAvailable; - } - - for (int i = 0; i < draftsToGenerate; i++) { + for (int i = 0; i < draftTokensAvailable; i++) { QuestEventDraft draft = QuestEventDraft.getRandomDraftOrNull(FModel.getQuest()); if (draft != null) { drafts.add(draft); diff --git a/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java b/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java index 949bff998d0..4372db43cec 100644 --- a/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java +++ b/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java @@ -571,7 +571,7 @@ public class QuestDataIO { String draftName = null; String boosterConfiguration = null; int entryFee = 1500; - int age = 0; + int age = 15; String block = null; String[] standings = new String[15]; String[] aiNames = new String[7];