From 7e94464a4c379fd8c20296ac05595a7cbd32db11 Mon Sep 17 00:00:00 2001 From: Michael Kamensky Date: Sat, 13 Nov 2021 18:04:49 +0300 Subject: [PATCH] - Move AILogic FellTheMighty into SpecialCardAi (card-specific). --- .../src/main/java/forge/ai/SpecialCardAi.java | 26 ++++++++++++++++ .../java/forge/ai/ability/DestroyAllAi.java | 30 ++----------------- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/SpecialCardAi.java b/forge-ai/src/main/java/forge/ai/SpecialCardAi.java index 459b4714a5d..7584678db2e 100644 --- a/forge-ai/src/main/java/forge/ai/SpecialCardAi.java +++ b/forge-ai/src/main/java/forge/ai/SpecialCardAi.java @@ -545,6 +545,32 @@ public class SpecialCardAi { } } + // Fell the Mighty + public static class FellTheMighty { + public static boolean consider(final Player ai, final SpellAbility sa) { + CardCollection aiList = ai.getCreaturesInPlay(); + if (aiList.isEmpty()) { + return false; + } + CardLists.sortByPowerAsc(aiList); + Card lowest = aiList.get(0); + if (!sa.canTarget(lowest)) { + return false; + } + + CardCollection oppList = CardLists.filter(ai.getGame().getCardsIn(ZoneType.Battlefield), + CardPredicates.Presets.CREATURES, CardPredicates.isControlledByAnyOf(ai.getOpponents())); + + oppList = CardLists.filterPower(oppList, lowest.getNetPower() + 1); + if (ComputerUtilCard.evaluateCreatureList(oppList) > 200) { + sa.resetTargets(); + sa.getTargets().add(lowest); + return true; + } + return false; + } + } + // Force of Will public static class ForceOfWill { public static boolean consider(final Player ai, final SpellAbility sa) { diff --git a/forge-ai/src/main/java/forge/ai/ability/DestroyAllAi.java b/forge-ai/src/main/java/forge/ai/ability/DestroyAllAi.java index effedf088ea..03055c38c8f 100644 --- a/forge-ai/src/main/java/forge/ai/ability/DestroyAllAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/DestroyAllAi.java @@ -3,12 +3,7 @@ package forge.ai.ability; import com.google.common.base.Predicate; import com.google.common.base.Predicates; -import forge.ai.AiBlockController; -import forge.ai.ComputerUtil; -import forge.ai.ComputerUtilCard; -import forge.ai.ComputerUtilCombat; -import forge.ai.ComputerUtilCost; -import forge.ai.SpellAbilityAi; +import forge.ai.*; import forge.card.MagicColor; import forge.game.card.Card; import forge.game.card.CardCollection; @@ -70,27 +65,8 @@ public class DestroyAllAi extends SpellAbilityAi { final String aiLogic = sa.getParamOrDefault("AILogic", ""); if ("FellTheMighty".equals(aiLogic)) { - CardCollection aiList = ai.getCreaturesInPlay(); - if (aiList.isEmpty()) { - return false; - } - CardLists.sortByPowerAsc(aiList); - Card lowest = aiList.get(0); - if (!sa.canTarget(lowest)) { - return false; - } - - CardCollection oppList = CardLists.filter(ai.getGame().getCardsIn(ZoneType.Battlefield), - CardPredicates.Presets.CREATURES, CardPredicates.isControlledByAnyOf(ai.getOpponents())); - - oppList = CardLists.filterPower(oppList, lowest.getNetPower() + 1); - if (ComputerUtilCard.evaluateCreatureList(oppList) > 200) { - sa.resetTargets(); - sa.getTargets().add(lowest); - return true; - } - return false; - } + return SpecialCardAi.FellTheMighty.consider(ai, sa); + } return doMassRemovalLogic(ai, sa); }