From 4fe6569dc55282a704d00ccf97c050c2c70dc694 Mon Sep 17 00:00:00 2001 From: Hanmac Date: Thu, 14 Jul 2016 19:33:59 +0000 Subject: [PATCH] TokenAi: add chooseSinglePlayer for it, its used for TokenAttacking and should be used to get the player it should attack. --- .../main/java/forge/ai/ability/TokenAi.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/forge-ai/src/main/java/forge/ai/ability/TokenAi.java b/forge-ai/src/main/java/forge/ai/ability/TokenAi.java index e256d01ac94..2788f3028a1 100644 --- a/forge-ai/src/main/java/forge/ai/ability/TokenAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/TokenAi.java @@ -5,6 +5,8 @@ import java.util.Arrays; import java.util.List; import com.google.common.base.Predicate; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCard; @@ -20,6 +22,7 @@ import forge.game.card.CardCollection; import forge.game.card.CardFactory; import forge.game.card.CardLists; import forge.game.card.CardPredicates; +import forge.game.combat.Combat; import forge.game.cost.CostPart; import forge.game.cost.CostPutCounter; import forge.game.cost.CostRemoveCounter; @@ -303,6 +306,25 @@ public class TokenAi extends SpellAbilityAi { return true; } + /* (non-Javadoc) + * @see forge.card.ability.SpellAbilityAi#chooseSinglePlayer(forge.game.player.Player, forge.card.spellability.SpellAbility, Iterable options) + */ + @Override + protected Player chooseSinglePlayer(Player ai, SpellAbility sa, Iterable options) { + // TODO: AILogic + Combat combat = ai.getGame().getCombat(); + // TokenAttacking + if (combat != null && sa.hasParam("TokenAttacking")) { + Card attacker = spawnToken(ai, sa); + for (Player p : options) { + if (!ComputerUtilCard.canBeBlockedProfitably(p, attacker)) { + return p; + } + } + } + return Iterables.getFirst(options, null); + } + /** * Create the token as a Card object. * @param ai owner of the new token