* Release 1.4.0v1

This commit is contained in:
LevelX2 2015-05-24 14:50:24 +02:00
parent e8b2e01cd4
commit 76aa9c128d
5 changed files with 25 additions and 6 deletions

View file

@ -341,10 +341,12 @@ public class ComputerPlayer extends PlayerImpl implements Player {
if (target instanceof TargetPermanentOrPlayer) {
List<Permanent> targets;
TargetPermanentOrPlayer t = ((TargetPermanentOrPlayer) target);
List<Permanent> ownedTargets = threats(playerId, sourceId, ((FilterPermanentOrPlayer) t.getFilter()).getPermanentFilter(), game, target.getTargets());;
List<Permanent> opponentTargets = threats(opponentId, sourceId, ((FilterPermanentOrPlayer) t.getFilter()).getPermanentFilter(), game, target.getTargets());
if (outcome.isGood()) {
targets = threats(playerId, sourceId, ((FilterPermanentOrPlayer) t.getFilter()).getPermanentFilter(), game, target.getTargets());
targets = ownedTargets;
} else {
targets = threats(opponentId, sourceId, ((FilterPermanentOrPlayer) t.getFilter()).getPermanentFilter(), game, target.getTargets());
targets = opponentTargets;
}
for (Permanent permanent : targets) {
List<UUID> alreadyTargetted = target.getTargets();
@ -377,7 +379,21 @@ public class ComputerPlayer extends PlayerImpl implements Player {
target.add(playerId, game);
return true;
}
throw new IllegalStateException("TargetPermanentOrPlayer wasn't handled. class:" + target.getClass().toString());
if (outcome.isGood()) { // no other valid targets so use a permanent
targets = opponentTargets;
} else {
targets = ownedTargets;
}
for (Permanent permanent : targets) {
List<UUID> alreadyTargetted = target.getTargets();
if (t.canTarget(permanent.getId(), game)) {
if (alreadyTargetted != null && !alreadyTargetted.contains(permanent.getId())) {
target.add(permanent.getId(), game);
return true;
}
}
}
return false;
}
if (target instanceof TargetCardInGraveyard) {
List<Card> cards = new ArrayList<>();