From d06b79e9b4586e10c44e955fe28e14077ac565d5 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Mon, 14 Jan 2019 15:38:27 +0400 Subject: [PATCH] Fixed infinite AI loop in TargetPermanent abilities (see #5023) --- .../src/main/java/mage/player/ai/ComputerPlayer.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java index 3625c367692..0d3cf9c08dd 100644 --- a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java @@ -500,6 +500,7 @@ public class ComputerPlayer extends PlayerImpl implements Player { } if (target.getOriginalTarget() instanceof TargetPermanent) { List targets; + TargetPermanent t = (TargetPermanent) target.getOriginalTarget(); boolean outcomeTargets = true; if (outcome.isGood()) { targets = threats(abilityControllerId, source == null ? null : source.getSourceId(), ((TargetPermanent) target).getFilter(), game, target.getTargets()); @@ -512,6 +513,9 @@ public class ComputerPlayer extends PlayerImpl implements Player { outcomeTargets = false; //targets = game.getBattlefield().getActivePermanents(((TargetPermanent)target).getFilter(), playerId, game); } + if (targets.isEmpty() && target.isRequired()) { + targets = game.getBattlefield().getActivePermanents(t.getFilter(), playerId, game); + } for (Permanent permanent : targets) { if (((TargetPermanent) target).canTarget(abilityControllerId, permanent.getId(), source, game)) { target.addTarget(permanent.getId(), source, game);