mirror of
https://github.com/magefree/mage.git
synced 2025-12-21 11:02:00 -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) {
|
if (target instanceof TargetControlledPermanent) {
|
||||||
List<Permanent> targets;
|
List<Permanent> targets;
|
||||||
targets = threats(playerId, ((TargetPermanent)target).getFilter(), game);
|
targets = threats(playerId, ((TargetControlledPermanent)target).getFilter(), game);
|
||||||
if (!outcome.isGood())
|
if (!outcome.isGood())
|
||||||
Collections.reverse(targets);
|
Collections.reverse(targets);
|
||||||
for (Permanent permanent: 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);
|
target.add(permanent.getId(), game);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -199,7 +199,7 @@ public class ComputerPlayer<T extends ComputerPlayer<T>> extends PlayerImpl<T> i
|
||||||
targets = threats(opponentId, ((TargetPermanent)target).getFilter(), game);
|
targets = threats(opponentId, ((TargetPermanent)target).getFilter(), game);
|
||||||
}
|
}
|
||||||
for (Permanent permanent: targets) {
|
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);
|
target.add(permanent.getId(), game);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -246,11 +246,11 @@ public class ComputerPlayer<T extends ComputerPlayer<T>> extends PlayerImpl<T> i
|
||||||
}
|
}
|
||||||
if (target instanceof TargetControlledPermanent) {
|
if (target instanceof TargetControlledPermanent) {
|
||||||
List<Permanent> targets;
|
List<Permanent> targets;
|
||||||
targets = threats(playerId, ((TargetPermanent)target).getFilter(), game);
|
targets = threats(playerId, ((TargetControlledPermanent)target).getFilter(), game);
|
||||||
if (!outcome.isGood())
|
if (!outcome.isGood())
|
||||||
Collections.reverse(targets);
|
Collections.reverse(targets);
|
||||||
for (Permanent permanent: 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);
|
target.addTarget(permanent.getId(), source, game);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -265,7 +265,7 @@ public class ComputerPlayer<T extends ComputerPlayer<T>> extends PlayerImpl<T> i
|
||||||
targets = threats(opponentId, ((TargetPermanent)target).getFilter(), game);
|
targets = threats(opponentId, ((TargetPermanent)target).getFilter(), game);
|
||||||
}
|
}
|
||||||
for (Permanent permanent: targets) {
|
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);
|
target.addTarget(permanent.getId(), source, game);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ public class GameStateEvaluator {
|
||||||
|
|
||||||
int handScore = 0;
|
int handScore = 0;
|
||||||
handScore = 7 - opponent.getHand().size();
|
handScore = 7 - opponent.getHand().size();
|
||||||
handScore = Math.min(7, player.getHand().size());
|
handScore += Math.min(7, player.getHand().size());
|
||||||
handScore *= HAND_FACTOR;
|
handScore *= HAND_FACTOR;
|
||||||
|
|
||||||
int score = lifeScore + permanentScore + handScore;
|
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());
|
game.fireSelectTargetEvent(playerId, target.getMessage(), target.possibleTargets(source==null?null:source.getId(), playerId, game), target.isRequired());
|
||||||
waitForResponse();
|
waitForResponse();
|
||||||
if (response.getUUID() != null) {
|
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);
|
target.addTarget(response.getUUID(), source, game);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -29,14 +29,12 @@
|
||||||
package mage.abilities.keyword;
|
package mage.abilities.keyword;
|
||||||
|
|
||||||
import mage.Constants.Outcome;
|
import mage.Constants.Outcome;
|
||||||
import mage.Constants.TargetController;
|
|
||||||
import mage.Constants.TimingRule;
|
import mage.Constants.TimingRule;
|
||||||
import mage.Constants.Zone;
|
import mage.Constants.Zone;
|
||||||
import mage.abilities.ActivatedAbilityImpl;
|
import mage.abilities.ActivatedAbilityImpl;
|
||||||
import mage.abilities.costs.Cost;
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.effects.common.AttachEffect;
|
import mage.abilities.effects.common.AttachEffect;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.target.common.TargetControlledCreaturePermanent;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -44,15 +42,9 @@ import mage.target.common.TargetCreaturePermanent;
|
||||||
*/
|
*/
|
||||||
public class EquipAbility extends ActivatedAbilityImpl<EquipAbility> {
|
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) {
|
public EquipAbility(Outcome outcome, Cost cost) {
|
||||||
super(Zone.BATTLEFIELD, new AttachEffect(outcome), cost);
|
super(Zone.BATTLEFIELD, new AttachEffect(outcome), cost);
|
||||||
this.addTarget(new TargetCreaturePermanent(filter));
|
this.addTarget(new TargetControlledCreaturePermanent());
|
||||||
this.timing = TimingRule.SORCERY;
|
this.timing = TimingRule.SORCERY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,6 @@
|
||||||
package mage.filter.common;
|
package mage.filter.common;
|
||||||
|
|
||||||
import mage.Constants.CardType;
|
import mage.Constants.CardType;
|
||||||
import mage.Constants.TargetController;
|
|
||||||
import mage.filter.FilterPermanent;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -250,18 +250,21 @@ public class Battlefield implements Serializable {
|
||||||
* @see Permanent
|
* @see Permanent
|
||||||
*/
|
*/
|
||||||
public List<Permanent> getActivePermanents(FilterPermanent filter, UUID sourcePlayerId, Game game) {
|
public List<Permanent> getActivePermanents(FilterPermanent filter, UUID sourcePlayerId, Game game) {
|
||||||
|
List<Permanent> active = new ArrayList<Permanent>();
|
||||||
if (game.getRangeOfInfluence() == RangeOfInfluence.ALL) {
|
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 {
|
else {
|
||||||
List<Permanent> active = new ArrayList<Permanent>();
|
|
||||||
Set<UUID> range = game.getPlayer(sourcePlayerId).getInRange();
|
Set<UUID> range = game.getPlayer(sourcePlayerId).getInRange();
|
||||||
for (Permanent perm: field.values()) {
|
for (Permanent perm: field.values()) {
|
||||||
if (perm.isPhasedIn() && range.contains(perm.getControllerId()) && filter.match(perm, sourcePlayerId, game))
|
if (perm.isPhasedIn() && range.contains(perm.getControllerId()) && filter.match(perm, sourcePlayerId, game))
|
||||||
active.add(perm);
|
active.add(perm);
|
||||||
}
|
}
|
||||||
return active;
|
|
||||||
}
|
}
|
||||||
|
return active;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue