From 2fce670024b8f8b1b6600b1e693f35a4d82a1634 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Wed, 24 Apr 2013 00:29:37 +0200 Subject: [PATCH] Fixed a bug that AI did not choose a creature card in her graveyard if opponent casts Exhume. --- .../src/main/java/mage/player/ai/ComputerPlayer.java | 2 +- Mage/src/mage/target/Target.java | 1 + Mage/src/mage/target/TargetObject.java | 5 +++++ .../mage/target/common/TargetCardInYourGraveyard.java | 10 ++++++++++ .../target/common/TargetCreatureOrPlayerAmount.java | 5 +++++ .../target/common/TargetCreaturePermanentAmount.java | 5 +++++ Mage/src/mage/target/common/TargetDefender.java | 5 +++++ .../mage/target/common/TargetPermanentOrPlayer.java | 5 +++++ .../src/mage/target/common/TargetSpellOrPermanent.java | 5 +++++ 9 files changed, 42 insertions(+), 1 deletion(-) 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 dc1451a8e21..ff9564aaedd 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 @@ -591,7 +591,7 @@ public class ComputerPlayer> extends PlayerImpl i card = pickWorstCard(cards, null, target, source, game); } if (source != null) { - if (target.canTarget(card.getId(), source, game)) { + if (target.canTarget(card.getId(), this.getId(), source, game)) { return card; } } diff --git a/Mage/src/mage/target/Target.java b/Mage/src/mage/target/Target.java index a5a3740f921..27c7d8ff41f 100644 --- a/Mage/src/mage/target/Target.java +++ b/Mage/src/mage/target/Target.java @@ -61,6 +61,7 @@ public interface Target extends Serializable { void addTarget(UUID id, int amount, Ability source, Game game, boolean skipEvent); boolean canTarget(UUID id, Game game); boolean canTarget(UUID id, Ability source, Game game); + boolean canTarget(UUID id, UUID playerId, Ability source, Game game); boolean isLegal(Ability source, Game game); List getTargetOptions(Ability source, Game game); diff --git a/Mage/src/mage/target/TargetObject.java b/Mage/src/mage/target/TargetObject.java index 30c947abe32..0879c7c1b5c 100644 --- a/Mage/src/mage/target/TargetObject.java +++ b/Mage/src/mage/target/TargetObject.java @@ -87,4 +87,9 @@ public abstract class TargetObject> extends TargetImpl return canTarget(id, game); } + @Override + public boolean canTarget(UUID id, UUID playerId, Ability source, Game game) { + return canTarget(id, source, game); + } + } diff --git a/Mage/src/mage/target/common/TargetCardInYourGraveyard.java b/Mage/src/mage/target/common/TargetCardInYourGraveyard.java index 1c235241c1f..c043009a48a 100644 --- a/Mage/src/mage/target/common/TargetCardInYourGraveyard.java +++ b/Mage/src/mage/target/common/TargetCardInYourGraveyard.java @@ -72,6 +72,16 @@ public class TargetCardInYourGraveyard extends TargetCard { return false; } + @Override + public boolean canTarget(UUID id, UUID playerId, Ability source, Game game) { + return canTarget(id, source, game); + } + @Override public TargetDefender copy() { return new TargetDefender(this); diff --git a/Mage/src/mage/target/common/TargetPermanentOrPlayer.java b/Mage/src/mage/target/common/TargetPermanentOrPlayer.java index 2ac383358ab..a68305ff933 100644 --- a/Mage/src/mage/target/common/TargetPermanentOrPlayer.java +++ b/Mage/src/mage/target/common/TargetPermanentOrPlayer.java @@ -103,6 +103,11 @@ public class TargetPermanentOrPlayer extends TargetImpl return false; } + @Override + public boolean canTarget(UUID id, UUID playerId, Ability source, Game game) { + return canTarget(id, source, game); + } + @Override public boolean canTarget(UUID id, Ability source, Game game) { Permanent permanent = game.getPermanent(id); diff --git a/Mage/src/mage/target/common/TargetSpellOrPermanent.java b/Mage/src/mage/target/common/TargetSpellOrPermanent.java index 9eca3270f78..3c44baede22 100644 --- a/Mage/src/mage/target/common/TargetSpellOrPermanent.java +++ b/Mage/src/mage/target/common/TargetSpellOrPermanent.java @@ -128,6 +128,11 @@ public class TargetSpellOrPermanent extends TargetImpl { return false; } + @Override + public boolean canTarget(UUID id, UUID playerId, Ability source, Game game) { + return canTarget(id, source, game); + } + /** * Checks if there are enough {@link mage.game.permanent.Permanent} or {@link mage.game.stack.Spell} that can be chosen. Should only be used * for Ability targets since this checks for protection, shroud etc.