diff --git a/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java b/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java index 016086fdc87..b3d1b2e1ccf 100644 --- a/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java +++ b/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java @@ -87,8 +87,9 @@ public abstract class SpellAbilityAi extends SaTargetRoutines { * @return a boolean. */ protected static boolean isSorcerySpeed(final SpellAbility sa) { - return ( sa.isSpell() && sa.getHostCard().isSorcery() ) - || ( sa.isAbility() && sa.getRestrictions().isSorcerySpeed() ); + return (sa.isSpell() && sa.getHostCard().isSorcery()) + || (sa.isAbility() && sa.getRestrictions().isSorcerySpeed()) + || (sa.getRestrictions().isPwAbility() && !sa.getHostCard().hasKeyword("CARDNAME's loyalty abilities can be activated at instant speed.")); } /** diff --git a/forge-ai/src/main/java/forge/ai/ability/AnimateAi.java b/forge-ai/src/main/java/forge/ai/ability/AnimateAi.java index ce0cf444b1b..a0937a6dc98 100644 --- a/forge-ai/src/main/java/forge/ai/ability/AnimateAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/AnimateAi.java @@ -85,7 +85,7 @@ public class AnimateAi extends SpellAbilityAi { } } } - + // don't use instant speed animate abilities outside computers // Combat_Begin step if (!ph.is(PhaseType.COMBAT_BEGIN) @@ -100,7 +100,8 @@ public class AnimateAi extends SpellAbilityAi { if (ph.isPlayerTurn(aiPlayer) && aiPlayer.getLife() < 6 && opponent.getLife() > 6 - && Iterables.any(opponent.getCardsIn(ZoneType.Battlefield), CardPredicates.Presets.CREATURES)) { + && Iterables.any(opponent.getCardsIn(ZoneType.Battlefield), CardPredicates.Presets.CREATURES) + && !sa.hasParam("AILogic")) { return false; }