diff --git a/forge-ai/src/main/java/forge/ai/AiCostDecision.java b/forge-ai/src/main/java/forge/ai/AiCostDecision.java index ecedfbdbff8..60df89a9da1 100644 --- a/forge-ai/src/main/java/forge/ai/AiCostDecision.java +++ b/forge-ai/src/main/java/forge/ai/AiCostDecision.java @@ -240,8 +240,9 @@ public class AiCostDecision extends CostDecisionMakerBase { @Override public PaymentDecision visit(final CostEnlist cost) { - // currently unused - return null; + CardCollection choices = cost.getCardsForEnlisting(player, source, ability); + CardLists.sortByPowerDesc(choices); + return PaymentDecision.card(choices.getFirst()); } @Override diff --git a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java index caede257117..aceeaa77065 100644 --- a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java +++ b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java @@ -43,6 +43,7 @@ import forge.game.card.CardView; import forge.game.card.CounterType; import forge.game.combat.Combat; import forge.game.cost.Cost; +import forge.game.cost.CostEnlist; import forge.game.cost.CostPart; import forge.game.cost.CostPartMana; import forge.game.keyword.KeywordInterface; @@ -340,9 +341,12 @@ public class PlayerControllerAi extends PlayerController { @Override public List enlistAttackers(List attackers) { - // not able yet - // TODO get best creature that can't attack and check for lethal with it - return Lists.newArrayList(); + CardCollection cards = CostEnlist.getCardsForEnlisting(brains.getPlayer(), null, null); + ComputerUtilCard.sortByEvaluateCreature(new CardCollection(attackers)); + // do not enlist more than available payment choices + attackers = attackers.subList(0, cards.size()); + // TODO check if not needed as defender + return attackers; } @Override diff --git a/forge-game/src/main/java/forge/game/cost/CostEnlist.java b/forge-game/src/main/java/forge/game/cost/CostEnlist.java index 333520a1255..7f882c3bcf9 100644 --- a/forge-game/src/main/java/forge/game/cost/CostEnlist.java +++ b/forge-game/src/main/java/forge/game/cost/CostEnlist.java @@ -101,7 +101,7 @@ public class CostEnlist extends CostPartWithTrigger { return visitor.visit(this); } - public CardCollection getCardsForEnlisting(Player active, Card source, SpellAbility paySA) { + public static CardCollection getCardsForEnlisting(Player active, Card source, SpellAbility paySA) { return CardLists.getValidCards(active.getCardsIn(ZoneType.Battlefield), "Creature.notattacking+untapped+!sick", active, source, paySA); }