From 19d71aaf848ee2869783ae4f908568a379b02445 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 31 Jan 2015 10:00:16 +0100 Subject: [PATCH] * AI PLayer - Fixed a problem with targets of Venser, Shaper Savant. --- .../main/java/mage/player/ai/ComputerPlayer.java | 16 +++++++++------- .../target/common/TargetSpellOrPermanent.java | 8 ++++++-- 2 files changed, 15 insertions(+), 9 deletions(-) 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 6b48a4057a7..11d8d71fae1 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 @@ -584,13 +584,13 @@ public class ComputerPlayer extends PlayerImpl implements Player { List targets; boolean outcomeTargets = true; if (outcome.isGood()) { - targets = threats(playerId, source == null?null:source.getSourceId(), ((TargetPermanent)target).getFilter(), game, target.getTargets()); + targets = threats(playerId, source == null?null:source.getSourceId(), ((TargetSpellOrPermanent)target).getPermanentFilter(), game, target.getTargets()); } else { - targets = threats(opponentId, source == null?null:source.getSourceId(), ((TargetPermanent)target).getFilter(), game, target.getTargets()); + targets = threats(opponentId, source == null?null:source.getSourceId(), ((TargetSpellOrPermanent)target).getPermanentFilter(), game, target.getTargets()); } if (targets.isEmpty() && target.isRequired(source)) { - targets = threats(null, source == null?null:source.getSourceId(), ((TargetPermanent)target).getFilter(), game, target.getTargets()); + targets = threats(null, source == null?null:source.getSourceId(), ((TargetSpellOrPermanent)target).getPermanentFilter(), game, target.getTargets()); Collections.reverse(targets); outcomeTargets = false; //targets = game.getBattlefield().getActivePermanents(((TargetPermanent)target).getFilter(), playerId, game); @@ -606,10 +606,12 @@ public class ComputerPlayer extends PlayerImpl implements Player { if (game.getStack().size() > 0) { Iterator it = game.getStack().iterator(); while (it.hasNext()) { - StackObject o = it.next(); - if (o instanceof Spell && !source.getId().equals(o.getStackAbility().getId())) { - target.addTarget(o.getId(), source, game); - return true; + StackObject stackObject = it.next(); + if (stackObject instanceof Spell && source != null && !source.getId().equals(stackObject.getStackAbility().getId())) { + if (((TargetSpellOrPermanent)target).getFilter().match(stackObject, game)) { + target.addTarget(stackObject.getId(), source, game); + return true; + } } } } diff --git a/Mage/src/mage/target/common/TargetSpellOrPermanent.java b/Mage/src/mage/target/common/TargetSpellOrPermanent.java index 1ee12156213..0e338680926 100644 --- a/Mage/src/mage/target/common/TargetSpellOrPermanent.java +++ b/Mage/src/mage/target/common/TargetSpellOrPermanent.java @@ -91,6 +91,10 @@ public class TargetSpellOrPermanent extends TargetImpl { return this.filter; } + public FilterPermanent getPermanentFilter() { + return this.filterPermanent; + } + public void setFilter(FilterSpellOrPermanent filter) { this.filter = filter; } @@ -197,7 +201,7 @@ public class TargetSpellOrPermanent extends TargetImpl { @Override public Set possibleTargets(UUID sourceId, UUID sourceControllerId, Game game) { - Set possibleTargets = new HashSet(); + Set possibleTargets = new HashSet<>(); MageObject targetSource = game.getObject(sourceId); for (StackObject stackObject: game.getStack()) { Spell spell = game.getStack().getSpell(stackObject.getId()); @@ -215,7 +219,7 @@ public class TargetSpellOrPermanent extends TargetImpl { @Override public Set possibleTargets(UUID sourceControllerId, Game game) { - Set possibleTargets = new HashSet(); + Set possibleTargets = new HashSet<>(); for (StackObject stackObject: game.getStack()) { Spell spell = game.getStack().getSpell(stackObject.getId()); if (spell != null && filter.match(spell, null, sourceControllerId, game) && filter.match(spell, game)) {