diff --git a/forge-game/src/main/java/forge/game/ability/effects/RestartGameEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RestartGameEffect.java index 19f8699828d..a44a16e933c 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RestartGameEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RestartGameEffect.java @@ -72,12 +72,12 @@ public class RestartGameEffect extends SpellAbilityEffect { player.setLandsPlayedLastTurn(0); player.resetLandsPlayedThisTurn(); player.resetInvestigatedThisTurn(); - player.initVariantsZones(psc); List newLibrary = playerLibraries.get(player); for (Card c : newLibrary) { action.moveToLibrary(c, 0, sa); } + player.initVariantsZones(psc); player.shuffle(null); } diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 4734c346466..3dd0ffea9e3 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -193,7 +193,7 @@ public class CardFactoryUtil { card.setNamedCard(name); card.turnFaceDown(); - // Hopefully face down also hides the named card? + card.setMayLookAt(player, true); card.addSpellAbility(abilityRevealHiddenAgenda(card)); return true; } diff --git a/forge-gui/src/main/java/forge/card/CardDetailUtil.java b/forge-gui/src/main/java/forge/card/CardDetailUtil.java index 84845cc5968..f3ad9dea276 100644 --- a/forge-gui/src/main/java/forge/card/CardDetailUtil.java +++ b/forge-gui/src/main/java/forge/card/CardDetailUtil.java @@ -424,12 +424,16 @@ public class CardDetailUtil { } // named card - if (!card.getNamedCard().isEmpty() && !card.isFaceDown()) { + if (!card.getNamedCard().isEmpty()) { if (area.length() != 0) { area.append("\n"); } area.append("(named card: "); - area.append(card.getNamedCard()); + if (card.isFaceDown() && state.getState() == CardStateName.FaceDown) { + area.append("Hidden"); + } else { + area.append(card.getNamedCard()); + } area.append(")"); } diff --git a/forge-gui/src/main/java/forge/limited/LimitedDeckBuilder.java b/forge-gui/src/main/java/forge/limited/LimitedDeckBuilder.java index 361e3544d8c..f3f56a78258 100644 --- a/forge-gui/src/main/java/forge/limited/LimitedDeckBuilder.java +++ b/forge-gui/src/main/java/forge/limited/LimitedDeckBuilder.java @@ -59,6 +59,7 @@ public class LimitedDeckBuilder extends DeckGeneratorBase { protected final List deckList = new ArrayList(); protected final List setsWithBasicLands = new ArrayList(); protected List rankedColorList; + protected final List draftedConspiracies; // Views for aiPlayable private Iterable onColorCreatures; @@ -87,6 +88,11 @@ public class LimitedDeckBuilder extends DeckGeneratorBase { this.aiPlayables = Lists.newArrayList(playables); this.availableList.removeAll(aiPlayables); + // keep Conspiracies in a separate list + final Iterable conspiracies = Iterables.filter(aiPlayables, + Predicates.compose(CardRulesPredicates.coreType(true, "Conspiracy"), PaperCard.FN_GET_RULES)); + this.draftedConspiracies = Lists.newArrayList(conspiracies); + findBasicLandSets(); } @@ -200,11 +206,18 @@ public class LimitedDeckBuilder extends DeckGeneratorBase { fixDeckSize(clrCnts, landSetCode); if (deckList.size() == 40) { + // add the main deck cards final Deck result = new Deck(generateName()); result.getMain().add(deckList); + // create the sideboard final CardPool cp = result.getOrCreate(DeckSection.Sideboard); cp.add(aiPlayables); cp.add(availableList); + // add conspiracies, if any were drafted + if (!draftedConspiracies.isEmpty()) { + final CardPool cpConsp = result.getOrCreate(DeckSection.Conspiracy); + cpConsp.add(draftedConspiracies); + } if (logToConsole) { debugFinalDeck(); }