diff --git a/forge-gui/src/main/java/forge/quest/QuestEventChallenge.java b/forge-gui/src/main/java/forge/quest/QuestEventChallenge.java index 3afac377b5a..0acca17e89b 100644 --- a/forge-gui/src/main/java/forge/quest/QuestEventChallenge.java +++ b/forge-gui/src/main/java/forge/quest/QuestEventChallenge.java @@ -69,6 +69,9 @@ public class QuestEventChallenge extends QuestEvent { /** The ai extra cards. */ private List aiExtraCards = new ArrayList(); + /** If persistent, the challenge does not disappear if the player fails it. */ + private boolean persistent = false; + private Deck humanDeck = null; /** @@ -208,6 +211,25 @@ public class QuestEventChallenge extends QuestEvent { this.repeatable = repeatable0; } + /** + * Checks if is persistent. + * + * @return the persistent + */ + public boolean isPersistent() { + return this.persistent; + } + + /** + * Sets the persistent. + * + * @param persistent0 + * the repeatable to set + */ + public void setPersistent(final boolean persistent0) { + this.persistent = persistent0; + } + /** * Gets the ai life. * diff --git a/forge-gui/src/main/java/forge/quest/QuestWinLoseController.java b/forge-gui/src/main/java/forge/quest/QuestWinLoseController.java index 2ca95593952..3845fea9c1a 100644 --- a/forge-gui/src/main/java/forge/quest/QuestWinLoseController.java +++ b/forge-gui/src/main/java/forge/quest/QuestWinLoseController.java @@ -187,12 +187,14 @@ public class QuestWinLoseController { } if (qEvent instanceof QuestEventChallenge) { - final String id = ((QuestEventChallenge) qEvent).getId(); - qData.getAchievements().getCurrentChallenges().remove(id); - qData.getAchievements().addLockedChallenge(id); + if (wonMatch || (!((QuestEventChallenge)qEvent).isPersistent())) { + final String id = ((QuestEventChallenge) qEvent).getId(); + qData.getAchievements().getCurrentChallenges().remove(id); + qData.getAchievements().addLockedChallenge(id); - // Increment challenge counter to limit challenges available - qData.getAchievements().addChallengesPlayed(); + // Increment challenge counter to limit challenges available + qData.getAchievements().addChallengesPlayed(); + } } qData.setCurrentEvent(null); diff --git a/forge-gui/src/main/java/forge/quest/io/QuestChallengeReader.java b/forge-gui/src/main/java/forge/quest/io/QuestChallengeReader.java index fb32390bfc5..6da09920ac9 100644 --- a/forge-gui/src/main/java/forge/quest/io/QuestChallengeReader.java +++ b/forge-gui/src/main/java/forge/quest/io/QuestChallengeReader.java @@ -32,6 +32,7 @@ public class QuestChallengeReader extends StorageReaderFolder