diff --git a/forge-ai/src/main/java/forge/ai/AiCardMemory.java b/forge-ai/src/main/java/forge/ai/AiCardMemory.java index 43b51d6a02a..a5e54674979 100644 --- a/forge-ai/src/main/java/forge/ai/AiCardMemory.java +++ b/forge-ai/src/main/java/forge/ai/AiCardMemory.java @@ -223,40 +223,18 @@ public class AiCardMemory { } /** - * Clears the "remembered attackers" memory set stored in this card memory for the given player. + * Clears the given memory set. */ - public void clearRememberedAttackers() { - getMemorySet(MemorySet.MANDATORY_ATTACKERS).clear(); + public void clearMemorySet(MemorySet set) { + getMemorySet(set).clear(); } - /** - * Clears the "remembered mana sources" memory set stored in this card memory for the given player. - */ - public void clearRememberedManaSources() { - getMemorySet(MemorySet.HELD_MANA_SOURCES).clear(); - } - - /** - * Clears the "remembered moved equipment" memory set stored in this card memory for the given player. - */ - public void clearRememberedMovedEquipment() { - getMemorySet(MemorySet.MOVED_EQUIPMENT).clear(); - } - - /** - * Clears the "remembered revealed cards" memory set stored in this card memory for the given player. - */ - //public void clearRememberedRevealedCards() { - // getMemorySet(MemorySet.REVEALED_CARDS).clear(); - //} - /** * Clears all memory sets stored in this card memory for the given player. */ public void clearAllRemembered() { - clearRememberedAttackers(); - clearRememberedManaSources(); - clearRememberedMovedEquipment(); - //clearRememberedRevealedCards(); + clearMemorySet(MemorySet.MANDATORY_ATTACKERS); + clearMemorySet(MemorySet.HELD_MANA_SOURCES); + clearMemorySet(MemorySet.MOVED_EQUIPMENT); } } \ No newline at end of file diff --git a/forge-ai/src/main/java/forge/ai/AiController.java b/forge-ai/src/main/java/forge/ai/AiController.java index 0ae5f1608f0..d4a9ceaaf50 100644 --- a/forge-ai/src/main/java/forge/ai/AiController.java +++ b/forge-ai/src/main/java/forge/ai/AiController.java @@ -637,7 +637,11 @@ public class AiController { } // playCounterSpell() public SpellAbility predictSpellToCastInMain2(ApiType exceptSA) { - final List cards = getAvailableCards(); + return predictSpellToCastInMain2(exceptSA, true); + } + + public SpellAbility predictSpellToCastInMain2(ApiType exceptSA, boolean handOnly) { + final List cards = handOnly ? player.getCardsIn(ZoneType.Hand) : getAvailableCards(); ArrayList all = getSpellAbilities(cards); Collections.sort(all, saComparator); // put best spells first @@ -647,7 +651,7 @@ public class AiController { continue; } sa.setActivatingPlayer(player); - if (sa.canPlay() && !ComputerUtil.castPermanentInMain1(player, sa) && sa.getHostCard() != null && !sa.getHostCard().getType().contains("Land") && ComputerUtilCost.canPayCost(sa, player)) { + if (!ComputerUtil.castPermanentInMain1(player, sa) && sa.getHostCard() != null && !sa.getHostCard().getType().contains("Land") && ComputerUtilCost.canPayCost(sa, player)) { return sa; } } diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java b/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java index 0e9b4911205..33202f960e9 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java @@ -663,7 +663,7 @@ public class ComputerUtilMana { PhaseType curPhase = ai.getGame().getPhaseHandler().getPhase(); if (curPhase == PhaseType.MAIN2 || curPhase == PhaseType.CLEANUP) { - ((PlayerControllerAi)ai.getController()).getAi().getCardMemory().clearRememberedManaSources(); + ((PlayerControllerAi)ai.getController()).getAi().getCardMemory().clearMemorySet(AiCardMemory.MemorySet.HELD_MANA_SOURCES); } else { if (((PlayerControllerAi)ai.getController()).getAi().getCardMemory().isRememberedCard(sourceCard, AiCardMemory.MemorySet.HELD_MANA_SOURCES)) {