This commit is contained in:
tool4EvEr
2023-03-29 16:02:58 +02:00
parent 65964ad586
commit 99f8cca233
18 changed files with 47 additions and 113 deletions

View File

@@ -29,7 +29,6 @@ public class BecomesBlockedAi extends SpellAbilityAi {
if (tgt != null) {
sa.resetTargets();
CardCollection list = CardLists.filterControlledBy(game.getCardsIn(ZoneType.Battlefield), aiPlayer.getOpponents());
list = CardLists.getValidCards(list, tgt.getValidTgts(), source.getController(), source, sa);
list = CardLists.getTargetableCards(list, sa);
list = CardLists.getNotKeyword(list, Keyword.TRAMPLE);

View File

@@ -26,7 +26,6 @@ public class BidLifeAi extends SpellAbilityAi {
sa.resetTargets();
if (tgt.canTgtCreature()) {
List<Card> list = CardLists.getTargetableCards(AiAttackController.choosePreferredDefenderPlayer(aiPlayer).getCardsIn(ZoneType.Battlefield), sa);
list = CardLists.getValidCards(list, tgt.getValidTgts(), source.getController(), source, sa);
if (list.isEmpty()) {
return false;
}

View File

@@ -471,8 +471,7 @@ public class DamageDealAi extends DamageAiBase {
}
for (final Object o : objects) {
if (o instanceof Card) {
final Card c = (Card) o;
hPlay.remove(c);
hPlay.remove(o);
}
}
hPlay = CardLists.getTargetableCards(hPlay, sa);

View File

@@ -91,8 +91,7 @@ public class DamagePreventAi extends SpellAbilityAi {
}
final List<Card> threatenedTargets = new ArrayList<>();
// filter AIs battlefield by what I can target
List<Card> targetables = CardLists.getValidCards(ai.getCardsIn(ZoneType.Battlefield), tgt.getValidTgts(), ai, hostCard, sa);
targetables = CardLists.getTargetableCards(targetables, sa);
List<Card> targetables = CardLists.getTargetableCards(ai.getCardsIn(ZoneType.Battlefield), sa);
for (final Card c : targetables) {
if (objects.contains(c)) {

View File

@@ -104,7 +104,6 @@ public class EffectAi extends SpellAbilityAi {
}
} else {
List<Card> list = game.getCombat().getAttackers();
list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getHostCard(), sa);
list = CardLists.getTargetableCards(list, sa);
Card target = ComputerUtilCard.getBestCreatureAI(list);
if (target == null) {

View File

@@ -111,10 +111,8 @@ public class PhasesAi extends SpellAbilityAi {
private boolean phasesUnpreferredTargeting(final Game game, final SpellAbility sa, final boolean mandatory) {
final Card source = sa.getHostCard();
final TargetRestrictions tgt = sa.getTargetRestrictions();
CardCollectionView list = game.getCardsIn(ZoneType.Battlefield);
list = CardLists.getTargetableCards(CardLists.getValidCards(list, tgt.getValidTgts(), source.getController(), source, sa), sa);
CardCollectionView list = CardLists.getTargetableCards(game.getCardsIn(ZoneType.Battlefield), sa);
// in general, if it's our own creature, choose the weakest one, if it's the opponent's creature,
// choose the strongest one

View File

@@ -87,9 +87,7 @@ public class RegenerateAi extends SpellAbilityAi {
} else {
sa.resetTargets();
// filter AIs battlefield by what I can target
List<Card> targetables = CardLists.getValidCards(ai.getCardsIn(ZoneType.Battlefield), tgt.getValidTgts(),
ai, hostCard, sa);
targetables = CardLists.getTargetableCards(targetables, sa);
List<Card> targetables = CardLists.getTargetableCards(ai.getCardsIn(ZoneType.Battlefield), sa);
if (targetables.size() == 0) {
return false;
@@ -149,14 +147,10 @@ public class RegenerateAi extends SpellAbilityAi {
}
private static boolean regenMandatoryTarget(final Player ai, final SpellAbility sa, final boolean mandatory) {
final Card hostCard = sa.getHostCard();
final Game game = ai.getGame();
final TargetRestrictions tgt = sa.getTargetRestrictions();
sa.resetTargets();
// filter AIs battlefield by what I can target
CardCollectionView targetables = game.getCardsIn(ZoneType.Battlefield);
targetables = CardLists.getValidCards(targetables, tgt.getValidTgts(), ai, hostCard, sa);
targetables = CardLists.getTargetableCards(targetables, sa);
CardCollectionView targetables = CardLists.getTargetableCards(game.getCardsIn(ZoneType.Battlefield), sa);
final List<Card> compTargetables = CardLists.filterControlledBy(targetables, ai);
if (targetables.size() == 0) {

View File

@@ -145,7 +145,6 @@ public class TokenAi extends SpellAbilityAi {
/*
* readParameters() is called in checkPhaseRestrictions
*/
final Card source = sa.getHostCard();
final Game game = ai.getGame();
final Player opp = ai.getWeakestOpponent();
@@ -174,9 +173,7 @@ public class TokenAi extends SpellAbilityAi {
sa.getTargets().add(ai);
} else {
// Flash Foliage
CardCollection list = ai.getOpponents().getCardsIn(ZoneType.Battlefield);
list = CardLists.getValidCards(list, tgt.getValidTgts(), source.getController(), source, sa);
list = CardLists.getTargetableCards(list, sa);
CardCollection list = CardLists.getTargetableCards(ai.getOpponents().getCardsIn(ZoneType.Battlefield), sa);
CardCollection betterList = CardLists.filter(list, new Predicate<Card>() {
@Override
public boolean apply(Card c) {

View File

@@ -241,9 +241,7 @@ public class UntapAi extends SpellAbilityAi {
final Card source = sa.getHostCard();
final TargetRestrictions tgt = sa.getTargetRestrictions();
CardCollection list = CardLists.getValidCards(source.getGame().getCardsIn(ZoneType.Battlefield),
tgt.getValidTgts(), source.getController(), source, sa);
list = CardLists.getTargetableCards(list, sa);
CardCollection list = CardLists.getTargetableCards(source.getGame().getCardsIn(ZoneType.Battlefield), sa);
// filter by enchantments and planeswalkers, their tapped state doesn't matter.
final String[] tappablePermanents = { "Enchantment", "Planeswalker" };