- Conspiracy: fixed the AI never putting any conspiracies into the command zone. Added some simple logic for the AI revealing conspiracies when a spell with the chosen name was cast during any given turn.

This commit is contained in:
Agetian
2017-08-17 12:31:27 +00:00
parent b0584d4499
commit 0679d9a30f
3 changed files with 30 additions and 38 deletions

View File

@@ -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;

View File

@@ -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<RegisteredPlayer> players;
@@ -243,8 +230,6 @@ public class Match {
}
}
player.initVariantsZones(psc);
Deck myDeck = psc.getDeck();
Set<PaperCard> myRemovedAnteCards = null;
@@ -265,6 +250,8 @@ public class Match {
}
player.shuffle(null);
player.initVariantsZones(psc);
if (isFirstGame) {
Collection<? extends PaperCard> cardsComplained = player.getController().complainCardsCantPlayWell(myDeck);
if (null != cardsComplained) {

View File

@@ -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");
}