diff --git a/forge-ai/src/main/java/forge/ai/ability/PeekAndRevealAi.java b/forge-ai/src/main/java/forge/ai/ability/PeekAndRevealAi.java index 331ee87051c..5be39eff89c 100644 --- a/forge-ai/src/main/java/forge/ai/ability/PeekAndRevealAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/PeekAndRevealAi.java @@ -1,7 +1,9 @@ package forge.ai.ability; +import forge.ai.AiAttackController; import forge.ai.SpellAbilityAi; import forge.ai.SpellApiToAi; +import forge.game.card.Card; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; import forge.game.player.Player; @@ -9,6 +11,7 @@ import forge.game.player.PlayerActionConfirmMode; import forge.game.spellability.AbilityStatic; import forge.game.spellability.AbilitySub; import forge.game.spellability.SpellAbility; +import forge.game.zone.ZoneType; /** * TODO: Write javadoc for this type. @@ -38,6 +41,28 @@ public class PeekAndRevealAi extends SpellAbilityAi { } // So far this only appears on Triggers, but will expand // once things get converted from Dig + NoMove + Player opp = AiAttackController.choosePreferredDefenderPlayer(aiPlayer); + final Card host = sa.getHostCard(); + Player libraryOwner = aiPlayer; + + if (!willPayCosts(aiPlayer, sa, sa.getPayCosts(), host)) { + return false; + } + + if (sa.usesTargeting()) { + sa.resetTargets(); + //todo: evaluate valid targets + if (!sa.canTarget(opp)) { + return false; + } + sa.getTargets().add(opp); + libraryOwner = opp; + } + + if (libraryOwner.getCardsIn(ZoneType.Library).isEmpty()) { + return false; + } + return true; }