diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_ChangeZone.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_ChangeZone.java index e8cc71bf551..584fef07c84 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_ChangeZone.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_ChangeZone.java @@ -4,6 +4,7 @@ import forge.AllZone; import forge.AllZoneUtil; import forge.Card; import forge.CardList; +import forge.CardListFilter; import forge.CardListUtil; import forge.CardUtil; import forge.CombatUtil; @@ -1163,10 +1164,9 @@ public final class AbilityFactory_ChangeZone { if ((destination.equals(Zone.Hand) || (destination.equals(Zone.Exile) && (subAPI.equals("DelayedTrigger") || (subAPI.equals("ChangeZone") && subAffected.equals("Remembered"))))) - && tgt.getMinTargets(sa.getSourceCard(), sa) <= 1) - { + && tgt.getMinTargets(sa.getSourceCard(), sa) <= 1) { - // check stack for something on the stack will kill anything i control + // check stack for something on the stack that will kill anything i control if (AllZone.getStack().size() > 0) { ArrayList objects = AbilityFactory.predictThreatenedObjects(af); @@ -1196,6 +1196,22 @@ public final class AbilityFactory_ChangeZone { } } } + // Blink permanents with ETB triggers + else if (AbilityFactory.playReusable(sa)){ + aiPermanents = aiPermanents.filter(new CardListFilter() { + @Override + public boolean addCard(Card c) { + if (c.getNumberOfCounters() > 0) + return false; //don't blink something with counters TODO: check good and bad counters + return Spell_Permanent.checkETBEffects(c, null, null); //checks only if there is a dangerous ETB effect + } + }); + if (!aiPermanents.isEmpty()) { + // Choose "best" of the remaining to save + tgt.addTarget(CardFactoryUtil.AI_getBest(aiPermanents)); + return true; + } + } } } else if (origin.equals(Zone.Graveyard)) { diff --git a/src/main/java/forge/card/spellability/Spell_Permanent.java b/src/main/java/forge/card/spellability/Spell_Permanent.java index 2fcdd5c541f..4326e59b1c2 100644 --- a/src/main/java/forge/card/spellability/Spell_Permanent.java +++ b/src/main/java/forge/card/spellability/Spell_Permanent.java @@ -286,8 +286,11 @@ public class Spell_Permanent extends Spell { if (api != null && !af.getAPI().equals(api)) continue; - - exSA.setActivatingPlayer(sa.getActivatingPlayer()); + + if(sa != null) + exSA.setActivatingPlayer(sa.getActivatingPlayer()); + else + exSA.setActivatingPlayer(AllZone.getComputerPlayer()); // Run non-mandatory trigger. // These checks only work if the Executing SpellAbility is an Ability_Sub.