From 43ec4e545f9e27319512fbeb6aba347acb7047a1 Mon Sep 17 00:00:00 2001 From: Agetian Date: Fri, 16 Jun 2017 15:05:07 +0000 Subject: [PATCH] - Some refactoring and imports cleanup in ChooseTypeAi. --- .../java/forge/ai/ability/ChooseTypeAi.java | 71 ++++++++++--------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/ChooseTypeAi.java b/forge-ai/src/main/java/forge/ai/ability/ChooseTypeAi.java index 5e14d0ecf7e..f4642a83fc0 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChooseTypeAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChooseTypeAi.java @@ -17,7 +17,6 @@ import forge.game.phase.PhaseType; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.zone.ZoneType; -import java.util.Arrays; import java.util.List; public class ChooseTypeAi extends SpellAbilityAi { @@ -27,45 +26,49 @@ public class ChooseTypeAi extends SpellAbilityAi { return false; } else if ("MostProminentComputerControls".equals(sa.getParam("AILogic"))) { if (ComputerUtilAbility.getAbilitySourceName(sa).equals("Mirror Entity Avatar")) { - if (AiCardMemory.isRememberedCard(aiPlayer, sa.getHostCard(), AiCardMemory.MemorySet.ANIMATED_THIS_TURN)) { - return false; - } - if (!aiPlayer.getGame().getPhaseHandler().is(PhaseType.MAIN1, aiPlayer)) { - return false; - } - - List valid = Lists.newArrayList(CardType.getAllCreatureTypes()); - String chosenType = ComputerUtilCard.getMostProminentType(aiPlayer.getCardsIn(ZoneType.Battlefield), valid); - if (chosenType.isEmpty()) { - return false; - } - - int maxX = ComputerUtilMana.determineMaxAffordableX(aiPlayer, sa); - int avgPower = 0; - - if (maxX > 1) { - CardCollection cre = CardLists.filter(aiPlayer.getCardsIn(ZoneType.Battlefield), - Predicates.and(CardPredicates.isType(chosenType), CardPredicates.Presets.UNTAPPED)); - if (!cre.isEmpty()) { - for (Card c: cre) { - avgPower += c.getCurrentPower(); - } - avgPower /= cre.size(); - if (maxX > avgPower) { - sa.setSVar("PayX", String.valueOf(maxX)); - AiCardMemory.rememberCard(aiPlayer, sa.getHostCard(), AiCardMemory.MemorySet.ANIMATED_THIS_TURN); - return true; - } - } - } - - return false; + return doMirrorEntityLogic(aiPlayer, sa); } } return doTriggerAINoCost(aiPlayer, sa, false); } + private boolean doMirrorEntityLogic(Player aiPlayer, SpellAbility sa) { + if (AiCardMemory.isRememberedCard(aiPlayer, sa.getHostCard(), AiCardMemory.MemorySet.ANIMATED_THIS_TURN)) { + return false; + } + if (!aiPlayer.getGame().getPhaseHandler().is(PhaseType.MAIN1, aiPlayer)) { + return false; + } + + List valid = Lists.newArrayList(CardType.getAllCreatureTypes()); + String chosenType = ComputerUtilCard.getMostProminentType(aiPlayer.getCardsIn(ZoneType.Battlefield), valid); + if (chosenType.isEmpty()) { + return false; + } + + int maxX = ComputerUtilMana.determineMaxAffordableX(aiPlayer, sa); + int avgPower = 0; + + if (maxX > 1) { + CardCollection cre = CardLists.filter(aiPlayer.getCardsIn(ZoneType.Battlefield), + Predicates.and(CardPredicates.isType(chosenType), CardPredicates.Presets.UNTAPPED)); + if (!cre.isEmpty()) { + for (Card c: cre) { + avgPower += c.getCurrentPower(); + } + avgPower /= cre.size(); + if (maxX > avgPower) { + sa.setSVar("PayX", String.valueOf(maxX)); + AiCardMemory.rememberCard(aiPlayer, sa.getHostCard(), AiCardMemory.MemorySet.ANIMATED_THIS_TURN); + return true; + } + } + } + + return false; + } + @Override protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) { if (sa.usesTargeting()) {