mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
Clean up
This commit is contained in:
@@ -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)) {
|
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);
|
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);
|
List<Card> lands = CardLists.filter(list, CardPredicates.Presets.LANDS);
|
||||||
if (lands.size() > 6) {
|
if (lands.size() > 6) {
|
||||||
return ComputerUtilCard.getWorstLand(lands);
|
return getWorstLand(lands);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasEnchantmants || hasArtifacts) {
|
if (hasEnchantmants || hasArtifacts) {
|
||||||
@@ -441,7 +441,7 @@ public class ComputerUtilCard {
|
|||||||
public static final Comparator<Card> EvaluateCreatureComparator = new Comparator<Card>() {
|
public static final Comparator<Card> EvaluateCreatureComparator = new Comparator<Card>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(final Card a, final Card b) {
|
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>() {
|
public static final Predicate<Deck> AI_KNOWS_HOW_TO_PLAY_ALL_CARDS = new Predicate<Deck>() {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Deck d) {
|
public boolean apply(Deck d) {
|
||||||
for(Entry<DeckSection, CardPool> cp: d) {
|
for (Entry<DeckSection, CardPool> cp: d) {
|
||||||
for(Entry<PaperCard, Integer> e : cp.getValue()) {
|
for (Entry<PaperCard, Integer> e : cp.getValue()) {
|
||||||
if ( e.getKey().getRules().getAiHints().getRemAIDecks() )
|
if ( e.getKey().getRules().getAiHints().getRemAIDecks() )
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -360,8 +360,7 @@ public class AnimateAi extends SpellAbilityAi {
|
|||||||
// This is reasonable for now. Kamahl, Fist of Krosa and a sorcery or
|
// This is reasonable for now. Kamahl, Fist of Krosa and a sorcery or
|
||||||
// two are the only things
|
// two are the only things
|
||||||
// that animate a target. Those can just use AI:RemoveDeck:All until
|
// that animate a target. Those can just use AI:RemoveDeck:All until
|
||||||
// this can do a reasonably
|
// this can do a reasonably good job of picking a good target
|
||||||
// good job of picking a good target
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -555,12 +555,7 @@ public class AttachAi extends SpellAbilityAi {
|
|||||||
if (!evenBetterList.isEmpty()) {
|
if (!evenBetterList.isEmpty()) {
|
||||||
betterList = evenBetterList;
|
betterList = evenBetterList;
|
||||||
}
|
}
|
||||||
evenBetterList = CardLists.filter(betterList, new Predicate<Card>() {
|
evenBetterList = CardLists.filter(betterList, CardPredicates.Presets.UNTAPPED);
|
||||||
@Override
|
|
||||||
public boolean apply(final Card c) {
|
|
||||||
return c.isUntapped();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (!evenBetterList.isEmpty()) {
|
if (!evenBetterList.isEmpty()) {
|
||||||
betterList = evenBetterList;
|
betterList = evenBetterList;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -165,7 +165,7 @@ public class ChangeZoneAi extends SpellAbilityAi {
|
|||||||
return sa.isTargetNumberValid(); // Pre-targeted in checkAiLogic
|
return sa.isTargetNumberValid(); // Pre-targeted in checkAiLogic
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isHidden(sa)) {
|
if (sa.isHidden()) {
|
||||||
return hiddenOriginCanPlayAI(aiPlayer, sa);
|
return hiddenOriginCanPlayAI(aiPlayer, sa);
|
||||||
}
|
}
|
||||||
return knownOriginCanPlayAI(aiPlayer, sa);
|
return knownOriginCanPlayAI(aiPlayer, sa);
|
||||||
@@ -182,21 +182,12 @@ public class ChangeZoneAi extends SpellAbilityAi {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean chkAIDrawback(SpellAbility sa, Player aiPlayer) {
|
public boolean chkAIDrawback(SpellAbility sa, Player aiPlayer) {
|
||||||
if (isHidden(sa)) {
|
if (sa.isHidden()) {
|
||||||
return hiddenOriginPlayDrawbackAI(aiPlayer, sa);
|
return hiddenOriginPlayDrawbackAI(aiPlayer, sa);
|
||||||
}
|
}
|
||||||
return knownOriginPlayDrawbackAI(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>
|
* <p>
|
||||||
* changeZoneTriggerAINoCost.
|
* changeZoneTriggerAINoCost.
|
||||||
@@ -232,7 +223,7 @@ public class ChangeZoneAi extends SpellAbilityAi {
|
|||||||
return delta <= 0;
|
return delta <= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isHidden(sa)) {
|
if (sa.isHidden()) {
|
||||||
return hiddenTriggerAI(aiPlayer, sa, mandatory);
|
return hiddenTriggerAI(aiPlayer, sa, mandatory);
|
||||||
}
|
}
|
||||||
return knownOriginTriggerAI(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);
|
return ph.getNextTurn().equals(ai) && ph.is(PhaseType.END_OF_TURN);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isHidden(sa)) {
|
if (sa.isHidden()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1316,8 +1307,7 @@ public class ChangeZoneAi extends SpellAbilityAi {
|
|||||||
private static Card canBouncePermanent(final Player ai, SpellAbility sa, CardCollectionView list) {
|
private static Card canBouncePermanent(final Player ai, SpellAbility sa, CardCollectionView list) {
|
||||||
Game game = ai.getGame();
|
Game game = ai.getGame();
|
||||||
// filter out untargetables
|
// filter out untargetables
|
||||||
CardCollectionView aiPermanents = CardLists
|
CardCollectionView aiPermanents = CardLists.filterControlledBy(list, ai);
|
||||||
.filterControlledBy(list, ai);
|
|
||||||
CardCollection aiPlaneswalkers = CardLists.filter(aiPermanents, Presets.PLANESWALKERS);
|
CardCollection aiPlaneswalkers = CardLists.filter(aiPermanents, Presets.PLANESWALKERS);
|
||||||
|
|
||||||
// Felidar Guardian + Saheeli Rai combo support
|
// Felidar Guardian + Saheeli Rai combo support
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import forge.game.ability.AbilityUtils;
|
|||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
import forge.game.card.CardCollectionView;
|
import forge.game.card.CardCollectionView;
|
||||||
import forge.game.card.CardLists;
|
import forge.game.card.CardLists;
|
||||||
import forge.game.card.CardPredicates.Presets;
|
import forge.game.card.CardPredicates;
|
||||||
import forge.game.combat.CombatUtil;
|
import forge.game.combat.CombatUtil;
|
||||||
import forge.game.phase.PhaseType;
|
import forge.game.phase.PhaseType;
|
||||||
import forge.game.player.Player;
|
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.getValidCards(validTappables, valid, source.getController(), source, sa);
|
||||||
validTappables = CardLists.filter(validTappables, Presets.UNTAPPED);
|
validTappables = CardLists.filter(validTappables, CardPredicates.Presets.UNTAPPED);
|
||||||
|
|
||||||
if (sa.hasParam("AILogic")) {
|
if (sa.hasParam("AILogic")) {
|
||||||
String logic = sa.getParam("AILogic");
|
String logic = sa.getParam("AILogic");
|
||||||
@@ -69,18 +69,8 @@ public class TapAllAi extends SpellAbilityAi {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
final List<Card> human = CardLists.filter(validTappables, new Predicate<Card>() {
|
final List<Card> human = CardLists.filterControlledBy(validTappables, opp);
|
||||||
@Override
|
final List<Card> compy = CardLists.filterControlledBy(validTappables, ai);
|
||||||
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);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (human.size() <= compy.size()) {
|
if (human.size() <= compy.size()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -102,7 +92,7 @@ public class TapAllAi extends SpellAbilityAi {
|
|||||||
final Game game = source.getGame();
|
final Game game = source.getGame();
|
||||||
CardCollectionView tmpList = game.getCardsIn(ZoneType.Battlefield);
|
CardCollectionView tmpList = game.getCardsIn(ZoneType.Battlefield);
|
||||||
tmpList = CardLists.getValidCards(tmpList, valid, source.getController(), source, sa);
|
tmpList = CardLists.getValidCards(tmpList, valid, source.getController(), source, sa);
|
||||||
tmpList = CardLists.filter(tmpList, Presets.UNTAPPED);
|
tmpList = CardLists.filter(tmpList, CardPredicates.Presets.UNTAPPED);
|
||||||
return tmpList;
|
return tmpList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -314,7 +314,6 @@ public class AnimateEffect extends AnimateEffectBase {
|
|||||||
sb.append(".");
|
sb.append(".");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -57,17 +57,9 @@ import forge.util.collect.FCollectionView;
|
|||||||
|
|
||||||
public class ChangeZoneEffect extends SpellAbilityEffect {
|
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
|
@Override
|
||||||
protected String getStackDescription(SpellAbility sa) {
|
protected String getStackDescription(SpellAbility sa) {
|
||||||
if (isHidden(sa)) {
|
if (sa.isHidden()) {
|
||||||
return changeHiddenOriginStackDescription(sa);
|
return changeHiddenOriginStackDescription(sa);
|
||||||
}
|
}
|
||||||
return changeKnownOriginStackDescription(sa);
|
return changeKnownOriginStackDescription(sa);
|
||||||
@@ -424,7 +416,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isHidden(sa) && !sa.hasParam("Ninjutsu")) {
|
if (sa.isHidden() && !sa.hasParam("Ninjutsu")) {
|
||||||
changeHiddenOriginResolve(sa);
|
changeHiddenOriginResolve(sa);
|
||||||
} else {
|
} else {
|
||||||
//else if (isKnown(origin) || sa.containsKey("Ninjutsu")) {
|
//else if (isKnown(origin) || sa.containsKey("Ninjutsu")) {
|
||||||
|
|||||||
@@ -2378,4 +2378,12 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
|
|||||||
}
|
}
|
||||||
rollbackEffects.clear();
|
rollbackEffects.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isHidden() {
|
||||||
|
boolean hidden = hasParam("Hidden");
|
||||||
|
if (!hidden && hasParam("Origin")) {
|
||||||
|
hidden = ZoneType.isHidden(getParam("Origin"));
|
||||||
|
}
|
||||||
|
return hidden;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user