diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java index 06471da6962..56e58d3474e 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java @@ -76,7 +76,7 @@ public class ComputerUtilCard { } }); } - return ComputerUtilCard.getMostExpensivePermanentAI(all); + return getMostExpensivePermanentAI(all); } /** @@ -381,7 +381,7 @@ public class ComputerUtilCard { } if (biasLand && Iterables.any(list, CardPredicates.Presets.LANDS)) { - return ComputerUtilCard.getWorstLand(CardLists.filter(list, CardPredicates.Presets.LANDS)); + return getWorstLand(CardLists.filter(list, CardPredicates.Presets.LANDS)); } final boolean hasCreatures = Iterables.any(list, CardPredicates.Presets.CREATURES); @@ -391,7 +391,7 @@ public class ComputerUtilCard { List lands = CardLists.filter(list, CardPredicates.Presets.LANDS); if (lands.size() > 6) { - return ComputerUtilCard.getWorstLand(lands); + return getWorstLand(lands); } if (hasEnchantmants || hasArtifacts) { @@ -441,7 +441,7 @@ public class ComputerUtilCard { public static final Comparator EvaluateCreatureComparator = new Comparator() { @Override public int compare(final Card a, final Card b) { - return ComputerUtilCard.evaluateCreature(b) - ComputerUtilCard.evaluateCreature(a); + return evaluateCreature(b) - evaluateCreature(a); } }; @@ -879,8 +879,8 @@ public class ComputerUtilCard { public static final Predicate AI_KNOWS_HOW_TO_PLAY_ALL_CARDS = new Predicate() { @Override public boolean apply(Deck d) { - for(Entry cp: d) { - for(Entry e : cp.getValue()) { + for (Entry cp: d) { + for (Entry e : cp.getValue()) { if ( e.getKey().getRules().getAiHints().getRemAIDecks() ) return false; } diff --git a/forge-ai/src/main/java/forge/ai/ability/AnimateAi.java b/forge-ai/src/main/java/forge/ai/ability/AnimateAi.java index e398ef82e98..eb1e863f80b 100644 --- a/forge-ai/src/main/java/forge/ai/ability/AnimateAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/AnimateAi.java @@ -360,8 +360,7 @@ public class AnimateAi extends SpellAbilityAi { // This is reasonable for now. Kamahl, Fist of Krosa and a sorcery or // two are the only things // that animate a target. Those can just use AI:RemoveDeck:All until - // this can do a reasonably - // good job of picking a good target + // this can do a reasonably good job of picking a good target return false; } diff --git a/forge-ai/src/main/java/forge/ai/ability/AttachAi.java b/forge-ai/src/main/java/forge/ai/ability/AttachAi.java index 99642b44a08..90051e1cde9 100644 --- a/forge-ai/src/main/java/forge/ai/ability/AttachAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/AttachAi.java @@ -555,12 +555,7 @@ public class AttachAi extends SpellAbilityAi { if (!evenBetterList.isEmpty()) { betterList = evenBetterList; } - evenBetterList = CardLists.filter(betterList, new Predicate() { - @Override - public boolean apply(final Card c) { - return c.isUntapped(); - } - }); + evenBetterList = CardLists.filter(betterList, CardPredicates.Presets.UNTAPPED); if (!evenBetterList.isEmpty()) { betterList = evenBetterList; } diff --git a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java index d9c98e14ea3..7c786d6f3d5 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java @@ -165,7 +165,7 @@ public class ChangeZoneAi extends SpellAbilityAi { return sa.isTargetNumberValid(); // Pre-targeted in checkAiLogic } } - if (isHidden(sa)) { + if (sa.isHidden()) { return hiddenOriginCanPlayAI(aiPlayer, sa); } return knownOriginCanPlayAI(aiPlayer, sa); @@ -182,21 +182,12 @@ public class ChangeZoneAi extends SpellAbilityAi { */ @Override public boolean chkAIDrawback(SpellAbility sa, Player aiPlayer) { - if (isHidden(sa)) { + if (sa.isHidden()) { return hiddenOriginPlayDrawbackAI(aiPlayer, sa); } return knownOriginPlayDrawbackAI(aiPlayer, sa); } - - private static boolean isHidden(SpellAbility sa) { - boolean hidden = sa.hasParam("Hidden"); - if (!hidden && sa.hasParam("Origin")) { - hidden = ZoneType.isHidden(sa.getParam("Origin")); - } - return hidden; - } - /** *

* changeZoneTriggerAINoCost. @@ -232,7 +223,7 @@ public class ChangeZoneAi extends SpellAbilityAi { return delta <= 0; } - if (isHidden(sa)) { + if (sa.isHidden()) { return hiddenTriggerAI(aiPlayer, sa, mandatory); } return knownOriginTriggerAI(aiPlayer, sa, mandatory); @@ -788,7 +779,7 @@ public class ChangeZoneAi extends SpellAbilityAi { return ph.getNextTurn().equals(ai) && ph.is(PhaseType.END_OF_TURN); } - if (isHidden(sa)) { + if (sa.isHidden()) { return true; } @@ -1316,8 +1307,7 @@ public class ChangeZoneAi extends SpellAbilityAi { private static Card canBouncePermanent(final Player ai, SpellAbility sa, CardCollectionView list) { Game game = ai.getGame(); // filter out untargetables - CardCollectionView aiPermanents = CardLists - .filterControlledBy(list, ai); + CardCollectionView aiPermanents = CardLists.filterControlledBy(list, ai); CardCollection aiPlaneswalkers = CardLists.filter(aiPermanents, Presets.PLANESWALKERS); // Felidar Guardian + Saheeli Rai combo support diff --git a/forge-ai/src/main/java/forge/ai/ability/TapAllAi.java b/forge-ai/src/main/java/forge/ai/ability/TapAllAi.java index ff456311037..214cbbc4763 100644 --- a/forge-ai/src/main/java/forge/ai/ability/TapAllAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/TapAllAi.java @@ -12,7 +12,7 @@ import forge.game.ability.AbilityUtils; import forge.game.card.Card; import forge.game.card.CardCollectionView; import forge.game.card.CardLists; -import forge.game.card.CardPredicates.Presets; +import forge.game.card.CardPredicates; import forge.game.combat.CombatUtil; import forge.game.phase.PhaseType; import forge.game.player.Player; @@ -49,7 +49,7 @@ public class TapAllAi extends SpellAbilityAi { } validTappables = CardLists.getValidCards(validTappables, valid, source.getController(), source, sa); - validTappables = CardLists.filter(validTappables, Presets.UNTAPPED); + validTappables = CardLists.filter(validTappables, CardPredicates.Presets.UNTAPPED); if (sa.hasParam("AILogic")) { String logic = sa.getParam("AILogic"); @@ -69,18 +69,8 @@ public class TapAllAi extends SpellAbilityAi { return false; } - final List human = CardLists.filter(validTappables, new Predicate() { - @Override - public boolean apply(final Card c) { - return c.getController().equals(opp); - } - }); - final List compy = CardLists.filter(validTappables, new Predicate() { - @Override - public boolean apply(final Card c) { - return c.getController().equals(ai); - } - }); + final List human = CardLists.filterControlledBy(validTappables, opp); + final List compy = CardLists.filterControlledBy(validTappables, ai); if (human.size() <= compy.size()) { return false; } @@ -102,7 +92,7 @@ public class TapAllAi extends SpellAbilityAi { final Game game = source.getGame(); CardCollectionView tmpList = game.getCardsIn(ZoneType.Battlefield); tmpList = CardLists.getValidCards(tmpList, valid, source.getController(), source, sa); - tmpList = CardLists.filter(tmpList, Presets.UNTAPPED); + tmpList = CardLists.filter(tmpList, CardPredicates.Presets.UNTAPPED); return tmpList; } diff --git a/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java index 4436f96c163..2bb8cf9c569 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java @@ -314,7 +314,6 @@ public class AnimateEffect extends AnimateEffectBase { sb.append("."); } - return sb.toString(); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java index 727774e2be5..a660dca451e 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java @@ -57,17 +57,9 @@ import forge.util.collect.FCollectionView; public class ChangeZoneEffect extends SpellAbilityEffect { - private boolean isHidden(SpellAbility sa) { - boolean hidden = sa.hasParam("Hidden"); - if (!hidden && sa.hasParam("Origin")) { - hidden = ZoneType.isHidden(sa.getParam("Origin")); - } - return hidden; - } - @Override protected String getStackDescription(SpellAbility sa) { - if (isHidden(sa)) { + if (sa.isHidden()) { return changeHiddenOriginStackDescription(sa); } return changeKnownOriginStackDescription(sa); @@ -424,7 +416,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { return; } - if (isHidden(sa) && !sa.hasParam("Ninjutsu")) { + if (sa.isHidden() && !sa.hasParam("Ninjutsu")) { changeHiddenOriginResolve(sa); } else { //else if (isKnown(origin) || sa.containsKey("Ninjutsu")) { diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index a000d651673..da47da4ceba 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -2378,4 +2378,12 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit } rollbackEffects.clear(); } + + public boolean isHidden() { + boolean hidden = hasParam("Hidden"); + if (!hidden && hasParam("Origin")) { + hidden = ZoneType.isHidden(getParam("Origin")); + } + return hidden; + } }