diff --git a/src/main/java/forge/card/ability/SpellAbilityAi.java b/src/main/java/forge/card/ability/SpellAbilityAi.java index 9bbd3e0a529..f6451d40f27 100644 --- a/src/main/java/forge/card/ability/SpellAbilityAi.java +++ b/src/main/java/forge/card/ability/SpellAbilityAi.java @@ -84,6 +84,12 @@ public abstract class SpellAbilityAi { if (sa.getRestrictions().getPlaneswalker() && Singletons.getModel().getGame().getPhaseHandler().is(PhaseType.MAIN2)) { return true; } + if (sa.isTrigger()) { + return true; + } + if (sa.isSpell() && !sa.isBuyBackAbility()) { + return false; + } PhaseHandler phase = Singletons.getModel().getGame().getPhaseHandler(); return phase.is(PhaseType.END_OF_TURN) && phase.getNextTurn().equals(ai); diff --git a/src/main/java/forge/card/ability/ai/ChangeZoneAi.java b/src/main/java/forge/card/ability/ai/ChangeZoneAi.java index 703011b7a44..acd6aacbcfc 100644 --- a/src/main/java/forge/card/ability/ai/ChangeZoneAi.java +++ b/src/main/java/forge/card/ability/ai/ChangeZoneAi.java @@ -747,7 +747,7 @@ public class ChangeZoneAi extends SpellAbilityAi { } } // Blink permanents with ETB triggers - else if (sa.isAbility() && (sa.getPayCosts() != null) && SpellAbilityAi.playReusable(ai, sa)) { + else if (SpellAbilityAi.playReusable(ai, sa)) { aiPermanents = CardLists.filter(aiPermanents, new Predicate() { @Override public boolean apply(final Card c) { diff --git a/src/main/java/forge/card/ability/ai/CounterAi.java b/src/main/java/forge/card/ability/ai/CounterAi.java index 3ceda11de74..9e084635dfb 100644 --- a/src/main/java/forge/card/ability/ai/CounterAi.java +++ b/src/main/java/forge/card/ability/ai/CounterAi.java @@ -80,7 +80,7 @@ public class CounterAi extends SpellAbilityAi { if (toPay <= usableManaSources) { // If this is a reusable Resource, feel free to play it most of // the time - if (!sa.getPayCosts().isReusuableResource() || sa.isSpell()) { + if (!SpellAbilityAi.playReusable(ai,sa)) { return false; } } @@ -148,7 +148,7 @@ public class CounterAi extends SpellAbilityAi { if (toPay <= usableManaSources) { // If this is a reusable Resource, feel free to play it most // of the time - if (!sa.getPayCosts().isReusuableResource() || (MyRandom.getRandom().nextFloat() < .4)) { + if (!SpellAbilityAi.playReusable(ai,sa) || (MyRandom.getRandom().nextFloat() < .4)) { return false; } } diff --git a/src/main/java/forge/card/ability/ai/CountersPutAllAi.java b/src/main/java/forge/card/ability/ai/CountersPutAllAi.java index 09ffc91f5d9..d63ac7b9e22 100644 --- a/src/main/java/forge/card/ability/ai/CountersPutAllAi.java +++ b/src/main/java/forge/card/ability/ai/CountersPutAllAi.java @@ -124,7 +124,7 @@ public class CountersPutAllAi extends SpellAbilityAi { } } - if (sa.isTrigger() || sa instanceof AbilitySub || SpellAbilityAi.playReusable(ai, sa)) { + if (SpellAbilityAi.playReusable(ai, sa)) { return chance; } diff --git a/src/main/java/forge/card/ability/ai/LifeLoseAi.java b/src/main/java/forge/card/ability/ai/LifeLoseAi.java index d552c0759d0..86e7a717cc4 100644 --- a/src/main/java/forge/card/ability/ai/LifeLoseAi.java +++ b/src/main/java/forge/card/ability/ai/LifeLoseAi.java @@ -132,7 +132,7 @@ public class LifeLoseAi extends SpellAbilityAi { } boolean randomReturn = r.nextFloat() <= .6667; - if (SpellAbilityAi.playReusable(ai, sa) || priority) { + if (priority || SpellAbilityAi.playReusable(ai, sa)) { randomReturn = true; }