From c3059f9909c27718757467c5a542b0bbe23249f0 Mon Sep 17 00:00:00 2001 From: Sloth Date: Mon, 1 Oct 2012 18:46:37 +0000 Subject: [PATCH] - Improved AI of spells cast via copySpellontoStack. --- .../abilityfactory/AbilityFactoryZoneAffecting.java | 11 +++++++++++ src/main/java/forge/card/cardfactory/CardFactory.java | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryZoneAffecting.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryZoneAffecting.java index 260511d66d8..83898846410 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryZoneAffecting.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryZoneAffecting.java @@ -719,6 +719,13 @@ public class AbilityFactoryZoneAffecting { AbilityFactoryZoneAffecting.millResolve(af, this); } + @Override + public boolean canPlayFromEffectAI(final boolean mandatory, final boolean withOutManaCost) { + if (withOutManaCost) { + return AbilityFactoryZoneAffecting.millTriggerNoCost(af, this, mandatory); + } + return AbilityFactoryZoneAffecting.millTrigger(af, this, mandatory); + } }; return spMill; } @@ -1015,6 +1022,10 @@ public class AbilityFactoryZoneAffecting { return false; } + return millTriggerNoCost(af, sa, mandatory); + } + + private static boolean millTriggerNoCost(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { if (!AbilityFactoryZoneAffecting.millTargetAI(af, sa, mandatory)) { return false; } diff --git a/src/main/java/forge/card/cardfactory/CardFactory.java b/src/main/java/forge/card/cardfactory/CardFactory.java index b307d12723f..bbfda622469 100644 --- a/src/main/java/forge/card/cardfactory/CardFactory.java +++ b/src/main/java/forge/card/cardfactory/CardFactory.java @@ -28,6 +28,7 @@ import forge.CardCharacteristicName; import forge.CardUtil; import forge.Singletons; import forge.card.CardRules; +import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellPermanent; import forge.card.spellability.Target; @@ -212,6 +213,11 @@ public class CardFactory implements CardFactoryInterface { if (controller.isHuman()) { Singletons.getModel().getGameAction().playSpellAbilityForFree(copySA); + } else if (copySA instanceof Spell) { + Spell spell = (Spell) copySA; + if (spell.canPlayFromEffectAI(false, true)) { + ComputerUtil.playStackFree(copySA); + } } else if (copySA.canPlayAI()) { ComputerUtil.playStackFree(copySA); }