diff --git a/forge-ai/src/main/java/forge/ai/ability/SetStateAi.java b/forge-ai/src/main/java/forge/ai/ability/SetStateAi.java index 4f951365ff9..5c0b633bda8 100644 --- a/forge-ai/src/main/java/forge/ai/ability/SetStateAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/SetStateAi.java @@ -1,19 +1,14 @@ package forge.ai.ability; import com.google.common.base.Predicate; - import forge.ai.ComputerUtilCard; import forge.ai.SpellAbilityAi; import forge.card.CardSplitType; +import forge.card.CardStateName; import forge.game.Game; import forge.game.GlobalRuleChange; import forge.game.ability.AbilityUtils; -import forge.game.card.Card; -import forge.game.card.CardCollection; -import forge.game.card.CardLists; -import forge.game.card.CardState; -import forge.game.card.CardUtil; -import forge.game.card.CounterType; +import forge.game.card.*; import forge.game.card.CardPredicates.Presets; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; @@ -172,6 +167,18 @@ public class SetStateAi extends SpellAbilityAi { private boolean shouldTurnFace(Card card, Player ai, PhaseHandler ph) { if (card.isFaceDown()) { + // hidden agenda + if (card.getState(CardStateName.Original).hasIntrinsicKeyword("Hidden agenda") + && card.getZone().is(ZoneType.Command)) { + String chosenName = card.getNamedCard(); + for (Card cast : ai.getGame().getStack().getSpellsCastThisTurn()) { + if (cast.getController() == ai && cast.getName().equals(chosenName)) { + return true; + } + } + return false; + } + // non-permanent facedown can't be turned face up if (!card.getRules().getType().isPermanent()) { return false; diff --git a/forge-game/src/main/java/forge/game/Match.java b/forge-game/src/main/java/forge/game/Match.java index b7ea26bc046..d38f020fdf4 100644 --- a/forge-game/src/main/java/forge/game/Match.java +++ b/forge-game/src/main/java/forge/game/Match.java @@ -1,22 +1,6 @@ package forge.game; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Map.Entry; -import java.util.Random; -import java.util.Set; - -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.HashMultimap; -import com.google.common.collect.HashMultiset; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; -import com.google.common.collect.Multimap; -import com.google.common.collect.Multiset; - +import com.google.common.collect.*; import forge.LobbyPlayer; import forge.deck.CardPool; import forge.deck.Deck; @@ -31,8 +15,11 @@ import forge.game.trigger.Trigger; import forge.game.zone.PlayerZone; import forge.game.zone.ZoneType; import forge.item.PaperCard; -import forge.util.collect.FCollectionView; import forge.util.MyRandom; +import forge.util.collect.FCollectionView; + +import java.util.*; +import java.util.Map.Entry; public class Match { private final List players; @@ -243,8 +230,6 @@ public class Match { } } - player.initVariantsZones(psc); - Deck myDeck = psc.getDeck(); Set myRemovedAnteCards = null; @@ -265,6 +250,8 @@ public class Match { } player.shuffle(null); + player.initVariantsZones(psc); + if (isFirstGame) { Collection cardsComplained = player.getController().complainCardsCantPlayWell(myDeck); if (null != cardsComplained) { diff --git a/forge-gui/src/main/java/forge/card/CardDetailUtil.java b/forge-gui/src/main/java/forge/card/CardDetailUtil.java index 13139a32707..84845cc5968 100644 --- a/forge-gui/src/main/java/forge/card/CardDetailUtil.java +++ b/forge-gui/src/main/java/forge/card/CardDetailUtil.java @@ -1,14 +1,6 @@ package forge.card; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import org.apache.commons.lang3.StringUtils; - import com.google.common.collect.Sets; - import forge.card.mana.ManaCostShard; import forge.game.GameView; import forge.game.card.Card; @@ -24,6 +16,12 @@ import forge.model.FModel; import forge.properties.ForgeConstants; import forge.properties.ForgePreferences; import forge.util.Lang; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; public class CardDetailUtil { @@ -380,7 +378,7 @@ public class CardDetailUtil { } // chosen type - if (!card.getChosenType().equals("")) { + if (!card.getChosenType().isEmpty()) { if (area.length() != 0) { area.append("\n"); } @@ -418,7 +416,7 @@ public class CardDetailUtil { } // chosen mode - if (!card.getChosenMode().equals("")) { + if (!card.getChosenMode().isEmpty()) { if (area.length() != 0) { area.append("\n"); } @@ -426,7 +424,7 @@ public class CardDetailUtil { } // named card - if (!card.getNamedCard().equals("")) { + if (!card.getNamedCard().isEmpty() && !card.isFaceDown()) { if (area.length() != 0) { area.append("\n"); }