mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Added support for specific extra boosters and even tournament packs as challenge rewards. Needless to say, caution should be exercised before handing out such generous rewards, especially tournament packs.
This commit is contained in:
@@ -40,9 +40,12 @@ import forge.gui.SOverlayUtils;
|
||||
import forge.gui.home.quest.CSubmenuChallenges;
|
||||
import forge.gui.home.quest.CSubmenuDuels;
|
||||
import forge.gui.toolbox.FSkin;
|
||||
import forge.item.BoosterPack;
|
||||
import forge.item.CardDb;
|
||||
import forge.item.CardPrinted;
|
||||
import forge.item.InventoryItem;
|
||||
import forge.item.OpenablePack;
|
||||
import forge.item.TournamentPack;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
import forge.quest.QuestEventChallenge;
|
||||
import forge.quest.QuestController;
|
||||
@@ -694,7 +697,24 @@ public class QuestWinLose extends ControlWinLose {
|
||||
for (InventoryItem ii : itemsWon) {
|
||||
if (ii instanceof CardPrinted) {
|
||||
cardsWon.add((CardPrinted) ii);
|
||||
} else if (ii instanceof IQuestRewardCard) {
|
||||
} else if (ii instanceof TournamentPack || ii instanceof BoosterPack) {
|
||||
List<CardPrinted> boosterCards = new ArrayList<CardPrinted>();
|
||||
OpenablePack booster = null;
|
||||
if (ii instanceof BoosterPack) {
|
||||
booster = (BoosterPack) ((BoosterPack) ii).clone();
|
||||
boosterCards.addAll(booster.getCards());
|
||||
} else if (ii instanceof TournamentPack) {
|
||||
booster = (TournamentPack) ((TournamentPack) ii).clone();
|
||||
boosterCards.addAll(booster.getCards());
|
||||
}
|
||||
if (!boosterCards.isEmpty()) {
|
||||
qData.getCards().addAllCards(boosterCards);
|
||||
final QuestWinLoseCardViewer cv = new QuestWinLoseCardViewer(boosterCards);
|
||||
this.view.getPnlCustom().add(new TitleLabel("Extra " + ii.getName() + "!"), QuestWinLose.CONSTRAINTS_TITLE);
|
||||
this.view.getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS);
|
||||
}
|
||||
}
|
||||
else if (ii instanceof IQuestRewardCard) {
|
||||
final List<CardPrinted> cardChoices = ((IQuestRewardCard) ii).getChoices();
|
||||
final CardPrinted chosenCard = (null == cardChoices ? null : GuiChoose.one("Choose " + ((IQuestRewardCard) ii).getName() + ":", cardChoices));
|
||||
if (null != chosenCard) {
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
package forge.quest;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@@ -34,9 +35,11 @@ import forge.card.BoosterGenerator;
|
||||
import forge.card.CardRulesPredicates;
|
||||
import forge.card.CardRules;
|
||||
import forge.card.UnOpenedProduct;
|
||||
import forge.item.BoosterPack;
|
||||
import forge.item.CardDb;
|
||||
import forge.item.CardPrinted;
|
||||
import forge.item.InventoryItem;
|
||||
import forge.item.TournamentPack;
|
||||
import forge.util.Aggregates;
|
||||
import forge.util.MyRandom;
|
||||
|
||||
@@ -304,8 +307,15 @@ public final class BoosterUtils {
|
||||
} else if (temp.length >= 2 && temp[0].equalsIgnoreCase("chosen") && temp[1].equalsIgnoreCase("card")) {
|
||||
// Type 3: a duplicate card of the players choice
|
||||
rewards.add(new QuestRewardCardFiltered(temp));
|
||||
} else if (temp.length > 0) {
|
||||
// Type 4: assume we are asking for a single copy of a specific card
|
||||
} else if (temp.length >= 3 && temp[0].equalsIgnoreCase("booster") && temp[1].equalsIgnoreCase("pack")) {
|
||||
// Type 4: a predetermined extra booster pack
|
||||
rewards.add(BoosterPack.FN_FROM_SET.apply(Singletons.getModel().getEditions().get(temp[2])));
|
||||
} else if (temp.length >= 3 && temp[0].equalsIgnoreCase("tournament") && temp[1].equalsIgnoreCase("pack")) {
|
||||
// Type 5: a predetermined extra tournament ("starter") pack
|
||||
rewards.add(TournamentPack.FN_FROM_SET.apply(Singletons.getModel().getEditions().get(temp[2])));
|
||||
}
|
||||
else if (temp.length > 0) {
|
||||
// default: assume we are asking for a single copy of a specific card
|
||||
final CardPrinted specific = CardDb.instance().getCard(s);
|
||||
if (specific != null) {
|
||||
rewards.add(specific);
|
||||
|
||||
Reference in New Issue
Block a user