mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 02:30:08 -08:00
fixed issue 46
This commit is contained in:
parent
24d14e8759
commit
2044b00a99
8 changed files with 22 additions and 23 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -29,8 +29,6 @@
|
|||
package mage.filter.common;
|
||||
|
||||
import mage.Constants.CardType;
|
||||
import mage.Constants.TargetController;
|
||||
import mage.filter.FilterPermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue