From 0d05da4e0a5a3d4bc6c74b80d0b4e5af68140d31 Mon Sep 17 00:00:00 2001 From: Sloth Date: Sat, 15 Jun 2013 14:24:13 +0000 Subject: [PATCH] - The AI will no longer deck itself with Dig spells. --- src/main/java/forge/card/ability/ai/DigAi.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/forge/card/ability/ai/DigAi.java b/src/main/java/forge/card/ability/ai/DigAi.java index c3796ae4e33..927c38b43bb 100644 --- a/src/main/java/forge/card/ability/ai/DigAi.java +++ b/src/main/java/forge/card/ability/ai/DigAi.java @@ -3,6 +3,7 @@ package forge.card.ability.ai; import java.util.Random; import forge.Card; +import forge.card.ability.AbilityUtils; import forge.card.ability.SpellAbilityAi; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; @@ -20,10 +21,8 @@ public class DigAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { - final Random r = MyRandom.getRandom(); - boolean randomReturn = r.nextFloat() <= Math.pow(0.9, sa.getActivationsThisTurn()); - Player opp = ai.getOpponent(); + final Card host = sa.getSourceCard(); final Target tgt = sa.getTarget(); Player libraryOwner = ai; @@ -42,14 +41,25 @@ public class DigAi extends SpellAbilityAi { return false; } + // don't deck yourself + if (sa.hasParam("DestinationZone2") && !"Library".equals(sa.getParam("DestinationZone2"))) { + int numToDig = AbilityUtils.calculateAmount(host, sa.getParam("DigNum"), sa); + if (libraryOwner == ai && ai.getCardsIn(ZoneType.Library).size() <= numToDig + 1) { + return false; + } + } + // Don't use draw abilities before main 2 if possible if (ai.getGame().getPhaseHandler().getPhase().isBefore(PhaseType.MAIN2) && !sa.hasParam("ActivationPhases") && !sa.hasParam("DestinationZone")) { return false; } + final Random r = MyRandom.getRandom(); + boolean randomReturn = r.nextFloat() <= Math.pow(0.9, sa.getActivationsThisTurn()); + if (SpellAbilityAi.playReusable(ai, sa)) { - randomReturn = true; + return true; } return randomReturn;