diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java index 61891b7ad87..01385c3ca4e 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java @@ -964,6 +964,22 @@ public class ComputerUtilCard { } chosen.add(chosenColor); } + else if (logic.equals("HighestDevotionToColor")) { + int curDevotion = 0; + String chosenColor = MagicColor.Constant.WHITE; + CardCollectionView hand = ai.getCardsIn(ZoneType.Hand); + for(byte c : MagicColor.WUBRG) { + String devotionCode = "Count$Devotion." + MagicColor.toLongString(c); + + int devotion = CardFactoryUtil.xCount(sa.getHostCard(), devotionCode); + if (devotion > curDevotion && !CardLists.filter(hand, CardPredicates.isColor(c)).isEmpty()) { + curDevotion = devotion; + chosenColor = MagicColor.toLongString(c); + } + } + chosen.add(chosenColor); + } + } if (chosen.isEmpty()) { chosen.add(MagicColor.Constant.GREEN); diff --git a/forge-ai/src/main/java/forge/ai/ability/ChooseColorAi.java b/forge-ai/src/main/java/forge/ai/ability/ChooseColorAi.java index 2633899924b..e086a64803e 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChooseColorAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChooseColorAi.java @@ -8,10 +8,7 @@ import forge.ai.SpecialCardAi; import forge.ai.SpellAbilityAi; import forge.card.MagicColor; import forge.game.Game; -import forge.game.card.Card; -import forge.game.card.CardCollectionView; -import forge.game.card.CardLists; -import forge.game.card.CardPredicates; +import forge.game.card.*; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; import forge.game.player.Player; @@ -69,9 +66,7 @@ public class ChooseColorAi extends SpellAbilityAi { } } return false; - } - - if (logic.equals("MostProminentInComputerDeck")) { + } else if (logic.equals("MostProminentInComputerDeck")) { if ("Astral Cornucopia".equals(sourceName)) { // activate in Main 2 hoping that the extra mana surplus will make a difference // if there are some nonland permanents in hand @@ -80,6 +75,11 @@ public class ChooseColorAi extends SpellAbilityAi { return permanents.size() > 0 && ph.is(PhaseType.MAIN2, ai); } + } else if (logic.equals("HighestDevotionToColor")) { + // currently only works more or less reliably in Main2 to cast own spells + if (!ph.is(PhaseType.MAIN2, ai)) { + return false; + } } boolean chance = MyRandom.getRandom().nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn());