diff --git a/forge-gui/res/quest/world/worlds.txt b/forge-gui/res/quest/world/worlds.txt index 416def9a9c2..9a71672caec 100644 --- a/forge-gui/res/quest/world/worlds.txt +++ b/forge-gui/res/quest/world/worlds.txt @@ -1,5 +1,6 @@ Name:Main world Name:Random Standard +Name:Random Modern Name:Random Commander Name:Amonkhet|Dir:Amonkhet|Sets:AKH, HOU Name:Jamuraa|Dir:jamuraa|Sets:5ED, ARN, MIR, VIS, WTH|Banned:Chaos Orb; Falling Star diff --git a/forge-gui/src/main/java/forge/quest/QuestChallengeGenerator.java b/forge-gui/src/main/java/forge/quest/QuestChallengeGenerator.java index c54958a9143..621dded3c3f 100644 --- a/forge-gui/src/main/java/forge/quest/QuestChallengeGenerator.java +++ b/forge-gui/src/main/java/forge/quest/QuestChallengeGenerator.java @@ -12,11 +12,24 @@ import java.util.*; public class QuestChallengeGenerator { - public static QuestEventChallengeList generateChallenges(){ + private GameFormat formatMedium=FModel.getFormats().getModern(); + private GameFormat formatHard=FModel.getFormats().get("Legacy"); + private GameFormat formatExpert=FModel.getFormats().get("Vintage"); + private GameFormat baseFormat; + + QuestChallengeGenerator(GameFormat baseFormat){ + this.baseFormat=baseFormat; + if(baseFormat.getName().equals((FModel.getFormats().getModern().getName()))){ + formatMedium=FModel.getFormats().get("Legacy"); + formatHard=FModel.getFormats().get("Vintage"); + } + } + + public QuestEventChallengeList generateChallenges(){ Map challenges = new HashMap<>(); int id = 0; for (int i=0;i<5;++i) { - QuestEventChallenge qc = getFormatChallenge(FModel.getFormats().getModern()); + QuestEventChallenge qc = getFormatChallenge(formatMedium); qc.setId(Integer.valueOf(id).toString()); qc.setCreditsReward(1000); qc.setWinsReqd(MyRandom.getRandom().nextInt(5)); @@ -36,7 +49,7 @@ public class QuestChallengeGenerator { id++; } for (int i=0;i<5;++i) { - QuestEventChallenge qc = getFormatChallenge(FModel.getFormats().get("Legacy")); + QuestEventChallenge qc = getFormatChallenge(formatHard); qc.setId(Integer.valueOf(id).toString()); qc.setCreditsReward(5000); qc.setCardReward("2 multicolor rares"); @@ -56,7 +69,7 @@ public class QuestChallengeGenerator { id++; } for (int i=0;i<5;++i) { - QuestEventChallenge qc = getFormatChallenge(FModel.getFormats().get("Vintage")); + QuestEventChallenge qc = getFormatChallenge(formatExpert); qc.setId(Integer.valueOf(id).toString()); qc.setCreditsReward(10000); qc.setCardReward("3 multicolor rares"); @@ -78,7 +91,7 @@ public class QuestChallengeGenerator { return new QuestEventChallengeList(challenges); } - public static QuestEventChallenge getFormatChallenge(GameFormat format){ + public QuestEventChallenge getFormatChallenge(GameFormat format){ QuestEventChallenge qc = new QuestEventChallenge(); qc.setAiLife(20); @@ -92,11 +105,11 @@ public class QuestChallengeGenerator { return qc; } - public static QuestEventChallenge getAIHeadstartChallenge(int extras){ + public QuestEventChallenge getAIHeadstartChallenge(int extras){ QuestEventChallenge qc = new QuestEventChallenge(); qc.setAiLife(20); - qc.setEventDeck(DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().getStandard(),true)); + qc.setEventDeck(DeckgenUtil.buildLDACArchetypeDeck(baseFormat,true)); qc.setTitle(qc.getEventDeck().getName() + " headstart challenge"); qc.setName(qc.getEventDeck().getName() + " headstart challenge"); qc.setOpponentName(qc.getEventDeck().getName()); @@ -117,7 +130,7 @@ public class QuestChallengeGenerator { return qc; } - public static class QuestEventChallengeList implements IStorage{ + public class QuestEventChallengeList implements IStorage{ private Map challenges; diff --git a/forge-gui/src/main/java/forge/quest/QuestController.java b/forge-gui/src/main/java/forge/quest/QuestController.java index 9750f45a03d..f679f7e954a 100644 --- a/forge-gui/src/main/java/forge/quest/QuestController.java +++ b/forge-gui/src/main/java/forge/quest/QuestController.java @@ -446,9 +446,12 @@ public class QuestController { if (world != null) { if (world.getName().equals(QuestWorld.STANDARDWORLDNAME)) { - this.duelManager = new QuestEventLDADuelManager(); + this.duelManager = new QuestEventLDADuelManager(FModel.getFormats().getStandard()); return; - } else if (world.isCustom()) { + } else if (world.getName().equals(QuestWorld.MODERNWORLDNAME)) { + this.duelManager = new QuestEventLDADuelManager(FModel.getFormats().getModern()); + return; + }else if (world.isCustom()) { path = world.getDuelsDir() == null ? ForgeConstants.DEFAULT_DUELS_DIR : ForgeConstants.USER_QUEST_WORLD_DIR + world.getDuelsDir(); } else { path = world.getDuelsDir() == null ? ForgeConstants.DEFAULT_DUELS_DIR : ForgeConstants.QUEST_WORLD_DIR + world.getDuelsDir(); @@ -475,7 +478,12 @@ public class QuestController { if (world != null) { if (world.getName().equals(QuestWorld.STANDARDWORLDNAME)) { - allChallenges = QuestChallengeGenerator.generateChallenges(); + QuestChallengeGenerator gen = new QuestChallengeGenerator(FModel.getFormats().getStandard()); + allChallenges = gen.generateChallenges(); + return; + }else if (world.getName().equals(QuestWorld.STANDARDWORLDNAME)) { + QuestChallengeGenerator gen = new QuestChallengeGenerator(FModel.getFormats().getModern()); + allChallenges = gen.generateChallenges(); return; } else if (world.isCustom()) { path = world.getChallengesDir() == null ? ForgeConstants.DEFAULT_CHALLENGES_DIR : ForgeConstants.USER_QUEST_WORLD_DIR + world.getChallengesDir(); diff --git a/forge-gui/src/main/java/forge/quest/QuestEventLDADuel.java b/forge-gui/src/main/java/forge/quest/QuestEventLDADuel.java index 162128048fc..9ebe9ca4e6c 100644 --- a/forge-gui/src/main/java/forge/quest/QuestEventLDADuel.java +++ b/forge-gui/src/main/java/forge/quest/QuestEventLDADuel.java @@ -20,6 +20,7 @@ package forge.quest; import forge.deck.DeckgenUtil; import forge.deck.io.Archetype; +import forge.game.GameFormat; import forge.model.FModel; /** @@ -32,14 +33,16 @@ import forge.model.FModel; public class QuestEventLDADuel extends QuestEventDuel { private Archetype archetype; + private GameFormat baseFormat; /** * Instantiates a new quest duel. */ - public QuestEventLDADuel(Archetype archetype) { + public QuestEventLDADuel(Archetype archetype, GameFormat baseFormat) { super(); + this.baseFormat = baseFormat; this.archetype = archetype; - this.eventDeck = DeckgenUtil.buildLDACArchetypeDeck(archetype, FModel.getFormats().getStandard(),true); + this.eventDeck = DeckgenUtil.buildLDACArchetypeDeck(archetype, baseFormat,true); } } diff --git a/forge-gui/src/main/java/forge/quest/QuestEventLDADuelManager.java b/forge-gui/src/main/java/forge/quest/QuestEventLDADuelManager.java index 281cf71dfc7..0fdc9660461 100644 --- a/forge-gui/src/main/java/forge/quest/QuestEventLDADuelManager.java +++ b/forge-gui/src/main/java/forge/quest/QuestEventLDADuelManager.java @@ -19,6 +19,7 @@ package forge.quest; import forge.deck.CardArchetypeLDAGenerator; import forge.deck.io.Archetype; +import forge.game.GameFormat; import forge.model.FModel; import forge.quest.data.QuestPreferences; import forge.quest.data.QuestPreferences.DifficultyPrefs; @@ -42,9 +43,11 @@ public class QuestEventLDADuelManager implements QuestEventDuelManagerInterface private List archetypes; private final MapOfLists sortedDuels = new EnumMapOfLists<>(QuestEventDifficulty.class, CollectionSuppliers.arrayLists()); + private GameFormat baseFormat; - public QuestEventLDADuelManager(){ - archetypes = CardArchetypeLDAGenerator.ldaArchetypes.get(FModel.getFormats().getStandard().getName()); + public QuestEventLDADuelManager(GameFormat baseFormat){ + this.baseFormat = baseFormat; + archetypes = CardArchetypeLDAGenerator.ldaArchetypes.get(baseFormat.getName()); assembleDuelDifficultyLists(); } @@ -58,7 +61,7 @@ public class QuestEventLDADuelManager implements QuestEventDuelManagerInterface int i=0; for(Archetype archetype : archetypes){ - QuestEventLDADuel duel = new QuestEventLDADuel((archetype)); + QuestEventLDADuel duel = new QuestEventLDADuel(archetype,baseFormat); duel.setDescription("Randomly generated "+archetype.getName()+" archetype deck."); duel.setName(archetype.getName()); duel.setTitle(archetype.getName()); diff --git a/forge-gui/src/main/java/forge/quest/QuestWorld.java b/forge-gui/src/main/java/forge/quest/QuestWorld.java index 4c77b0ec515..cc44ae603c7 100644 --- a/forge-gui/src/main/java/forge/quest/QuestWorld.java +++ b/forge-gui/src/main/java/forge/quest/QuestWorld.java @@ -40,6 +40,7 @@ public class QuestWorld implements Comparable{ private final String dir; private final GameFormatQuest format; public static final String STANDARDWORLDNAME = "Random Standard"; + public static final String MODERNWORLDNAME = "Random Modern"; public static final String RANDOMCOMMANDERWORLDNAME = "Random Commander"; private boolean isCustom; @@ -194,6 +195,12 @@ public class QuestWorld implements Comparable{ FModel.getFormats().getStandard().getBannedCardNames(),false); } + if (useName.equalsIgnoreCase(QuestWorld.MODERNWORLDNAME)){ + useFormat = new GameFormatQuest(QuestWorld.MODERNWORLDNAME, + FModel.getFormats().getModern().getAllowedSetCodes(), + FModel.getFormats().getModern().getBannedCardNames(),false); + } + if (useName.equalsIgnoreCase(QuestWorld.RANDOMCOMMANDERWORLDNAME)){ useFormat = new GameFormatQuest(QuestWorld.RANDOMCOMMANDERWORLDNAME, FModel.getFormats().getFormat("Commander").getAllowedSetCodes(),