From 09e0967c378c18c77b2493de86efadc88de6de29 Mon Sep 17 00:00:00 2001 From: Agetian Date: Wed, 12 Jun 2019 13:32:19 +0300 Subject: [PATCH] - Fix London Mulligan AI --- forge-ai/src/main/java/forge/ai/PlayerControllerAi.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java index 39af757837f..2365e971abc 100644 --- a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java +++ b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java @@ -555,12 +555,15 @@ public class PlayerControllerAi extends PlayerController { // TODO This is better than it was before, but still suboptimal (but fast). // Maybe score a bunch of hands based on projected hand size and return the "duds" CardCollection hand = new CardCollection(player.getCardsIn(ZoneType.Hand)); - CardCollection landsInHand = CardLists.filter(hand, Presets.LANDS); - int numLandsInHand = landsInHand.size(); int numLandsDesired = (mulliganingPlayer.getStartingHandSize() - cardsToReturn) / 2; CardCollection toReturn = new CardCollection(); for (int i = 0; i < cardsToReturn; i++) { + hand.removeAll(toReturn); + + CardCollection landsInHand = CardLists.filter(hand, Presets.LANDS); + int numLandsInHand = landsInHand.size() - CardLists.filter(toReturn, Presets.LANDS).size(); + // If we're flooding with lands, get rid of the worst land we have if (numLandsInHand > 0 && numLandsInHand > numLandsDesired) { CardCollection producingLands = CardLists.filter(landsInHand, Presets.LANDS_PRODUCING_MANA);