mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Clean up
This commit is contained in:
@@ -376,7 +376,7 @@ public class AiController {
|
||||
}
|
||||
|
||||
private CardCollection filterLandsToPlay(CardCollection landList) {
|
||||
final CardCollection hand = new CardCollection(player.getCardsIn(ZoneType.Hand));
|
||||
final CardCollectionView hand = player.getCardsIn(ZoneType.Hand);
|
||||
CardCollection nonLandList = CardLists.filter(hand, Predicates.not(CardPredicates.Presets.LANDS));
|
||||
if (landList.size() == 1 && nonLandList.size() < 3) {
|
||||
CardCollectionView cardsInPlay = player.getCardsIn(ZoneType.Battlefield);
|
||||
@@ -1148,7 +1148,6 @@ public class AiController {
|
||||
public CardCollection getCardsToDiscard(final int numDiscard, final String[] uTypes, final SpellAbility sa) {
|
||||
return getCardsToDiscard(numDiscard, uTypes, sa, CardCollection.EMPTY);
|
||||
}
|
||||
|
||||
public CardCollection getCardsToDiscard(final int numDiscard, final String[] uTypes, final SpellAbility sa, final CardCollectionView exclude) {
|
||||
boolean noFiltering = sa != null && "DiscardCMCX".equals(sa.getParam("AILogic")); // list AI logic for which filtering is taken care of elsewhere
|
||||
CardCollection hand = new CardCollection(player.getCardsIn(ZoneType.Hand));
|
||||
|
||||
@@ -340,9 +340,9 @@ public class AiCostDecision extends CostDecisionMakerBase {
|
||||
CardCollectionView list;
|
||||
|
||||
if (cost.isSameZone()) {
|
||||
list = new CardCollection(game.getCardsIn(cost.getFrom()));
|
||||
list = game.getCardsIn(cost.getFrom());
|
||||
} else {
|
||||
list = new CardCollection(player.getCardsIn(cost.getFrom()));
|
||||
list = player.getCardsIn(cost.getFrom());
|
||||
}
|
||||
|
||||
int c = cost.getAbilityAmount(ability);
|
||||
|
||||
@@ -2324,7 +2324,7 @@ public class ComputerUtil {
|
||||
|
||||
CardLists.sortByCmcDesc(goodChoices);
|
||||
|
||||
return new CardCollection(Aggregates.random(goodChoices, max));
|
||||
return goodChoices.subList(0, max);
|
||||
}
|
||||
|
||||
public static CardCollection getCardsToDiscardFromFriend(Player aiChooser, Player p, SpellAbility sa, CardCollection validCards, int min, int max) {
|
||||
|
||||
@@ -537,7 +537,7 @@ public class ComputerUtilCard {
|
||||
|
||||
public static final Card getCheapestSpellAI(final Iterable<Card> list) {
|
||||
if (!Iterables.isEmpty(list)) {
|
||||
CardCollection cc = CardLists.filter(new CardCollection(list),
|
||||
CardCollection cc = CardLists.filter(list,
|
||||
Predicates.or(CardPredicates.isType("Instant"), CardPredicates.isType("Sorcery")));
|
||||
Collections.sort(cc, CardLists.CmcComparatorInv);
|
||||
|
||||
|
||||
@@ -435,9 +435,7 @@ public class ComputerUtilCost {
|
||||
final int vehicleValue = ComputerUtilCard.evaluateCreature(vehicle);
|
||||
String totalP = type.split("withTotalPowerGE")[1];
|
||||
type = TextUtil.fastReplace(type, TextUtil.concatNoSpace("+withTotalPowerGE", totalP), "");
|
||||
CardCollection exclude = CardLists.getValidCards(
|
||||
new CardCollection(ai.getCardsIn(ZoneType.Battlefield)), type.split(";"),
|
||||
source.getController(), source, sa);
|
||||
CardCollection exclude = CardLists.getValidCards(ai.getCardsIn(ZoneType.Battlefield), type.split(";"), source.getController(), source, sa);
|
||||
exclude = CardLists.filter(exclude, new Predicate<Card>() {
|
||||
@Override
|
||||
public boolean apply(final Card c) {
|
||||
|
||||
@@ -1253,7 +1253,7 @@ public abstract class GameState {
|
||||
c.setBackSide(true);
|
||||
}
|
||||
else if (info.startsWith("OnAdventure")) {
|
||||
String abAdventure = "DB$ Effect | RememberObjects$ Self | StaticAbilities$ Play | ExileOnMoved$ Exile | Duration$ Permanent | ConditionDefined$ Self | ConditionPresent$ Card.nonCopiedSpell";
|
||||
String abAdventure = "DB$ Effect | RememberObjects$ Self | StaticAbilities$ Play | ForgetOnMoved$ Exile | Duration$ Permanent | ConditionDefined$ Self | ConditionPresent$ Card.nonCopiedSpell";
|
||||
SpellAbility saAdventure = AbilityFactory.getAbility(abAdventure, c);
|
||||
StringBuilder sbPlay = new StringBuilder();
|
||||
sbPlay.append("Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered+nonAdventure");
|
||||
|
||||
@@ -1333,8 +1333,7 @@ public class AttachAi extends SpellAbilityAi {
|
||||
|
||||
// Is a SA that moves target attachment
|
||||
if ("MoveTgtAura".equals(sa.getParam("AILogic"))) {
|
||||
CardCollection list = new CardCollection(CardUtil.getValidCardsToTarget(tgt, sa));
|
||||
list = CardLists.filter(list, Predicates.or(CardPredicates.isControlledByAnyOf(aiPlayer.getOpponents()), new Predicate<Card>() {
|
||||
CardCollection list = CardLists.filter(CardUtil.getValidCardsToTarget(tgt, sa), Predicates.or(CardPredicates.isControlledByAnyOf(aiPlayer.getOpponents()), new Predicate<Card>() {
|
||||
@Override
|
||||
public boolean apply(final Card card) {
|
||||
return ComputerUtilCard.isUselessCreature(aiPlayer, card.getAttachedTo());
|
||||
@@ -1343,7 +1342,7 @@ public class AttachAi extends SpellAbilityAi {
|
||||
|
||||
return !list.isEmpty() ? ComputerUtilCard.getBestAI(list) : null;
|
||||
} else if ("Unenchanted".equals(sa.getParam("AILogic"))) {
|
||||
CardCollection list = new CardCollection(CardUtil.getValidCardsToTarget(tgt, sa));
|
||||
List<Card> list = CardUtil.getValidCardsToTarget(tgt, sa);
|
||||
CardCollection preferred = CardLists.filter(list, new Predicate<Card>() {
|
||||
@Override
|
||||
public boolean apply(final Card card) {
|
||||
|
||||
@@ -18,8 +18,7 @@ public class ConniveAi extends SpellAbilityAi {
|
||||
return false; // can't draw anything
|
||||
}
|
||||
|
||||
CardCollection list;
|
||||
list = CardLists.getTargetableCards(new CardCollection(ai.getCardsIn(ZoneType.Battlefield)), sa);
|
||||
CardCollection list = CardLists.getTargetableCards(ai.getCardsIn(ZoneType.Battlefield), sa);
|
||||
|
||||
// Filter AI-specific targets if provided
|
||||
list = ComputerUtil.filterAITgts(sa, ai, list, false);
|
||||
@@ -69,8 +68,7 @@ public class ConniveAi extends SpellAbilityAi {
|
||||
}
|
||||
|
||||
boolean preferred = true;
|
||||
CardCollection list;
|
||||
list = CardLists.getTargetableCards(new CardCollection(ai.getCardsIn(ZoneType.Battlefield)), sa);
|
||||
CardCollection list = CardLists.getTargetableCards(ai.getCardsIn(ZoneType.Battlefield), sa);
|
||||
|
||||
// Filter AI-specific targets if provided
|
||||
list = ComputerUtil.filterAITgts(sa, ai, list, false);
|
||||
|
||||
@@ -341,7 +341,7 @@ public class CountersPutAi extends CountersAi {
|
||||
|
||||
if (sa.hasParam("Bolster")) {
|
||||
CardCollection creatsYouCtrl = ai.getCreaturesInPlay();
|
||||
CardCollection leastToughness = new CardCollection(Aggregates.listWithMin(creatsYouCtrl, CardPredicates.Accessors.fnGetNetToughness));
|
||||
List<Card> leastToughness = Aggregates.listWithMin(creatsYouCtrl, CardPredicates.Accessors.fnGetNetToughness);
|
||||
if (leastToughness.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -431,7 +431,7 @@ public class DamageDealAi extends DamageAiBase {
|
||||
final Game game = source.getGame();
|
||||
List<Card> hPlay = CardLists.filter(getTargetableCards(ai, sa, pl, tgt, activator, source, game), CardPredicates.Presets.PLANESWALKERS);
|
||||
|
||||
List<Card> killables = CardLists.filter(hPlay, new Predicate<Card>() {
|
||||
CardCollection killables = CardLists.filter(hPlay, new Predicate<Card>() {
|
||||
@Override
|
||||
public boolean apply(final Card c) {
|
||||
return c.getSVar("Targeting").equals("Dies")
|
||||
@@ -442,7 +442,7 @@ public class DamageDealAi extends DamageAiBase {
|
||||
});
|
||||
|
||||
// Filter AI-specific targets if provided
|
||||
killables = ComputerUtil.filterAITgts(sa, ai, new CardCollection(killables), true);
|
||||
killables = ComputerUtil.filterAITgts(sa, ai, killables, true);
|
||||
|
||||
// We can kill a planeswalker, so go for it
|
||||
if (pl.isOpponentOf(ai) && activator.equals(ai) && !killables.isEmpty()) {
|
||||
|
||||
Reference in New Issue
Block a user