mirror of
https://github.com/correl/mage.git
synced 2024-12-26 11:09:27 +00:00
* Added some missing AI target logic.
This commit is contained in:
parent
6e4b4a7b69
commit
a4c2e51ab3
1 changed files with 48 additions and 0 deletions
|
@ -52,6 +52,7 @@ import mage.cards.repository.CardRepository;
|
||||||
import mage.choices.Choice;
|
import mage.choices.Choice;
|
||||||
import mage.choices.ChoiceColor;
|
import mage.choices.ChoiceColor;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
|
import mage.counters.CounterType;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.*;
|
import mage.filter.common.*;
|
||||||
|
@ -809,7 +810,54 @@ public class ComputerPlayer extends PlayerImpl implements Player {
|
||||||
target.addTarget(opponentId, target.getAmountRemaining(), source, game);
|
target.addTarget(opponentId, target.getAmountRemaining(), source, game);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
if (target.getOriginalTarget() instanceof TargetCreatureOrPlaneswalkerAmount) {
|
||||||
|
List<Permanent> targets;
|
||||||
|
if (outcome.isGood()) {
|
||||||
|
targets = threats(playerId, source.getSourceId(), StaticFilters.FILTER_PERMANENT_CREATURE, game, target.getTargets());
|
||||||
|
} else {
|
||||||
|
targets = threats(opponentId, source.getSourceId(), StaticFilters.FILTER_PERMANENT_CREATURE, game, target.getTargets());
|
||||||
|
}
|
||||||
|
for (Permanent permanent : targets) {
|
||||||
|
if (target.canTarget(getId(), permanent.getId(), source, game)) {
|
||||||
|
if (permanent.getToughness().getValue() <= target.getAmountRemaining()) {
|
||||||
|
target.addTarget(permanent.getId(), permanent.getToughness().getValue(), source, game);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (target.getFilter() instanceof FilterPermanent) {
|
||||||
|
targets = threats(null, source.getSourceId(), (FilterPermanent) target.getFilter(), game, target.getTargets());
|
||||||
|
Permanent possibleTarget = null;
|
||||||
|
for (Permanent permanent : targets) {
|
||||||
|
if (target.canTarget(getId(), permanent.getId(), source, game)) {
|
||||||
|
if (permanent.isCreature()) {
|
||||||
|
if (permanent.getToughness().getValue() <= target.getAmountRemaining()) {
|
||||||
|
target.addTarget(permanent.getId(), permanent.getToughness().getValue(), source, game);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
possibleTarget = permanent;
|
||||||
|
}
|
||||||
|
} else if (permanent.isPlaneswalker()) {
|
||||||
|
int loy = permanent.getCounters(game).getCount(CounterType.LOYALTY);
|
||||||
|
if (loy <= target.getAmountRemaining()) {
|
||||||
|
target.addTarget(permanent.getId(), loy, source, game);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
possibleTarget = permanent;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (possibleTarget != null) {
|
||||||
|
target.addTarget(possibleTarget.getId(), target.getAmountRemaining(), source, game);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
log.warn("No proper AI target handling: " + target.getClass().getName());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue