mirror of
https://github.com/magefree/mage.git
synced 2025-12-25 21:12:04 -08:00
Fixed #8286.
This commit is contained in:
parent
b756fd0e72
commit
77845bd1df
3 changed files with 74 additions and 10 deletions
|
|
@ -113,7 +113,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
|
|||
if (hand.size() < 6
|
||||
|| isTestsMode() // ignore mulligan in tests
|
||||
|| game.getClass().getName().contains("Momir") // ignore mulligan in Momir games
|
||||
) {
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
Set<Card> lands = hand.getCards(new FilterLandCard(), game);
|
||||
|
|
@ -540,6 +540,58 @@ public class ComputerPlayer extends PlayerImpl implements Player {
|
|||
return setTargetPlayer(outcome, target, source, sourceId, abilityControllerId, randomOpponentId, game, required);
|
||||
}
|
||||
|
||||
// Angel of Serenity trigger
|
||||
if (target.getOriginalTarget() instanceof TargetCardInGraveyardOrBattlefield) {
|
||||
Cards cards = new CardsImpl(possibleTargets);
|
||||
List<Card> possibleCards = new ArrayList<>(cards.getCards(game));
|
||||
for (Card card : possibleCards) {
|
||||
// check permanents first; they have more intrinsic worth
|
||||
if (card instanceof Permanent) {
|
||||
Permanent p = ((Permanent) card);
|
||||
if (outcome.isGood()
|
||||
&& p.isControlledBy(abilityControllerId)) {
|
||||
if (target.canTarget(abilityControllerId, p.getId(), source, game)) {
|
||||
if (target.getTargets().size() >= target.getMaxNumberOfTargets()) {
|
||||
break;
|
||||
}
|
||||
target.addTarget(p.getId(), source, game);
|
||||
}
|
||||
}
|
||||
if (!outcome.isGood()
|
||||
&& !p.isControlledBy(abilityControllerId)) {
|
||||
if (target.canTarget(abilityControllerId, p.getId(), source, game)) {
|
||||
if (target.getTargets().size() >= target.getMaxNumberOfTargets()) {
|
||||
break;
|
||||
}
|
||||
target.addTarget(p.getId(), source, game);
|
||||
}
|
||||
}
|
||||
}
|
||||
// check the graveyards last
|
||||
if (game.getState().getZone(card.getId()) == Zone.GRAVEYARD) {
|
||||
if (outcome.isGood()
|
||||
&& card.isOwnedBy(abilityControllerId)) {
|
||||
if (target.canTarget(abilityControllerId, card.getId(), source, game)) {
|
||||
if (target.getTargets().size() >= target.getMaxNumberOfTargets()) {
|
||||
break;
|
||||
}
|
||||
target.addTarget(card.getId(), source, game);
|
||||
}
|
||||
}
|
||||
if (!outcome.isGood()
|
||||
&& !card.isOwnedBy(abilityControllerId)) {
|
||||
if (target.canTarget(abilityControllerId, card.getId(), source, game)) {
|
||||
if (target.getTargets().size() >= target.getMaxNumberOfTargets()) {
|
||||
break;
|
||||
}
|
||||
target.addTarget(card.getId(), source, game);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return target.isChosen();
|
||||
}
|
||||
|
||||
if (target.getOriginalTarget() instanceof TargetDiscard
|
||||
|| target.getOriginalTarget() instanceof TargetCardInHand) {
|
||||
if (outcome.isGood()) {
|
||||
|
|
@ -2659,7 +2711,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
|
|||
}
|
||||
|
||||
protected void findBestPermanentTargets(Outcome outcome, UUID abilityControllerId, UUID sourceId, FilterPermanent filter, Game game, Target target,
|
||||
List<Permanent> goodList, List<Permanent> badList, List<Permanent> allList) {
|
||||
List<Permanent> goodList, List<Permanent> badList, List<Permanent> allList) {
|
||||
// searching for most valuable/powerfull permanents
|
||||
goodList.clear();
|
||||
badList.clear();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue