mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
- Added some more Blink AI to AF ChangeZone to support Venser, the Sojourner.
This commit is contained in:
@@ -4,6 +4,7 @@ import forge.AllZone;
|
|||||||
import forge.AllZoneUtil;
|
import forge.AllZoneUtil;
|
||||||
import forge.Card;
|
import forge.Card;
|
||||||
import forge.CardList;
|
import forge.CardList;
|
||||||
|
import forge.CardListFilter;
|
||||||
import forge.CardListUtil;
|
import forge.CardListUtil;
|
||||||
import forge.CardUtil;
|
import forge.CardUtil;
|
||||||
import forge.CombatUtil;
|
import forge.CombatUtil;
|
||||||
@@ -1163,10 +1164,9 @@ public final class AbilityFactory_ChangeZone {
|
|||||||
if ((destination.equals(Zone.Hand)
|
if ((destination.equals(Zone.Hand)
|
||||||
|| (destination.equals(Zone.Exile) && (subAPI.equals("DelayedTrigger")
|
|| (destination.equals(Zone.Exile) && (subAPI.equals("DelayedTrigger")
|
||||||
|| (subAPI.equals("ChangeZone") && subAffected.equals("Remembered")))))
|
|| (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) {
|
if (AllZone.getStack().size() > 0) {
|
||||||
ArrayList<Object> objects = AbilityFactory.predictThreatenedObjects(af);
|
ArrayList<Object> 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)) {
|
} else if (origin.equals(Zone.Graveyard)) {
|
||||||
|
|||||||
@@ -286,8 +286,11 @@ public class Spell_Permanent extends Spell {
|
|||||||
|
|
||||||
if (api != null && !af.getAPI().equals(api))
|
if (api != null && !af.getAPI().equals(api))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
exSA.setActivatingPlayer(sa.getActivatingPlayer());
|
if(sa != null)
|
||||||
|
exSA.setActivatingPlayer(sa.getActivatingPlayer());
|
||||||
|
else
|
||||||
|
exSA.setActivatingPlayer(AllZone.getComputerPlayer());
|
||||||
|
|
||||||
// Run non-mandatory trigger.
|
// Run non-mandatory trigger.
|
||||||
// These checks only work if the Executing SpellAbility is an Ability_Sub.
|
// These checks only work if the Executing SpellAbility is an Ability_Sub.
|
||||||
|
|||||||
Reference in New Issue
Block a user