This commit is contained in:
tool4EvEr
2021-05-23 17:36:07 +02:00
parent 9232042b02
commit c39313d973
8 changed files with 28 additions and 55 deletions

View File

@@ -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<Card> 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<Card> EvaluateCreatureComparator = new Comparator<Card>() {
@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<Deck> AI_KNOWS_HOW_TO_PLAY_ALL_CARDS = new Predicate<Deck>() {
@Override
public boolean apply(Deck d) {
for(Entry<DeckSection, CardPool> cp: d) {
for(Entry<PaperCard, Integer> e : cp.getValue()) {
for (Entry<DeckSection, CardPool> cp: d) {
for (Entry<PaperCard, Integer> e : cp.getValue()) {
if ( e.getKey().getRules().getAiHints().getRemAIDecks() )
return false;
}

View File

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

View File

@@ -555,12 +555,7 @@ public class AttachAi extends SpellAbilityAi {
if (!evenBetterList.isEmpty()) {
betterList = evenBetterList;
}
evenBetterList = CardLists.filter(betterList, new Predicate<Card>() {
@Override
public boolean apply(final Card c) {
return c.isUntapped();
}
});
evenBetterList = CardLists.filter(betterList, CardPredicates.Presets.UNTAPPED);
if (!evenBetterList.isEmpty()) {
betterList = evenBetterList;
}

View File

@@ -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;
}
/**
* <p>
* 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

View File

@@ -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<Card> human = CardLists.filter(validTappables, new Predicate<Card>() {
@Override
public boolean apply(final Card c) {
return c.getController().equals(opp);
}
});
final List<Card> compy = CardLists.filter(validTappables, new Predicate<Card>() {
@Override
public boolean apply(final Card c) {
return c.getController().equals(ai);
}
});
final List<Card> human = CardLists.filterControlledBy(validTappables, opp);
final List<Card> 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;
}

View File

@@ -314,7 +314,6 @@ public class AnimateEffect extends AnimateEffectBase {
sb.append(".");
}
return sb.toString();
}

View File

@@ -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")) {

View File

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