fixed issue 46

This commit is contained in:
BetaSteward 2010-12-05 23:55:54 +00:00
parent 24d14e8759
commit 2044b00a99
8 changed files with 22 additions and 23 deletions

View file

@ -180,11 +180,11 @@ public class ComputerPlayer<T extends ComputerPlayer<T>> extends PlayerImpl<T> i
}
if (target instanceof TargetControlledPermanent) {
List<Permanent> targets;
targets = threats(playerId, ((TargetPermanent)target).getFilter(), game);
targets = threats(playerId, ((TargetControlledPermanent)target).getFilter(), game);
if (!outcome.isGood())
Collections.reverse(targets);
for (Permanent permanent: targets) {
if (target.canTarget(permanent.getId(), game) && !target.getTargets().contains(permanent.getId())) {
if (((TargetControlledPermanent)target).canTarget(playerId, permanent.getId(), null, game) && !target.getTargets().contains(permanent.getId())) {
target.add(permanent.getId(), game);
return true;
}
@ -199,7 +199,7 @@ public class ComputerPlayer<T extends ComputerPlayer<T>> extends PlayerImpl<T> i
targets = threats(opponentId, ((TargetPermanent)target).getFilter(), game);
}
for (Permanent permanent: targets) {
if (target.canTarget(permanent.getId(), game) && !target.getTargets().contains(permanent.getId())) {
if (((TargetPermanent)target).canTarget(playerId, permanent.getId(), null, game) && !target.getTargets().contains(permanent.getId())) {
target.add(permanent.getId(), game);
return true;
}
@ -246,11 +246,11 @@ public class ComputerPlayer<T extends ComputerPlayer<T>> extends PlayerImpl<T> i
}
if (target instanceof TargetControlledPermanent) {
List<Permanent> targets;
targets = threats(playerId, ((TargetPermanent)target).getFilter(), game);
targets = threats(playerId, ((TargetControlledPermanent)target).getFilter(), game);
if (!outcome.isGood())
Collections.reverse(targets);
for (Permanent permanent: targets) {
if (target.canTarget(permanent.getId(), source, game)) {
if (((TargetControlledPermanent)target).canTarget(playerId, permanent.getId(), source, game)) {
target.addTarget(permanent.getId(), source, game);
return true;
}
@ -265,7 +265,7 @@ public class ComputerPlayer<T extends ComputerPlayer<T>> extends PlayerImpl<T> i
targets = threats(opponentId, ((TargetPermanent)target).getFilter(), game);
}
for (Permanent permanent: targets) {
if (target.canTarget(permanent.getId(), source, game)) {
if (((TargetPermanent)target).canTarget(playerId, permanent.getId(), source, game)) {
target.addTarget(permanent.getId(), source, game);
return true;
}

View file

@ -57,7 +57,7 @@ public class GameStateEvaluator {
int handScore = 0;
handScore = 7 - opponent.getHand().size();
handScore = Math.min(7, player.getHand().size());
handScore += Math.min(7, player.getHand().size());
handScore *= HAND_FACTOR;
int score = lifeScore + permanentScore + handScore;

View file

@ -209,7 +209,13 @@ public class HumanPlayer extends PlayerImpl<HumanPlayer> {
game.fireSelectTargetEvent(playerId, target.getMessage(), target.possibleTargets(source==null?null:source.getId(), playerId, game), target.isRequired());
waitForResponse();
if (response.getUUID() != null) {
if (target.canTarget(response.getUUID(), source, game)) {
if (target instanceof TargetPermanent) {
if (((TargetPermanent)target).canTarget(playerId, response.getUUID(), null, game)) {
target.add(response.getUUID(), game);
return true;
}
}
else if (target.canTarget(response.getUUID(), source, game)) {
target.addTarget(response.getUUID(), source, game);
return true;
}

View file

@ -29,14 +29,12 @@
package mage.abilities.keyword;
import mage.Constants.Outcome;
import mage.Constants.TargetController;
import mage.Constants.TimingRule;
import mage.Constants.Zone;
import mage.abilities.ActivatedAbilityImpl;
import mage.abilities.costs.Cost;
import mage.abilities.effects.common.AttachEffect;
import mage.filter.common.FilterCreaturePermanent;
import mage.target.common.TargetCreaturePermanent;
import mage.target.common.TargetControlledCreaturePermanent;
/**
*
@ -44,15 +42,9 @@ import mage.target.common.TargetCreaturePermanent;
*/
public class EquipAbility extends ActivatedAbilityImpl<EquipAbility> {
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you control");
static {
filter.setTargetController(TargetController.YOU);
}
public EquipAbility(Outcome outcome, Cost cost) {
super(Zone.BATTLEFIELD, new AttachEffect(outcome), cost);
this.addTarget(new TargetCreaturePermanent(filter));
this.addTarget(new TargetControlledCreaturePermanent());
this.timing = TimingRule.SORCERY;
}

View file

@ -29,8 +29,6 @@
package mage.filter.common;
import mage.Constants.CardType;
import mage.Constants.TargetController;
import mage.filter.FilterPermanent;
/**
*

View file

@ -250,18 +250,21 @@ public class Battlefield implements Serializable {
* @see Permanent
*/
public List<Permanent> getActivePermanents(FilterPermanent filter, UUID sourcePlayerId, Game game) {
List<Permanent> active = new ArrayList<Permanent>();
if (game.getRangeOfInfluence() == RangeOfInfluence.ALL) {
return getAllActivePermanents(filter);
for (Permanent perm: field.values()) {
if (perm.isPhasedIn() && filter.match(perm, sourcePlayerId, game))
active.add(perm);
}
}
else {
List<Permanent> active = new ArrayList<Permanent>();
Set<UUID> range = game.getPlayer(sourcePlayerId).getInRange();
for (Permanent perm: field.values()) {
if (perm.isPhasedIn() && range.contains(perm.getControllerId()) && filter.match(perm, sourcePlayerId, game))
active.add(perm);
}
return active;
}
return active;
}
/**