diff --git a/forge-ai/src/main/java/forge/ai/ability/ControlGainAi.java b/forge-ai/src/main/java/forge/ai/ability/ControlGainAi.java index 35e1d886159..6db4a682d3d 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ControlGainAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ControlGainAi.java @@ -26,6 +26,7 @@ import com.google.common.collect.Lists; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCombat; +import forge.ai.SpecialCardAi; import forge.ai.SpellAbilityAi; import forge.game.Game; import forge.game.ability.AbilityUtils; @@ -296,6 +297,13 @@ public class ControlGainAi extends SpellAbilityAi { @Override public boolean chkAIDrawback(SpellAbility sa, final Player ai) { final Game game = ai.getGame(); + + // Special card logic that is processed elsewhere + if (sa.getParam("AILogic").equals("DonateTargetPerm")) { + // Donate step 2 - target a donatable permanent. + return SpecialCardAi.Donate.considerDonatingPermanent(ai, sa); + } + if (!sa.usesTargeting()) { if (sa.hasParam("AllValid")) { CardCollectionView tgtCards = CardLists.filterControlledBy(game.getCardsIn(ZoneType.Battlefield), ai.getOpponents()); diff --git a/forge-ai/src/main/java/forge/ai/ability/PumpAi.java b/forge-ai/src/main/java/forge/ai/ability/PumpAi.java index 0312faf38a1..c25d0310fef 100644 --- a/forge-ai/src/main/java/forge/ai/ability/PumpAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/PumpAi.java @@ -451,9 +451,6 @@ public class PumpAi extends PumpAiBase { } else { return false; } - } else if (sa.getParam("AILogic").equals("DonateTargetPerm")) { - // Donate step 2 - target a donatable permanent. - return SpecialCardAi.Donate.considerDonatingPermanent(ai, sa); } else if (sa.getParam("AILogic").equals("SacOneEach")) { // each player sacrifices one permanent, e.g. Vaevictis, Asmadi the Dire - grab the worst for allied and // the best for opponents diff --git a/forge-gui/res/cardsfolder/d/donate.txt b/forge-gui/res/cardsfolder/d/donate.txt index 1262eeb9d80..4ed129ed12c 100644 --- a/forge-gui/res/cardsfolder/d/donate.txt +++ b/forge-gui/res/cardsfolder/d/donate.txt @@ -1,10 +1,8 @@ Name:Donate ManaCost:2 U Types:Sorcery -A:SP$ Pump | Cost$ 2 U | ValidTgts$ Player | TgtPrompt$ Select target player | SubAbility$ D1 | AILogic$ DonateTargetPlayer | RememberObjects$ Targeted | SpellDescription$ Target player gains control of target permanent you control. | StackDescription$ None -SVar:D1:DB$ Pump | ValidTgts$ Permanent.YouCtrl | TgtPrompt$ Select target permanent you control | SubAbility$ D2 | AILogic$ DonateTargetPerm | StackDescription$ None -SVar:D2:DB$ GainControl | Defined$ Targeted | NewController$ Remembered | SubAbility$ D3 -SVar:D3:DB$ Cleanup | ClearRemembered$ True +A:SP$ Pump | ValidTgts$ Player | TgtPrompt$ Select target player | SubAbility$ DBGiveControl | AILogic$ DonateTargetPlayer | SpellDescription$ Target player gains control of target permanent you control. | StackDescription$ None +SVar:DBGiveControl:DB$ GainControl | ValidTgts$ Permanent.YouCtrl | TgtPrompt$ Select target permanent you control | Defined$ Targeted | NewController$ ParentTarget | AILogic$ DonateTargetPerm AI:RemoveDeck:Random SVar:DoNotDiscardIfAble:TRUE Oracle:Target player gains control of target permanent you control.