diff --git a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java index 7bddd946..445a4ee5 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java @@ -1010,18 +1010,21 @@ public class ChangeZoneAi extends SpellAbilityAi { return false; } - list = CardLists.filterControlledBy(list, ai.getOpponents()); - list = CardLists.filter(list, new Predicate() { - @Override - public boolean apply(final Card c) { - for (Card aura : c.getEnchantedBy(false)) { - if (c.getOwner().isOpponentOf(ai) && aura.getController().equals(ai)) { - return false; + + if (!sa.hasParam("AITgts") || sa.getParam("AITgts").contains("OppCtrl")) { + list = CardLists.filterControlledBy(list, ai.getOpponents()); + list = CardLists.filter(list, new Predicate() { + @Override + public boolean apply(final Card c) { + for (Card aura : c.getEnchantedBy(false)) { + if (c.getOwner().isOpponentOf(ai) && aura.getController().equals(ai)) { + return false; + } } + return true; } - return true; - } - }); + }); + } } // Only care about combatants during combat @@ -1117,7 +1120,16 @@ public class ChangeZoneAi extends SpellAbilityAi { return false; } else { if (!sa.isTrigger() && !ComputerUtil.shouldCastLessThanMax(ai, source)) { - return false; + boolean aiTgtsOK = false; + if (sa.hasParam("AIMinTgts")) { + int minTgts = Integer.parseInt(sa.getParam("AIMinTgts")); + if (sa.getTargets().getNumTargeted() >= minTgts) { + aiTgtsOK = true; + } + } + if (!aiTgtsOK) { + return false; + } } break; } diff --git a/forge-gui/res/cardsfolder/b/boneyard_parley.txt b/forge-gui/res/cardsfolder/b/boneyard_parley.txt index 5c018238..46a8c8f8 100644 --- a/forge-gui/res/cardsfolder/b/boneyard_parley.txt +++ b/forge-gui/res/cardsfolder/b/boneyard_parley.txt @@ -1,11 +1,10 @@ Name:Boneyard Parley ManaCost:5 B B Types:Sorcery -A:SP$ ChangeZone | Cost$ 5 B B | Origin$ Graveyard | Destination$ Exile | TargetMin$ 0 | TargetMax$ 5 | TgtPrompt$ Select up to five target cards in graveyards | ValidTgts$ Card.Creature | RememberTargets$ True | SubAbility$ DBTwoPiles | SpellDescription$ Exile up to five target creature cards from graveyards. An opponent separates those cards into two piles. Put all cards from the pile of your choice onto the battlefield under your control and the rest into their owners' graveyards. +A:SP$ ChangeZone | Cost$ 5 B B | Origin$ Graveyard | Destination$ Exile | TargetMin$ 0 | TargetMax$ 5 | TgtPrompt$ Select up to five target cards in graveyards | ValidTgts$ Card.Creature | RememberTargets$ True | SubAbility$ DBTwoPiles | AITgts$ Card.Creature | AIMinTgts$ 3 | SpellDescription$ Exile up to five target creature cards from graveyards. An opponent separates those cards into two piles. Put all cards from the pile of your choice onto the battlefield under your control and the rest into their owners' graveyards. SVar:DBTwoPiles:DB$ TwoPiles | Defined$ You | DefinedCards$ Remembered | Separator$ Opponent | ChosenPile$ DBBattlefield | UnchosenPile$ DBGrave SVar:DBBattlefield:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | GainControl$ True | SubAbility$ DBCleanup SVar:DBGrave:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Graveyard | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/boneyard_parley.jpg Oracle:Exile up to five target creature cards from graveyards. An opponent separates those cards into two piles. Put all cards from the pile of your choice onto the battlefield under your control and the rest into their owners' graveyards.