diff --git a/Mage.Server.Plugins/Mage.Player.AI/mage-player-ai.iml b/Mage.Server.Plugins/Mage.Player.AI/mage-player-ai.iml
new file mode 100644
index 00000000000..6090a3a9e33
--- /dev/null
+++ b/Mage.Server.Plugins/Mage.Player.AI/mage-player-ai.iml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 e436b2be1d6..be03f87bb28 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
@@ -395,6 +395,20 @@ public class ComputerPlayer> extends PlayerImpl i
else {
targets = threats(opponentId, source.getSourceId(), ((FilterCreatureOrPlayer)t.getFilter()).getCreatureFilter(), game, target.getTargets());
}
+
+ if (outcome.isGood()) {
+ if (target.canTarget(playerId, source, game)) {
+ target.addTarget(playerId, source, game);
+ return true;
+ }
+ }
+ else {
+ if (target.canTarget(opponentId, source, game)) {
+ target.addTarget(opponentId, source, game);
+ return true;
+ }
+ }
+
if (targets.isEmpty() && target.isRequired()) {
targets = game.getBattlefield().getActivePermanents(((FilterCreatureOrPlayer)t.getFilter()).getCreatureFilter(), playerId, game);
}
@@ -407,18 +421,7 @@ public class ComputerPlayer> extends PlayerImpl i
}
}
}
- if (outcome.isGood()) {
- if (target.canTarget(playerId, source, game)) {
- target.addTarget(playerId, source, game);
- return true;
- }
- }
- else {
- if (target.canTarget(opponentId, source, game)) {
- target.addTarget(opponentId, source, game);
- return true;
- }
- }
+
if (!target.isRequired())
return false;
}
@@ -1498,7 +1501,7 @@ public class ComputerPlayer> extends PlayerImpl i
protected List threats(UUID playerId, UUID sourceId, FilterPermanent filter, Game game, List targets) {
List threats = playerId == null ?
game.getBattlefield().getAllActivePermanents(filter) :
- game.getBattlefield().getActivePermanents(filter, playerId, sourceId, game);
+ game.getBattlefield().getAllActivePermanents(filter, playerId);
Iterator it = threats.iterator();
while (it.hasNext()) { // remove permanents already targeted
diff --git a/Mage.Sets/src/mage/sets/darkascension/FlayerOfTheHatebound.java b/Mage.Sets/src/mage/sets/darkascension/FlayerOfTheHatebound.java
index 63d5b4777ce..e8b9a5e8a4b 100644
--- a/Mage.Sets/src/mage/sets/darkascension/FlayerOfTheHatebound.java
+++ b/Mage.Sets/src/mage/sets/darkascension/FlayerOfTheHatebound.java
@@ -27,7 +27,6 @@
*/
package mage.sets.darkascension;
-import java.util.UUID;
import mage.Constants;
import mage.Constants.CardType;
import mage.Constants.Rarity;
@@ -45,6 +44,8 @@ import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetCreatureOrPlayer;
+import java.util.UUID;
+
/**
*
* @author BetaSteward
@@ -64,7 +65,7 @@ public class FlayerOfTheHatebound extends CardImpl {
// Whenever Flayer of the Hatebound or another creature enters the battlefield from your graveyard, that creature deals damage equal to its power to target creature or player.
Ability ability = new FlayerTriggeredAbility();
- ability.addTarget(new TargetCreatureOrPlayer());
+ ability.addTarget(new TargetCreatureOrPlayer(true));
this.addAbility(ability);
}
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/FlayerOfTheHateboundTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/FlayerOfTheHateboundTest.java
index c1c977aec11..dec58d5db7b 100644
--- a/Mage.Tests/src/test/java/org/mage/test/cards/single/FlayerOfTheHateboundTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/FlayerOfTheHateboundTest.java
@@ -20,6 +20,7 @@ public class FlayerOfTheHateboundTest extends CardTestPlayerBase {
addCard(Constants.Zone.HAND, playerA, "Lightning Bolt", 1);
castSpell(1, Constants.PhaseStep.PRECOMBAT_MAIN, playerA, "Lightning Bolt", "Flayer of the Hatebound");
+
setStopAt(2, Constants.PhaseStep.DRAW);
execute();
diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBase.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBase.java
index 01c7b9d356e..26defd3c9b5 100644
--- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBase.java
+++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBase.java
@@ -53,7 +53,7 @@ public abstract class CardTestPlayerBase extends CardTestPlayerAPIImpl {
System.gc();
}
- Game game = new TwoPlayerDuel(Constants.MultiplayerAttackOption.LEFT, Constants.RangeOfInfluence.ALL);
+ Game game = new TwoPlayerDuel(Constants.MultiplayerAttackOption.LEFT, Constants.RangeOfInfluence.ONE);
playerA = createNewPlayer("PlayerA");
playerA.setTestMode(true);
diff --git a/Mage/src/mage/target/common/TargetCreatureOrPlayer.java b/Mage/src/mage/target/common/TargetCreatureOrPlayer.java
index e9bb85540eb..5ab3ac1d0dc 100644
--- a/Mage/src/mage/target/common/TargetCreatureOrPlayer.java
+++ b/Mage/src/mage/target/common/TargetCreatureOrPlayer.java
@@ -28,9 +28,6 @@
package mage.target.common;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.UUID;
import mage.Constants.Zone;
import mage.MageObject;
import mage.abilities.Ability;
@@ -42,6 +39,10 @@ import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.TargetImpl;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.UUID;
+
/**
*
* @author BetaSteward_at_googlemail.com
@@ -50,6 +51,11 @@ public class TargetCreatureOrPlayer extends TargetImpl {
protected FilterCreatureOrPlayer filter;
+ public TargetCreatureOrPlayer(boolean required) {
+ this();
+ setRequired(required);
+ }
+
public TargetCreatureOrPlayer() {
this(1, 1);
}